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