汪玉江, 曹成堂, 游 林
杭州電子科技大學 網絡空間安全學院, 杭州310018
我們每天在生活中都會產生大量的數據, 麥肯錫預測, 預計到2020 年, 全球的數據使用量將會達到40 ZB. 在大數據時代, 個人數據不斷地被收集和分析, 從而導致創新和經濟增長. 公司和組織使用他們收集的數據來提供個性化服務, 優化公司決策過程, 預測未來趨勢等等. 盡管我們都從數據驅動的社會中受益, 但是公眾越來越關注個人數據隱私問題. 第三方機構聚集了大量的個人的敏感信息, 個人幾乎無法控制他們所存儲的數據及其使用方式, 因此如何保護用戶個人隱私數據成為了研究熱點.
對用戶而言, 一方面要保護自己的數據隱私, 另一方面又需要使用第三方應用來獲取便捷的服務. 區塊鏈以數據難以被篡改、可追溯等特點成為了解決上述問題的關鍵技術. 傳統的區塊鏈雖然解決了上述部分問題, 但是仍存在以下幾個不足: (1) 交易透明, 對任何用戶都可見; (2) 區塊容量小, 不適合在鏈上存儲大量數據; (3) 使用傳統的對稱加密方式或非對稱加密方式, 只能支持一對一的安全傳輸, 不能滿足用戶需要多個第三方同時提供服務的需求. 針對上述不足, 學者們進行了積極的探索. 文獻[1] 提出了一種基于區塊鏈保護隱私數據的模型, 使用對稱加密的方式加密存儲數據, 使用區塊鏈智能合約判定用戶權限是否滿足預先設置的訪問策略, 但是只能進行一對一的安全傳輸. 文獻[2] 將區塊鏈與分布式哈希表結合, 將數據存儲在分布式哈希表中, 鏈上只存儲與交易相關的必要數據, 大大提高了系統查詢數據的效率. 此方案雖然解決了區塊鏈存儲數據能力不足的問題, 但是并沒有加密存儲數據且無法實現訪問控制.
利用屬性基加密(Attribute-Based Encryption, ABE) 可以實現數據的一對多的安全傳輸, 并且能實現復雜的訪問控制策略. 基本ABE 只能由授權機構設置訪問策略, 而現實中需要由發送或接收方制定靈活的訪問控制策略. Ibraimi 等人[3]提出了一個基于一般樹結構的、由發送方決定訪問控制策略的密文策略屬性基加密(Cipertext-Policy Attribute-Based Encryption, CP-ABE) 方案. 該方案將Shamir 的門限秘密共享技術與樹結構相結合, 使發送方能夠制定復雜的訪問控制策略. 在不同時期, 隨著需求的變化, 用戶屬性可能會發生變化, 發生變化后的屬性可能不能滿足之前制定的屬性基加密方案的訪問控制策略, 因此屬性密鑰的撤銷成為研究重點. 為了實現屬性撤銷, 一些可撤銷的ABE 方案[4–6]被提出, 但這些方案都不能實現屬性的及時撤銷. 現有的實現屬性及時撤銷的ABE 方案的都是基于可信第三方的. Wu等[7]利用版本號和代理重加密技術實現屬性的及時撤銷, 當撤銷操作發生后, 授權機構將系統版本號加1, 可信第三方需要更新所有與版本號相關的密鑰和密文. 這些基于可信第三方的方案都不能防止用戶與第三方串謀攻擊. Sethia 等人[8]利用第三方代理實現了對屬性的及時撤銷, 且開銷相較于其它的方法有一個很大的提升. 該方案只能撤銷用戶的所有屬性, 不能針對用戶的某一個屬性撤銷.
利用可信第三方的屬性基加密雖然能夠很好的實現屬性的及時撤銷, 但是存在以下幾點風險. 第一,當第三方出現故障的時候, 整個系統都會停止運行; 第二, 如果第三方被攻擊者攻破, 則攻擊者可以在不被發現的情況下獲取數據, 同時之前攻擊者被撤銷的屬性也可以被恢復; 第三, 在某些極端情況下, 攻擊者與第三方合謀, 則攻擊者可以任意獲取數據而不被數據擁有者知曉. 區塊鏈底層網絡為分布式的, 在沒有51% 算力攻擊下, 賬本不可篡改, 很好地解決了以上風險.
因此, 本文將區塊鏈技術與密文策略屬性基加密相結合, 提出了一種基于屬性基加密和區塊鏈的個人隱私數據保護方案.
DHT (Distributed Hash Table) 是一種在點對點網絡中分散式的存儲方法. 它用來將一個關鍵值的集合分散到所有在分布式系統中的節點, 并且可以有效地將信息轉送到唯一一個擁有查詢者提供的關鍵值的節點. 這里的節點可以理解為散列表中的存儲位置. 在Chord[9]之前, 一致性哈希用于分布式系統中鍵值之間的映射, 應用在實現預定的節點之間, 節點不能隨時加入或者退出系統.
Chord[9]是DHT 的一種經典實現, 數據都存儲在虛擬的環形P2P 網絡中, NID為數據的哈希值,PID為節點IP 的哈希值. 用NID 作為鍵在虛擬的環形P2P 網絡中搜索時, 第一個PID ≥NID 的節點將會返回NID 對應的數據. 在一個由N 個節點組成的網絡中, 通過增加路由表, 可以使查詢的時間復雜度從O(N) 降到O(log N). 當節點加入或者離開網絡的時候, 每個節點將會更新路由表. 為了容錯, 當一個節點有N 個后繼節點時, 選擇此節點后續的k(k ≤N) 個節點, 復制此節點所有的數據.
文獻[10] 基于DHT 提出了一種輕鏈結構, DHT 中的節點同時也是區塊鏈網絡中的節點, 每個區塊和交易都在DHT 節點中復制, 并按需檢索, 因此區塊鏈本身不需要保存所有的數據. 此方案能夠有效的解決區塊鏈存儲數據能力不足的問題.
區塊鏈是作為比特幣[11]的底層技術首先提出來的, 是一種開放的分布式的公共賬本, 在沒有可信的第三方的情況下, 以安全可驗證的方式記錄了所有的交易, 每筆交易都可以追溯. 區塊鏈中的后一個區塊通過密碼學的哈希算法鏈接到前一個塊, 大多數節點通過共識后才能增加區塊, 保證了數據不能篡改或者刪除.
區塊鏈通常將所有的信息都集中存儲在一條鏈上, 分布式網絡中, 這樣會出現大量的冗余數據并且響應遲緩. 文獻[12] 提出了雙鏈結構, 一條鏈僅存儲交易后的信息和賬戶信息; 另一條鏈僅存儲對交易有用的信息并且執行相關交易. 這樣能在一定程度上提高區塊鏈的數據存儲能力和效率. 文獻[2] 是一種脫鏈存儲的方法, 鏈上只存數據哈希摘要和數據在DHT 上的地址. 這樣數據本身保存在DHT 上而不是區塊鏈上, 就能為區塊鏈節省很多空間, 提高上傳和查詢數據的效率.
智能合約概念在1995 年由Nick Szabo 首次提出, 是一種旨在以信息化傳播、驗證或執行合同的計算機協議. 但是提出之后實際的應用卻無法實現, 直到區塊鏈技術的出現. 區塊鏈去中心化、不可篡改、過程透明可追蹤的特點, 天然適合于智能合約. 智能合約是存儲在區塊鏈上的腳本, 一旦部署在區塊鏈上, 即可以按照預先設定的方式執行.
Hyperledger 在2015 年的時候被Linux 基金會提出, Farbic 為Hyperledger 的一個區塊鏈子項目.Farbic 不同于公鏈任何節點都可以加入網絡, 而是擁有準入機制, 每個組織需要授權后才能加入網絡. 因此, Fabric 屬于聯盟鏈. Fabric 網絡的關鍵組件如下所示.
? Membership service provider: 為網絡中的各個組成頒發證書授權.
? Consensus: Fabric 在不同場景的需求下, 提供了solo, kafka, PBFT 共識.
? Channel: 通道中包含若干的授權成員, 每個成員可以屬于不同通道, 每個通道都是獨立運行的, 賬本狀態也是獨立的.
? Peers: Fabric 節點分為3 種. Endorser 節點: 完成交易提案的驗證, 模擬運行交易, 將結果附上簽名后返回給客戶端; Orderer 節點: 根據共識算法, 為交易打包排序生成區塊結構; Committer 節點: 從Orderer 節點獲取區塊結構, 驗證合法性區塊結構的合法性, 生成區塊寫入賬本中.
文獻[3] 基于DBDH 假設, 提出一種支持屬性的與、或和門限操作的CP-ABE 方案. 訪問結構由與(∨)、或(∧) 和門限(of) 節點組成的k 叉樹設定, 選取隨機數作為用戶密鑰, 防止用戶串謀. 節點采用Shamir 的門限秘密共享技術分享秘密s. 具體算法流程如下:


