孫亞楠,陳 微
(北華大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,吉林 吉林 132012)
信息數(shù)據(jù)無(wú)論是對(duì)企業(yè)還是個(gè)人,都有著重要的價(jià)值,由于越來(lái)越多的信息數(shù)據(jù)產(chǎn)生,以及云計(jì)算的普及,為了在保證數(shù)據(jù)使用的同時(shí),盡可能降低維護(hù)成本,大量數(shù)據(jù)采取外包形式存儲(chǔ)于三方服務(wù)器[1]。這種用戶數(shù)據(jù)的管理,在遭受攻擊時(shí)很容易產(chǎn)生數(shù)據(jù)威脅,當(dāng)前普遍做法是采取加密操作,即把信息轉(zhuǎn)換為密文保存在數(shù)據(jù)庫(kù)中。提高信息安全的同時(shí),也導(dǎo)致原有的明文檢索方式失效,由此促進(jìn)了關(guān)于數(shù)據(jù)庫(kù)密文檢索的研究[2-3]。
文獻(xiàn)[4]設(shè)計(jì)了一種Merkle哈希樹檢索策略,在原有的明文索引基礎(chǔ)上,依靠Lucene工具包實(shí)現(xiàn)了數(shù)據(jù)的高效檢索。文獻(xiàn)[5]結(jié)合mOPE與二叉樹,設(shè)計(jì)了一種保序編碼,并采取AES對(duì)數(shù)據(jù)進(jìn)行加密,該方法具有良好的密文排序性能。文獻(xiàn)[6]針對(duì)SE存在的問(wèn)題,依據(jù)審計(jì)策略與CP-ABE策略,設(shè)計(jì)了多關(guān)鍵詞檢索方法,利用隨機(jī)預(yù)測(cè)防止數(shù)據(jù)遭受攻擊。文獻(xiàn)[7]根據(jù)信息數(shù)據(jù)的所有權(quán),通過(guò)CP-ABE密鑰進(jìn)行差異性加密,從而達(dá)到訪問(wèn)權(quán)限約束效果,可以避免關(guān)鍵詞攻擊。文獻(xiàn)[8]利用密鑰設(shè)計(jì)了一種驗(yàn)證加密方法,該方法可以攜帶撤銷數(shù)據(jù),從而擺脫對(duì)原有加密信息的依賴。通過(guò)現(xiàn)有研究的分析,有些方法偏重的是檢索排序,有些方法偏重的是惡意攻擊,有些方法偏重的是檢索效率,但是,多少都存在一定的局限性,因此,本文提出一種擴(kuò)展關(guān)鍵詞的密文可驗(yàn)證檢索模型,實(shí)現(xiàn)數(shù)據(jù)庫(kù)密文的可驗(yàn)證檢索,同時(shí)針對(duì)惡意攻擊攔截協(xié)議會(huì)話的情況,設(shè)計(jì)了去同步化攻擊協(xié)議。
在對(duì)數(shù)據(jù)庫(kù)密文進(jìn)行檢索時(shí),這里將模型設(shè)計(jì)劃分為四個(gè)模塊:初始化模塊、加密模塊、查詢模塊,以及驗(yàn)證解密模塊,針對(duì)每個(gè)模塊采取相應(yīng)的算法設(shè)計(jì)和改進(jìn)優(yōu)化。
初始化模塊中,主要完成密鑰的生成任務(wù)。客戶端利用安全因子λ與鍵值生成函數(shù)得到(e,q,g)。這里的e項(xiàng)代表乘法循環(huán)群G1×G1至GB的映射處理;q項(xiàng)代表G1與GB的階;g項(xiàng)代表G生成元。根據(jù)哈希函數(shù)與雙線性映射,計(jì)算得到三個(gè)隨機(jī)種子如下
(1)
同時(shí),還需要產(chǎn)生向量S←{0,1}λ,以及可逆矩陣(I′,I″),且保證它們的維度均為λ。利用這些參數(shù)組成鍵值對(duì)key={PK,SK},PK=(q,g)代表客戶端對(duì)應(yīng)的身份密鑰,SK=(e,λ1,λ2,λ3,S,I′,I″)代表客戶端對(duì)應(yīng)的屬性密鑰。
RAs[add(Ni,j)]=Ni,j⊕Cλ3(i)
(2)
(3)
(4)
將加密結(jié)果IMi作為索引標(biāo)記,同時(shí)把IMi與RAi保存到字典Ds中,保存規(guī)則如下
(5)
客戶端根據(jù)檢索數(shù)組RAs與字典Ds組成加密索引(Ds,RAs),發(fā)送至服務(wù)器。
在文件操作階段,文件F根據(jù)屬性密鑰SK加密,轉(zhuǎn)換成CF,然后發(fā)送至服務(wù)器。
在查詢模塊中,傳統(tǒng)的檢索方式會(huì)導(dǎo)致服務(wù)器的猜測(cè),使客戶端的查詢信息產(chǎn)生泄露,考慮到該問(wèn)題的優(yōu)化,這里設(shè)計(jì)了一種擴(kuò)展關(guān)鍵詞的檢索陷門。在客戶端檢索關(guān)鍵詞kws的基礎(chǔ)上,額外增加r數(shù)量的擴(kuò)展關(guān)鍵詞{kws+1,kws+2,…,kws+r},并由此構(gòu)造陷門TR=(T1,T2,T3),構(gòu)造方式描述如下
(6)
T1中的F(PK)項(xiàng)是關(guān)鍵詞對(duì)應(yīng)的檢索標(biāo)識(shí)符,如果F(PK)=1時(shí),說(shuō)明此關(guān)鍵詞為客戶端的檢索目標(biāo),如果F(PK)=0時(shí),說(shuō)明此關(guān)鍵詞為檢索目標(biāo)的擴(kuò)展。根據(jù)客戶端發(fā)送來(lái)的陷門,服務(wù)器首先判斷A散列函數(shù)是否在字典Ds內(nèi),針對(duì)不存在于字典Ds內(nèi)的情況,利用IMi與Ds恢復(fù)節(jié)點(diǎn)Ni,j,從而得到擴(kuò)展關(guān)鍵詞的加密Ekw,K={Ekws,K,Ekws+1,K,…,Ekws+r,K}。在此基礎(chǔ)上,進(jìn)一步計(jì)算出擴(kuò)展關(guān)鍵詞的驗(yàn)證Vkw={Vkws,Vkws+1,…,Vkws+r},并把Ekw,K與Vkw同時(shí)映射至DataBuffer內(nèi),關(guān)于驗(yàn)證計(jì)算公式描述如下
Vkwi=∏(idi(j)+q)
(7)
由于關(guān)鍵詞檢索標(biāo)識(shí)符的存在,服務(wù)器能夠據(jù)此判斷出客戶端需要的驗(yàn)證數(shù)據(jù),從而精確返回?cái)?shù)據(jù),降低傳輸成本。與此同時(shí),經(jīng)過(guò)篩選返回的Ekw,K與Vkw集合均為加密的,有利于查詢安全。
在驗(yàn)證解密模塊中,主要完成服務(wù)器返回查詢結(jié)果的密文驗(yàn)證與密文解密。根據(jù)式(3)對(duì)Aλ1(kws)進(jìn)行拆分,將拆解分量采取加密得到如下關(guān)系
(8)
由于傳統(tǒng)協(xié)議在遭受去同步攻擊時(shí),常常會(huì)出現(xiàn)協(xié)議數(shù)據(jù)被攔截,導(dǎo)致數(shù)據(jù)泄露和丟失,因此,這里設(shè)計(jì)一種抗去同步化攻擊的安全協(xié)議。在執(zhí)行協(xié)議之前,服務(wù)器通過(guò)置換函數(shù)提前準(zhǔn)備所需的校驗(yàn)對(duì)(Cn,Cn+1),密鑰Ks、Kd,以及隨機(jī)數(shù)randn??蛻舳藙t會(huì)攜帶關(guān)鍵字標(biāo)識(shí)ID,臨時(shí)標(biāo)識(shí)TID,密鑰Ks、Kd,以及rand。當(dāng)協(xié)議開始執(zhí)行時(shí),客戶端向服務(wù)器發(fā)送對(duì)應(yīng)的TID,服務(wù)器將接收到的TID在數(shù)據(jù)庫(kù)中遍歷搜索,如果搜索成功,便返回相應(yīng)的密鑰,密文檢索同步驗(yàn)證啟動(dòng)。隨后由服務(wù)器生成隨機(jī)數(shù)r1與r2,并利用準(zhǔn)備好的檢驗(yàn)對(duì)、密鑰,通過(guò)交叉位計(jì)算得到校驗(yàn)值,返回至客戶端,校驗(yàn)計(jì)算公式如下
(9)
其中,Cor(·)為交叉位計(jì)算函數(shù),CRC(·)為檢驗(yàn)函數(shù)。服務(wù)器返回校驗(yàn)后,對(duì)自身的同步隨機(jī)數(shù)進(jìn)行更新,更新方式為
randn+1=CRC(randn⊕r1)
(10)
客戶端接收到校驗(yàn)數(shù)據(jù)后,根據(jù)公共密鑰Ks與Kd,從檢驗(yàn)CS1內(nèi)還原出服務(wù)器的Cn,再根據(jù)Cn、Ks與Kd,結(jié)合檢驗(yàn)CS2,求出服務(wù)器隨機(jī)數(shù)r1。再通過(guò)置換函數(shù)與Cn計(jì)算出Cn+1與Cn+2,同時(shí)也對(duì)服務(wù)器的同步隨機(jī)數(shù)進(jìn)行更新。此時(shí),客戶端根據(jù)計(jì)算出的共享密鑰,服務(wù)器隨機(jī)數(shù),同步隨機(jī)數(shù),以及Cn+1與Cn+2,求解客戶端校驗(yàn)值,返回至服務(wù)器端,客戶端的校驗(yàn)計(jì)算公式如下
(11)
服務(wù)器根據(jù)共享密鑰與接收到的校驗(yàn)值CC1,還原出客戶端更新的Cn+1,和自身校驗(yàn)對(duì)做對(duì)比,如果客戶端與服務(wù)器的Cn+1一致,表明驗(yàn)證成功。服務(wù)器再利用校驗(yàn)值CC2求解出客戶端發(fā)送來(lái)的Cn+2,將(Cn+1,Cn+2)作為最新的校驗(yàn)對(duì),用于次輪驗(yàn)證。此時(shí),服務(wù)器需要對(duì)密鑰采取更新處理,更新方式如下
(12)
(13)
更新過(guò)密鑰后,服務(wù)器利用r2計(jì)算返回客戶端的校驗(yàn)值,校驗(yàn)公式為
(14)
客戶端接收到校驗(yàn)值,根據(jù)校驗(yàn)值CS3求解出r2,再利用r2求解出另一個(gè)校驗(yàn)值CS4,并與服務(wù)器的CS4做對(duì)比,如果兩端的一致,表明驗(yàn)證成功。此時(shí),客戶端也采取服務(wù)器端的方式對(duì)密鑰進(jìn)行更新。
由于協(xié)議中采用了雙隨機(jī)數(shù),因此,在當(dāng)協(xié)議被攔截時(shí),通過(guò)雙邊的校驗(yàn)計(jì)算就能夠得到驗(yàn)證,從而有效應(yīng)對(duì)去同步化攻擊。同時(shí),第二個(gè)隨機(jī)數(shù)無(wú)需協(xié)議傳輸,進(jìn)而不會(huì)導(dǎo)致傳輸帶寬的增加。
仿真在Linux系統(tǒng)中進(jìn)行,選擇JDK1.8的開發(fā)環(huán)境與Mysql數(shù)據(jù)庫(kù),通過(guò)網(wǎng)絡(luò)爬取20000個(gè)文檔作為實(shí)驗(yàn)數(shù)據(jù)集,并利用Lucene提取出實(shí)驗(yàn)數(shù)據(jù)集中的8000個(gè)關(guān)鍵詞用于測(cè)試。為了驗(yàn)證本文提出的數(shù)據(jù)庫(kù)密文可驗(yàn)證檢索方案,采用文獻(xiàn)[7]與文獻(xiàn)[8]作為對(duì)比,從檢索的時(shí)間開銷與安全性方面分別進(jìn)行分析。
在對(duì)數(shù)據(jù)庫(kù)密文檢索時(shí),時(shí)間開銷是衡量檢索模型的重要指標(biāo),面對(duì)當(dāng)前海量應(yīng)用數(shù)據(jù),在一些大數(shù)據(jù)處理場(chǎng)合下,檢索效率甚至比檢索安全性更為重要,因此,這里首先對(duì)各檢索方案的時(shí)間開銷進(jìn)行分析。
根據(jù)各方案的檢索過(guò)程,通過(guò)理論分析得到表1所示的計(jì)算開銷。表中列出了各方案在每個(gè)階段產(chǎn)生的計(jì)算開銷。|S|為客戶端屬性數(shù)量;E、ET、E1、E2、EB分別為循環(huán)群G、GT、G1、G2、GB中對(duì)應(yīng)的指數(shù)處理;P為對(duì)數(shù)處理;|R|為文件數(shù)量。
表1 計(jì)算開銷
根據(jù)計(jì)算開銷可以看出,所有的方案都有效避免了Global屬性數(shù)量|U|的參與,因?yàn)閨U|遠(yuǎn)大于|S|,所以三種方案都實(shí)現(xiàn)了計(jì)算開銷的優(yōu)化。經(jīng)過(guò)比較,文獻(xiàn)[7]在各階段的計(jì)算開銷都比其它方案要大,文獻(xiàn)[8]方案缺少解密處理,而本文方案的在生成密鑰至陷門的過(guò)程中,計(jì)算開銷相比其它方法都要更小一些,至于搜索階段與解密階段,則難以根據(jù)理論分析直接確定。為進(jìn)一步分析各檢索方案時(shí)間開銷的具體數(shù)據(jù),設(shè)置|S|∈[1,50],檢索屬性的數(shù)量也在該范圍內(nèi),通過(guò)仿真,在檢索屬性數(shù)量變化的過(guò)程中,分別得到各方案搜索時(shí)間開銷的變化情況,如圖1所示。
圖1 搜索時(shí)間結(jié)果曲線
結(jié)合搜索時(shí)間結(jié)果曲線與計(jì)算開銷理論分析可知,在增加檢索屬性的數(shù)量時(shí),文獻(xiàn)[7]的搜索時(shí)間開銷是2|S|E+ET+5P,受屬性數(shù)量影響,搜索時(shí)間呈線性增長(zhǎng)趨勢(shì)。文獻(xiàn)[8]與本文方案的搜索時(shí)間開銷分別為E+3P與E2+2P,均不受屬性數(shù)量影響,因此始終處于穩(wěn)定狀態(tài),但是由于E+3P值大于E2+2P值,所以,本文方案的搜索時(shí)間要小于文獻(xiàn)[8]方案,即搜索時(shí)間曲線位于文獻(xiàn)[8]方案搜索時(shí)間曲線之下。
通過(guò)仿真,在檢索屬性數(shù)量變化的過(guò)程中,分別得到各方案檢索完成時(shí)間的變化情況,如圖2所示。
圖2 檢索完成時(shí)間結(jié)果曲線
根據(jù)結(jié)果曲線可以看出,在屬性數(shù)量增加的過(guò)程中,各方法的檢索完成時(shí)間呈現(xiàn)不同程度的增加,本文方案的時(shí)間增加最慢,且在相同屬性數(shù)量時(shí),檢索完成時(shí)間也最短,實(shí)驗(yàn)結(jié)果完全符合理論數(shù)據(jù)分析,充分驗(yàn)證了本文方案具有更快的數(shù)據(jù)庫(kù)密文檢索效率,適用于大量數(shù)據(jù)查詢場(chǎng)合。
為衡量密文檢索的安全性,這里采用隱私保護(hù)度作為評(píng)價(jià)指標(biāo),其公式描述如下:
(15)
通過(guò)仿真實(shí)驗(yàn)得到三種方案的隱私保護(hù)度結(jié)果,如圖3所示。根據(jù)隱私保護(hù)度曲線可以看出,隨著檢索返回文件數(shù)量的增加,各方法的隱私保護(hù)度也隨之增加,其中,本文提出的方案增速尤為明顯,表明具有更好的安全性。這是由于檢索模型中引入了擴(kuò)展關(guān)鍵詞,同時(shí)增加了可驗(yàn)證策略,這樣能夠有效避免服務(wù)器在遭受攻擊后,返回攻擊響應(yīng)結(jié)果,從而防止客戶端隱私數(shù)據(jù)的泄露。
圖3 隱私保護(hù)度結(jié)果曲線
為了驗(yàn)證本文方案在密文檢索時(shí)的抗去同步攻擊性能,在無(wú)攻擊與存在去同步化攻擊時(shí),通過(guò)改變標(biāo)簽數(shù)量,分別得到各方案檢索過(guò)程中的對(duì)比次數(shù),實(shí)驗(yàn)結(jié)果如圖4和圖5所示。
圖4 無(wú)攻擊情況時(shí)的對(duì)比次數(shù)曲線
圖5 去同步攻擊情況時(shí)的對(duì)比次數(shù)曲線
當(dāng)無(wú)去同步化攻擊時(shí),兩種對(duì)比方案在檢索過(guò)程中發(fā)生對(duì)比的次數(shù)受協(xié)議交互的頻繁度影響較大。因此,保持協(xié)議交互頻繁度不變時(shí),其它兩種方案的對(duì)比次數(shù)隨著標(biāo)簽數(shù)量的增加呈現(xiàn)直線上升。當(dāng)存在去同步化攻擊時(shí),兩種對(duì)比方案在標(biāo)簽增加的初期,對(duì)比次數(shù)呈現(xiàn)快速增長(zhǎng),隨后逐漸趨于穩(wěn)定增長(zhǎng)。在同一標(biāo)簽數(shù)量下,去同步化攻擊時(shí)的對(duì)比次數(shù)比無(wú)攻擊時(shí)有明顯增加,而本文檢索方案則沒(méi)有明顯區(qū)別。導(dǎo)致這種現(xiàn)象的原因是,設(shè)計(jì)的新協(xié)議采用了雙隨機(jī)數(shù)與校驗(yàn)方式,占用的標(biāo)簽資源有限,從而顯著控制了檢索過(guò)程中的對(duì)比次數(shù)。
為了提高數(shù)據(jù)庫(kù)密文檢索的快速性和安全性,本文設(shè)計(jì)了基于擴(kuò)展關(guān)鍵詞的密文可驗(yàn)證檢索模型。模型分為初始化模塊、加密模塊、查詢模塊,以及驗(yàn)證解密模塊,針對(duì)每個(gè)模塊分別設(shè)計(jì)了相應(yīng)的處理和優(yōu)化??紤]到傳統(tǒng)方法在檢索過(guò)程中容易產(chǎn)生信息泄露,這里采用擴(kuò)展關(guān)鍵詞陷門用以克服,根據(jù)陷門標(biāo)識(shí)符判斷客戶端需要的驗(yàn)證數(shù)據(jù),同時(shí)利用擴(kuò)展關(guān)鍵詞的加密集合與驗(yàn)證集合實(shí)現(xiàn)密文的可驗(yàn)證檢索。另外,考慮到去同步化攻擊會(huì)導(dǎo)致無(wú)密鑰響應(yīng),引發(fā)數(shù)據(jù)安全問(wèn)題,設(shè)計(jì)了去同步化攻擊協(xié)議,引入了雙隨機(jī)數(shù)與雙邊校驗(yàn)計(jì)算。通過(guò)檢索性能的仿真模擬,證明本文方案對(duì)于數(shù)據(jù)庫(kù)密文具有更高的檢索效率,顯著提高了檢索的安全性,能夠有效避免去同步化攻擊導(dǎo)致的無(wú)密鑰響應(yīng)。