李 聰,楊曉元,白 平,王緒安
(1.武警工程大學 密碼工程學院,西安 710086; 2.網(wǎng)絡與信息安全武警部隊重點實驗室,西安 710086)(*通信作者電子郵箱wugongcong@163.com)
近年來,云計算得到了飛速發(fā)展,可為用戶提供各種服務,如外包委托計算、數(shù)據(jù)存儲等,用戶可以將大量數(shù)據(jù)上傳到云服務提供者(Cloud Service Provider, CSP)與其他用戶共享數(shù)據(jù)。另外,CSP根據(jù)用戶需求對大量的數(shù)據(jù)進行計算,大大降低了用戶的本地計算成本。但是,隨著云計算的發(fā)展,如何實現(xiàn)敏感數(shù)據(jù)的安全存儲是一個需要解決的問題。Sahai等[1]首先提出了基于屬性加密(Attribute-Based Encryption, ABE)的概念,以實現(xiàn)用戶加密數(shù)據(jù)的機密性和靈活的訪問控制。在ABE中,身份由一組屬性來描述。ABE方案通常分為兩種[2]:一種是基于密鑰策略的屬性加密(Key-Policy Attribute-Based Encryption, KP-ABE),另一種是密文策略屬性加密(Ciphertext-Policy Attribute-Based Encryption, CP-ABE)。
許多現(xiàn)有的CP-ABE方案中,雙線性對運算和解密時間隨著訪問策略的復雜性而增長,資源有限的用戶將不能處理這種耗時的雙線性對運算,或者需要花費很長時間進行解密。當然目前也有人提出多線性映射的屬性加密方案。為了降低用戶的計算成本、減少解密時間,Green等[3]提出了一個外包解密的ABE方案。在這個方案中,用戶將原始密文外包給不可信服務器,把原始密文轉(zhuǎn)換為部分解密密文,然后用戶花費很小的開銷從該部分解密密文中解密出明文;然而該方案不能保證變換后密文的正確性。為了解決上述問題,研究者們提出了一些具有可驗證的外包解密的ABE方案[4-7]。Lai 等[4]提出了一個可驗證外包解密正確性的ABE方案,他們將一個隨機消息加密到密文中,并使用原始明文和隨機消息產(chǎn)生一個標簽,用戶解密密文后,可以使用標簽來驗證轉(zhuǎn)換是否正確。Qin等[5]提出了一個改進的可驗證外包解密CP-ABE方案,利用方案[3]中的外包方法來減少用戶的解密開銷,通過使用對稱密鑰加密消息,使用ABE加密對稱密鑰,然后利用哈希值來檢查外包的正確性。
此外,傳統(tǒng)的CP-ABE方案還有存在私鑰泄露的問題急需解決。解密密鑰定義在多個用戶共享的屬性上,不與個人標識信息唯一相關(guān)聯(lián)。雖然這可使CP-ABE實現(xiàn)高效的一對多加密和訪問控制,但由于總是有許多用戶共享相應的屬性,所以解密密鑰被惡意出售后不可追蹤。例如,一個醫(yī)院想共享病人的數(shù)據(jù)給滿足策略的人群,即訪問策略為{A醫(yī)院醫(yī)生“AND”病人編號}“OR”{B醫(yī)院“AND”心理科醫(yī)生}。假如Alice和Bob等都具有屬性“B醫(yī)院”和“心理科醫(yī)生”,則他們的相應私鑰都可以解密,如果有一用戶為了商業(yè)利益出售自己的私鑰,該系統(tǒng)無法確定是誰出售的私鑰。
為了解決ABE方案中解密密鑰的可追溯性問題,研究者們提出了ABE的可追責問題[8]??勺坟烝BE分為白盒追責ABE[9-10]和黑盒追責ABE。白盒追責ABE意味著惡意用戶將其私鑰或偽裝/修改的私鑰出售給一些買主,買方將使用現(xiàn)有的解密設備或模塊與所購買的私鑰進行解密,惡意用戶的身份可以被追蹤到;黑盒追責ABE是指惡意用戶向買家出售一個解密設備,只要他出售該設備就會被抓獲。Liu等[9]基于合數(shù)介群首次提出了支持任意單調(diào)訪問結(jié)構(gòu)的白盒追責CP-ABE方案,并證明了該方案是適應性安全的;Li等[11]首次提出了一個多機構(gòu)可追責的CP-ABE方案,但是該方案僅支持“與門”結(jié)構(gòu)的訪問策略;Zhou等[12]提出了支持單調(diào)訪問結(jié)構(gòu)的可追責的多機構(gòu)CP-ABE方案,但是該方案計算存儲開銷過大。大多數(shù)方案不能同時支持密鑰可追責和外包計算功能。
本文提出一個可追責和完全可驗證的外包解密CP-ABE方案,著重實現(xiàn)了具有高表達能力的白盒可追責性,即支持任何單調(diào)訪問結(jié)構(gòu)和自適應安全性,每個解密密鑰都可以追蹤到它的所有者;同時利用云計算的強大運算能力,通過外包解密的方法降低本地用戶的計算復雜性,并可以檢查授權(quán)用戶和未授權(quán)用戶的外包轉(zhuǎn)換密文的正確性。在本方案中,分別為授權(quán)用戶和未授權(quán)用戶設計兩個訪問策略;然后,每個密文都加入一個消息認證碼(Message Authentication Code, MAC)以確保用戶可以驗證轉(zhuǎn)換密文的正確性。另外,本文結(jié)構(gòu)具有“驗證-解密”的特點,即用戶從CSP接收到轉(zhuǎn)換密文后,首先用自己的私鑰驗證轉(zhuǎn)換密文的正確性:如果轉(zhuǎn)換密文通過驗證,則用戶解密密文并獲得明文或隨機消息;否則,轉(zhuǎn)換結(jié)果錯誤。該方案在標準模型中被證明是選擇明文攻擊(Chosen Plaintext Attack, CPA)安全的。
定義1 線性秘密共享方案(Linear Secret-Sharing Scheme, LSSS)[13]。當滿足下列條件時,一組參與方P上的秘密共享方案Π被稱為在Zp上是線性的。
1) 每一個參與方的共享秘密在Zp中形成一個向量。
2) 在Π中存在一個l行n列的矩陣A,存在一個函數(shù)ρ,使得矩陣A中的第一行{Ai}i∈l映射到屬性ρ(i)。令列向量v=(s,r2,r3,…,rn)T,其中s∈Zp是共享秘密,r2,r3,…,rn∈Zp是隨機元素。s關(guān)于Π的l個共享份額構(gòu)成的向量為Av。共享份額λi={Av}i分配給參與方屬性ρ(i)。
消息認證碼(Mac,Vrfy)是一對概率多項式時間算法(Probabilistic Polynomial Time, PPT)[14],認證算法輸入一個消息M∈M和一個密鑰η∈K,輸出一串標簽tag∈T,其中M是消息空間,K是密鑰空間,T是標簽空間。驗證算法輸入消息M、密鑰η和標簽tag,輸出1(接受)或者0(拒絕)。如果對于所有η和M,Vrfyη(M,Macη(M))=1,則消息M被認證。
定義2l-SDH(l-Strong Diffie-Hellman)假設[9]。群G是一個以P為素數(shù)階的雙線性群,g是G的生成元,其中l(wèi)-SDH假設問題可以描述如下:
若PPT算法解決l-SDH假設的優(yōu)勢可忽略,則l-SDH假設在群G中成立。
具有完全可驗證的外包解密CP-ABE方案有四個實體:授權(quán)中心、數(shù)據(jù)所有者、用戶和云服務器。授權(quán)中心是一個屬性密鑰生成中心通過執(zhí)行Setup、KeyGen和KeyGenout算法,生成主公鑰(PK)、主密鑰(MSK)、轉(zhuǎn)換密鑰(TK)和驗證密鑰(RK);數(shù)據(jù)所有者執(zhí)行加密算法對其數(shù)據(jù)進行加密,并將加密的數(shù)據(jù)上傳到云端;數(shù)據(jù)使用者即用戶執(zhí)行Decrypt和Decryptout算法從云端下載的密文解密;云服務器提供存儲和外包計算服務。系統(tǒng)模型如圖1所示。
圖1 外包解密方案
本文支持可追責的完全可驗證外包解密CP-ABE方案由以下8個算法組成:
1)Setup(1λ,U)。該初始化算法輸入安全參數(shù)1λ和屬性集U={1,2,…,l}。運行初始化算法生成主密鑰MSK和公共參數(shù)PK。
2)KeyGen(PK,MSK,S)。該密鑰生成算法輸入主密鑰MSK、公共參數(shù)PK和屬性集S。假如用戶是授權(quán)用戶,用DS代表授權(quán)用戶的屬性集,生成授權(quán)用戶私鑰SKDS。假如用戶是非授權(quán)用戶,用VS代表非授權(quán)用戶的屬性集,生成非授權(quán)用戶的私鑰SKVS。
3)Encrypt(PK,M,A1,A2)。該算法分為兩部分:
a)在滿足訪問結(jié)構(gòu)A1條件下,先運行加密算法Encrypt′(PK,M,A1),即加密明文M,生成密文CTM;然后隨機選擇一個與明文等長度字符串R,運行加密算法Encrypt′(PK,R,A2),即加密R生成密文CTR;最后輸出密文ct=(CTM,CTR)。
b)對得到的密文CTM和CTR分別用η1和η2作為消息認證碼的關(guān)鍵字進行認證,其中η1和η2分別使用共享秘密值進行計算;計算σM和σR;最后輸出密文CT=(ct,σM,σR,A1,A2)。
4)Decrypt(SK,CT,S)。該算法輸入私鑰SK、屬性集S和密文CT。假如屬性集S滿足訪問策略A1,則用戶是授權(quán)用戶,此時用戶利用私鑰SKDS計算η1,然后驗證Vrfyη1(ct,σM)=1,如果相等,則解密密文輸出明文M,否則輸出⊥。假如屬性集S滿足訪問策略A2,則用戶是非授權(quán)用戶,此時用戶利用私鑰SKVS計算η2,然后驗證Vrfyη2(ct,σR)=1,如果相等,則解密密文輸出明文R。否則輸出⊥。
5)KeyGenout(SK,PK),外包密鑰生成算法輸入主公鑰PK和私鑰SK。如果用戶是授權(quán)用戶,那么運行外包密鑰生成算法生成(TKDS,RKDS),其中TKDS是轉(zhuǎn)換密鑰,RKDS是外包驗證密鑰。如果用戶是非授權(quán)用戶,那么運行外包密鑰生成算法生成(TKVS,RKVS),其中TKVS是轉(zhuǎn)換密鑰,RKVS是外包驗證密鑰。
6)Transform(TK,CT),運行解密算法輸入密文CT和轉(zhuǎn)換密鑰TK。授權(quán)用戶轉(zhuǎn)換密鑰TK=TKDS,非授權(quán)用戶轉(zhuǎn)換密鑰TK=TKVS;然后運行轉(zhuǎn)換算法生成部分解密密文CT′。
7)Decryptout(CT,CT′,RK)。假如S滿足訪問策略A1,那么用戶是一個授權(quán)用戶,此時用戶利用驗證密鑰RKDS計算并檢查Vrfyη1(ct,σM)=1,如果相等用戶可解密密文輸出明文M,否則輸出⊥。假如S滿足訪問策略A2,那么用戶是一個非授權(quán)用戶,此時用戶利用驗證密鑰RKVS計算并檢查Vrfyη2(ct,σR)=1,如果相等用戶可解密密文輸出明文R,否則輸出⊥。
8)Trace(PK,T,SK),輸入公鑰PK、追責列表T和私鑰SK。該算法首先驗證私鑰SK是不是一個合理的私鑰以確定是否需要進行追責。如果密鑰SK是一個合理的私鑰,則輸出一個與私鑰SK相關(guān)的身份id;否則輸出┬表示私鑰不合理,不需要追責。
本節(jié)提出支持可追責和完全可驗證外包解密CP-ABE方案的選擇性CPA安全模型。可以由以下攻擊者A和挑戰(zhàn)者C之間的游戲來描述。
Init:攻擊者A設置一個挑戰(zhàn)訪問策略A*。
Setup:挑戰(zhàn)者C執(zhí)行初始化算法Setup (1λ,U),將公共參數(shù)PK傳送給攻擊者,保留主密鑰MSK。
Phase 1:設置集合D和表格F初始化為空,攻擊者A向挑戰(zhàn)者C發(fā)起如下詢問:
1)私鑰詢問:攻擊者A對屬性S進行密鑰詢問,挑戰(zhàn)者C運行密鑰生成算法生成私鑰SKS,并設置D=D∪{S}。然后將私鑰SKS返回給攻擊者A,但是限制條件是私鑰不能滿足訪問策略A*。
2)轉(zhuǎn)換密鑰詢問:攻擊者A對屬性S進行轉(zhuǎn)換密鑰詢問,C掃描表F中的元組(S,SKS,TKS,RKS)。如果這一元組存在,則返回TKS給A;否則運行轉(zhuǎn)換密鑰生成算法得(TKS,RKS),并將元組(S,SKS,TKS,RKS)存儲在表F中,將轉(zhuǎn)換密鑰TKS返回給A。
假定如果有用戶已經(jīng)針對一組屬性S發(fā)出私鑰查詢時,A不會針對這一相同屬性S進行轉(zhuǎn)換密鑰查詢;否則,A可以直接利用轉(zhuǎn)換密鑰生成算法得到轉(zhuǎn)換密鑰。
Phase 2:此階段繼續(xù)進行Phase 1相同的私鑰詢問,對于所有的私鑰屬性不能滿足訪問策略A*。
Guess:攻擊者輸出對β進行猜測的β′∈{0,1},如果β′=β,則攻擊者贏得此游戲。
攻擊者A在游戲中的優(yōu)勢可以定義為|Pr[β=β′]-1/2|。
定義3 如果所有多項式時間攻擊者在上述安全模型中具有可忽略的優(yōu)勢,那么支持可追責和完全驗證的外包解密CP-ABE方案是選擇性CPA安全的。
通過攻擊者A和挑戰(zhàn)者C之間的游戲,提出了一個CP-ABE外包解密方案的可驗證性定義。由于授權(quán)用戶和非授權(quán)用戶的可驗證性是相同的,因此只考慮授權(quán)用戶的部分。游戲描述[15]如下:
Init:攻擊者設置一個挑戰(zhàn)的訪問策略A*。
Setup(1λ,U):挑戰(zhàn)者C執(zhí)行初始化算法Setup,將公共參數(shù)PK傳送給攻擊者,保留主密鑰MSK。
Phase 1:攻擊者A進行如2.2節(jié)中Phase 1的私鑰詢問和轉(zhuǎn)換密鑰詢問。
Challenge:A提交一個挑戰(zhàn)明文M*,然后由C計算挑戰(zhàn)密文CT*發(fā)送給攻擊者A。
Phase 2:此階段繼續(xù)進行階段1相同的私鑰詢問,對于所有的私鑰屬性不能滿足訪問策略A*。
Output:攻擊者輸出一組屬性集S*和一轉(zhuǎn)換密文CT*′,假設攻擊者擁有密鑰元組(S*,SK*,TK*,RK*)。假如攻擊者能解密Decryptout(PK,CT*,CT*′,RK*)?{M*,⊥},則攻擊者贏得此游戲。
本節(jié)給出可追責密文策略屬性基密碼方案的的可追責性定義。描述如下:
Setup:挑戰(zhàn)者運行初始化算法生成公共參數(shù)PK發(fā)送給攻擊者。
Key Query:攻擊者向挑戰(zhàn)者發(fā)起關(guān)于解密密鑰相關(guān)的屬性集(id1,S1),(id2,S2),…,(idq,Sq)詢問。
Key Forgery:攻擊者輸出一個解密密鑰SK*。如果追責算法Trace(PK,T,SK*)≠┬(即SK*是合理)和Trace (PK,T,SK*)?{id1,id2,…,idq} 說明攻擊者贏得游戲。攻擊者在游戲中的優(yōu)勢定義為Pr[Trace (PK,T,SK*)?{┬} ∪{id1,id2,…,idq} ]。
定義5 如果所有的多項式時間攻擊者在這個游戲中的優(yōu)勢是微不足道的,那么可追責的密文策略屬性基加密方案是完全可追責的。
本章提出一個可追責和完全可驗證外包解密的CP-ABE方案(Traceable and Fullly Verifiable Outsourced decryption CP-ABE, T-FVO-CP-ABE),通過追蹤機制可以判斷是否有合法用戶出賣私鑰。根據(jù)Green的方案[3],增加一個消息認證機制來實現(xiàn)轉(zhuǎn)化密文的驗證性。通過設置兩個訪問結(jié)構(gòu),可同時使授權(quán)用戶和非授權(quán)用戶驗證外包轉(zhuǎn)換密文的正確性。
SKDS=(DS,K=gα/(a+c)yt1,K′=c,L=gt1,
SKVS=(VS,KP=gα/(a+c)yt2,KP′=c,LP=gt2,
CM=M⊕H3(e(g,g)αs1),η1=H1(e(g,g)αs1),
C1=gs1,C1′=gas1,
CTM=(CM,C1,C1′, {C1,i,D1,i}i∈[I])
和
CR=M⊕H3(e(g,g)αs2),η2=H1(e(g,g)αs2),
C2=gs2,C2′=gas2
CTR=(CR,C2,C2′,{C2,i,D2,i}i∈[I])
計算:
σ1=H2(CM‖CR)η1,σM={σ1,H2(CM‖CR)}
σ2=H2(CM‖CR)η2,σR={σ2,H2(CM‖CR)}
最后輸出密文:CT=(A1,A2,CTM,σM,CTR,σR)。
Decrypt(SK,CT,S):該算法輸入私鑰SK、屬性集S和密文CT。
e(g,g)αs1·e(g,y)(a+c)t1s1
η1=H1(EM/DM),用戶檢測e(σ1,g)=e(H2(CM‖CR),gη1)是否成立,假如成立則計算出明文M=CM⊕H3(EM/DM),否則輸出⊥。
e(g,g)αs2·e(g,y)(a+c)t2s2
η2=H1(ER/DR),用戶檢測e(σ2,g)=e(H2(CM‖CR),gη2)是否成立,假如成立則計算出明文R=CR⊕H3(EM/DM),否則輸出⊥。
TKDS=(DS,K1=K1/z1,K1′=K′,L1=L1/z1,
假如是非權(quán)威用戶,那么生成非權(quán)威用戶的轉(zhuǎn)換公鑰為:
TKVS=(VS,KP2=KP1/z2,KP2′=KP′,LP2=LP1/z2,
相應的轉(zhuǎn)換私鑰分別為RKDS=z1和RKVS=z2。
Transform(TK,CT):運行解密算法輸入密文CT和轉(zhuǎn)換密鑰TK。權(quán)威用戶轉(zhuǎn)換密鑰TK=TKDS,非權(quán)威用戶轉(zhuǎn)換密鑰TK=TKVS。然后計算:
授權(quán)用戶:
e(g,g)αs1/z1·e(g,y)(a+c)t1s1/z1
非授權(quán)用戶:
e(g,g)αs2/z2·e(g,y)(a+c)t2s2/z2
如果屬性集S滿足訪問策略A1,則輸出轉(zhuǎn)換密文CT′=(CM,DM′,EM′,σM);如果屬性集S滿足訪問策略A2,則輸出轉(zhuǎn)換密文CT′=(CR,DR′,ER′,σR)。
Decryptout(CT,CT′,RK):外包解密算法輸入原始密文CT、轉(zhuǎn)換生成密文CT′和驗證密鑰RK。權(quán)威用戶轉(zhuǎn)換密鑰RK=RKDS,非權(quán)威用戶轉(zhuǎn)換密鑰RK=RKVS。
1)假如屬性集S滿足訪問策略A1,則用戶檢測等式e(σ1,g)=e(H2(CM‖CR),gH1((EM′/DM′)z1))是否成立,若成立則計算出明文M=CM⊕H3((E′M/DM′)z1)。
2)假如屬性集S滿足訪問策略A2,則用戶檢測等式e(σ2,g)=e(H2(CM‖CR),gH1((ER′/DR′)z2))是否成立,若成立則計算出明文R=CR⊕H3((ER′/DR′)z2)。
Trace(PK,T,SK):輸入公鑰PK,追責列表T和私鑰SK。如果SK是SK=(K,K′,L,L′,{Ki}i∈S)的形式,并且滿足以下所有四項檢查,那么它是一個合理的私鑰,其解密權(quán)限由屬性集合Sω={i|i∈S∧e(Ti,LK′L′)=e(g,Ki)≠1}描述,否則該算法將會輸出┬表示它不是合理的私鑰。如果私鑰SK是一個合理的私鑰,該算法將會檢查K′是否在追責列表T中,如果K′在追責列表T中,則該算法輸出相應的身份id,否則輸出一個特殊的身份idφ。
具體的授權(quán)用戶私鑰檢查條件如下:
(1)
e(g,L′)=e(ga,L)≠1
(2)
e(gagK′,K)=e(g,g)a·e(LK′L′,y)≠1
(3)
e(Ti,LK′L′)=e(g,Ki)≠1; ?i∈S
(4)
本節(jié)將證明上述方案是選擇CPA安全的,由于訪問策略A1和A2是相同的,因此本文只考慮訪問策略的證明。
定理1 如果屬性加密的外包解密方案[3]是選擇性CPA安全,并且消息認證碼[16]是一次性簽名,那么本文方案是選擇性的CPA安全。
證明 為了證明這個引理的正確性,本文建立三個安全性游戲。
Game0:攻擊者A發(fā)送兩個等長的挑戰(zhàn)密文M0、M1和挑戰(zhàn)訪問策略A*,挑戰(zhàn)者C選擇一個隨機比特位b∈{0,1},分別通過算法Encrypt′(PK,Mb,A*) →ct*′和Macη(ct*′)→σ*計算挑戰(zhàn)密文組件ct*′和σ*,其中η由秘密共享值計算,最后輸出挑戰(zhàn)密文。
Game1:除了攻擊者A選擇兩個等長的挑戰(zhàn)消息外,Game1和Game0基本相同。挑戰(zhàn)者C通過算法Encrypt′(0l1,A*) →ct*′計算挑戰(zhàn)密文的組件ct*″,其中0l1是一個與消息Mb相同長度的隨機值。最后輸出挑戰(zhàn)密文。
Game2:Game2與Game1基本相同,除了返回攻擊者的挑戰(zhàn)密文不同外,其中挑戰(zhàn)密文計算如下:Encrypt′(0l1,A*) →ct*′,Macη(0l2)→σ*,其中0l2是一個隨機值。最后輸出挑戰(zhàn)密文。
引理1 如果基于屬性加密方案[3]是選擇性CPA安全,那么Game1和Game0是計算上不可區(qū)分的。
證明 假設存在一個PPT敵手A有不可忽略的優(yōu)勢可以區(qū)分Game1和Game0,那么便可找到一個模擬器B以一個不可忽略的優(yōu)勢打破ABE方案[3]的CPA安全。假如C是一個挑戰(zhàn)者,B讓A運行如下步驟:
Init:敵手A選擇一個挑戰(zhàn)訪問策略A*。
Setup(1λ,U):挑戰(zhàn)者C執(zhí)行初始化算法Setup′(1λ,U)得主密鑰對,模擬器B將公共參數(shù)PK傳送給敵手A。
Phase 1:敵手A可以獲得對屬性S的私鑰詢問和轉(zhuǎn)換密鑰詢問的結(jié)果,因為B能夠通過挑戰(zhàn)者C運行相同密鑰詢問獲得相同的結(jié)果。
Challenge:A提交兩個字符串相同的明文M0和M1。模擬器B隨機選擇一位b∈{0,1}計算得σ*,返回(m0,m1)=(Mb,0l1)給挑戰(zhàn)者C。挑戰(zhàn)者C隨機選擇一比特位β∈{0,1},運行加密算法生成密文C*。最后模擬器返回挑戰(zhàn)密文(A*,C*,σ*)給敵手A。
Phase 2:此階段繼續(xù)進行Phase 1相同的私鑰詢問,如果滿足訪問策略則攻擊者就可以直接解密了。
Guess:攻擊者輸出對b進行猜測的b′∈{0,1},如果b′=b,則攻擊者贏得此游戲。
當密文由消息Mb加密生成時,認為A的觀點與Game0完全相同;而對B的加密詢問由一個隨機值0l1來響應時,則A的觀點與Game1完全相同。根據(jù)ABE方案[3]的安全性,可以確定區(qū)分Game1和Game0的優(yōu)勢是可以忽略不計。
引理2 假如本文中使用的消息認證碼是一次性簽名,那么不存在PPT敵手以一個不可忽略的優(yōu)勢區(qū)分Game1和Game2。
證明 假設存在一個PPT敵手A可以一個不可忽略的優(yōu)勢區(qū)分Game1和Game2,那么便可找到一個模擬器B以一個不可忽略的優(yōu)勢打破消息認證碼的一次選擇明文攻擊安全。假如C是一個挑戰(zhàn)者,B讓A執(zhí)行如下步驟:
Init:敵手A選擇一個挑戰(zhàn)訪問策略A*。
Setup(1λ,U):挑戰(zhàn)者C執(zhí)行初始化算法Setup′(1λ,U)得主密鑰對(PK,MSK),模擬器B將公共參數(shù)PK傳送給敵手A。
Phase 1:因為B擁有主密鑰(PK,MSK),因此可以生成轉(zhuǎn)換公鑰TK,回答相關(guān)的密鑰詢問和轉(zhuǎn)換密鑰詢問。
Phase 2:此階段繼續(xù)進行Phase 1相同的私鑰詢問,但是對于所有的私鑰屬性不能滿足訪問策略A*。
Guess:攻擊者輸出對b進行猜測的b′∈{0,1},如果b′=b,則攻擊者贏得此游戲。
下面證明本文提出的可追責和完全可驗證的外包解密CP-ABE方案是可驗證的。
定理2 如果哈希函數(shù)是耐碰撞的,則本文構(gòu)建的外包解密CP-ABE方案是可驗證的。
證明 假設存在一個PPT攻擊者A以不可忽略的優(yōu)勢攻擊上述外包的解密CP-ABE方案的可驗證性,那么可以構(gòu)建一個具有不可忽略優(yōu)勢的算法攻擊消息認證。模擬器B利用(p,G,GT,e)并讓攻擊者A執(zhí)行下列步驟:
Phase 1:因為B擁有主密鑰(PK,MSK),因此敵手A可以進行私鑰詢問和轉(zhuǎn)換密鑰詢問。
Phase 2:此階段敵手繼續(xù)發(fā)布Phase 1相同的密鑰詢問。
證畢。
引理3 假設BB2簽名方案[17]在弱CPA存在性是不可偽造的,則本文可追責和完全可驗證的外包解密CP-ABE方案是可追責的。
證明 假設存在一個PT攻擊者A有不可忽略的優(yōu)勢ε贏得此追責游戲,則可以構(gòu)造一個模擬算法B在弱選擇消息攻擊下,以同樣的優(yōu)勢ε偽造一個BB2簽名。設C是與B交互的挑戰(zhàn)者。
Key Forgery:攻擊者A輸出一個私鑰SK*給模擬者。
假設敵手A在上述游戲中獲勝,則:
Pr[Trace (PK,T,SK*)?{┬,id1,id2,…,idl}]
(5)
因此SK*=(S,K,K′,L,L′,{Ki})通過私鑰合理性檢查,且
K′?{c1,c2,…,cl}
(6)
所以有:
(7)
e(g,L′)=e(ga,L)≠1
(8)
e(gagK′,K)=e(g,g)α·e(LK′L′,y)≠1
(9)
假設L=gr,其中r是Zp中的未知元,由式(9)可得:
L′=La=gar
由式(9)可得:
e(ga+K′,K)=e(g,g)α·e(LK′L′,y)=
e(g,g)α·e(g(a+K′)r,y)=e(g(a+K′),gα/(a+K′)yr)
(10)
所以,K=gα/(a+K′)yr,模擬者計算:
(11)
引理4[17]如果假設l-SDH成立,且進行私鑰詢問的次數(shù)ls≤l,則在弱選擇消息報攻擊下,BB2簽名方案是存在性不可偽造的。
定理3 如果假設l-SDH成立,且進行私鑰詢問的次數(shù)ls≤l,則本文立案是可追責的。
本節(jié)將與文獻[4,5,7]的方案在性能方面進行對比如表1所示。令e表示雙線性對的運算時間消耗,E表示冪指數(shù)運算時間消耗,|G|和|GT|表示群G和GT的元素大小,l表示屬性個數(shù),lm表示消息長度,lH表示對稱加密密文長度,lH0表示驗證密鑰長度。
表1 幾種解密方案性能對比分析
針對CP-ABE方案中的用戶私鑰泄露和運算速度慢等問題,本文提出一個可追責和可完全驗證的外包解密CP-ABE方案。相比已有的方案,本文實現(xiàn)了對密鑰泄露的可追責性以及授權(quán)用戶和非授權(quán)用戶都可驗證外包計算結(jié)果的正確性。一是授權(quán)用戶可以驗證轉(zhuǎn)換后的密文的正確性,并解密密文得到原始信息;另一個是未授權(quán)用戶也可驗證轉(zhuǎn)換密文的正確性,但是他不能解密密文。此外,本文在標準模型中證明了所提出的方案是選擇性CPA安全的,同時也可追責密鑰泄露者。本文方案與現(xiàn)有可驗證方案相比增加的計算復雜性可忽略不計。如何實現(xiàn)一個高效的、支持大屬性域的T-FVO-CP-ABE方案,將是我們下一步的重點研究工作。