馬海英,李金舟,楊及坤
(南通大學 信息科學技術學院,江蘇 南通 226019)
屬性基加密(Attribute-Based Encryption,ABE)作為一種能有效地對外包數據實現細粒度訪問控制的密碼學原語,具有良好的應用前景,已成為近年來國內外學者的研究熱點[1-4]。在密文策略的ABE(Ciphertext Policy Attribute-Based Encryption,CP-ABE)方案中,加密者為數據制定訪問控制策略,并將該策略嵌入密文中,只有滿足訪問控制策略的用戶才能成功解密。CP-ABE 更適合在不可信環境下進行數據安全共享。在現實物聯網(Internet of Things,IoT)場景中,用戶屬性常常動態變化,訪問數據的權限需要不斷調整。因此,如何構造高效可撤銷用戶屬性的CP-ABE 方案至關重要。
為了實現用戶屬性的撤銷,Yang 等[5]通過更新相關密文和密鑰,提出一種高效撤銷用戶屬性的多權威CP-ABE 方案,并應用于云存儲的訪問控制系統。但Hong 等[6]針對Yang 等[5]的多權威CP-ABE 方案,證明一個撤銷的用戶依然能成功解密更新后的密文,因此該可撤銷屬性的多權威CPABE 方案不滿足后向安全性。Xiong 等[7]提出一種可撤銷的多權威屬性基加密方案,該方案需要利用一個完全可信的屬性權威管理模塊提供云存儲的訪問控制功能,很難應用到不可信的物聯網場景中,拓展性有待進一步完善。
由于屬性撤銷的計算開銷較大,Deng 等[8]利用可外包解密的ABE 方案[9]構造一個可撤銷用戶的屬性基數據存儲方案,但用戶屬性密鑰的生成和分發難以協調,且密鑰管理過程不透明。Ming 等[10]提出了一種高效可撤銷的云存儲加密方案,通過在屬性中添加版本密鑰,實現用戶屬性的撤銷。Ge 等[11]提出一種可撤銷的屬性基數據存儲方案,使被撤銷的移動設備無法訪問任何文件。Ali 等[12]提出一種輕量級的可撤銷分層ABE 方案,使用分層模型提供了靈活和可擴展的用戶撤銷機制。然而上述方案的安全性完全依賴于可信的密鑰生成中心,且存在屬性撤銷效率低、用戶屬性密鑰難協調、屬性密鑰管理不透明等問題,難以保障系統安全性。
區塊鏈[13]作為一種新型的去中心化協議,能在不可信的環境中建立節點之間的信任,為解決ABE 中屬性密鑰的高效撤銷提供了一種有效解決方法。Xu 等[14]提出一種基于區塊鏈的移動網絡身份管理和認證方案,用戶自己控制共享數據的訪問權限,靈活度高。Luo 等[15]提出一種基于區塊鏈同態加密的聚合方案,使用粒子群優化算法和智能合約進行自動調度,確保數據的有效共享。Sun 等[16]利用區塊鏈技術設計了一種防篡改的車聯網數據共享方案,用戶使用一個授權聚合密鑰能高效地訪問車聯網數據。Huang 等[17]提出一種基于區塊鏈的隱私保護醫療數據共享方案,使用代理重新加密和零知識證明技術,提高了數據共享的安全性。Ma 等[18]提出一種基于區塊鏈數據眾籌的細粒度授權機制,數據所有者負責頒發屬性私鑰和加密數據,但可能成為系統的瓶頸。由此可見,區塊鏈輔助數據共享和數據交易在各個領域得到了廣泛研究,但文獻[14-18]中的方案在數據共享過程中,無法保證前向和后向安全性。
為了提高用戶屬性撤銷的效率,本文將區塊鏈和多權威的CP-ABE 相結合,提出一種新的基于區塊鏈可撤銷屬性的去中心化屬性基加密(Blockchain-based Decentralized Attribute-Based Encryption for Revocable attribute,BRDABE)方案。利用共識驅動的區塊鏈構架,將密鑰分發的信任問題從屬性權威映射到分布式賬本上,利用智能合約協助屬性權威實現對用戶屬性的撤銷。當撤銷用戶屬性時,屬性權威利用智能合約記錄撤銷用戶的屬性狀態,生成與撤銷屬性相關的密文更新鑰和密鑰更新鑰,通過安全信道將密文更新鑰發送給數據擁有者,將密鑰更新鑰發布在區塊鏈上。未撤銷用戶利用密鑰更新鑰更新他的屬性私鑰,數據擁有者更新與撤銷屬性相關的密鑰密文。通過安全性證明和效率分析,本文方案不僅提高了屬性撤銷的效率,而且保障了共享數據的前向和后向安全性。
設G(λ) →(N=p1p2p3,G0,G,e) 表示雙線性群生成算法,λ為系統安全參數,輸出結果(N=p1p2p3,G0,G,e)用來描述雙線性群。G0、G是階為N=p1p2p3的乘法循環群,其中p1、p2、p3為三個不同的大素數,Gi是群G0的階為pi的子群,i=1,2,3。G0到G的雙線性映射e:G0×G0→G滿足以下性質[19]:
1)雙線性性:?g,h∈G0,x,y∈ZN,都有e(gx,hy)=e(g,h)xy。
2)非退化性:如果g是G0的生成元,那么e(g,g)是G的生成元。
3)可計算性:對于任意的g,h∈G0,存在一個多項式時間算法計算e(g,h)。
4)子群正交性:對于任意的gi∈Gi,gj∈Gj,若i≠j,那么有e(gi,gj)=1。
假設P是n個實體的集合,P={p1,p2,…,pn}。訪問控制結構A[5]是P的非空子集合,如果集合A是單調的,對于任意集合X和Y,如果X∈A,且X?Y,則Y?A。單調的訪問控制結構意味著A是單調的,如果集合Z包含訪問控制結構A中的元素,Z為授權集合;否則Z為非授權集合。
BRDABE 方案基于多權威 DABE(Decentralizing Attribute-Based Encryption)[1]進行構造,該方案中沒有中央權威機構,滿足去中心化,DABE 的形式化定義如下:
1)系統初始化算法:Global Setup(λ)→(GP)。系統管理員執行系統初始化算法,輸入安全參數λ,輸出全局公共參數GP。
2)屬性權威初始化算法:Authority Setup(GP,S)→(PK,SK)。屬性權威執行初始化算法,輸入全局公共參數GP和用戶屬性集合S,輸出公私鑰對(PK,SK)。
3)加密算法:Encrypt(M,A(A,ρ),GP,{PK})→CT。數據擁有者執行加密算法,輸入共享數據M,訪問控制策略A(A,ρ)(A是一個n×l矩陣),系統公共參數GP,屬性公鑰集{PK},輸出數據密文CT。
4)屬性私鑰生成算法:KeyGen(GID,i,SK,GP)→Ki,GID。屬性權威執行屬性私鑰生成算法。輸入用戶全局身份GID,屬性權威管理的屬性i和該屬性權威的私鑰SK,輸出屬性私鑰Ki,GID。
5)解密算法:Decrypt(CT,{Ki,GID},GP)→M/⊥。數據申請者執行解密算法,輸入密文CT,屬性私鑰集{Ki,GID},系統公共參數GP,若滿足訪問控制策略A(A,ρ),則輸出M;否則輸出⊥。
區塊鏈集成了分布式數據存儲、對等網絡、密碼算法和共識機制等技術,能將時序的交易數據以單向鏈表的區塊結構形式存儲在分布式數據庫賬本中,具有去中心化、公開透明、不可篡改、安全可信、可追溯等特點。在多利益主體參與的場景下,通過區塊鏈構建去中心化的共享平臺,并利用對等網絡進行節點間的數據傳輸,采用帶時間戳的鏈式區塊結構存儲共享數據,能增強可驗證性和可追溯性;采用數字簽名技術可保障數據的不可篡改性,同時實現問責制度[18]。因此,區塊鏈能在不可信的環境中建立節點間的信任,是保障分布式物聯網場景中數據安全共享的潛在解決方案。
智能合約在區塊鏈平臺得到了廣泛應用,能利用智能合約提高區塊鏈的去中心化、公開透明、不可篡改等特性,更適用于實現復雜完備的業務邏輯。BRDABE 方案的智能合約在Hyperledger Fabric 中部署測試,運行環境是docker 容器,在滿足觸發條件的情況下,智能合約將自動執行一些預定義的功能,然后生成交易或調用其他智能合約。本文利用智能合約記錄用戶屬性和數據共享的狀態,協助屬性權威實現用戶屬性的撤銷。
BRDABE 的模型結構如圖1 所示,共包含以下6 個實體:

