迪力夏提·吾普爾,韓舒艷,古麗米熱·爾肯,努爾買買提·黑力力
(新疆大學(xué)數(shù)學(xué)與系統(tǒng)科學(xué)學(xué)院,新疆烏魯木齊830046)
云存儲使用戶能夠在云中分享數(shù)據(jù),但數(shù)據(jù)擁有者不能完全信任云服務(wù)器.因?yàn)樵品?wù)器可能會遭到破壞或給未經(jīng)授權(quán)用戶提供數(shù)據(jù),以賺取利益.因此人們采用密文策略屬性基加密(CP-ABE,Ciphertext Policy Attribute Based Encryption)方案,加密數(shù)據(jù)之后把密文存放在云上,與授權(quán)用戶分享.文獻(xiàn)[1-5]對CP-ABE做了相關(guān)研究.
CP-ABE很適合在云服務(wù)器上使用,但是CP-ABE中實(shí)現(xiàn)用戶的撤銷仍然是一個棘手的問題.撤銷用戶時,要保證用戶不再具有解密數(shù)據(jù)能力,同時要保證不影響其余未撤銷的用戶正常訪問數(shù)據(jù).用戶撤銷方面有不少研究[6,15].文獻(xiàn)[6]提出了一種具有系統(tǒng)級用戶撤銷的ABE方案.該方案通過在“與”門上用“非”操作來實(shí)現(xiàn)撤銷,但效率較低.文獻(xiàn)[17]提出了一種利用二叉樹實(shí)現(xiàn)用戶撤銷的CP-ABE方案,在密鑰生成中心更新密鑰來實(shí)現(xiàn)撤銷,但其性能比較低,而且大大增加了密鑰生成中心的計(jì)算和通信負(fù)擔(dān).文獻(xiàn)[8]提出了一個CP-ABE的用戶撤銷方案,在數(shù)據(jù)加密時密文當(dāng)中嵌入用戶列表來實(shí)現(xiàn)用戶的直接撤銷.文獻(xiàn)[9]提出了一種動態(tài)用戶撤銷方案.在云服務(wù)器對密文進(jìn)行重新加密,并且云服務(wù)器完全控制用戶的撤銷列表.當(dāng)用戶撤銷列表被發(fā)送來時,用戶將失去對數(shù)據(jù)的所有訪問權(quán)限.文獻(xiàn)[10]中提出CP-ABE的屬性和用戶撤銷的方案,其中引入了一個輔助函數(shù)來指定涉及到撤銷事件的密文,然后使用廣播加密技術(shù)只更新輔助函數(shù)指定的密文來實(shí)現(xiàn)屬性和用戶的直接撤銷.文獻(xiàn)[11]在智能電網(wǎng)中實(shí)現(xiàn)CP-ABE的用戶撤銷.文獻(xiàn)[12]提出CP-ABE的用戶撤銷,方案中對訪問控制樹的根節(jié)點(diǎn)設(shè)置一個有效訪問時間來實(shí)現(xiàn)用戶撤銷,但是解密數(shù)據(jù)的計(jì)算量和密鑰管理代價較高.
本文在J.Hur等人[4]方案的基礎(chǔ)上,提出一種具有隱藏策略的基于時間限制的用戶撤銷CP-ABE方案,對每個用戶指定訪問數(shù)據(jù)的有效期來實(shí)現(xiàn)用戶撤銷.譬如,一個大學(xué)將圖書館的電子圖書存儲在云服務(wù)器上,便于學(xué)生訪問.由于每年都有一部分學(xué)生畢業(yè)離校,因此需要解決用戶撤銷的問題.針對此問題,對每個新生指定一個訪問數(shù)據(jù)的有效期(比如學(xué)制).學(xué)生一旦畢業(yè)有效期就過期,無法繼續(xù)訪問數(shù)據(jù),從而實(shí)現(xiàn)用戶撤銷.
系統(tǒng)流程如圖1所示.系統(tǒng)描述如下:
圖1 系統(tǒng)流程Fig 1 System work flow
云服務(wù)器:提供存儲數(shù)據(jù)和共享數(shù)據(jù)的服務(wù).
數(shù)據(jù)擁有者:制定訪問控制策略,按策略對數(shù)據(jù)進(jìn)行加密生成密文,并將密文放到云服務(wù)器,以便于共享數(shù)據(jù).
用戶:訪問云服務(wù)器上的數(shù)據(jù).只有用戶的屬性滿足訪問控制策略,用戶才能對密文進(jìn)行解密并得到明文.
密鑰生成中心KGC(Key Generation Center):對系統(tǒng)生成公共參數(shù),并且對每個用戶制定訪問數(shù)據(jù)的時間限制,假設(shè)它是半誠實(shí)的.KGC執(zhí)行其它實(shí)體分配給它的合法任務(wù),但它可能試圖獲取數(shù)據(jù)擁有者的數(shù)據(jù).
時間服務(wù)器:判斷用戶訪問數(shù)據(jù)的時間是否過期或者是否被偽造或篡改過.它執(zhí)行由其它實(shí)體分配給它的合法任務(wù),假設(shè)它是完全可信的.
代理服務(wù)器:使用從時間服務(wù)器得到的令牌對數(shù)據(jù)執(zhí)行部分解密,假設(shè)它是半誠實(shí)的.代理服務(wù)器執(zhí)行其它實(shí)體分配給它的合法任務(wù),但它可能會試圖獲取數(shù)據(jù)擁有者的數(shù)據(jù)內(nèi)容和訪問控制策略.
方案由Setup、KeyGen、Encryption、GenToken、TimeCheck、SPartDecrypt、Decrypt 7個算法組成.算法步驟如下:
Setup(λ)→(PKKGC,MKKGC),(PKsign,MKsign),(PKS,MKS):這個算法輸入為安全參數(shù)λ,KGC為整個系統(tǒng)生成公共參數(shù).KGC輸出自己的公私鑰對(PKKGC,MKKGC)和(PKsign,MKsign),代理服務(wù)器輸出自己的公私鑰對(PKS,MKS).
KeyGen(MKKGC,S,MKsign)→(SKut,Tt,ξ):KGC把MKKGC,PKsign和用戶的屬性集S作為輸入,為用戶ut輸出私鑰SKut的同時,對每個用戶制定訪問數(shù)據(jù)的時間限制Tt,并且對時間Tt生成數(shù)字簽名ξ.
Encryption(Γ,M,PKKGC,PKS)→CT:數(shù)據(jù)擁有者使用PKKGC,PKS和訪問結(jié)構(gòu)樹Γ對數(shù)據(jù)M進(jìn)行加密,并輸出密文CT.
GenToken(SKut,S0,Tt)→BT:用戶ut使用私鑰SKut和屬性集S0?S,制作攜帶時間限制Tt的令牌BT=(TKS0,ut||Tt),其中TKS0,ut是用戶令牌,Tt是為用戶ut指定的時間.
TimeCheck(BT,ξ,PKsign)→TKS0,ut:時間服務(wù)器收到帶著時間限制Tt的令牌BT后,首先判斷用戶發(fā)的時間是否被偽造或篡改過.如果是,返回⊥.否則進(jìn)一步判斷用戶的時間是否過期,如果沒有過期就把令牌發(fā)給代理服務(wù)器,否則返回⊥.
SPartDecrypt(CT,TKS0,ut)→ CT′:此算法由代理服務(wù)器來執(zhí)行.以CT和TKS0,ut為輸入,如果用戶屬性S′滿足訪問控制策略,算法輸出部分解密的數(shù)據(jù)CT′;否則返回⊥.
Decrypt(CT′,SKut)→M:該算法以CT′和SKut為輸入,對部分解密的CT′進(jìn)一步解密,并且輸出明文M.
方案安全性是通過一個挑戰(zhàn)者和敵手之間的安全游戲進(jìn)行定義的,安全游戲步驟如下:初始化階段:挑戰(zhàn)者選擇階為p的兩個乘法循環(huán)群G0和G1,并且選擇哈希函數(shù)H:{0,1}→G0,雙線性映射e:G0×G0→G1和主密鑰β ∈.
提出查詢階段:挑戰(zhàn)者把屬性λ1,λ2,...,λq給A,A用哈希函數(shù)H計(jì)算相應(yīng)的私密鑰H(λ1)β,...,H(λq)β,并且返回給A.
挑戰(zhàn)階段:A收集了足夠的信息以后,挑戰(zhàn)者把ga∈G0發(fā)給A.
猜測階段:A猜出屬性λi和被模糊化的屬性si∈G0,其中λi是提取查詢階段從未查詢過的屬性.
攻擊者的優(yōu)勢可以定義為Adv(A)=Pr[e(ga,H(λi))β=si].如果A運(yùn)行的時間不超過t并且優(yōu)勢為ε,我們可以說A是以(t,ε)贏得安全游戲.假設(shè)有一個對手A贏了安全游戲.我們現(xiàn)在可以構(gòu)造一個算法B,A利用它來能解決BDH問題.
定理1如果在安全游戲中多項(xiàng)式時間內(nèi)得到的優(yōu)勢可以忽略不計(jì),那么我們的方案是安全的.
定義1(訪問結(jié)構(gòu))假設(shè){p1,p2,...,pn}是一個實(shí)體集,A?2{p1,p2,...,pn}{?}是訪問結(jié)構(gòu).如果對?B,C都會有B∈A,且B?C,即C∈A,則稱A是單調(diào)的.
定義2(雙線性對)設(shè)G0和G1是階為素?cái)?shù)p的乘法循環(huán)群,g是G0的生成元素.映射e:G0×G0→G1是一個雙線性對,如果e具有以下特性:
1)對?u,v∈G0,?x,y∈,有e(ux,vy)=e(u,v)xy;
2)對?g∈G0,有e(g,g)6=1.這里1代表G1群的單位元;
3)計(jì)算e:G0×G0→G1是有效的.
定義3(DBDH問題)基于上述概念,給出了G0的生成元g和元素gx,gy,gz,其中?x,y,z∈,DBDH問題是計(jì)算出e(g,g)xyz.
設(shè)G0是一個階為素?cái)?shù)p的雙線性群,g是G0的生成元.設(shè)e:G0×G0→G1為雙線性映射.安全參數(shù)λ將決定雙線性群的大?。覀冞x取三個哈希函數(shù):H:{0,1}→G0,H1:G1→{0,1}logp和H2:{0,1}?→{0,1}?.并且定義拉格朗日系數(shù)
Setup(λ)→(PKKGC,MKKGC),(PKS,MKS),(PKsign,MKsign):KGC和代理服務(wù)器生成自己的公鑰和私鑰對.
KGC選擇階為素?cái)?shù)p的循環(huán)群G0和G1,g是G0和G1的生成元.KGC選擇一些公共參數(shù)和哈希函數(shù):(G0,g,H,H1,H2),其中H:{0,1}→G0,H1:G1→{0,1}logp,H2:{0,1}?→{0,1}?.
keyGen(MKKGC,S,MKsign)→(SKut,Tt,ξ):KGC對用戶ut和屬性λj分別任意選取唯一和保密的隨機(jī)數(shù)rt∈和rj∈,然后為用戶生成私鑰:
最后為每個用戶指定限制訪問數(shù)據(jù)的時間Tt,并且對時間Tt進(jìn)行數(shù)字簽名
Encryption(Γ,M,PKKGC,PKS)→CT:數(shù)據(jù)擁有者ua將明文M共享之前,使用訪問控制樹Γ對數(shù)據(jù)進(jìn)行加密.對于訪問控制樹的詳細(xì)內(nèi)容請查看文獻(xiàn)[1].設(shè)Y為訪問控制樹Γ中所有葉子節(jié)點(diǎn)的集合,算法任意選取隨機(jī)指數(shù)a∈,對y∈Y計(jì)算Sy=e((gβ)a,H(λy)),然后計(jì)算H1(Sy),并且訪問控制樹中的屬性λy都被H1(Sy)替換掉,為了加密明文M計(jì)算會話密鑰KS=e((gγ)a,H(IDS)),最終密文如下:
數(shù)據(jù)擁有者ua將(IDa,ga,CT)發(fā)給云服務(wù)器.
GenToken(SKut,S′,Tt)→BT:用戶ut發(fā)送請求從代理服務(wù)器獲取ga,然后對每個屬性λj∈S′,計(jì)算Sj=e(ga,)=e(ga,H(λj)β).此算法任意選取一個隨機(jī)數(shù)τ∈,并為具有屬性集S′的用戶ut制造令牌:TKS0,ut=(?λj∈ S′:Ij=H1(Sj),(Dj)τ,()τ).然后用戶ut從KGC得到的時間限制Tt和制造的令牌TKS0,ut記為BT=(TKS0,ut||Tt)發(fā)給時間服務(wù)器.
TimeCheck(BT,ξ,PKsign)→TKS0,ut:時間服務(wù)器收到帶著時間限制的令牌BT后,首先用數(shù)字簽名技術(shù)驗(yàn)證用戶是否對KGC發(fā)給它的時間Tt進(jìn)行偽造或篡改過,驗(yàn)證過程如下:
如果驗(yàn)證失敗,則返回⊥.如果驗(yàn)證成功,則說明用戶沒有對KGC發(fā)給它的時間偽造或篡改過,即時間服務(wù)器把Tt和當(dāng)?shù)貢r間進(jìn)行比較,判斷用戶訪問數(shù)據(jù)的時間是否過期.如果過期了,則返回⊥.如果沒有過期,則時間服務(wù)器將令牌發(fā)送到代理服務(wù)器.
SPartDecrypt(CT,TKS0,ut)→CT′:代理服務(wù)器收到令牌之后,要判斷令牌中嵌入的屬性索引Ij是否跟CT里面的模糊化屬性相同.如果是,那么它對訪問控制樹的葉子節(jié)點(diǎn)x開始運(yùn)行DecryptDode(CT,TKS0,ut,x)遞歸算法,計(jì)算如下:
否則,有DecryptDode(CT,TKS0,ut,x)=⊥.
當(dāng)x是一個非葉子節(jié)點(diǎn)的時候,假設(shè)所有節(jié)點(diǎn)z是x的子節(jié)點(diǎn),則運(yùn)行算法Fz=DecryptDode(CT,TKS0,ut,z).假設(shè)Sx是子節(jié)點(diǎn)z的集合,使Fx6=⊥.該算法計(jì)算如下:
之后,算法是在訪問控制樹Γ的根節(jié)點(diǎn)R開始運(yùn)行.如果用戶的令牌滿足訪問控制樹Γ,則代理服務(wù)器運(yùn)行DecryptDode(CT,TKS0,ut,R)=e(g,g)rtτs.
代理服務(wù)器計(jì)算會話密鑰KS=e(ga,MKS)=e(ga,H(IDS)γ),然后計(jì)算最終將部分解密的數(shù)據(jù)CT′=(,C=hs,A)發(fā)送給用戶,其中A=DecryptNode(CT,TKS0,ut,R)=e(g,g)rtτs.
Decrypt(CT′,SKut)→M:用戶ut從代理服務(wù)器得到密文CT′后,用自己的私鑰對密文進(jìn)行解密.解密過程如下:
最終輸出明文M .
定理2如果文獻(xiàn)[3]的方案在選擇明文攻擊(CPA,Chosen-plaintext attack)下是安全的,則本文方案在CPA下是安全的.
文獻(xiàn)[3]已經(jīng)證明敵手在多項(xiàng)式時間內(nèi)得到的優(yōu)勢可以忽略不計(jì),所以本文方案在CPA下是安全的.
定理3如果文獻(xiàn)[4]的方案在CPA下是安全的,則本文方案在CPA下是安全的.
文獻(xiàn)[4]已經(jīng)證明敵手在多項(xiàng)式時間內(nèi)得到的優(yōu)勢可以忽略不計(jì),所以本文方案在CPA下是安全的.
數(shù)據(jù)的機(jī)密性是通過屬性來實(shí)現(xiàn)的.如果用戶屬性不能滿足訪問控制樹,就不能成功訪問云上的數(shù)據(jù).因?yàn)橛脩粲米约旱膶傩杂?jì)算出e(g,g)rtτs,一旦用戶屬性不滿足訪問控制樹就無法計(jì)算出e(g,g)rtτs,從而有效的防止非授權(quán)用戶的訪問數(shù)據(jù).
攻擊者為了訪問數(shù)據(jù)先要用自己的屬性計(jì)算出e(g,g)rtτs.如果沒有具備屬性λ的攻擊者和具備屬性λ的用戶合謀訪問數(shù)據(jù)是不可能的,因?yàn)镵GC為每個用戶生成唯一的隨機(jī)數(shù)rt來構(gòu)造密鑰,所以即便幾個用戶合謀也無法計(jì)算出e(g,g)rtτs.
數(shù)據(jù)擁有者數(shù)據(jù)加密的過程中,訪問控制樹的每一個屬性λy都被模糊化屬性H1(e((gβ)a,H(λy)))替換掉.因?yàn)槟:瘜傩岳锩娴膮?shù)α和β只有授權(quán)用戶知曉,所以未授權(quán)用戶和云服務(wù)器計(jì)算不出H1(e((gβ)a,H(λy))),從而實(shí)現(xiàn)了隱藏策略的目的.
因?yàn)镵GC對每個用戶指定一個有效期.用戶每次訪問數(shù)據(jù)的時候都要把有效期和自己的令牌發(fā)給時間服務(wù)器.當(dāng)用戶訪問數(shù)據(jù)時,不僅他的令牌要滿足訪問控制樹,而且他訪問數(shù)據(jù)的時間在有效期內(nèi)才能成功的對數(shù)據(jù)進(jìn)行解密.一旦有效期到期,用戶的私鑰將不再有效,就無法訪問數(shù)據(jù),從而保證后向安全性.
表1中對幾個關(guān)于用戶撤銷方案的撤銷制度、隱藏策略特性、重新加密階段和密鑰更新階段進(jìn)行了比較.從表1可以看到本文相對其他三個用戶撤銷方案的優(yōu)點(diǎn).與文獻(xiàn)[6-8]三個方案相比,本文沒有重新加密階段和密鑰更新階段,因此降低了整個算法的計(jì)算量.此外本文具備隱藏策略的特性.
表1 功能比較Tab 1 Capability comparison
表2 存儲成本比較表Tab 2 Storage cost comparison
表2對幾個方案中的密文長度、公鑰長度和密鑰長度進(jìn)行比較.其中C0和C1分別表示群G0和群G1中元素的長度,t表示密文相關(guān)的屬性個數(shù),k表示用戶密鑰相關(guān)的屬性個數(shù),l表示系統(tǒng)中所有屬性的個數(shù),r表示被撤銷的用戶個數(shù).
本文提出一種基于時間限制的用戶撤銷訪問控制方案.方案中對每個用戶指定訪問數(shù)據(jù)的有效期來實(shí)現(xiàn)高效安全的用戶撤銷,因此省略重加密階段和更新密鑰階段.為了防止指定時間的篡改和偽造,使用了短簽名方法,從而大大減少整個算法的計(jì)算量.此外對訪問控制樹的每個屬性進(jìn)行隱藏,從而避免了訪問控制策略泄漏敏感信息.本文主要考慮用時間限制來實(shí)現(xiàn)用戶撤銷,下一步工作是用時間限制來實(shí)現(xiàn)安全高效的細(xì)粒度屬性撤銷.