鄧銀娟,杜紅珍,竇曉霞
(寶雞文理學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院,陜西 寶雞 721013)
2000年Song等人[1]在對稱密碼體制的基礎(chǔ)上提出了可搜索加密的概念,標(biāo)志著可搜索加密技術(shù)的誕生。此技術(shù)解決了在云存儲下進行數(shù)據(jù)搜索時可能產(chǎn)生的用戶敏感數(shù)據(jù)泄露的問題。通過可搜索加密技術(shù),將與搜索關(guān)鍵詞相對應(yīng)的陷門提供給云端服務(wù)器,服務(wù)器匹配密文文件與陷門,從而將包含特定關(guān)鍵詞的文件檢索出來,并將文件返回給用戶。就服務(wù)器而言,除可以猜測任意2個搜索到的文件是否包含相同關(guān)鍵詞以外,不會得到存儲在云中的原始文件的任何信息。Goh[2]給出了一個對稱的可搜索加密方案,并且對其安全性給出了形式化定義。
2004年Boneh等人[3]給出了一個新的密碼原語——公鑰可搜索加密(Public key Encryption with Keyword Search, PEKS),從而解決了存儲在云中數(shù)據(jù)的安全性同搜索效率之間的矛盾。隨后Park等人[4-5]在文獻[3]方案的基礎(chǔ)上給出了連接關(guān)鍵詞搜索方案和數(shù)據(jù)外包下的可搜索方案,擴展了可搜索加密的實用性。但傳統(tǒng)的PEKS方案在實用性方面存在著一個很大的缺陷,即陷門在接收者與服務(wù)器之間需要由安全信道來傳送,但此要求在大多數(shù)情況下是無法實現(xiàn)或?qū)崿F(xiàn)時代價過高。
2008年Baek等人[6]給出了一種無安全信道的可搜索公鑰加密(Secure-Channel Free Public key Encryption with Keyword Search, SCF-PEKS)技術(shù),該技術(shù)避免了PEKS方案必須要安全信道的缺陷。然而該方案的安全性是基于隨機預(yù)言機模型的。2009年,F(xiàn)ang等人[7]首次在標(biāo)準(zhǔn)模型下,提出了一個可證明安全的SCF-PEKS方案,該方案是基于Gentry[8]身份進行加密方案構(gòu)造的,因為方案中利用了檢測算法,所以效率不是很高。2011年,Emura等人[9]構(gòu)造了具有自適應(yīng)安全的SCF-PEKS方案,該方案利用了實時性加密技術(shù)。2014年,孫婷等人[10]利用模糊身份加密的方法,在解決分布式系統(tǒng)進行關(guān)鍵字搜索的情景中,給出了一個新的公鑰可搜索加密方案,并分析了方案的完善性。同時,劉鵬亮等人[11]給出了一種基于EIGamal算法的公鑰可搜索加密方案,而非一般的基于雙線性對。2015年,Emura等人[12]在文獻[9]的基礎(chǔ)上,利用劃分密文結(jié)構(gòu)的基于身份的加密方法構(gòu)造了效率更高的SCF-PEKS方案。同年,Guo等人[13]提出的SCF-PEKS方案不僅抵抗選擇關(guān)鍵字攻擊(INDistinguishability of SCF-PEKS against Chosen Keyword Attack, IND-SCF-CKA),而且抵抗關(guān)鍵字猜測攻擊(IND-KGA),使得該方案更加安全。同時,林楠等人[14]為了優(yōu)化返回搜索結(jié)果的目的而提出了一種排序非對稱的PEKS方案。李真等人[15]給出了一個多用戶可搜索方案,滿足自主授權(quán),且不需要可信的用戶管理中心,但該方案是在隨機預(yù)言機模型下證明的安全性。2016年,Wang等人[16]提出了一個多個關(guān)鍵字的SCF-PEKS,與文獻[6]的多關(guān)鍵詞PEKS方案相比有更好的性能。Lu等人[17]給出了一種連接關(guān)鍵詞的可搜索加密方案,具有很好效率。徐磊等人[18]提出了一個高效的PEKS方案,因為該方案減短了系統(tǒng)參數(shù)。Jiang等人[19]提出了一個新的授權(quán)SCF-PEKS方案,可抗關(guān)鍵字猜測攻擊,并且使得授權(quán)口令與授權(quán)集合長度獨立,大大降低了帶寬負載。2019年,程晉雪等人[20]提出了一個雙系統(tǒng)可搜索加密方案,解決了如何將雙系統(tǒng)轉(zhuǎn)化至非安全信道。曹素珍等人[21]給出了一種多關(guān)鍵詞公鑰PEKS,對用戶進行身份驗證,該方案可以抗關(guān)鍵字猜測。王少輝等人[22]給出了一種更高效的公鑰可搜索加密方案,抗內(nèi)部關(guān)鍵字攻擊。曾琦等人[23]結(jié)合公鑰加密和可搜索加密給出了一種新的加密方案。李士強等人[24]給出了一個標(biāo)準(zhǔn)模型下的SCF-PEKS方案,相對于之前的方案更高效,方案基于判定性子群和DBDH假設(shè),抗選擇關(guān)鍵詞攻擊。
本文在標(biāo)準(zhǔn)模型下提出一種可以允許多用戶注冊使用的安全高效的SCF-PEKS方案,在靜態(tài)假設(shè)下驗證了該方案的安全性,基于判定性子群假設(shè),在選擇關(guān)鍵詞的攻擊下是安全的,并與文獻[24]進行對比,具有更好的驗證效率。
定義1合數(shù)階雙線性群。設(shè)G、GT都為階等于N=p1p2p3的雙線性循環(huán)群,p1、p2、p3是3個互不相同的素數(shù)。雙線性映射e:G×G→GT滿足以下3個性質(zhì):
1)雙線性。?g,h∈G,a,b∈ZN,有e(ga,hb)=e(g,h)ab。
2)非退化性。?g∈G,e(g,g)≠1。
3)可計算性。群G和群GT中的所有運算,雙線性運算e都可以在多項式時間內(nèi)完成。
設(shè)Gp1、Gp2和Gp3分別表示群G的子群,其階依次為p1、p2和p3,則Gp1、Gp2和Gp3相互正交。
對于給定群生成器G,輸入安全參數(shù)λ,定義以下分布:
D=(gi,gj,g(i,j))
定義2SCF-PEKS。SCF-PEKS方案由以下6個算法構(gòu)成:
1)GlobalSetup(λ):以安全參數(shù)λ為輸入,輸出全局參數(shù)GP。
2)KeyGenserver(GP):輸入上述算法得到的全局參數(shù)GP,用以生成服務(wù)器S的公私鑰對(pks,sks)。
3)KeyGenReceiver(GP):輸入全局參數(shù)GP,輸出接收者R公私鑰對(pkR,skR)。
4)SCF-PEKS(GP,pks,pkR,w′):輸入全局參數(shù)GP,服務(wù)器的公鑰pks,接收者的公鑰pkR和關(guān)鍵詞w′,生成關(guān)鍵詞w′的PEKS密文C。
5)Trapdoor(GP,skR,w):輸入全局參數(shù)GP,接收者私鑰skR和關(guān)鍵詞w,生成陷門信息Tw。
6)Test(GP,Tw,sks,C):輸入全局參數(shù)GP,陷門Tw,服務(wù)器私鑰sks和w′的PEKS密文C,若w=w′,則輸出“yes”,否則輸出“no”。
由1.3節(jié)定義2可以看到SCF-PEKS步驟中需要用到接收者R的公鑰,因此數(shù)據(jù)擁有者上傳的關(guān)鍵詞密文僅與數(shù)據(jù)接收者R提供的陷門能夠匹配,這就將云服務(wù)器的搜索服務(wù)局限于某一用戶。鑒于SCF-PEKS方案的這一缺陷,下面提供一個新的SCF-PEKS方案,此方案采用用戶向密鑰中心(KGC)注冊的方式提供搜索服務(wù)給需要的用戶。方案模型如圖1所示。
圖1 新SCF-PEKS方案安全模型
安全模型中參與者主要涉及4個角色:數(shù)據(jù)擁有者、數(shù)據(jù)接收者R、云服務(wù)器S、密鑰注冊中心K。
安全模型中主要的通信有以下5個步驟:
1)數(shù)據(jù)擁有者上傳加密數(shù)據(jù)和關(guān)鍵詞密文到云服務(wù)器S。
2)數(shù)據(jù)接收者R向密鑰注冊中心K上傳個人信息申請密鑰。
3)密鑰注冊中心K下發(fā)與數(shù)據(jù)接收者R相關(guān)的密鑰密文。
4)數(shù)據(jù)接收者R向云服務(wù)器S上傳關(guān)鍵詞陷門申請數(shù)據(jù)搜索服務(wù)。
5)云服務(wù)器S搜索驗證成功后,向數(shù)據(jù)接收者R傳輸與陷門相對應(yīng)的加密數(shù)據(jù)。
定義3注冊SCF-PEKS。無安全信道的注冊用戶可搜索公鑰加密方案由下面幾個算法組成:
1)GlobalSetup(λ):輸入安全參數(shù)λ,生成全局參數(shù)GP。
2)KeyGenKGC(GP):輸入全局參數(shù)GP,生成密鑰生成中心K的公私鑰對(pkK,skK)。
3)KeyGenserver(GP,pkK):輸入全局參數(shù)GP,密鑰生成中心公鑰pkK,生成服務(wù)器S的公私鑰對(pks,sks)。
4)SCF-PEKS(GP,pks,pkK,w′):輸入全局參數(shù)GP,密鑰生成中心的公鑰pkK,服務(wù)器的公鑰pks以及關(guān)鍵詞w′,生成關(guān)于關(guān)鍵詞w′的PEKS密文C。
5)KeyRegReceiver(GP):輸入全局參數(shù)GP,接收者R向密鑰生成中心K申請注冊搜索私鑰,K向R分發(fā)搜索私鑰skR。
6)Trapdoor(GP,skR,w):輸入全局參數(shù)GP,接收者的搜索私鑰skR以及關(guān)鍵詞w,生成陷門Tw。
7)Test(GP,Tw,sks,C):輸入全局參數(shù)GP,陷門Tw,服務(wù)器的私鑰sks以及w′的PEKS密文C,若w=w′,則輸出“yes”,否則輸出“no”。
定義4選擇關(guān)鍵詞攻擊IND-SCF-CKA。設(shè)安全參數(shù)為λ,A是一個多項式時間敵手,B為模擬者。定義A和B之間的2個攻擊游戲:
Game1 假設(shè)A是內(nèi)部敵手(云服務(wù)器),模擬攻擊游戲如下:
1)setup:運行定義3中的算法GlobalSetup(λ),生成系統(tǒng)的公共參數(shù)GP,運行算法KeyGenKGC(GP)、KeyGenserver(GP)、KeyRegReceiver(GP),生成密鑰注冊中心和服務(wù)器的公私鑰對(pkK,skK)、(pks,sks),以及接收者的搜索密鑰skR。然后B將(pks,sks)和pkK發(fā)送給A。
2)Queryphase1:對于關(guān)鍵詞w∈SKw,敵手A自適應(yīng)的向模擬者B詢問加密陷門,B計算Tw=Trapdoor(GP,skR,w),返回Tw給A。
3)Challenge:當(dāng)A決定Queryphase1結(jié)束時,就給B發(fā)出挑戰(zhàn)關(guān)鍵詞對(w0,w1),要求w0,w1不能出現(xiàn)在Queryphase1詢問過程中,B隨機地選取b∈(0,1),C*=SCF-PEKS(GP,pks,pkk,wb),并作為挑戰(zhàn)密文發(fā)送給A。
4)Queryphase2:敵手A繼續(xù)對關(guān)鍵詞w∈SKw進行陷門詢問,但不能詢問w0和w1。
5)Guess:A輸出猜測b′,若b′=b,則A勝利,否則A失敗。
A以以下優(yōu)勢攻破Gamel:
Game2 假設(shè)A為外部攻擊者(可為接收者),模擬攻擊游戲如下:
1)setup:運行算法GlobalSetup(λ),生成系統(tǒng)的公共參數(shù)GP,運行以下算法KeyGenKGC(GP)、KeyGenserver(GP),生成密鑰注冊中心和服務(wù)器的公私鑰對(pkK,skK)、(pks,sks),以及接收者的搜索密鑰skR。B將pks、pkK發(fā)送給A。
3)Challenge:A向B發(fā)送挑戰(zhàn)關(guān)鍵詞對(w0,w1),B隨機選取b∈(0,1),計算挑戰(zhàn)密文C*=SCF-PEKS(GP,pks,pkK,wb)返回給A。
4)Guess:A輸出猜測b′,若b′=b,則A勝利,否則A失敗。
A以以下優(yōu)勢攻破Game2:
基于經(jīng)典SCF-PEKS方案,構(gòu)造允許用戶注冊的可搜索公鑰加密方案,具體步驟如下:
1)GlobalSetup(λ):λ為安全參數(shù),(N,G,GT,e)為雙線性映射的參數(shù),N=p1p2p3為G和GT的階,且g為G的生成元。e是G×G→GT的雙線性映射。選取一個抗碰撞的哈希函數(shù)H:{0,1}*→ZN。設(shè)關(guān)鍵詞空間為KSw={0,1}*,可得全局參數(shù)為GP={N,G,GT,e,H,KSw}。
方案的正確性證明:
在進行安全性分析以前不失一般性地,給出以下2個假定條件:
1)敵手的詢問w1,w2,…,wq是不同的,給定R3可以完美隨機化陷門Tw。
2)密鑰注冊中心是安全且忠誠的,敵手不能是密鑰注冊中心。
引理1如果判定性子群假設(shè)是困難的,那么本文方案在內(nèi)部敵手的游戲Game1中是語義安全的。
證明:假設(shè)在Game1中存在多項式時間敵手A,A至多可進行q次詢問,B為游戲模擬者,游戲Game1過程如下:
2)Queryphase1:A自適應(yīng)地向B詢問關(guān)鍵詞w∈SKw的陷門。B計算Tw=Trapdoor(GP,skK,w),并返回給A。
4)Queryphase2:A繼續(xù)進行n2次關(guān)鍵詞詢問,不能詢問w0和w1,其中要求n1+n2 5)Guess:A輸出猜測b′,如果b′=b,則A獲得勝利,否則A失敗。 引理2如果判定性子群假設(shè)是困難的,那么本文方案在外部敵手的游戲Game2中是語義安全的。 證明:假設(shè)存在多項式時間敵手A可以攻擊本文的方案,A至多可進行q次詢問,B為模擬者,游戲Game2過程如下: 4)Guess:A輸出猜測b′,如果b′=b,則返回1,A挑戰(zhàn)成功,否則返回0,挑戰(zhàn)失敗。 如表1所示,本文方案與一些經(jīng)典的SCF-PEKS方案在安全性和效率方面進行比較,其中|G|、|GT|、|ZN|分別表示G、GT、ZN中元素的長度,S-M表示標(biāo)準(zhǔn)模型。 表1 方案對比分析數(shù)據(jù)表 從表1的對比結(jié)果可以看出,本方案在標(biāo)準(zhǔn)模型下滿足靜態(tài)困難假設(shè),并且實現(xiàn)了為多用戶數(shù)據(jù)服務(wù)的功能,且陷門長度及密文長度比較適中。系統(tǒng)運行過程中,云服務(wù)器上的加密數(shù)據(jù)和加密關(guān)鍵詞僅需要一次性上傳即可,用戶進行數(shù)據(jù)搜索服務(wù)時僅生成一次相關(guān)陷門,但服務(wù)器需要對云上所有加密數(shù)據(jù)的關(guān)鍵詞密文進行驗證。因此,驗證步驟的運行次數(shù)與云服務(wù)器的關(guān)鍵詞密文個數(shù)成正比,運行次數(shù)遠遠大于關(guān)鍵詞加密和陷門生成。 圖2給出了在Inter(R) Core(TM)2 Duo T6670 CPU 2.2 GHz、2 GB RAM的計算機下,本文方案與文獻[24]的方案所需的平均時間對比,過程用JPBC庫在eclipse上實現(xiàn)。 圖2 算法的平均運行時間對比 在圖2中通過將本文方案與文獻[24]方案的平均運行時間比較可以看出,最頻繁使用的檢測步驟的運行時間有所減少,增加了整體服務(wù)效率。 在分析經(jīng)典SCF-PEKS方案的基礎(chǔ)上,根據(jù)其存在局限單一用戶使用的缺陷,提出了一個可注冊用戶使用的高效的SCF-PEKS方案,基于判定性子群假設(shè),該方案滿足IND-SCF-CKA安全。相較于傳統(tǒng)的SCF-PEKS方案,本文方案的效率有所提高。下一步計劃在此方案的基礎(chǔ)上構(gòu)造多關(guān)鍵詞方案,讓其使用場景更廣泛。4 性能對比
5 結(jié)束語