李曉會,白雨靚,劉 峰
(1.遼寧工業大學電子與信息工程學院,遼寧 錦州 121001;2.中國科學院沈陽計算技術研究所,遼寧 沈陽 110168)
云存儲為用戶的文件持久化提供了便捷可靠的實現方案,為了保護數據隱私,存儲到云服務器的文件將會被轉換為密文形式[1],安全性提高的同時,也帶來了數據查詢困難的問題。如何精確高效查詢數據,同時又防止信息泄露[2-4],是當前研究面臨的主要難點。
文獻[5]針對密文查詢效率,設計了屬性基安全查詢方法,利用屬性基加密增強索引的描述性,該方法具有良好的隱私保障,但是查詢精度欠佳;文獻[6]引入合數階雙線性群對數據進行加密,并通過兩級系統完成數據的查詢任務,該方法著重優化查詢的安全性,雖然密文長度減小,但是兩次線性運算仍然無法保證多關鍵字查詢時的效率;文獻[7]針對關鍵字設計了相關度計算,根據排序情況截取相關度較好的文件作為查詢結果,同時采用虛假陷門對保護數據安全,該方法實現了關鍵字模糊查詢,但是由于沒有考慮關鍵字的特性,查詢結果精確度較差;文獻[8]針對語義與容錯問題,利用輸入關鍵字的模糊音與近義詞設計了模糊查詢,同時引入了偽隨機函數來管理私鑰,取得了較好的查詢精度與安全性。現有方法大多基于多關鍵字的模糊查詢進行相應的改進優化,但卻忽視了用戶輸入的多關鍵字彼此之間可能存在的主次和語法相關性,因此本文提出關鍵字權值計算,控制查詢的傾向。另外由于現有關鍵字擴展方法針對的是所有關鍵字,導致計算向量與構建時間大幅增加,查詢結果精確性能下降,為此,提出了核心詞擴展方法。另外,設計了子矩陣加密與索引動態更新,增加了查詢安全性的同時,也有效控制了算法復雜度。
如圖1所示,云存儲數據安全查詢系統通常可以劃分為三個部分,包括云服務器,數據用戶與授權用戶。數據用戶首先把需要上傳到云系統上的文件F=(f1,f2…fm)采取加密處理,得到結果C=(c1,c2…cm),然后從文件中抽取出包含的關鍵字W=(ω1,ω2,…ωm),并利用其建立陷門和索引,最終將其傳入服務器。服務器負責存儲文件,以及利用索引查詢出用戶密文。而授權用戶會通過請求取得陷門對應的密鑰,從而查詢出服務器中的密文。

圖1 云存儲數據安全查詢系統描述圖
用戶輸入的查詢關鍵字,在主次和語義方面通常具有一定的區別和聯系,也各自具有不同的查詢重點,因此,這里引入權值來描述每個關鍵字的重要程度。假定系統將任意關鍵字ω的原始重要程度默認是1,在輸入的其它關鍵字中,如果ω1其具有語法相關性,則ω此時的重要程度應該提升至1+r(·),增量表達式為

(1)
式中,d代表ω與ω1對應的語法距離,d1代表ω至公共節點的最小距離。假定系統輸入的原始關鍵字集合表示為Q={ω1,ω2,ωn},則查詢關鍵字的累計權值是n,于是其中任一關鍵字ω的權值表達式可以描述為