(b) 第二層加密: 令樹τ 的根節點的值為s. 初始化標記根節點, 其他節點不標記. 遞歸地對每一個未標記的非葉子節點執行以下操作:
? 假如非葉子節點的標志為of (門限操作), 且它的孩子節點未標記, 用(t,n)-Shamir’s 門限分享方案分享秘密s. 這里t= n, n 為當前節點孩子節點的個數, t 為重構秘密s 所需要的最小的孩子節點的數目. 對每一個孩子節點分配si=f(i), 并標記這些節點為已分配狀態.
? 假如非葉子節點的標志為∧(且操作), 且它的孩子節點未標記, 用(t,n)-Shamir’s 門限分享方案分享秘密s. 這里t = n, n, t 表示如上. 對每一個孩子節點分配si= f(i), 并標記這些節點為已分配狀態.
? 假如非葉子節點的標志為∨(或操作), 且它的孩子節點未標記, 用(t,n)-Shamir’s 門限分享方案分享秘密s. 這里t=1. 對每一個孩子節點分配si=f(i), 并標記這些節點為已分配狀態.

圖1 為權限控制樹τ 分享秘密s 生成密文的示例. 首先根節點(∨節點) 的值設置為s, 對第二層非葉子節點使用(1,2)-Shamir 秘密分享技術分配秘密s, 即∧節點和of 節點的值都為si; 對∧節點的孩子節點使用(2,2)-Shamir 秘密分享技術分配秘密si, 設其孩子節點的值為s1,s2; 對of節點使用(2,3)-Shamir 秘密分享技術分配秘密si, 設其孩子節點值為s3,s4,s5.

