王文濤, 馬永東, 王銀款
(1.東華大學 計算機科學與技術學院, 上海 201620; 2.上海航天控制技術研究所, 上海 201109)
目前,云存儲的廣泛應用給互聯網用戶提供了靈活的數據外包服務.但是,將數據外包給云服務器,數據擁有者則會失去對數據的絕對控制權,而云服務器可能也會受到數據泄漏及硬件故障等威脅[1].為了數據的安全,加密技術得到廣泛使用:一方面,加密數據使數據得到了保護,但另一方面也給數據搜索帶來了挑戰(zhàn).為了解決這個問題,研究人員提出了一系列相關解決方案[2-11].雖然這些方案提供了不同功能的搜索加密方案,但仍存在一定的局限性.首先,現有的可搜索加密方案中,大多數方案沒有考慮到文本提取中關鍵詞的重要性,都只是將關鍵詞進行簡單提取,并沒有考慮不同關鍵詞在文本中的重要性也是不同的.其次,部分方案僅考慮了關鍵詞詞頻關系,沒有考慮到不同主題下關鍵詞的重要性也是不同的.基于此,本研究提出了提高檢索效率的多關鍵詞排序搜索方案:首先,給出了基于主題模型的關鍵詞提取算法以增加檢索的準確性,該算法基于文檔關鍵詞建立主題模型,得出文檔主題;其次,利用TextRank算法[12-13]計算每個關鍵詞在不同主題下的權重值,并根據文檔主題分布,得到最終關鍵詞權重排序,選出若干關鍵詞作為文檔的關鍵詞;為了解決關鍵詞同義關系,采用Stemming算法[14]獲取關鍵詞的詞根,還可以查詢具有相同詞根的關鍵詞.通過實驗測試結果表明,本研究提出的方案比相關文獻中現有的方案具有更高的效率.
本研究的模型系統(tǒng)基于文獻[7]建立(見圖1),主要分為3個主體:數據擁有者、搜索用戶和云服務器.其中,數據擁有者首先將文檔集合以加密的形式外包給云服務器,為了便于對密文進行搜索,在外包之前對文檔進行關鍵詞提取,并建立倒排索引,然后將倒排索引加密上傳至云服務器.為了下載感興趣的文件,搜索用戶將感興趣的查詢關鍵詞進行加密,并將加密查詢發(fā)送給云服務器.云服務器通過計算加密查詢和加密倒排索引之間的相關性結果來搜索加密文檔,然后將前(top-k)個密文文檔返回給搜索用戶.最后,搜索用戶使用密鑰對密文文檔進行解密.此過程中,云服務器不知道相關查詢關鍵詞的任何敏感信息或文檔內容.
圖1系統(tǒng)模型示意圖
本研究同樣利用文獻[7]的威脅模型,即假設云服務器是“誠實且好奇的”,它會“誠實地”根據指定協(xié)議存儲數據,但又對存儲的數據“感興趣”,并通過推斷或分析來獲取數據信息.同時,本模型主要針對兩種不同攻擊能力的威脅.
1)已知密文模型.該模型中,假設云服務器僅知道數據擁有者上傳的加密文檔集C和安全索引I.
2)已知背景模型.云服務器可以知道比已知密文模型更多的信息,例如陷門的相互關系和其他統(tǒng)計信息等.云服務器可以通過規(guī)模分析來推斷關鍵詞的特定信息,進而識別出查詢中的關鍵詞.
在方案中,本研究應用如下相關概念:
1)隱含狄利克雷分布(Latent dirichlet allocation,LDA)主題模型.該模型是一種離散數據集上的完全生成概率模型[12],其思路是:假設數據集存在K個獨立的隱含主題,在LDA主題模型中,每個文檔d的關鍵詞w通過文檔主題分布θ(d)采樣生成主題z,然后從以主題z為特征的關鍵詞分布φ(z)中采樣生成關鍵詞w,其中φ(d)和φ(z)分別由狄利克雷分布α和β生成,則文檔d中隨機變量θ、z和w的聯合分布為,
(1)
2)TextRank算法.該算法是一種無監(jiān)督的機器學習算法,使用基于圖的排序方法,其中每個單詞表示頂點,而加權邊表示頂點之間的相似度[13].TextRank算法完全基于單詞出現頻率,并且不需要任何先前的語法知識.
3)Stemming算法.該算法是語言規(guī)范化的過程,其中詞的變體形式簡化為通用形式[14].例如,詞干分析器基于詞干“search”識別“searchable”和“searched”,基于詞干“fish”識別“fisher”和“fished”等.
為區(qū)分文檔中關鍵詞之間的重要性,本研究提出了一種基于文本主題的關鍵詞提取算法:先將傳統(tǒng)的TextRank分解為不同主題下的多個TextRank,并根據TextRank算法獲取不同主題下的關鍵詞的權值;然后根據文檔主題分布進一步提取關鍵詞.算法主要包括:構建主題解析器以獲取關鍵詞與文檔的主題;執(zhí)行算法來提取關鍵詞.
2.1.1 構建主題解析器.
本研究采用LDA主題模型算法從文檔集中獲取關鍵詞主題,其能夠獲得每個關鍵詞w的主題分布.關鍵詞的主題分布將用于關鍵詞提取,也用于整合不同主題下的關鍵詞.
2.1.2 基于主題模型的關鍵詞提取.
基于主題模型的關鍵詞提取的流程包括三個部分.
1)根據文檔中關鍵詞之間的共現關系來構造關鍵詞圖.文檔被看作一個關鍵詞序列,而邊的權重被設定為關鍵詞之間在長度為K的滑動窗口中的共現數.G=(V,E)表示文檔的圖結構,其中,頂點表示為V={w1,w2,…,wn},邊(wi,wj)表示從關鍵詞wi到關鍵詞wj的連接,邊的權重表示為e(wi,wj),定點wi的出度表示O(wi)=∑j:wi→wje(wi,wj).
2)利用TextRank算法來計算不同主題下的關鍵詞權重值.TextRank算法由PageRank算法改進而來,主要考慮關鍵詞權重.在TextRank算法中,關鍵詞wi的權重W(wi)表示為,
(2)
其中,d表示范圍在0~1間的阻尼系數.
式(2)表示每個節(jié)點有d的概率跳轉到該頂點,有(1-d)的概率跳轉到其他頂點.(1-d)表示隨機跳轉,若值為常數1,則表示頂點wj等可能地跳轉到其他頂點.而本研究所提出的基于主題的關鍵詞提取算法視隨機跳轉不是等可能的,這是因為在不同主題下,關鍵詞的TextRank權重可能會更加偏好于對應的主題.因此,對于特定主題,本研究提出了改進的TextRank算法,設置隨機跳轉概率為特定主題偏好值Pz(wk),其中∑wk∈wPz(wk)=1.此時,與主題密切相關的關鍵詞將賦予更大的權值.主題z中,特定主題的關鍵詞wi的權重表示為,
W(wi)=(1-d)Pz(wk)+
(3)
3)通過文檔主題分布,對不同主題下的關鍵詞進行整合排序,并選出權重值最高的若干關鍵詞作為文檔關鍵詞.
本研究在文獻[7]的基礎上提出了改進的基于主題模型的多關鍵詞排序搜索方案,其關鍵函數介紹如下:
1)KeyExtend(F).給定文檔集F,對文檔集進行分詞,并使用Porter詞干算法將具有相同詞根的關鍵詞表示為同一形式,利用關鍵詞提取算法選出文檔關鍵詞w,并構成關鍵詞集合W={w1,w2,…,wn};然后,將關鍵詞集合轉換成(n+u+1)維的文檔倒排索引向量I,其中對應維上的值為關鍵詞權重W,u是插入的虛擬關鍵詞的數量,(n+u+1)維設置為1.
2)KeyGen(n).數據所有者隨機生成安全密鑰SK(M1,M2,S),其中,M1,M2∈R(n+u+1)×(n+u+1)為可逆矩陣,S∈{0,1}n+u+1為一個向量.
4)BuildIndexTree(I).在搜索過程中,云服務器必須搜索數據集的每個文檔索引,如果數據集非常大,則檢索效率會很低.本研究采用Xia等[15]提出的平衡二叉樹來構建索引結構.在索引結構構建過程中,首先將索引生成樹的葉子節(jié)點,然后根據這些葉子節(jié)點生成樹的中間節(jié)點平衡二叉樹,具體如圖2所示.
圖2平衡二叉樹結構示意圖
6)Query(I,Q).根據構建的索引樹,云服務器計算索引向量和安全陷門的內積來獲得最終的查詢相關性結果,
Ri=Il·Q
=I′Q′+I″Q″
=(Ii,εi,1)(xQ,x,y)
(4)
最后,返回相關性結果前(top-k)的加密文檔給搜索用戶,用戶根據密鑰對密文文檔進行解密.
在將數據集外包到云服務器之前,本研究采用了AES對稱加密算法[16]對數據集進行加密.由于AES對稱加密算法是安全的,因此數據的安全性得到了保證.
雖然云服務器無法恢復查詢關鍵詞的內容,但是陷門的可連接性可能導致隱私泄露.例如,如果陷門是確定性的,攻擊者可以通過多次搜索相同的關鍵詞來推斷出關鍵詞之間的關系.對此,本研究通過在向量分割過程中引入隨機數的方法,使得即使對于相同的查詢也會生成不同的加密查詢向量,此外,可以分別將隨機數εi引入到索引向量中及將隨機數x和y引入到查詢向量中,最終的查詢結果也會不同,由此來實現陷門的不可連接性.
在實驗測試中,本研究提出的方法在AMD5 CPU 2.0 GHz的Windows 10操作系統(tǒng)上應用Java語言得以實現.同時,本研究還評估了本方法的性能.測試選取的真實數據集為Enron email dataset[17],其包含150個用戶的數據.
(5)
搜索時間在文檔集中的變化趨勢如圖4所示.由圖4(a)可知,文檔數量的變化并沒有對本方案產生較大影響,但隨著文檔數量的增加,Cao方案的搜索時間呈線性趨勢.圖4(b)表示搜索時間隨查詢關鍵詞不同而變化的趨勢圖.無論查詢關鍵詞包含多少關鍵詞,它們都在同個字典中,查詢時間不會隨著查詢關鍵詞數量的增加而增加.但是,同Cao方案相比,本方案采用了平衡二叉樹的索引結構,因此具有更高的搜索效率.
圖3準確性和隱私性
圖4搜索效率
本研究提出了一種安全、高效的多關鍵詞排序搜索方案,設計了基于主題的關鍵詞提取算法,即將文檔關鍵詞賦予不同的權重,在不失隱私性的情況下,提高了查詢結果的準確性.同時,本研究通過實驗測試證明了本方案的安全性和有效性.下一步的工作將通過考慮搜索關鍵詞的語義關系來進一步提高搜索的準確性.