韓益亮,郭凱陽(yáng),吳日銘,劉凱
(1.武警工程大學(xué)密碼工程學(xué)院,陜西 西安 710086;2.武警部隊(duì)密碼與信息安全保密重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710086)
隨著網(wǎng)絡(luò)技術(shù)的進(jìn)一步發(fā)展,空間中的數(shù)據(jù)量逐年遞增,產(chǎn)生的數(shù)據(jù)交互需求越來(lái)越多,密碼學(xué)和信息安全技術(shù)被廣泛應(yīng)用于各個(gè)領(lǐng)域。如何在保證數(shù)據(jù)安全性的同時(shí)最大限度地發(fā)揮信息的價(jià)值成為當(dāng)今網(wǎng)絡(luò)時(shí)代向前發(fā)展所必須攻克的難關(guān)之一。屬性加密[1]作為一種新型密碼體制改變了傳統(tǒng)公鑰密碼“一對(duì)一”的加密模式,在保證數(shù)據(jù)安全性的同時(shí)可以提供靈活的訪(fǎng)問(wèn)控制,在數(shù)據(jù)的安全共享方面有著先天的優(yōu)勢(shì),自2005 年提出后,就受到了國(guó)內(nèi)外學(xué)者的廣泛關(guān)注。
在Sahai 和Waters 方案[1]的基礎(chǔ)上,Goyal 等[2]構(gòu)造了首個(gè)密鑰策略的屬性加密方案,即將策略嵌入密鑰之中,通過(guò)密文中的屬性信息是否與策略相匹配來(lái)決定是否解密成功,這與Bethencourt 等[3]提出的密文策略屬性加密(CP-ABE,ciphertext-policy attribute-based encryption)方案在結(jié)構(gòu)上正好相反,上述2 種結(jié)構(gòu)也成為日后研究屬性加密技術(shù)的2 個(gè)重要分支。隨著研究的深入,想要更加成熟地應(yīng)用屬性加密技術(shù)還面臨一些亟待解決的問(wèn)題,主要包括兩類(lèi),一類(lèi)是效率問(wèn)題,即從訪(fǎng)問(wèn)結(jié)構(gòu)、困難問(wèn)題、方案設(shè)計(jì)等方面來(lái)提高屬性加密技術(shù)的性能,使其在面對(duì)多用戶(hù)、多任務(wù)量及其他高強(qiáng)度需求時(shí)能夠有更好的表現(xiàn);另一類(lèi)是安全性問(wèn)題,即解決屬性撤銷(xiāo)、密鑰濫用、隱私泄露、合謀攻擊等帶來(lái)的風(fēng)險(xiǎn)挑戰(zhàn),使方案功能更加完善可靠。
為了解決這些問(wèn)題,國(guó)內(nèi)外學(xué)者進(jìn)行了大量的研究。在訪(fǎng)問(wèn)結(jié)構(gòu)方面,最初被應(yīng)用在密文策略屬性加密方案中的是“與”門(mén)結(jié)構(gòu),這種結(jié)構(gòu)相對(duì)簡(jiǎn)單,但只能支持屬性之間的“與”操作,靈活性不夠。因此,Waters[4]采用線(xiàn)性秘密分享方案(LSSS,linear secret sharing scheme)訪(fǎng)問(wèn)結(jié)構(gòu)構(gòu)造了強(qiáng)數(shù)值假設(shè)下支持屬性與、或和門(mén)限操作的CP-ABE 機(jī)制。Ibraimi 等[5]在2009 年提出的方案采用一般訪(fǎng)問(wèn)樹(shù)結(jié)構(gòu),同樣實(shí)現(xiàn)了支持屬性的與、或、門(mén)限操作,之后大部分的屬性加密方案都采用這3 種訪(fǎng)問(wèn)結(jié)構(gòu)來(lái)構(gòu)造。2017 年,Li 等[6]將有序二元決策圖(OBDD,ordered binary decision diagram)引入CP-ABE,相較于LSSS 和訪(fǎng)問(wèn)樹(shù),這種結(jié)構(gòu)在與、或、門(mén)限操作的基礎(chǔ)上還可以提供屬性的正負(fù)值操作,使訪(fǎng)問(wèn)策略的表達(dá)能力更加豐富。之后,孫京宇等[7]在此結(jié)構(gòu)上提出了基于橢圓曲線(xiàn)且支持撤銷(xiāo)的ABE 方案;汪倩倩等[8]提出了可追蹤且支持撤銷(xiāo)的CP-ABE 方案,基于決策雙線(xiàn)性 Diffie-Hellman(DBDH,decisional bilinear Diffie-Hellman)假設(shè)并在標(biāo)準(zhǔn)模型下證明了安全性。在防止密鑰濫用方面,Hinek 等[9]最先關(guān)注了該問(wèn)題并提出了解決方案,但是需要通過(guò)第三方來(lái)協(xié)助用戶(hù)解密,不夠?qū)嵱?;Li 等[10]通過(guò)在密鑰中嵌入特定標(biāo)記來(lái)實(shí)現(xiàn)密鑰的可追蹤性;Liu 等[11-13]針對(duì)密鑰泄露問(wèn)題進(jìn)行了深入研究,提出的方案包括黑盒和白盒追蹤,且性能良好。關(guān)于密鑰委托問(wèn)題,趙志遠(yuǎn)等[14]提出了一種支持密鑰托管且同時(shí)支持屬性撤銷(xiāo)的CP-ABE 方案,還將復(fù)雜計(jì)算進(jìn)行外包,提高了系統(tǒng)的效率;閆璽璽等[15]提出的方案在解決密鑰委托的同時(shí)也支持密鑰追蹤,并通過(guò)短簽名技術(shù)保護(hù)了追蹤參數(shù)。
目前,后量子密碼體制的研究已經(jīng)成為熱點(diǎn)和趨勢(shì),而在屬性加密方面,相較基于雙線(xiàn)性映射構(gòu)造的方案,格基屬性加密方案在避免了復(fù)雜的雙線(xiàn)性配對(duì)的基礎(chǔ)上還能抗量子計(jì)算攻擊。Agrawal 等[16]在格基身份加密方案的基礎(chǔ)上討論了格基屬性加密方案的可能性;Boyen[17]提出了第一個(gè)格基ABE 方案并將安全性歸約到誤差學(xué)習(xí)問(wèn)題上;Wang 等[18]在A(yíng)grawal 等[16]方案的基礎(chǔ)上提出了基于與門(mén)的格上CP-ABE 方案,但不具有實(shí)用性;Soo 等[19]構(gòu)造了一個(gè)環(huán)上誤差學(xué)習(xí)(RLWE,ring learning with error)問(wèn)題上的CP-ABE 方案,在提升策略豐富性的同時(shí),使方案的結(jié)構(gòu)更加簡(jiǎn)潔;于金霞等[20-21]基于訪(fǎng)問(wèn)樹(shù)結(jié)構(gòu)設(shè)計(jì)了一個(gè)理想格上的CP-ABE 方案,然后依靠服務(wù)器外包構(gòu)造了一個(gè)可以即時(shí)撤銷(xiāo)屬性的方案;閆璽璽等[22]關(guān)注了格基屬性加密中的隱私保護(hù)問(wèn)題,通過(guò)半策略隱藏的方式保護(hù)了用戶(hù)隱私并在標(biāo)準(zhǔn)模型下證明了安全性;郭凱陽(yáng)等[23]在屬性撤銷(xiāo)的基礎(chǔ)上關(guān)注了屬性分層的問(wèn)題,構(gòu)造了一個(gè)格上可撤銷(xiāo)的分層屬性加密方案;王想等[24]基于以太坊構(gòu)造了格上可搜索的ABE 方案,并將安全性歸約于誤差學(xué)習(xí)問(wèn)題,實(shí)現(xiàn)了關(guān)鍵字的細(xì)粒度搜索。由于格基屬性加密方案的研究歷史較短,還有許多問(wèn)題需要深入研究,本文重點(diǎn)關(guān)注了訪(fǎng)問(wèn)結(jié)構(gòu)的優(yōu)化和抗密鑰濫用的問(wèn)題,主要工作如下。
1) 構(gòu)造了基于OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)的方案,豐富了格基屬性加密訪(fǎng)問(wèn)策略的形式,除了支持與、或及門(mén)限操作外,還支持屬性的正負(fù)值,同時(shí)降低了系統(tǒng)的計(jì)算和存儲(chǔ)開(kāi)銷(xiāo),提升了方案的整體性能。
2) 將用戶(hù)信息嵌入私鑰中,實(shí)現(xiàn)了對(duì)惡意用戶(hù)的追蹤;通過(guò)維護(hù)白名單,可以實(shí)現(xiàn)用戶(hù)的撤銷(xiāo)以及過(guò)濾非法用戶(hù)的功能;通過(guò)2 個(gè)不同的機(jī)構(gòu)獨(dú)立生成用戶(hù)的部分私鑰,降低了授權(quán)機(jī)構(gòu)泄露密鑰的風(fēng)險(xiǎn),一定程度上解決了密鑰委托的問(wèn)題。
3) 對(duì)所提方案進(jìn)行了安全性分析,結(jié)果表明,所提方案在抗量子攻擊的基礎(chǔ)上滿(mǎn)足抗合謀攻擊和選擇明文攻擊安全。通過(guò)性能對(duì)比和仿真實(shí)驗(yàn)對(duì)所提方案進(jìn)行了分析,結(jié)果表明,所提方案相較其他方案在功能和性能上具有一定優(yōu)勢(shì)。
定義1[23]設(shè)b1,b2,…,bm是n維空間上的m個(gè)線(xiàn)性無(wú)關(guān)向量,s i為系數(shù),若該組向量線(xiàn)性組合構(gòu)成的集合滿(mǎn)足
1)f(x)的次數(shù)最高項(xiàng)系數(shù)為1。
2) 多項(xiàng)式環(huán)R在Z上是不可約的。
3) 對(duì)于環(huán)上任意2 個(gè)多項(xiàng)式g(x)和h(x),都存在以下關(guān)系
其中,poly(n)表示n的多項(xiàng)式函數(shù)。
定義3對(duì)于格Λ上以向量c為中心、σ為分布標(biāo)準(zhǔn)差的n維離散高斯分布ρσ,c,有
其中,Pr[·]表示概率,若以上優(yōu)勢(shì)可忽略,那么認(rèn)為其破解Decisional-RLWE 問(wèn)題是困難的。
二元決策圖中有2種節(jié)點(diǎn),終端節(jié)點(diǎn)和非終端(決策)節(jié)點(diǎn),2 種節(jié)點(diǎn)都會(huì)被標(biāo)記0 或1,終端節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)。對(duì)于非終端節(jié)點(diǎn),其標(biāo)記為0 時(shí)的子節(jié)點(diǎn)為低節(jié)點(diǎn),標(biāo)記為1 時(shí)的子節(jié)點(diǎn)為高節(jié)點(diǎn),OBDD 是指所有變量順序固定的一種特殊二元決策圖[23]。
當(dāng)訪(fǎng)問(wèn)策略中存在m個(gè)屬性元素,假設(shè)其布爾函數(shù)表達(dá)為f(x1,x2,…,xm),由香農(nóng)展開(kāi)定理可得
算法1訪(fǎng)問(wèn)策略轉(zhuǎn)換成OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)
輸入布爾函數(shù)f、屬性集IA
輸出OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)
判斷屬性集是否滿(mǎn)足訪(fǎng)問(wèn)策略的過(guò)程如下。對(duì)于含有屬性i的非終端節(jié)點(diǎn),若i∈D,則沿high 轉(zhuǎn)向高子節(jié)點(diǎn);否則,沿low 轉(zhuǎn)向低子節(jié)點(diǎn)。迭代以上步驟直到終端節(jié)點(diǎn),若終端節(jié)點(diǎn)是1,則屬性集D符合OBDD 訪(fǎng)問(wèn)結(jié)構(gòu);若終端節(jié)點(diǎn)是0,則不符合。具體有效路徑搜索算法如算法2 所示。
算法2搜索OBDD 有效路徑
輸入OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)、用戶(hù)屬性集D
輸出有效路徑Pj失敗⊥
在布爾函數(shù)轉(zhuǎn)換的過(guò)程中,當(dāng)給定變量序后通常采取以下2 個(gè)簡(jiǎn)化規(guī)則來(lái)刪除OBDD 中的冗余節(jié)點(diǎn)。
1) S-刪除規(guī)則。當(dāng)節(jié)點(diǎn)u存在u. low =u. high 時(shí),刪除u,并將u的父節(jié)點(diǎn)直接連到u.low所對(duì)應(yīng)的節(jié)點(diǎn)處。
2) 合并規(guī)則。對(duì)于節(jié)點(diǎn)u和v,當(dāng)存在u.low=v.low和u. high=v. high 時(shí),刪除其中任一節(jié)點(diǎn),并將其父節(jié)點(diǎn)連至剩下的節(jié)點(diǎn)處。
例如,訪(fǎng)問(wèn)策略的布爾表達(dá)式為f{a1,a2,a3}=),其中,aj表示屬性正值,表示屬性負(fù)值,對(duì)應(yīng)的OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)如圖1 所示。圖1中,實(shí)線(xiàn)表示子節(jié)點(diǎn)為高,虛線(xiàn)表示子節(jié)點(diǎn)為低,則從根節(jié)點(diǎn)到終端節(jié)點(diǎn)為1 的所有有效路徑都是滿(mǎn)足訪(fǎng)問(wèn)策略的屬性集。
圖1 OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)
為了提升對(duì)大型文件的處理效率,本文方案采用對(duì)稱(chēng)加密將數(shù)據(jù)進(jìn)行加密,并將其上傳到數(shù)據(jù)服務(wù)器保存,這樣需要屬性加密的明文一般只包括文件的對(duì)稱(chēng)密鑰。在密鑰安全方面,方案設(shè)立了身份中心和屬性中心2 個(gè)獨(dú)立的機(jī)構(gòu)來(lái)分管用戶(hù)的個(gè)人信息和生成密鑰。其中,身份中心只能獲取用戶(hù)的ID 信息,無(wú)法獲取屬性集信息;而屬性中心只能獲取該用戶(hù)的屬性集信息,無(wú)法獲取ID 信息。這樣保證了任何一個(gè)機(jī)構(gòu)都不能掌握用戶(hù)完整的私鑰,增加了機(jī)構(gòu)泄露用戶(hù)密鑰的難度,通過(guò)在私鑰中嵌入特定信息,當(dāng)發(fā)生密鑰泄露時(shí),可以通過(guò)密鑰追蹤到相應(yīng)的用戶(hù)并采取撤銷(xiāo)等措施降低損失。本文方案還在用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)服務(wù)器前增加了白名單匹配,不在名單上的用戶(hù)包括未成功注冊(cè)的用戶(hù)及被撤銷(xiāo)的用戶(hù)等,通過(guò)維護(hù)這樣的白名單可以減少不必要的信息傳輸并防止非法用戶(hù)進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn)。
系統(tǒng)模型如圖2 所示,主要包括以下6 個(gè)主體。
圖2 系統(tǒng)模型
可信機(jī)構(gòu)(CA,certificate authority)。CA 為完全可信的主體,嚴(yán)格執(zhí)行規(guī)范要求,生成系統(tǒng)的公共參數(shù)和主密鑰并負(fù)責(zé)對(duì)泄露密鑰的追蹤。
身份中心(IC,identity center)。IC 為用戶(hù)生成唯一的標(biāo)記ID,生成身份私鑰及屬性中心需要的參數(shù),維護(hù)訪(fǎng)問(wèn)白名單,假設(shè)該實(shí)體是誠(chéng)實(shí)但好奇的,會(huì)按照要求執(zhí)行各種操作,但會(huì)嘗試解密密文,且無(wú)法與用戶(hù)或?qū)傩灾行倪M(jìn)行合謀。
屬性中心(AC,attribute center)。AC 為用戶(hù)生成屬性私鑰并負(fù)責(zé)發(fā)送和更新版本號(hào),和身份中心相同假設(shè)該實(shí)體是誠(chéng)實(shí)但好奇的,且無(wú)法與用戶(hù)或身份中心進(jìn)行合謀。
數(shù)據(jù)服務(wù)器(DS,data server)。DS 存儲(chǔ)數(shù)據(jù)并對(duì)需要訪(fǎng)問(wèn)的用戶(hù)進(jìn)行白名單檢索,假設(shè)該實(shí)體是誠(chéng)實(shí)但好奇的。
數(shù)據(jù)擁有者(DO,data owner)。DO 將對(duì)稱(chēng)加密的數(shù)據(jù)上傳到數(shù)據(jù)服務(wù)器,并將對(duì)稱(chēng)密鑰通過(guò)自己制定的策略生成密文上傳到數(shù)據(jù)服務(wù)器上。
數(shù)據(jù)用戶(hù)(DU,data user)。DU 可以訪(fǎng)問(wèn)需要的數(shù)據(jù)。
本文方案包括以下算法。
1) 初始化算法
Setup(λ,U) → PP,MSK 。由CA 執(zhí)行,確定安全參數(shù)λ,輸入包含所有屬性的集合U,輸出公共參數(shù)PP 和主密鑰MSK。
2) 加密算法
Encrypt(PP,M,A,β) → CT。由DO 執(zhí)行,輸入PP、明文數(shù)據(jù)M和訪(fǎng)問(wèn)策略A及版本號(hào)β,輸出密文CT。
3) 身份私鑰生成算法
IKeyGen(MSK,ID) →Kα,K β,t,σ。由IC 執(zhí)行,輸入MSK 和用戶(hù)的ID,為用戶(hù)輸出身份私鑰Kα和Kβ,之后向可信機(jī)構(gòu)傳遞安全追蹤參數(shù)σ,以及向?qū)傩灾行陌l(fā)送計(jì)算參數(shù)t。將所有合法用戶(hù)的身份私鑰Kβ匯總成系統(tǒng)白名單后再同步到數(shù)據(jù)服務(wù)器。
4) 屬性私鑰生成算法
AKeyGen(PP,MSK,D,t,β) →Kz。由AC 執(zhí)行,輸入PP、MSK、用戶(hù)的屬性集D、參數(shù)t、版本號(hào)β,輸出屬性私鑰Kz,其中版本號(hào)表示只有相同版本的密文和密鑰才能實(shí)現(xiàn)解密的功能。版本號(hào)只能由屬性中心設(shè)定且不會(huì)隨意更改,并會(huì)隨密鑰一同發(fā)送給合法用戶(hù),為了便于表示,令sk=(Kα,K β,Kz)。
5) 解密算法
Decrypt(PP,CT,sk)→M。由DU 執(zhí)行,輸入公共參數(shù)PP、密文CT、用戶(hù)的密鑰sk,解密成功輸出M,否則輸出⊥。
6) 追蹤算法
Trace(MSK,sk) → ID。由CA 執(zhí)行,輸入主密鑰MSK、用戶(hù)的密鑰sk,追蹤成功則輸出ID,失敗則輸出⊥。
本文方案流程如圖3 所示。為了便于展示,圖3中設(shè)定密鑰生成算法是在用戶(hù)加密數(shù)據(jù)之前,但實(shí)際上這是2 個(gè)不同用戶(hù)的操作,理論上數(shù)據(jù)用戶(hù)申請(qǐng)密鑰和數(shù)據(jù)用戶(hù)加密數(shù)據(jù)這2 個(gè)過(guò)程不區(qū)分時(shí)間先后順序。為了保證表述的完整性,將追蹤算法也在圖3 中進(jìn)行展示,但需要注意的是該算法同樣與其他算法不存在時(shí)間先后順序。
2.2.1 屬性加密機(jī)制的安全模型
此類(lèi)攻擊者通常為不誠(chéng)實(shí)的用戶(hù),通過(guò)描述攻擊者 A1和模擬器B 的交互游戲來(lái)定義屬性加密機(jī)制的安全模型,該游戲?yàn)檫x擇策略和選擇明文攻擊下的不可區(qū)分性游戲,具體過(guò)程如下。
初始化A1選擇一個(gè)要挑戰(zhàn)的訪(fǎng)問(wèn)策略A*,并發(fā)送給B。
系統(tǒng)設(shè)置B 運(yùn)行算法為 A1生成PP 和MSK,并將PP 發(fā)送給 A1。
階段1 A1發(fā)送私鑰查詢(xún)請(qǐng)求,B 收到A 的請(qǐng)求后為其生成私鑰并發(fā)送給 A1,注意查詢(xún)的私鑰其屬性集并不滿(mǎn)足A*。
挑戰(zhàn)A1隨機(jī)選擇長(zhǎng)度相同的明文信息M0,M1∈ { 0,1}n發(fā)送給B。B 通過(guò)拋一枚均勻硬幣來(lái)決定b∈{0,1},計(jì)算出挑戰(zhàn)密文c′后發(fā)送給 A1。
階段2重復(fù)階段1。
猜測(cè)A1對(duì)B 提交關(guān)于b的猜想b′。
若b′=b且查詢(xún)的私鑰其屬性集始終不滿(mǎn)足A*,則攻擊者贏(yíng)得此游戲,攻擊者在該游戲中的優(yōu)勢(shì)定義為。
定義5若任意攻擊者在多項(xiàng)式時(shí)間內(nèi)贏(yíng)得上述游戲的優(yōu)勢(shì)是可忽略的,則本文方案滿(mǎn)足選擇策略和選擇明文攻擊下的密文不可區(qū)分性安全。
2.2.2 可追蹤性模型
此類(lèi)攻擊者通常為惡意用戶(hù)或第三方敵手,通過(guò)偽造新的密鑰或改變密鑰中的身份信息企圖實(shí)現(xiàn)抗密鑰追蹤。通過(guò)描述攻擊者和模擬器之間的交互游戲來(lái)定義方案的可追蹤模型,具體過(guò)程如下。
初始化模擬器運(yùn)行算法生成公共參數(shù)并發(fā)送給攻擊者 A2。
密鑰查詢(xún)攻擊者向模擬器詢(xún)問(wèn)不同身份的用戶(hù)私鑰。
密鑰偽造攻擊者輸出一個(gè)用戶(hù)私鑰 sk*。
若運(yùn)行追蹤算法Trace(MSK,sk*)≠⊥ 且Trace(MSK,sk*) →ID*,ID*? { IDi},其中{IDi}表示系統(tǒng)中合法用戶(hù)的ID 集合,則認(rèn)為攻擊者贏(yíng)得此游戲。攻擊者在該游戲中的優(yōu)勢(shì)定義為Pr[Trace(MSK,sk*) ?⊥∪{ IDi}]。
定義6若任意攻擊者在多項(xiàng)式時(shí)間內(nèi)贏(yíng)得上述游戲的優(yōu)勢(shì)是可忽略的,則本文方案滿(mǎn)足可追蹤性安全。
并將σ作為安全追蹤參數(shù)傳遞給可信機(jī)構(gòu),將t作為計(jì)算參數(shù)安全傳遞給屬性中心。
AKeyGen(PP,MSK,D,t,β) →Kz。輸入公共參數(shù)PP、主密鑰MSK、用戶(hù)的屬性集合D及參數(shù)t,隨機(jī)選擇ea←χ,對(duì)于系統(tǒng)中每個(gè)屬性,若i∈D,則對(duì)應(yīng)的屬性私鑰值為ki;若i?D∧i∈U,則對(duì)應(yīng)的屬性私鑰值為,令,計(jì)算
得到這個(gè)密鑰所嵌入的特定用戶(hù)信息。
首先,通過(guò)追蹤算法的計(jì)算過(guò)程來(lái)驗(yàn)證方案追蹤密鑰的正確性。根據(jù)算法可知,可信機(jī)構(gòu)擁有和身份中心傳遞的安全追蹤參數(shù)σ。則根據(jù)追蹤算法有
計(jì)算過(guò)程為
根據(jù)ID 可以追蹤到持有該密鑰的用戶(hù)。
接下來(lái),通過(guò)解密部分來(lái)驗(yàn)證方案的正確性,下面根據(jù)算法內(nèi)容對(duì)該部分進(jìn)行分析,當(dāng)合法用戶(hù)的屬性集滿(mǎn)足數(shù)據(jù)擁有者設(shè)定的訪(fǎng)問(wèn)策略時(shí),根據(jù) OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)特性,必然存在,使Zk=Zj,用戶(hù)根據(jù)自己密鑰中的Kα和Kz可計(jì)算M′=-C0Kα Kz,具體計(jì)算過(guò)程如下。
本節(jié)主要圍繞方案中屬性加密機(jī)制的安全性、可追蹤性、抗合謀攻擊以及抗密鑰委托濫用4 個(gè)方面進(jìn)行分析。
4.2.1 屬性加密機(jī)制的安全性
定理1[23]如果任意多項(xiàng)式時(shí)間內(nèi)存在一個(gè)攻擊者 A1以ε的優(yōu)勢(shì)贏(yíng)得2.2.1 節(jié)中定義的選擇策略和選擇明文攻擊下的不可區(qū)分性游戲,則存在一個(gè)模擬器B 可以以的優(yōu)勢(shì)判定RLWE 問(wèn)題。
證明B 詢(xún)問(wèn)挑戰(zhàn)預(yù)言機(jī)O(t+1)次,返回(ωk,υk)∈Rq×Rq,其中k∈ {0,1,2,…,t},游戲按照以下步驟運(yùn)行。
初始化給定系統(tǒng)中所有屬性集合U,A1提交要挑戰(zhàn)的訪(fǎng)問(wèn)結(jié)構(gòu)A*。
系統(tǒng)設(shè)置B 運(yùn)行系統(tǒng)初始化Setup(λ,U)算法,構(gòu)造公共參數(shù)PP。隨機(jī)選擇a←Rq,定義PK0=pω0∈Rq,模擬器B 對(duì)于在U中的每一個(gè)正值屬性,隨機(jī)選擇ki←Rq;對(duì)于在U中的每一個(gè)負(fù)值屬性,隨機(jī)選擇←Rq,接下來(lái),B 返回給 A1。
階段1查詢(xún)密鑰。A1進(jìn)行私鑰查詢(xún),由于其屬性集不滿(mǎn)足A*,即 A1無(wú)法計(jì)算出有效的OBDD路徑。B 通過(guò)IKeyGen 和AKeyGen 算法返回sk=(Kα,K β,Kz)給攻擊者,其中
階段2重復(fù)階段1。
猜測(cè)階段B 收到 A1的猜測(cè)值b′,并以此作為對(duì)Decisional-RLWE 問(wèn)題的回答。若b′=b,輸出O′=Os,那么 A1優(yōu)勢(shì)為ε,則有
4.2.2 可追蹤性
4.2.3 抗合謀攻擊
定義此類(lèi)攻擊者為多個(gè)惡意用戶(hù),為便于描述,稱(chēng)其為攻擊者3。其擁有任意多個(gè)用戶(hù)密鑰并企圖合謀來(lái)解密超出他們能力之外的密文。
針對(duì)攻擊者3,作為合法用戶(hù),其擁有屬于自己的私鑰,其中
其中,Kα、Kβ和Kz均是均勻分布在環(huán)上的元素,且在私鑰生成過(guò)程中,由于和σ為隨機(jī)均勻產(chǎn)生,因此即使擁有相同屬性集的用戶(hù),其得到的私鑰也是不同的,除非其能夠解決Decisional-RLWE 問(wèn)題,否則惡意用戶(hù)從不同的私鑰中難以分析得到有效信息,也就無(wú)法偽造密鑰來(lái)破解超出其自身屬性范圍的密文,因此本文方案滿(mǎn)足抗合謀攻擊安全。
4.2.4 抗密鑰委托濫用
定義攻擊者主要有兩類(lèi),一類(lèi)為惡意的身份中心,稱(chēng)為攻擊者4,此類(lèi)攻擊者擁有系統(tǒng)的主密鑰,并嘗試解密密文,但這類(lèi)攻擊者不能和用戶(hù)或?qū)傩灾行暮现\;另一類(lèi)為惡意的屬性中心,稱(chēng)為攻擊者5,其與攻擊者4 類(lèi)似擁有系統(tǒng)的主密鑰,并嘗試解密密文,但不能和用戶(hù)或身份中心合謀。
針對(duì)攻擊者4,其掌握主私鑰和用戶(hù)的ID,可以生成部分私鑰,但由于其無(wú)法獲取用戶(hù)的屬性集信息,因此無(wú)法偽造某用戶(hù)的屬性私鑰Kz來(lái)誣陷該用戶(hù),通過(guò)公共參數(shù)攻擊者3,可以嘗試構(gòu)造一個(gè)新的屬性集來(lái)偽造新的屬性私鑰,但由于版本號(hào)由屬性中心設(shè)定,系統(tǒng)中可以獲得版本號(hào)信息的是屬性中心及合法用戶(hù),根據(jù)攻擊者4 的定義,其無(wú)法與屬性中心或其他用戶(hù)進(jìn)行合謀,因此無(wú)法獲得正確的版本號(hào),則其偽造的私鑰將無(wú)法解密密文。
攻擊者5 與攻擊者4 類(lèi)似,其掌握主私鑰和用戶(hù)的屬性集信息,可以生成屬性私鑰Kz,但其不掌握用戶(hù)的ID 信息,且用戶(hù)專(zhuān)屬的安全追蹤參數(shù)只有身份中心和可信機(jī)構(gòu)知道,根據(jù)定義,攻擊者5 無(wú)法偽造出Kβ,在不和身份中心或用戶(hù)合謀的情況下,其將無(wú)法通過(guò)白名單檢索及成功解密密文。綜上,在身份中心和屬性中心無(wú)法合謀的條件下,本文方案解決了機(jī)構(gòu)委托的問(wèn)題。
本節(jié)將選取一些具有代表性的方案,從功能性和效率方面與本文方案進(jìn)行分析對(duì)比。為了便于理解,將涉及的符號(hào)進(jìn)行統(tǒng)一說(shuō)明,如表1 所示。
表1 符號(hào)說(shuō)明
4.3.1 功能性分析
本節(jié)選取了一些抗密鑰濫用的屬性加密方案,從訪(fǎng)問(wèn)結(jié)構(gòu)、困難問(wèn)題、可追蹤性和抗密鑰委托以及撤銷(xiāo)機(jī)制和抗量子威脅幾個(gè)方面進(jìn)行分析,功能比較如表2 所示。文獻(xiàn)[8]方案實(shí)現(xiàn)了可追蹤性和屬性級(jí)的細(xì)粒度撤銷(xiāo),基于OBDD 的結(jié)構(gòu)支持屬性正負(fù)值表達(dá),但沒(méi)有抗密鑰委托的功能;文獻(xiàn)[14]方案實(shí)現(xiàn)了在抗密鑰委托的同時(shí)可以提供用戶(hù)級(jí)和屬性級(jí)粒度的撤銷(xiāo)操作,但無(wú)法追蹤密鑰;文獻(xiàn)[15]方案同時(shí)實(shí)現(xiàn)了追蹤和抗密鑰委托2 個(gè)功能,并且通過(guò)短簽名技術(shù)還可以防止追蹤參數(shù)被偽造,但只支持與門(mén)結(jié)構(gòu),且沒(méi)有提供撤銷(xiāo)功能;本文方案實(shí)現(xiàn)了可追蹤性、抗密鑰委托和用戶(hù)級(jí)的撤銷(xiāo)外,可以抵抗量子攻擊的威脅,采用和文獻(xiàn)[8]相同的訪(fǎng)問(wèn)結(jié)構(gòu),在策略的表達(dá)上要優(yōu)于文獻(xiàn)[14-15]方案,但本文方案目前只是通過(guò)維護(hù)白名單實(shí)現(xiàn)了用戶(hù)級(jí)的撤銷(xiāo),并不能實(shí)現(xiàn)更加細(xì)粒度的屬性級(jí)撤銷(xiāo)。
表2 功能比較
4.3.2 效率分析
本節(jié)選取了一些格基屬性加密方案從存儲(chǔ)性能、計(jì)算開(kāi)銷(xiāo)和通信開(kāi)銷(xiāo)等方面進(jìn)行分析,假設(shè)方案中區(qū)分正負(fù)屬性,并且設(shè)定系統(tǒng)中正負(fù)屬性各為N,則系統(tǒng)中總共包含的所有屬性數(shù)量為2N。
1) 存儲(chǔ)性能
本節(jié)主要從系統(tǒng)公鑰、主私鑰、密鑰及密文長(zhǎng)度等幾個(gè)方面對(duì)存儲(chǔ)開(kāi)銷(xiāo)進(jìn)行對(duì)比,結(jié)果如表3 所示。方案1 和方案3 基于LWE 問(wèn)題進(jìn)行構(gòu)造,系統(tǒng)公鑰、系統(tǒng)私鑰、用戶(hù)私鑰和密文的長(zhǎng)度遠(yuǎn)大于方案2 和本文方案。與方案2 相比,除了系統(tǒng)公鑰長(zhǎng)度相同外,本文方案的系統(tǒng)私鑰和用戶(hù)私鑰長(zhǎng)度均遠(yuǎn)小于方案2。而且本文方案的系統(tǒng)私鑰、用戶(hù)私鑰和密文的長(zhǎng)度均不受屬性數(shù)量的影響,其中系統(tǒng)私鑰和用戶(hù)私鑰的存儲(chǔ)開(kāi)銷(xiāo)是定值,當(dāng)系統(tǒng)私鑰和用戶(hù)私鑰中包含的屬性越多時(shí),本文方案的存儲(chǔ)開(kāi)銷(xiāo)優(yōu)勢(shì)越明顯。同時(shí)本文方案的密文長(zhǎng)度與OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)中的有效路徑數(shù)量V呈正相關(guān),當(dāng)V≤Ac時(shí),本文方案的密文長(zhǎng)度不會(huì)大于方案2 的密文長(zhǎng)度。綜合以上情況來(lái)看,本文方案的整體存儲(chǔ)性能要優(yōu)于其他3 個(gè)方案。
表3 存儲(chǔ)開(kāi)銷(xiāo)對(duì)比
模擬訪(fǎng)問(wèn)策略的布爾表達(dá)式為f(a,b,c,d)=a+b′c+bd′+c′d,可知系統(tǒng)中有4 正4 負(fù)共8 個(gè)屬性,則Ac=8,又由OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)可推算出V=5,同時(shí)令q=257,n=128,假設(shè)系統(tǒng)中屬性數(shù)量N=30,用戶(hù)私鑰中屬性數(shù)量Au=15,再由文獻(xiàn)[22,25-26]可知,陷門(mén)參數(shù)m1= 5nlogq,m2= 6nlogq。通過(guò)以上數(shù)據(jù)可以模擬不同方案的存儲(chǔ)開(kāi)銷(xiāo),如圖4 所示。
圖4 不同方案的存儲(chǔ)開(kāi)銷(xiāo)
訪(fǎng)問(wèn)策略的不同決定了有效路徑數(shù)量V的不同,模擬訪(fǎng)問(wèn)策略的布爾表達(dá)式為f(a,b,c,d),即只包含4 正4 負(fù)共8 個(gè)屬性,分析當(dāng)訪(fǎng)問(wèn)策略類(lèi)似于f(a,b,c,d)=a+b+c+d時(shí),有效路徑數(shù)量有最大值V=24;當(dāng)訪(fǎng)問(wèn)策略類(lèi)似于f(a,b,c,d)=abcd時(shí),有效路徑數(shù)量有最小值V=1。有效路徑數(shù)量只與密文長(zhǎng)度有關(guān),在其他參數(shù)不變的情況下,不同有效路徑數(shù)量下密文長(zhǎng)度對(duì)比如圖5 所示。從圖5 中可以看出,當(dāng)V=8時(shí),本文方案的密文長(zhǎng)度與方案2 相同,但即使有效路徑取最大值時(shí),密文長(zhǎng)度與方案2 仍處在同一量級(jí),且遠(yuǎn)小于其他2 個(gè)方案。
圖5 不同方案與本文方案不同有效路徑數(shù)量下密文長(zhǎng)度對(duì)比
2) 計(jì)算開(kāi)銷(xiāo)
本節(jié)主要對(duì)算法在加解密及密鑰追蹤過(guò)程中涉及的計(jì)算開(kāi)銷(xiāo)進(jìn)行分析。由于加法運(yùn)算開(kāi)銷(xiāo)較小,本文主要考慮乘法及模運(yùn)算,其中,mul 表示乘法運(yùn)算,mod 表示模運(yùn)算,計(jì)算開(kāi)銷(xiāo)如表4 所示。本文方案加密過(guò)程中的計(jì)算量主要與有效路徑的個(gè)數(shù)相關(guān),與方案2 的計(jì)算量處于同一水平,且遠(yuǎn)小于方案1 和方案3;而在解密計(jì)算過(guò)程中,本文方案乘法的運(yùn)算次數(shù)遠(yuǎn)少于其他3 個(gè)方案。需要注意的是,雖然本文方案計(jì)算開(kāi)銷(xiāo)較小,但在加解密過(guò)程需要運(yùn)行與OBDD 相關(guān)的2 個(gè)算法,在一定程度上増加了額外的開(kāi)銷(xiāo)。
表4 計(jì)算開(kāi)銷(xiāo)
不同方案的計(jì)算開(kāi)銷(xiāo)如圖6 所示。本文方案無(wú)論是加密還是解密操作,計(jì)算開(kāi)銷(xiāo)都遠(yuǎn)小于其他方案。解密操作與有效路徑數(shù)量無(wú)關(guān),不同有效路徑數(shù)量下加密操作計(jì)算開(kāi)銷(xiāo)對(duì)比如圖7 所示。從圖7可以看出,當(dāng)V為6 或7 時(shí),本文方案中加密操作的計(jì)算開(kāi)銷(xiāo)與方案2 幾乎相同,但即使V取最大值時(shí),加密操作的計(jì)算開(kāi)銷(xiāo)與方案2 仍處在同一量級(jí),且遠(yuǎn)小于其他2 個(gè)方案。
圖6 不同方案的計(jì)算開(kāi)銷(xiāo)
圖7 不同方案與本文方案不同有效路徑數(shù)量下加密操作計(jì)算開(kāi)銷(xiāo)對(duì)比
3) 通信開(kāi)銷(xiāo)
本節(jié)主要對(duì)方案的通信開(kāi)銷(xiāo)進(jìn)行分析。整個(gè)通信過(guò)程主要涉及用戶(hù)密鑰和密文的傳輸開(kāi)銷(xiāo),由于方案1 和方案3 基于LWE 問(wèn)題進(jìn)行構(gòu)造,每次加密只有1 bit,當(dāng)加密相同明文數(shù)據(jù)時(shí)造成的開(kāi)銷(xiāo)較大,這里主要與方案2 進(jìn)行對(duì)比。
用戶(hù)密鑰方面,本文方案的密鑰尺寸不會(huì)隨著屬性數(shù)量的改變而改變,其他方案的密鑰尺寸與屬性數(shù)量成正比,當(dāng)用戶(hù)密鑰中包含的屬性數(shù)量較多時(shí),本文方案的優(yōu)勢(shì)更加明顯。當(dāng)用戶(hù)密鑰中包含的屬性數(shù)量變化時(shí),密鑰尺寸分析如圖8 所示。
圖8 密鑰尺寸分析
密文方面,由于本文方案使用IPFS 存儲(chǔ)原始加密數(shù)據(jù),加密的明文只是存儲(chǔ)地址和對(duì)稱(chēng)密鑰,因此設(shè)置明文為1 280 bit,當(dāng)密文中的屬性數(shù)量變化時(shí),密文開(kāi)銷(xiāo)分析如圖9 所示。從圖9 可以看出,方案2 的密文開(kāi)銷(xiāo)與屬性數(shù)量成正比,本文方案的密文開(kāi)銷(xiāo)與屬性數(shù)量沒(méi)有直接關(guān)系,而與有效路徑數(shù)量相關(guān),即由具體的訪(fǎng)問(wèn)策略決定,將密文尺寸與屬性數(shù)量的關(guān)系脫鉤并不意味著一定有優(yōu)勢(shì),也可能帶來(lái)更大的開(kāi)銷(xiāo),這并非OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)的優(yōu)點(diǎn),只能作為一個(gè)特點(diǎn)。
圖9 密文開(kāi)銷(xiāo)分析
通過(guò)OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)的性質(zhì)不難發(fā)現(xiàn),當(dāng)訪(fǎng)問(wèn)策略中“與”操作較多時(shí),滿(mǎn)足策略的路徑數(shù)量較少,相應(yīng)的開(kāi)銷(xiāo)就會(huì)減少。為了清晰展示這一關(guān)系,本文模擬有效路徑數(shù)量為屬性數(shù)量的隨機(jī)倍數(shù),可以發(fā)現(xiàn)對(duì)于有效路徑數(shù)量較少的情況,密文開(kāi)銷(xiāo)遠(yuǎn)小于相同屬性數(shù)量下方案2 的開(kāi)銷(xiāo),但同樣由于訪(fǎng)問(wèn)策略的不同,也會(huì)存在開(kāi)銷(xiāo)遠(yuǎn)超過(guò)方案2 的情況,但結(jié)合密鑰和密文兩部分來(lái)分析通信開(kāi)銷(xiāo),本文方案存在一定的優(yōu)勢(shì)。
4.3.3 實(shí)驗(yàn)分析
為了進(jìn)一步分析方案的性能,本節(jié)進(jìn)行了仿真實(shí)驗(yàn)。由于格上屬性加密方案的相關(guān)仿真實(shí)驗(yàn)較少,難以與其他方案進(jìn)行有效的對(duì)比分析,本文主要對(duì)算法的運(yùn)行效率進(jìn)行測(cè)試。實(shí)驗(yàn)環(huán)境為AMD Ryzen 7-5800H 處理器3.20 GHz,16.0 GB 內(nèi)存,64 位Windows11 操作系統(tǒng)。實(shí)驗(yàn)程序基于C++語(yǔ)言編寫(xiě),采用Qt Creator 開(kāi)發(fā)環(huán)境基于NTL 庫(kù)實(shí)現(xiàn)。
在本節(jié)實(shí)驗(yàn)中,設(shè)置參數(shù)q= 8 380 417,p=3,U中包含10 個(gè)屬性,模擬設(shè)置數(shù)據(jù)擁有者的訪(fǎng)問(wèn)策略為
數(shù)據(jù)用戶(hù)的屬性集為 {a1,a2}。實(shí)驗(yàn)測(cè)試了環(huán)多項(xiàng)式不同維度下各個(gè)算法的運(yùn)行時(shí)間,為了確保實(shí)驗(yàn)結(jié)果的準(zhǔn)確性,每種情況下分別進(jìn)行30 次的仿真模擬,再將得到的數(shù)據(jù)求均值,得到最終的結(jié)果,如圖10 所示。其中,密鑰生成算法的運(yùn)行時(shí)間是方案中IKeyGen 和AKeyGen 算法的運(yùn)行時(shí)間之和,從實(shí)驗(yàn)數(shù)據(jù)整體分析,密鑰生成、加密算法和解密算法消耗的時(shí)間相對(duì)較長(zhǎng),并且由于參數(shù)選擇的隨機(jī)性,這3 個(gè)算法運(yùn)行的最長(zhǎng)時(shí)間和最短時(shí)間的跨度也較大,而初始化和追蹤算法的運(yùn)行時(shí)間相對(duì)較短,實(shí)驗(yàn)結(jié)果與算法的理論分析相符。
圖10 仿真實(shí)驗(yàn)結(jié)果
本文基于OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)構(gòu)造了一個(gè)格上的可抗密鑰濫用的屬性加密方案,除了可以追蹤惡意用戶(hù)的密鑰外,還可以實(shí)現(xiàn)抗密鑰委托的功能,同時(shí)由于OBDD 訪(fǎng)問(wèn)結(jié)構(gòu)的特點(diǎn),不僅支持屬性的與、或、門(mén)限操作,還能支持屬性的正負(fù)值,而且在一定程度上降低了存儲(chǔ)和計(jì)算開(kāi)銷(xiāo)。分析表明,本文方案在具有抗量子攻擊的同時(shí)滿(mǎn)足抗合謀攻擊和選擇策略及選擇明文攻擊下的不可區(qū)分性安全,與其他格基屬性加密方案相比,在功能和性能上均有一定的優(yōu)勢(shì),但是本文方案并沒(méi)有考慮更細(xì)粒度的屬性更新及撤銷(xiāo)問(wèn)題,這將是下一步研究的重點(diǎn)。