圖1 一個權限控制樹實例τ =(T1 ∧T2)∨2of(T3,T3,T5)Figure 1 Instance of access tree τ =(T1 ∧T2)∨2of(T3,T3,T5)
(4) Decrypt(cτ,skω):
(a) 選擇滿足最小的屬性集ω′?ω, 計算過程如下:

(b) 計算:

(c) 計算, 返回明文m:

本文在上述CP-ABE 方案的基礎上, 將算法改進為可撤銷的屬性基加密方案, 本文將新方案命名為Revocable CP-ABE, 簡稱RCP-ABE. RCP-ABE 的主要思想是區塊鏈維護一張數據請求者的屬性列表,系統為數據請求者生成密鑰時, 將密鑰分為兩部分, 一部分上傳到區塊鏈, 另一部分發送給數據請求者. 當數據請求者請求數據的時候, 區塊鏈根據數據請求者的唯一標識, 查詢數據請求者對應的屬性列表. 如數據請求者的屬性滿足系統設定的數據訪問策略, 則將數據進行第一次解密, 并將解密的結果返回給數據請求者. 數據請求者收到結果后, 進行第二次解密, 得到明文數據; 如不滿足, 則拒絕服務. 該方案實現了屬性基加密的實時撤銷, 并且不需要可信的第三方為數據進行第一次解密, 所有操作均為智能合約自動執行.


