王 敏 周李京 秦璐璐
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院 江蘇 南京 211100)
云計(jì)算允許用戶將加密文件上傳到云服務(wù)器,然后在需要時(shí)下載到本地。此外,上傳的加密文件還可以分享給別的用戶。隨著上傳文件的增多,用戶需要對(duì)加密文件進(jìn)行搜索,從而下載感興趣的密文。帶關(guān)鍵詞搜索的公鑰加密(Public key encryption with keyword search,PEKS)[1]允許用戶對(duì)加密關(guān)鍵詞進(jìn)行搜索,同時(shí)不泄露搜索信息。但是,大部分PEKS方案[2-6]針對(duì)的是多對(duì)一環(huán)境,即多個(gè)發(fā)送者利用單個(gè)接收者的公鑰生成密文。對(duì)于不同的接收者,發(fā)送者需要分別使用他們的公鑰加密文件,然后接收者利用自己的私鑰生成陷門來(lái)搜索密文。為了使同一份加密文件可以被多個(gè)接收者搜索,文獻(xiàn)[7-8]提出可搜索屬性基加密(Attributed-based encryption with keyword search,ABKS)。在ABKS中,發(fā)送者利用一個(gè)訪問(wèn)結(jié)構(gòu)或?qū)傩约用荜P(guān)鍵詞,當(dāng)且僅當(dāng)用戶的屬性滿足訪問(wèn)控制策略(或用來(lái)加密關(guān)鍵詞的屬性集滿足用戶私鑰指定的訪問(wèn)控制策略)時(shí),用戶才可以搜索這些加密文件。但是,除了文獻(xiàn)[9],大部分ABKS方案[10-17]不能抵抗關(guān)鍵詞猜測(cè)攻擊。需要指出的是,文獻(xiàn)[9]需要隱藏訪問(wèn)控制策略,這樣大大限制了方案的使用范圍。關(guān)鍵詞猜測(cè)攻擊可以分為三種,分別是外部攻擊者的離線關(guān)鍵詞猜測(cè)攻擊、外部攻擊者的在線關(guān)鍵詞猜測(cè)攻擊和內(nèi)部攻擊者的離線關(guān)鍵詞猜測(cè)攻擊,具體參考文獻(xiàn)[18-20]。外部攻擊者可以生成若干關(guān)鍵詞密文上傳給云服務(wù)器,通過(guò)偵測(cè)云服務(wù)器將這些密文返回給哪些用戶,從而獲取這些用戶的搜索信息。
因此,本文提出了一種可以抵抗關(guān)鍵詞猜測(cè)攻擊的可搜索屬性基加密方案。方案包括四個(gè)參與方,分別是發(fā)送者、接收者、授權(quán)中心和云服務(wù)器。發(fā)送者必須先向授權(quán)中心獲取發(fā)送者私鑰才能生成密文。非法用戶無(wú)法獲取發(fā)送者私鑰,也就無(wú)法生成合法密文,從而可以抵抗關(guān)鍵詞猜測(cè)攻擊。
設(shè)G和GT是乘法循環(huán)群,它們的階是素?cái)?shù)q,g是群G的生成元,雙線性對(duì)映射是e:G×G→GT,此雙線對(duì)映射具有以下三種性質(zhì):
2) 非退化性:對(duì)于任意g1,g2∈G,有e(g1,g2)≠1。
3) 可計(jì)算性:對(duì)于任意g1,g2∈G,存在一個(gè)高效的算法計(jì)算出e(g1,g2)。
設(shè)G和GT是乘法循環(huán)群,它們的階是素?cái)?shù)q,g是群G的生成元,雙線性對(duì)映射是e:G×G→GT。選取隨機(jī)數(shù)a,b,c∈Zq,不存在一個(gè)概率多項(xiàng)式時(shí)間的敵手能夠以不可忽略的優(yōu)勢(shì)區(qū)分(ga,gb,gc,e(g,g)abc)和(ga,gb,gc,e(g,g)z)。我們定義能夠區(qū)分它們的優(yōu)勢(shì)為:(ga,gb,gc,e(g,g)abc)=1]-Pr[(ga,gb,gc,e(g,g)z)=1]|。
假設(shè)P={P1,P2,…,P3}是一組參與方,A?2P是一個(gè)單調(diào)集合。如果集合B∈A且B?C,那么有C∈A。對(duì)于非空集合P,A可作為一個(gè)訪問(wèn)結(jié)構(gòu)。我們稱屬于A的集合是授權(quán)集合,不屬于A的集合是非授權(quán)集合。
設(shè)ω和A分別是一個(gè)屬性集合和訪問(wèn)結(jié)構(gòu),謂詞γ(ω,A)定義如下:如果ω∈A,那么γ(ω,A)=1;否則,γ(ω,A)=0。
抗關(guān)鍵詞猜測(cè)攻擊的可搜索屬性基加密方案由六個(gè)算法組成:設(shè)置算法、發(fā)送者私鑰生成算法、接收者私鑰生成算法、加密算法、陷門生成算法、搜索算法。
設(shè)置算法:該算法由授權(quán)中心運(yùn)行。算法輸入系統(tǒng)安全參數(shù)l,輸出公共參數(shù)pm和主私鑰mk。授權(quán)中心發(fā)布pm,保留mk。
發(fā)送者私鑰生成算法:該算法由授權(quán)中心運(yùn)行。算法輸入主私鑰mk和發(fā)送者的身份ID,輸出發(fā)送者私鑰sks,ID。發(fā)送者在生成密文前,先向授權(quán)中心請(qǐng)求獲得發(fā)送者私鑰。授權(quán)中心驗(yàn)證用戶的身份后,將發(fā)送者私鑰通過(guò)安全信道發(fā)送給用戶。
接收者私鑰生成算法:算法由授權(quán)中心運(yùn)行。算法輸入主私鑰mk和一個(gè)訪問(wèn)結(jié)構(gòu)T,其中接收者的屬性集Atts滿足γ(Atts,T)=1,算法輸出接收者私鑰skr。接收者在生成陷門前,先向授權(quán)中心請(qǐng)求獲得接收者私鑰。授權(quán)中心驗(yàn)證用戶的身份后,將接收者私鑰通過(guò)安全信道發(fā)送給用戶。
加密算法:算法由發(fā)送者運(yùn)行。算法輸入關(guān)鍵詞w、屬性集Atts、發(fā)送者的身份ID和發(fā)送者私鑰sks,ID,輸出關(guān)鍵詞密文cph。然后發(fā)送者將密文上傳到云服務(wù)器。
陷門生成算法:算法由接收者運(yùn)行。算法輸入關(guān)鍵詞w′和接收者私鑰skr,輸出關(guān)鍵詞陷門td。然后接收者將關(guān)鍵詞陷門發(fā)送給云服務(wù)器。
搜索算法:算法由云服務(wù)器運(yùn)行。算法輸入關(guān)鍵詞密文cph和關(guān)鍵詞陷門td,輸出搜索結(jié)果。一旦云服務(wù)器接收到關(guān)鍵詞陷門,便運(yùn)行搜索算法。如果搜索成功,則將相應(yīng)的密文返回給用戶;如果搜索失敗,則返回搜索失敗給用戶。
抗關(guān)鍵詞猜測(cè)攻擊的可搜索屬性基加密方案構(gòu)造如下:
設(shè)置算法:給定安全參數(shù)l,算法生成一個(gè)素?cái)?shù)q。選擇一個(gè)雙線性對(duì)映射e:G×G→GT,其中G和GT是階為q的乘法循環(huán)群,g是群G的生成元。H1:{0,1}*→G和H2:{0,1}*→Zq是單向哈希函數(shù)。選擇隨機(jī)數(shù)s∈Zq,設(shè)置公共參數(shù)pm和主私鑰mk為:pm=(H1,H2,e,g,q,G,GT),mk=s。
發(fā)送者私鑰生成算法:算法輸入主私鑰mk和發(fā)送者的身份ID,輸出發(fā)送者私鑰sks,ID=H1(ID)s。
接收者私鑰生成算法:算法輸入一個(gè)訪問(wèn)結(jié)構(gòu)樹(shù)T,輸入主私鑰mk=s作為T的根節(jié)點(diǎn)。然后自上而下地設(shè)置樹(shù)的內(nèi)部節(jié)點(diǎn)和葉子結(jié)點(diǎn)的值。對(duì)于訪問(wèn)結(jié)構(gòu)樹(shù)T的每個(gè)葉子節(jié)點(diǎn)v∈lvs(T),選擇隨機(jī)數(shù)t∈Zq,計(jì)算Xv=gqv(0)H1(att(v))t和Yv=H1(ID)t。接收者私鑰為skr=(T,{(Xv,Yv|v∈lvs(T))})。
方案的正確性如下:
e(W,TD)=e(H1(ID)s(r1H2(w)+r2),gu)=
e(H1(ID),g)us(r1H2(w)+r2)
Qroot,1Qroot,2=e(H1(ID),g)us(r1H2(w′)+r2)
為了保證抗關(guān)鍵詞猜測(cè)攻擊的可搜索屬性基加密方案的安全性,我們考慮密文不可區(qū)分和陷門不可區(qū)分。因?yàn)閮?nèi)部攻擊者具有比外部攻擊者更強(qiáng)的能力,這里我們僅考慮內(nèi)部攻擊者。讓作為一個(gè)概率多項(xiàng)式時(shí)間的敵手,我們考慮兩種情況。第一種情況是作為發(fā)送者,他可以獲得任意ID的發(fā)送者私鑰以及用其加密的關(guān)鍵詞密文,但他仍然無(wú)法區(qū)分用他未獲得的ID的發(fā)送者私鑰加密的關(guān)鍵詞密文。第二種情況是作為接收者,他可以獲得任意屬性集對(duì)應(yīng)的接收者私鑰以及用其生成的關(guān)鍵詞陷門,但他仍然無(wú)法區(qū)分用他未獲得的屬性集對(duì)應(yīng)的接收者私鑰生成的關(guān)鍵詞陷門。我們將上述兩種情況定義為兩個(gè)游戲。
縱觀各大景區(qū),總是不斷地推出新的游玩項(xiàng)目,也開(kāi)發(fā)出很多的營(yíng)銷模式,像烏村不定期推出季卡以及優(yōu)惠套餐,相應(yīng)的結(jié)合產(chǎn)品的設(shè)計(jì)推廣,但是這些體現(xiàn)在了景區(qū)的主要活動(dòng)上,但旅游紀(jì)念品的銷售并沒(méi)有得到相同的待遇。烏村特品屋的紀(jì)念品單純地放在貨架上,讓游客自己來(lái)挑選,不會(huì)主動(dòng)地向旅游者推銷,更不要說(shuō)是營(yíng)銷策略了。
設(shè)置階段:C運(yùn)行設(shè)置算法,輸入安全參數(shù),輸出公共參數(shù)和主私鑰。C將公共參數(shù)發(fā)送給,保留主私鑰。
設(shè)置階段:C運(yùn)行設(shè)置算法,輸入安全參數(shù),輸出公共參數(shù)和主私鑰。C將公共參數(shù)發(fā)送給,保留主私鑰。
在這一部分,我們將本方案與文獻(xiàn)[11]的KP-ABKS方案、文獻(xiàn)[16]的ABKS-CSC方案和文獻(xiàn)[17]的方案在計(jì)算代價(jià)、存儲(chǔ)代價(jià)和功能三個(gè)方面進(jìn)行對(duì)比。E表示群G中的指數(shù)運(yùn)算,ET表示群GT中的指數(shù)運(yùn)算,M表示群G中的乘法運(yùn)算,MT表示群GT中的乘法運(yùn)算,Pair表示配對(duì)運(yùn)算。N表示訪問(wèn)結(jié)構(gòu)中葉子節(jié)點(diǎn)的數(shù)目,S表示屬性集中的屬性個(gè)數(shù),|G|表示群G中元素的存儲(chǔ)長(zhǎng)度。此外,由于哈希函數(shù)的計(jì)算比其他算法高效得多,這里忽略哈希函數(shù)的計(jì)算時(shí)間。從表1和表2可以看出,本方案在計(jì)算代價(jià)和存儲(chǔ)代價(jià)方面不如KP-ABKS方案、ABKS-CSC方案和文獻(xiàn)[17]的方案,但表3顯示本方案在陷門不可區(qū)分和抗關(guān)鍵詞猜測(cè)攻擊兩個(gè)方面性能優(yōu)于KP-ABKS,在抗關(guān)鍵詞猜測(cè)攻擊方面性能優(yōu)于ABKS-CSC方案和文獻(xiàn)[17]的方案。
表1 計(jì)算代價(jià)對(duì)比
表2 存儲(chǔ)代價(jià)對(duì)比
表3 功能對(duì)比
本文提出了一種抗關(guān)鍵詞猜測(cè)攻擊的可搜索屬性基加密方案。通過(guò)與KP-ABKS方案、ABKS-CSC方案和文獻(xiàn)[17]的方案進(jìn)行比較,本方案在陷門不可區(qū)分和抗關(guān)鍵詞猜測(cè)攻擊兩方面性能優(yōu)于KP-ABKS方案,在抗關(guān)鍵詞猜測(cè)攻擊方面性能優(yōu)于ABKS-CSC方案和文獻(xiàn)[17]的方案,但在計(jì)算效率和存儲(chǔ)代價(jià)兩方面不如KP-ABKS方案、ABKS-CSC方案和文獻(xiàn)[17]的方案。所以,下一階段的目標(biāo)是在不改變方案性能的基礎(chǔ)上提高本方案的計(jì)算效率和存儲(chǔ)代價(jià)。
DOI :10.1109/TSC.2017.2757467.