(2)
輸入的關鍵字集合中,每一個關鍵字都可能存在一個或多個近義詞,考慮到近義詞模糊 搜索可以增加查詢的完整性,這里設計擴展查詢方法,但是如果對所有關鍵字都進行近義詞的檢索,則會產生大量的擴展關鍵字,從而需要大量的陷門去處理,這無疑提高了查詢開銷,因此,這里首先確定關鍵字集合中的核心詞,然后針對核心詞采取近義詞擴展,降低查詢次數的同時,也避免了出現大量無用查詢結果。利用前述方法計算得到每個關鍵字的對應權值,即可表示各自在結果查詢時的重要程度,將權值進行排序,從中截取若干權值較大的作為查詢核心詞擴展。
在確定查詢核心詞后,對核心詞進行語義擴展,此時需要計算出擴展詞的對應權值。這里,采取語義相似度作為權值計算的基礎,即先要得到擴展的近義詞和核心詞之間的相似程度,影響相似度的主要因素為編輯距離和特征信息,因此相似度計算公式設計如下
fsim=adwi+(1-a)iωft,f
(3)
其中,dw′i表示擴展詞ω′i與ωi的編輯距離,iωft,f表示特征信息,它的計算公式為

(4)
式中ftt,f代表詞項特征信息量,通過文件特征計算得到,根據相似度公式,由于編輯距離dw′i的范圍不超過檢索出的文件數量,且iωft,f∈(0,1),所以,在計算相似度時,應該保證dw′i的權值高于iωft,f。
在采用關鍵字查詢云數據時,需要在向量空間進行實現,即將索引與查詢信息建立為空間向量,因此,這里針對索引向量與查詢向量依次進行處理。將查詢文檔集內所有文檔分別標記為具有nbit元素的向量Ii,n表示文檔中包含的關鍵字數量,如果Ii中的某關鍵字出現在字典內,就將Ii中該關鍵字設置成1,反之設置成0,從而將索引轉換為向量形式。當得到一組輸入關鍵字時,也將其標記為具有nbit元素的向量Q,如果其中某關鍵字出現在字典內,就將Q中該關鍵字設置成1,否則設置成0。據此,完成查詢輸入的空間向量轉換,通過空間向量的操作,完成輸入查詢與文件索引的相關處理。
當系統輸入查詢關鍵字后,要將每個關鍵字對應的權值追加在查詢向量內,同時,在追加過程中將關鍵字采取排序處理。考慮到關鍵字的重要程度,根據相關性來做序列重排,比較查詢向量,當其中的元素出現在字典時,把該元素對應位置的1改寫成它的權值,而通過查詢與索引內積計算可以得到累計權值,由于相關性分別受關鍵字權值與相似度影響,于是將相關性公式描述為

(5)
根據該公式,便可以計算得到查詢與索引之間的相關性。
在對加密的云存儲數據進行查詢時,引入子矩陣來產生密鑰,從而使系統能夠動態更新處理。首先利用最近加入字典里的Z個關鍵字組成z×z矩陣Mz和Mz′,同時組成zbit向量Sz;然后根據Mz、Mz′和Sz更新得到矩陣:
由于處理矩陣被切割成易于計算的子矩陣,在動態更新時,不僅能夠保證加密安全性,而且能夠改善加密處理的效率。以n維矩陣為例,它的復雜度是o(n2),當拆分成兩個n/2維子矩陣后,其復雜度是o(2*(n2/2))=o(n2/2),可見復雜度被壓縮了一半。
1)初始化密鑰:云存儲系統針對字典里的關鍵字矩陣與向量產生相應的密鑰,描述為K(M1,M2,S),這里的M1和M2均為可逆矩陣,且維度為(n+u+1)×(n+u+1),n代表關鍵字個數。


(6)


(7)
3)擴展查詢向量:針對系統輸入查詢向量Q={ω1,ω2…ωi},采取權值計算,同時篩選出其中的核心詞,搜索出其近義詞構建得到新查詢向量Q′={ω1,ω2,…ωi+z}。


(8)
于是,經過加密處理后的查詢向量表示為

(9)
這里,采用加密后的Enc_sk(Q)構建安全陷門。
5)查詢:查詢過程中,通過求解查詢與索引的內積,得到查詢的匹配程度,計算如下:

(10)
為了保證安全性,εi為隨機數,且服從正態分布,σi表示標準差,它用于調劑查詢精度與查詢安全。根據該公式,可以判定文件與查詢關鍵字的匹配性,從而完成查詢任務。
仿真采用Enron數據集作為查詢文件集,它具有的文件數量達到了11008個,并基于Java與大數據處理框架的Storn實現安全查詢算法和功能。為了有效驗證本文方法的性能,引入文獻[8]中的關鍵字模糊查詢作為對比,分別從查詢精度,安全性,以及時間效率三方面進行仿真與結果分析。
查詢精度是衡量查詢性能的首要指標,因此首先通過仿真驗證本文方法的查詢精確度。假定以Pk代表查詢精度,則它的計算公式為
PK=k′/k
(11)
其中,k′為查詢結果里的正確文件量,k為云存儲系統中的全部文件量。通過仿真,得到查詢精度與文件規模之間的關系,如圖2所示。根據結果曲線可知,本文方法的查詢精度基本不受文件規模的影響,而且查詢精度顯著高于對比方法,始終在90%上下輕微波動。這是由于方法在查詢過程中,采用了多關鍵字權值技術,通過權值確定核心詞,并對其進行擴展,合理的分配了各關鍵字對查詢結果的影響程度;同時還采用了匹配程度計算,通過該計算中的σ來調劑查詢精度,當合理降低σ值時,即可避免精度受干擾。

圖2 查詢精度實驗結果曲線


(12)


圖3 查詢安全性實驗曲線
根據圖3結果分析可知,隨著文件規模的增加,各方法的安全性都受到相應的影響,但是本文方法的受影響程度最小,安全性始終保持最好,且下降很慢。其原因是由于加密過程中設計了匹配度計算,通過調節σ值,可以有效保護排序信息,而且設計了子矩陣拆分與動態索引更新,提高了加密處理速度,也使得索引能夠符合各種情況的隱私需求。
為了驗證本文方法對于云數據查詢的高效性,在保證字典參數N=5000不變的前提下,首先只改變云存儲文件規模的大小,仿真得到查詢時間與文件數量之間的關系,如圖4所示。根據實驗曲線可知,各方法對于云數據的安全查詢效率均受云存儲數文件數量的多少影響,但是在同一文件規模下,本文方法的執行時間要優于對比方法。導致該結果的原因是:各方法都需要對文件建立索引,而文件規模的增加導致索引向量的增加,算法復雜度隨之增加,但是由于本文方法提出了核心詞擴展,無需像對比方法一樣搜索出所有關鍵字的近義詞,大幅度節省了查詢時間;另外在查詢加密的過程中設計了子矩陣拆分,直接將原始矩陣加密處理的復雜度降低了一半,從而有效提高了查詢效率。

圖4 查詢時間與文件數量之間的關系曲線
在只改變查詢關鍵字數量的情況下,通過仿真得到查詢時間與關鍵字數量之間的關系,如表1所示。根據表中結果數據可知,各方法對于云數據的查詢效率基本不受查詢關鍵字數量的影響,但是本文方法的執行時間具有明顯優勢。導致該結果的原因是:在查詢過程中,各方法都是基于向量內積計算,由于關鍵字數量的改變并不影響向量維度,所以不會影響到查詢執行的時間。

表1 查詢時間與關鍵字數量之間的關系
為了提高云存儲數據的查詢性能,基于現有研究結果及存在的問題,提出并設計了多關鍵字擴展權值安全查詢方法。考慮到用戶輸入的多關鍵字可能存在的主次傾向和語義聯系,計算出各關鍵字的相應權值,并基于權值搜索出其中的核心詞,對核心詞采取語義擴展,增加搜索范圍的同時,也避免了對所有關鍵字擴展可能出現的高負載。在加密處理時,設計了子矩陣拆分方法計算密鑰,并引入索引動態更新機制,提高查詢安全性的同時也有利于查詢的效率。通過仿真結果,表明多關鍵字擴展權值查詢方法能夠有效提高云加密數據的查詢精度與查詢效率,同時顯著改善隱私數據查詢的安全性。