圖1 模型的結構Fig.1 Structure of model
1)系統管理員(System Manager,SM):創建區塊鏈,構建數據共享平臺。當數據擁有者(Data Owner,DO)、數據申請者(Data Requester,DR)和屬性權威(Attribute Authority,AA)向系統發起注冊時,SM 驗證身份,為合法用戶分配公私鑰對和區塊鏈上的錢包地址,該錢包地址可標識用戶的唯一身份。SM 生成系統全局公共參數GP 并將它記錄到創世區塊中。
2)區塊鏈B(Blockchain):記錄系統中數據共享的過程和細粒度授權過程的分布式賬本。區塊鏈記錄著DR 及其屬性集合之間的映射關系,并且發布用戶屬性狀態的變化、共享數據的描述信息,從而保障了數據共享的安全性、不可篡改性和可審計。區塊鏈利用智能合約輔助實現用戶的屬性撤銷,DO 只需更新部分密文,未撤銷DR 更新相應的密鑰,減小了屬性撤銷的計算開銷。此外,數據密文和會話鑰密文存放在云服務器中,僅將這些密文的存儲地址存放到區塊鏈的交易中,這種存儲模式不僅可以減小區塊鏈的存儲開銷,還可以提高區塊鏈系統的吞吐量。
3)屬性權威(AA):每個AA 彼此相互獨立,審核數據申請者(DR)的身份,并且根據它管理的一組屬性為DR 生成相應的屬性私鑰。當DR 的屬性撤銷時,負責管理該屬性的AA執行屬性撤銷合約,更新DR 當前的屬性狀態,將該過程作為一條交易記錄到區塊鏈上。為了防止AA 和DR 之間的串謀攻擊,本文方案從擁有數據量較多的DO 中選出屬性權威,這意味著AA 與DR 之間進行合謀攻擊,將會威脅自身的經濟利益,從而確保了數據共享的安全性。此外,擁有數據量較大的DO 通常是行業可信度高的企業或政府部門,例如三甲醫院、公安部門等,它們成為屬性權威能誠實可靠地審核DR 的屬性和身份信息,與數據量小的DO 相比,有更高的可信度和更高質量的數據。
4)數據擁有者(DO):根據物聯網數據特征,制定相應的訪問控制策略。每個DO 首先選取一個會話密鑰κ來加密數據,利用AES(Advanced Encryption Standard)對稱加密算法計算生成數據密文DCT;然后,利用訪問控制策略對會話密鑰執行BRDABE 屬性加密算法,生成會話密鑰密文KCT;當AA撤銷DR 的屬性時,DO 利用AA 發送的密文更新鑰,計算與撤銷屬性相關的密文,生成更新后的密鑰密文。
5)數據申請者(DR):每個DRj根據自身需求在系統中檢索共享的物聯網數據,DRj通過關鍵字檢索共享數據的描述信息找到合適的數據。DRj調用策略匹配函數PolicyM(?)對自身當前的屬性集進行策略匹配,若滿足該共享數據的訪問控制策略,DRj下載并解密密文。
6)云服務器(Elastic Cloud Server,ECS):ECS 是半可信實體,用于存儲物聯網(IoT)數據密文和會話密鑰密文。由于區塊鏈不適合存儲數據量較大的數據,當DO 將會話密鑰密文和數據密文上傳到ECS 時,會獲取一個哈希字符串(URL),該字符串即文件存放位置。當DR 解密數據時,DR將屬性私鑰集合發送給云服務器,云服務器利用轉換密鑰解密密鑰密文,生成轉換密文,發送給DR。
BRDABE 由11 個算法組成,它們的形式化定義如下:
1)SMSetup(λ)→{GP,(sk0,pk0)}。SM 執行系統初始化算法,輸入為安全參數λ,輸出為系統參數GP和公私鑰對(sk0,pk0)。
2)AAReg(InfoAA)→{aid}。SM 執行屬性權威注冊算法,輸入為屬性權威的信息集合InfoAA,輸出為屬性權威的錢包地址aid。
4)UserReg(GP,pk0,Infouid)→{uid,(pkuid,skuid),Cer(tuid)}。SM 執行用戶注冊算法,輸入為系統參數GP,系統管理員SM 的公鑰pk0,用戶的身份信息Infouid。系統首先驗證用戶的身份,并為合法用戶頒發全局唯一的身份uid。算法的輸出為用戶身份uid,一對全局公私鑰對(pkuid,skuid)和驗證證書Cer(tuid)。
7)PDCTGen(KCT,dfuid,pkuid,{askaid,uid,i|k∈SA,i∈Said})→CTc。服務器執行預解密算法,輸入為解密因子dfuid,密鑰密文KCT,用戶公鑰pkuid和密鑰集合{askaid,uid,i|k∈SA,i∈Said}。當用戶uid擁有的屬性滿足訪問控制策略時,服務器運行該算法生成正確的轉換密文CTc。
8)Decryp(tCTc,skuid)→κ。DR 執行解密算法,輸入為轉換密文CTc,用戶私鑰skuid,輸出為會話密鑰κ。
9)UKeyBase(SKaid,{pkuid},VKaid,i)→(KUKuid,i,CUKi),其中,uid∈Uaid。AA 執行更新鑰生成算法,輸入為私鑰SKaid,當前的屬性版本鑰VKaid,i,以及所有未撤銷用戶的全局公鑰集合,輸出為用戶的密鑰更新鑰KUKuid,i和密文更新鑰CUKi。
10)SKUpdate(askaid,uid,i,KUKuid,i)→。未撤銷屬性的DR 執行密鑰更新算法,輸入為當前的密鑰askaid,uid,i,以及密鑰對應的密鑰更新鑰KUKuid,i,輸出為更新后的屬性私鑰
11)KCTUpdate(κ′,KCT,CUKμ)→KCTUPD。DO 執行密鑰密文更新算法,輸入為會話密鑰κ?、當前的密鑰密文KCT和密文更新鑰CUKμ,輸出為更新后的密鑰密文KCTUPD。
定義2 BRDABE 的安全性。若σ?=σ,則攻擊者贏得游戲,否則挑戰者贏得游戲。此游戲中攻擊者贏得這個游戲的優勢為如果任意多項式時間內,攻擊者贏得上述游戲的優勢都是可以忽略的,則稱BRDABE 方案是適應性安全的。
BRDABE 方案主要包括七個階段:系統初始化、屬性權威初始化、用戶注冊、用戶屬性私鑰生成、數據加密、數據解密和屬性撤銷。
系統管理員SM 執行算法SMSetup(λ)→(GP,(sk0,pk0)),輸入安全參數λ,選擇一個階數為N=p1p2p3的雙線性群G,其中p1、p2、p3是三個不相同的大素數。然后SM 構建聯盟鏈,為SM 自己選擇唯一身份idSM。SM 選擇雙線性映射e:G×G→GT,令Gi是循環群G的pi階子群,隨機選擇一個生成元g∈G1,選擇一個hash 函數H:{0,1}*→G,該函數可以將屬性映射到群G中的元素,得到系統公共參數:
最后,SM 為自己生成一對公私鑰(sk0,pk0),將公鑰pk0和系統的全局公共參數GP記錄到創世區塊中,便于用戶從區塊鏈中獲取全局公共參數GP和系統管理員公鑰pk0。
每個屬性權威AA 向SM 申請屬性管理權限,SM 為合法的AA 生成一個錢包地址aid并授予AA 相關的屬性域管理權限,其中錢包地址aid用于標識屬性權威的唯一身份。身份為aid的AA 執行算法AASetup(GP,aid,{i|i∈Said})→(PKaid,SKaid,{PKaid,i,VKaid,i|i∈Said}),其中,Said是AAaid管理的屬性集合。假定身份為k的屬性權威AAk管轄的屬性域是Sk,AAk從創世區塊中讀取全局公共參數GP和系統管理員公鑰pk0,隨機選取βk∈ZN作為AAk的私鑰,即SKk={βk}。此外,AAk選擇隨機數vk,i作為屬性i的版本私鑰VKk,i=vk,i,得到屬性版本私鑰集合{VKk,i=vk,i,vk,i∈ZN}。對于每個屬性i∈Sk,AAk計算第i個屬性公鑰:
AAk得到所管轄的屬性公鑰集:
然后AAk計算它對應的授權公鑰:
最后,系統管理員將AAk中每個屬性i對應的一組屬性公 鑰{PKk,i|i∈Sk}和一組哈希值{H(i) |i∈Sk}與授權公鑰PKk記錄到列表LAA-att中,該列表會記錄在區塊鏈上。其他屬性權威以相同的方式進行注冊驗證并獲取屬性私鑰分發的權限。
SM 執行用戶注冊算法UserReg(GP,pk0,Infouid)→{uid,(pkuid,skuid),Cer(tuid)}。用戶DR 向SM 申請注冊,提交身份描述信息InfoDR(如姓名、郵箱等),SM 驗證用戶的InfoDR,為該用戶選擇一個錢包地址uid,該錢包地址用于標識用戶的唯一身份。根據用戶的錢包地址uid,SM 隨機選擇uuid,zuid∈,計算該用戶的公鑰,用戶私鑰sk=z。然后,SMuiduid利用私鑰sk0為用戶計算數字簽名,生成該用戶的數字證書Cert(uid)。SM 將全局公私鑰對(pkuid,skuid)和Cer(tuid)通過秘密信道發送給用戶,并將用戶的pkuid記錄在區塊鏈上。
假定第j個數據申請者DRj向第k個屬性權威AAk申請屬性私鑰,Uk是AAk域內的用戶集合,SA是屬性權威集合,j∈Uk,k∈SA,AAk管理的屬性域為Sk,DRj申請的屬性i∈Sk。DRj向AAk申請屬性私鑰,提交Cert(uid),AAk利用pk0驗證該用戶DRj的身份信息,得到。如果用戶身份不合法,密鑰生成請求失敗。對于合法用戶,AAk調用密鑰生成算法為DRj計算第i個屬性私鑰askk,j,i:
最后,AAk利用RSA(Rivest Shamir Adleman)加密算法Enc(pkj,{askk,j,i})計算得到該用戶屬性私鑰集合的密文該交易記錄到用戶屬性列表LDR-Att中,將列表LDR-Att作為一條交易記錄到區塊鏈上,同時記錄下該條交易的索引TXk,j。數據申請者DRj可以根據交易索引TXk,j從區塊鏈中獲取屬性私鑰密文,并使用自己的私鑰skj解密密文。此外,LDR-Att中記錄著所有DR 的屬性集合,方便其他用戶進行驗證。以相同的方式,DRj可以從其他屬性權威獲得所有的屬性私鑰
每個DO 對待共享數據M制定訪問控制策略,將訪問控制策略嵌入到待共享數據的密文中。DO 首先選擇會話鑰κ,利用AES 對稱加密算法AES.enc(κ,M),得到數據密文DCT=AES.enc(κ,M)。然后,DO 為共享數據M制定一個訪問控制策略A(A,ρ),其中A是一個n×l矩陣,ρ是一個從集合{1,2,…,n}到屬性集合U的映射。
此外,DO 將密鑰密文KCT上傳到云服務器中。
在云存儲系統中,任何合法用戶都可以從云服務器獲取任何感興趣的密文。但是,只有當用戶的屬性滿足訪問控制策略,才能解密獲得會話密鑰,并利用會話密鑰進一步獲取共享數據。為了減少用戶的計算開銷,將解密過程的計算密集型的雙線性對等復雜運算外包給云服務器,得到一個轉換密文CTc,用戶僅計算一次冪乘和一次乘法運算,即可得到會話密鑰κ,利用κ解密數據密文DCT,獲取物聯網數據。假設數據申請者DRj滿足DO 共享數據Mx的訪問控制策略A(A,ρ),DCTx為Mx的數據密文,KCTx為Mx的會話密鑰密文,DRj的屬性私鑰集為解密過程如下:
1)生成轉換密文。DRj通過關鍵字檢索物聯網數據,然后調用策略匹配函數,DRj的屬性集滿足Mx的訪問控制策略A(A,ρ),獲取DCTx和KCTx,數據獲取過程記錄在共享列表Ldata中。DRj利用KCTx中的C1,i計算解密因子dfj:
DRj通過安全信道將發送給ECS,ECS 從用戶屬性列表LDR-Att中檢索與DRj相關的屬性公鑰集{PKk,j},然后計算屬性的公共子集Pj,A={ρ(i),i∈l}∩{PKk,j}。對于集合Pj,A中的這些屬性,ECS 進一步檢查是否存在子集Ic,使得Ic是向量(1,0,…,0)的線性組合。如果不存在,則終止解密。如果存在,ECS 選擇一組常量{ci∈ZN},使得,執行算法PDCTGen(KCT,dfj,pkj,,計算得到轉換密文CTc:
其中:ωi=Ai?v;λi=Ai?v,v?(1,0,…,0)=s,ω?(1,0,…,0)=0,Ai表示A的第i行。
2)解密數據密文。CServer 通過安全信道將CTc發送給DRj,DRj利用私鑰skj解密CTc,恢復會話密鑰:
DRj利用κ解密DCTx得到Mx,即Mx=dec(κ,DCTx)。
假設DRφ的屬性μ被AAk撤銷,撤銷過程如下:
2)DO 更新會話鑰密文。DO 通過安全信道獲取CUKμ,更新與撤銷屬性μ相關的會話鑰密文KCTx。DO 重新選擇會話鑰κ′,利用AES 對稱加密算法AES.enc(κ′,M)加密數據,得到DCTUPD,該過程可預先處理。然后DO 運行算法CTUpdate(κ′,KCT,CUKμ)→KCTUPD,利用CUKμ對KCT進行更新,得到新的會話密鑰密文KCTUPD:
DO 將更新后的KCTUPD重新上傳云服務器,密文組件CTμ={C0,C3,i}的更新為主要開銷,而DO 在本地可預先生成C0,所以KCTUPD的主要開銷是更新與撤銷屬性μ相關聯的密文C3,i,部分密文組件的更新極大地提高屬性撤銷的效率。通過AAk提供的密文更新鑰,本方案可以保證訪問控制系統的前向安全性,即新加入的用戶如果擁有滿足訪問控制策略的屬性,就能夠解密密文。
3)未撤銷用戶更新屬性私鑰。當密鑰密文發生改變后,滿足該密文訪問控制策略的未撤銷授權DR 需要更新其屬性μ的私鑰。AAk在列表LDR-Att中記錄更新屬性μ私鑰的用戶列表{listDR},AAk通知{listDR}中的每個用戶更新屬性μ私鑰。每一個擁有屬性μ的未撤銷的授權DRj(j∈SU,j≠φ),通過智能合約獲取密鑰更新鑰KUKj,μ,DRj執行算法SKUpdate(askk,j,μ,KUKj,μ)→{ask′k,j,μ},利用KUKj,μ更新屬性私鑰askk,j,μ為中的Kj,μ:
由于DRj的錢包地址uj唯一,這些密鑰更新鑰KUKj,μ對于所有未撤銷的用戶都是不同的。因此,被撤銷的用戶DRφ無法使用其他未被撤銷的用戶的更新密鑰KUKj,μ,更新自己的屬性私鑰,保證了數據共享的后向安全性。
4)其他授權用戶解密新版本密文。授權用戶DRj(j∈SU,j≠φ)獲取新的密鑰密文KCTUPD和數據密文DCTUPD,向ECS 發送新的密鑰集合,ECS 執 行PDCTGen解密得到轉換密文CTc,DRj利用私鑰skj解密CTc,恢復會話密鑰κ′,解密DCTUPD得到共享數據Mx。
當DRj屬性滿足密鑰密文KCT的訪問策略A(A,ρ),則存在ωx=Ax?ω,λx=Ax?v,v?(1,0,…,0)=s,ω?(1,0,…,0)=0,通過解密算法可得轉換密文CTc:
最后,DRj通過會話密鑰κ對密文進行解密以獲得共享數據的明文M=AES.dec(κ,DCT)。
定理1 假設屬性權威和用戶不會串謀,BRDABE 方案能夠抵抗屬性撤銷用戶的合謀攻擊。
證明 在BRDABE 方案中,假設屬性權威和用戶不會串謀,SM 為每個合法用戶生成一個區塊鏈上的錢包地址uid用于標識用戶的唯一身份。每個AA 為數據申請者頒發的屬性私鑰與UID相關聯。因此,對于那些不滿足訪問控制策略的數據申請者,即便想要合謀解密他們各自無法單獨解密的密文時,也無法解密密文,因為他們沒有相同的屬性私鑰組件。另一方面,假設存在一個來自合謀用戶的屬性子集,使得,而根據數據申請者的UID不同,他們的身份、公私鑰和屬性私鑰也不同,因此無論合謀用戶怎樣組合都無法解密密文。因此,本方案可以保證數據共享的安全性,抵抗非法用戶與其他用戶之間的合謀攻擊。證畢。
定理2 假設密文和密鑰更新算法可以正確執行,當撤銷用戶的某一屬性時,BRDABE 方案可以同時保持前向安全性和后向安全性。
證明 在BRDABE 方案中,假設密文和密鑰更新算法可正確執行,當用戶DRφ的屬性μ被撤銷時,所有未撤銷的用戶的密鑰和云服務器中與撤銷屬性相關的所有密文將被更新,已知密鑰更新鑰和密文更新鑰,密文和密鑰組件更新如下:謀,DRφ仍然無法更新其屬性私鑰,因為密鑰中的可以
即使被撤銷的用戶DRφ可以與一些未被撤銷的用戶合阻止被撤銷的用戶DRφ通過合謀未被撤銷用戶的KUK來更新密鑰。因此,被撤銷用戶DRφ具有舊版本密鑰,無法解密更新后的密文,而更新后的密文只能通過新版本密鑰進行解密,這保證了方案的后向安全性。此外,在BRDABE 方案中,密文更新由DO 實現,AAk管理撤銷的屬性,如果云服務器負責更新密文,則該機制可以抵抗基于云的共謀攻擊。如果一個新的數據申請者屬性能夠滿足嵌入到先前會話密鑰密文中的訪問策略,那么數據申請者仍然可以解密密鑰密文,這可以保證本方案滿足前向安全性。綜上,BRDABE 方案可以保證物聯網數據的前向安全性和后向安全性。證畢。
本節通過仿真實驗對本文提出的方案進行分析與驗證,將BRDABE 方案與現有的方案進行了對比,包括DABE[1]、BDABE(Blockchain-based DABE)[19]、EDAC-MCSS(Effective Data Access Control for Multiauthority Cloud Storage Systems)[5]和 SEM-ACSIT(Secure and Efficient Multiauthority Access Control for IoT Cloud Storage)[7]。
本文的實驗環境如下:操作系統為Windows 10,處理器為Intel Core i5-7300,CPU 頻率2.5 GHz,內存為16 GB。本文基于虛擬機搭建區塊鏈系統,區塊鏈環境為Hyperledger Fabric 2.4,本方案設計了兩個智能合約:共享合約(Shared Contract,SC)和屬性撤銷合約(Attribute Revocation Contract,ARC),在Hyperledger 環境下的docker 容器中測試了合約。采用JPBC(Java Pairing Based Cryptography library 1.2.1)加密庫。所有結果在100 次模擬測試中取平均值。
4.3.1 功能分析
將BRDABE 和相關方案[1,5,7,19]進行功能對比。DABE[1]和BDABE[19]都不能實現用戶屬性撤銷的后向安全性。Yang等[5]提出了可撤銷用戶屬性的多權威ABE 方案EDACMCSS;然而Hong 等[6]通過反證法證實EDAC-MCSS 不滿足后向安全性,而且利用云服務器進行密文更新,無法抵抗共謀攻擊;Xiong 等[7]在EDAC-MCSS 方案的基礎上,提出了一種多權威可撤銷的屬性基加密(SEM-ACSIT)方案,但該方案中存在完全可信實體AAM(Attribute Authority Management),而在分布式物聯網場景中很難找到這樣的完全可信實體。因此,上述方案[5,7,19]只滿足較弱的選擇性安全模型,即在系統初始化之前選定撤銷用戶的屬性集,然而,在不可信的IoT環境中攻擊者能自適應地選擇撤銷用戶的屬性集合,所以,這些方案[5,7,19]無法滿足實際IoT 應用場景的安全需求。
本文的BRDABE 方案能夠滿足適應性用戶屬性撤銷的安全需求,且無須任何可信權威中心,將用戶屬性撤銷的過程記錄到區塊鏈的分布式賬本上,通過鏈上鏈下相結合的方式,對密文和密鑰中的版本鑰組件進行更新,實現了用戶屬性撤銷的前向和后向安全性。
4.3.2 性能分析
將本文方案與SEM-ACSIT 和EDAC-MCSS 方案的存儲開銷進行對比,如表1 所示。其中:nk表示AAk管理的屬性數量;NA表示云存儲系統中所有屬性權威的數量;|G|表示群元素的大??;nk,j表示從AAk分配給用戶j的屬性數;Lu表示訪問列表的長度;tc表示嵌入在密文中的訪問策略中的屬性數。在SEM-ACSIT 方案中,新引入的AAM 模塊主要存儲所有AA的授權公鑰和它管理的所有屬性公鑰。雖然利用AAM 存儲公鑰可以在系統級別上減小數據共享者的存儲開銷,但是增加了系統的額外開銷。本文的BRDABE 利用區塊鏈存儲AA的授權公鑰與它管理的所有屬性公鑰,既減小了數據共享者的存儲開銷,又保障了共享過程的安全性和可追溯性。此外,BRDABE 的數據共享者的存儲開銷是恒定的。然而,EDAC-MCSS 方案中數據共享者的存儲開銷取決于屬性權威的總數和AAk管理的屬性數。當公鑰數過多或存儲出現冗余時,EDAC-MCSS 方案的存儲開銷高于BRDABE。

