張玉磊,,,
(西北師范大學(xué) 計算機科學(xué)與工程學(xué)院,蘭州 730070)
云計算平臺可以將計算資源動態(tài)地提供給用戶,數(shù)據(jù)擁有者能夠?qū)⒆约旱臄?shù)據(jù)存儲在云存儲服務(wù)器中。但存儲到云端的數(shù)據(jù)可能包含數(shù)據(jù)擁有者的敏感信息,因此,數(shù)據(jù)擁有者無法像管理本地數(shù)據(jù)一樣保護數(shù)據(jù)的隱私和安全。傳統(tǒng)公鑰密碼系統(tǒng)僅支持“一對一”加密形式,缺乏靈活的訪問控制策略。2005年,文獻[1]提出了一種新的公鑰加密體制,即屬性基加密(Attribute-based Encrytion,ABE)體制。屬性基加密可以實現(xiàn)“一對多”的數(shù)據(jù)加密和高效的細粒度信息共享,因此,被認為是云存儲平臺中靈活實現(xiàn)訪問控制的方法之一[2-3]?,F(xiàn)有的以密文策略為基礎(chǔ)的屬性基加密方案[4-6]僅適用于用戶屬性和密鑰的分發(fā)屬于同一機構(gòu),然而用戶屬性可能保存在不同的云存儲服務(wù)器。在實際應(yīng)用環(huán)境中,可能會發(fā)生屬性撤銷、用戶權(quán)限變更等操作,所以在多個服務(wù)器上實現(xiàn)數(shù)據(jù)安全共享并實現(xiàn)屬性撤銷成為亟待解決的問題。
對于單一授權(quán)機構(gòu)的可撤銷屬性基加密體制[7-8],中央授權(quán)機構(gòu)(Central Authority,CA)需管理所有用戶屬性和密鑰分發(fā),在計算規(guī)模較大的云存儲環(huán)境中,即使將加解密操作外包給第三方服務(wù)器,CA還是容易不堪重負造成運行效率低和數(shù)據(jù)安全威脅等問題。2007年,文獻[9]提出了一個將私鑰和用戶身份標(biāo)記(GID)組合的屬性基加密方案。由于CA知道用戶私鑰和系統(tǒng)主密鑰,若CA遭到攻擊,那么所有的數(shù)據(jù)將被泄露,同時,該方案沒有考慮屬性撤銷功能。2014年,文獻[10]提出一個無CA且屬性授權(quán)機構(gòu)(Attribute Authority,AA)之間不需要協(xié)同的方案,但該方案不能較好地實現(xiàn)身份隱藏。文獻[11]利用CA發(fā)布具有時間閾值期的密鑰實現(xiàn)屬性的撤銷問題,但該方案提出的這種撤銷方式不滿足前向和后向安全性。2015年,文獻[12]通過密鑰更新機制實現(xiàn)用戶撤銷,同時通過重加密操作保護云端的數(shù)據(jù)安全,但該方案未能實現(xiàn)屬性撤銷功能。2016年,文獻[13]提出了一個支持多授權(quán)方可撤銷屬性的屬性基加密方案,該方案滿足前向安全性和后向安全性,將時間期限加入到密文和解密密鑰中,實現(xiàn)屬性撤銷功能。本文提出一個多屬性授權(quán)機構(gòu)環(huán)境下基于CP-ABE的屬性撤銷加密方案。該方案結(jié)合代理重加密和密文策略屬性基加密技術(shù)實現(xiàn)屬性撤銷,使用多個屬性授權(quán)機構(gòu),可降低單個屬性授權(quán)機構(gòu)所帶來的安全威脅。用戶的私鑰由數(shù)據(jù)擁有者和多個屬性授權(quán)機構(gòu)共同產(chǎn)生,以抵御多個屬性授權(quán)機構(gòu)的共謀攻擊。
背景知識定義如下:
1)雙線性映射。設(shè)置2個階為素數(shù)p的乘法循環(huán)群G和GT,存在一個雙線性映射e:G×G→GT能夠滿足如下性質(zhì):
(1)雙線性:?g,h∈G,?a,b∈Zp,滿足e(ga,hb)=e(g,h)ab。
(2)非退化性:?g∈G,滿足e(g,g)≠1,1是GT的單位元。
(3)可計算性:對P,Q∈G,能夠有效地計算e(P,Q)。
2)訪問結(jié)構(gòu)[14]。設(shè)參與者的集合P={P1,P2,…,Pn},授權(quán)參與者的子集合Γc=2{P1,P2,…,Pn},非授權(quán)參與者的子集合Γc=2{P1,P2,…,Pn}Γ。若B∈Γ且B?C,B、C的子集表示為{P1,P2,…,Pn},則C∈Γ,那么就稱Γ?2P單調(diào)。
Pr[B(ga,gb,gc,e(g,g)z)=1]|
系統(tǒng)主要包括數(shù)據(jù)擁有者(Data Owner,DO)、數(shù)據(jù)用戶(Data User,DU)、N個屬性授權(quán)中心(Attribute Authority,AA)和云存儲服務(wù)器(Cloud Storage Server,CSS)4個主體??沙蜂NABE系統(tǒng)架構(gòu)如圖1所示。
圖1 可撤銷ABE系統(tǒng)架構(gòu)系統(tǒng)結(jié)構(gòu)
1)數(shù)據(jù)擁有者:數(shù)據(jù)的擁有者為數(shù)據(jù)定制訪問結(jié)構(gòu)W并生成隨機數(shù)用于用戶解密,并對數(shù)據(jù)進行加密操作上傳密文CT至云存儲服務(wù)器。
2)云存儲服務(wù)器:存儲DO上傳的密文CT,當(dāng)屬性授權(quán)中心AA通知需要更新密文時,對DO上傳的密文進行重加密操作。
3)屬性授權(quán)中心:系統(tǒng)中有N個AA,主要負責(zé)生成系統(tǒng)參數(shù)和主密鑰,管理DO的不同屬性集,為用戶生成、分發(fā)部分私鑰,要求AA被用戶完全信任。
4)用戶:數(shù)據(jù)的使用者。當(dāng)版本號驗證成功并且屬性滿足密文相對應(yīng)的訪問結(jié)構(gòu)時可以解密密文。
多授權(quán)機構(gòu)的可撤銷屬性基加密方案包括以下算法:
1)Setup:多個屬性授權(quán)中心運行該算法,首先生成一個屬性集合U,每個AA管理一個不同的屬性集合Ui,然后生成系統(tǒng)參數(shù)和系統(tǒng)主密鑰。
3)Encrypt:該算法由DO執(zhí)行。輸入消息m,指定訪問結(jié)構(gòu)W,輸出密文CT。
5)Decrypt:數(shù)據(jù)用戶收到密文后,首先檢查私鑰版本號,若一致則進行解密操作,否則更新密鑰并準(zhǔn)備執(zhí)行ReEncrypt算法;算法輸入SKL和L,輸出明文消息m。
6)Rekey Gen:當(dāng)系統(tǒng)中的用戶需要撤銷時,屬性授權(quán)中心將新的版本號ux通過安全信道發(fā)送給用戶,輸出代理重加密密鑰Rsk。
7)ReEncrypt:該算法由CSS執(zhí)行。輸入密文CT和重加密密鑰Rsk,輸出重加密后的密文CT′。
下面將給出多屬性授權(quán)機構(gòu)環(huán)境下支持撤銷的CP-ABE方案在選擇明文攻擊下的不可區(qū)分性的安全模型。在這種安全模型中,敵手A需要選擇自己要挑戰(zhàn)的訪問結(jié)構(gòu)發(fā)送給挑戰(zhàn)者B,同時A能夠從B中獲得滿足自己訪問結(jié)構(gòu)的屬性集相應(yīng)的私鑰。通過敵手和挑戰(zhàn)者的游戲來構(gòu)建安全模型,模型為選擇明文安全。
1)初始化(Init)
2)系統(tǒng)建立(Setup)
B運行Setup算法,將產(chǎn)生的系統(tǒng)參數(shù)params發(fā)送給A。
3)查詢階段1(Phase1)
A將自己的屬性集提交給B,B運行密鑰生成算法生成相應(yīng)的私鑰發(fā)送給A。
4)挑戰(zhàn)階段(Challenge)
A向B提交2個消息長度相等的明文M0和M1,B進行拋硬幣實驗隨機得b∈{0,1},然后運行加密算法,將加密后的密文發(fā)給A。
5)查詢階段2(Phase2)
A進行與Phase1一致的操作。
6)猜測(Guess)
A對b進行猜測,若猜測的b′=b,則B贏得了游戲。B進行游戲獲得成功的公式為:
密文策略屬性基加密方案如下:
1)Setup
2)KenGen(msk,L)
3)Encrypt(params,m,W)
5)Decrypt(CT,SKL,params)
6)Rekeygen(U,params)
7)ReEncrypt(CT,Rsk)
云存儲服務(wù)器收到密文CT和重加密密鑰Rsk后,執(zhí)行以下計算:
輸出重加密密文:
8)Rekey(SKL,Rsk)
方案的正確性分析過程如下:
1)用戶從云存儲服務(wù)器獲得的合法密文CT可以被正確解密。
D=e(C0,d1)=e(gs,gr)=e(g,g)sr
2)密鑰更新后的重加密密文可以被正確解密。
本文提出的加密方案支持多屬性授權(quán)機構(gòu)環(huán)境下屬性撤銷,下文將給出方案選擇明文攻擊下密文不可區(qū)分性IND-CPA證明過程。當(dāng)用戶屬性撤銷操作發(fā)生時,云服務(wù)器會重新計算密文,并更新版本號獲得新的密鑰。當(dāng)新用戶加入系統(tǒng)時,密鑰中由DO生成的隨機數(shù)已經(jīng)改變,即使用戶獲得密鑰前已經(jīng)了解以前的密文并且滿足訪問結(jié)構(gòu),也不能解密出使用以前密鑰所加密的密文。
定理若DBDH困難問題在群(G0,G1)上成立,則方案具有IND-CPA安全。
挑戰(zhàn)者B隨機選擇a,b,c,z∈Zp,設(shè)G是乘法循環(huán)群,其階為素數(shù)p,生成元是g;令e:G0×G0→G1是雙線性映射。挑戰(zhàn)者B隨機拋硬幣得到隨機值μ∈{0,1},若μ=0,令Z=e(g,g)abc,即(g,A,B,C,Z)=(g,ga,gb,gc,gabc),否則令Z=e(g,g)z,即(g,A,B,C,Z)=(g,ga,gb,gc,gz)。然后挑戰(zhàn)者B將所得結(jié)果發(fā)送給模擬者X,此時模擬者X在DBDH游戲中充當(dāng)挑戰(zhàn)者的角色。
1)初始化(Init)
2)系統(tǒng)建立(Setup)
3)查詢階段1(Phase1)
4)挑戰(zhàn)階段(Challenge)
5)查詢階段2(Phase2)
與查詢階段1一致。
6)猜測(Guess)
本節(jié)對文獻[6,13,16]的方案和本文方案的有無CA、單授權(quán)機構(gòu)/多授權(quán)機構(gòu)、屬性撤銷等方面進行分析比較。
與文獻[6,16]的方案相比,本文方案支持屬性撤銷、無須CA、多屬性授權(quán)機構(gòu),具有更多的功能和更好的靈活性。當(dāng)發(fā)生用戶屬性撤銷時,授權(quán)機構(gòu)就會更新密鑰中所包含的版本號,利用云服務(wù)器重加密技術(shù)計算新的解密密鑰,因此,在用戶屬性撤銷發(fā)生時,不會給DO和未被撤銷的DU增加額外的計算開銷。不同方案功能對比如表1所示,其中,√表示有,×表示無。
表1 不同方案功能對比
與文獻[13]方案相比,兩者均能實現(xiàn)多屬性授權(quán)機構(gòu)的屬性撤銷。通過理論數(shù)值分析,對本文方案和文獻[13]方案的計算開銷進行比較。P表示為雙線性對運算、E表示為指數(shù)運算、M表示為點乘運算,這3種運算是開銷對比過程中主要考慮的運算,其中雙線性對運算的計算代價高。如表2所示,本文方案的加密過程對這3種運算的使用比文獻[13]方案少;在解密過程中,本文方案比文獻[13]方案的指數(shù)運算和雙線性對運算也有明顯減少。因此,與文獻[13]方案相比,本文方案降低了加解密的計算開銷,具有較高的運行效率。
表2 計算開銷表
本文構(gòu)造一個多屬性授權(quán)機構(gòu)環(huán)境下基于CP-ABE的屬性撤銷加密方案,該方案在DBDH困難問題假設(shè)下實現(xiàn)IND-CPA安全。通過版本號標(biāo)記法實現(xiàn)用戶屬性撤銷,建立訪問樹結(jié)構(gòu)管理不同屬性授權(quán)機構(gòu)所頒發(fā)的屬性,能夠抵抗多個屬性授權(quán)機構(gòu)的聯(lián)合攻擊,有效保護數(shù)據(jù)用戶的隱私,實現(xiàn)用戶的細粒度訪問。與文獻[6,13,16]方案相比,本文方案對消息加解密的效率更高。同時,云存儲平臺和代理重加密技術(shù)可減少屬性授權(quán)機構(gòu)的工作量,降低用戶的計算消耗。