高嘉昕 孫加萌 秦 靜
(山東大學(xué)數(shù)學(xué)學(xué)院 濟(jì)南 250100)
隨著社會(huì)發(fā)展,數(shù)據(jù)呈現(xiàn)爆炸性增長(zhǎng),用戶對(duì)計(jì)算機(jī)的存儲(chǔ)和計(jì)算能力有了更高要求,由于資源和成本的限制,用戶往往擁有有限的計(jì)算和存儲(chǔ)能力,難以達(dá)到數(shù)據(jù)處理所需要的條件.在這種背景下,云服務(wù)器的概念就產(chǎn)生了.服務(wù)商平臺(tái)陸續(xù)為用戶提供云服務(wù)器來(lái)解決用戶的資源受限問(wèn)題,如華為云、阿里云、百度云等.信息上傳到云服務(wù)器存儲(chǔ)和加密,為用戶帶來(lái)便利的同時(shí)也出現(xiàn)了安全問(wèn)題,即云服務(wù)器并不是完全可信的.用戶的敏感信息上傳到云服務(wù)器后,一方面信息脫離了用戶的物理掌控,用戶不能確保信息的隱私性和正確性;另一方面用戶的敏感信息未經(jīng)處理上傳到云服務(wù)器,云服務(wù)器的管理者可以訪問(wèn)數(shù)據(jù)并竊取敏感信息,數(shù)據(jù)的隱私性遭到破壞.2011~2014年間約有11.4億人遭遇隱私數(shù)據(jù)被泄露的危機(jī).2012年蘋果ICloud的訪問(wèn)控制出現(xiàn)問(wèn)題,導(dǎo)致大量用戶存儲(chǔ)在ICloud的數(shù)據(jù)被盜,不僅給用戶造成了巨大的損失,也給蘋果公司的股價(jià)和形象帶來(lái)了負(fù)面影響[1-2].隨著技術(shù)的發(fā)展,訪問(wèn)控制在云計(jì)算中擁有越來(lái)越高的地位.而在云計(jì)算中,目前應(yīng)用較為廣泛的訪問(wèn)控制是基于屬性加密技術(shù).
基于屬性的加密(attribute-based encryption, ABE)[3]是一種新型加密原語(yǔ),在云計(jì)算中有著廣泛的應(yīng)用.在ABE體制中用戶的私鑰和密文分別用一組描述屬性和訪問(wèn)策略標(biāo)記,當(dāng)描述的屬性與訪問(wèn)策略相關(guān)聯(lián)時(shí),即私鑰與密文相關(guān)聯(lián)時(shí)才能正確解密.ABE有2種形式:密鑰策略ABE(key-policy ABE,KP-ABE)和密文策略ABE(ciphertext-policy ABE,CP-ABE).KP-ABE是指密文由屬性標(biāo)記,私鑰由訪問(wèn)策略標(biāo)記.而在CP-ABE中私鑰由屬性標(biāo)記,密文由訪問(wèn)策略標(biāo)記,由數(shù)據(jù)發(fā)送方?jīng)Q定訪問(wèn)策略.ABE體制中用戶可以設(shè)置訪問(wèn)策略,并決定與訪問(wèn)策略相關(guān)聯(lián)的屬性,即哪些屬性可以解開密文,因此用戶對(duì)數(shù)據(jù)具有靈活的訪問(wèn)控制權(quán).基于屬性的加密技術(shù)可以在云服務(wù)器不完全可信的情況下,通過(guò)訪問(wèn)控制保障云服務(wù)器中的數(shù)據(jù)安全.但是屬性加密中密鑰分配和解密計(jì)算的巨大開銷和存儲(chǔ)量,使得計(jì)算能力不足的用戶很難應(yīng)用屬性加密技術(shù)保障信息安全.
為了解決這個(gè)問(wèn)題,Green等人[4]和Zhou等人[5]提出在不泄露隱私數(shù)據(jù)和密鑰的前提下將ABE體制中的解密階段外包給云服務(wù)器計(jì)算.即將屬性加密中計(jì)算成本大的部分外包給云服務(wù)器計(jì)算,解決了用戶計(jì)算負(fù)擔(dān)過(guò)重的問(wèn)題,也加快了方案的運(yùn)行效率.文中所構(gòu)造的方案在不受信任的云服務(wù)器環(huán)境下,雖然減少了用戶的計(jì)算和存儲(chǔ)開銷,但是用戶無(wú)法對(duì)服務(wù)器返回的結(jié)果進(jìn)行驗(yàn)證.2014年Li等人[6]提出了引用計(jì)算委托(refered delegation of computation, RDoC)的模型,首先方案支持密鑰委托生成,將部分密鑰生成過(guò)程外包給k個(gè)服務(wù)器,在權(quán)限端進(jìn)行驗(yàn)證并生成轉(zhuǎn)化密鑰,既加快了方案運(yùn)行效率,又完善了部分外包計(jì)算的可驗(yàn)證性,解決了用戶不能對(duì)返回結(jié)果驗(yàn)證的問(wèn)題,這是第1次考慮部分外包ABE的可驗(yàn)證性;其次將部分解密工作外包給服務(wù)器計(jì)算,減少了用戶的計(jì)算負(fù)擔(dān),通過(guò)盲化密鑰保護(hù)解密密鑰的安全性.但是該方案中數(shù)據(jù)消息未經(jīng)處理直接發(fā)送給云服務(wù)器,不能有效保護(hù)數(shù)據(jù)的隱私性,同時(shí)也不支持屬性撤銷和可追蹤性.
本文基于Li等人[6]的ABE方案構(gòu)造了一個(gè)可驗(yàn)證的外包KP-ABE方案,本文方案使用具有高表達(dá)性的樹形訪問(wèn)策略,提供了更細(xì)粒度的訪問(wèn)控制,豐富了屬性之間的邏輯關(guān)系;將加密階段分為線上、線下2部分進(jìn)行,線下加密指將部分只需要公鑰進(jìn)行的計(jì)算轉(zhuǎn)移至線下進(jìn)行,既減少用戶計(jì)算存儲(chǔ)量,又有效保護(hù)用戶數(shù)據(jù)的隱私性;面對(duì)不可避免的用戶訪問(wèn)權(quán)限變更問(wèn)題,本文通過(guò)重加密的方法生成重加密密鑰更新屬性與密文,間接撤銷單個(gè)屬性,達(dá)到細(xì)粒度屬性撤銷,實(shí)現(xiàn)用戶的動(dòng)態(tài)加入及退出;最后將用戶身份嵌入到用戶私鑰中,通過(guò)泄露的密鑰即可追蹤到用戶身份,有效解決了密鑰的泄露問(wèn)題,防止合謀攻擊.
ABE體制最初由Sahai和Waters[3]于2005年提出,正式提出了滿足可容忍誤差性和防止串謀攻擊性的生物識(shí)別技術(shù)與基于屬性加密技術(shù).文中首次將身份與一組屬性相關(guān)聯(lián),并正式給出了基于多項(xiàng)式插值的ABE具體構(gòu)造方案.隨后2006年Goyal等人[7]提出了由數(shù)據(jù)接收方規(guī)定訪問(wèn)策略的KP-ABE,解決了基于屬性加密技術(shù)無(wú)法支持靈活的訪問(wèn)控制問(wèn)題.2007年Bethencourt等人[8]首次詳細(xì)描述了CP-ABE方案以及CP-ABE的特性,文中所構(gòu)造的CP-ABE方案的訪問(wèn)控制由更為靈活的樹形訪問(wèn)結(jié)構(gòu)描述,在典型的訪問(wèn)控制樹中,非葉子節(jié)點(diǎn)為陷門,葉子節(jié)點(diǎn)為屬性值.樹形訪問(wèn)結(jié)構(gòu)也是ABE方案中應(yīng)用較為廣泛的訪問(wèn)控制.
在實(shí)際應(yīng)用中,ABE系統(tǒng)也難免面臨著用戶權(quán)限的改變、用戶的刪除與更新等問(wèn)題,在2010年Yu等人[9]提出了CP-ABE的屬性撤銷方案.在這篇文章中采用了半可信的代理服務(wù)器進(jìn)行代理重加密技術(shù),在撤銷屬性時(shí)只需生成重加密密鑰即可,并在文中提出了KP-ABE的大屬性空間撤銷方案.但是ABE中關(guān)于訪問(wèn)結(jié)構(gòu)中關(guān)聯(lián)的一系列屬性以及其他運(yùn)算的高額運(yùn)算量依舊沒有得到解決,Hohenberger和Waters在2014年提出了線上線下ABE[10],通過(guò)將部分計(jì)算轉(zhuǎn)移到線下減少線上的計(jì)算量,有效地提高計(jì)算效率,減少用戶的計(jì)算量.
隨著互聯(lián)網(wǎng)的快速發(fā)展,移動(dòng)終端與云存儲(chǔ)的結(jié)合成為未來(lái)趨勢(shì),但是移動(dòng)終端的計(jì)算資源受限,傳統(tǒng)的屬性加密技術(shù)往往需要大量的計(jì)算,給屬性授權(quán)機(jī)構(gòu)和移動(dòng)終端帶來(lái)嚴(yán)重的計(jì)算負(fù)擔(dān),相關(guān)學(xué)者提出將外包計(jì)算與屬性加密技術(shù)相結(jié)合達(dá)到減少用戶計(jì)算負(fù)擔(dān)的目的.2017年,Zhao等人[11]提出了面向移動(dòng)云計(jì)算的外包ABE方案.該方案支持加密外包和解密外包,解決了基于屬性加密的高效性帶來(lái)的解密計(jì)算中的高額計(jì)算量.Fan等人[12]提出了一種多授權(quán)中心的可驗(yàn)外包計(jì)算.Zhang等人[13]提出一種完全外包ABE方案,即將密鑰生成、加密和解密都外包給云服務(wù)商,并且完成了方案的安全性證明.但該方案無(wú)法完成外包計(jì)算正確性的驗(yàn)證,而可驗(yàn)證性對(duì)于正確計(jì)算至關(guān)重要.Li等人[14]提出一種新的可驗(yàn)證外包解密計(jì)算,該方案只實(shí)現(xiàn)了解密外包,而數(shù)據(jù)擁有者仍然需要大量計(jì)算完成數(shù)據(jù)加密任務(wù).2014年Li等人[6]提出了一個(gè)同時(shí)支持密鑰生成和解密外包的屬性加密方案,將密鑰生成和部分解密工作外包給不同的服務(wù)器計(jì)算,使得資源受限的用戶也可以進(jìn)行計(jì)算繁重的任務(wù).該方案不僅減輕了用戶的計(jì)算負(fù)擔(dān),也對(duì)返回結(jié)果的正確性進(jìn)行驗(yàn)證,但是方案中用戶上傳到云服務(wù)器的數(shù)據(jù)隱私性等問(wèn)題仍沒有解決.
2019年Zhao等人[15]提出一種可驗(yàn)證的完全外包的CP-ABE方案,即將密鑰產(chǎn)生、加密和解密都外包給云服務(wù)商,并完善了完全外包方案的可驗(yàn)證性,并且給出了該方案的選擇明文攻擊下的不可區(qū)分性安全和可驗(yàn)證安全性證明.
外包計(jì)算是一項(xiàng)新興技術(shù),它有效地解決了計(jì)算能力及存儲(chǔ)空間不足等問(wèn)題.Chaum等人[16]在1995年提出了外包密碼運(yùn)算的雛形,即通過(guò)在用戶的設(shè)備上安裝安全的硬件來(lái)幫助用戶完成復(fù)雜的計(jì)算.隨后在2005年Hohenberger等人[17]給出外包計(jì)算的安全定義,并且提出了一個(gè)全新的外包計(jì)算方案,文中具體算法是基于模指數(shù)運(yùn)算提出的.2010年Gennaro等人[18]首次提出了非交互式可驗(yàn)證計(jì)算的概念,并且基于混淆電路和全同態(tài)加密提出一個(gè)適用于任意運(yùn)算的可驗(yàn)證的外包計(jì)算,將待計(jì)算的函數(shù)轉(zhuǎn)化成相對(duì)的電路函數(shù).2011年Green等人[4]給出了支持解密運(yùn)算外包的基于屬性加密方案,但是方案沒有考慮到用戶對(duì)于返回結(jié)果的驗(yàn)證問(wèn)題.隨后Lai等人[19]通過(guò)增加密文冗余的方法改善了之前不支持外包計(jì)算結(jié)果的正確性驗(yàn)證.
Dong等人[20]提出了基于雙線性對(duì)的完全可驗(yàn)證安全外包.2014年Li等人[6]提出了一個(gè)同時(shí)支持密鑰生成和解密外包的屬性加密方案,既能達(dá)到將計(jì)算外包的目的,也可以對(duì)返回結(jié)果的正確性進(jìn)行驗(yàn)證.隨后出現(xiàn)了大量以數(shù)學(xué)運(yùn)算為基礎(chǔ)的安全外包,2015年Chen等人[21]利用稀疏矩陣提出一個(gè)安全的矩陣外包方案.2016年Yu等人[22]對(duì)大規(guī)模線性方程組求解的安全外包進(jìn)行了深入研究,2017年Kumar等人[23]提出了對(duì)于惡意的云服務(wù)器如何利用矩陣乘法安全外包.
最初在1989年Even等人[24]提出了線上線下簽名的概念,作者在線下進(jìn)行簽名的高計(jì)算率部分,將輕量級(jí)的計(jì)算在線上進(jìn)行,雖然有效減少了計(jì)算量,但是增加了簽名的長(zhǎng)度.隨后,2001年Shamir等人[25]提出了一個(gè)更高效的線上線下簽名方案,所提出的線上線下簽名無(wú)需將簽名的長(zhǎng)度增加一個(gè)二次因子.
2008年Guo等人[26]正式提出基于身份的線上線下加密方案,在這個(gè)方案中將加密過(guò)程分成線上加密和線下加密2個(gè)部分,線下完成大部分加密計(jì)算,但不知道消息與接收方的身份,保存部分密文,線上只需要進(jìn)行少量的加密計(jì)算即可得到密文.線上線下加密既有效保護(hù)信息安全性,又減少存儲(chǔ)空間和計(jì)算成本的浪費(fèi).
本文所用到的縮略詞如表1所示:
Table 1 Related Terms and Their Acronyms
其中,本文中屬性機(jī)構(gòu)AA是可信任的,但密鑰生成服務(wù)商KGSP、云存儲(chǔ)服務(wù)商SSP和解密服務(wù)商DSP是“誠(chéng)實(shí)且好奇”(honest but curious)的,即云服務(wù)器會(huì)遵守協(xié)議,但是會(huì)試圖獲取更多的隱私信息.
定義1.訪問(wèn)結(jié)構(gòu).設(shè){P1,P2,…,Pn}為n個(gè)參與者的集合,如果?B,C滿足B∈A,B?C,則C∈A,集合A?2{P1,P2,…,Pn}是單調(diào)的.其中屬于A的集合稱為認(rèn)證集.此外本文定義γ(·,·),
定義2.訪問(wèn)樹.在一棵訪問(wèn)樹中,其根節(jié)點(diǎn)為r,所有的葉子節(jié)點(diǎn)m均為輸入的屬性值,每一個(gè)節(jié)點(diǎn)關(guān)聯(lián)一個(gè)dm階多項(xiàng)式qm(·),其中dm=km-1,km為該節(jié)點(diǎn)的門限值.所有的非葉子結(jié)點(diǎn)m則是門限值為km的陷門,其中非葉子節(jié)點(diǎn)m擁有numm個(gè)孩子節(jié)點(diǎn).在訪問(wèn)樹中,定義操作:
parent(m)表示節(jié)點(diǎn)m的父節(jié)點(diǎn),children(m)表示節(jié)點(diǎn)m的子節(jié)點(diǎn),index(m)表示兄弟節(jié)點(diǎn)中的序號(hào),att(m)表示葉子節(jié)點(diǎn)所關(guān)聯(lián)的屬性.
定義3.雙線性映射.設(shè)置2個(gè)階為素?cái)?shù)q的乘法循環(huán)群G和GT,g是G的一個(gè)生成元.存在一個(gè)雙線性映射e:G×G|→GT,滿足3個(gè)屬性:
2) 非退化性.?g1,g2∈G滿足e(g1,g2)≠1.
3) 可計(jì)算性.?g1,g2∈G,計(jì)算e(g1,g2)是有效函數(shù).
定義4.判定雙線性Diffie-Hellman問(wèn)題(decision bilinear Diffie -Hellman problem, DBDH).假設(shè)給定一個(gè)四元組(g,ga,gb,gc),其中g(shù)是階為q的乘法循環(huán)群G的生成元,a,b,c,z∈Zq,區(qū)分2個(gè)四元組(ga,gb,gc,e(g,g)abc)和(ga,gb,gc,e(g,g)z).如果對(duì)于多項(xiàng)式時(shí)間內(nèi)解決DBDH的概率是可以忽略的,就說(shuō)DBDH問(wèn)題是困難的.
圖1給出本文所提VDC-KP-ABE(delegation of computation KP-ABE with verifiability)方案模型.
Fig.1 System model for this paper圖1 本文方案的模型
用戶向AA請(qǐng)求密鑰,AA將密鑰生成階段外包給KGSP[i]進(jìn)行,對(duì)返回結(jié)果進(jìn)行檢驗(yàn)后將密鑰發(fā)送給用戶.用戶將密文發(fā)送到SSP存儲(chǔ),解密過(guò)程中,用戶從SSP中搜索下載密文,并將解密工作外包給DSP進(jìn)行,用戶可以對(duì)返回結(jié)果進(jìn)行驗(yàn)證.
在密鑰分配過(guò)程中,為了防止KGSP與DSP串通下的不誠(chéng)實(shí)行為,利用AA生成的d-1階隨機(jī)多項(xiàng)式gRG(·),將gRG(·)與另一個(gè)多項(xiàng)式以隨機(jī)的順序發(fā)送給KGSP[i].KGSP利用多項(xiàng)式生成部分轉(zhuǎn)化密鑰,AA只需要檢驗(yàn)由gRG(·)計(jì)算的部分轉(zhuǎn)化密鑰即可.
記A為訪問(wèn)策略,ω為屬性集合.
根據(jù)系統(tǒng)模型,算法定義:
1) 初始化算法
Setup(λ)→(PK,MK):AA運(yùn)行該算法,輸入為系統(tǒng)的安全參數(shù)λ.輸出為公鑰PK和主密鑰MK.
2) 密鑰生成
KeyGeninit(A,MK,ID)→(S[i]REAL,SRG):AA運(yùn)行密鑰生成初始化算法,輸入屬性訪問(wèn)策略A和主密鑰MK,輸出一對(duì)外包密鑰集(OKKGSP[i],OKAA)和一組基于外包密鑰OKKGSP[i]生成的數(shù)對(duì)(S[i]REAL,SRG).
KeyGenout(S[i]REAL,SRG)→(TKKGSP[i],TKRGi):KGSP[i]被委托計(jì)算部分轉(zhuǎn)化密鑰,即運(yùn)行密鑰生成算法.算法中的輸入為(S[i]REAL,SRG),最終輸出部分轉(zhuǎn)化密鑰對(duì)(TKKGSP[i],TKRGi).
KeyGenin(A,OKAA)→TKAA:由AA運(yùn)行內(nèi)部密鑰生成算法,輸入為樹形訪問(wèn)策略A和AA的外包密鑰OKAA,輸出另一個(gè)部分轉(zhuǎn)化密鑰TKAA.
KeyCheck(TKKGSP[i],TKRGi,ID)→TK:AA對(duì)KGSP發(fā)回的結(jié)果進(jìn)行檢驗(yàn),通過(guò)驗(yàn)證后輸出轉(zhuǎn)化密鑰TK.
KeyBlind(TK)→(SK,TK′):由AA計(jì)算,輸入轉(zhuǎn)化密鑰TK,輸出私鑰SK和盲化密鑰TK′.
3) 加密算法
Encryptoff(PK)→CToff:線下執(zhí)行加密算法,輸入公鑰PK,輸出部分密文CToff.
EncryptU(M,CToff,γ)→(CT,VK):用戶進(jìn)行加密計(jì)算,輸入消息M、加密屬性γ和部分密文CToff,輸出密文CT和驗(yàn)證密鑰VK.
4) 解密算法
Decryptin(CTpart,SK,VK)→M⊥:用戶執(zhí)行最后解密算法,輸入部分解密密文CTpart、私鑰SK和驗(yàn)證密鑰VK,首先對(duì)DSP返回結(jié)果進(jìn)行驗(yàn)證,若通過(guò)驗(yàn)證,輸出明文M,否則輸出⊥.
5) 屬性撤銷
ReKeyGen(θ,MK)→rk:由AA計(jì)算,輸入更新的屬性集θ,和主密鑰MK生成重加密密鑰rk.
ReEnc(E,rk,β)→CT′:輸入屬性集β、密文CT和重加密密鑰rk,輸出更新后的密文CT′.
ReKey(SK,rk)→SK′:輸入密鑰SK和重加密密鑰rk,輸出更新后的密鑰SK′.
6) 追蹤算法
單JSON 格式也存在諸多問(wèn)題,保密性不高,缺少專用的加密技術(shù)框架,導(dǎo)致JSON 存在泄密的可能。JSON 數(shù)據(jù)和XML 數(shù)據(jù)功能結(jié)構(gòu)的相似性,且有成熟的加密技術(shù)框架。因此,采用XML 的加密傳輸技術(shù)對(duì)JSON 數(shù)據(jù)進(jìn)行出加密傳輸。XML 通常的加密方式是加構(gòu)建在PKI 體系結(jié)構(gòu)上。但PKI 體系存在認(rèn)證效率低,數(shù)字證書管理復(fù)雜等問(wèn)題[3]。
Trace(SK)→ID:輸入密鑰SK,對(duì)密鑰進(jìn)行驗(yàn)證是否為正常,如果通過(guò)驗(yàn)證,則可以得知密鑰所屬用戶的ID.
1) 選擇安全性游戲
考慮未授權(quán)和授權(quán)已撤銷2種攻擊者,重加密密文與原始密文分布相同,因此只討論原始密文的安全性.本文針對(duì)所提出的VDC-KP-ABE方案描述攻擊者A與挑戰(zhàn)者B之間的游戲如下:
初始化.攻擊者A選擇要挑戰(zhàn)的一個(gè)屬性集合和撤銷的屬性列表發(fā)送給挑戰(zhàn)者B.
系統(tǒng)建立.挑戰(zhàn)者B運(yùn)行本文方案的Setup階段,將公鑰發(fā)送給攻擊者.
詢問(wèn)階段1.攻擊者可以詢問(wèn)關(guān)于訪問(wèn)策略屬性的私鑰,其中屬性不屬于訪問(wèn)策略,或者屬性屬于撤銷屬性列表中.
挑戰(zhàn):挑戰(zhàn)者對(duì)于攻擊者發(fā)送的消息M0,M1,挑戰(zhàn)者隨機(jī)投擲一枚硬幣v∈{0,1},在屬性集和撤銷的屬性列表下對(duì)Mv進(jìn)行加密,并將結(jié)果返回給攻擊者A.
詢問(wèn)階段2.重復(fù)詢問(wèn)階段1的步驟.
猜測(cè).攻擊者輸出對(duì)v的猜測(cè)v′,若v′=v,則攻擊者贏得游戲.
2) 可驗(yàn)證性游戲
可驗(yàn)證性可以驗(yàn)證外包階段的算法是否有被正確執(zhí)行.通過(guò)攻擊者A與挑戰(zhàn)者B之間的交互描述VDC-KP-ABE方案的可驗(yàn)證性.
初始化.攻擊者A選擇要挑戰(zhàn)的2個(gè)Hash函數(shù).
系統(tǒng)建立.挑戰(zhàn)者B運(yùn)行本文方案的Setup階段,將公鑰發(fā)送給攻擊者,自己保留主私鑰.
詢問(wèn)階段1.挑戰(zhàn)者B按照方案算法生成方式適應(yīng)性回答攻擊者A的詢問(wèn)
挑戰(zhàn).攻擊者A提交一個(gè)密文M*和一個(gè)訪問(wèn)策略A*,挑戰(zhàn)者B運(yùn)行Enc算法獲得密文CT*和驗(yàn)證密鑰VK*.
詢問(wèn)階段2.重復(fù)詢問(wèn)階段1的步驟,但是攻擊者不可以詢問(wèn)屬于訪問(wèn)策略A*的屬性.
猜測(cè)階段.A輸出轉(zhuǎn)換密文CT*part.若Decryptin(CT*part,RK*,VK*)?(m*,⊥),則攻擊者A贏得了游戲.
定義6.可驗(yàn)證性安全.若無(wú)多項(xiàng)式時(shí)間攻擊者以不可忽略的優(yōu)勢(shì)攻破上述安全模型,那么我們就說(shuō)本文提出的方案具有可驗(yàn)證性.
在密鑰委托生成過(guò)程,本文利用一個(gè)混合密鑰策略Policy=PolicyKGSP∧PolicyAA,其中∧是連接2個(gè)子策略的和門,PolicyKGSP是用于用戶請(qǐng)求的屬性集,PolicyAA是用于一個(gè)“不重要”的屬性.稱之為“不重要”屬性的原因是每個(gè)請(qǐng)求的屬性集都附加一個(gè)對(duì)整個(gè)訪問(wèn)控制策略沒有影響的“不重要”屬性θ.利用這個(gè)技巧可以隨機(jī)生成一個(gè)外包密鑰OKKGSP,無(wú)需主密鑰和私鑰的前提下,將密鑰生成階段外包給KGSP進(jìn)行.
1) 初始化算法
Setup(1λ):定義屬性全集U和身份全集I.首先,將全集U和I中的屬性定義為Zq中的元素.簡(jiǎn)單起見取Zq中前n個(gè)元素為全集.定義Hash函數(shù)H:{0,1}*→Zp,H0:{0,1}*→{0,1}λ,H1:{0,1}2λ→{0,1}*.選擇一個(gè)生成元g∈RG,整數(shù)x,a,w,w1,w2,…,wn∈RZq,并設(shè)g1=gx,W=gw,Wi=gwi,選擇元素g2∈RG.最終輸出公鑰PK=(g,g1,g2,W,W1,…,Wn,H,H0,H1)和主私鑰MK=(x,a,w,w1,…,wn).
2) 密鑰生成
KeyGeninit:AA選擇x11,x12∈RZq,并設(shè)OKAA=x2=x-x11-x12modq.接下來(lái)隨機(jī)選取dm階多項(xiàng)式fm(·),pm(·).滿足:
①i=att(m)時(shí),fm(i)=pm(i);
②fm(0)=x11;
③pm(0)=x12;
④fm(i)+pm(i)=qm(i),其中i=att(m),att(m)表示葉子節(jié)點(diǎn)所關(guān)聯(lián)的屬性.
選擇一個(gè)隨機(jī)多項(xiàng)式gRG(·).此外,選取rKGSP[1],i,rKGSP[2],i,rRG,i∈Zp,滿足rKGSP[1],i=rKGSP[2],i,ri=rKGSP[1],i+rKGSP[2],i,i=att(m).最后,AA將(S[1]REAL,SRG),(S[2]REAL,SRG)分別發(fā)送給KGSP[1],KGSP[2].其中:
S[1]REAL=(fm(0)H(ID),{rKGSP[1],i}i=att(m)),
S[2]REAL=(pm(0)H(ID),{rKGSP[2],i}i=att(m)),
SRG=(gRG(·),{rRG,i}i=att(m)).
KeyGenout:KGSP[j]計(jì)算部分轉(zhuǎn)化密鑰,即TKKGSP[j]=({d[j]i0,d[j]i1}i=att(m))和TKRGj=({d[RGj]i0,d[RGj]i1}),并將(TKKGSP[j],TKRGj)發(fā)送給AA.其中:
KeyCheck:AA檢查所有的KGSP都是正確的輸出,也就是檢驗(yàn)
d[1]i0=d[2]i0,d[1]i1=d[2]i1;
d[RG1]i0=d[RG2]i0,d[RG1]i1=d[RG2]i1;
其中,i=att(m).
通過(guò)計(jì)算di0=d[1]i0·d[2]i0,di1=d[1]i1×d[2]i1,i=att(x)將部分轉(zhuǎn)化密鑰合并,并輸出轉(zhuǎn)化密鑰TK=({di0,di1}i∈A∪θ).
3) 加密算法
Encryptoff:選擇一個(gè)隨機(jī)數(shù)s∈RZq,然后計(jì)算K=e(g1,g2)s,C0=gs,Ci=(g1Wi)s,生成部分密文CToff=(K,C0,{Ci}i∈U).
EncryptU:用戶在明文后附加一串冗余,即MT=M‖0k,用來(lái)在解密后檢驗(yàn)DSP是否有不誠(chéng)實(shí)行為;計(jì)算C1=MT×KH(ID),VK=H1(H0(KH(ID))‖C1),生成密文CTS=(γ∪θ,C1,C0,{Ci}i∈γ∪{θ})和驗(yàn)證標(biāo)志.
4) 解密算法
Dncryptout:首先定義一個(gè)遞歸算法DecryNode(E,D,m),記i=att(m).
① 若m是葉子節(jié)點(diǎn),則:
② 若m非葉子節(jié)點(diǎn),那么對(duì)于m的任意孩子節(jié)點(diǎn)z調(diào)用遞歸算法DecryNode(E,D,m),并將輸出記為Fz.Sm是任意numm個(gè)子節(jié)點(diǎn)的集合,則:
若密文滿足訪問(wèn)策略樹,則該遞歸算法將返回計(jì)算結(jié)果:
e(g,g2)xtsH(ID)=e(g1,g2)tsH(ID).
用戶檢查是否附有一個(gè)冗余0k.如果是,則可以得到M;否則DSP則存在不誠(chéng)實(shí)的行為,輸出終止符⊥.
5) 屬性撤銷
6) 追蹤算法
驗(yàn)證用戶身份密鑰是否滿足e(D0,g)=e(D1,g)e(g1,g),當(dāng)通過(guò)密鑰檢查時(shí),可直接通過(guò)D2查詢擁有密鑰的用戶身份.
4.2.1 安全性分析
4.2.1.1 選擇性安全
定理1.在DBDH的假設(shè)下本文所構(gòu)造的VDC-KP-ABE方案具有不可區(qū)分選擇明文攻擊(indistinguishable chosen-plaintext attack, IND-CPA)安全.
證明. 若攻擊者可以在一個(gè)概率多項(xiàng)式時(shí)間內(nèi)以不可忽略的優(yōu)勢(shì)ε在IND-CPA安全模型下攻破本文方案,那我們就能創(chuàng)建一個(gè)挑戰(zhàn)者B能夠以不可忽略的優(yōu)勢(shì)解決DBDH問(wèn)題.因此在分析中我們主要的任務(wù)是提供一個(gè)挑戰(zhàn)者和攻擊者之間的真實(shí)方案的正確模擬.
假設(shè)挑戰(zhàn)者隨機(jī)翻轉(zhuǎn)一個(gè)二進(jìn)制硬幣μ.當(dāng)μ=0時(shí),四元組為(X=gx,Y=gy,Z=gz,T=e(g,g)xyz);否則,四元組為(X=gx,Y=gy,Z=gz,T=e(g,g)v).其中x,y,z,v∈Zq,挑戰(zhàn)者B輸出μ′作為μ的猜測(cè)值.
1) 初始化
挑戰(zhàn)者B運(yùn)行身份為ID的攻擊者A,并且接受挑戰(zhàn)屬性集ω和撤銷列表R.
2) 系統(tǒng)建立
3) 查詢階段1
grKGSP[b],i}i∈U-R),
挑戰(zhàn)者B設(shè)置
① 當(dāng)詢問(wèn)的屬性滿足訪問(wèn)結(jié)構(gòu),但詢問(wèn)的屬性屬于撤銷列表時(shí),
② 不滿足訪問(wèn)結(jié)構(gòu)時(shí),
此外,di0=d[b]i0×d[1-b]i0,di1=d[b]i1×d[1-b]i1,其中i∈U,挑戰(zhàn)者B將計(jì)算TK=({di0,di1}i∈(U-R)∪θ),并設(shè)置j=j+1,將(j,ω,·,x1b,x1(1-b),·)加入T后,返回x1b.
挑戰(zhàn)者B驗(yàn)證(i,ω,·,x1b,x1(1-b),·)是否存在T中,若存在,則返回私鑰SK;否則返回終止符⊥.
4) 挑戰(zhàn)
攻擊者A向挑戰(zhàn)者B提交2個(gè)明文M0,M1.挑戰(zhàn)者B隨機(jī)投擲硬幣v,選擇隨機(jī)數(shù)r∈RZP,并返回明文Mv加密后的結(jié)果,密文被模擬為
CT*=(ω∪θ,rMvTH(ID),gz,g-zα,{gzαi}i∈ω∪θ).
注意:
① 如果μ=0,則T=e(g,g)xyz.如果s=z,則:
其中,i∈ω∪θ.
② 如果μ=1,則T=e(g,g)v,那么C0=rMve(g,g)v.因?yàn)関是隨機(jī)的,在攻擊者A的視圖里C0也是隨機(jī)的,因此加密后的消息不包含Mv的任何信息.
5) 查詢階段2
重復(fù)查詢階段1.
6) 猜測(cè)
攻擊者A提供一個(gè)v的猜想v′.如果v′=v,挑戰(zhàn)者B會(huì)輸出μ′=0表示它是一個(gè)DBDH四元組.否則,它是一個(gè)隨機(jī)四元組.
證畢.
4.2.1.2 可驗(yàn)證性安全
定理2.假設(shè)H0和H1抵抗合謀攻擊的Hash函數(shù),那么VDC-KP-ABE方案具有可驗(yàn)證性.
證明.
假設(shè):若攻擊者A可以攻破本文方案的可驗(yàn)證性,那我們就能創(chuàng)建一個(gè)挑戰(zhàn)者B能夠以不可忽略的優(yōu)勢(shì)攻破Hash函數(shù)的抵抗合謀攻擊特性.
初始化:攻擊者提交2個(gè)Hash函數(shù)(H*0,H*1).
系統(tǒng)建立:挑戰(zhàn)者執(zhí)行Setup階段,然后用(H*0,H*1)替換公鑰中的(H0,H1).
階段1:B按照方案算法生成方式適應(yīng)性回答攻擊者A的詢問(wèn).
挑戰(zhàn)階段:攻擊者A提交一個(gè)密文M*和一個(gè)訪問(wèn)策略A*,挑戰(zhàn)者運(yùn)行Enc算法獲得密文CT*和驗(yàn)證VK*.
階段2:B按照方案算法生成方式適應(yīng)性回答攻擊者A的詢問(wèn),攻擊者不可以詢問(wèn)屬于訪問(wèn)策略A*的屬性.
猜測(cè)階段:攻擊者A輸出轉(zhuǎn)換密文CT*part=(C1,B).
若攻擊者A攻破可驗(yàn)證性,則挑戰(zhàn)者B可以從Decryptin(CT*part,RK*,VK*)恢復(fù)出明文.
計(jì)算攻擊者A成功的概率,只需考慮2種情況:
① (H0(R),C1)≠(H0(R)*,C*1),因?yàn)锽知道(H0(R)*,C*1),則B得到Hash函數(shù)H*1的碰撞值.
② (H0(R),C1)=(H0(R)*,C*1),但R≠R*,因?yàn)镠*0(R)≠H*0(R*),則H*0抗合謀性將被攻破.
綜上所述,完成定理2的證明.
證畢.
4.2.2 效率
本節(jié)從理論上分析密鑰生成、加密過(guò)程和解密過(guò)程的計(jì)算開銷,將本文構(gòu)造方案與文獻(xiàn)[3,6,13]中方案進(jìn)行計(jì)算效率對(duì)比.其中,E表示G中指數(shù)計(jì)算,P表示對(duì)計(jì)算,M表示群乘法計(jì)算.另外W表示屬性集的大小,d表示陷門值,l表示線性秘密共享(LSSS)中生成矩陣的行數(shù).指數(shù)、群乘法運(yùn)算和雙線性對(duì)的計(jì)算量相對(duì)于其他計(jì)算需要更多的計(jì)算時(shí)間,因此本文忽略了次要因素.
本文方案和文獻(xiàn)[3,6,13]中方案的效率對(duì)比如表2所示.文獻(xiàn)[3]中是原始ABE方案,與文獻(xiàn)[3]中方案對(duì)比,本文方案將密鑰分配和解密工作外包,并且可驗(yàn)證外包結(jié)果正確性,同時(shí)用戶計(jì)算量減少,緩解了資源受限用戶的計(jì)算負(fù)擔(dān)問(wèn)題,加快了方案運(yùn)行效率,且支持屬性撤銷與用戶追蹤.與文獻(xiàn)[13]方案相比,本文方案支持外包計(jì)算的可驗(yàn)證性,且計(jì)算效率更高.與文獻(xiàn)[6]中ABE方案相比,本文構(gòu)造的方案使用線下加密,既減少線上加密時(shí)間、加快方案效率,又有效保護(hù)用戶數(shù)據(jù)的安全性,同時(shí)支持屬性撤銷和用戶可追蹤.
Table 2 Comparison of Efficiency
Note: The tick indicates that this function is supported in the article, and the cross indicates that this function is not supported in the article.
為了滿足計(jì)算、存儲(chǔ)能力不足用戶的訪問(wèn)需求,本文構(gòu)造了將密鑰分配和解密過(guò)程外包的屬性加密方案,并且能夠驗(yàn)證外包計(jì)算的正確性.該方案支持屬性撤銷,并且可追蹤泄露密鑰的用戶.本文方案應(yīng)用樹形訪問(wèn)策略,達(dá)到更細(xì)粒度的訪問(wèn)控制;其次方案將加密過(guò)程分為在線階段和離線階段,離線階段利用已知的公鑰進(jìn)行部分加密,既有效保護(hù)用戶數(shù)據(jù)的隱私性,又減輕了用戶的計(jì)算負(fù)擔(dān);針對(duì)實(shí)際應(yīng)用中用戶訪問(wèn)權(quán)限的變更,本文方案通過(guò)使用重加密的方法更新密文與密鑰,支持基于訪問(wèn)樹的細(xì)粒度屬性撤銷,并將用戶身份嵌入到用戶密鑰中,既防止合謀攻擊,又可以通過(guò)密鑰追蹤到用戶身份.最后,在標(biāo)準(zhǔn)模型下基于DBDH假設(shè)證明了本文方案是IND-CPA安全的.