表1 不同方案的存儲開銷對比Tab.1 Storage overhead comparison of different schemes
5 種方案的計算開銷如表2 所示。其中:p為雙線性映射e上的1 次配對操作;E為群上的1 次冪乘運算;m為1 次乘法運算;N和n為方案中屬性權威和用戶的總數;R為撤銷屬性的個數;AE為訪問控制策略中的屬性個數。與DABE 和BDABE 相比,BRDABE 實現了用戶屬性撤銷的前向和后向安全性。在加密部分,BRDABE 比DABE 少1 次冪乘運算,比BDABE 少了2 次冪乘運算,多了1 次雙線對運算,增加的計算開銷在可接受范圍內;解密部分,BRDABE 的計算開銷低于DABE 和BDABE,用戶僅需執行1 次冪乘和乘法運算。BRDABE 采用外包解密,云服務器生成轉換密文發送給用戶,減小了用戶的計算開銷。屬性撤銷時,AA 生成密鑰和密文更新鑰,DO 和DR 并發更新,針對1 個撤銷屬性,DR 更新密鑰的計算量為1 次乘法運算,DO 執行密文更新的計算量為1 次乘法運算,計算量低于EDAC-MCSS 和SEM-ACSIT。

表2 不同方案的計算開銷對比Tab.2 Computating overhead comparison of different schemes
4.3.3 BRDABE實驗結果和相關工作性能比較
表3 是AA 數保持為2,AA 管理的屬性數改變時,不同方案密鑰生成時間對比。相較于BDABE,本文方案的密鑰生成時間縮短了47.46%~54.35%。主要因為在合數階群上本文方案比BDABE 少執行2 次冪乘運算。當屬性數較大時,BRDABE 比DABE 的密鑰生成時間更長,但可以接受。

