雲計算是一種通過網路以按需、易擴展的方式獲取所需服務的線上網路服務交付和使用模式,它是分散式運算的一種形式。 是網路上的服務以及提供這種服務的資料中心的軟硬體集合。 雲計算是平行計算、分散式運算和網格計算的演進。 雲計算的實現形式包括軟體即服務、效用計算、平臺即服務、基礎設施即服務。 目前雲計算已經有部分應用,如Google公司的GoogleDocs,另外微軟、Amazon也有類似的雲計算服務設施。
雲計算主要目標是提供高效的計算服務。 雲計算基礎設施之一是提供可靠、安全的資料存儲中心。 因此,存儲安全是雲計算領域的安全話題之一。 為解決資料隱私的保護問題,常見的方法是由使用者對資料進行加密,把加密後的密文資訊存儲在服務端。 當存儲在雲端的加密資料形成規模之後,對加密資料的檢索成為一種迫切需要解決的問題。
在加密資訊檢索的相關研究工作中,對加密資訊的檢索有單使用者線性搜索、基於關鍵字的公開金鑰搜索、安全索引等幾種演算法。 這幾種演算法可以快速地檢索出所需資訊,但其代價較高,不適用大規模資料檢索的情況,而且,在雲存儲中,檢索時相關的文檔較多,對其進行相關排序是進一步需要解決的問題,以上幾種演算法均不能解決問題。
通過保序加密可以利用文檔中的詞頻資訊對文檔依相關度進行排序,提高了檢索準確率和返回率。 然而在文檔中某些關鍵字出現的頻率非常高,指代性不強,這一類詞稱為常用詞,常用詞的存在歪曲了文檔和實際查詢相關度。 而準確反映文檔、查詢相關度的向量空間模型無法直接應用。 全同態加密提供可以對密文進行操作的加密演算法。 而且通過全同態加密,一方面可以保證密文資訊不被統計分析,另一方面可以對加密資訊進行加法和乘法運算,同時保持其對應明文的順序。
1.雲存儲應用中的加密存儲技術
大規模高性能存儲系統安全需求,特別是雲存儲應用中,可擴展和高性能的存儲安全技術,是推動網路環境下的存儲應用(如雲存儲應用)最根本的保證,已經成為當前網路存儲領域的研究熱點。 雲存儲應用中的存儲安全包括認證服務、資料加密存儲、安全管理、安全性記錄檔和審計。
存取控制服務實現使用者身份認證、授權,防止非法訪問和越權訪問。 主要功能包括:使用者只能對經管理員或檔擁有者授權的許可檔進行被許可的操作;管理員只能進行必要的管理操作,如使用者管理、資料備份、熱點物件遷移,而不能訪問使用者加密了的私有資料。
加密存儲是對指定的目錄和檔進行加密後保存,實現敏感性資料存儲和傳送過程中的機密性保護。 安全管理主要功能是使用者資訊和許可權的維護,如使用者帳戶註冊和登出等,授權使用者、緊急情況下對使用者許可權回收等。
安全性記錄檔和審計是記錄使用者和系統與安全相關的主要活動事件,為系統管理員監控系統和活動使用者提供必要的審計資訊。
對使用者來說,在上述4類存儲安全服務中,存儲加密服務尤為重要。 加密存儲是保證使用者私有資料在共用存儲平臺的機密性核心技術。
隨著存儲系統和存放裝置越來越網路化,存儲系統在保證敏感性資料機密性的同時,必須提供相應的加密資料共用技術。 保護使用者隱私性要求存儲安全建立在對存儲系統的信任基礎之上。 必須研究適用于網路存儲系統的加密存儲技術,提供端到端加密存儲技術及金鑰長期存儲和共用機制,以確保使用者資料的機密性和隱私性,提高金鑰存儲的安全性、分發的高效性及加密策略的靈活性。 在海量的加密資訊存儲中,加密檢索是實現資訊共用的主要手段,是加密存儲中必須解決的問題之一。
2.加密資訊檢索技術
對加密資訊檢索的研究始于2000年,Song等人提出加密資料搜索的實用演算法,Boneh等人提出基於關鍵字的公開金鑰加密演算法,Park等人提出安全索引搜索演算法。
2.1線性搜索演算法
線上性搜索演算法中,首先用對稱加密演算法對明文資訊加密。 對於每個關鍵字對應的密文資訊,生成一串長度小於密文資訊長度的偽隨機序列,並生成一由偽隨機序列及密文資訊確定的校驗序列。 偽隨機序列的長度與檢驗序列長度之和等於密文資訊的長度。 偽隨機序列及檢驗序列對密文資訊再次加密。 在搜索過程中,使用者提交明文資訊對應的密文資訊序列。 在伺服器端,密文資訊序列被線性地同每一段序列模2加。 如果得到的結果滿足校驗關係,那麼說明密文資訊序列出現,否則,說明密文資訊不存在。
線性搜索方法是一種一次一密的加密資訊檢索演算法,因此有極強的抵抗統計分析的能力。 但其有一個致命的缺點,即逐次匹配密文資訊,這使得這種檢索方法在大資料集的情況下難以應用。
2.2基於關鍵字的公開金鑰搜索
基於關鍵字的公開金鑰加密搜索演算法由Boneh等人提出,其目的是可以在使用者端存儲、計算資源不足的情況下,通過訪問遠端資料庫獲取資料資訊。 存儲、計算資源分佈具有不對稱性,即使用者的計算存儲能力不能即時滿足其需求。 另一方面使用者在移動情況下存儲、索引資料的需求也有增加,比如Email服務等。 在這種特定情況下,需要保護使用者的資料隱私。 加密資料有多個不同來源,針對這一問題的解決方法是加密演算法使用公開金鑰加密。
演算法的過程如下,首先生成公開金鑰、私密金鑰,然後對待存儲的明文關鍵字用公開金鑰進行加密,生成可搜索的密文資訊。
2.3安全索引
安全索引由Park等人提出,解決了簡單索引方式易受統計攻擊的問題。 其機制是每次加密所用的金鑰是事先生成的一組逆Hash序列,加密後的索引被放入布隆篩檢程式中。 當檢索的時候,首先用逆Hash序列金鑰生成多個陷門,然後進行布隆檢測。 對返回的密文文檔解密即可得到所需檢索的文檔。
針對有新使用者加入、舊使用者退出的多使用者加密資訊檢索,這是一種解決方法。 但其存在的缺陷是需要生成大量的金鑰序列,隨著檢索次數的增加,每多進行一次檢索,其計算複雜度均線性增加。 這在實際應用中很難被接受。
在以上提到的多種加密資訊檢索演算法中,所用的檢索模型都是布林模型,因而無法根據查詢與待檢索文檔的相關度進行排序操作。 在實際情況中,尤其是在資料規模較大的雲存儲應用中,包含某一查詢關鍵字的文檔可能有很多個,如何在多個可能相關的文檔中找出最相關的一個或若干個文檔是需要解決的問題。 對加密的文檔,是否可以應用成熟的向量空間模型,進而進行相關排序,是一個開放的問題。
2.4引入相關排序的加密搜索演算法
Swaminathan等人提出了保護隱私的排序搜索演算法。 在這一演算法中,每一文檔中關鍵字的詞頻都被保序加密演算法加密。 加密文檔被提交查詢給伺服器端後,首先計算檢索出含有關鍵詞密文的加密文檔;然後對用保序演算法加密的詞頻對應的密文資訊進行排序處理;最後把評價值高的加密文檔返回給使用者,由使用者對其進行解密。
這一種方法可以在給定多個可能相關文檔的情況下對加密文檔進行排序,進而把最可能相關的文檔返回給使用者。 但這一種演算法首先不適用於一個查詢包含多個查詢詞的情況,其次演算法只利用了文檔中的詞頻資訊,無法利用詞的逆文檔頻率,進而向量空間模型無法直接應用。 解決前一種問題的一種方法是用加法同態加密演算法對詞頻資訊進行加密處理。
3.一種基於全同態加密的檢索方法
在加密資訊檢索研究中,結果的排序是衡量檢索演算法性能的重要指標之一。 當前隨著雲計算技術的提倡和應用,加密文檔必將呈爆炸式增加。 排序的準確性成為對檢索系統性能的客觀要求,其主要目的是提高檢索系統服務品質和檢索效率。 分析現有的加密資訊檢索演算法發現,在保證查准和查全兩方面性能的同時,對排序問題以及準確性方面考慮不夠。
針對該問題,本文提出了一種面向雲存儲應用中的全同態加密的檢索方法。 全同態加密的檢索方法是採用資訊檢索中的向量空間模型,計算檢索出的文檔與待查詢資訊之間的相關度,對檢索詞詞頻和倒排文檔頻率進行統計,然後採用全同態方法對文檔進行加密並建立索引方法。 檢索後將加密文檔與索引項目密文一起上傳到伺服器端。
全同態加密檢索及排序過程如圖1所示。 提交檢索之前,同樣先對檢索語句進行分詞、詞幹化,得到關鍵字明文序列並對明文進行加密。 雲端伺服器對提交密文序列進行檢索時,提交加密後的檢索詞。
文檔由每個關鍵字的權重向量表示,權重是詞頻與倒排文檔頻率對數的乘積的歸一化。 對用全同態加密後的詞頻、倒排文檔頻率進行操作可以得到權重。
對於檢索詞採用同樣方法來描述,取兩者的內積即可得到兩者的相關度,然後根據大小進行排序,將有效排序後的文檔返回給使用者。 使用者得到加密文檔後,用私密金鑰對文檔解密得到原始文檔。
通過全同態加密演算法加密的明文資料可以在不恢復明文資訊的情況被有效檢索出來,即把最相關的文檔返回給使用者。 既保護了使用者的資料安全,又提高了檢索的性能。
4.結束語
本文分析了加密檢索技術在雲存儲應用中的重要意義,綜合分析了當前加密檢索和相關技術研究現狀和存在問題。 在此基礎上,本文提出了全同態加密檢索方法並簡要介紹全同態加密檢索方法的基本原理。 已有的實驗資料表明,全同態加密檢索方法與其他加密檢索演算法相比,能在一定程度上提高檢索效率。