作者 | 陳峻
審校 | 重樓
引言
在企業的日常運營中,數據泄漏在廣義上是指未經授權或已被授權的人員,錯誤或惡意地訪問、刪除、修改或傳輸企業或個人數據,而引發的各種安全事件。除了系統自身軟硬件錯誤、以及源自外部的攻擊,由組織內部人員造成的數據泄漏,在頻次和財務影響等方面都呈上升趨勢。
根據最近的一份報告顯示,全球60%的數據泄漏主要是由內部威脅造成,而且平均每年會給企業造成約1150萬美元的損失。究其根源,內部威脅源于組織內部人員擁有對網絡、應用、數據庫授權訪問權限,以及全面的背景知識。
困境
內部數據泄漏之所以難以被發現,主要在于內部攻擊者有能力更改登錄記錄、操作日志,進而銷毀證據。有時,一些內部攻擊在發生數月后被發現時,已造成了巨大損失。同時,根據歐洲《通用數據保護條例(GDPR)》,數據控制者必須在發生數據泄漏時,及時通知數據保護機構和受影響的數據所有者。如果組織未能在一定時間內通報違規情況,則將面臨高額的罰款。面對內外部的安全壓力,企業亟待開發出一套能快速檢測到數據泄漏的系統。
引入區塊鏈
近年來,隨著區塊鏈技術的成熟,以及在數據安全方面的優勢,業界已有專家提出并實現了利用智能合約和區塊鏈網絡構建的、滿足GDPR的實時檢測系統。下面,我們將以太坊區塊鏈網絡為例,介紹一個典型的數據泄漏檢測模型。
首先,我們討論一下檢測過程所涉及到的實體。GDPR規定了典型的四種實體,即:數據控制者、數據所有者、數據保護機構和數據處理者。其中:
- 收集數據的實體被稱為數據控制者,他們負責針對數據收集原因和目的決定處理的方式。
- 數據所有者是(個人)數據的屬主。
- 數據保護機構是指導數據控制者履行職責的實體。
- 代表(代替)數據控制者實際處理數據的實體則被稱為數據處理者或數據消費者。
為了說明問題,我們來看一個典型的醫患場景。如下圖所示,在獲得數據所有者(患者)的同意后,其醫療數據將存儲在區塊鏈上。數據處理者(醫生)可以通過向數據控制者發出請求,從患者數據庫中獲取所需的患者數據。數據控制者使用泄漏檢測系統執行必要檢測的任務,如患者同意驗證和數據驗證等。也就是說,該系統要求數據控制者在與數據處理者共享數據前,需檢測數據庫記錄中的任何更改,并驗證記錄的真實性。
檢測模型
該數據泄漏檢測系統的目標是為數據控制者提供一個能夠即時檢測數據泄漏的自動化工具,以協助識別惡意活動,方便支持數據控制者對發現的個人數據泄漏事件進行詳細分析,形成泄漏報告,進而在其進一步升級之前加以緩解。下面我們來看看該系統模型及其組成部分。
在上面的流程圖中,我們可以獲悉其詳細流程為:
1. 數據保護機構指派一名數據控制者在其用戶數據存儲庫中進行數據錄入。數據控制者接受數據所有者的個人身份信息(PII),如:姓名、電子郵件、電話號碼、年齡、地址和符合ERC-20標準的以太坊專用錢包地址。注意,所有這些信息都是必填項。作為提交方,數據所有者應前往數據控制者處進行注冊,并口頭提供這些信息。
2. 數據控制者收到PII數據后,會將這些詳細信息輸入一個由保護機構和數據控制者集中控制的、使用諸如Node.js和MySQL構建的專用應用程序(App1 Data Entry)中。
3. 該提交會創建一個“同意動態鏈接”,并將其發送到數據所有者的電子郵件或手機上。該鏈接提供一個名為“Dapp 2 Data Consent”的同意面板。
4. 數據所有者收到該鏈接后,便可以在頁面上看到自己的詳細信息。他們需要使用在注冊時提交過的以太坊賬戶,來驗證這些詳細的信息。同時,數據所有者應使用符合以太坊標準的錢包簽署此類信息。由于這些信息使用的是數據所有者的私人密鑰進行簽名,因此只有他們在錢包中選擇了與提供給數據控制者的相同地址,才能完成簽名操作。
5. “DAPP2 Data Consent”應用程序將此數據簽名的哈希值,連同所有相關PII數據,以離鏈(off-chain)的方式發送到MySQL數據庫中。保護機構的數據控制者會核實所有已獲得了區塊鏈網絡同意的數據。
6. 同時,區塊鏈網絡為新的記錄提供了一個唯一遞增的標識主鍵和一個時間戳。
7. 該應用程序會創建一個新的交易數據包,并將其發送到以太坊區塊鏈網絡中。該交易包使用的是前面提到的整個新記錄的詳細信息,作為嵌入式字符串,以創建一個記錄證明的SHA256哈希值。而該加密的SALT正是用戶錢包的公共地址。
8. 為了在區塊鏈網絡上提交這筆新的交易,應用程序“App1 Data Entry”會去檢索智能合約最新的版本地址。從技術上說,要獲取最新的智能合約地址,就必須調用“主數據中繼合約”。它恰好是“主數據合約”所有舊版本或最新版本的注冊表。而由于智能合約是不可變的,因此我們無法更改任何現有的智能合約,而要想添加新的功能,我們就得創建一個新的合約。這就是為什么中繼或注冊模式可以協助規整出新的合約,而不必擔心它們的地址問題。
9. 一旦應用程序收到最新且正確的“主數據合約”地址,它就會向名為 “AddRecordProof”的智能合約函數發送包含用戶識別碼(UID,即“記錄主鍵”)、時間戳和SHA256哈希值(即記錄證明)的交易數據包。該功能應受到嚴格的限制,只能由授權人(如:數據控制者)使用數據控制者的錢包密鑰(如:公私鑰對)進行加密調用。注意,功能性訪問控制是在“安全層合約”中被定義的。它具有諸如:可擁有性和斷路器等不同的安全功能。
10. “主數據合約”使用名為“數據存儲層合約”的存儲庫合約,將這些數據存儲在智能合約中。與其調用者相比,數據存儲層的分離,賦予了在合約內添加或更改任何變量或結構的權限,因此它是一個獨立的合約。由于其在部署之后不可能更改任何變量,因此使用動態數組創建的存儲庫將有助于控制更改。而在交易成功后,以太坊會生成一個新的“交易哈希值”。而保護機構必須支付gas費,才能記錄這些數據。
11. 名為“App3 Data Breach Viewer(數據泄漏查看器)”的應用程序,專用于查看記錄的真實性。它以網格視圖來顯示所有的用戶記錄,并帶有“驗證”按鈕。該按鈕在被點擊時,會向名為“getRecordProof”的“主數據合約”函數發送請求,該函數使用新生成的SHA256哈希值,作為鏈外記錄的標識符。同時,該函數會將“記錄證明”的SHA256哈希值返回給應用程序。而且該記錄在此前已由數據收集者注冊過。
12. 該應用程序的后臺會從MySQL數據庫中檢索那些離鏈的數據記錄,并使用SHA256生成新的記錄證明。注意,智能合約中的記錄證明必須和離鏈記錄相同,才能被視為有效。否則,該記錄將被視為無效或被更改。
13. 那些被更改的記錄將會被包含在通知中,發送給數據控制者。而被更改的數據庫則可以通過數據中心的備份數據庫予以復制,或被更新到其原始位置。
模型合規性
我們可以通過下表來了解該模型所滿足的GDPR各項條款:
處理的合法性 | 由于數據所有者已同意處理其個人數據,且完全有權隨時授予或撤銷同意,因此數據的處理具有合法和透明性。 |
同意條件 | 滿足。 |
透明的信息和交流 | 滿足。 |
訪問權 | 根據默認政策,任何人都不能更改數據控制者對其個人數據采取CRUD等活動的權限。 |
更正權 | 數據主體可以要求數據控制者予以更正。 |
知情權 | 在收集數據或獲得同意之前,平臺必先獲取數據所有者的簽名。 |
刪除權 | 由于個人數據被離鏈存儲,因此數據控制者可應數據所有者的要求刪除數據。 |
限制處理權 | 數據所有者完全有權隨時授予或撤銷同意。 |
數據可攜帶權 | 滿足。 |
泄漏通知 | 該系統將每條記錄的證明都保存在網絡中。據此,系統能檢測到數據庫記錄的任何改動。 |
用途和存儲限制 | 個人信息的收集只用于明確、合法和公開的目的。此外,數據的保留時間也僅限于對實現目標絕對必要的情況。 |
數據最小化 | 該模型只處理相關、適當、且僅限于預期結果所需的數據。 |
小結
通過重復利用區塊鏈技術的優勢,上述模型提出了一個滿足GDPR的數據泄漏檢測系統,實現了數據的完整性、機密性、訪問控制、透明度、以及數據所有者與同意的真實性。我們下期見!
作者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。