表3 不同方案的密鑰生成時間對比Tab.3 Comparison of key generation time of different schemes
在加密實驗中,本文對256 b 的會話密鑰進行了加密測試,結果如表4 所示。相較于DABE,本文方案的加密時間縮短了0.73%~2.28%。主要原因是,本文方案相較于DABE 少了1 次冪乘運算,因此時間開銷低于DABE。此外,在數據共享的前,DO 可以利用高性能計算機提前對加密操作預處理,因此,鏈下執行的加密操作不會增加數據共享的時間。

表4 不同方案的加密時間對比Tab.4 Comparison of encryption time of different schemes
在解密實驗中,本文對256 b 的會話密鑰進行了解密測試,結果如表5 所示。解密時間隨著訪問控制策略中的屬性個數的增加而增加,相較于BDABE 和DABE 方案,本文方案數據解密時間分別縮短了61.67%~65.98% 和94.06%~94.75%。本文方案將解密的大量運算交給高性能云服務器處理,然后將解密后的轉換密文發給用戶,用戶只需要執行1 次冪乘運算和1 次乘法運算即可解密獲取數據,這減少了用戶的計算開銷,更適合計算力較低的物聯網設備。

表5 不同方案的解密時間對比Tab.5 Comparison of decryption time of different schemes
在屬性撤銷實驗中,本文分別對密文更新和密鑰更新進行了測試,如表6 所示。相較于EDAC-MCSS 方案和SEMACSIT 方案,本方案屬性撤銷時間縮短了92.19%~92.27%和92.49%~93.49%。主要原因是,密鑰更新時本文方案的用戶只需執行1 次乘法運算,EDAC-MCSS 需多執行1 次冪乘運算,SEM-ACSIT 需多執行2 次冪乘運算。密文更新時,針對每個撤銷屬性,DO 只需執行1 次乘法運算,而EDAC-MCSS和SEM-ACSIT 需多執行1 次冪乘運算??傊?,本方案的撤銷耗時較少,適合多撤銷場景下的數據共享。

