郭麗峰 李智豪 胡 磊
1(山西大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 太原 030006)2(山西大學(xué)大數(shù)據(jù)科學(xué)與產(chǎn)業(yè)研究院 太原 030006)3(信息安全國家重點(diǎn)實(shí)驗(yàn)室(中國科學(xué)院信息工程研究所) 北京 100093)
云存儲由于其低成本、具有無限數(shù)據(jù)存儲空間的特點(diǎn),已受到廣泛重視和應(yīng)用.用戶可以將大量數(shù)據(jù)存儲在云服務(wù)器上.但是云服務(wù)器并不完全可信,為了保證用戶數(shù)據(jù)的安全,用戶的敏感數(shù)據(jù)通常需要加密后再存儲在云服務(wù)器上.但是在傳統(tǒng)的密文存儲和查詢服務(wù)中,由于云服務(wù)器沒有檢索功能,不能根據(jù)用戶需求查找數(shù)據(jù).帶關(guān)鍵詞搜索的公鑰加密體制解決了在云服務(wù)器不可信的條件下加密數(shù)據(jù)檢索的問題.其主要思想是:發(fā)送者首先分別加密數(shù)據(jù)和關(guān)鍵詞上傳至云服務(wù)器;然后接收者發(fā)送一個由關(guān)鍵詞生成的陷門給云服務(wù)器;最后云服務(wù)器執(zhí)行關(guān)鍵詞密文和陷門的匹配算法.云服務(wù)器判斷密文和陷門是否包含相同的關(guān)鍵字,若是則將密文數(shù)據(jù)發(fā)送給接收方,此過程云服務(wù)器不能獲得關(guān)鍵詞和明文數(shù)據(jù)的任何信息.
Boneh等人[1]在2004年首次提出了帶關(guān)鍵詞搜索的公鑰加密方案(public key encryption with keyword search, PEKS)(下文中的公鑰加密算法記為PEKS),該方案是通過基于身份的加密方案(identity-based encryption, IBE)[2]所構(gòu)造,其基本思想是:將PEKS中的關(guān)鍵詞w替代IBE中用戶的身份ID,將PEKS中接收者給服務(wù)器的陷門替代IBE用戶的私鑰,所以要求基于身份的加密方案必須具有匿名性才能轉(zhuǎn)換成帶關(guān)鍵詞搜索的公鑰加密方案.文獻(xiàn)[1]在接收者給云服務(wù)器傳輸陷門時,需要安全信道,導(dǎo)致昂貴的開銷,而且方案的安全性是在隨機(jī)預(yù)言模型(random oracle model, RO)下進(jìn)行證明的.Baek等人[3]提出了無安全信道的可搜索加密方案(secure channel free PEKS, SCF-PEKS),其方法是通過引入云服務(wù)器的公私鑰對來消除安全信道,只有指定的服務(wù)器才能夠?qū)﹃P(guān)鍵詞密文與陷門進(jìn)行匹配.但是其方案也是在隨機(jī)預(yù)言模型下進(jìn)行的安全性證明,而且在安全性證明中當(dāng)云服務(wù)器為攻擊者時,云服務(wù)器的公私鑰對卻由模擬器來產(chǎn)生,這樣不符合實(shí)際要求,因?yàn)樵诠€加密體制中,公私鑰對應(yīng)該由自己產(chǎn)生,而不應(yīng)該由第三方產(chǎn)生.此后Rhee等人[4-5]加強(qiáng)了Baek等人的安全模型,即攻擊者的公私鑰對由其自己產(chǎn)生,這樣符合實(shí)際情況,并提出了一系列指定檢驗(yàn)者的關(guān)鍵詞搜索方案(designated tester PEKS, dPEKS),但是這些方案也是在隨機(jī)預(yù)言模型下可證明安全且不能抵制選擇密文攻擊.Fang等人[6]利用Gentry[7]的基于身份加密方案構(gòu)造了標(biāo)準(zhǔn)模型下的帶關(guān)鍵詞搜索方案.隨后在文獻(xiàn)[8]中,通過引入一次性強(qiáng)簽名方案,能夠抵制選擇關(guān)鍵詞和密文攻擊.但文獻(xiàn)[8]在安全性證明中,敵手的公私鑰對也是由模擬器來產(chǎn)生.
2006年Byun等人[9]首次提出外部的離線關(guān)鍵詞猜測攻擊(resist external keyword guessing attack, REKGA)的概念,并對文獻(xiàn)[1,10]的PEKS方案進(jìn)行了離線關(guān)鍵詞猜測攻擊;Jeong等人[11]指出:滿足一致性的PEKS方案一定不能夠抵制關(guān)鍵詞猜測攻擊;在文獻(xiàn)[12]的安全性證明中,指出僅當(dāng)敵手能得到陷門且自己能進(jìn)行驗(yàn)證的前提下,該結(jié)論才成立,所以得出滿足一致性的PEKS方案一定不能夠抵制內(nèi)部關(guān)鍵詞猜測攻擊,因?yàn)閷τ诜?wù)器來說,既能得到陷門又能自己進(jìn)行陷門和關(guān)鍵詞密文的匹配驗(yàn)證;Rhee等人[4]提出了陷門不可區(qū)分性的概念,并證明陷門不可區(qū)分性是抵抗外部關(guān)鍵詞猜測攻擊的充分條件,并提出了一個具體的方案抵制外部離線關(guān)鍵詞猜測攻擊;Guo等人[13]和Fang等人[8]構(gòu)造出一個可抵抗外部敵手進(jìn)行關(guān)鍵詞猜測攻擊的方案,并在標(biāo)準(zhǔn)模型下證明方案的安全性,但文獻(xiàn)[8,13]都不能抵制內(nèi)部服務(wù)器進(jìn)行離線關(guān)鍵詞猜測攻擊.
2013年Yau等人[14]提出文獻(xiàn)[12]不能抵制內(nèi)部離線關(guān)鍵詞猜測攻擊,即當(dāng)服務(wù)器是攻擊者的情況下的攻擊,其基本思路是服務(wù)器自己猜測一些關(guān)鍵詞,然后進(jìn)行加密,由于服務(wù)器能夠得到陷門并且通過陷門進(jìn)行檢驗(yàn),從而得出陷門包含了哪個關(guān)鍵詞;文獻(xiàn)[14]指出:相似于文獻(xiàn)[12]的PEKS方案構(gòu)造都不能抵制上述攻擊,文獻(xiàn)[14]還提出了一種在線關(guān)鍵字猜測攻擊類型(online keyword guessing attack, OKGA),這種類型的敵手是一個外部攻擊者,敵手可以對所有可能的關(guān)鍵詞w都配對一個虛假的明文數(shù)據(jù)m′,并將它們加密上傳至云服務(wù)器,并對服務(wù)器和目標(biāo)接收者的通信進(jìn)行監(jiān)聽.一旦服務(wù)器將包含明文數(shù)據(jù)m′的加密文檔發(fā)送給接收者,攻擊者會知道接收者的陷門包含哪個關(guān)鍵詞.
為了抵制內(nèi)部(即服務(wù)器)離線關(guān)鍵詞猜測攻擊,Shao等人[15]在Fang等人[8]的基礎(chǔ)上引入了發(fā)送者的身份,通過確定性RSA算法對發(fā)送者身份進(jìn)行簽名,當(dāng)服務(wù)器自己產(chǎn)生關(guān)鍵詞密文時,卻不能進(jìn)行匹配測試.文獻(xiàn)[15]聲稱其方案能夠抵抗內(nèi)部關(guān)鍵詞猜測攻擊,但文獻(xiàn)[16]指出,該方案中的服務(wù)器必須誠實(shí)地進(jìn)行測試,但事實(shí)上,服務(wù)器可以是惡意的,同時Lu等人[16]指出文獻(xiàn)[8]不能抵制外部離線關(guān)鍵詞猜測攻擊,但服務(wù)器必須提供在線服務(wù).文獻(xiàn)[16]在文獻(xiàn)[8]的基礎(chǔ)上提出一個能抵制內(nèi)部離線關(guān)鍵詞猜測攻擊的PEKS方案,而且該方案在標(biāo)準(zhǔn)模型下可抵制選擇密文攻擊.2017年Huang等人[17]在對關(guān)鍵詞加密時引入發(fā)送者的私鑰,實(shí)現(xiàn)公鑰認(rèn)證加密功能,從而抵制內(nèi)部離線關(guān)鍵詞猜測攻擊,但是這個方案的陷門是固定的,且被指出不滿足密文不可區(qū)分性[18].Li等人[19]引入了權(quán)威機(jī)構(gòu)對用戶進(jìn)行授權(quán)認(rèn)證,并產(chǎn)生對應(yīng)的身份私鑰,隨后用戶用其私鑰對關(guān)鍵詞密文進(jìn)行認(rèn)證加密,但該方案仍舊是在隨機(jī)預(yù)言模型下進(jìn)行的安全性證明.Lu等人[20]采用簽密的思想來抵制內(nèi)部離線關(guān)鍵詞猜測攻擊,即在產(chǎn)生關(guān)鍵詞密文的過程中,使用發(fā)送者的私鑰,由于除了發(fā)送者,任何人不知道發(fā)送者的私鑰,敵手不能產(chǎn)生合法的關(guān)鍵詞密文來匹配任何關(guān)鍵詞陷門.這種構(gòu)造方式的局限性是,當(dāng)接收者產(chǎn)生關(guān)鍵詞陷門時,必須要涉及到發(fā)送者的公鑰或身份,所以相當(dāng)于接收者事先委派了發(fā)送者,這樣會影響實(shí)際使用效果.使用這種技巧使得方案抵制內(nèi)部關(guān)鍵詞猜測攻擊有文獻(xiàn)[17-22].文獻(xiàn)[23]通過將密文隨機(jī)化來抵制外部在線和離線關(guān)鍵詞猜測攻擊.文獻(xiàn)[20]指出構(gòu)造具有任何搜索功能,而不受接收者委派,但是還能夠抵制各種關(guān)鍵詞猜測攻擊的PEKS方案是一個公開問題.
最近文獻(xiàn)[24]闡述了基于對稱密碼學(xué)和基于公鑰密碼學(xué)而構(gòu)造的可搜索加密機(jī)制的不同特點(diǎn),分析了可搜索加密機(jī)制在支持單詞搜索、連接關(guān)鍵詞搜索和復(fù)雜邏輯結(jié)構(gòu)搜索語句的研究進(jìn)展;文獻(xiàn)[25]首先介紹了關(guān)于可搜索加密的理論研究進(jìn)展情況,最后指出了關(guān)于可搜索加密應(yīng)用的公開問題和未來發(fā)展趨勢;文獻(xiàn)[26-28]都對可搜索加密進(jìn)行了綜述性的總結(jié),文獻(xiàn)[27]提出一種多用戶的可搜索方案,用戶按照自己的意愿設(shè)置訪問權(quán)限,不需要1個可信的用戶搜索中心,弱化了可信第三方的功能.
綜上所述,從6個方面對PEKS的安全模型進(jìn)行總結(jié):
1) 陷門是否通過公開信道傳輸.通過引入服務(wù)器的公私鑰對,使得在檢驗(yàn)中必須使用服務(wù)器的私鑰才能檢驗(yàn),從而使得陷門可以在公開信道傳輸.
2) 是否在標(biāo)準(zhǔn)模型下進(jìn)行安全性證明.因?yàn)殡S機(jī)預(yù)言模型下進(jìn)行的安全性證明只是一種啟發(fā)式證明,所以在標(biāo)準(zhǔn)模型下可證明方案的安全性是加密方案證明的終極目標(biāo).
3) 是否抵制適應(yīng)性選擇關(guān)鍵詞攻擊.從2方面考慮:敵手為惡意的服務(wù)器或惡意的接收者.
4) 是否抵制關(guān)鍵字猜測攻擊.從3種情況考慮:外部離線關(guān)鍵詞猜測攻擊、外部在線關(guān)鍵詞猜測攻擊、內(nèi)部離線關(guān)鍵詞猜測攻擊.
5) 在安全性證明中,敵手的私鑰是否必須由挑戰(zhàn)者來產(chǎn)生.實(shí)際情況是敵手自己產(chǎn)生私鑰,但在很多方案中,由于模擬器要利用敵手的私鑰,所以敵手的私鑰由模擬器來產(chǎn)生,不符合實(shí)際情況.
6) 是否抵制適應(yīng)性選擇密文攻擊.已有的方案通過引入一次性強(qiáng)不可偽造簽名方案抵制適應(yīng)性選擇關(guān)鍵詞攻擊.這樣使得所構(gòu)造的方案效率較低.通過直接構(gòu)造來抵制適應(yīng)性選擇關(guān)鍵詞攻擊成為公開問題.
表1進(jìn)行了總結(jié),指出目前構(gòu)造的一些PEKS方案滿足哪些安全性要求,其中一些安全性要求縮寫為:抵抗選擇關(guān)鍵詞攻擊(resist chosen keyword attack, RCKA),分2種情況,攻擊者為服務(wù)器(server)或接收者(receiver),抵制選擇密文攻擊(resist chosen ciphertext attack, RCCA)、抵制外部關(guān)鍵詞猜測攻擊(resist external keyword guessing attack, REKGA)、抵制內(nèi)部關(guān)鍵詞猜測攻擊(resist internal keyword guessing attack, RIKGA)、認(rèn)證功能(authentication Function, AF)、抵制在線關(guān)鍵字猜測攻擊(resist online keyword guessing attack,ROKGA).
Table 1 Performance Comparison of Security Model of PEKS表1 PEKS安全模型的性能對比
針對上述問題,本文的主要貢獻(xiàn)有3個方面:
1) 提出一種能夠抵制內(nèi)部關(guān)鍵詞猜測攻擊的帶關(guān)鍵搜索的公鑰加密方案.目前使用的技巧是通過發(fā)送者在加密的同時使用了數(shù)字簽名,這樣使得內(nèi)部攻擊者即服務(wù)器不能夠產(chǎn)生關(guān)鍵詞密文,從而抵制了內(nèi)部關(guān)鍵詞猜測攻擊,相當(dāng)于接收者事先需要指定密文的發(fā)送者.但是在很多實(shí)際情況下,接收者不知道發(fā)送者是誰.本文通過引入發(fā)送者和服務(wù)器的身份,并將其放在方案中算式的分母上,使得服務(wù)器無法自己產(chǎn)生關(guān)鍵詞密文,從而抵制內(nèi)部關(guān)鍵詞猜測攻擊.
2) 由于關(guān)鍵詞密文能夠進(jìn)行公開驗(yàn)證其正確性,本文構(gòu)造的方案能夠抵制適應(yīng)性選擇密文攻擊,而且所構(gòu)造的方案沒有使用額外的一次性強(qiáng)不可偽造簽名,從而方案的效率很高.
3) 本文的陷門是在公開信道傳輸,而且能夠抵制適應(yīng)性選擇關(guān)鍵詞攻擊,且方案是在標(biāo)準(zhǔn)模型下可證明安全.
記G1=g表示由生成元g生成的有限群G1.輸入安全參數(shù)k,輸出雙線性映射的參數(shù)(p,g,G1,G2,e),其中G1和G2是階為素?cái)?shù)p的循環(huán)群,g是G1的生成元,映射e:G1×G1→G2具有3個性質(zhì):
2) 非退化性.對G1的生成元g,有e(g,g)≠1.
3) 可計(jì)算性.對于任意的g,h∈G1,存在多項(xiàng)式時間算法計(jì)算e(g,h).
1) 商判定雙線性Diffie-Hellman(QDBDH)假設(shè).
2) 判定雙線性Diffie-Hellman(DBDH)假設(shè).
3) Hash Diffie-Hellman(HDH)假設(shè).
設(shè)hLen是一個整數(shù)且H:{0,1}*→{0,1}hLen是一個Hash函數(shù).G1中HDH問題定義為:
沒有多項(xiàng)式時間算法至少以優(yōu)勢ε在G1中解決HDH問題,我們稱HDH假設(shè)在G1中成立.
本節(jié)我們介紹SCF-PEKS模型,它是一個不需要接收者與服務(wù)器建立安全信道的帶關(guān)鍵詞搜索加密模型,系統(tǒng)中包含4個實(shí)體,即系統(tǒng)參數(shù)生成中心(system parameter generation center, SPGC)、數(shù)據(jù)發(fā)送者(data sender, DS)、數(shù)據(jù)接收者(data receiver, DR)、云服務(wù)器(cloud server, CS),系統(tǒng)模型如圖1所示:
Fig. 1 System model of PEKS圖1 PEKS系統(tǒng)模型
1) 系統(tǒng)參數(shù)生成中心
系統(tǒng)參數(shù)生成中心是系統(tǒng)中唯一的可信第三方,運(yùn)行Setup算法產(chǎn)生系統(tǒng)的公開參數(shù),并把公開參數(shù)發(fā)送給系統(tǒng)中的其他實(shí)體.
2) 數(shù)據(jù)發(fā)送者
數(shù)據(jù)發(fā)送者收到公開參數(shù)之后,運(yùn)行PEKS算法,對明文數(shù)據(jù)和關(guān)鍵詞加密并上傳至云服務(wù)器.
3) 數(shù)據(jù)接收者
數(shù)據(jù)接收者運(yùn)行KeyGenR算法產(chǎn)生自己的公私鑰,運(yùn)行dTrapdoor算法生成關(guān)鍵詞對應(yīng)的陷門,并上傳至云服務(wù)器.
4) 云服務(wù)器
云服務(wù)器是一個誠實(shí)且好奇的實(shí)體,運(yùn)行KeyGenS算法產(chǎn)生自己的公私鑰,運(yùn)行是dTest算法為接收者提供搜索服務(wù).
5) 云服務(wù)器
云服務(wù)器最后把搜索的結(jié)果返回給數(shù)據(jù)接收者.
我們的算法只關(guān)注關(guān)鍵詞加密部分,具體為:
1)Setup(1k).該算法由系統(tǒng)參數(shù)生成中心執(zhí)行,輸入安全參數(shù)1k,輸出公開參數(shù)params.
2)KeyGenR(params).該算法由數(shù)據(jù)接收者執(zhí)行,輸入公開參數(shù)params,輸出他的公私鑰對(pkR,skR).
3)KeyGenS(params).該算法由云服務(wù)器執(zhí)行,輸入公開參數(shù)params,輸出他的公私鑰對((pkS,skS)).
4)PEKS(params,pkR,pkS,IDsender,w).該算法由數(shù)據(jù)發(fā)送者執(zhí)行,輸入公開參數(shù)params、接收者的公鑰pkR、服務(wù)器的公鑰pkS、發(fā)送者的身份IDsender、關(guān)鍵詞w,輸出關(guān)鍵詞的密文CT.
5)dTrapdoor(params,pkS,skR,IDserver,w).算法由數(shù)據(jù)接收者執(zhí)行,輸入公開參數(shù)params、接收者的私鑰skR、服務(wù)器的公鑰pkS、服務(wù)器的身份IDserver、關(guān)鍵詞w,輸出關(guān)鍵詞的陷門Tw.
6)dTest(params,CT,Tw,skS,pkR,IDsender,IDserver).該算法由云服務(wù)器執(zhí)行,輸入關(guān)鍵詞的密文CT和陷門Tw、接收者的公鑰pkR、服務(wù)器的私鑰skS、發(fā)送者的身份IDsender、服務(wù)器的身份IDserver,輸出是否匹配成功.
本節(jié)提出了一個不僅可以抵抗內(nèi)部關(guān)鍵詞猜測攻擊而且能夠抵抗適應(yīng)性選擇關(guān)鍵詞密文攻擊的方案,具體算法為:
4)PEKS(params,pkR,pkS,IDsender,w).輸入公開參數(shù)params,接收者的公鑰pkR,服務(wù)器的公鑰pkS,發(fā)送者的身份IDsender,關(guān)鍵字w,發(fā)送者計(jì)算關(guān)鍵詞的密文為:
③ 輸出關(guān)鍵詞密文CT=(s′,C1,C2,C3,C4)并發(fā)送給服務(wù)器.
6)dTest(params,CT,Tw,skS,pkR,IDsender,IDserver).該算法由云服務(wù)器執(zhí)行,輸入關(guān)鍵詞的密文CT和陷門Tw,接收者的公鑰pkR,服務(wù)器的私鑰skS=xS,發(fā)送者的身份IDsender,服務(wù)器的身份IDserver.服務(wù)器首先計(jì)算h′=H2(C1,C2,C3),判斷e(C1,(uh′vs′d))=e(pkR,C4)是否相等.若不相等則匹配失敗,終止該算法.
1) 正確性.正確的關(guān)鍵詞密文CT必須與正確關(guān)鍵詞陷門Tw匹配,服務(wù)器才能測試成功.在dTest算法中,有:
因此:
dTest(params,CT,Tw,skS,pkR,
IDsender,IDserver)=“yes”.
H1[(e(C1,T′xS)C2)]≠C3.
定理1.假設(shè)QDBDH和DBDH問題是困難問題,我們的方案在標(biāo)準(zhǔn)模型下是可證明安全的.
引理1.假設(shè)QDBDH問題是困難問題,我們的方案在標(biāo)準(zhǔn)模型下能夠抵抗選擇關(guān)鍵詞和密文攻擊(chosen keyword and ciphertext attack, CKCA).
C*1=gx*R=(ga)x*R(1a)=(Ax*R)r*=p,
C2=QxS(wδ×α0×IDsender+β)=
e(pkS,B)(wδ×α0×IDsender+β)a=
e(pkS,Bwδ×α0×IDsenderBβ)=
C*3=H1(QxS(wδ×α0))=H1(e(pkS,g(wδ×α0))ba)=
H1(e(pkS,B(wδ×α0))r*),
C*4=g(α1h′*+α2s′*+α3)=(Aα1h′*+α2s′*+α3)r*=
(gxuh′*+xvs′*×Aα1h′*×Aα2s′*×Aα3)r*=
((gxu×Aα1)h′*(gxv×Aα2)s′*Aα3)r*=(uh′*vs′*d)r*,
因?yàn)镼在G2是獨(dú)立且均勻分布的,所以挑戰(zhàn)密文CT*也獨(dú)立于δ.
Pr[Abort]至少為因此
證畢.
引理2.假設(shè)DBDH問題是困難問題,我們的方案在標(biāo)準(zhǔn)模型下能夠抵抗選擇關(guān)鍵詞攻擊(chosen keyword attack, CKA).
證畢.
定理2.假設(shè)HDH問題是困難問題,我們的方案在標(biāo)準(zhǔn)模型下能夠抵抗離線關(guān)鍵詞猜測攻擊(off-line keyword guessing attack, KGA).
T*1=B=gr′*,
證畢.
Table 2 Efficiency Comparisons of Different Schemes表2不同方案的效率對比
Fig. 2 Computation cost of PEKS圖2 加密關(guān)鍵字的計(jì)算代價
Fig. 3 Computation cost of trapdoor圖3 陷門產(chǎn)生的計(jì)算代價
Fig. 4 Computation cost of test圖4 匹配的計(jì)算代價
Table 3 Performance Comparison of Security Model Between Ours Scheme and Other Two Schemes表3 本文方案和其他2種方案安全模型的性能對比
本文構(gòu)造了一個高效率的帶關(guān)鍵詞搜索公鑰加密方案,該方案能夠抵制內(nèi)部、外部離線關(guān)鍵詞猜測攻擊,而且在不使用安全信道的前提下可抵制適應(yīng)性選擇密文攻擊.但本文的不足是,在安全性證明中敵手的私鑰由模擬器來產(chǎn)生.下一步的工作是構(gòu)造一個更符合實(shí)際應(yīng)用的帶關(guān)鍵詞搜索的公鑰加密方案.