安全模型: 選擇屬性集(selective-attribute) 明文攻擊游戲(簡稱IND-sAttr-CPA) 在挑戰者和敵手A 之間進行, 挑戰者模擬協議執行并回答來自A 的查詢. 游戲步驟如下:
(1) 初始化: 敵手A 選擇權限控制樹τ?發送給挑戰者.
(2) 設定: 挑戰者執行Setup 算法生成(pk,mk), 將pk 發送給A.
(3) 階段一: A 對屬性ω = {aj| aj∈?, aj/∈τ?} 發起密鑰請求, 挑戰者執行密鑰生成算法Keygen(ω,mk), 將執行結果發送給A.
(4) 挑戰: A 發送給挑戰者兩段等長信息m0,m1. 挑戰者隨機選擇b ∈{0,1}, 執行加密算法cb=Encrypt(mb,τ?,pk), 將cb發送給A.
(5) 階段二: A 可以按照階段一的要求持續請求執行Keygen 算法.
(6) 猜測: A 猜測b′∈{0,1}, 即cb是m0還是m1加密而來.
定義1 如果在任意多項式時間內, 敵手只能以可忽略的優勢贏得上述游戲, 則稱該ABE 方案在此模型中是安全的.
判定雙線性Diffie-Hellman (DBDH) 假設: 挑戰者隨機選擇a,b,c,θ ∈Zp, 選擇群G0的生成元g, 令A = ga,B = gb,C = gc, 公平拋擲硬幣μ, 假如μ = 0, 則輸出有效的五元組(g,A,B,C,Z =e(g,g)abc), 否則輸出隨機五元組(g,A,B,C,Z = e(g,g)θ), Z ∈G1. 敵手必須對μ 做出猜測, 以判斷等式Z =e(g,g)abc是否成立. 一個非確定性算法A 能以優勢ε 解決DBDH 問題, 當

定義2 如果不存在多項式時間算法攻擊者以至少ε 的優勢解決DBDH 問題, 則DBDH 假設成立.
定理1 基于DBDH 假設, 在RCP-ABE 方案中, 對于多項式時間敵手在IND-sAttr-CPA 游戲中滿足不可區分性.
證明: 證明過程類似文獻[3], 以下為簡要證明步驟. 假設敵手A 以不可忽略的優勢ε 贏得INDsAttr-CPA 游戲, A 構造模擬器B, B 將以ε/2 的優勢解決DBDH 問題. 游戲開始前, 挑戰者初始化雙線性對: 選擇生成元為g 的群G0和群G1, 雙線性映射e, 隨機選擇a,b,c,θ ∈Z?p. 挑戰者拋硬幣μ, 如果μ=0, 令Zμ=e(g,g)abc; 否則令Zμ=e(g,g)θ. 挑戰者給定g,A=ga,B =gb,C =gc作為輸入, B判斷等式Zμ=e(g,g)abc是否成立.
初始化: A 選擇權限控制樹τ?發送給B.
初始設置: B 選擇隨機數x′∈Zp, 令e(g,g)α= e(g,g)ab·e(g,g)x′, 則α = ab+x′. 當aj∈? 且aj/∈τ?時, 選擇隨機數kj∈Zp, 令Tj=B1/kj, 則tj=b/kj. B 將公共參數發送給A.
階段一: A 為屬性集ω = {aj|aj∈? ,aj/∈τ?} 發送密鑰請求. B 選擇隨機數r′∈Z?p, 令d0=gx′?r′b, 則r =ab+r′b. 計算過程如下:

則A 獲得密鑰skωj=(d0,?aj∈ωj:dj).
挑戰: A 提交兩條等長信息m0,m1∈G1. B 拋擲硬幣, 返回mb的加密結果, mb加密過程如下:
(1) 第一層加密: c0=gc,

(2) 第二層加密: 令樹τ?的根節點的值為gc. 節點賦值操作同RCP-ABE 算法.
對于所有的葉子節點aj,i∈τ, 計算cj,i=gf(i)kj.
將密文cτ?=(τ?,c0,c1,?aj,i∈τ?:cj,i) 發送給A.階段二: A 可以一直按照階段一的步驟請求密鑰.猜測: A 輸出猜測b′∈{0,1}.
假如b′=b, B 將會猜測μ=0 和Zμ=e(g,g)abc. 假如b′=b, B 將會猜測μ=1 和Zμ=e(g,g)θ.當μ=0 時, 敵手的優勢為:

該系統中的用戶有數據擁有者, 用字母A 表示; 數據請求者, 用字母I 表示. 智能合約有屬性合約、上傳合約和查詢合約. 角色的作用分別如下:
? 屬性合約: 增加或刪除用戶屬性, 維持屬性列表.
? 上傳合約: 將數據上傳至DHT 中, 維護上傳列表.
? 查詢合約: 驗證請求者屬性集是否滿足訪問策略, 驗證通過后解密數據.
? I: 提供身份信息, 申請密鑰; 查詢數據.
? A: 初始化密鑰; 為數據請求者頒發屬性密鑰; 撤銷用戶權限; 上傳數據; 設定訪問控制策略.
第三方應用即數據的請求者通過調用SDK 與Fabric 網絡交互, Fabric 收到請求參數后, 自動執行智能合約的業務邏輯, 并將執行結果寫入到賬本中. 數據存儲層主要是利用DHT 脫鏈存儲用戶加密后的數據. 系統架構圖如圖2 所示.
整個系統分為五部分, 時序圖如圖3 所示.

