孫亞楠,陳 微
(北華大學計算機科學技術學院,吉林 吉林 132012)
信息數據無論是對企業還是個人,都有著重要的價值,由于越來越多的信息數據產生,以及云計算的普及,為了在保證數據使用的同時,盡可能降低維護成本,大量數據采取外包形式存儲于三方服務器[1]。這種用戶數據的管理,在遭受攻擊時很容易產生數據威脅,當前普遍做法是采取加密操作,即把信息轉換為密文保存在數據庫中。提高信息安全的同時,也導致原有的明文檢索方式失效,由此促進了關于數據庫密文檢索的研究[2-3]。
文獻[4]設計了一種Merkle哈希樹檢索策略,在原有的明文索引基礎上,依靠Lucene工具包實現了數據的高效檢索。文獻[5]結合mOPE與二叉樹,設計了一種保序編碼,并采取AES對數據進行加密,該方法具有良好的密文排序性能。文獻[6]針對SE存在的問題,依據審計策略與CP-ABE策略,設計了多關鍵詞檢索方法,利用隨機預測防止數據遭受攻擊。文獻[7]根據信息數據的所有權,通過CP-ABE密鑰進行差異性加密,從而達到訪問權限約束效果,可以避免關鍵詞攻擊。文獻[8]利用密鑰設計了一種驗證加密方法,該方法可以攜帶撤銷數據,從而擺脫對原有加密信息的依賴。通過現有研究的分析,有些方法偏重的是檢索排序,有些方法偏重的是惡意攻擊,有些方法偏重的是檢索效率,但是,多少都存在一定的局限性,因此,本文提出一種擴展關鍵詞的密文可驗證檢索模型,實現數據庫密文的可驗證檢索,同時針對惡意攻擊攔截協議會話的情況,設計了去同步化攻擊協議。
在對數據庫密文進行檢索時,這里將模型設計劃分為四個模塊:初始化模塊、加密模塊、查詢模塊,以及驗證解密模塊,針對每個模塊采取相應的算法設計和改進優化。
初始化模塊中,主要完成密鑰的生成任務。客戶端利用安全因子λ與鍵值生成函數得到(e,q,g)。這里的e項代表乘法循環群G1×G1至GB的映射處理;q項代表G1與GB的階;g項代表G生成元。根據哈希函數與雙線性映射,計算得到三個隨機種子如下

(1)
同時,還需要產生向量S←{0,1}λ,以及可逆矩陣(I′,I″),且保證它們的維度均為λ。利用這些參數組成鍵值對key={PK,SK},PK=(q,g)代表客戶端對應的身份密鑰,SK=(e,λ1,λ2,λ3,S,I′,I″)代表客戶端對應的屬性密鑰。

RAs[add(Ni,j)]=Ni,j⊕Cλ3(i)
(2)


(3)


(4)
將加密結果IMi作為索引標記,同時把IMi與RAi保存到字典Ds中,保存規則如下

(5)
客戶端根據檢索數組RAs與字典Ds組成加密索引(Ds,RAs),發送至服務器。
在文件操作階段,文件F根據屬性密鑰SK加密,轉換成CF,然后發送至服務器。
在查詢模塊中,傳統的檢索方式會導致服務器的猜測,使客戶端的查詢信息產生泄露,考慮到該問題的優化,這里設計了一種擴展關鍵詞的檢索陷門。在客戶端檢索關鍵詞kws的基礎上,額外增加r數量的擴展關鍵詞{kws+1,kws+2,…,kws+r},并由此構造陷門TR=(T1,T2,T3),構造方式描述如下

(6)
T1中的F(PK)項是關鍵詞對應的檢索標識符,如果F(PK)=1時,說明此關鍵詞為客戶端的檢索目標,如果F(PK)=0時,說明此關鍵詞為檢索目標的擴展。根據客戶端發送來的陷門,服務器首先判斷A散列函數是否在字典Ds內,針對不存在于字典Ds內的情況,利用IMi與Ds恢復節點Ni,j,從而得到擴展關鍵詞的加密Ekw,K={Ekws,K,Ekws+1,K,…,Ekws+r,K}。在此基礎上,進一步計算出擴展關鍵詞的驗證Vkw={Vkws,Vkws+1,…,Vkws+r},并把Ekw,K與Vkw同時映射至DataBuffer內,關于驗證計算公式描述如下
Vkwi=∏(idi(j)+q)
(7)
由于關鍵詞檢索標識符的存在,服務器能夠據此判斷出客戶端需要的驗證數據,從而精確返回數據,降低傳輸成本。與此同時,經過篩選返回的Ekw,K與Vkw集合均為加密的,有利于查詢安全。
在驗證解密模塊中,主要完成服務器返回查詢結果的密文驗證與密文解密。根據式(3)對Aλ1(kws)進行拆分,將拆解分量采取加密得到如下關系

