牛淑芬,楊平平,謝亞亞,王彩芬,杜小妮
(西北師范大學(xué) a.計(jì)算機(jī)科學(xué)與工程學(xué)院; b.數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,蘭州 730070)
近年來(lái),隨著云計(jì)算技術(shù)[1]的迅速發(fā)展,基于網(wǎng)上在線存儲(chǔ)的云存儲(chǔ)服務(wù)得到廣泛關(guān)注。將本地?cái)?shù)據(jù)遷移到云端服務(wù)器可以節(jié)省本地?cái)?shù)據(jù)管理開銷、降低系統(tǒng)開發(fā)及維護(hù)成本[2],但同時(shí)也產(chǎn)生了數(shù)據(jù)泄露、個(gè)人隱私信息無(wú)法得到有效保護(hù)等安全問(wèn)題。此外,為了確保數(shù)據(jù)的機(jī)密性,數(shù)據(jù)擁有者在上傳數(shù)據(jù)至云端服務(wù)器前會(huì)對(duì)其進(jìn)行加密,導(dǎo)致數(shù)據(jù)使用者難以在加密文件中快速查找信息。
為解決上述問(wèn)題,研究人員提出可搜索加密 (Searchable Encryption,SE)技術(shù)[3-5]??伤阉骷用荏w制分為對(duì)稱可搜索加密體制和公鑰可搜索加密體制[3]。文獻(xiàn)[4]提出對(duì)稱可搜索加密方案,隨后文獻(xiàn)[6]提出公鑰關(guān)鍵字搜索加密(Public Key Encryption with Keyword Search,PEKS)概念,并結(jié)合公鑰加密技術(shù)設(shè)計(jì)出基于雙線性對(duì)的構(gòu)造方案。該方案以郵件路由為應(yīng)用場(chǎng)景以便郵件服務(wù)器對(duì)郵件進(jìn)行分發(fā),數(shù)據(jù)發(fā)送者從待發(fā)送的電子郵件中通過(guò)檢索關(guān)鍵字與使用數(shù)據(jù)接收者公鑰對(duì)關(guān)鍵字和電子郵件進(jìn)行加密,數(shù)據(jù)接收者生成陷門并向郵件存儲(chǔ)服務(wù)器發(fā)送相應(yīng)陷門,郵件存儲(chǔ)服務(wù)器搜索與其匹配的關(guān)鍵字密文,并將包含關(guān)鍵字的郵件密文返回給數(shù)據(jù)接收者[3]。
在加密的電子郵件系統(tǒng)中,帶關(guān)鍵字搜索的公鑰加密方案是在不解密情況下搜索加密郵件的有效手段,但是其存在安全問(wèn)題。文獻(xiàn)[7]指出PEKS方案和結(jié)合域關(guān)鍵字搜索的公鑰加密(Public Key Encryption with Conjunctive Field Keyword Search,PECKS)方案[8]中存在離線關(guān)鍵字猜測(cè)攻擊(Keyword Guessing Attack,KGA)風(fēng)險(xiǎn)。惡意敵手能在離線狀態(tài)下采用窮舉法搜索候選關(guān)鍵字[9],并分別對(duì)其進(jìn)行驗(yàn)證。研究人員通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),該攻擊具有可行性。如果郵件服務(wù)器變得惡意,其可以通過(guò)離線啟動(dòng)KGA從用戶郵件中恢復(fù)信息[10]。文獻(xiàn)[11]研究了基于身份的關(guān)鍵字搜索加密(Identity Based Encryption with Keyword Search,IBEKS)方案,并對(duì)IBEKS方案進(jìn)行定義。該文獻(xiàn)指出,數(shù)據(jù)發(fā)送者使用基于身份的加密 (Identity-Based Encryption,IBE)方法對(duì)電子郵件進(jìn)行加密,并使用IBEKS方案加密關(guān)鍵字,然后將加密的電子郵件和關(guān)鍵字上傳到郵件存儲(chǔ)服務(wù)器[12-13],數(shù)據(jù)接收者為檢索包含某個(gè)關(guān)鍵字的電子郵件,委托郵件服務(wù)器提供陷門搜索加密的關(guān)鍵字,郵件服務(wù)器將與加密關(guān)鍵字關(guān)聯(lián)的電子郵件返回給數(shù)據(jù)接收者作為搜索結(jié)果。但是由于IBEKS方案無(wú)法抵抗內(nèi)部離線關(guān)鍵字猜測(cè)攻擊[14],同時(shí)還隱藏了外部敵手搜索模式,因此文獻(xiàn)[15]提出一種指定服務(wù)器的基于身份關(guān)鍵字搜索加密(designated Server Identity-Based Encryption with Keyword Search,dIBEKS)方案,然而文獻(xiàn)[16]指出該方案不能滿足關(guān)鍵字密文的不可區(qū)分性。
為提高dIBEKS方案的安全性,本文提出一種指定郵件服務(wù)器的基于身份認(rèn)證關(guān)鍵字搜索加密(designated Server Identity-Based Authenticated Encryption with Keyword Search,dIBAEKS)方案。在未知數(shù)據(jù)發(fā)送者私鑰的情況下,攻擊者難以偽造數(shù)據(jù)發(fā)送者加密的關(guān)鍵字,從而無(wú)法進(jìn)行離線關(guān)鍵字猜測(cè)攻擊,對(duì)該方案適應(yīng)性選擇消息攻擊的關(guān)鍵字密文不可區(qū)分性、陷門不可區(qū)分性和離線猜測(cè)攻擊的安全性進(jìn)行驗(yàn)證。
令(G1,+)和(G2,×)為2個(gè)階均為大素?cái)?shù)q的循環(huán)群,p是群G1的生成元。
定義1(雙線性對(duì)[17]) 循環(huán)群上線性映射e:G1×G1→G2具有以下性質(zhì):
2)非退化性。存在P,Q∈G1,滿足e(P,Q)≠1。
3)可計(jì)算性。對(duì)于任意P,Q∈G1,存在1個(gè)有效算法計(jì)算e(P,Q)。
本文方案采用雙線性Diffie-Hellman計(jì)算(Computational Bilinear Diffie-Hellman,CBDH)假設(shè)[18]。
AdvCBDH(R)=Pr[R(P,aP,bP)=e(P,P)ab]
(1)
其中,e(P,P)ab的概率優(yōu)勢(shì)可以忽略。
圖1為dIBAEKS方案的電子郵件系統(tǒng)模型。該模型主要包括數(shù)據(jù)發(fā)送者A、數(shù)據(jù)接收者B、指定郵件服務(wù)器S[19]以及可信任的密鑰生成中心(Private Key Generator,PKG)4個(gè)實(shí)體。其中:數(shù)據(jù)發(fā)送者A對(duì)數(shù)據(jù)文件進(jìn)行加密,使用其私鑰skA為加密的數(shù)據(jù)文件生成關(guān)鍵字索引Cw,并將數(shù)據(jù)密文與關(guān)鍵字索引Cw共同上傳到指定郵件服務(wù)器S;數(shù)據(jù)接收者B用其私鑰skB生成陷門Tw,并將陷門Tw發(fā)送給指定郵件服務(wù)器S進(jìn)行搜索服務(wù)請(qǐng)求;指定郵件服務(wù)器S為加密的電子郵件提供存儲(chǔ)服務(wù)并利用其私鑰sks完成數(shù)據(jù)接收者B的搜索請(qǐng)求;可信任的密鑰生成中心PKG主要負(fù)責(zé)生成主密鑰s和系統(tǒng)公共參數(shù)Params,并根據(jù)用戶身份信息生成用戶密鑰。
圖1 dIBAEKS方案的電子郵件系統(tǒng)模型Fig.1 Email system model of dIBAEKS scheme
dIBAEKS方案由以下5個(gè)概率多項(xiàng)式時(shí)間算法組成:
1)系統(tǒng)建立算法Setup(λ):給定1個(gè)安全參數(shù)λ,產(chǎn)生PKG的主密鑰s和系統(tǒng)公共參數(shù)Params。
2)密鑰生成算法KeyGen(Params,s,IDA,IDB,IDS):輸入系統(tǒng)公共參數(shù)Params、主密鑰s和身份信息(IDA、IDB、IDS),PKG生成各身份對(duì)應(yīng)的密鑰(pkA,skA)、(pkB,skB)和(pkS,skS)。
3)關(guān)鍵字加密算法dIBAEKS(Params,w,skA,IDB,IDS):對(duì)于關(guān)鍵字w,數(shù)據(jù)發(fā)送者結(jié)合數(shù)據(jù)接收者的身份信息IDB和指定郵件服務(wù)器的身份信息IDS,計(jì)算生成密文Cw。
4)陷門生成函數(shù)dTrapdoor(Params,w′,IDA,IDS,skB):對(duì)于給定搜索的關(guān)鍵字w′,數(shù)據(jù)接收者使用自身私鑰skB、數(shù)據(jù)發(fā)送者身份信息IDA以及指定郵件存儲(chǔ)服務(wù)器身份信息IDS,生成相對(duì)應(yīng)的搜索陷門Tw′,然后數(shù)據(jù)接收者將Tw′發(fā)送給指定郵件服務(wù)器進(jìn)行搜索請(qǐng)求。
5)驗(yàn)證算法dTest(Params,skS,Cw,Tw′):指定郵件服務(wù)器利用自身私鑰skS,與接收的Cw和Tw′進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò),則輸出“True”并返回給數(shù)據(jù)接收者Cw所對(duì)應(yīng)的加密郵件;否則,輸出“False”。
dIBAEKS方案的安全性由關(guān)鍵字密文不可區(qū)分性、陷門不可區(qū)分性以及抗離線關(guān)鍵字猜測(cè)攻擊構(gòu)成。
2.2.1 關(guān)鍵字密文不可區(qū)分性
以敵手A1和挑戰(zhàn)者F的交互游戲1來(lái)定義dIBAEKS方案的關(guān)鍵字密文不可區(qū)分性。假設(shè)敵手A1是外部攻擊者。
1)系統(tǒng)初始化。挑戰(zhàn)者F執(zhí)行Setup算法產(chǎn)生系統(tǒng)參數(shù)并發(fā)送給敵手A1。
2)詢問(wèn)1。外部攻擊者A1向挑戰(zhàn)者F進(jìn)行以下詢問(wèn):
(1)密鑰詢問(wèn)。當(dāng)敵手A1向挑戰(zhàn)者F進(jìn)行密鑰詢問(wèn)時(shí),挑戰(zhàn)者F調(diào)用KeyGen算法并返回?cái)?shù)據(jù)接收者私鑰skB和指定郵件服務(wù)器私鑰skS給敵手A1。
(2)陷門詢問(wèn)。敵手A1將數(shù)據(jù)發(fā)送者身份信息IDA、數(shù)據(jù)接收者身份信息IDB和關(guān)鍵字w發(fā)送給挑戰(zhàn)者F,挑戰(zhàn)者F調(diào)用dTrapdoor算法返回給敵手A1搜索陷門Tw。
4)詢問(wèn)2。敵手A1向挑戰(zhàn)者F進(jìn)行密鑰詢問(wèn),除不能對(duì)指定郵件服務(wù)器身份信息IDS進(jìn)行公鑰詢問(wèn)和測(cè)試詢問(wèn)以外,其他與詢問(wèn)階段1一致。
5)猜測(cè)。敵手A1輸出猜測(cè)值b′∈{0,1},如果b′=b,則挑戰(zhàn)成功,敵手A1贏得游戲1的勝利。
定義游戲 1中敵手A1贏得游戲的優(yōu)勢(shì)AdvA1(λ)=
2.2.2 陷門不可區(qū)分性
以敵手A2和挑戰(zhàn)者F的交互游戲2來(lái)定義dIBAEKS方案的陷門不可區(qū)分性。假設(shè)敵手A2是外部攻擊者。
1)系統(tǒng)初始化。挑戰(zhàn)者F執(zhí)行Setup算法產(chǎn)生系統(tǒng)參數(shù)并發(fā)送給敵手A2。
2)詢問(wèn)1。外部攻擊者A2向挑戰(zhàn)者F進(jìn)行以下詢問(wèn):
(1)密鑰詢問(wèn)。當(dāng)敵手A2向挑戰(zhàn)者F進(jìn)行密鑰詢問(wèn)時(shí),挑戰(zhàn)者F調(diào)用KeyGen算法并返回?cái)?shù)據(jù)接收者的私鑰skB和指定郵件存儲(chǔ)服務(wù)器私鑰skS給敵手A2。
(2)陷門詢問(wèn)。敵手A2將數(shù)據(jù)發(fā)送者身份信息IDA、數(shù)據(jù)接收者身份信息IDB和關(guān)鍵字w發(fā)送給挑戰(zhàn)者F,并對(duì)其進(jìn)行陷門詢問(wèn)。挑戰(zhàn)者F調(diào)用dTrapdoor算法返回給敵手A2搜索陷門Tw。
4)詢問(wèn)2。敵手A2向挑戰(zhàn)者F進(jìn)行密鑰詢問(wèn),除不能對(duì)指定郵件服務(wù)器身份信息IDS、接收者的身份信息IDB進(jìn)行公鑰詢問(wèn)和測(cè)試詢問(wèn)以外,其他與詢問(wèn)階段1一致。
5)猜測(cè)。敵手A2輸出猜測(cè)值b′∈{0,1},如果b′=b,則挑戰(zhàn)成功,敵手A2贏得游戲2的勝利。
定義游戲2中敵手A2,贏得游戲的優(yōu)勢(shì)AdvA2(λ)=
2.2.3 離線猜測(cè)關(guān)鍵字攻擊
由于本文提出的dIBAEKS方案在滿足適應(yīng)性選擇消息下的陷門不可區(qū)分性時(shí),可抵御離線關(guān)鍵字猜測(cè)攻擊[15],因此dIBAEKS方案能夠抵御離線關(guān)鍵字猜測(cè)攻擊。
dIBAEKS方案具體算法如下:
2)KeyGen算法。以主密鑰s和指定郵件服務(wù)器S的身份信息IDs∈{0,1}*為輸入,PKG生成指定郵件服務(wù)器S的私鑰skS=sH1(IDS),其中H1(IDS)為指定郵件服務(wù)器S的公鑰。類似地,PKG根據(jù)數(shù)據(jù)發(fā)送者A身份信息IDA∈{0,1}*和數(shù)據(jù)接收者B身份信息IDB∈{0,1}*,生成數(shù)據(jù)發(fā)送者A的私鑰skA=sH1(IDA)和數(shù)據(jù)接收者B的私鑰skB=sH1(IDB),其中,H1(IDA)和H1(IDB)分別為數(shù)據(jù)發(fā)送者A和數(shù)據(jù)接收者B的公鑰。
5)dTest算法。指定郵件服務(wù)器S利用自身私鑰skS,與接收的C1、C2、T1、T2、T3進(jìn)行驗(yàn)證,判斷C2·T3是否與e(C1+T1+T2,skS)相等。若兩者相等則輸出“True”,并將Cw所對(duì)應(yīng)的加密郵件發(fā)送給數(shù)據(jù)接收者B,否則輸出“False”。
本文方案的正確性證明如下:
C2T3=e(rH1(IDS),q1·Ppub)e((t+q2)Ppub,H1(IDS))=
e(rH1(IDS),q1·sp)e((t+q2)sp,H1(IDS))=
e(rpq1,sH1(IDS))e((t+q2)p,sH1(IDS))=
e(rpq1+(t+q2)p,sH1(IDS))=
e(rpq1+tp+q2p,sH1(IDS))=
e(C1+T1+T2,skS)
(2)
由于C2T3=e(C1+T1+T2,skS)等式成立,符合關(guān)鍵字w′等于w以及對(duì)數(shù)據(jù)接收者身份的驗(yàn)證,因此證明了本文提出方案的正確性。
本節(jié)證明dIBAEKS方案能滿足在隨機(jī)預(yù)言模型適應(yīng)性選擇消息攻擊下的關(guān)鍵字密文不可區(qū)分性和陷門不可區(qū)分性,進(jìn)而證明該方案可抵御離線關(guān)鍵字猜測(cè)攻擊[11,16]。
4.2.1 關(guān)鍵字密文不可區(qū)分性的具體證明
定理1在計(jì)算雙線性Diffie-Hellman是困難問(wèn)題的情況下,對(duì)于游戲1的攻擊者,dIBAEKS方案在隨機(jī)預(yù)言模型下滿足適應(yīng)性選擇關(guān)鍵字密文攻擊時(shí)的不可區(qū)分性安全。
1)系統(tǒng)初始化。挑戰(zhàn)者F通過(guò)運(yùn)行Setup算法產(chǎn)生系統(tǒng)參數(shù)Params={G1,G2,e,q,p,Ppub,H1,H2}并發(fā)送給敵手A1,設(shè)Ppub=ap。
2)詢問(wèn)1。敵手A1向挑戰(zhàn)者F進(jìn)行以下詢問(wèn):
5)猜測(cè)。敵手A1輸出猜測(cè)值μ′∈{0,1},如果μ′=μ,則挑戰(zhàn)成功,敵手A1贏得游戲1 的勝利。
4.2.2 陷門不可區(qū)分性的具體證明
定理2在計(jì)算雙線性Diffie-Hellman是困難問(wèn)題的情況下,對(duì)于游戲2的攻擊者,dIBAEKS方案在隨機(jī)預(yù)言模型下滿足適應(yīng)性選擇消息攻擊時(shí)的陷門不可區(qū)分性。
1)系統(tǒng)初始化。挑戰(zhàn)者F通過(guò)運(yùn)行Setup算法產(chǎn)生系統(tǒng)參數(shù)Params={G1,G2,e,q,p,Ppub,H1,H2}并發(fā)送給敵手A2,設(shè)Ppub=ap。
2)詢問(wèn)1。敵手A2向挑戰(zhàn)者F進(jìn)行以下詢問(wèn):
(2)H2詢問(wèn)。具體過(guò)程與定理1一致。
(4)陷門詢問(wèn)。具體過(guò)程與定理1一致。
5)猜測(cè)。敵手A2輸出猜測(cè)值μ′∈{0,1},如果μ′=μ,則挑戰(zhàn)成功,敵手A2贏得游戲2 的勝利。
本節(jié)通過(guò)理論對(duì)比和數(shù)值實(shí)驗(yàn)對(duì)dIBAEKS方案進(jìn)行效率分析。
4.3.1 理論對(duì)比
將采用dIBAEKS方案與dIBEKS方案的關(guān)鍵字加密算法、陷門生成算法以及驗(yàn)證算法的計(jì)算效率進(jìn)行對(duì)比,并以點(diǎn)乘運(yùn)算(PM)、雙線性運(yùn)算(PB)和哈希運(yùn)算(PH)的數(shù)量作為評(píng)估指標(biāo),結(jié)果如表1所示??梢钥闯?在關(guān)鍵字加密算法中,dIBAEKS方案比dIBEKS方案少1個(gè)點(diǎn)乘運(yùn)算和2個(gè)哈希運(yùn)算;在陷門生成算法中,dIBAEKS方案比dIBEKS方案多1個(gè)雙線性運(yùn)算和1個(gè)哈希運(yùn)算;在驗(yàn)證算法中,dIBAEKS方案比dIBEKS方案少3個(gè)雙線性運(yùn)算和2個(gè)哈希運(yùn)算。由上述可知,在關(guān)鍵字加密算法和驗(yàn)證算法中,dIBAEKS方案的計(jì)算效率均優(yōu)于dIBEKS方案,因此從總體來(lái)看,dIBAEKS方案的計(jì)算效率更高。
表1 不同算法下2種方案的計(jì)算效率對(duì)比Table 1 Comparison of calculation efficiency of two schemes under different algorithms
4.3.2 數(shù)值實(shí)驗(yàn)分析
本文采用數(shù)值實(shí)驗(yàn)對(duì)dIBAEKS方案與dIBEKS方案在關(guān)鍵字加密和驗(yàn)證階段的計(jì)算效率進(jìn)行對(duì)比分析。實(shí)驗(yàn)環(huán)境如下:ASUS A455L型計(jì)算機(jī),Inter?CoreTMi5-4210U處理器,4 GB內(nèi)存,Win10操作系統(tǒng),Linux虛擬機(jī)。使用C語(yǔ)言基于配對(duì)的密碼學(xué)(Pairing-Based Cryptography,PBC)庫(kù)[20],群G1、G2的長(zhǎng)度為1 024 bit,利用A型橢圓曲線y2=x3+xmodq進(jìn)行計(jì)算,且用戶身份和關(guān)鍵字隨機(jī)產(chǎn)生,實(shí)驗(yàn)參數(shù)設(shè)置如表2所示。
表2 數(shù)值實(shí)驗(yàn)參數(shù)設(shè)置Table 2 Parameter setting of numerical experiment
關(guān)鍵字?jǐn)?shù)量決定dIBAEKS方案的執(zhí)行時(shí)間。在數(shù)值實(shí)驗(yàn)中,關(guān)鍵字?jǐn)?shù)量分別取100、200、300、400、500、600、700、800、900和1 000,取50次運(yùn)算結(jié)果的平均值作為最終實(shí)驗(yàn)結(jié)果。圖2和圖3分別為2種方案在關(guān)鍵字加密和驗(yàn)證階段的執(zhí)行時(shí)間隨關(guān)鍵字?jǐn)?shù)量的變化情況。由圖2和圖3可以看出,隨著當(dāng)關(guān)鍵字?jǐn)?shù)量的增加,dIBAEKS方案與dIBEKS方案的執(zhí)行時(shí)間均延長(zhǎng);在關(guān)鍵字加密階段,dIBAEKS方案的執(zhí)行時(shí)間增幅略低于dIBEKS方案,其計(jì)算效率略高;在驗(yàn)證階段,dIBAEKS方案和dIBEKS方案執(zhí)行時(shí)間的增幅分別為0.9%和1.3%,dIBAEKS方案的計(jì)算效率明顯高于dIBEKS方案。
圖2 2種方案在關(guān)鍵字加密階段執(zhí)行時(shí)間隨關(guān)鍵字?jǐn)?shù)量的變化Fig.2 The change of execution time with the number of keywords in the keyword encryption phase of two schemes
圖3 2種方案在驗(yàn)證階段執(zhí)行時(shí)間隨關(guān)鍵字?jǐn)?shù)量的變化Fig.3 The change of execution time with the number of keywords in the verification phase of two schemes
本文提出一種指定服務(wù)器的身份認(rèn)證郵件關(guān)鍵字加密方案,通過(guò)在指定服務(wù)器上進(jìn)行陷門搜索,并由指定數(shù)據(jù)發(fā)送者發(fā)出關(guān)鍵字密文,可避免離線關(guān)鍵字猜測(cè)攻擊。理論分析和數(shù)值實(shí)驗(yàn)結(jié)果表明,該方案具有較高的計(jì)算效率和安全性。下一步將在本文工作的基礎(chǔ)上,增加數(shù)據(jù)接收者對(duì)返回加密電子郵件的驗(yàn)證,以更準(zhǔn)確地分辨服務(wù)器返回結(jié)果的真實(shí)性。