郭麗峰,李智豪
(山西大學 計算機與信息技術學院,山西 太原 030006)
隨著信息和網(wǎng)絡的發(fā)展,由于云計算提供給用戶便利的數(shù)據(jù)存儲和高效的處理服務,越來越多的個人和企業(yè)趨向?qū)?shù)據(jù)上傳到云服務器,由其來處理數(shù)據(jù)。但是云服務器并不完全可信。在通信過程中,惡意的云服務器可能非法竊取用戶的隱私,導致信息泄露。所以數(shù)據(jù)擁有者需要將數(shù)據(jù)加密后再上傳到云平臺,以密文的形式保障數(shù)據(jù)的安全性,但同時也加大了數(shù)據(jù)搜索的難度。
Boneh等[1]在2004年第一次提出了帶關鍵字搜索的公鑰加密方案(public key encryption with keyword search,PEKS),它的思想主要是發(fā)送者首先加密數(shù)據(jù)和關鍵字,并上傳至云服務器。此后接收者發(fā)送一個由關鍵字生成的陷門給云服務器,最后云服務器執(zhí)行關鍵字密文和陷門的匹配算法,成功后再將密文數(shù)據(jù)發(fā)送給接收方,此過程云服務器不能獲得關鍵字和密文數(shù)據(jù)的任何信息。但是在該過程中需要建立接收者和服務器之間的安全信道。Baek等[2]人提出了無安全信道的可搜索加密方案(secure-channel free PEKS,SCF-PEKS),其方法是通過引入服務器的公私鑰對來消除安全信道,只有指定的服務器才能夠?qū)﹃P鍵字密文與陷門進行匹配。此后Rhee等[3-5]提高了Baek的安全模型,并提出了一系列指定檢驗者的關鍵字搜索方案(designated test PEKS,dPEKS)。此前的方案都是在隨機諭言模型下證明安全的。Fang等[6]基于Gentry[7]的基于身份加密方案構造了標準模型下的帶關鍵字搜索方案。
2006年,Byun等[8]第一次提出離線的關鍵字猜測攻擊(KGA)的概念,并對Boneh的方案進行了攻擊,他的攻擊依據(jù)是關鍵字個數(shù)相對比較有限(約有225 000個),可以使用窮舉搜索的方法來進行攻擊。Rhee等[5]提出了陷門不可區(qū)分性,證明陷門不區(qū)分性是抵抗關鍵字猜測攻擊的充分條件,并提出了一個具體的方案。Fang等[9]在非對稱雙線性映射下構造出一個可抵抗外部敵手進行關鍵字猜測攻擊的方案,并在標準模型下證明安全性。
2015年,Shao等[10]在Fang等[9]的方案中引入了發(fā)送者的身份,并通過RSA算法對身份進行簽名,其不允許非法生成的密文進行匹配測試,之后,接收者通過認證機構認證身份信息。此方案抵抗了內(nèi)部的關鍵字猜測攻擊,但該方案依賴與簽名技術和認證機構。2017年,Huang等[11]、Lu等[12]、Sun等[13]引入了發(fā)送者的公私鑰,惡意的服務器和外部的攻擊者因無法掌握發(fā)送者的私鑰而不能生成合法的關鍵字密文,但是它們的方案有個共同的問題,增加了發(fā)送者的計算負擔。
定義1雙線性映射
設p是一素數(shù),G1和G2是兩個階為p的循環(huán)群,g是G1上的一個生成元,雙線性映射e:G1×G1→G2,若e滿足如下的性質(zhì):
(1) 雙線性:對于?a,b∈Zp,有e(ga,gb)=e(g,g)ab成立;
(2) 非退化性:?h∈G1,使得e(h,h)≠1G2,其中1G2是G2中的單位元;
(3) 可計算性:對于?g,h∈G1,存在一個有效的算法計算e(g,h)。
定義2判定Bilinear Diffie-Hellman Inversion(BDHI)問題
給定一個三元組(g,gx,Z),其中隨機選取x∈Zp,g是G1中的一個生成元,要求判斷Z=e(g,g)1/x是否成立。
定義3判定Bilinear Diffie-Hellman(DBDH)問題
給定一個五元組(g,gx,gy,gz,Z),其中隨機選取x,y,z∈Zp,g是G1中的一個生成元,要求判斷Z=e(g,g)xyz是否成立。
定義4判定Division Diffie-Hellman(DDH)問題
給定一個四元組(g,gx,gy,Z),其中隨機選取x,y∈Zp,g是G1中的一個生成元,要求判斷Z=gx/y是否成立。
(1)Setup(1k)→{GP}:輸入安全參數(shù)k,產(chǎn)生全局參數(shù)GP。
(2)KeyGenS(GP)→{pkS,skS}:輸入全局參數(shù)GP,產(chǎn)生服務器的公私鑰pkS,skS。
(3)KeyGenR(GP)→{pkR,skR}:輸入全局參數(shù)GP,產(chǎn)生接收者的公私鑰pkR,skR。
(4)PEKS(GP,pkS,pkR,w)→CT:發(fā)送者對關鍵字w進行加密產(chǎn)生密文CT,并發(fā)送給云服務器。
(5)Trapdoor(GP,w,skR,pkS)→Tw:接受者對關鍵字w進行加密產(chǎn)生陷門Tw,并發(fā)送給云服務器。
(6)Test(GP,CT,Tw,pkR,sks)→yes,no:云服務器進行匹配算法,判斷密文CT和陷門Tw是否包含相同的關鍵字。
當敵手是一個惡意的云服務器時,它可以執(zhí)行匹配算法。想要抵抗內(nèi)部的關鍵字猜測攻擊需要滿足兩個條件,一是陷門本身不能泄露關鍵字的信息,二是服務器自己不能產(chǎn)生合法的密文。Shao等[10]在Fang等[9]的方案的基礎上進行了改進,通過對發(fā)送者的身份進行數(shù)字簽名達到服務器不能產(chǎn)生合法密文的目的。但是Lu等[12]指出Fang等[9]的方案陷門本身會泄露關鍵字的信息,即當敵手是惡意的云服務器時,Fang等[9]的方案不滿足陷門不可區(qū)分性。在Huang等[11]的方案中,在產(chǎn)生關鍵字密文時引入了發(fā)送者的私鑰,進行授權加密,但是在其方案中,陷門是固定的,不具有隨機性。且發(fā)送者也可以計算出該陷門,他們的方案雖然可以抵抗服務器進行關鍵字猜測攻擊,但是引入了一個新的敵手——發(fā)送者。
為了抵抗服務器進行關鍵字猜測攻擊,大部分的方案都增加了發(fā)送者的計算量,我們引入了一個身份管理服務器對發(fā)送者的身份和關鍵字進行重加密來減輕發(fā)送者的計算量,另外,在接收者計算陷門時,包含了身份管理服務器的公鑰來保障了陷門不可區(qū)分性。
基于身份的關鍵字搜索方案有四個實體,如圖1,分別是數(shù)據(jù)發(fā)送者(DS),身份管理服務器(MS),云存儲服務器(CS),數(shù)據(jù)接收者(DR)。
DS首先對明文數(shù)據(jù)和關鍵字w進行加密。隨后把加密的明文數(shù)據(jù)發(fā)送給CS,把預加密的關鍵字
發(fā)送給MS。
MS首先對發(fā)送者進行身份認證,若發(fā)送者身份是合法的。則對關鍵字和發(fā)送者身份id進行重加密,并將結果發(fā)送給CS。
DR對關鍵字和發(fā)送者的身份id進行加密生成陷門,并發(fā)送給CS。
CS進行匹配算法,若成功則把關鍵字對應的密文發(fā)送給DR。
在此過程中,MS,CS都不會得到關于關鍵字的任何信息。
在我們設計的基于身份的關鍵字搜索方案中,只關注關鍵字加密的部分,具體方案如下:
(1)Setup(1k)→{GP}:參數(shù)生成算法進行如下設置:選擇兩個階為p的兩個循環(huán)群G1和GT,雙線性映射e:G1×G1→GT,g是G1中的一個生成元,選擇抗碰撞的哈希函數(shù)H1:{0,1}*→G1,H2:{0,1}*→G1,H3:G2→{0,1}λ。輸出全局參數(shù)GP={G1,GT,p,g,H1,H2,H3}。
圖1 系統(tǒng)模型Fig.1 System model
H3[e(H1(w),gt)e(H1(id)yβ,gα)]=
H3[ct2e(H2(id)skMβ,pkS)]=C4。
我們的安全目標是要求身份管理服務器,云存儲服務器,外部的攻擊者都不能獲得關于關鍵字的任何信息,包括進行選擇關鍵字攻擊(IND-CKA)和關鍵字猜測攻擊(IND-KGA)。
引理1 假設1-BDHI問題是困難的,當敵手是一個惡意云服務器,我們的方案是抵抗選擇關鍵字攻擊(IND-CKA)安全的。
證明假設敵手A1是云存儲服務器時,它最多進行qT次陷門詢問,且有ε的優(yōu)勢去攻擊方案,則我們可以構造一個算法B有忽略的優(yōu)勢ε/eqT去解決1-BDHI問題。
(1)敵手A1首先宣布一個想要挑戰(zhàn)的身份id*。
作為陷門進行回復。
(7)猜測。敵手A1輸出它的猜測δ′∈{0,1},如果δ′=δ,輸出1,即Z=e(g,g)1/x。否則輸出0。
則
Pr[δ′=δ]=Pr[δ′=δ∧abt]+
Pr[δ′=δ∧abt]=
Pr[δ′=δ|abt]Pr[abt]+
Pr[δ′=δ|abt]Pr[abt]=
引理2 假設DBDH問題是困難的,當敵手是一個外部攻擊者(包括一個惡意的接收者),則我們的方案是抵抗選擇關鍵字攻擊(IND-CKA)安全的。
證明假設敵手A2是一個,它有ε的優(yōu)勢去攻擊方案。我們可以構造一個算法B也有ε的優(yōu)勢去解決DBDH問題。
(1)敵手A2首先宣布一個想要挑戰(zhàn)的身份id*。
(4)密文詢問1。敵手A2對任意的關鍵字和任意身份(wi,idj)進行密文詢問。算法B運行加密算法產(chǎn)生密文CT并發(fā)送給敵手A2。
(7)猜測。敵手A2輸出它的猜測δ′∈{0,1},如果δ′=δ,輸出1,即Z=e(g,g)abc。否則輸出0。
引理3 假設DDH問題是困難的,當敵手是一個惡意的云存儲服務器時,則我們的方案是抵抗關鍵字猜測攻擊(IND-KGA)安全的。
證明假設敵手A3是一個,它最多進行qT次陷門詢問,且有ε的優(yōu)勢去攻擊方案。我們可以構造一個算法B有ε/eqT的優(yōu)勢去解決DDH問題。
(1)敵手A3首先宣布一個想要挑戰(zhàn)的身份id*。
(7)猜測。敵手A3輸出它的猜測δ′∈{0,1},如果δ′=δ,輸出1,即Z=gab。否則輸出0。
概率分析 和定理1的情況類似,我們可得算法B也有ε/eqT的優(yōu)勢去解決DDH問題。
引理4 假設1-BDHI問題是困難的,當敵手是一個惡意的身份管理服務器,則我們的方案是抵抗選擇關鍵字攻擊(IND-CKA)安全的。
本文實現(xiàn)了可抵抗內(nèi)部關鍵字猜測攻擊的關鍵字搜索方案。我們和引入發(fā)送者公私鑰的方案[12]進行比較,如表1所示。其中P表示指數(shù)運算,E表示雙線性對運算,H代表Hash運算,n是關鍵字w的二進制展開位數(shù)。在表一中,預加密關鍵字過程是發(fā)送者執(zhí)行的,在我們的方案中,發(fā)送者只需要計算2個指數(shù)運算,1個雙線性對運算和1個Hash運算,對比文獻[12],效率得到很大的提高。
表1 方案性能對比
本文對原有的帶關鍵字搜索的公鑰加密方案進行改進,引入發(fā)送者的身份和一個身份管理服務器,身份管理服務器對所有發(fā)送者的身份進行授權,一個抵抗惡意的云存儲服務器因其不能產(chǎn)生合法的密文從而不能進行關鍵字猜測攻擊和選擇關鍵字攻擊。此外,我們還給出了完整的安全性證明,下一步的工作是把方案部署到云平臺上,使其應用到醫(yī)療和金融等領域。