馬 華, 顏雪薇, 劉振華, 董恩廷
(西安電子科技大學(xué) 數(shù)學(xué)與統(tǒng)計學(xué)院, 西安 710071)
在云計算環(huán)境下, 用戶為節(jié)省本地存儲資源通常把數(shù)據(jù)加密后上傳至云服務(wù)器, 供授權(quán)用戶共享. 但在實際云計算應(yīng)用中, 數(shù)據(jù)經(jīng)常會共享給一些具體身份信息未知的用戶, 這種情況即需要一個細(xì)粒度的訪問控制策略, 屬性基加密機制解決了該問題. 但在動態(tài)的屬性加密系統(tǒng)中, 仍存在許多問題, 如在云存儲系統(tǒng)中, 如果一個不誠實的授權(quán)用戶為了某些利益把他的解密密鑰泄漏給一些未被授權(quán)的用戶, 使得未授權(quán)用戶可以訪問存儲在云上的敏感數(shù)據(jù), 則會導(dǎo)致數(shù)據(jù)擁有者的隱私遭到泄漏. 因此, 如何通過被泄漏的密鑰追蹤到不誠實用戶的身份, 如何撤銷不誠實用戶的解密權(quán)限以及如何避免屬性中心非法生成和發(fā)放私鑰的行為是亟待解決的問題[1]. Lee[2]構(gòu)造了支持用戶撤銷的屬性基加密方案, 但該方案不能解決惡意用戶追蹤和機構(gòu)可追責(zé)的問題; Ning等[3]提出了支持追責(zé)的屬性基加密方案, 該方案使用“不動點”作為密鑰擁有者的標(biāo)識符, 把密鑰擁有者的身份嵌入私鑰組件中, 只要獲取被泄漏的私鑰, 即可從私鑰中提取到用戶的身份. 同時, 通過中心與用戶交互生成解密密鑰, 解決了半信任中心濫用密鑰的問題. 但該方案還存在以下缺點:
1) 私鑰生成安全問題. 用戶隨機選擇一個值c′, 把私鑰中的c轉(zhuǎn)換為c·c′即可將私鑰隨機化, 且隨機化的私鑰可通過密鑰可用性測試, 但密鑰中嵌入的身份已改變;
2) 屬性個數(shù)需在系統(tǒng)建立階段被預(yù)先確定, 當(dāng)添加新屬性時, 需重新建立系統(tǒng);
3) 只能追蹤到惡意用戶的身份, 但不支持用戶解密權(quán)限的撤銷.
針對上述問題, 本文在支持大屬性空間方案[4]的基礎(chǔ)上, 提出一個支持追責(zé)和用戶撤銷的屬性基加密方案. 該方案使用文獻(xiàn)[5]中的方案解決了私鑰生成的安全問題; 使用自更新加密[6]方案和完全子集[7]實現(xiàn)用戶的即時撤銷, 并達(dá)到前向/后向安全性, 即保證用戶既不能訪問以后加密的消息, 也不能解密以前的密文.
系統(tǒng)模型如圖1所示, 本文方案的框架主要由以下5個主體組成.
圖1 系統(tǒng)模型Fig.1 System model
1) 云服務(wù)器: 為系統(tǒng)中用戶提供存儲服務(wù);
2) 數(shù)據(jù)擁有者: 把自己的加密數(shù)據(jù)上傳至云服務(wù)器, 以便與其他用戶共享;
3) 用戶: 從云服務(wù)器上下載共享的數(shù)據(jù), 并解密密文得到相應(yīng)的明文;
4) 屬性中心: 建立系統(tǒng)并與用戶交互生成用戶的私鑰; 執(zhí)行追蹤過程, 將追蹤到的結(jié)果發(fā)送給數(shù)據(jù)擁有者; 但數(shù)據(jù)擁有者并不確定該結(jié)果的正確性;
5) 第三方審計者: 如果追蹤到的用戶聲稱自己是無辜的, 就需要第三方審計者與用戶交互, 對追蹤結(jié)果進(jìn)行驗證.
本文方案由系統(tǒng)建立、密鑰生成、自更新密鑰生成、加密、解密、密文更新、追蹤和審計8種算法構(gòu)成.
q1≠q2, |q1|=|q2|, gcd(q1q2,(q1-1)(q2-1))=1,
1) U先隨機選擇s∈Zp并且計算RU=gs, 然后把RU、身份id和屬性集S發(fā)送給中心AT; 最后U再與AT交互地進(jìn)行關(guān)于RU的離散對數(shù)零知識證明[1];
其中A表示訪問策略, 并把(c1,SKpri)發(fā)送給U. U首先檢查下列等式是否成立:
}τ∈{1,2,…,k}),
(5)
其中SKT-ABE,k的k表示路徑上第k個節(jié)點, 最終輸出私鑰
SKS,id=(PVid,SKT-ABE,0,…,SKT-ABE,dmax).
(6)
最終輸出包含T和R的更新密鑰UKT,R={CVR,SKSUE,1,…,SKSUE,m}.
((M,ρ),C0=gt,C1=gat, {Ci,1=wλivti,Ci,2=(uρ(i)h)-ti,Ci,3=gti}i∈{1,2,…,l}).
(7)
產(chǎn)生自更新加密[6]密文CHSUE的過程如下:
首先, 通過計算ψ(T)得到一個標(biāo)簽L∈{0,1}d,d為二叉樹的深度; 其次, 選擇隨機指數(shù)s1,s2,…,sd∈Zp, 設(shè)置一個指數(shù)向量s=(s1,s2,…,sd), 并且得到:
(8)
對于1≤j≤d, 令L(j)=L|d-j‖1, 其中,L|d-j表示L前(d-j)個比特值, ‖表示一個連接符. 執(zhí)行步驟如下:
3) 對于某個d′≤d, 移除所有空的CH(j), 并且設(shè)置CHSUE=(CH(0),CH(1),…,CH(d′)), 其只由非空的CH(j)組成, 注意CH(j)要根據(jù)前序遍歷安排. 最終輸出密文為
CHA,T=(CHT-ABE,CHSUE,C=Ωtm).
(9)
輸入與訪問策略A和時間T相關(guān)的密文CHA,T=(CHT-ABE,CHSUE,C), 與屬性集S和用戶身份id相關(guān)的密鑰SKS,id=(PVid,SKABE,0,…,SKABE,dmax), 與更新時間T′和撤銷列表R相關(guān)的更新密鑰UKT′,R={CVR,SKSUE,1,…,SKSUE,m}和公共參數(shù)PP.
1) 如果U?R, 則通過運行完全子集[7]匹配算法(CVR,PVU)得到(Sj,Si); 否則, 輸出⊥.
(10)
(11)
EKT-ABE=D/E,
(12)
其中,τ是集合S中的屬性ρ(i)的索引,τ∈|S|與i∈|I|范圍相同.
3) 從CHT中找到CH(j), 其中L(j)是L′=ψ(T′)的前綴, 計算:
,Ki,2).
(13)
4) 通過計算
m=C·(EKT-ABE·EKSUE)-1
(14)
得到明文m, 注意與下標(biāo)m區(qū)分; 否則, 輸出⊥.
首先可通過計算ψ(T)得到標(biāo)簽L∈{0,1}l, 然后輸入時間T的密文CHT=(CH(0),…,CH(d′))、下一個時間點T+1、一個比特值C∈{0,1}和公共參數(shù)PP. 將L(j)作為CH(j)的標(biāo)簽. 執(zhí)行過程如下:
1) 如果L(0)的長度d小于dmax, 則選擇隨機指數(shù)sd+1∈Zp, 并為新的標(biāo)簽字符串L′=L‖C輸出密文
CHL(0)‖0是下一個時間點T+1根據(jù)前序遍歷生成的密文, 刪除CHL(0)‖1中多余的元素. 最后輸出更新后的密文
CHSUE′=(CH′(0)=CHL(0)‖0,CH′(1)=CHL(0)‖1,CH′(2)=CH(1),…,CH′(d′+1)=CH(d′)).
(16)
2) 否則, 復(fù)制CH(0)中的公共元素到CH(1)中, 并且移除CH(0), 因為CH(1)是下一時間點T+1通過前序遍歷生成的密文.
3) 輸出密文CHSUE′=(CH′(0)=CH(1),…,CH′(d′-1)=CH(d′)).
4) 最終輸出更新密文CHA,T+1=(CHT-ABE,CHSUE′,C).
輸入公共參數(shù)PP和密鑰SK, 此處的密鑰為中心和用戶交互生成的密鑰, 該密鑰結(jié)構(gòu)正常且能正常解密密文, 則從SK中T=(1+q)idrqmodq2提取身份id, 由Q=π-1modq知
TπQ=(1+q)id·πQrq·πQmodq2=(1+q)idmodq2=1+id·qmodq2,
因此, 通過
(17)
可恢復(fù)出id, 最后輸出身份id.
1) 用戶U把自己的解密密鑰SKid發(fā)送給審計者PA, 如果該密鑰結(jié)構(gòu)錯誤或不能解密密文, 則審計者PA終止交互; 否則, 轉(zhuǎn)2);
本文方案的安全性證明分為四部分: 撤銷功能的證明、中心可追責(zé)的證明、屬性基加密方案中不可區(qū)分性的證明以及用戶追蹤功能的證明. 撤銷功能的證明與文獻(xiàn)[2]方案中的撤銷證明基本相同, 中心可追責(zé)的證明較簡單, 把證明規(guī)約到離散對數(shù)問題即可. 因此, 下面只給出屬性基加密方案的證明和用戶追蹤功能的證明.
定理1如果支持大屬性空間的屬性基加密方案[4]是選擇明文安全的, 則本文方案中支持大屬性和追責(zé)的屬性基加密方案是選擇明文安全的.
證明: 為方便描述, 用Σlucpabe和Σtlucpabe分別表示文獻(xiàn)[4]方案和本文方案中的屬性基加密方案. 假設(shè)存在一個具有挑戰(zhàn)矩陣M*的敵手A, 有AdvAΣtlucpabe的優(yōu)勢來選擇性攻破方案Σtlucpabe, 其中M*是一個l×n的矩陣. 本文構(gòu)造一個算法B, 它有AdvBΣlucpabe的優(yōu)勢來選擇性攻破方案Σlucpabe, 其中,AdvBΣlucpabe=AdvAΣtlucpabe. 敵手B是敵手A的挑戰(zhàn)者.
初始化:B從A處得到一個挑戰(zhàn)策略(M*,ρ*), 并將挑戰(zhàn)策略發(fā)送給Σlucpabe. 其中: M*是一個l×n矩陣; ρ*∈F([l]→Zp).
系統(tǒng)建立: Σlucpabe發(fā)送給B公共參數(shù)PPΣlucpabe后, B隨機選擇a∈Zp及兩個隨機素數(shù)q1,q2, 令q=q1·q2, π=lcm(q1-1,q2-1), Q=π-1modq和g1=(1+q). 將ga,q和g1添加到PPΣlucpabe, 從而得到一個新的公共參數(shù)PP=(D,q,g,u,h,w,v,g1,ga,e(g,g)γjk), 將新的公共參數(shù)發(fā)送給A.
(18)
階段2: 與階段1相同.
猜測: 敵手A輸出他的猜測β′, 并將β′發(fā)送給B, B將β′發(fā)送給Σlucpabe.
表1列出了本文方案與現(xiàn)有屬性基加密方案[2-3,8]的性能比較. 為方便描述, 令dmax表示樹BT的最大深度, |I|表示滿足密文中訪問策略解密密鑰中屬性的個數(shù). 與文獻(xiàn)[2]方案相比, 本文方案犧牲了一個對運算, 但實現(xiàn)了用戶追責(zé)功能, 并避免了半信任中心濫用密鑰的問題; 與文獻(xiàn)[3]方案相比, 本文方案中的對運算個數(shù)略有增加, 但實現(xiàn)了大屬性空間與用戶撤銷功能, 并解決了密鑰生成中的安全問題; 與文獻(xiàn)[8]方案相比, 本文方案增加了常數(shù)個對運算, 但實現(xiàn)了用戶撤銷和機構(gòu)追責(zé)的功能, 并且追蹤過程無需存儲代價.
表1 不同方案的功能與效率比較
綜上所述, 本文提出了一個支持追責(zé)和用戶撤銷的屬性基加密方案. 該方案解決了對惡意用戶和半信任中心的追責(zé)問題, 并實現(xiàn)了用戶撤銷功能, 更適用于現(xiàn)實環(huán)境, 在可容許范圍內(nèi)增加了計算量, 使本文方案具有實際的應(yīng)用價值, 并且該方案被證明是選擇明文安全的.