圖3 個人數據保護時序圖Figure 3 Personal data protection timing diagram
4.2.1 初始化
Fabric 網絡初始化, 初始化Fabric 網絡節點, 編寫chaincode 即Fabric 上的智能合約, 打包智能合約, 將智能合約安裝部署到Fabric 網絡上, 實例化智能合約, 為系統中的用戶頒發證書; A 執行Setup(k),生成公鑰pk, 主私鑰mk, 并生成A 對應的身份標識Auid.
4.2.2 身份注冊
(1) I 提供身份信息Iu和屬性集合ω.
(2) A 審查I 提供的身份和屬性信息, 審查通過后為I 生成唯一的身份標識Iuid.
(3) A 執行密鑰生成算法計算私鑰(skωIu,1,skωIu,2)=Keygen(mk,ω,Iu).
(4) A 通過安全信道將{Auid,Iuid,ω,skωIu,1} 發送給區塊鏈SDK, 將skωIu,2通過安全信道發送給I. 本文的安全信道通過安全傳輸協議TLS 實現的, 能夠保護信息的機密性和完整性.
(5) 客戶端通過調用SDK 發起區塊鏈網絡發送交易提案, Endorser 節點驗證交易提案的合法性, 若合法, 對交易提案背書, 模擬執行智能合約, 將執行后的生成的屬性列表和簽名發送給客戶端. 客戶端將背書節點返回的結果發送給Orderer 節點, 由Orderer 節點經過共識后生成區塊結構.Committer 節點定期從Orderer 節點獲取區塊結構, 對所有區塊結構進行合法檢查, 檢查通過后,生成區塊寫入賬本. 列表內容如表1 所示.

表1 屬性列表Table 1 Attributes list
4.2.3 數據上傳
(1) A 首先對要上傳數據m 執行加密操作, 計算密文cτ=Encrypt(m,τ,pk).
(2) A 將身份標識Auid、權限控制樹τ、數據m 的關鍵詞mKey 和密文cτ發送給區塊鏈SDK.
(3) 區塊鏈將執行交易流程, 上傳合約計算數據關鍵詞的哈希, 即計算ht = SHA ?256(mKey). ht作為DHT 中的key, cτ作為DHT 中的value, 將數據存入DHT 中, 生成上傳列表寫入到區塊鏈賬本中. 列表內容如表2 所示.

表2 上傳列表Table 2 Upload list
4.2.4 訪問數據
(1) I 提供身份標識Iuid, 數據m 的關鍵詞, 發送給區塊鏈的SDK.
(2) SDK 調用查詢合約, 根據Iuid查詢賬本中的屬性列表, 返回Iuid對應的屬性集ω; 根據數據m的關鍵詞哈希查詢賬本中的上傳列表, 返回τ. 驗證ω 是否滿足τ, 如滿足, 則從DHT 中取出密文cτ, 對密文第一次解密, 即執行算法

(3) I 得到區塊鏈返回的結果后執行算法

得到明文m; 若沒有得到返回結果, 則重新提交請求.
4.2.5 撤銷用戶權限
A 因為需求變動, 需要撤銷I 的整個權限或者部分權限, 則向區塊鏈發起更改屬性的交易請求, 區塊鏈驗證用戶證書后, 將更新賬本中的屬性列表, 即將I 對應的ω 修改為ω′, ω′為I 新的屬性集, 為空則說明這個用戶權限被撤銷.
本系統使用8 GB 內存64 位的Ubuntu 16.04 操作系統實現, 區塊鏈使用的是Hyperledger-fabric 1.3 版本, DHT 由單機模擬實現. 后端使用GOLANG 語言開發, 前端用的語言是JavaScript. 后端使用Fabric 提供的GO-SDK 與區塊鏈交互. 密碼庫使用的斯坦福提供的pairing-based cryptography (PBC)0.5.14 版本. 仿真實驗選取的雙線性對基于橢圓曲線y2= x3+x, 橢圓曲線的階r 為160 位, 素數q 為512 位. 仿真界面用戶輸入的為白色底色, 系統生成的為灰色底色.
4.3.1 Fabric 網絡初始化
本文從github 官網上下載Fabric 1.3 的源碼, 運行官方first-network 示例網絡. 運行過程如下:
(1) 利用cryptogen 工具生成用戶發起交易所需要的證書;
(2) 利用configten 工具生成一個orderer 節點和2 個組織, 每個組織包含兩個peer 節點;
(3) 生成創世區塊和channel 通道, 將創世區塊和每個節點都加入channel;
(4) 編寫智能合約, 替換示例中的智能合約, 部署智能合約, 利用docker-compose 啟動整個網絡.智能合約如表3 所示.

