聶旭云, 袁 玉, 孫劍飛
電子科技大學信息與軟件工程學院 網(wǎng)絡與數(shù)據(jù)安全四川省重點實驗室, 成都 610054
隨著互聯(lián)網(wǎng)和分布式計算技術的發(fā)展, 在云計算環(huán)境中進行數(shù)據(jù)共享深受各行各業(yè)的青睞, 云服務商為用戶提供強大便捷的云端計算與存儲服務, 從而降低存儲成本, 提高數(shù)據(jù)使用和共享的便捷性. 由于數(shù)據(jù)被托管在云服務器上, 這就使得用戶對數(shù)據(jù)失去控制權, 因此如何保護數(shù)據(jù)隱私與安全成為當前研究熱點之一[1,2]. 為了解決數(shù)據(jù)隱私和安全問題, 一種細粒度的基于屬性的加密[3](attribute-based encryption, ABE) 方案被提出, 該方案支持數(shù)據(jù)擁有者自己定義訪問策略來實現(xiàn)有效控制, 只有滿足相關屬性的用戶才能夠訪問數(shù)據(jù). 目前, 屬性基加密有兩種主要形式: 密文策略屬性基加密[4–6](ciphertext-policy attribute based encryption, CP-ABE) 和密鑰策略屬性基加密[7,8](key-policy attribute based encryption,KP-ABE). 在密文策略屬性基加密/密鑰策略屬性基加密中, 訪問策略附加在密文/密鑰上, 密鑰/密文與一組屬性相關聯(lián). 屬性基加密可以有效支持對一組動態(tài)甚至未知的物聯(lián)網(wǎng)節(jié)點的安全數(shù)據(jù)傳輸, 這些節(jié)點由特定的屬性描述. 然而傳統(tǒng)的屬性基加密方案只能解決用戶一方的細粒度訪問控制, 無法實現(xiàn)雙向細粒度訪問控制策略.
為了解決雙向訪問控制的問題, 由密文策略屬性基加密和密鑰策略屬性基加密聚合而成的基于雙策略屬性加密[9,10](dual-policy attribute based encryption,DP-ABE)應運而生,它允許發(fā)送方同時選擇訪問策略和屬性集來加密消息, 只有與接收方解密密鑰相關的策略和屬性與發(fā)送方相匹配時, 才能夠解密成功.盡管基于雙策略屬性加密方案可以實現(xiàn)數(shù)據(jù)發(fā)送方和接收方雙向的細粒度訪問控制, 但卻無法保證被上傳到服務器上的加密數(shù)據(jù)不會被其他惡意攻擊者篡改、編輯, 即無法保證加密數(shù)據(jù)的真實性. 一般來說, 可以通過數(shù)字簽名來保證數(shù)據(jù)源的真實性, 基于屬性的簽密[11,12](attribute-based signcryption, ABSC) 作為一種潛在的、先進的方案被提出, 它可以支持細粒度訪問控制和數(shù)據(jù)真實性. 然而該方案無法支持接收者自主選擇訪問控制策略, 即無法實現(xiàn)雙向訪問控制策略. Ateniese 等人運用握手協(xié)議[13]的原理首次提出了匹配加密[14](matchmaking encryption, ME) 方案, 該原語中發(fā)送方和接收方都可以指定其他參與者必須滿足的訪問策略或者屬性集合, 只有同時滿足訪問策略和屬性集才能恢復被加密的明文. 此外, 該方案同時在密文和發(fā)送方的訪問策略上附加簽名, 從而保證了數(shù)據(jù)的真實性. 在整個過程中, 雙方參與者都不需要與對方進行實時交互, 但是無法支持細粒度訪問控制. 為了解決細粒度訪問控制問題, Xu 等人將匹配加密和屬性基加密有效地相結合, 提出了基于屬性的匹配加密方案[15](attribute-based matchmaking encryption, MABE), 該方案不僅實現(xiàn)了雙向細粒度訪問控制, 還保證了數(shù)據(jù)的真實性.
由于數(shù)據(jù)加密過程中, 密鑰泄露或者受到第三方惡意獲取是不可避免的, 密鑰一旦泄露, 過去記錄的所有加密通信和會話都可以被檢索和解密, 從而失去機密性. 而現(xiàn)有的匹配加密等相關方案在密鑰泄露時都不能保證過去消息的機密性. 前向安全是一種理想的屬性, 即使有人擁有當前泄露的解密密鑰, 它還可以完美地確保過去消息的機密性. 目前, 能夠解決上述問題的密碼原語可以分為兩類: 前向加密和穿刺加密. 前向加密[16,17](forward encryption, FE) 通過使用戶的解密密鑰在時間段t之后失效, 從而撤銷對時間段t之前加密的任何密文的解密能力. 目前有很多前向安全相關的方案被提出, 比如基于身份的前向安全加密[18–20]、基于屬性的前向安全加密[21–23]等. 然而, 這些基于前向加密的公鑰密碼方案都需要與一個可信第三方進行交互, 從而實現(xiàn)密鑰的更新, 這就使得第三方需要時刻保持在線狀態(tài), 這種交互式的密鑰更新方式, 使得這些密碼方案不適用于實際應用部署. Matthew 等人提出穿刺加密[24](puncturable encryption, PE) 方案, 該方案實現(xiàn)了非交互式的前向安全性. 具體地說, 在該穿刺算法中輸入當前密鑰和標簽t, 就可以輸出一個新的密鑰, 該密鑰可以解密所有未在標簽t下加密的密文, 從而確保該時間段中消息的安全性. 此外, 該方案允許授權用戶在無需第三方協(xié)助的情況下自行更新密鑰.
針對上述問題, 本文提出了一種可穿刺的基于屬性的匹配加密方案(puncturable attribute-based matchmaking encryption, P-ABME). 在該方案中, 數(shù)據(jù)發(fā)送方需要將一組標簽集(t1,t2,··· ,td) 嵌入到密鑰中, 同時保持密鑰大小與基于屬性的匹配加密方案的密鑰大小一致. 一旦執(zhí)行了包含標簽集(t1,t2,··· ,td) 的密鑰穿刺算法, 那么在ti時刻加密的密文不能被數(shù)據(jù)接收方的私鑰解密. 綜上, 本文所提方案不僅繼承了基于屬性的匹配加密技術[15]優(yōu)點, 還采用穿刺加密技術確保消息的前向安全性. 此外, 本文基于嚴格的安全證明方法證明了所提出方案的安全性. 最后, 通過和其他相關密碼方案進行對比,表明本方案能夠實現(xiàn)更好的功能. 具體地說, 本文的主要貢獻包括三個方面:
(1) 提出了一種可穿刺的基于屬性的匹配加密方案. 在該方案中, 加解密雙方都可以指定細粒度訪問策略, 使得只有同時滿足雙方策略的用戶才能解密密文. 此外, 本方案通過穿刺加密技術來實現(xiàn)對選定消息、接收方或者時間段的解密能力的撤銷, 從而實現(xiàn)對過去消息的前向安全性.
(2) 在隨機預言機模型下證明了所提方案不僅能夠抵抗選擇明文攻擊, 還能在選擇消息攻擊下實現(xiàn)存在不可偽造性.
(3) 首先在功能方面將本方案與其他方案進行比較, 結果表明只有本方案能夠實現(xiàn)雙向細粒度訪問控制、數(shù)據(jù)源的真實性以及前向安全性. 此外, 還在計算效率和存儲大小兩個方面對所提方案與其他相關的方案進行比較, 結果表明本方案計算開銷和存儲開銷適中.
本節(jié)對論文中涉及到的相關知識進行介紹. 包括常用符號、雙線性映射、復雜性假設、線性秘密共享方案以及形式化定義.
表1 對本文用到的符號進行說明.
表1 符號描述Table 1 Functional comparison
定義1 (雙線性映射) 假設G0和G1是階為素數(shù)p的乘法循環(huán)群, 映射e:G0×G0→G1, 如果該映射滿足下列性質:
(1) 雙線性性: 對任意u,v ∈Zp,σ,φ ∈G0, 有e(σu,φv)=e(σ,φ)u,v.
(2) 非退化性: 存在u,v ∈G0, 使得e(u,v)/=1.
(3) 可計算性: 對于任意u,v ∈G0, 存在多項式時間算法能夠計算e(u,v).則稱映射e為雙線性映射.
定義2 (困難性假設) 本文所提的方案依賴以下的復雜性假設:
(1) 決策雙線性Diffie-Hellman (DBDH) 假設: 給定一個五元組(g,gλ,gμ,gv,B), 其中λ,μ,v ∈Zp,B ∈G1,g是G0的生成元, 判斷B=e(g,g)λμv是否成立. 對于DBDH 問題, 不存在時間多項式的攻擊者以不可忽略的優(yōu)勢將(g,gλ,gμ,gv,e(g,g)λμv) 和(g,gλ,gμ,gv,B) 區(qū)分.
(2) 計算性Diffie-Hellman (CDH) 假設: 給定一個四元組(g,gλ,gμ,V), 其中λ,μ ∈Zp, 在CDH 問題中, 計算V=gλμ是困難的.
定義3 線性秘密共享方案(LSSS) 假設有秘密共享方案Π, 其包含參與者集合P={P1,P2,··· ,Pn}, 若方案Π 滿足以下性質, 則稱方案Π 是線性秘密共享方案:
(1) 參與者的秘密共享份額構成Zp上的一個向量.
2.4.1 基于屬性的加密方案
CP-ABE 方案由以下四個算法組成.
· 系統(tǒng)公共參數(shù)建立Setup: 在該算法中, 根據(jù)隱式的參數(shù), 得到加密所需要的公鑰pk 和私鑰mk.
· 加密Encryption: 在該算法中, 根據(jù)屬性集, 消息m和pk, 得到嵌入屬性S的密文c.
· 密鑰生成KeyGen: 在該算法中, 根據(jù)訪問結構W, pk 和mk, 得到嵌入了訪問結構W 的解密密鑰dk.
· 解密Decryption: 在該算法中, 根據(jù)嵌入屬性集S的密文c, 嵌入訪問結構W 的解密密鑰dk 以及pk, 若S ∈W, 即解密成功, 恢復明文m.
CP-ABE 方案攻擊者和挑戰(zhàn)者之間的游戲如下:
· 初始化: 攻擊者挑選將要挑戰(zhàn)的屬性集S.
· 參數(shù)建立: 挑戰(zhàn)者運行Setup 算法, 得到pk 和mk, 并公開pk.
· 階段1: 攻擊者請求查詢已經(jīng)嵌入了訪問結構W 的所有私鑰, 其中S/∈Wj.
· 挑戰(zhàn)階段: 攻擊者選擇將要挑戰(zhàn)的長度相等的消息m0和m1, 并公開給挑戰(zhàn)者. 挑戰(zhàn)者首先挑選任意b ∈(0,1), 其次執(zhí)行Encryption 算法生成挑戰(zhàn)密文c*, 并將c*公開.
· 階段2: 與階段1 相同.
· 猜測階段: 攻擊者發(fā)出其猜想b′∈(0,1). 如果b′=b, 那么攻擊者取勝.
綜上可知, 攻擊者獲勝的優(yōu)勢為Adv = Pr[b′=b]-1/2. 若攻擊者的獲勝的優(yōu)勢無法忽視, 那么必然能夠找到一個可以成功攻破CP-ABE 方案的攻擊者, 否則, 證明CP-ABE 方案是可行的.
由于KP-ABE 和CP-ABE 僅在屬性集和訪問策略嵌入的位置上略有差距, 其余完全一樣, 因此本文只給出CP-ABE 的形式化定義和安全模型.
2.4.2 可穿刺加密方案
可穿刺加密方案由以下算法組成.
· 密鑰生成KeyGen(1,d)→(pk,sk0): 輸入安全參數(shù)k和每個密文最大的標簽數(shù)d, 輸出公鑰pk和sk0.
· 加密Enc(pk,m,t1,t2,··· ,td)→(ct): 輸入公鑰pk, 明文m以及標簽集t1,t2,··· ,td, 輸出密文ct.
· 穿刺Puncture(pk,ski-1,t)→(ski): 輸入一個密鑰ski-1和標簽t, 輸出一個新的密鑰ski.
· 解密Dec(pk,ski,ct,t1,t2,··· ,td)→(m,⊥): 輸入私鑰ski和密文ct, 解密成功, 輸出明文m, 解密失敗, 輸出⊥.
可穿刺加密方案的安全模型被定義為IND-PUN-ATK 游戲, 攻擊者查詢以下信息:
初始化: 輸入一個安全參數(shù)k和最大的標簽數(shù)d, 同時挑戰(zhàn)者初始化兩個空集合P,C和一個計數(shù)器n=0, 之后挑戰(zhàn)者執(zhí)行KeyGen 算法并將公鑰pk 公開給攻擊者.
階段1: 對手可以重復的下列的所有請求:
· Puncture(t): 挑戰(zhàn)者增加n, 計算skn并將標簽t添加到集合P中.
· Corrupt(): 攻擊者第一次發(fā)出該查詢時, 挑戰(zhàn)者設置C ←P并將最新的私鑰skn返回給攻擊者,后續(xù)所有查詢都返回⊥.
· Dec(pk,ski,ct,t1,t2,··· ,td): 如果ATK = CPA, 挑戰(zhàn)者返回⊥; 如果ATK = CCA, 挑戰(zhàn)者執(zhí)行m ←Dec(pk,ski,ct,t1,t2,··· ,td) 并將m返回給攻擊者.
猜測階段: 攻擊者發(fā)出其猜想b′. 如果b′=b, 那么攻擊者取勝.
2.4.3 基于匹配的加密方案
匹配加密方案由以下算法組成:
· 系統(tǒng)公共參數(shù)建立Setup(1λ): 輸入安全參數(shù)λ, 該算法輸出主公鑰mpk, 主策略密鑰kpol 和主私鑰msk, 本方案中默認所有的算法都以主公鑰mpk 作為輸入.
· 密鑰生成SKGen(msk,σ): 根據(jù)msk 和屬性σ, 得到一個與σ相關的加密密鑰ekσ.
· 密鑰生成PKGen(msk,ρ): 根據(jù)kpol 和屬性ρ, 得到一個與ρ相關的加密密鑰dkρ.
· 密鑰生成PKGen(kpol,S): 根據(jù)kpol 和策略S, 得到一個與S 相關的加密密鑰dkS.
· 加密Enc(ekσ,R,m): 輸入一個與屬性σ相關的加密密鑰ekσ, 策略R 和消息m, 輸出一個與R和σ相關的密文c.
· 解密Dec(dkρ,dkS,c): 根據(jù)嵌入ρ的解密密鑰dkρ, 嵌S 入的解密密鑰dkS以及與R 和σ相關的密文c, 若解密成功該算法輸出m, 否則輸出⊥.
匹配加密方案的安全模型如下:
(1) 選擇明文攻擊
· 初始化: 攻擊者任意選擇一個訪問策略R*.
· 參數(shù)建立: 挑戰(zhàn)者實施Setup(1λ)→(mpk,msk,kpol) 算法, 最后將mpk 公開給攻擊者.
· 階段1: 攻擊者可以對密鑰重復的發(fā)出以下查詢. 攻擊者查詢與屬性σ相關的加密密鑰. 挑戰(zhàn)者執(zhí)行SKGen 算法, 生成ekσ.
· 挑戰(zhàn)階段: 攻擊者隨機挑選消息m0和m1并公開給挑戰(zhàn)者. 挑戰(zhàn)者首先隨機挑選b ∈(0,1),其次實施Enc(ekσb,Rb,m)→c*算法來獲得挑戰(zhàn)密文c*, 同時把c*轉發(fā)給挑戰(zhàn)者.
· 階段2: 和階段1 相同.
· 猜測階段: 攻擊者發(fā)出其猜想b′, 如果b′=b, 那么攻擊者獲得勝利, 返回“1”, 否則, 返回“0”.(2) 選擇密文攻擊
· 初始化: 攻擊者任意選擇一個訪問策略σ*.
· 參數(shù)建立: 挑戰(zhàn)者實施Setup(1λ)→(mpk,msk,kpol) 算法, 最后將mpk 公開給攻擊者.
· 階段1: 攻擊者可以對密鑰重復的發(fā)出以下查詢. 攻擊者分別查詢與屬性ρ和訪問策略S 相關的解密密鑰. 挑戰(zhàn)者執(zhí)行RKGen(msk,ρ)→dkρ和PoLGen(kopl,S)→dkS算法, 分別生成dkρ和dkS.
· 挑戰(zhàn)階段: 攻擊者根據(jù)得到的解密密鑰執(zhí)行Dec(dkρ,dkS,c)→m, 獲得明文消息m.
· 階段2: 和階段1 相同.
· 猜測階段: 如果S(σ)∧(m/=⊥), 返回“1” 那么攻擊者獲得勝利, 否則, 返回“0”.
綜上所述, 基于屬性的加密方案能夠抵抗非授權用戶的合謀攻擊, 可穿刺加密能夠實現(xiàn)前向安全性,匹配加密能夠抵御選擇明文下的不可區(qū)分性和偽造攻擊.
本節(jié)給出一個能抵御明文攻擊以及在選擇消息攻擊下存在不可偽造性的方案定義, 并給出方案的安全模型.
圖1 所示為P-ABME 方案的系統(tǒng)框架圖. 系統(tǒng)框架包括四個主體: 授權中心(authorization center,AC)、數(shù)據(jù)擁有者(data owner, DO)、數(shù)據(jù)使用者(data user, DU) 以及云服務提供者(cloud service provider, CSP).
圖1 方案系統(tǒng)架構Figure 1 System framework
授權中心主要職能是分別分發(fā)加密密鑰給數(shù)據(jù)擁有者, 解密密鑰給數(shù)據(jù)使用者. 數(shù)據(jù)擁有者將文件加密之后上傳到云服務器. 當數(shù)據(jù)使用者向云服務器請求它所期望的數(shù)據(jù)擁有者的密文時, 云服務器檢索并通過驗證算法來驗證是否存在符合條件的密文, 若匹配成功, 則返回密文給數(shù)據(jù)使用者. 最后數(shù)據(jù)使用者對密文進行解密即可獲得明文文件.
P-ABME 方案由7 個多項式時間算法組成:
· 系統(tǒng)公共參數(shù)建立Setup(1λ)→(PK,MSK): 該算法由授權中心執(zhí)行, 輸入安全參數(shù)λ并返回系統(tǒng)公共參數(shù)PK 和主密鑰MSK.
· 加密密鑰生成EKGen(MSK,S)→EK: 該算法由授權中心執(zhí)行, 根據(jù)數(shù)據(jù)擁有者的屬性集S, 生成加密密鑰EK.
· 解密密鑰生成DKGen(MSK,R)→(DK,KP0): 該算法由授權中心執(zhí)行, 根據(jù)數(shù)據(jù)擁有者的屬性集R, 生成加密密鑰DK 和穿刺密鑰KP0.
· 穿刺密鑰生成Puncture(PK,KPi-1,t)→KPi: 該算法由權威機構執(zhí)行, 輸入一個密鑰KPi1和標簽t, 輸出一個新的密鑰KPi.
· 加密Encrypt(EK,R,S′,M,(t1,t2,··· ,tl)∈{0,1}*/t0)→CT: 該算法由數(shù)據(jù)擁有者執(zhí)行, 輸入數(shù)據(jù)擁有者的密鑰EK, 數(shù)據(jù)使用者的屬性集合R, 數(shù)據(jù)擁有者的屬性集合S′, 消息M以及一組標簽集(t1,t2,··· ,tl)∈{0,1}*/t0, 生成密文CT.
· 驗證Verify(S,CT)→{0,1}: 輸入與數(shù)據(jù)擁有者相關聯(lián)的策略S和密文CT, 當S|=S時, 云服務器返回1, 否則返回0.
· 解密Decrypt(DK,CT,KPi)→(M,⊥): 根據(jù)密文CT 和解密密鑰DK, 數(shù)據(jù)接收者恢復出明文M或者解密失敗返回⊥.
可穿刺的基于屬性的匹配加密方案不僅可以抵抗選擇明文攻擊(IND-CPA), 而且在選擇消息攻擊下具有存在不可偽造性(EUF-CMA). 具體安全模型如下:
3.2.1 選擇明文攻擊
定義4 如果多項式時間攻擊者在贏得選擇明文攻擊游戲中具有可忽略的優(yōu)勢, 那么本方案在隨機預言機模型下是安全的. 攻擊者A獲得游戲成功的優(yōu)勢定義為: Adv = |Pr[?′=?]-1/2|, 其中?,?′∈{0,1}.
攻擊者A和挑戰(zhàn)者B之間的攻擊游戲:
· 初始化: 攻擊者A挑選一個挑戰(zhàn)集合R*和一組標簽集t*1,t*2,··· ,t*l.
· 參數(shù)建立: 挑戰(zhàn)者B初始化兩個空集合P,C和一個計數(shù)器n=0. 其次,B執(zhí)行Setup 算法生成公共參數(shù)PK 和主密鑰MSK 并將PK 發(fā)送給攻擊者.
· 階段2: 和階段1 相同.
· 猜測階段:A輸出?*∈{0,1}. 如果?*=?,B返回“1”, 否則, 返回“0”.
3.2.2 存在不可偽造性
定義5 如果不存在多項式時間內(nèi)的攻擊者A在EUF-CMA 游戲中以不可忽略的優(yōu)勢攻破本方案,那么本方案在選擇消息攻擊下具備存在不可偽造性.
攻擊者A的挑戰(zhàn)游戲如下:
· 初始化: 攻擊者A挑選一個挑戰(zhàn)集合S′*并將其嵌入在偽造簽名中.
· 參數(shù)建立: 當挑戰(zhàn)者B獲得挑戰(zhàn)屬性集S′*之后, 執(zhí)行Setup 算法生成公共參數(shù)PK 和主密鑰MSK, 并將PK 發(fā)送給攻擊者.
· 查詢階段: 攻擊者A在加密預言機和簽名預言機上對S和(S′,m) 進行查詢. 然后挑戰(zhàn)者B將加密密鑰EK 作為查詢結果返回給攻擊者A.
· 偽造階段: 在消息m*中生成與S′*相關的簽名σ*.
如果(m*,S′*) 在簽名預言機中沒有查詢到, 且不存在滿足條件的S*∈S′*的屬性集S*被傳遞給加密預言機, 那么認為σ*是m*上與S′*相關的有效簽名, 攻擊者A贏得游戲. 攻擊者A的優(yōu)勢即為贏得EUF-CMA 游戲的概率.
P-ABME 方案的具體描述如下.
系統(tǒng)公共參數(shù)建立(Setup): 該算法由授權中心完成, 來生成系統(tǒng)所需要的公共參數(shù). 具體來說, 該算法首先選擇一個雙線性組B=(G0,G1,P,E,G),其中g是G0在素數(shù)階p下的一個生成元. 同時,它還隨機選擇指數(shù)α,β,τ ∈Zp以及四個抗碰撞哈希函數(shù)H1,H2,H3,H4, 其中H1:ΨS →G0,H2:ΨR →G0,H3:{0,1}*→G0以及H4:{0,1}*→Zp. 接下來, 該算法隨機選擇h1,h2,··· ,hl ∈G0并計算l次多項式q(i) 使得q(0)=τ. 最后該算法定義U(x)=gq(x),t0為正常操作中未使用的區(qū)分標簽, 并輸出系統(tǒng)公鑰pk 和系統(tǒng)主密鑰msk:
加密密鑰生成(EKGen): 該算法由授權中心實現(xiàn). 它將數(shù)據(jù)擁有者的屬性集分解為S= (attS,1,attS,2,··· ,attS,d) 并隨機選擇si ∈Zp. 最后計算加密密鑰EK=(ek1,i,ek2,i):
加密(Encrypt): 該加密算法由數(shù)據(jù)擁有者實行. 將數(shù)據(jù)使用者的屬性集分解為:R=(attR,1,attR,2,··· ,attR,f), 數(shù)據(jù)擁有者的屬性集分解為S′= (attS,1,attS,2,··· ,attS,d′) 其中S′∈S, 并隨機選擇
本節(jié)不僅分析了驗證算法和解密算法的正確, 還證明了方案的安全性.
(1) 假設接收方的屬性集滿足接收方的訪問控制策略, 即R|=R 時:
由公式(1)和公式(2)計算可得:
上述推導證明了公式(3)成立, 即解密算法的正確性得到驗證.
(2) 驗證算法正確性分析:
綜上可知, 等式(4)成立, 即驗證算法的正確性得到驗證.
定理1 如果CDH 假設成立, 那么不存在一個概率多項式時間攻擊者A能破壞本方案EUF-CMA安全性.
證明: 如果攻擊者A以一個可以忽略的優(yōu)勢攻擊本方案, 那就意味著攻擊者A可以解決CDH 困難性問題, 即攻擊者A根據(jù)(A=ga,B=gb) 計算出gab.
假設A在H1預言機中最多查詢qH1次, 在H3預言機中最多查詢qH3次, 挑戰(zhàn)者B將H1和H3預言機的結果保存在表L1和L3中. 此外,B隨機選擇一個σ ∈[1,qH3], 如果用i查詢H1,A檢查L1并執(zhí)行以下操作:
· 如果在L1中選中了查詢條目, 則將相同的答案返回給A.
· 否則,A作出如下模擬:
– 如果i/∈S*,A隨機選擇βi ∈Zp并響應答案H1(i)=gβi.
– 如果i ∈S*,A隨機選擇βi ∈Zp并響應答案H1(i)=A-βi=gaβi.
當使用mi在H3預言機中進行查詢時,A檢查L3并執(zhí)行以下操作:
· 如果在L3中選中了檢查條目, 則將相同的答案返回給A.
· 否則,A作出如下模擬:
– 如果i=σ,A隨機選擇αi,β′i ∈Zp并響應答案H3(i)=Aαigβ′i=(ga)αigβ′i.
綜上討論, 可以得出gab是可以被計算出來的, 這就意味著CDH 問題被解決了. 眾所周知CDH 問題是困難的, 因此與假設相矛盾, 即P-ABME 方案具有EUF-CMA 安全性.
定理2 如果DBDH 假設成立, 則不存在一個概率多項式時間攻擊者以不可忽略的優(yōu)勢破壞贏得選擇明文攻擊安全挑戰(zhàn), 因此系統(tǒng)具有IND-CPA 安全性.
證明: 假設存在一個攻擊者A以不能忽略的優(yōu)勢?破壞P-ABME 的IND-CPA 安全性. 那么在游戲中, 攻擊者A通過模擬算法B來解決DBDH 問題, 即在B中輸入(g,A=gx,B=gy,C=gz), 需要B判斷Ψ=e(g,g)xyz是否成立, 其中Ψ是G1的隨機值.
階段1 & 2:
情況1 (R?R*):A查詢LSSS 訪問和標簽集. 假設將訪問控制策略R=(M,π) 和標簽t添加到空集合P, 并隨機選擇一個-→x=(x1,x2,··· ,xmM) 使其滿足x1=β+τrσ, 其中σ ∈Zp,τ=x. 對于所有π*(i)∈-→x, 均滿足R-→x=-→0.
· Courrpt(): 當攻擊者A第一次請求查詢時,B把最新的穿刺密鑰KPn返回給A并設置P →C,后續(xù)所有查詢都返回⊥.
情況2 (R/?R*): 同理按照情況1 來模擬DK = (dk1,i,dk2,i) 并設置穿刺密鑰KP0=(KP01,KP02,KP03,KP04): KP01=(gx)y+r′σ-y=(gτ)r+rσ, KP02=(gy)θt0, KP03=gy, KP04=t0. 將n增加1, 計算Puncture(pk,KPn-1,t)→KPn并將t添加到集合P中.
當R ?R 時, 考慮以下幾點:
挑戰(zhàn)階段:A挑選兩段等長的明文消息m0,m1并提交給B,B隨機選擇生成挑戰(zhàn)密文需要的隨機值? ∈{0,1}. 其次, 設置c0=m? ·Φ,c1=gz,c2,j=gzθtj,s=z.
猜測階段:A輸出?*∈{0,1}, 如果?*=?,B返回1, 否則返回0.
如果Ψ=e(g,g)xyz, 那么模擬結果和真實的游戲結果一樣, 即A以?+1/2 的優(yōu)勢能夠猜出正確結果. 如果Ψ是G1的隨機值, 那么A猜測正確的概率為1/2. 這明顯與DBDH 問題的困難性相違背, 因此P-ABME 具有IND-CPA 安全性.
本節(jié)從功能、性能兩個維度對所提方案和其他方案進行比較分析.
表2 給出了本文方案與其他方案在前向安全、雙向匹配、細粒度訪問控制、數(shù)據(jù)真實性、外包驗證和密鑰自更新等功能上的對比, 其中“?” 表示方案具有該功能, “×” 表示方案不具備該功能.
表2 功能對比Table 2 Functional comparison
細粒度訪問控制和雙向匹配意味著數(shù)據(jù)發(fā)送方和接收方都可以定義它們的策略, 當只有滿足雙方定義的訪問策略時, 接收方才能解密訪問發(fā)送方的數(shù)據(jù). 此外, 數(shù)據(jù)的真實性和簽名可驗證性意味著簽名消息不能被其他惡意攻擊者偽造和篡改. 前向安全和密鑰自更新可以確保過去消息的機密性, 授權用戶可以在沒有第三方幫助的情況下自行更新密鑰來重新獲得訪問權限.
從表2 可以看出, 文獻[7—9] 只能實現(xiàn)單邊細粒度訪問控制, 無法實現(xiàn)前向安全、雙向匹配、數(shù)據(jù)真實性等功能; 文獻[12,13] 只能實現(xiàn)雙向細粒度訪問控制; 文獻[14,15] 可以實現(xiàn)細粒度訪問, 數(shù)據(jù)的真實性以及外包驗證, 但是不具有前向安全、密鑰自更新以及雙向匹配等功能; 文獻[22] 采用前向加密與屬性基加密相結合的方式實現(xiàn)了細粒度訪問控制和前向安全, 但是需要第三方時刻處于在線狀態(tài)來輔助實現(xiàn)密鑰的更新. 此外, 該工作僅支持發(fā)送者選擇訪問控制而接收者無法選擇訪問及控制, 因此不支持密鑰自更新、雙向匹配等功能; 可穿刺加密具有密鑰自更新、非交互式等特點. 因此文獻[24] 將穿刺加密與屬性基加密相結合, 解決了文獻[22] 中的不足, 使該工作有效地保證前向安全并實現(xiàn)細粒度訪問控制, 但是仍然存在雙邊匹配、數(shù)據(jù)真實性等問題; 文獻[17] 完美地解決了雙向匹配問題, 并采用外包驗證的方式對數(shù)據(jù)的真實性進行驗證, 不足的是無法實現(xiàn)細粒度訪問控制和前向安全; 文獻[18] 中的方案在文獻[17] 的基礎上將匹配加密和屬性基加密有效的結合起來, 實現(xiàn)了匹配加密和屬性基加密的功能. 具體來說, 該方案可以實現(xiàn)雙邊的細粒度訪問控制并支持外包驗證來確保數(shù)據(jù)的真實性, 但仍然存在前向安全和密鑰自更新問題; 本方案將文獻[18] 和文獻[24] 結合起來, 從而實現(xiàn)細粒度訪問控制、雙向匹配、數(shù)據(jù)真實性、前向安全以及密鑰自更新等功能.
表3 和表4 給出了本方案與其他方案在長度和效率這兩方面進行比較的情況. 其中符號|G0|,|G1| 表示群G0,G1中元素的長度,L表示字符串的長度,|Zp| 表示群Zp中的元素,e0,e1,p分別表示群G0,G1中的模運算和雙線性對運算,l表示屬性的個數(shù),d表示時間片穿刺次數(shù).
表3 不同方案的存儲開銷的對比Table 3 Storage cost comparisons of different schemes
表4 不同方案的計算開銷的對比Table 4 Computation cost comparisons of different schemes
從表3 中可以看出, 在加密密鑰存儲開銷方面, 本方案比文獻[11] 的開銷要小, 比文獻[14,15] 的存儲開銷要高些. 在解密密鑰存儲開銷方面, 本方案的存儲開銷比文獻[11] 要低, 和文獻[25] 的開銷相同, 比其他文獻[4—9,14,15,19] 的存儲開銷要高. 在穿刺密鑰存儲開銷方面, 本方案和文獻[25] 的存儲開銷相同. 在密文存儲開銷方面, 本方案比其他文獻[4,9,11,14,15] 的開銷要高些, 這是因為需要設置更高長度的密文以實現(xiàn)方案的前向安全性.
從表4 中可以看到, 在加密的計算開銷方面, 本方案比文獻[4,9,11,19] 的加密計算開銷要小, 比文獻[14,15,25] 的加密計算開銷要大些. 本方案在解密密鑰生成算法的計算開銷方面比文獻[19] 要低, 而比其他文獻的計算開銷要高. 此外, 本方案比其他文獻[4,9,11,14,15,19] 的解密計算開銷高, 而和文獻[15]的解密計算開銷相同, 這是因為密文需要嵌入標簽以實現(xiàn)前向安全, 而私鑰在無第三方輔助實現(xiàn)密鑰自更新過程需要更復雜的私鑰設置, 私鑰的復雜度直接決定了解密的計算開銷.
綜上所述, 本方案在實現(xiàn)更多功能的前提下, 其計算和存儲開銷適中.
本文提出了一種可穿刺的基于屬性的匹配加密方案, 該方案將基于屬性的匹配加密方案和可穿刺加密方案有效結合在一起, 不僅實現(xiàn)了雙向細粒度訪問控制, 還保證了數(shù)據(jù)的真實性和前向安全性. 此外, 在隨機預言機模型下, 不僅證明了本方案能夠抵抗選擇明文攻擊, 還能保證在選擇消息攻擊下消息存在不可偽造性. 最后, 將所提方案和其他相關方案在功能和理論性能方面進行對比分析, 結果表明本方案在實現(xiàn)雙向細粒度訪問控制、數(shù)據(jù)真實性以及前向安全的條件下, 計算開銷和存儲開銷方面性能適中. 本方案在計算和存儲效率上還有很大的提升空間, 如何在實現(xiàn)雙向細粒度訪問和數(shù)據(jù)真實性的前提下, 實現(xiàn)輕量級數(shù)據(jù)加密和解密是未來亟待解決的問題.