魏 晶 秦璐璐
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院 江蘇 南京 211100)
近年來,云計(jì)算技術(shù)發(fā)展非常迅速,已經(jīng)成為信息技術(shù)領(lǐng)域內(nèi)討論的重要話題[1]。在日常生活中,云數(shù)據(jù)存儲(chǔ)和共享成為重要的應(yīng)用,且具有很大的優(yōu)勢(shì)。用戶可以將本地大量的數(shù)據(jù)存在云端,通過遠(yuǎn)程訪問受保護(hù)的數(shù)據(jù)實(shí)現(xiàn)以低成本的計(jì)算獲得高質(zhì)量的服務(wù)。云計(jì)算服務(wù)使得個(gè)人和企業(yè)可以高效、便捷、靈活地處理復(fù)雜的數(shù)據(jù),減少了管理和維護(hù)隱私數(shù)據(jù)的開銷。但是,云服務(wù)器不能保證用戶的隱私信息,因此需要對(duì)數(shù)據(jù)進(jìn)行加密。但是傳統(tǒng)的加密訪問模式是對(duì)明文加密,需要訪問數(shù)據(jù)時(shí),再將密文全部解密進(jìn)行檢索,導(dǎo)致了大量的計(jì)算和通信代價(jià)。
2000年,Song等[2]初次提出搜索加密方案,解決了對(duì)密文直接搜索的難題,實(shí)現(xiàn)了在對(duì)稱密碼體制下高效地搜索密文??伤阉骷用芸梢苑譃閷?duì)稱的可搜索加密技術(shù)和公鑰可搜索加密(即非對(duì)稱的可搜索加密)。對(duì)稱的可搜索加密的密文和陷門的生成的密鑰是相同的,因此效率較高。非對(duì)稱的可搜索加密技術(shù)中,生成密文和陷門所用的密鑰是一樣的,因此效率不高,但解決了密鑰分發(fā)的問題。2004年,Boneh等[3]提出帶有關(guān)鍵字搜索的公鑰加密的方案(Public Key Encryption with Keyword Search,PEKS)。在PEKS中,發(fā)送者利用接收者的公鑰和關(guān)鍵字生成數(shù)據(jù)密文和關(guān)鍵字密文信息,最后發(fā)送給云服務(wù)器;接收者在查詢包含某個(gè)特定的關(guān)鍵字相關(guān)的數(shù)據(jù)密文的時(shí)候,首先用本身擁有的私鑰和相關(guān)的關(guān)鍵字信息生成陷門后再發(fā)給服務(wù)器;服務(wù)器再將從接收者那收到的陷門和從發(fā)送者那得到的密文信息進(jìn)行測(cè)試,接著將匹配的相關(guān)密文信息返回給接收者;最后,接收者再通過解密操作獲得自己需要的數(shù)據(jù)信息。為了提高可搜索加密的功能性、豐富查詢表達(dá),文獻(xiàn)[6-7]提出了帶連接關(guān)鍵字的PEKS方案(Public Key Encryption with Conjunctive Field Keyword Search,即PECKS)。之后,PEKS的方案也得到了相關(guān)的延伸和擴(kuò)展,如模糊的關(guān)鍵字搜索[8-9]和帶認(rèn)證的PEKS[10]等,提高了數(shù)據(jù)庫的使用效率。
為了簡(jiǎn)化公鑰證書的管理,1984年Shamir[4]最先提出基于身份的密碼體制(Identity-Based Cryptography,IBC)的概念,將標(biāo)識(shí)用戶的唯一的身份看作公鑰,減少了公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)建立和維護(hù)的開銷?,F(xiàn)有的大多數(shù)基于PEKS的方案都涉及到證書的管理。為了解決傳統(tǒng)的密碼體制(Public Key Cryptography,PKC)中的證書操作與維護(hù)管理的問題,Abdalla等[5]首次提出帶關(guān)鍵字搜索的基于身份加密方案(Identity-Based Encryption with Keyword Search,IBEKS)。在IBEKS方案中,用戶的公鑰就是用來唯一標(biāo)識(shí)用戶的身份,用戶的私鑰是通過可信的第三方即私鑰生成中心PKG生成的,消除了復(fù)雜的證書管理步驟。為了解決安全信道的問題,Wu等[14]提出指定服務(wù)器的帶關(guān)鍵字搜索的基于身份加密(Efficient Searchable IB-Based Encryption with a Designated Server,dIBEKS)方案。在dIBEKS方案中,測(cè)試算法只能通過指定的云服務(wù)器執(zhí)行,但文獻(xiàn)[14]的方案并不安全,存在關(guān)鍵字猜測(cè)攻擊的問題。因?yàn)殛P(guān)鍵字的集合是可以窮舉出來的,當(dāng)外部的攻擊者獲得陷門后,可以窮舉關(guān)鍵字集合,將密文與陷門進(jìn)行匹配,從而獲得陷門中的關(guān)鍵字信息。之后為了解決安全問題,也有一些基于身份方向的研究,如文獻(xiàn)[15-16]等,提出了新的基于身份方向的密碼方案。為了使具有資源受限設(shè)備的接收者能在云服務(wù)器檢索數(shù)據(jù),Jiang等[12]提出了在線/離線密文檢索(Online/Offline Ciphertext Retrieval,OOCR)的概念,將接收者生成的陷門分成兩部分,即在線陷門和離線陷門[11]。將復(fù)雜的陷門計(jì)算部分提前完成,作為離線的部分,能提高陷門算法的生成效率。2017年Saito等[13]提出能抵抗關(guān)鍵字猜測(cè)攻擊的指定發(fā)送者的可搜索加密。之后,因?yàn)榇蠖鄶?shù)的指定服務(wù)器的基于身份的可搜索加密方案是不安全的,容易受到離線關(guān)鍵字猜測(cè)攻擊。因此,設(shè)計(jì)出安全的基于身份的可搜索加密方案是值得研究的課題。受文獻(xiàn)[15]的啟發(fā),本文提出一個(gè)安全的指定發(fā)送者的基于身份的可搜索加密方案。
本文的困難性問題是雙線性Diffie-Hellman(即BDH)問題和計(jì)算性Diffie-Hellman(即CDH)問題。
本文提出的指定發(fā)送者的基于身份的可搜索加密方案主要由以下的5個(gè)算法構(gòu)成,包含系統(tǒng)參數(shù)設(shè)置算法,用戶的密鑰生成算法,加密算法、關(guān)鍵字陷門生成算法以及測(cè)試算法。
2) 用戶(包含接收者和發(fā)送者)的密鑰生成算法UserKeyGen(ID,Params,s):給定用戶的唯一身份ID,系統(tǒng)主密鑰s和系統(tǒng)參數(shù)Params,PKG生成用戶對(duì)應(yīng)的秘密私鑰skID=sQID,其中QID=H1(ID)。
4) 關(guān)鍵字陷門生成算法TrapdoorGen(w′,skR):接收者運(yùn)行該算法生成陷門。輸入給定的關(guān)鍵字w′和數(shù)據(jù)接收者自己的私鑰skR,該陷門算法選擇隨機(jī)數(shù)t∈Zq*,并計(jì)算陷門信息T=(T1,T2),其中T1=tP,T2=H2(w′‖α′)skR-tH1(IDR),且α′=e′(skIDR,QIDS)。
下面證明本文提出的密碼方案的正確性。如果w=w′,則下面的等式成立:
本文提出的DSIDEKS方案能滿足選擇唯一身份攻擊下的陷門不可區(qū)分性以及密文不可區(qū)分性,能夠抵抗密碼學(xué)中的關(guān)鍵字猜測(cè)攻擊(Keyword Guess Attack,KGA),在隨機(jī)預(yù)言模型下是安全的。
本文提出的DSIDEKS方案在密文中嵌入了發(fā)送者的私鑰,因此敵手不能獲得密文信息,保證了密文的不可偽造性。所以本文的DSIDEKS方案在指定發(fā)送者的情況下能保證一定的安全性。
選擇關(guān)鍵字和身份攻擊下的密文不可區(qū)分性能讓內(nèi)部的服務(wù)器和外部的敵手不能區(qū)分關(guān)鍵字對(duì)應(yīng)的密文信息。下面給出游戲模型,由挑戰(zhàn)者和敵手雙方交互完成。
系統(tǒng)初始化階段挑戰(zhàn)者運(yùn)行SysSetup(γ)算法生成系統(tǒng)的公鑰Ppub和主私鑰s。接著運(yùn)行UserKeyGen(ID,Params,s)算法生成特定用戶的私鑰,再將系統(tǒng)的公共參數(shù)Params發(fā)送給執(zhí)行游戲的敵手。
詢問1敵手可以適應(yīng)性地詢問用戶的私鑰和陷門信息。
挑戰(zhàn)階段敵手選擇一個(gè)身份ID*進(jìn)行挑戰(zhàn),并選出兩個(gè)關(guān)鍵字(w1,w2),且w1和w2的長(zhǎng)度是相等的。挑戰(zhàn)者隨機(jī)選擇δ∈{0,1},并運(yùn)行DSIDEKS(skS,IDR,w)算法產(chǎn)生密文cipherδ發(fā)給游戲中敵手進(jìn)行挑戰(zhàn)。
詢問2該階段的預(yù)言詢問與詢問1相同。
猜測(cè)階段敵手給出對(duì)挑戰(zhàn)階段關(guān)鍵字的猜測(cè)δ′∈{0,1},假如δ=δ′,那么敵手就挑戰(zhàn)成功,贏得了游戲。但是前提條件是:敵手沒有詢問過ID*的私鑰;同樣之前沒有詢問過與身份ID*相對(duì)應(yīng)的關(guān)鍵字w1和w2的陷門。
如果敵手打破方案的優(yōu)勢(shì)能夠完全忽略,就能確定方案滿足選擇身份下的密文不可區(qū)分性??紤]內(nèi)部的服務(wù)器和外部的敵手,主要的過程就是將BDH實(shí)例中的aP、bP、cP分別嵌入到Ppub和挑戰(zhàn)密文cipher中。因此,假設(shè)敵手能通過不可忽略的優(yōu)勢(shì)區(qū)分出相應(yīng)的挑戰(zhàn)密文,則就將問題規(guī)約到BDH困難性難題,從而得出本文方案能滿足選擇身份下的密文不可區(qū)分性。同理可得,本文方案在外部敵手的攻擊下,也能保證選擇身份下的密文不可區(qū)分性。
選擇關(guān)鍵字和身份攻擊下的陷門不可區(qū)分性使敵手不能區(qū)分關(guān)鍵字對(duì)應(yīng)的陷門信息,下面給出游戲模型,由挑戰(zhàn)者和敵手雙方交互完成。
系統(tǒng)初始化階段挑戰(zhàn)者運(yùn)行SysSetup(γ)算法生成系統(tǒng)的公鑰Ppub和主私鑰s。接著運(yùn)行特定用戶的私鑰生成算法產(chǎn)生用戶的私鑰,再將系統(tǒng)的公共參數(shù)Params發(fā)送給執(zhí)行游戲的敵手。
詢問1敵手可以適應(yīng)性地詢問用戶的私鑰和陷門信息。
挑戰(zhàn)階段敵手選擇一個(gè)身份ID*進(jìn)行挑戰(zhàn),并給出挑戰(zhàn)的關(guān)鍵字(wt1,wt2),且關(guān)鍵字wt1和wt2的長(zhǎng)度必須相等才能繼續(xù)游戲。挑戰(zhàn)者隨機(jī)選擇σ∈{0,1},并運(yùn)行TrapdoorGen陷門算法生成挑戰(zhàn)陷門Tσ發(fā)送給敵手。
詢問2該階段的預(yù)言詢問與詢問1相同。
猜測(cè)階段敵手給出對(duì)關(guān)鍵字的猜測(cè)σ′∈{0,1},假如σ=σ′,那么判定敵手挑戰(zhàn)成功,贏得了游戲。但是前提條件是:敵手沒有詢問過身份ID*的私鑰;同時(shí)也沒有詢問過ID*相應(yīng)的挑戰(zhàn)關(guān)鍵字wt1和wt2的陷門信息。
假如敵手贏得游戲的優(yōu)勢(shì)完全可以忽略,就可以得出方案滿足選擇身份下的陷門不可區(qū)分性。主要的過程就是將CDH實(shí)例中的aP、bP嵌入到Ppub和陷門T中,敵手通過預(yù)言詢問,最終將敵手的優(yōu)勢(shì)規(guī)約到解決密碼學(xué)中的CDH問題,從而得出本文方案滿足選擇身份下的陷門不可區(qū)分性。
表1為本文的密碼方案與文獻(xiàn)[15-16]進(jìn)行比較。表2為本文與文獻(xiàn)[15-16]的效率比較。
表1 方案的安全性比較
表2 方案的效率比較
表1中,SC代表是否需要安全信道,TID表示方案能保證陷門不可區(qū)分性,CID表示方案能保證密文不可區(qū)分性。表2中Tb、Ta、Tm分別表示方案執(zhí)行需要的雙線性對(duì)運(yùn)算、循環(huán)群中的加法運(yùn)算和乘法運(yùn)算。從表1和表2可以看出,本文的密碼方案與文獻(xiàn)[16]比較,密文的雙線性對(duì)較多,但是陷門代價(jià)相當(dāng),測(cè)試效率較高。雖然文獻(xiàn)[16]的密文沒有用到雙線性對(duì),但是安全性不及本方案。與文獻(xiàn)[15]相比,本文的密碼方案在密文和陷門的計(jì)算開銷上是相對(duì)較小的。
本文所提方案與文獻(xiàn)[15]和文獻(xiàn)[16]的方案在不同關(guān)鍵字下的效率分析如圖1所示。
圖1 不同關(guān)鍵字?jǐn)?shù)目方案運(yùn)行的時(shí)間效率
可以看出,在都使用雙線對(duì)操作,本文提出的指定發(fā)送者的基于身份的可搜索加密方案和文獻(xiàn)[15-16]相比更為高效。
本文提出了一個(gè)指定發(fā)送者的基于身份的PEKS方案。在隨機(jī)預(yù)言模型下,該方案是密文不可區(qū)分性安全和陷門不可區(qū)分性安全的,也能抵抗關(guān)鍵字猜測(cè)攻擊。在效率方面,本文方案雙線性對(duì)計(jì)算并不是很多,也沒有指數(shù)預(yù)算,因此效率相對(duì)提升。目前,設(shè)計(jì)一個(gè)高效的能滿足密文和陷門不可區(qū)分性的指定服務(wù)器的基于身份的可搜索加密方案仍然有待解決。