表3 智能合約列表Table 3 Smart contract list
4.3.2 系統初始化
數據擁有者初始化界面: 用戶登錄系統, 系統為用戶生成ID. 輸入屬性集{a,b,c,d}, 系統為用戶生成主私鑰主公鑰. 具體如圖4 所示.
4.3.3 數據上傳
數據上傳界面: 用戶輸入訪問策略(2of4 a b c d), 表示數據請求至少擁有4 個屬性中的2 個才能解密. 明文this is a test case, 并輸入明文的關鍵詞test, 關鍵詞用來給數據查詢者搜索明文. 系統讀取用戶的公鑰生成密文, 通過SDK 接口調用UploadC 智能合約, 智能合約發起交易, 交易驗證通過后, 生成上傳列表, 寫入區塊鏈賬本中, 并將密文上傳至DHT 中保存. 具體如圖5 所示.

圖5 數據上傳Figure 5 Upload data
4.3.4 身份注冊
身份注冊界面: 數據擁有者根據數據請求者的信息, 定義數據請求者的屬性(a,b), 生成密鑰sk1 和sk2, 將sk2 發送給數據請求者; sk1 發送給區塊鏈AttributesC 智能合約, 智能合約發起交易, 交易驗證通過后, 生成屬性列表, 寫入區塊鏈賬本中. 具體如圖6 所示.

圖6 身份注冊Figure 6 Identity registration
4.3.5 數據查詢
數據查詢: 用戶輸入明文的關鍵詞調用SDK 發送查詢數據請求, SDK 調用QueryC 智能合約, 智能合約根據用戶ID 找到用戶屬性(a,b), 判斷用戶屬性滿足權限控制樹, 智能合約從DHT 中取出密文, 對密文進行第一次解密. 用戶得到區塊鏈返回的結果, 用自己的私鑰進行第二次解密, 得到明文m. 具體如圖7 所示.

圖7 數據查詢Figure 7 Query data
本文方案與經典的版本號撤銷方法和中國剩余定理進行對比, 分析各方案的存儲開銷和通信開銷, 由于存儲開銷與用戶的私鑰長度相關, 通信開銷與密文長度相關. 因此, 本文只對比各方案的密文長度和私鑰長度, 得到結果列表. 在進行性能評估時, Lx表示x 中元素的長度; Au表示用戶擁有的屬性個數; Ac表示密文包含的屬性個數.
文獻[7] 和文獻[13] 方案引入第三方使用版本號實現撤銷, 當有屬性撤銷時, 第三方為該屬性選擇新的版本號. 文獻[14] 引入中國剩余定理實現屬性撤銷. 本文方案引入區塊鏈, 將用戶一部分密鑰存入到區塊鏈上, 極大的減輕了用戶的存儲負擔, 同時實現了屬性的及時撤銷. 分析表4 可以看出, 本方案的存儲和通信開銷相對于其他方案都減少了1/2 左右.

表4 存儲開銷和通信開銷對比Table 4 Comparison of storage overhead and communication overhead

表5 本方案與文獻[1] 方案的對比Table 5 Comparison of our proposed scheme with the scheme of Ref. [1]
針對用戶使用第三方應用時產生的數據安全問題, 本文提出了一種基于區塊鏈和屬性基加密的個人隱私數據保護方案. 用區塊鏈智能合約代替了傳統的第三方, RCP-ABE 用來實現對用戶數據的細粒度訪問控制, 用戶還可以隨時撤銷第三方用戶的訪問權限, 幫助用戶在享受第三方應用服務的時候保護自己的隱私數據. 同時, 區塊鏈以可追蹤的特點防止第三方應用濫用數據.