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