張凌云,陳玉玲
(貴州大學 計算機科學與技術學院 公共大數據國家重點實驗室,貴陽 550025)
當前,大數據正在成為信息時代競爭的核心戰略資源,如何高效、安全地進行數據共享是學者們聚焦的熱點。為了解決“數據孤島”問題,需要建立一個公平、合理的數據共享模型。數據泄露、信任危機、利益沖突等問題使得數據共享難以進行。隨著區塊鏈[1-2]、云存儲以及密文策略屬性基加密(Ciphertext Policy Attribute-Based Encryption,CP-ABE)的完善和普及,數據共享逐漸走進人們的日常生活。但是,量子計算機的出現給采用傳統加密方式的數據共享方案帶來了沖擊,數據共享變得不再安全,且很少有學者將抗量子攻擊密碼方案運用到數據共享領域。
SAHAI 等[3]在2004 年開創性地提出基于模糊身份的加密,從而引申出屬性基加密(Attribute-Based Encryption,ABE)的概念。2006 年,GOYAL 等[4]將訪問策略分別嵌入到密文與密鑰中,將ABE 分成CPABE 與密鑰策略屬性基加密(Key Policy Attribute-Based Encryption,KP-ABE),但是此方案的安全性沒有在標準模型下進行證明。針對該問題,WATERS[5]提出一種高效的具有通用訪問結構的CP-ABE 方案,但是該方案不滿足自適應安全性。為此,2012 年,LEWKO 等[6]提出一種標準模型下自適應安全的CP-ABE 方案。為了實現抗量子攻擊,SOO 等[7]基于環上容錯學習(Ring-Learning with Errors,R-LWE)[8]提出一種新的格CP-ABE[9-10]。ZHAO 等[11]針對密鑰撤銷問題,于2020 年在TAN 等研究的基礎上提出一種云環境下的可撤銷格屬性基加密方案。
共享經濟的概念由美國社會學教授FELSON等[12]于1978 年首次提出。大數據的興起將數據共享帶到了新的高度。2017 年,XIA 等[13]基于區塊鏈技術提出一種輕量、高效、可擴展的電子醫療數據共享方案,該方案使得醫療數據能夠安全地進行共享并能夠保證數據不被泄露。次年,為了使得醫療數據支持細粒度的訪問控制,LIANG 等[14]提出一種以用戶為中心的健康數據共享解決方案。XUAN 等[15]在2020 年基于演化博弈論提出一種新的數據共享方式,通過智能合約來動態調整參數大小,鼓勵用戶積極參與到數據共享中,但是,該方案并沒有說明是在公鏈還是聯盟鏈中共享數據。2021 年,MA 等[16]提出一種新的多關鍵詞可搜索加密技術,并結合區塊鏈、ABE 設計了一種安全、可信的數據共享方案,但是該方案沒有考慮數據的更新問題。同年,GUO等[17]提出一種可以支持可信數據共享服務的區塊鏈輔助框架,這種區塊鏈輔助的框架能夠解決查詢授權的信任問題。然而,在分布式系統中很難創建一個完全可信的環境。QIN[1]在2021 年基于多機構CP-ABE 以及(t,n)門限秘密共享,解決了傳統數據共享單點故障以及相互不信任的問題。2022 年,ZHANG 等[18]將區塊鏈技術和CP-ABE 加密技術相結合,提出一種安全可信的農產品管理系統,以確保數據的高效共享和監督。
上述數據共享方案都是基于傳統的CP-ABE 技術,安全性基于雙線性配對或三素數子群決策問題,沒有達到抗量子的安全性,且未說明用戶為什么要選擇區塊鏈而不是在私下進行交易。此外,傳統的CP-ABE 雖然支持訪問控制,但是不支持數據的分級加密,擁有密鑰的用戶都能訪問同樣的數據。
針對上述問題,本文提出一種新的數據共享方案,主要工作如下:
1)基于CP-ABER-LWE及聯盟鏈提出一種抗量子攻擊的數據共享方案。
2)針對數據擁有者的主觀意愿,提出一種數據分級加密方式,將用戶屬性分為高敏感與低敏感兩類,并對數據進行分級加密。
3)基于演化博弈論建立一種數據共享模型,以鼓勵用戶積極參與到聯盟鏈中。
區塊鏈的概念由中本聰在2008 年[19]首次提出。與普通的數據庫不同,區塊鏈是由不同節點參與、不同節點保存同一份數據的分布式數據庫系統。每個區塊通過密碼學方法產生并包含上一個區塊的哈希值,它的第一個區塊稱為創世紀塊(genesis block)。由于不需要信任機構且具有不可篡改、不可偽造等特性,區塊鏈經常被應用于溯源[20-21]、數據確權[22-23]、數據共享等領域。區塊鏈又分為公鏈、私鏈、聯盟鏈3 種,本文使用的是聯盟鏈。相比于私鏈,聯盟鏈具有在指定成員之間的完全公開透明性。相比于公鏈,聯盟鏈又對外部成員完全保密,在分布式系統中保留了傳統可信第三方的特性,想加入聯盟鏈的人員或組織必須滿足準入機制,一旦有成員作惡,系統可以將其踢出聯盟鏈。因此,聯盟鏈能夠有效解決采用公鏈或在私下交易的數據共享過程中所存在的信任危機問題。
Hyperledger Fabric 支持聯盟鏈與私鏈的開發,Hyperledger Fabric 中存在以下4 種節點:
1)Client 節點。該類節點用來發起提案,如安裝鏈碼、更新鏈碼、調用鏈碼中的方法。
2)Peer 節點。該類節點是系統中最普通的節點,用來維護賬本。
3)Orderer 節點。該類節點是排序節點,主要負責對交易進行排序。
4)背書節點。該類節點是系統中由背書策略指定的一些特殊的Peer 節點。
首先由Client 節點發起提案,接著由Peer 節點進行背書,如果滿足背書策略,則發送給Orderer 節點進行排序并生成區塊,最后交給Peer 節點保存。Hyperledger Fabric 是第一個支持由不同語言對鏈碼進行編程的平臺,如Java、Go、Node.js 等,不要求某種特定的語言,因此,在實際中得到廣泛應用。
定義1[線性秘密共享方案(Linear Secret Shar‐ing Schemes,LSSS)][24]令U是屬性空間,q是一個大素數,在Zq上的秘密共享方案Π滿足U上的訪問結構,如果滿足如下兩點則稱為是線性方案:
1)每個參與方共享的秘密數組成了Zq上的列向量。
2)對于U上的訪問結構A,存在一個l行、n列的稱為Π的共享生成矩陣W。對于i=1,2,…,n,W的第i行標記為一個屬性ρ(i()ρ是一個映射,將矩陣W第i行映射到Π)。給定一個向量v=(s,r2,…,rn),s?Zq是各個參與方共享的秘密數,且r2,…,rn是隨機選取的。λ=Wl×n?v是線性秘密共享方案的共享生成向量,其第i行是參與方ρ(i)所持有的秘密份額。
線性重構為:假設Π是訪問結構A 的線性秘密共享方案,S是屬性集。當S是授權集時,定義I={1,2,…,l}以及I={i|ρ(i)?S},對于共享向量{λi}i?I,存在一個常數向量w={wi?Zp},當W?w=(1,0,…,0)T時,可以得到,且wi可以在多項式時間內找到。如果S不是授權集,那么向量w不存在。
基于R-LWE 的CP-ABE 的安全性以決策性R-LWE 問題為基礎,包含了如下4 個多項式時間算法:
1)Setup(1φ,U)→P,Km。啟動算法以安全參數φ和屬性空間U為輸入,通過在分圓多項式環中選取各個參數,最后輸出公共參數P 以及主密鑰Km。
2)Encrypt(P,M,A)→C。加密算法需要輸入3 個參數,分別是公共參數P、密文M以及屬性空間對應的訪問結構A,輸出密文C。
3)KeyGen(Km,U)→KDec。用戶解密密鑰生成算法輸入2 個參數,分別是主密鑰Km和用戶的屬性集合U,算法輸出用戶解密密鑰KDec。
4)Decrypt(P,C,KDec)→Mor ⊥。解密算法輸入3 個參數,分別是公共參數P、密文C以及用戶的解密密鑰KDec。當用戶的屬性集合滿足密文中的訪問策略時輸出明文M,否則輸出⊥。
演化博弈論[25]于1973 年被首次提出,提出者認為與傳統博弈理論不同,演化博弈論不要求參與人是完全理性、完全信息的,而是認為人類通常是通過試錯的方法來達到博弈均衡。類似于進化論,演化博弈論所選擇的均衡是一個達到均衡過程的函數,給出納什均衡的生物學解釋:納什均衡是無數次動態博弈的穩定狀態。令0 (1-x)?u(m,m*)+x?u(m,m)< (1-x)?u(m*,m*)+x?u(m*,m) 從而得到u(m,m*) 定 義2 令G=<{1,2},((m,m*),(m,m*)),(ui)>是一個對稱策略博弈,對于函數u,m*是G的一個演化穩定策略(ESS)需要滿足如下兩點: 1)(m*,m*)是G的一個納什均衡。 2)u(m,m) 2.1.1 成員組成 如圖1 所示,本文方案成員組成具體如下: 圖1 成員組成Fig.1 Membership composition 1)DO(Data Owner):數據擁有者是數據的提供方,負責加密數據并上傳到云端,同時也作為聯盟鏈的Peer 節點保存賬本。 2)Cloud:云端負責存儲數據以及作為聯盟鏈的Client 調 用Smart Contract 接 口。 3)AA(Attribute Authority):屬性機構負責為數據使用者頒發解密密鑰,同時作為聯盟鏈的Client 調用Smart Contract 接口。 4)CA(Certification Authority):證書頒發機構負責為成員頒發公私鑰作為聯盟成員的憑證。 5)DU(Data User):數據使用者從云端獲取數據并解密使用,同時也作為聯盟鏈的Peer 節點保存賬本。 6)Blockchain:上述成員都參與了一個區塊鏈網絡,鏈上存儲了各種公共參數、DO 上傳數據的證明以及數據使用者使用數據的各種信息。 本文中所涉及的常用符號及變量定義如表1所示。 表1 常用符號定義Table 1 Common symbol definitions 2.1.2 CBDSC CBDSC 一共由4 個多項式時間算法組成: 1)SystemSetup(1φ,U)→P,Km:系統初始化由CA完成,通過安全參數φ及屬性空間U生成公共參數P以及主密鑰Km,并調用智能合約將P 上傳到區塊鏈網絡。 2)DOEncrypt(P,Mhigh,Mlow,)→CR-LWE:加密階段數據擁有者通過公共參數P、高敏感數據Mhigh、低敏感數據Mlow以及訪問結構A 生成密文CR-LWE并上傳到云服務器,云服務器調用智能合約將數據擁有者上傳數據的憑證存儲到區塊鏈。 3)AAKeyGen(Km,kDU,S)→KDec:屬性機構通過DU 發來的屬性集S、公鑰kDU和主密鑰Km生成解密密鑰,并將發送給DU,DU 在本地生成解密密鑰KDec。 4)DUDecrypt(P,KDec,CR-LWE)→MhighorMlow:數據使用者通過公共參數P、自己的解密密鑰KDec以及密文CR-LWE解密出數據,同時云端將數據使用者使用數據的信息通過智能合約上傳到區塊鏈。 2.1.3 智能合約部署 本文系統中一共部署了3 個智能合約,分別是公共參數上傳合約(Public Parameter Upload Contract,PPUC)、數據擁有者上傳數據憑證合約(Data Upload Information Contract,DUC)和數據下載信息合約(Data Download Information Contract,DDC),本文主要介紹后面2 個。 1)數據擁有者上傳數據憑證合約 算法1 展示了DUC 的整體流程,DO 需要提供自己的DOID(DO 加入系統頒發的公鑰)以及密文,DUC首先獲取DO 上傳數據的時間,通過gethash()函數將DO 的DOID 以及數據取哈希之后,以鍵值對的形式將憑證存儲到區塊鏈,DO 的數據結構如圖2所示。 圖2 DO 的數據結構Fig.2 Data structure of DO 算法1 DUC 的Addowner 函數 2)數據下載信息合約 算法2 展示了DDC 存儲下載證明的流程,由于云端是Client 節點,因此DU 只需提供自己的ID,DU的數據結構如圖3 所示。 圖3 DU 的數據結構Fig.3 Data structure of DU 圖4 分級LSSSFig.4 Grading LSSS 算 法2 DDC 的AddDuInfo 函 數 DU 在生成解密密鑰后用DO 的公鑰向云端請求數據,云端返回該數據地址并將此次請求信息調用智能合約上傳到區塊鏈。解密算法首先找到向量w使得: 針對少數用戶抱有私下交易比參與聯盟鏈更符合自身利益而不愿意加入聯盟鏈的想法,本文提出一種基于演化博弈論的聯盟鏈數據共享模型,以鼓勵用戶參與到聯盟鏈中。 本文模型涉及兩類用戶User1與User2,策略集G={參與聯盟鏈,不參與聯盟鏈}。 假設1令數據帶來的固有收益為V,當兩類用戶都選擇參與聯盟鏈時,數據帶來的額外收益為C。 假設2當有一方選擇參與聯盟鏈,另一方選擇不參與聯盟鏈時,不參與方需要承擔數據泄露等問題造成的損失,假設損失概率為P,損失價值為Q。 假設3雙方都不參與聯盟鏈,除了損失收益PQ外,選取其他共享方式造成的損失或獲得的收益為R。 本文模型收益矩陣如表2 所示。 表2 收益矩陣Table 2 Payoff matrix 3.2.1 策略求解 User1選擇參與聯盟鏈的期望收益為: 其中:x為User2參與聯盟鏈的概率。 User1選擇不參與聯盟鏈的期望收益為: User1的期望收益為: 可得復制動態方程: 令F(y)=0,解得當F(y)>0 時,表示隨時間的變化,User1選擇參與聯盟鏈的概率不斷增加;當F(y)<0 時,表示隨時間的變化,User1選擇不參與聯盟鏈的概率不斷增加。同理,User2的復制動態方程為: 令F(x)=0,解得當F(x)>0 時,表示隨時間的變化,User2選擇參與聯盟鏈的概率不斷增加;當F(x)<0 時,表示隨時間的變化,User2選擇不參與聯盟鏈的概率不斷增加。 3.2.2 策略分析 由上述求解可知,演化模型的局部穩定點為(0,0)、(0,1)、(1,0)、(x*,y*),對應的雅克比矩陣J為: 如果一個局部平衡點滿足detJ>0 且trJ<0,那么這個點就是局部漸進平衡點,稱為演化博弈的穩定策略,即ESS。根據雅克比矩陣進行系統的穩定分析,如表3 所示。 表3 穩定性分析結果Table 3 Stability analysis results 從 表3 可以看出,除了C>0,0 1)R>C:此時(0,0)、(0,1)、(1,0)都是不穩定點,ESS 點只有(1,1),對應的相位圖如圖5 所示(彩色效果見《計算機工程》官網HTML 版,下同)。由于C>0 且PQ>0,因此如果R>C,那么雙方不參與聯盟鏈所帶來的收益一定小于雙方參與聯盟鏈所帶來的收益。因此,根據相位圖的演變情況,即便有少數人剛開始選擇不參與聯盟鏈,但是最終會收斂到(1,1),即雙方都參與聯盟鏈。 圖5 R>C 對應的相位圖Fig.5 Phase diagram corresponding to R>C 2)-PQ 圖6 -PQ 3)R<-PQ:此時(0,1)、(1,0)都是不穩定點,ESS 點有(0,0)、(1,1)兩個。由于R<-PQ,因此-PQ+R所對應的值與C的大小不確定,對應的相位圖如圖7 所示。隨著參數的變化,演化模型最終會收斂到(0,0)和(1,1)兩個平衡點。 圖7 R<-PQ &R+PQ>-1 對應的相位圖Fig.7 Phase diagram corresponding to R<-PQ &R+PQ>-1 由于R>C和-PQ 情況1演化策略的效果如圖8(a)所示,此時R+PQ>-1,隨著時間的推移,最終雙方都會選擇參與聯盟鏈。 圖8 演化策略的效果Fig.8 Effect of evolutionary strategy 情況2演化策略的效果如圖8(b)所示,當R+PQ<-1 時,雙方都會選擇不參與聯盟鏈。 綜上,如果想要演化結果是雙方都參與聯盟鏈,則需要滿足R+PQ>-1。 當S?{高權限屬性集}時,解密算法首先找到向量w,使得 因此,M=M'modp。當數據使用者想要用低權限屬性去解密高敏感數據時,會遺留如下一項導致解密不成功: ars1K0-ars2K0 文獻[26]使用合數階雙線性群[27]構造CP-ABE,而本文的分級加密使用了多項式環,因此,通過Java 的JPBC 和Rings jar 包構建加密方案。圖9中的橫坐標表示屬性的數量,且呈指數增長,縱坐標是每選擇10 個操作的平均時間,圖9(a)、圖9(b)和圖9(c)分別是啟動、加密和解密時間的比較結果。可以看出,隨著屬性的增加,基于R-LWE 的CP-ABE算法效率明顯高于基于合數階雙線性群的CP-ABE算法,但是在密鑰生成方面[圖9(d)],基于R-LWE的CP-ABE 算法復雜度為O(nlogan),n為系統中屬性的個數,而基于合數階雙線性群的密鑰生成算法的復雜度是O(n)。因此,隨著屬性的增加,本文分級加密方案效率將逐漸低于文獻[26]方案。 圖9 2 種方案的時間對比Fig.9 Time comparison of two schemes 本節主要測試在部署DUC 和DDC 這2 個智能合約后不同數量的背書節點對聯盟鏈吞吐量的影響。 4.4.1 DUC 智能合約 表4 展示了在部署DUC 后不同背書節點對聯盟鏈吞吐量的影響。從表4 可以看出,當系統中有2 個背書節點時,系統對Addowner 函數的最大響應時間為2.03 s,最小響應時間為0.03 s,每秒處理的平均交易數為1.9;對QueryData 函數的最大響應時間為0.02 s,最小響應時間可以忽略不計,每秒處理的平均交易數為374.3。由于Addowner 函數中涉及獲取當前時間、封裝用戶、轉換哈希等操作,而QueryData只涉及查詢以及封裝操作,因此在響應時間上QueryData 要高于Addowner,在每秒處理的平均交易數上QueryData 明顯少于Addowner。 表4 不同數量的背書節點對聯盟鏈吞吐量的影響1Table 4 The impact 1 of different numbers of endorsement nodes on the throughput of the consortium blockchain 4.4.2 DDC 智能合約 表5 展示了在部署DDC 后不同背書節點對聯盟鏈吞吐量的影響。從表5 可以看出,當系統中有2 個背書節點時,系統對AddDuInfo 函數的最大響應時間為2.04 s,最小響應時間為0.02 s,每秒處理的平均交易數為1.9;對QueryDownloadRecords函數的最大響應時間為0.03 s,最小響應時間可以忽略不計,每秒處理的平均交易數為359.6。由于AddDuInfo 函數中同樣涉及獲取當前時間、封裝用戶、轉換哈希等操作,而QueryDownloadRecords 僅涉及查詢、遍歷以及封裝操作,因此在響應時間上AddDuInfo 高于QueryDownloadRecords,在每秒處理的平均交易數上AddDuInfo 明顯少于QueryDownloadRecords。 表5 不同數量的背書節點對聯盟鏈吞吐量的影響2Table 5 The impact 2 of different numbers of endorsement nodes on the throughput of the consortium blockchain 利用區塊鏈和訪問控制技術進行數據共享是當今信息化時代的一個熱門課題,本文針對共享過程中存在的數據泄漏、信任危機和傳統加密無法抵御量子攻擊等問題,提出一種基于格上CP-ABE 的聯盟鏈數據共享方案。此外,針對少數用戶抱有私下交易比參與聯盟鏈更符合自身利益而不愿意加入聯盟鏈的想法,通過構建演化博弈模型分析不同參數對共享雙方策略選擇的影響。對本文的加密方案、部署智能合約后的聯盟鏈系統進行測試,通過Matlab 對演化模型進行模擬,結果表明,分級加密方案效率高于基于合數階雙線性群的加密方案,增加背書節點能夠提高聯盟鏈系統的吞吐量,本文所提演化模型能夠對共享雙方起到激勵作用。下一步將對R-LWE 密鑰生成效率偏低的問題進行研究,并探究如何對密鑰進行追溯。2 具體方案
2.1 系統結構







2.2 系統實現
3 基于演化博弈論的聯盟鏈數據共享模型
3.1 基本假設與模型建立

3.2 模型分析




4 實驗分析
4.1 博弈模型參數分析

4.2 分級加密正確性分析
4.3 效率分析

4.4 聯盟鏈吞吐量測試


5 結束語