許盛偉 郭春銳 袁 峰 任雄鵬 楊 森
1(北京電子科技學(xué)院 北京 100070)2(西安電子科技學(xué)院通信工程學(xué)院 陜西 西安 710071)
近年來(lái),隨著云計(jì)算的流行,大量計(jì)算以及存儲(chǔ)從物理本機(jī)被挪至云端[1],為用戶節(jié)約了大量的存儲(chǔ)空間,受到了廣大用戶的喜愛(ài)。但是將數(shù)據(jù)存儲(chǔ)在云服務(wù)器上,并不是特別安全,可能會(huì)由于云提供商搜集用戶存儲(chǔ)的消息,導(dǎo)致重要信息的泄露。怎樣解決云存儲(chǔ)中數(shù)據(jù)的安全問(wèn)題,已經(jīng)成為人們急需解決的重要問(wèn)題之一[2]。近年來(lái),基于屬性加密方案的出現(xiàn)不僅解決了云中所存數(shù)據(jù)的安全問(wèn)題,同時(shí)也實(shí)現(xiàn)了用戶的細(xì)粒度授權(quán),因此受到了越來(lái)越多的關(guān)注。
Sahai等[3]最先提出了基于屬性的加密方案(Attributed-Based Encryption,ABE)。在該方案中,數(shù)據(jù)屬主通過(guò)設(shè)定訪問(wèn)策略,根據(jù)屬性完成加密,在解密過(guò)程中,不用獲得數(shù)據(jù)訪問(wèn)者的具體身份信息,只用關(guān)注解密者的屬性是否滿足加密者設(shè)定的加密策略。Goyal等[4]又將ABE劃分為兩種加密方案,一種是基于密文策略,簡(jiǎn)稱CP-ABE,另一種是基于密鑰策略,簡(jiǎn)稱KP-ABE[5]。最早提出的CP-ABE加密體制中,訪問(wèn)結(jié)構(gòu)直接以明文形式存在,從而導(dǎo)致重要信息暴露。Nishide等[6]提出了一種加密方案,可以實(shí)現(xiàn)數(shù)據(jù)屬主將數(shù)據(jù)加密的同時(shí),也完成了策略隱藏,防止了敏感信息的泄露。近年來(lái),文獻(xiàn)[7-8]又結(jié)合已有方案提出了新的方案,解決了隱藏策略過(guò)程中遇到的問(wèn)題。
在大多數(shù)CP-ABE加密體制中,密鑰只是由單一的可信的權(quán)威機(jī)構(gòu)生成,這種做法不僅非常不安全,同時(shí)也不能實(shí)現(xiàn)用戶的跨域訪問(wèn),一旦權(quán)威機(jī)構(gòu)被攻破,敵手獲得密鑰后,就可以從密文中獲得明文數(shù)據(jù)。Chase[9]提出了一種ABE加密方案,將單個(gè)權(quán)威機(jī)構(gòu)變?yōu)槎鄠€(gè)授權(quán)機(jī)構(gòu),很好地解決了上述問(wèn)題。Waters[10]提出了一種分布式的CP-ABE加密方案,首次通過(guò)LSSS矩陣完成了ABE加密。后續(xù)文獻(xiàn)[11-12]提出了分布式的屬性基加密方案,其優(yōu)點(diǎn)是密文為定長(zhǎng)的。文獻(xiàn)[13]在多機(jī)構(gòu)授權(quán)的基礎(chǔ)上,將策略進(jìn)行了隱藏。
在現(xiàn)有的針對(duì)云文件屬性加密的方案中,針對(duì)多個(gè)層次結(jié)構(gòu)文件的研究還不是特別深入,但是也有學(xué)者們提出了一些方案[14-18],但是加解密效率不是特別理想。文獻(xiàn)[19]提出了一種多級(jí)層次結(jié)構(gòu)的CP-ABE方案。該方案通過(guò)使用分層的訪問(wèn)結(jié)構(gòu)模型解決多層次文件共享的難題,但是其將樹(shù)形的訪問(wèn)結(jié)構(gòu)以明文的形式發(fā)送給用戶,容易造成一些敏感信息的泄露。
本文針對(duì)具有多級(jí)層次結(jié)構(gòu)特點(diǎn)的文件,提出一種采用分層級(jí)的樹(shù)形結(jié)構(gòu)且策略隱藏的屬性加密方案,同時(shí)在本方案中有多個(gè)授權(quán)機(jī)構(gòu)共同工作。采用分層級(jí)的樹(shù)形結(jié)構(gòu)可以減少加密成本,同時(shí)訪問(wèn)策略的隱藏防止了敏感信息的泄露。文中用戶密鑰是由中央授權(quán)機(jī)構(gòu)和多個(gè)屬性授權(quán)機(jī)構(gòu)共同生成,防止了單個(gè)授權(quán)機(jī)構(gòu)被攻擊導(dǎo)致密鑰泄露的難題。
設(shè)G和GT分別是階為素?cái)?shù)p,生成元為g的乘法循環(huán)群,其雙線性映射e:G×G→GT,e滿足以下性質(zhì):
(1) 雙線性。對(duì)?μ,ν∈G,a,b∈Zp,都有e(μa,νb)=e(μ,ν)ab。
(2) 非退化性。存在μ,ν∈G,使得e(μ,ν)≠1。
(3) 可計(jì)算性。對(duì)所有μ,ν∈G,存在有效計(jì)算e(μ,ν)≠1。
設(shè)群G、GT為乘法群,階為p,生成元為g∈G,隨機(jī)整數(shù)a,b,c∈Zp,并將四元組g,ga,gb,gc∈G和隨機(jī)數(shù)T∈GT發(fā)送給敵手A,由敵手A判定T是否等于e(g,g)abc。當(dāng)T=e(g,g)abc時(shí),A輸出1;否則輸出0。
定義敵手判斷出上述問(wèn)題的優(yōu)勢(shì)是:
AdvDBDH=Pr[A(g,ga,gb,gc,e(g,g)abc)=1]-
Pr[A(g,ga,gb,gc,T)=1]
式中:Pr表示概率或者優(yōu)勢(shì)。
如果沒(méi)有時(shí)間多項(xiàng)式算法通過(guò)不能忽略AdvDBDH打破DBDH假設(shè),則該假設(shè)成立。
假設(shè)用T表示具有分層結(jié)構(gòu)的訪問(wèn)樹(shù),在T中,具有k個(gè)訪問(wèn)層次,樹(shù)中的節(jié)點(diǎn)用(x,y)表示,其中:x表示節(jié)點(diǎn)在樹(shù)中的行位置(從上而下);y表示節(jié)點(diǎn)在樹(shù)中的列位置(從左到右)。R(x,y)表示根節(jié)點(diǎn),att(x,y)表示葉子節(jié)點(diǎn)。
圖1為具有2個(gè)層次結(jié)構(gòu)的訪問(wèn)樹(shù),樹(shù)中圓圈表示閾值門(mén)限,如“OR”“AND”“n-of-m(n 圖1 具有2個(gè)層次結(jié)構(gòu)的訪問(wèn)樹(shù) 針對(duì)訪問(wèn)樹(shù),有如下定義: (xi,yi):表示訪問(wèn)樹(shù)中的級(jí)節(jié)點(diǎn),最高節(jié)點(diǎn)為根節(jié)點(diǎn)R(x1,y1),其余的依次遞減。parent(x,y):表示節(jié)點(diǎn)(x,y)的父節(jié)點(diǎn)。child(x,y):表示節(jié)點(diǎn)(x,y)的子節(jié)點(diǎn)。att(x,y):表示與葉子節(jié)點(diǎn)相關(guān)聯(lián)的屬性。index(x,y):表示返回一個(gè)與節(jié)點(diǎn)(x,y)相關(guān)聯(lián)的唯一值。 在本方案中,主體包括5部分,分別為中央授權(quán)機(jī)構(gòu)(Central Authority,CA)、屬性授權(quán)機(jī)構(gòu)(Attribute Authority,AA)、數(shù)據(jù)屬主 (Data Owner,DO)、用戶(User)和云服務(wù)提供商(Cloud Service Provider,CSP)[7]。 各主體的主要功能如下: 1) CA為可信機(jī)構(gòu),通過(guò)輸入安全參數(shù),產(chǎn)生主公鑰和主私鑰,同時(shí)為AA和User生成身份標(biāo)簽,當(dāng)用戶注冊(cè)完成后,為User生成密鑰組件。 2) AA根據(jù)User屬性生成部分密鑰組件。 3) DO在本地加密需要共享的文件,由于直接采用CP-ABE加密文件,會(huì)花費(fèi)比較長(zhǎng)的時(shí)間,因此在本文中,DO首先通過(guò)AES或SM4算法生成文件密文,再采用CP-ABE算法加密文件密鑰,最終把完整的密文上傳至云端。 4) User 用戶從云服務(wù)端下載完密文數(shù)據(jù),當(dāng)用戶屬性滿足數(shù)據(jù)屬主定義的屬性時(shí)獲得屬性加密的密鑰,再解密文件數(shù)據(jù)。 5) CSP是“誠(chéng)實(shí)但好奇”的文件存儲(chǔ)機(jī)構(gòu),能夠?yàn)橛脩籼峁┳銐虻奈募鎯?chǔ)空間,然而,為了獲取利益,還是會(huì)盡可能多地收集所存儲(chǔ)的數(shù)據(jù)信息。 在本方案中,由敵手Adversary和挑戰(zhàn)者Challenger二者通過(guò)交互式的游戲,構(gòu)建敵手挑戰(zhàn)模型[20],具體描述如下: 1) 初始化操作(Initialization)。Adversary將選擇的訪問(wèn)結(jié)構(gòu)W發(fā)送給Challenger。 2) 系統(tǒng)建立(Setup)。Challenger在游戲過(guò)程中通過(guò)方案中的初始化算法得到系統(tǒng)公鑰和密鑰主私鑰,主私鑰由Challenger保存,將公鑰發(fā)送給Adversary。 3) 查詢階段1(QueryPhase1)。Adversary選擇屬性Si,Si?W,并重復(fù)從Challenger處獲得私鑰SK,同時(shí)Challenger通過(guò)運(yùn)行KeyGen生成私鑰SK。 4) 挑戰(zhàn)階段(Challenge)。Adversary選擇兩條等長(zhǎng)的消息M0和M1,Challenger通過(guò)訪問(wèn)結(jié)構(gòu)W加密消息Mη,其中η∈{0,1},再將密文CT發(fā)送給Adversary。 5) 查詢階段2(QueryPhase2)。重復(fù)查詢階段1。 (1) CA初始化。CA輸入安全參數(shù)1λ,生成群G,由第1節(jié)可知,g為其生成元,CA隨機(jī)選擇α,β∈Zp,計(jì)算Y=e(g,g)α和h=gβ,并根據(jù)相應(yīng)的簽名方案,生成簽名密鑰Signkey和驗(yàn)證密鑰Verifykey。 公鑰GPK=(p,g,G,GT,e,Y,h,Verifykey) (1) 主私鑰GSK=(β,gα) (2) (2) 用戶注冊(cè)。User首先向CA發(fā)出申請(qǐng),完成注冊(cè)。然后CA為每個(gè)User生成全局標(biāo)識(shí)符GID。在本方案中,用戶不能是長(zhǎng)期合法的,必須要有一定的期限限制,因此CA必須為User設(shè)定有效期限Tpov。最后,為了能夠辨別User身份的真?zhèn)危蓸?biāo)簽Usign。Usign=(GID‖L‖Tpov,Signkey),其中L為User屬性集。 (3) AA初始化。CA為每個(gè)AA設(shè)定一個(gè)類似于用戶GID的標(biāo)識(shí)符AID,為了保證每個(gè)AA都是合法的機(jī)構(gòu),CA為AA生成簽名Asign。Asign=(AID‖UAID,Signkey),其中UAID為AA負(fù)責(zé)管理的屬性集。 為屬性集中的每個(gè)屬性元素隨機(jī)選擇aij∈Zp,計(jì)算Aij=gaij。其中公鑰APK={Asign,{Aij}},私鑰ASK=aij。 數(shù)據(jù)擁有者采用k個(gè)密鑰{k1,k2,…,kk}利用對(duì)稱加密算法加密文件M={m1,m2,…,mk},文件密文為E(M)={Ek1(m1),Ek2(m2),…,Ekk(mk)},再用CP-ABE加密文件密鑰。文件密鑰加密過(guò)程如下: 數(shù)據(jù)擁有者首先確定好分層級(jí)訪問(wèn)樹(shù)T,輸入公鑰GPK、APK、k個(gè)文件密鑰,輸出密文CT。 Ci=kiYsi=kie(g,g)?si (3) (4) 在分級(jí)訪問(wèn)樹(shù)中,每個(gè)(x,y)都對(duì)應(yīng)一個(gè)多項(xiàng)式q(x,y),從R(x,y)開(kāi)始,每個(gè)(x,y)的q(x,y)階為:d(x,y)=k(x,y)-1。對(duì)于每個(gè)分級(jí)節(jié)點(diǎn),q(x,y)(0)=q(x1,y1)(0)=si,多項(xiàng)式q(x,y)的其他系數(shù)隨機(jī)選擇。比如根節(jié)點(diǎn)R,qR(0)=q(x1,y1)(0)=s1。對(duì)于非分級(jí)節(jié)點(diǎn),q(x,y)(0)=qparent(x,y)(index(x,y))。 集合Y為樹(shù)中葉子節(jié)點(diǎn)的集合,對(duì)于任意的(x,y)∈Y,有: (5) (6) 對(duì)于其他節(jié)點(diǎn),則有: C(x,y)i=e(g,g)?(q(x,y)(0)+qchildj(0)) (7) 用戶向AA發(fā)出私鑰請(qǐng)求后,AA首先驗(yàn)證用戶信息檢查其是否在有效期范圍內(nèi),如果身份有效,則根據(jù)用戶屬性生成私鑰組件。 為每個(gè)屬性值隨機(jī)選擇λi∈Zp,則: 用戶從云端下載完密文后,需要得到共享文件的密鑰K才能解密文件,首先是采用CP-ABE算法解密得到對(duì)稱密鑰,再通過(guò)對(duì)稱算法解密共享文件。 類似于CP-ABE[21],解密運(yùn)算如下: ① 若節(jié)點(diǎn)(x,y)為葉子節(jié)點(diǎn)時(shí),令i=att(x,y),如果i?S,DecryptNode(CT,SK,(x,y))=null。 如果i∈S,則有: e(g,g)rq(x,y) (0) (8) ② 若(x,y)為非葉子節(jié)點(diǎn)時(shí),設(shè)Z為節(jié)點(diǎn)x的子節(jié)點(diǎn),令Fz=DecryptNode(CT,SK,Z),S(x,y)為節(jié)點(diǎn)x的子節(jié)點(diǎn)集。 e(g,g)rq(x,y) (0) (9) ③ 如果S滿足整個(gè)或者部分訪問(wèn)樹(shù),則: DecryptNode(CT,SK,(xi,yi))= e(g,g)rq(xi,yi)(0)=e(g,g)rsi (10) ④ 最后得到相關(guān)的密鑰: (11) (12) ⑤ 利用ki解密Eki(mi)得到文件mi。若用戶滿足部分訪問(wèn)樹(shù),則可得到文件M中部分;若滿足整個(gè)訪問(wèn)樹(shù),則可得到文件M的所有內(nèi)容。 系統(tǒng)密鑰由CA和AA共同生成,在以往的CP-ABE方案中,系統(tǒng)密鑰只由CA生成,一旦CA被攻擊,就會(huì)造成密鑰泄露。在本方案中,如果CA被攻破,只會(huì)使得私鑰的部分組件D被泄露,完整的私鑰不會(huì)被泄露。如果部分AA機(jī)構(gòu)被攻破,只會(huì)獲得k個(gè)Di,解密幾率還是非常小的,因此本方案中系統(tǒng)的密鑰是安全的。 密文信息為Ci=kiYsi=kie(g,g)?si,若要解密密文得到明文ki,必須恢復(fù)出e(g,g)αsi。對(duì)于一個(gè)不具備屬性y的攻擊者u1,即使與具備該屬性的用戶u2共謀,也不能得到密鑰組件D;因?yàn)镃A為每個(gè)用戶產(chǎn)生的隨機(jī)數(shù)r是不一致的。如果出現(xiàn)授權(quán)中心合謀攻擊的情況時(shí),只要CA中心的私鑰組件D沒(méi)有被泄露,方案仍舊是安全的。 根據(jù)第2節(jié)中設(shè)計(jì)的安全模型,對(duì)本文所提出的方案進(jìn)行安全性證明。 定理1如果在任意的時(shí)間多項(xiàng)式算法中,Adversary不可能以不可忽略的優(yōu)勢(shì)ξ贏得挑戰(zhàn),則稱本方案是選擇明文攻擊安全的。 選取雙線性映射e:G×G→GT,隨機(jī)選擇a、b、c,其中a,b,c∈Zp。η∈{0,1},R∈GT。若R=e(g,g)abc時(shí),η=1,否則η=0。 1) 初始化操作(Initialization)。Adversary將選擇的訪問(wèn)結(jié)構(gòu)W發(fā)送給Challenger。 2) 系統(tǒng)建立(Setup)。Challenger通過(guò)初始化算法setup,為Adversary提供公鑰PK,Challenger隨機(jī)選擇a′∈Zp,a=a′+ab,則Y=e(g,g)a,h=gβ=B=gb。為每個(gè)屬性值隨機(jī)選擇aij∈Zp,Aij=gaij,將PK發(fā)送給Adversary。 4) 挑戰(zhàn)階段(Challenge)。Adversary選擇兩條等長(zhǎng)的消息M0和M1,Challenger通過(guò)訪問(wèn)結(jié)構(gòu)W加密消息Mη,其中η∈{0,1},再將密文CT發(fā)送給Adversary。 C=MηYs=Mηe(g,g)as C′=hs=gβs 5) 查詢階段2(QueryPhase2)。重復(fù)查詢階段1。 6) 猜測(cè)階段(Guess)。Adversary輸出對(duì)于η的猜測(cè)η′(η′∈{0,1})。 如果η=η′,Challenger輸出1,則R=e(g,g)abc,否則輸出1。 最后贏得挑戰(zhàn)游戲的優(yōu)勢(shì)為: 本文方案針對(duì)具有層次結(jié)構(gòu)的文件提出多機(jī)構(gòu)授權(quán)且隱藏樹(shù)形訪問(wèn)結(jié)構(gòu)的CP-ABE方案,本節(jié)從密文長(zhǎng)度、用戶密鑰長(zhǎng)度和加解密時(shí)間幾個(gè)方面展開(kāi),同時(shí)與文獻(xiàn)[7]的方案進(jìn)行對(duì)比分析。 為了便于說(shuō)明,定義以下符號(hào):k表示文件分級(jí)個(gè)數(shù);L*表示*的長(zhǎng)度;|*|表示*的元素個(gè)數(shù);AT表示除葉子以外的子節(jié)點(diǎn)集;i為AT中節(jié)點(diǎn)的子節(jié)點(diǎn);Au為用戶的屬性集;AS為系統(tǒng)屬性集;S表示具有層次結(jié)構(gòu)訪問(wèn)樹(shù)中的最小內(nèi)部節(jié)點(diǎn);tb表示雙線性對(duì)運(yùn)算;te表示群中的指數(shù)運(yùn)算和乘法運(yùn)算時(shí)間。 密文長(zhǎng)度為(2|AS|+k)LG+(i|AT|+k)LGT。 用戶密鑰長(zhǎng)度為(2|Au|+1)LG。 加密時(shí)間為(2|AS|+k)te+(i|AT|+2k)te。 解密時(shí)間為(2|Au|+1)tb+(2|S|+j|AT|+2k)te。 在文獻(xiàn)[13]中,密文長(zhǎng)度為(2|AS|+1)LG+LGT,用戶私鑰長(zhǎng)度為(2|Au|+1)LG,加密時(shí)間為(2|AS|+2)te,解密時(shí)間為(2|Au|+1)tb。 若解密一個(gè)文件時(shí),文獻(xiàn)[13]中密文略短于本文生成的密文,用戶私鑰一樣長(zhǎng),加密時(shí)間和解密時(shí)間也略低于本文方案。而本文方案可以同時(shí)加密K個(gè)文件,此時(shí),本文方案明顯優(yōu)于文獻(xiàn)[13]。且本文方案能夠?qū)崿F(xiàn)文件的分級(jí)訪問(wèn)控制。 本文利用多層次的樹(shù)形訪問(wèn)結(jié)構(gòu)加密文件,實(shí)現(xiàn)了文件的分級(jí)訪問(wèn)控制,同時(shí),策略的隱藏防止了敏感信息的泄露,研究成果在DBDH假設(shè)下被證明是安全的。通過(guò)與其他方案的對(duì)比,本文方案在加密多個(gè)文件時(shí)具有明顯的優(yōu)勢(shì),同時(shí)多授權(quán)機(jī)構(gòu)的使用不僅可以保護(hù)用戶密鑰的安全,也可實(shí)現(xiàn)用戶的跨域訪問(wèn)。下一步,將重點(diǎn)研究如何減少解密運(yùn)算量。2 系統(tǒng)模型及安全模型
2.1 系統(tǒng)模型
2.2 安全模型
3 方案構(gòu)造
3.1 初始化算法
3.2 加密算法
3.3 密鑰生成
3.4 解密運(yùn)算
4 安全性分析
4.1 密鑰的安全性
4.2 抵抗合謀攻擊
4.3 安全性證明
5 性能分析
6 結(jié) 語(yǔ)