郭麗峰,王倩麗
(山西大學 計算機與信息技術(shù)學院,山西 太原 030006)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,云計算作為一種新型的網(wǎng)絡(luò)應(yīng)用概念,規(guī)模不斷擴大,很多企業(yè)和政府開始廣泛應(yīng)用云計算,作為云計算中的主要服務(wù)。云存儲備受大眾青睞。在當前的社會生活中,需記錄的信息越來越多,數(shù)據(jù)呈指數(shù)形式甚至呈噴涌式增長,可以存儲大量數(shù)據(jù)的云存儲方式得到了快速的發(fā)展。同時,移動網(wǎng)絡(luò)的蓬勃發(fā)展使得云存儲變得越來越容易,人們可以隨時隨地訪問云存儲系統(tǒng)[1]。因此,大量用戶選擇將資料存放于云存儲系統(tǒng)中,但云服務(wù)商是不完全可信的。雖然用戶可以將信息加密后放在云存儲器上,但加密后的數(shù)據(jù)不利于實現(xiàn)云共享,Sahai和Waters于2005年提出了一對多的屬性基加密方案。隨著云計算的發(fā)展,屬性基加密方案逐漸成為云存儲中最具發(fā)展前景的加密體制。
Sahai和 Waters[2]首次提出屬性基加密(簡稱ABE)的雛形,并實現(xiàn)了數(shù)據(jù)隱私保護和細粒度訪問控制。Goyal等[3]給出了ABE的形式化定義,并給出了密鑰-策略的屬性基加密(KP-ABE),KPABE是用戶密鑰對應(yīng)一個訪問策略、密文對應(yīng)一組屬性。隨后,Bethencourt等人[4]提出了密文-策略屬性基加密(CP-ABE),將訪問策略與密文相關(guān)聯(lián)、屬性與用戶密鑰相關(guān)聯(lián),同時指出該方案可抗合謀攻擊。隨著移動互聯(lián)網(wǎng)和智能終端的快速發(fā)展,使用移動終端訪問云存儲空間成為一種趨勢。但由于移動終端的計算資源和電量的限制,其不能承擔過重的計算負擔。為解決資源限制的問題,相關(guān)學者提出外包ABE方案[5-12]。
為減少解密用戶的本地計算負擔,Green和Hohenberger等[5]首次提出了一種將解密運算外包到服務(wù)器的方法,利用服務(wù)器對密文進行一次轉(zhuǎn)換,從而降低解密用戶的計算量。但沒有驗證解密的正確性。文獻[6]提出了一種新奇的可驗證外包解密方案,該方案的密文長度和訪問策略無關(guān)。但該方案只支持外包解密。文獻[7]提出外包加密,利用MapReduce為用戶指定的訪問結(jié)構(gòu)生成部分密文,同時引進一個比較繁瑣的訪問策略,使它能為任意策略提供外包加密。Hohenberger等人[8]提出了通過預計算降低ABE加密階段的計算量。以上提出的方案都沒有降低密鑰生成階段屬性授權(quán)機構(gòu)的計算負擔。文獻[9]在外包解密的基礎(chǔ)上提出了外包密鑰生成用于降低屬性授權(quán)機構(gòu)的計算量,同時驗證云服務(wù)器計算的正確性,但該方案只提出了外包密鑰生成和外包解密。文獻[10]在外包解密的基礎(chǔ)上通過外包指數(shù)運算實現(xiàn)外包加密算法,同時支持驗證外包計算的正確性,但沒有降低密鑰生成階段屬性授權(quán)機構(gòu)的本地計算量。文獻[11]提出了一種可外包解密的屬性基加密方案,利用雙系統(tǒng)加密技術(shù)證明了方案在標準模型下是完全安全的。但該方案沒有減輕密鑰生成和加密階段的計算負擔。趙志遠等人[12]提出了完全外包的屬性基加密方案,即把密鑰生成、加密和解密階段全部外包到服務(wù)器上,該方案是通過增加一個默認屬性來實現(xiàn)外包密鑰生成和外包加密,完全外包的屬性基加密大大減少屬性權(quán)威機構(gòu)、加密用戶以及解密用戶的本地計算量,但該方案沒有驗證外包計算的正確性。文獻[13]提出了一種適用于霧計算的外包屬性基加密,該方案通過簡化系統(tǒng)參數(shù)降低了用戶和霧節(jié)點的通信開銷,但該方案沒有解決權(quán)威機構(gòu)在密鑰生成階段的計算負擔。
針對以上問題,本文在Waters方案[14]的基礎(chǔ)上提出了一種可驗證的完全外包CP-ABE方案,該方案的主要貢獻如下所示:
1)該方案將ABE的密鑰分發(fā)和解密階段的計算量外包到云服務(wù)器計算,使得權(quán)威機構(gòu)和解密用戶的計算量達到常量級,并由權(quán)威機構(gòu)利用系統(tǒng)主密鑰對外包解密的計算結(jié)果進行正確性驗證;
2)該方案的加密階段通過數(shù)據(jù)擁有者與服務(wù)器進行交互計算完成,使得加密用戶在使用該算法進行加密過程中所進行的計算與訪問結(jié)構(gòu)的大小無關(guān),并在交互過程中完成對外包計算正確性的驗證。
令g是一個算法,該算法以安全參數(shù)λ為輸入,輸出一個元組(p,G,GT,e),其中,G,GT是素數(shù)p階乘法循環(huán)群,且e:G×G→GT是一個雙線性映射,滿足以下條件:
1)雙線性:?g,h∈G和a,b∈Zp,有e(ga,gb)=e(g,g)ab;
2)非退化性:存在g∈G,使得e(g,g)在GT中的階為p;
3)可計算性:對于 ?g,h∈G,可以有效計算e(g,h)。
參與方集合P上的秘密分享方案∏若滿足以下條件,則稱其為Zp上的線性秘密共享方案:
1)∏的所有秘密份額構(gòu)成Zp上的一個向量;
2)存在一個秘密份額生成矩陣Ml×n,對于M上的每一行j=1,…,l,ρ(j)將其映射到每個參與者。考慮向量v=(s,v2,…,vn)T,其中s∈Zp是秘密共享指數(shù),向量v用于隱藏s,Mv是秘密s的l個有效份額形成的向量,其中Mjv是ρ(j)對應(yīng)的份額。
LSSS可以實現(xiàn)線性重構(gòu)。假設(shè)∏是訪問結(jié)構(gòu)A的一個線性秘密共享,令S是一個授權(quán)集,定義為I={i:ρ(i)∈S}。如果 {λi}是秘密s的有效份額,那么可以在多項式時間內(nèi)找到一組常數(shù){ωi∈Zp}i∈I,使得 ∑i∈Iωiλi=s成立。
加密階段的外包計算利用了一個外包模冪算法[10]來實現(xiàn)安全外包加密,這里將該算法縮寫為Exp,即。在Exp中,用戶U能外包模冪運算到一個不可信服務(wù)器S上,在這個過程中,服務(wù)器S不能從輸入輸出中得到任何有價值的信息。
為加速計算,引入Rand子程序[15]用于產(chǎn)生隨機且獨立對(i,gi),其中,i∈Zp且g∈G。有兩種方法產(chǎn)生獨立的(i,gi),一是查表法,即提前產(chǎn)生一個表,其中包括一些隨機獨立對(i,gi)。另一種是利用一種預計算技術(shù),如EBPV生成器[16]。本文采用EBPV生成器技術(shù)實現(xiàn)外包加密功能,具體如下:
1)G是一個階為素數(shù)p的雙線性群且g是G的生成元。任給u1,u2∈G以及a,b∈Zp,算法最后輸出。具體算法過程如下:
2)U運行Rand,產(chǎn)生三對隨機值 (γ1,gγ1),(γ2,gγ2),(β,gβ);
3)U在邏輯上切分將要進行計算的u1,u2,a,b。分割如下:
4)U再次運行 Rand,產(chǎn)生三對隨機值
5)U隨機向服務(wù)器S查詢:
6)最后,U通過計算Q(η,gα2)·Q(ζ,gα1)是否等于gα3,用于驗證S的輸出結(jié)果是否正確。如果上式不成立,U輸出error;否則,U按下式計算即可得到最終結(jié)果:
根據(jù)安全參數(shù)λ選擇一個階為素數(shù)p的乘法循環(huán)群G。隨機選擇a,s∈Zp,g是G的生成元。令gi表 示,給定,敵手A試圖區(qū)分和隨機元素Z∈GT,敵手A的優(yōu)勢定義為
本文提出的可驗證的完全外包的屬性基加密方案的系統(tǒng)模型如圖1所示。本方案共包含8個實體:權(quán)威機構(gòu)(AA),密鑰生成服務(wù)器(KG-CSP1,KG-CSP2),加密服務(wù)器(E-CSP),數(shù)據(jù)擁有者(DO),云存儲服務(wù)器(S-CSP),數(shù)據(jù)使用者(DU),解密服務(wù)器(D-CSP)。其中,權(quán)威機構(gòu)(AA)為整個系統(tǒng)生成公共參數(shù),并借助密鑰生成服務(wù)器(KGCSP1,KG-CSP2)為用戶生成解密密鑰,同時為數(shù)據(jù)使用者驗證解密服務(wù)器的計算正確性;數(shù)據(jù)擁有者(DO)借助加密服務(wù)器(E-CSP)完成對明文消息的加密;云存儲服務(wù)器(S-CSP)用于存儲數(shù)據(jù)擁有者生成的密文;數(shù)據(jù)使用者(DU)借助解密服務(wù)器(D-CSP)完成部分解密;最后,由數(shù)據(jù)使用者執(zhí)行解密操作得到明文消息。
圖1 系統(tǒng)模型圖Fig.1 System model
本文方案在 Waters[14]的素數(shù)階群下的CPABE方案的基礎(chǔ)上,借鑒外包加密算法的思想[10],提出了可驗證的完全外包的屬性基加密方案。
1)Setup(U)→ (pk,msk):該算法由 AA 執(zhí)行,以系統(tǒng)屬性集合U作為輸入,選擇一個階為素數(shù)p的乘法循環(huán)群G,g是G的一個生成元,同時隨機選取h1,…,hU∈G,隨機選取指數(shù)a,α∈Zp,可得公開參數(shù)為:pk=(g,ga,e(g,g)α,h1,…,hU),系統(tǒng)主密鑰為msk=gα。
2)KeyGenKG-CSP(pk,S)→ (ISK1,ISK2):外 包密鑰生成算法由兩個KG-CSP執(zhí)行。其輸入均為公開參數(shù)pk,屬性集合S。如在KG-CSP1上,首先選擇隨機數(shù)α1,t1∈Zp,計算K′=gα1gat1,L′=gt1,從而,得到中間密鑰ISK1=(S,α1,K′,L′,{Kx′}x∈S),同理,可得中間密鑰ISK2=(S,α2,K′′,L′′,{Kx′′}x∈S)。
3)KeyGenAA(pk,msk,ISK1,ISK2)→SK:密鑰生成算法由AA執(zhí)行。算法輸入公開參數(shù)pk,系統(tǒng)主密鑰msk,中間密鑰ISK1,ISK2,計算
其中,α′=α1+α2,t=t1+t2??梢缘玫接脩裘荑€SK=(S,K1,L,{Kx}x∈S,K2),其中K2=gα-α′。
4)Encrypt(pk,msk,(M,ρ),m)→CT:加密算法由DO和E-CSP交互完成。DO在訪問結(jié)構(gòu)(M,ρ)下加密消息m,M是一個l×n的矩陣,函數(shù)ρ是關(guān)聯(lián)矩陣M的每一行到屬性的映射,是一個單射函數(shù)。
DO隨機選取秘密指數(shù)s∈Zp,選取一個隨機向量v=(s,v2,…,vn)T用于共享加密指數(shù)s,計算λi=Miv,i=1,2,…,l,其中Mi是矩陣M的第i行。然后,DO 計算密文,其中,由DO本地計算可得;在E-CSP的幫助下完成,每個Ci的計算為
首先,DO運行Rand算法,得到隨機值(γ1,gγ1),(γ,gγ2),(β,gβ),(α,gα1),(α,gα2),(α,gα3);其次,將2123拆分為
然后,DO以隨機次序向E-CSP進行如下查詢:
接收到E-CSP返回的消息后,DO先計算Q(ζ,gα1)·Q(η,gα2)是否等于gα3來驗證外包計算的
ii正確性。若不成立,輸出error,重新計算;否則,計算
綜上,得到密文
并將密文發(fā)送到S-CSP進行存儲。
5)KeyGenDU(SK,CT)→ (TK,RK,CT′):外 包密鑰生成算法由DU執(zhí)行。DU從S-CSP取得密文,從中解析出C。算法隨機選擇δ∈Zp,計算
DU設(shè)置恢復密鑰RK=δ,轉(zhuǎn)換密鑰及密文,數(shù)據(jù)擁有者將轉(zhuǎn)換密鑰TK和密文CT′發(fā)送給D-CSP,恢復密鑰RK由數(shù)據(jù)使用者自己保存。
6)DecryptD-CSP(TK,CT′)→CTpart:外包解密算法由D-CSP執(zhí)行。該算法輸入轉(zhuǎn)換密鑰TK和處理過的密文CT′。首先判斷數(shù)據(jù)使用者的屬性集合S是否滿足密文中的訪問結(jié)構(gòu)(M,ρ),若不滿足,輸出⊥;否則,令I(lǐng)={i:ρ(i)∈S},計算常數(shù)集合{ωi∈Zp}i∈I使得,計算
7)DecryptDU(CTpart,RK)→m:最終解密算法由DU執(zhí)行。DU接收到云服務(wù)器返回的CTpart,計算
定理1假設(shè)決策q-BDHE假設(shè)成立,則沒有一個概率多項式時間(PPT)敵手A能以大小為l*×n*的挑戰(zhàn)矩陣M*,其中n*≤q,選擇性地打破本文的方案。
證明假設(shè)有敵手A在選擇安全游戲中有優(yōu)勢ε=AdvA去打破本文的方案。此外,假設(shè)矩陣M的維度最大為q(q≥l*)。本文利用模擬器B去解決決策q-BDHE問題,通過敵手A和挑戰(zhàn)者B之間的交互完成模擬,具體過程如下:
Setup模擬器B隨機選擇α′∈Zp,隱含地設(shè)置α=α′+aq+1,使得e(g,g)α=e(g,g)α′e(g,g)aq+1。
以下描述參數(shù)h1,…,hU的生成過程。對于x∈[1,U],隨機選擇zx∈Zp。若ρ*(i)=x,則令
否則,令hx=gzx。可得到系統(tǒng)公共參數(shù)pk=(y,e(g,g)α′,h1,…,hU)。
Query Phase I該階段由敵手A向模擬器B進行密鑰查詢。A提交屬性集合S給B,其中S不滿足挑戰(zhàn)訪問結(jié)構(gòu)M*。B接收到屬性集合S時,提交(S,pk)給密鑰生成服務(wù)器兩個KG-CSP,每個KGCSP按如下步驟生成中間密鑰:
1)隨機選α1,r∈Zp,然后找到一個常數(shù)向量使得ω1=-1,(此處雖然有兩個KG-CSP,但對于同一個矩陣M*計算得到同一個向量ω)。對于?i,ρ*(i)∈S,有ω Mi*=0,向量ω必定存在,因為S不滿足訪問矩陣M*。
2)模擬器B隱含地定義
4)現(xiàn)在計算K1,x,?x∈S。對于x?S,簡單地計算;之后為x∈S計算K1,x。
5)假設(shè)ρ*(i)=x,有
Challenge 由敵手A向模擬器B提交兩個明文消息M0,M1,B 隨機選擇b∈{0,1},為明文Mb生成挑戰(zhàn)密文CTb。 B 生成C=MbT·e(gs,gα′)和=gs。此處關(guān)鍵是模擬Ci的生成,其中包含參數(shù),具體過程如下:
1)模擬器B隨機選y2′,…,yn′*∈Zp,可以得到向量v用于共享秘密值s,其中
Query Phase II 步驟同Query Phase I
Guess 敵手A最終輸出b的猜測b′,如果b′=b模擬器 B輸出 0,表示猜測T=e(g,g)aq+1s;否則輸出1,表示猜測T為GT中的一個隨機值。
當T是一個元組,B給出了一個完美地模擬,有
當T是一個隨機元素,則消息Mb對敵手是完全隱藏的,并且我們有。因此,B能以一個可忽略的優(yōu)勢AdvA攻破決策q-BDHE假設(shè)。
為評估本方案的計算效率,本節(jié)從理論層面上分析了密鑰生成、加密和解密階段的本地計算量,同時與文獻[10],[12],[14]中的ABE方案進行效率對比。各方案效率及外包能力對比如表1所示。其中,|S|表示屬性數(shù)量,|l|表示LSSS中矩陣M的行數(shù),EG表示群G上的模冪運算,EGT表示群GT上的模冪運算,GT表示雙線性對運算。
表1 效率及外包能力對比Table 1 Comparison on the efficiency and outsourcing capability
為評估本文方案的效率,我們用JPBC在java環(huán)境下實現(xiàn)了該方案。所采用的硬件環(huán)境如下:操作系統(tǒng)為Windows10,使用的處理器是Intel(R)Core(TM)i7-7700 CPU@3.60 GHz,運行內(nèi)存為8 GB的臺式電腦為測試主機,采用基于配對的密碼學庫JPBC中的A類型曲線(其中,群Zp和G的階數(shù)均為512 bit)來實現(xiàn)本文提出的方案。
本文所參考的方案中,系統(tǒng)初始化建立、密鑰生成、加密和解密階段的運行時間會隨著屬性集合的增大而增加。本文改進并實現(xiàn)的完全外包屬性基加密方案中,密鑰生成、加密和解密階段的計算負擔完全外包給云服務(wù)器,使得這三個階段的本地計算量大大減少。同時,將該方案與文獻[10],[12]及[14]進行比較,由圖2-圖4可以看出,本方案中各個階段的本地計算量達到了較好的效果,且對外包加密和外包解密的計算進行了驗證。
圖2 密鑰生成階段Fig.2 Key generation
圖4 解密階段Fig.4 Decryption
本文將經(jīng)典的密文策略的屬性基加密方案實現(xiàn)了完全外包計算,即將密鑰生成階段、加密階段和解密階段外包給云服務(wù)器,并由本地用戶對加密和解密階段的外包結(jié)果進行驗證,確保云服務(wù)器計算結(jié)果的正確性。此外,本文對完全外包屬性基加密方案在q-BDHE假設(shè)下給出了安全性證明。未來的工作方向是將外包屬性基加密應(yīng)用到云平臺,區(qū)塊鏈上。