(8)
由于傳統協議在遭受去同步攻擊時,常常會出現協議數據被攔截,導致數據泄露和丟失,因此,這里設計一種抗去同步化攻擊的安全協議。在執行協議之前,服務器通過置換函數提前準備所需的校驗對(Cn,Cn+1),密鑰Ks、Kd,以及隨機數randn。客戶端則會攜帶關鍵字標識ID,臨時標識TID,密鑰Ks、Kd,以及rand。當協議開始執行時,客戶端向服務器發送對應的TID,服務器將接收到的TID在數據庫中遍歷搜索,如果搜索成功,便返回相應的密鑰,密文檢索同步驗證啟動。隨后由服務器生成隨機數r1與r2,并利用準備好的檢驗對、密鑰,通過交叉位計算得到校驗值,返回至客戶端,校驗計算公式如下

(9)
其中,Cor(·)為交叉位計算函數,CRC(·)為檢驗函數。服務器返回校驗后,對自身的同步隨機數進行更新,更新方式為
randn+1=CRC(randn⊕r1)
(10)
客戶端接收到校驗數據后,根據公共密鑰Ks與Kd,從檢驗CS1內還原出服務器的Cn,再根據Cn、Ks與Kd,結合檢驗CS2,求出服務器隨機數r1。再通過置換函數與Cn計算出Cn+1與Cn+2,同時也對服務器的同步隨機數進行更新。此時,客戶端根據計算出的共享密鑰,服務器隨機數,同步隨機數,以及Cn+1與Cn+2,求解客戶端校驗值,返回至服務器端,客戶端的校驗計算公式如下

(11)
服務器根據共享密鑰與接收到的校驗值CC1,還原出客戶端更新的Cn+1,和自身校驗對做對比,如果客戶端與服務器的Cn+1一致,表明驗證成功。服務器再利用校驗值CC2求解出客戶端發送來的Cn+2,將(Cn+1,Cn+2)作為最新的校驗對,用于次輪驗證。此時,服務器需要對密鑰采取更新處理,更新方式如下

(12)

(13)
更新過密鑰后,服務器利用r2計算返回客戶端的校驗值,校驗公式為

(14)
客戶端接收到校驗值,根據校驗值CS3求解出r2,再利用r2求解出另一個校驗值CS4,并與服務器的CS4做對比,如果兩端的一致,表明驗證成功。此時,客戶端也采取服務器端的方式對密鑰進行更新。
由于協議中采用了雙隨機數,因此,在當協議被攔截時,通過雙邊的校驗計算就能夠得到驗證,從而有效應對去同步化攻擊。同時,第二個隨機數無需協議傳輸,進而不會導致傳輸帶寬的增加。
仿真在Linux系統中進行,選擇JDK1.8的開發環境與Mysql數據庫,通過網絡爬取20000個文檔作為實驗數據集,并利用Lucene提取出實驗數據集中的8000個關鍵詞用于測試。為了驗證本文提出的數據庫密文可驗證檢索方案,采用文獻[7]與文獻[8]作為對比,從檢索的時間開銷與安全性方面分別進行分析。
在對數據庫密文檢索時,時間開銷是衡量檢索模型的重要指標,面對當前海量應用數據,在一些大數據處理場合下,檢索效率甚至比檢索安全性更為重要,因此,這里首先對各檢索方案的時間開銷進行分析。
根據各方案的檢索過程,通過理論分析得到表1所示的計算開銷。表中列出了各方案在每個階段產生的計算開銷。|S|為客戶端屬性數量;E、ET、E1、E2、EB分別為循環群G、GT、G1、G2、GB中對應的指數處理;P為對數處理;|R|為文件數量。

