馬海英,李金舟,楊及坤
(南通大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南通 226019)
屬性基加密(Attribute-Based Encryption,ABE)作為一種能有效地對外包數(shù)據(jù)實現(xiàn)細粒度訪問控制的密碼學(xué)原語,具有良好的應(yīng)用前景,已成為近年來國內(nèi)外學(xué)者的研究熱點[1-4]。在密文策略的ABE(Ciphertext Policy Attribute-Based Encryption,CP-ABE)方案中,加密者為數(shù)據(jù)制定訪問控制策略,并將該策略嵌入密文中,只有滿足訪問控制策略的用戶才能成功解密。CP-ABE 更適合在不可信環(huán)境下進行數(shù)據(jù)安全共享。在現(xiàn)實物聯(lián)網(wǎng)(Internet of Things,IoT)場景中,用戶屬性常常動態(tài)變化,訪問數(shù)據(jù)的權(quán)限需要不斷調(diào)整。因此,如何構(gòu)造高效可撤銷用戶屬性的CP-ABE 方案至關(guān)重要。
為了實現(xiàn)用戶屬性的撤銷,Yang 等[5]通過更新相關(guān)密文和密鑰,提出一種高效撤銷用戶屬性的多權(quán)威CP-ABE 方案,并應(yīng)用于云存儲的訪問控制系統(tǒng)。但Hong 等[6]針對Yang 等[5]的多權(quán)威CP-ABE 方案,證明一個撤銷的用戶依然能成功解密更新后的密文,因此該可撤銷屬性的多權(quán)威CPABE 方案不滿足后向安全性。Xiong 等[7]提出一種可撤銷的多權(quán)威屬性基加密方案,該方案需要利用一個完全可信的屬性權(quán)威管理模塊提供云存儲的訪問控制功能,很難應(yīng)用到不可信的物聯(lián)網(wǎng)場景中,拓展性有待進一步完善。
由于屬性撤銷的計算開銷較大,Deng 等[8]利用可外包解密的ABE 方案[9]構(gòu)造一個可撤銷用戶的屬性基數(shù)據(jù)存儲方案,但用戶屬性密鑰的生成和分發(fā)難以協(xié)調(diào),且密鑰管理過程不透明。Ming 等[10]提出了一種高效可撤銷的云存儲加密方案,通過在屬性中添加版本密鑰,實現(xiàn)用戶屬性的撤銷。Ge 等[11]提出一種可撤銷的屬性基數(shù)據(jù)存儲方案,使被撤銷的移動設(shè)備無法訪問任何文件。Ali 等[12]提出一種輕量級的可撤銷分層ABE 方案,使用分層模型提供了靈活和可擴展的用戶撤銷機制。然而上述方案的安全性完全依賴于可信的密鑰生成中心,且存在屬性撤銷效率低、用戶屬性密鑰難協(xié)調(diào)、屬性密鑰管理不透明等問題,難以保障系統(tǒng)安全性。
區(qū)塊鏈[13]作為一種新型的去中心化協(xié)議,能在不可信的環(huán)境中建立節(jié)點之間的信任,為解決ABE 中屬性密鑰的高效撤銷提供了一種有效解決方法。Xu 等[14]提出一種基于區(qū)塊鏈的移動網(wǎng)絡(luò)身份管理和認證方案,用戶自己控制共享數(shù)據(jù)的訪問權(quán)限,靈活度高。Luo 等[15]提出一種基于區(qū)塊鏈同態(tài)加密的聚合方案,使用粒子群優(yōu)化算法和智能合約進行自動調(diào)度,確保數(shù)據(jù)的有效共享。Sun 等[16]利用區(qū)塊鏈技術(shù)設(shè)計了一種防篡改的車聯(lián)網(wǎng)數(shù)據(jù)共享方案,用戶使用一個授權(quán)聚合密鑰能高效地訪問車聯(lián)網(wǎng)數(shù)據(jù)。Huang 等[17]提出一種基于區(qū)塊鏈的隱私保護醫(yī)療數(shù)據(jù)共享方案,使用代理重新加密和零知識證明技術(shù),提高了數(shù)據(jù)共享的安全性。Ma 等[18]提出一種基于區(qū)塊鏈數(shù)據(jù)眾籌的細粒度授權(quán)機制,數(shù)據(jù)所有者負責(zé)頒發(fā)屬性私鑰和加密數(shù)據(jù),但可能成為系統(tǒng)的瓶頸。由此可見,區(qū)塊鏈輔助數(shù)據(jù)共享和數(shù)據(jù)交易在各個領(lǐng)域得到了廣泛研究,但文獻[14-18]中的方案在數(shù)據(jù)共享過程中,無法保證前向和后向安全性。
為了提高用戶屬性撤銷的效率,本文將區(qū)塊鏈和多權(quán)威的CP-ABE 相結(jié)合,提出一種新的基于區(qū)塊鏈可撤銷屬性的去中心化屬性基加密(Blockchain-based Decentralized Attribute-Based Encryption for Revocable attribute,BRDABE)方案。利用共識驅(qū)動的區(qū)塊鏈構(gòu)架,將密鑰分發(fā)的信任問題從屬性權(quán)威映射到分布式賬本上,利用智能合約協(xié)助屬性權(quán)威實現(xiàn)對用戶屬性的撤銷。當(dāng)撤銷用戶屬性時,屬性權(quán)威利用智能合約記錄撤銷用戶的屬性狀態(tài),生成與撤銷屬性相關(guān)的密文更新鑰和密鑰更新鑰,通過安全信道將密文更新鑰發(fā)送給數(shù)據(jù)擁有者,將密鑰更新鑰發(fā)布在區(qū)塊鏈上。未撤銷用戶利用密鑰更新鑰更新他的屬性私鑰,數(shù)據(jù)擁有者更新與撤銷屬性相關(guān)的密鑰密文。通過安全性證明和效率分析,本文方案不僅提高了屬性撤銷的效率,而且保障了共享數(shù)據(jù)的前向和后向安全性。
設(shè)G(λ) →(N=p1p2p3,G0,G,e) 表示雙線性群生成算法,λ為系統(tǒng)安全參數(shù),輸出結(jié)果(N=p1p2p3,G0,G,e)用來描述雙線性群。G0、G是階為N=p1p2p3的乘法循環(huán)群,其中p1、p2、p3為三個不同的大素數(shù),Gi是群G0的階為pi的子群,i=1,2,3。G0到G的雙線性映射e:G0×G0→G滿足以下性質(zhì)[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。
假設(shè)P是n個實體的集合,P={p1,p2,…,pn}。訪問控制結(jié)構(gòu)A[5]是P的非空子集合,如果集合A是單調(diào)的,對于任意集合X和Y,如果X∈A,且X?Y,則Y?A。單調(diào)的訪問控制結(jié)構(gòu)意味著A是單調(diào)的,如果集合Z包含訪問控制結(jié)構(gòu)A中的元素,Z為授權(quán)集合;否則Z為非授權(quán)集合。
BRDABE 方案基于多權(quán)威 DABE(Decentralizing Attribute-Based Encryption)[1]進行構(gòu)造,該方案中沒有中央權(quán)威機構(gòu),滿足去中心化,DABE 的形式化定義如下:
1)系統(tǒng)初始化算法:Global Setup(λ)→(GP)。系統(tǒng)管理員執(zhí)行系統(tǒng)初始化算法,輸入安全參數(shù)λ,輸出全局公共參數(shù)GP。
2)屬性權(quán)威初始化算法:Authority Setup(GP,S)→(PK,SK)。屬性權(quán)威執(zhí)行初始化算法,輸入全局公共參數(shù)GP和用戶屬性集合S,輸出公私鑰對(PK,SK)。
3)加密算法:Encrypt(M,A(A,ρ),GP,{PK})→CT。數(shù)據(jù)擁有者執(zhí)行加密算法,輸入共享數(shù)據(jù)M,訪問控制策略A(A,ρ)(A是一個n×l矩陣),系統(tǒng)公共參數(shù)GP,屬性公鑰集{PK},輸出數(shù)據(jù)密文CT。
4)屬性私鑰生成算法:KeyGen(GID,i,SK,GP)→Ki,GID。屬性權(quán)威執(zhí)行屬性私鑰生成算法。輸入用戶全局身份GID,屬性權(quán)威管理的屬性i和該屬性權(quán)威的私鑰SK,輸出屬性私鑰Ki,GID。
5)解密算法:Decrypt(CT,{Ki,GID},GP)→M/⊥。數(shù)據(jù)申請者執(zhí)行解密算法,輸入密文CT,屬性私鑰集{Ki,GID},系統(tǒng)公共參數(shù)GP,若滿足訪問控制策略A(A,ρ),則輸出M;否則輸出⊥。
區(qū)塊鏈集成了分布式數(shù)據(jù)存儲、對等網(wǎng)絡(luò)、密碼算法和共識機制等技術(shù),能將時序的交易數(shù)據(jù)以單向鏈表的區(qū)塊結(jié)構(gòu)形式存儲在分布式數(shù)據(jù)庫賬本中,具有去中心化、公開透明、不可篡改、安全可信、可追溯等特點。在多利益主體參與的場景下,通過區(qū)塊鏈構(gòu)建去中心化的共享平臺,并利用對等網(wǎng)絡(luò)進行節(jié)點間的數(shù)據(jù)傳輸,采用帶時間戳的鏈式區(qū)塊結(jié)構(gòu)存儲共享數(shù)據(jù),能增強可驗證性和可追溯性;采用數(shù)字簽名技術(shù)可保障數(shù)據(jù)的不可篡改性,同時實現(xiàn)問責(zé)制度[18]。因此,區(qū)塊鏈能在不可信的環(huán)境中建立節(jié)點間的信任,是保障分布式物聯(lián)網(wǎng)場景中數(shù)據(jù)安全共享的潛在解決方案。
智能合約在區(qū)塊鏈平臺得到了廣泛應(yīng)用,能利用智能合約提高區(qū)塊鏈的去中心化、公開透明、不可篡改等特性,更適用于實現(xiàn)復(fù)雜完備的業(yè)務(wù)邏輯。BRDABE 方案的智能合約在Hyperledger Fabric 中部署測試,運行環(huán)境是docker 容器,在滿足觸發(fā)條件的情況下,智能合約將自動執(zhí)行一些預(yù)定義的功能,然后生成交易或調(diào)用其他智能合約。本文利用智能合約記錄用戶屬性和數(shù)據(jù)共享的狀態(tài),協(xié)助屬性權(quán)威實現(xiàn)用戶屬性的撤銷。
BRDABE 的模型結(jié)構(gòu)如圖1 所示,共包含以下6 個實體:
圖1 模型的結(jié)構(gòu)Fig.1 Structure of model
1)系統(tǒng)管理員(System Manager,SM):創(chuàng)建區(qū)塊鏈,構(gòu)建數(shù)據(jù)共享平臺。當(dāng)數(shù)據(jù)擁有者(Data Owner,DO)、數(shù)據(jù)申請者(Data Requester,DR)和屬性權(quán)威(Attribute Authority,AA)向系統(tǒng)發(fā)起注冊時,SM 驗證身份,為合法用戶分配公私鑰對和區(qū)塊鏈上的錢包地址,該錢包地址可標(biāo)識用戶的唯一身份。SM 生成系統(tǒng)全局公共參數(shù)GP 并將它記錄到創(chuàng)世區(qū)塊中。
2)區(qū)塊鏈B(Blockchain):記錄系統(tǒng)中數(shù)據(jù)共享的過程和細粒度授權(quán)過程的分布式賬本。區(qū)塊鏈記錄著DR 及其屬性集合之間的映射關(guān)系,并且發(fā)布用戶屬性狀態(tài)的變化、共享數(shù)據(jù)的描述信息,從而保障了數(shù)據(jù)共享的安全性、不可篡改性和可審計。區(qū)塊鏈利用智能合約輔助實現(xiàn)用戶的屬性撤銷,DO 只需更新部分密文,未撤銷DR 更新相應(yīng)的密鑰,減小了屬性撤銷的計算開銷。此外,數(shù)據(jù)密文和會話鑰密文存放在云服務(wù)器中,僅將這些密文的存儲地址存放到區(qū)塊鏈的交易中,這種存儲模式不僅可以減小區(qū)塊鏈的存儲開銷,還可以提高區(qū)塊鏈系統(tǒng)的吞吐量。
3)屬性權(quán)威(AA):每個AA 彼此相互獨立,審核數(shù)據(jù)申請者(DR)的身份,并且根據(jù)它管理的一組屬性為DR 生成相應(yīng)的屬性私鑰。當(dāng)DR 的屬性撤銷時,負責(zé)管理該屬性的AA執(zhí)行屬性撤銷合約,更新DR 當(dāng)前的屬性狀態(tài),將該過程作為一條交易記錄到區(qū)塊鏈上。為了防止AA 和DR 之間的串謀攻擊,本文方案從擁有數(shù)據(jù)量較多的DO 中選出屬性權(quán)威,這意味著AA 與DR 之間進行合謀攻擊,將會威脅自身的經(jīng)濟利益,從而確保了數(shù)據(jù)共享的安全性。此外,擁有數(shù)據(jù)量較大的DO 通常是行業(yè)可信度高的企業(yè)或政府部門,例如三甲醫(yī)院、公安部門等,它們成為屬性權(quán)威能誠實可靠地審核DR 的屬性和身份信息,與數(shù)據(jù)量小的DO 相比,有更高的可信度和更高質(zhì)量的數(shù)據(jù)。
4)數(shù)據(jù)擁有者(DO):根據(jù)物聯(lián)網(wǎng)數(shù)據(jù)特征,制定相應(yīng)的訪問控制策略。每個DO 首先選取一個會話密鑰κ來加密數(shù)據(jù),利用AES(Advanced Encryption Standard)對稱加密算法計算生成數(shù)據(jù)密文DCT;然后,利用訪問控制策略對會話密鑰執(zhí)行BRDABE 屬性加密算法,生成會話密鑰密文KCT;當(dāng)AA撤銷DR 的屬性時,DO 利用AA 發(fā)送的密文更新鑰,計算與撤銷屬性相關(guān)的密文,生成更新后的密鑰密文。
5)數(shù)據(jù)申請者(DR):每個DRj根據(jù)自身需求在系統(tǒng)中檢索共享的物聯(lián)網(wǎng)數(shù)據(jù),DRj通過關(guān)鍵字檢索共享數(shù)據(jù)的描述信息找到合適的數(shù)據(jù)。DRj調(diào)用策略匹配函數(shù)PolicyM(?)對自身當(dāng)前的屬性集進行策略匹配,若滿足該共享數(shù)據(jù)的訪問控制策略,DRj下載并解密密文。
6)云服務(wù)器(Elastic Cloud Server,ECS):ECS 是半可信實體,用于存儲物聯(lián)網(wǎng)(IoT)數(shù)據(jù)密文和會話密鑰密文。由于區(qū)塊鏈不適合存儲數(shù)據(jù)量較大的數(shù)據(jù),當(dāng)DO 將會話密鑰密文和數(shù)據(jù)密文上傳到ECS 時,會獲取一個哈希字符串(URL),該字符串即文件存放位置。當(dāng)DR 解密數(shù)據(jù)時,DR將屬性私鑰集合發(fā)送給云服務(wù)器,云服務(wù)器利用轉(zhuǎn)換密鑰解密密鑰密文,生成轉(zhuǎn)換密文,發(fā)送給DR。
BRDABE 由11 個算法組成,它們的形式化定義如下:
1)SMSetup(λ)→{GP,(sk0,pk0)}。SM 執(zhí)行系統(tǒng)初始化算法,輸入為安全參數(shù)λ,輸出為系統(tǒng)參數(shù)GP和公私鑰對(sk0,pk0)。
2)AAReg(InfoAA)→{aid}。SM 執(zhí)行屬性權(quán)威注冊算法,輸入為屬性權(quán)威的信息集合InfoAA,輸出為屬性權(quán)威的錢包地址aid。
4)UserReg(GP,pk0,Infouid)→{uid,(pkuid,skuid),Cer(tuid)}。SM 執(zhí)行用戶注冊算法,輸入為系統(tǒng)參數(shù)GP,系統(tǒng)管理員SM 的公鑰pk0,用戶的身份信息Infouid。系統(tǒng)首先驗證用戶的身份,并為合法用戶頒發(fā)全局唯一的身份uid。算法的輸出為用戶身份uid,一對全局公私鑰對(pkuid,skuid)和驗證證書Cer(tuid)。
7)PDCTGen(KCT,dfuid,pkuid,{askaid,uid,i|k∈SA,i∈Said})→CTc。服務(wù)器執(zhí)行預(yù)解密算法,輸入為解密因子dfuid,密鑰密文KCT,用戶公鑰pkuid和密鑰集合{askaid,uid,i|k∈SA,i∈Said}。當(dāng)用戶uid擁有的屬性滿足訪問控制策略時,服務(wù)器運行該算法生成正確的轉(zhuǎn)換密文CTc。
8)Decryp(tCTc,skuid)→κ。DR 執(zhí)行解密算法,輸入為轉(zhuǎn)換密文CTc,用戶私鑰skuid,輸出為會話密鑰κ。
9)UKeyBase(SKaid,{pkuid},VKaid,i)→(KUKuid,i,CUKi),其中,uid∈Uaid。AA 執(zhí)行更新鑰生成算法,輸入為私鑰SKaid,當(dāng)前的屬性版本鑰VKaid,i,以及所有未撤銷用戶的全局公鑰集合,輸出為用戶的密鑰更新鑰KUKuid,i和密文更新鑰CUKi。
10)SKUpdate(askaid,uid,i,KUKuid,i)→。未撤銷屬性的DR 執(zhí)行密鑰更新算法,輸入為當(dāng)前的密鑰askaid,uid,i,以及密鑰對應(yīng)的密鑰更新鑰KUKuid,i,輸出為更新后的屬性私鑰
11)KCTUpdate(κ′,KCT,CUKμ)→KCTUPD。DO 執(zhí)行密鑰密文更新算法,輸入為會話密鑰κ?、當(dāng)前的密鑰密文KCT和密文更新鑰CUKμ,輸出為更新后的密鑰密文KCTUPD。
定義2 BRDABE 的安全性。若σ?=σ,則攻擊者贏得游戲,否則挑戰(zhàn)者贏得游戲。此游戲中攻擊者贏得這個游戲的優(yōu)勢為如果任意多項式時間內(nèi),攻擊者贏得上述游戲的優(yōu)勢都是可以忽略的,則稱BRDABE 方案是適應(yīng)性安全的。
BRDABE 方案主要包括七個階段:系統(tǒng)初始化、屬性權(quán)威初始化、用戶注冊、用戶屬性私鑰生成、數(shù)據(jù)加密、數(shù)據(jù)解密和屬性撤銷。
系統(tǒng)管理員SM 執(zhí)行算法SMSetup(λ)→(GP,(sk0,pk0)),輸入安全參數(shù)λ,選擇一個階數(shù)為N=p1p2p3的雙線性群G,其中p1、p2、p3是三個不相同的大素數(shù)。然后SM 構(gòu)建聯(lián)盟鏈,為SM 自己選擇唯一身份idSM。SM 選擇雙線性映射e:G×G→GT,令Gi是循環(huán)群G的pi階子群,隨機選擇一個生成元g∈G1,選擇一個hash 函數(shù)H:{0,1}*→G,該函數(shù)可以將屬性映射到群G中的元素,得到系統(tǒng)公共參數(shù):
最后,SM 為自己生成一對公私鑰(sk0,pk0),將公鑰pk0和系統(tǒng)的全局公共參數(shù)GP記錄到創(chuàng)世區(qū)塊中,便于用戶從區(qū)塊鏈中獲取全局公共參數(shù)GP和系統(tǒng)管理員公鑰pk0。
每個屬性權(quán)威AA 向SM 申請屬性管理權(quán)限,SM 為合法的AA 生成一個錢包地址aid并授予AA 相關(guān)的屬性域管理權(quán)限,其中錢包地址aid用于標(biāo)識屬性權(quán)威的唯一身份。身份為aid的AA 執(zhí)行算法AASetup(GP,aid,{i|i∈Said})→(PKaid,SKaid,{PKaid,i,VKaid,i|i∈Said}),其中,Said是AAaid管理的屬性集合。假定身份為k的屬性權(quán)威AAk管轄的屬性域是Sk,AAk從創(chuàng)世區(qū)塊中讀取全局公共參數(shù)GP和系統(tǒng)管理員公鑰pk0,隨機選取βk∈ZN作為AAk的私鑰,即SKk={βk}。此外,AAk選擇隨機數(shù)vk,i作為屬性i的版本私鑰VKk,i=vk,i,得到屬性版本私鑰集合{VKk,i=vk,i,vk,i∈ZN}。對于每個屬性i∈Sk,AAk計算第i個屬性公鑰:
AAk得到所管轄的屬性公鑰集:
然后AAk計算它對應(yīng)的授權(quán)公鑰:
最后,系統(tǒng)管理員將AAk中每個屬性i對應(yīng)的一組屬性公 鑰{PKk,i|i∈Sk}和一組哈希值{H(i) |i∈Sk}與授權(quán)公鑰PKk記錄到列表LAA-att中,該列表會記錄在區(qū)塊鏈上。其他屬性權(quán)威以相同的方式進行注冊驗證并獲取屬性私鑰分發(fā)的權(quán)限。
SM 執(zhí)行用戶注冊算法UserReg(GP,pk0,Infouid)→{uid,(pkuid,skuid),Cer(tuid)}。用戶DR 向SM 申請注冊,提交身份描述信息InfoDR(如姓名、郵箱等),SM 驗證用戶的InfoDR,為該用戶選擇一個錢包地址uid,該錢包地址用于標(biāo)識用戶的唯一身份。根據(jù)用戶的錢包地址uid,SM 隨機選擇uuid,zuid∈,計算該用戶的公鑰,用戶私鑰sk=z。然后,SMuiduid利用私鑰sk0為用戶計算數(shù)字簽名,生成該用戶的數(shù)字證書Cert(uid)。SM 將全局公私鑰對(pkuid,skuid)和Cer(tuid)通過秘密信道發(fā)送給用戶,并將用戶的pkuid記錄在區(qū)塊鏈上。
假定第j個數(shù)據(jù)申請者DRj向第k個屬性權(quán)威AAk申請屬性私鑰,Uk是AAk域內(nèi)的用戶集合,SA是屬性權(quán)威集合,j∈Uk,k∈SA,AAk管理的屬性域為Sk,DRj申請的屬性i∈Sk。DRj向AAk申請屬性私鑰,提交Cert(uid),AAk利用pk0驗證該用戶DRj的身份信息,得到。如果用戶身份不合法,密鑰生成請求失敗。對于合法用戶,AAk調(diào)用密鑰生成算法為DRj計算第i個屬性私鑰askk,j,i:
最后,AAk利用RSA(Rivest Shamir Adleman)加密算法Enc(pkj,{askk,j,i})計算得到該用戶屬性私鑰集合的密文該交易記錄到用戶屬性列表LDR-Att中,將列表LDR-Att作為一條交易記錄到區(qū)塊鏈上,同時記錄下該條交易的索引TXk,j。數(shù)據(jù)申請者DRj可以根據(jù)交易索引TXk,j從區(qū)塊鏈中獲取屬性私鑰密文,并使用自己的私鑰skj解密密文。此外,LDR-Att中記錄著所有DR 的屬性集合,方便其他用戶進行驗證。以相同的方式,DRj可以從其他屬性權(quán)威獲得所有的屬性私鑰
每個DO 對待共享數(shù)據(jù)M制定訪問控制策略,將訪問控制策略嵌入到待共享數(shù)據(jù)的密文中。DO 首先選擇會話鑰κ,利用AES 對稱加密算法AES.enc(κ,M),得到數(shù)據(jù)密文DCT=AES.enc(κ,M)。然后,DO 為共享數(shù)據(jù)M制定一個訪問控制策略A(A,ρ),其中A是一個n×l矩陣,ρ是一個從集合{1,2,…,n}到屬性集合U的映射。
此外,DO 將密鑰密文KCT上傳到云服務(wù)器中。
在云存儲系統(tǒng)中,任何合法用戶都可以從云服務(wù)器獲取任何感興趣的密文。但是,只有當(dāng)用戶的屬性滿足訪問控制策略,才能解密獲得會話密鑰,并利用會話密鑰進一步獲取共享數(shù)據(jù)。為了減少用戶的計算開銷,將解密過程的計算密集型的雙線性對等復(fù)雜運算外包給云服務(wù)器,得到一個轉(zhuǎn)換密文CTc,用戶僅計算一次冪乘和一次乘法運算,即可得到會話密鑰κ,利用κ解密數(shù)據(jù)密文DCT,獲取物聯(lián)網(wǎng)數(shù)據(jù)。假設(shè)數(shù)據(jù)申請者DRj滿足DO 共享數(shù)據(jù)Mx的訪問控制策略A(A,ρ),DCTx為Mx的數(shù)據(jù)密文,KCTx為Mx的會話密鑰密文,DRj的屬性私鑰集為解密過程如下:
1)生成轉(zhuǎn)換密文。DRj通過關(guān)鍵字檢索物聯(lián)網(wǎng)數(shù)據(jù),然后調(diào)用策略匹配函數(shù),DRj的屬性集滿足Mx的訪問控制策略A(A,ρ),獲取DCTx和KCTx,數(shù)據(jù)獲取過程記錄在共享列表Ldata中。DRj利用KCTx中的C1,i計算解密因子dfj:
DRj通過安全信道將發(fā)送給ECS,ECS 從用戶屬性列表LDR-Att中檢索與DRj相關(guān)的屬性公鑰集{PKk,j},然后計算屬性的公共子集Pj,A={ρ(i),i∈l}∩{PKk,j}。對于集合Pj,A中的這些屬性,ECS 進一步檢查是否存在子集Ic,使得Ic是向量(1,0,…,0)的線性組合。如果不存在,則終止解密。如果存在,ECS 選擇一組常量{ci∈ZN},使得,執(zhí)行算法PDCTGen(KCT,dfj,pkj,,計算得到轉(zhuǎn)換密文CTc:
其中:ωi=Ai?v;λi=Ai?v,v?(1,0,…,0)=s,ω?(1,0,…,0)=0,Ai表示A的第i行。
2)解密數(shù)據(jù)密文。CServer 通過安全信道將CTc發(fā)送給DRj,DRj利用私鑰skj解密CTc,恢復(fù)會話密鑰:
DRj利用κ解密DCTx得到Mx,即Mx=dec(κ,DCTx)。
假設(shè)DRφ的屬性μ被AAk撤銷,撤銷過程如下:
2)DO 更新會話鑰密文。DO 通過安全信道獲取CUKμ,更新與撤銷屬性μ相關(guān)的會話鑰密文KCTx。DO 重新選擇會話鑰κ′,利用AES 對稱加密算法AES.enc(κ′,M)加密數(shù)據(jù),得到DCTUPD,該過程可預(yù)先處理。然后DO 運行算法CTUpdate(κ′,KCT,CUKμ)→KCTUPD,利用CUKμ對KCT進行更新,得到新的會話密鑰密文KCTUPD:
DO 將更新后的KCTUPD重新上傳云服務(wù)器,密文組件CTμ={C0,C3,i}的更新為主要開銷,而DO 在本地可預(yù)先生成C0,所以KCTUPD的主要開銷是更新與撤銷屬性μ相關(guān)聯(lián)的密文C3,i,部分密文組件的更新極大地提高屬性撤銷的效率。通過AAk提供的密文更新鑰,本方案可以保證訪問控制系統(tǒng)的前向安全性,即新加入的用戶如果擁有滿足訪問控制策略的屬性,就能夠解密密文。
3)未撤銷用戶更新屬性私鑰。當(dāng)密鑰密文發(fā)生改變后,滿足該密文訪問控制策略的未撤銷授權(quán)DR 需要更新其屬性μ的私鑰。AAk在列表LDR-Att中記錄更新屬性μ私鑰的用戶列表{listDR},AAk通知{listDR}中的每個用戶更新屬性μ私鑰。每一個擁有屬性μ的未撤銷的授權(quán)DRj(j∈SU,j≠φ),通過智能合約獲取密鑰更新鑰KUKj,μ,DRj執(zhí)行算法SKUpdate(askk,j,μ,KUKj,μ)→{ask′k,j,μ},利用KUKj,μ更新屬性私鑰askk,j,μ為中的Kj,μ:
由于DRj的錢包地址uj唯一,這些密鑰更新鑰KUKj,μ對于所有未撤銷的用戶都是不同的。因此,被撤銷的用戶DRφ無法使用其他未被撤銷的用戶的更新密鑰KUKj,μ,更新自己的屬性私鑰,保證了數(shù)據(jù)共享的后向安全性。
4)其他授權(quán)用戶解密新版本密文。授權(quán)用戶DRj(j∈SU,j≠φ)獲取新的密鑰密文KCTUPD和數(shù)據(jù)密文DCTUPD,向ECS 發(fā)送新的密鑰集合,ECS 執(zhí) 行PDCTGen解密得到轉(zhuǎn)換密文CTc,DRj利用私鑰skj解密CTc,恢復(fù)會話密鑰κ′,解密DCTUPD得到共享數(shù)據(jù)Mx。
當(dāng)DRj屬性滿足密鑰密文KCT的訪問策略A(A,ρ),則存在ωx=Ax?ω,λx=Ax?v,v?(1,0,…,0)=s,ω?(1,0,…,0)=0,通過解密算法可得轉(zhuǎn)換密文CTc:
最后,DRj通過會話密鑰κ對密文進行解密以獲得共享數(shù)據(jù)的明文M=AES.dec(κ,DCT)。
定理1 假設(shè)屬性權(quán)威和用戶不會串謀,BRDABE 方案能夠抵抗屬性撤銷用戶的合謀攻擊。
證明 在BRDABE 方案中,假設(shè)屬性權(quán)威和用戶不會串謀,SM 為每個合法用戶生成一個區(qū)塊鏈上的錢包地址uid用于標(biāo)識用戶的唯一身份。每個AA 為數(shù)據(jù)申請者頒發(fā)的屬性私鑰與UID相關(guān)聯(lián)。因此,對于那些不滿足訪問控制策略的數(shù)據(jù)申請者,即便想要合謀解密他們各自無法單獨解密的密文時,也無法解密密文,因為他們沒有相同的屬性私鑰組件。另一方面,假設(shè)存在一個來自合謀用戶的屬性子集,使得,而根據(jù)數(shù)據(jù)申請者的UID不同,他們的身份、公私鑰和屬性私鑰也不同,因此無論合謀用戶怎樣組合都無法解密密文。因此,本方案可以保證數(shù)據(jù)共享的安全性,抵抗非法用戶與其他用戶之間的合謀攻擊。證畢。
定理2 假設(shè)密文和密鑰更新算法可以正確執(zhí)行,當(dāng)撤銷用戶的某一屬性時,BRDABE 方案可以同時保持前向安全性和后向安全性。
證明 在BRDABE 方案中,假設(shè)密文和密鑰更新算法可正確執(zhí)行,當(dāng)用戶DRφ的屬性μ被撤銷時,所有未撤銷的用戶的密鑰和云服務(wù)器中與撤銷屬性相關(guān)的所有密文將被更新,已知密鑰更新鑰和密文更新鑰,密文和密鑰組件更新如下:謀,DRφ仍然無法更新其屬性私鑰,因為密鑰中的可以
即使被撤銷的用戶DRφ可以與一些未被撤銷的用戶合阻止被撤銷的用戶DRφ通過合謀未被撤銷用戶的KUK來更新密鑰。因此,被撤銷用戶DRφ具有舊版本密鑰,無法解密更新后的密文,而更新后的密文只能通過新版本密鑰進行解密,這保證了方案的后向安全性。此外,在BRDABE 方案中,密文更新由DO 實現(xiàn),AAk管理撤銷的屬性,如果云服務(wù)器負責(zé)更新密文,則該機制可以抵抗基于云的共謀攻擊。如果一個新的數(shù)據(jù)申請者屬性能夠滿足嵌入到先前會話密鑰密文中的訪問策略,那么數(shù)據(jù)申請者仍然可以解密密鑰密文,這可以保證本方案滿足前向安全性。綜上,BRDABE 方案可以保證物聯(lián)網(wǎng)數(shù)據(jù)的前向安全性和后向安全性。證畢。
本節(jié)通過仿真實驗對本文提出的方案進行分析與驗證,將BRDABE 方案與現(xiàn)有的方案進行了對比,包括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]。
本文的實驗環(huán)境如下:操作系統(tǒng)為Windows 10,處理器為Intel Core i5-7300,CPU 頻率2.5 GHz,內(nèi)存為16 GB。本文基于虛擬機搭建區(qū)塊鏈系統(tǒng),區(qū)塊鏈環(huán)境為Hyperledger Fabric 2.4,本方案設(shè)計了兩個智能合約:共享合約(Shared Contract,SC)和屬性撤銷合約(Attribute Revocation Contract,ARC),在Hyperledger 環(huán)境下的docker 容器中測試了合約。采用JPBC(Java Pairing Based Cryptography library 1.2.1)加密庫。所有結(jié)果在100 次模擬測試中取平均值。
4.3.1 功能分析
將BRDABE 和相關(guān)方案[1,5,7,19]進行功能對比。DABE[1]和BDABE[19]都不能實現(xiàn)用戶屬性撤銷的后向安全性。Yang等[5]提出了可撤銷用戶屬性的多權(quán)威ABE 方案EDACMCSS;然而Hong 等[6]通過反證法證實EDAC-MCSS 不滿足后向安全性,而且利用云服務(wù)器進行密文更新,無法抵抗共謀攻擊;Xiong 等[7]在EDAC-MCSS 方案的基礎(chǔ)上,提出了一種多權(quán)威可撤銷的屬性基加密(SEM-ACSIT)方案,但該方案中存在完全可信實體AAM(Attribute Authority Management),而在分布式物聯(lián)網(wǎng)場景中很難找到這樣的完全可信實體。因此,上述方案[5,7,19]只滿足較弱的選擇性安全模型,即在系統(tǒng)初始化之前選定撤銷用戶的屬性集,然而,在不可信的IoT環(huán)境中攻擊者能自適應(yīng)地選擇撤銷用戶的屬性集合,所以,這些方案[5,7,19]無法滿足實際IoT 應(yīng)用場景的安全需求。
本文的BRDABE 方案能夠滿足適應(yīng)性用戶屬性撤銷的安全需求,且無須任何可信權(quán)威中心,將用戶屬性撤銷的過程記錄到區(qū)塊鏈的分布式賬本上,通過鏈上鏈下相結(jié)合的方式,對密文和密鑰中的版本鑰組件進行更新,實現(xiàn)了用戶屬性撤銷的前向和后向安全性。
4.3.2 性能分析
將本文方案與SEM-ACSIT 和EDAC-MCSS 方案的存儲開銷進行對比,如表1 所示。其中:nk表示AAk管理的屬性數(shù)量;NA表示云存儲系統(tǒng)中所有屬性權(quán)威的數(shù)量;|G|表示群元素的大小;nk,j表示從AAk分配給用戶j的屬性數(shù);Lu表示訪問列表的長度;tc表示嵌入在密文中的訪問策略中的屬性數(shù)。在SEM-ACSIT 方案中,新引入的AAM 模塊主要存儲所有AA的授權(quán)公鑰和它管理的所有屬性公鑰。雖然利用AAM 存儲公鑰可以在系統(tǒng)級別上減小數(shù)據(jù)共享者的存儲開銷,但是增加了系統(tǒng)的額外開銷。本文的BRDABE 利用區(qū)塊鏈存儲AA的授權(quán)公鑰與它管理的所有屬性公鑰,既減小了數(shù)據(jù)共享者的存儲開銷,又保障了共享過程的安全性和可追溯性。此外,BRDABE 的數(shù)據(jù)共享者的存儲開銷是恒定的。然而,EDAC-MCSS 方案中數(shù)據(jù)共享者的存儲開銷取決于屬性權(quán)威的總數(shù)和AAk管理的屬性數(shù)。當(dāng)公鑰數(shù)過多或存儲出現(xiàn)冗余時,EDAC-MCSS 方案的存儲開銷高于BRDABE。
表1 不同方案的存儲開銷對比Tab.1 Storage overhead comparison of different schemes
5 種方案的計算開銷如表2 所示。其中:p為雙線性映射e上的1 次配對操作;E為群上的1 次冪乘運算;m為1 次乘法運算;N和n為方案中屬性權(quán)威和用戶的總數(shù);R為撤銷屬性的個數(shù);AE為訪問控制策略中的屬性個數(shù)。與DABE 和BDABE 相比,BRDABE 實現(xiàn)了用戶屬性撤銷的前向和后向安全性。在加密部分,BRDABE 比DABE 少1 次冪乘運算,比BDABE 少了2 次冪乘運算,多了1 次雙線對運算,增加的計算開銷在可接受范圍內(nèi);解密部分,BRDABE 的計算開銷低于DABE 和BDABE,用戶僅需執(zhí)行1 次冪乘和乘法運算。BRDABE 采用外包解密,云服務(wù)器生成轉(zhuǎn)換密文發(fā)送給用戶,減小了用戶的計算開銷。屬性撤銷時,AA 生成密鑰和密文更新鑰,DO 和DR 并發(fā)更新,針對1 個撤銷屬性,DR 更新密鑰的計算量為1 次乘法運算,DO 執(zhí)行密文更新的計算量為1 次乘法運算,計算量低于EDAC-MCSS 和SEM-ACSIT。
表2 不同方案的計算開銷對比Tab.2 Computating overhead comparison of different schemes
4.3.3 BRDABE實驗結(jié)果和相關(guān)工作性能比較
表3 是AA 數(shù)保持為2,AA 管理的屬性數(shù)改變時,不同方案密鑰生成時間對比。相較于BDABE,本文方案的密鑰生成時間縮短了47.46%~54.35%。主要因為在合數(shù)階群上本文方案比BDABE 少執(zhí)行2 次冪乘運算。當(dāng)屬性數(shù)較大時,BRDABE 比DABE 的密鑰生成時間更長,但可以接受。
表3 不同方案的密鑰生成時間對比Tab.3 Comparison of key generation time of different schemes
在加密實驗中,本文對256 b 的會話密鑰進行了加密測試,結(jié)果如表4 所示。相較于DABE,本文方案的加密時間縮短了0.73%~2.28%。主要原因是,本文方案相較于DABE 少了1 次冪乘運算,因此時間開銷低于DABE。此外,在數(shù)據(jù)共享的前,DO 可以利用高性能計算機提前對加密操作預(yù)處理,因此,鏈下執(zhí)行的加密操作不會增加數(shù)據(jù)共享的時間。
表4 不同方案的加密時間對比Tab.4 Comparison of encryption time of different schemes
在解密實驗中,本文對256 b 的會話密鑰進行了解密測試,結(jié)果如表5 所示。解密時間隨著訪問控制策略中的屬性個數(shù)的增加而增加,相較于BDABE 和DABE 方案,本文方案數(shù)據(jù)解密時間分別縮短了61.67%~65.98% 和94.06%~94.75%。本文方案將解密的大量運算交給高性能云服務(wù)器處理,然后將解密后的轉(zhuǎn)換密文發(fā)給用戶,用戶只需要執(zhí)行1 次冪乘運算和1 次乘法運算即可解密獲取數(shù)據(jù),這減少了用戶的計算開銷,更適合計算力較低的物聯(lián)網(wǎng)設(shè)備。
表5 不同方案的解密時間對比Tab.5 Comparison of decryption time of different schemes
在屬性撤銷實驗中,本文分別對密文更新和密鑰更新進行了測試,如表6 所示。相較于EDAC-MCSS 方案和SEMACSIT 方案,本方案屬性撤銷時間縮短了92.19%~92.27%和92.49%~93.49%。主要原因是,密鑰更新時本文方案的用戶只需執(zhí)行1 次乘法運算,EDAC-MCSS 需多執(zhí)行1 次冪乘運算,SEM-ACSIT 需多執(zhí)行2 次冪乘運算。密文更新時,針對每個撤銷屬性,DO 只需執(zhí)行1 次乘法運算,而EDAC-MCSS和SEM-ACSIT 需多執(zhí)行1 次冪乘運算??傊?,本方案的撤銷耗時較少,適合多撤銷場景下的數(shù)據(jù)共享。
表6 不同方案的屬性撤銷時間對比Tab.6 Comparison of attribute revocation time of different schemes
4.3.4 區(qū)塊鏈和BRDABE各階段的實驗結(jié)果
結(jié)合區(qū)塊鏈和上述核心算法的實驗結(jié)果,本文對BRDABE 方案的系統(tǒng)初始化、屬性權(quán)威初始化、用戶注冊、數(shù)據(jù)加密、數(shù)據(jù)解密和屬性撤銷階段進行了全面的實驗評估。本文假設(shè)以下場景:有三個屬性權(quán)威,AA1管理屬性集{工作單位},AA2管理屬性集{職稱},AA3管理屬性集{部門}。DR1和DR2分別是A 公司的信息部經(jīng)理和銷售部經(jīng)理,因工作要求需要獲取公司一季度的能源消耗數(shù)據(jù)M1,公司使用本文提出的數(shù)據(jù)共享方案控制數(shù)據(jù)的訪問。在系統(tǒng)部署時,GP記錄在創(chuàng)世區(qū)塊中,方便共享過程的驗證,存儲開銷為5 KB,BatchTimeout 設(shè)置為60 s,因此創(chuàng)世區(qū)塊的生成耗時為60 s。屬性權(quán)威執(zhí)行AASetup 算法,生成屬性公鑰并記錄到列表LAA-att中,耗時約為1 360 ms,存儲數(shù)據(jù)為{{工作單位},{職稱},{部門}},存儲開銷約為1.6 KB。
DR1和DR2在進行注冊時,SM 對它們的身份進行驗證,AA1、AA2和AA3并發(fā)執(zhí)行BRDABE 密鑰生成算法,為DR1和DR2生成屬性私鑰集{A 公司,信息部,經(jīng)理}和{A 公司,銷售部,經(jīng)理},耗時約為2 510 ms。AA1、AA2和AA3將密鑰生成過程作為交易,記錄在區(qū)塊鏈的用戶列表LDR-Att中,存儲數(shù)據(jù)為{DR1,GPK1,{A 公司,信息部,經(jīng)理},{KSK1}}和{DR2,GPK2,{A 公司,銷售部,經(jīng)理},{KSK2}},存儲開銷為2.6 KB,耗時33 ms。其中,GPK1和GPK2分別是DR1和DR2的全局公鑰,{KSK1}和{KSK2}是DR1和DR2的屬性私鑰密文。
DO1設(shè)定能源消耗數(shù)據(jù)M1的訪問控制策略為{A 公司∧(銷售部∨信息部)∧總經(jīng)理},M2的訪問控制策略為{A 公司∧(銷售部∨信息部)}。DO1執(zhí)行BRDABE 加密算法,生成數(shù)據(jù)密文和密鑰密文,并上傳到云服務(wù)器,加密耗時為5 600 ms,由于數(shù)據(jù)加密過程可預(yù)先處理,該過程不會增加共享時間。DO1通過智能合約將M1和M2的描述信息發(fā)布到區(qū)塊鏈中,描述信息為{{KSx},A(A,ρ)x,tvalid,{PKk,i|i∈Sk},x=1,2,…,m},存儲開銷約為2.5 KB,耗時約為53 ms。其中,{KSx}是描述數(shù)據(jù)Mx的關(guān)鍵字集合,A(A,ρ)x是訪問控制策略,tvalid是數(shù)據(jù)生成日期,{PKk,i|i∈Sk}是屬性公鑰的集合。
DR1和DR2調(diào)用共享合約中的策略匹配算法,對其屬性集進行策略匹配,由于DR1和DR2滿足M1和M2的訪問控制策略,將DR1和DR2的身份加入M1和M2的訪問控制列表Ldata1和Ldata2中,耗時約為45 ms。DR1和DR2獲取IoT 數(shù)據(jù)密文和會話密鑰密文后,執(zhí)行BRDABE 解密算法,ECS 外包解密耗時約為121 ms,DR 解密數(shù)據(jù)密文耗時約為26 ms,解密總耗時約為147 ms。DO1將M1和M2獲取過程作為一條交易存儲在共享列表Ldata中,存儲數(shù)據(jù)為{DO1,M1,{DR1,DR2},CServer1}和{DO1,M2,{DR1,DR2},CServer1},存儲開銷為2.8 KB。其中,CServer1是外包計算的云服務(wù)器。
當(dāng)AA2撤銷DR1的“經(jīng)理”屬性時,AA2首先調(diào)用ARC 中的策略匹配函數(shù),篩選DR1屬性集不再滿足訪問控制策略的密文,即為KCT1,耗時21.5 ms。KCT1由DO1存儲管理,因此DO1需要鏈下更新會話密鑰密文KCT1。AA2遍歷共享列表Ldata1,篩選滿足M1訪問控制策略的用戶,得到列表{DR2},耗時21.5 ms,該列表中的用戶需要更新其屬性私鑰。AA2執(zhí)行屬性撤銷算法,輸入KCT1和{DR2}生成CUK和{KUK2},耗時1 023 ms,AA2在撤銷列表LR-Att中新增撤銷記錄:{AA2,DR1,“經(jīng)理”,KCT1,{DO1},{DR2},{KUK2},2022-11-13},存儲開銷為3.8 KB,耗時38 ms。AA2通過安全信道將CUK發(fā)送給DO1,DO1利用CUK鏈下更新與撤銷屬性相關(guān)的部分會話密鑰密文。KUK2記錄在撤銷列表中,擁有“經(jīng)理”屬性的未撤銷用戶DR2執(zhí)行撤銷合約獲?。鸎UK2},耗時33 ms,然后更新其屬性私鑰,由于密文更新和密鑰更新可以并發(fā)執(zhí)行,而密文更新時間為2.1 ms,密鑰更新時間為1.9 ms,因此,鏈下密文和密鑰更新的時間開銷為2.1 ms。
總之,在該場景下,DR 從注冊申請屬性私鑰到解密獲取IoT 原始數(shù)據(jù)總耗時約為2 710 ms。當(dāng)撤銷DR1的“經(jīng)理”屬性時,鏈上耗時約為114 ms,鏈下耗時約為1 025.1 ms,撤銷總耗時約為1 139.1 ms。在存儲開銷方面,一個區(qū)塊中存儲10 條數(shù)據(jù)共享/撤銷交易記錄,通過Hyperledger Explorer Web應(yīng)用程序可以查看區(qū)塊的大小為45 KB。在EDAC-MCSS 和SEM-ACSIT 方案中,撤銷屬性時存在如下問題:DO 和DR 篩選復(fù)雜;CUK和KUK傳輸過程中易被篡改而且無法追溯,復(fù)雜場景下通信開銷較大。本文利用區(qū)塊鏈可以解決上述問題,利用鏈上鏈下相結(jié)合的方式實現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)的細粒度安全共享,將屬性密鑰生成、更新、撤銷和數(shù)據(jù)共享過程記錄在區(qū)塊鏈上,雖然存儲開銷增加了,但在保障前向、后向安全性的前提下,使得任何撤銷記錄公開透明、可追溯和不可篡改,更適合復(fù)雜分布式物聯(lián)網(wǎng)環(huán)境下的數(shù)據(jù)共享。
針對傳統(tǒng)屬性基加密機制存在屬性撤銷安全性難以保障,用戶屬性密鑰的生成、分發(fā)和撤銷難以協(xié)調(diào),無法將它應(yīng)用到實際的物聯(lián)網(wǎng)場景中等問題。本文提出一種基于區(qū)塊鏈可撤銷的去中心化屬性基加密(BRDABE)方案,利用共識驅(qū)動的區(qū)塊鏈構(gòu)架,將密鑰分發(fā)的信任問題從屬性權(quán)威映射到分布式賬本上,利用智能合約協(xié)助屬性權(quán)威實現(xiàn)對用戶屬性的撤銷。安全性證明和效率分析表明,本文方案不僅提高了屬性撤銷的效率,而且保障了共享數(shù)據(jù)的前向和后向安全性。本文的下一步研究方向是,進一步提高該BRDABE 方案的屬性撤銷效率,并將它應(yīng)用到物聯(lián)網(wǎng)數(shù)據(jù)共享場景中。