表6 不同方案的屬性撤銷時間對比Tab.6 Comparison of attribute revocation time of different schemes
4.3.4 區塊鏈和BRDABE各階段的實驗結果
結合區塊鏈和上述核心算法的實驗結果,本文對BRDABE 方案的系統初始化、屬性權威初始化、用戶注冊、數據加密、數據解密和屬性撤銷階段進行了全面的實驗評估。本文假設以下場景:有三個屬性權威,AA1管理屬性集{工作單位},AA2管理屬性集{職稱},AA3管理屬性集{部門}。DR1和DR2分別是A 公司的信息部經理和銷售部經理,因工作要求需要獲取公司一季度的能源消耗數據M1,公司使用本文提出的數據共享方案控制數據的訪問。在系統部署時,GP記錄在創世區塊中,方便共享過程的驗證,存儲開銷為5 KB,BatchTimeout 設置為60 s,因此創世區塊的生成耗時為60 s。屬性權威執行AASetup 算法,生成屬性公鑰并記錄到列表LAA-att中,耗時約為1 360 ms,存儲數據為{{工作單位},{職稱},{部門}},存儲開銷約為1.6 KB。
DR1和DR2在進行注冊時,SM 對它們的身份進行驗證,AA1、AA2和AA3并發執行BRDABE 密鑰生成算法,為DR1和DR2生成屬性私鑰集{A 公司,信息部,經理}和{A 公司,銷售部,經理},耗時約為2 510 ms。AA1、AA2和AA3將密鑰生成過程作為交易,記錄在區塊鏈的用戶列表LDR-Att中,存儲數據為{DR1,GPK1,{A 公司,信息部,經理},{KSK1}}和{DR2,GPK2,{A 公司,銷售部,經理},{KSK2}},存儲開銷為2.6 KB,耗時33 ms。其中,GPK1和GPK2分別是DR1和DR2的全局公鑰,{KSK1}和{KSK2}是DR1和DR2的屬性私鑰密文。
DO1設定能源消耗數據M1的訪問控制策略為{A 公司∧(銷售部∨信息部)∧總經理},M2的訪問控制策略為{A 公司∧(銷售部∨信息部)}。DO1執行BRDABE 加密算法,生成數據密文和密鑰密文,并上傳到云服務器,加密耗時為5 600 ms,由于數據加密過程可預先處理,該過程不會增加共享時間。DO1通過智能合約將M1和M2的描述信息發布到區塊鏈中,描述信息為{{KSx},A(A,ρ)x,tvalid,{PKk,i|i∈Sk},x=1,2,…,m},存儲開銷約為2.5 KB,耗時約為53 ms。其中,{KSx}是描述數據Mx的關鍵字集合,A(A,ρ)x是訪問控制策略,tvalid是數據生成日期,{PKk,i|i∈Sk}是屬性公鑰的集合。
DR1和DR2調用共享合約中的策略匹配算法,對其屬性集進行策略匹配,由于DR1和DR2滿足M1和M2的訪問控制策略,將DR1和DR2的身份加入M1和M2的訪問控制列表Ldata1和Ldata2中,耗時約為45 ms。DR1和DR2獲取IoT 數據密文和會話密鑰密文后,執行BRDABE 解密算法,ECS 外包解密耗時約為121 ms,DR 解密數據密文耗時約為26 ms,解密總耗時約為147 ms。DO1將M1和M2獲取過程作為一條交易存儲在共享列表Ldata中,存儲數據為{DO1,M1,{DR1,DR2},CServer1}和{DO1,M2,{DR1,DR2},CServer1},存儲開銷為2.8 KB。其中,CServer1是外包計算的云服務器。
當AA2撤銷DR1的“經理”屬性時,AA2首先調用ARC 中的策略匹配函數,篩選DR1屬性集不再滿足訪問控制策略的密文,即為KCT1,耗時21.5 ms。KCT1由DO1存儲管理,因此DO1需要鏈下更新會話密鑰密文KCT1。AA2遍歷共享列表Ldata1,篩選滿足M1訪問控制策略的用戶,得到列表{DR2},耗時21.5 ms,該列表中的用戶需要更新其屬性私鑰。AA2執行屬性撤銷算法,輸入KCT1和{DR2}生成CUK和{KUK2},耗時1 023 ms,AA2在撤銷列表LR-Att中新增撤銷記錄:{AA2,DR1,“經理”,KCT1,{DO1},{DR2},{KUK2},2022-11-13},存儲開銷為3.8 KB,耗時38 ms。AA2通過安全信道將CUK發送給DO1,DO1利用CUK鏈下更新與撤銷屬性相關的部分會話密鑰密文。KUK2記錄在撤銷列表中,擁有“經理”屬性的未撤銷用戶DR2執行撤銷合約獲?。鸎UK2},耗時33 ms,然后更新其屬性私鑰,由于密文更新和密鑰更新可以并發執行,而密文更新時間為2.1 ms,密鑰更新時間為1.9 ms,因此,鏈下密文和密鑰更新的時間開銷為2.1 ms。
總之,在該場景下,DR 從注冊申請屬性私鑰到解密獲取IoT 原始數據總耗時約為2 710 ms。當撤銷DR1的“經理”屬性時,鏈上耗時約為114 ms,鏈下耗時約為1 025.1 ms,撤銷總耗時約為1 139.1 ms。在存儲開銷方面,一個區塊中存儲10 條數據共享/撤銷交易記錄,通過Hyperledger Explorer Web應用程序可以查看區塊的大小為45 KB。在EDAC-MCSS 和SEM-ACSIT 方案中,撤銷屬性時存在如下問題:DO 和DR 篩選復雜;CUK和KUK傳輸過程中易被篡改而且無法追溯,復雜場景下通信開銷較大。本文利用區塊鏈可以解決上述問題,利用鏈上鏈下相結合的方式實現物聯網數據的細粒度安全共享,將屬性密鑰生成、更新、撤銷和數據共享過程記錄在區塊鏈上,雖然存儲開銷增加了,但在保障前向、后向安全性的前提下,使得任何撤銷記錄公開透明、可追溯和不可篡改,更適合復雜分布式物聯網環境下的數據共享。
針對傳統屬性基加密機制存在屬性撤銷安全性難以保障,用戶屬性密鑰的生成、分發和撤銷難以協調,無法將它應用到實際的物聯網場景中等問題。本文提出一種基于區塊鏈可撤銷的去中心化屬性基加密(BRDABE)方案,利用共識驅動的區塊鏈構架,將密鑰分發的信任問題從屬性權威映射到分布式賬本上,利用智能合約協助屬性權威實現對用戶屬性的撤銷。安全性證明和效率分析表明,本文方案不僅提高了屬性撤銷的效率,而且保障了共享數據的前向和后向安全性。本文的下一步研究方向是,進一步提高該BRDABE 方案的屬性撤銷效率,并將它應用到物聯網數據共享場景中。