表1 計算開銷
根據計算開銷可以看出,所有的方案都有效避免了Global屬性數量|U|的參與,因為|U|遠大于|S|,所以三種方案都實現了計算開銷的優化。經過比較,文獻[7]在各階段的計算開銷都比其它方案要大,文獻[8]方案缺少解密處理,而本文方案的在生成密鑰至陷門的過程中,計算開銷相比其它方法都要更小一些,至于搜索階段與解密階段,則難以根據理論分析直接確定。為進一步分析各檢索方案時間開銷的具體數據,設置|S|∈[1,50],檢索屬性的數量也在該范圍內,通過仿真,在檢索屬性數量變化的過程中,分別得到各方案搜索時間開銷的變化情況,如圖1所示。

圖1 搜索時間結果曲線
結合搜索時間結果曲線與計算開銷理論分析可知,在增加檢索屬性的數量時,文獻[7]的搜索時間開銷是2|S|E+ET+5P,受屬性數量影響,搜索時間呈線性增長趨勢。文獻[8]與本文方案的搜索時間開銷分別為E+3P與E2+2P,均不受屬性數量影響,因此始終處于穩定狀態,但是由于E+3P值大于E2+2P值,所以,本文方案的搜索時間要小于文獻[8]方案,即搜索時間曲線位于文獻[8]方案搜索時間曲線之下。
通過仿真,在檢索屬性數量變化的過程中,分別得到各方案檢索完成時間的變化情況,如圖2所示。

圖2 檢索完成時間結果曲線
根據結果曲線可以看出,在屬性數量增加的過程中,各方法的檢索完成時間呈現不同程度的增加,本文方案的時間增加最慢,且在相同屬性數量時,檢索完成時間也最短,實驗結果完全符合理論數據分析,充分驗證了本文方案具有更快的數據庫密文檢索效率,適用于大量數據查詢場合。
為衡量密文檢索的安全性,這里采用隱私保護度作為評價指標,其公式描述如下:

(15)

通過仿真實驗得到三種方案的隱私保護度結果,如圖3所示。根據隱私保護度曲線可以看出,隨著檢索返回文件數量的增加,各方法的隱私保護度也隨之增加,其中,本文提出的方案增速尤為明顯,表明具有更好的安全性。這是由于檢索模型中引入了擴展關鍵詞,同時增加了可驗證策略,這樣能夠有效避免服務器在遭受攻擊后,返回攻擊響應結果,從而防止客戶端隱私數據的泄露。

圖3 隱私保護度結果曲線
為了驗證本文方案在密文檢索時的抗去同步攻擊性能,在無攻擊與存在去同步化攻擊時,通過改變標簽數量,分別得到各方案檢索過程中的對比次數,實驗結果如圖4和圖5所示。

圖4 無攻擊情況時的對比次數曲線

圖5 去同步攻擊情況時的對比次數曲線
當無去同步化攻擊時,兩種對比方案在檢索過程中發生對比的次數受協議交互的頻繁度影響較大。因此,保持協議交互頻繁度不變時,其它兩種方案的對比次數隨著標簽數量的增加呈現直線上升。當存在去同步化攻擊時,兩種對比方案在標簽增加的初期,對比次數呈現快速增長,隨后逐漸趨于穩定增長。在同一標簽數量下,去同步化攻擊時的對比次數比無攻擊時有明顯增加,而本文檢索方案則沒有明顯區別。導致這種現象的原因是,設計的新協議采用了雙隨機數與校驗方式,占用的標簽資源有限,從而顯著控制了檢索過程中的對比次數。
為了提高數據庫密文檢索的快速性和安全性,本文設計了基于擴展關鍵詞的密文可驗證檢索模型。模型分為初始化模塊、加密模塊、查詢模塊,以及驗證解密模塊,針對每個模塊分別設計了相應的處理和優化。考慮到傳統方法在檢索過程中容易產生信息泄露,這里采用擴展關鍵詞陷門用以克服,根據陷門標識符判斷客戶端需要的驗證數據,同時利用擴展關鍵詞的加密集合與驗證集合實現密文的可驗證檢索。另外,考慮到去同步化攻擊會導致無密鑰響應,引發數據安全問題,設計了去同步化攻擊協議,引入了雙隨機數與雙邊校驗計算。通過檢索性能的仿真模擬,證明本文方案對于數據庫密文具有更高的檢索效率,顯著提高了檢索的安全性,能夠有效避免去同步化攻擊導致的無密鑰響應。