左 毅 陳 勇 姚 雪
(1. 重慶科技學(xué)院 信息化辦公室, 重慶 401331; 2. 重慶師范大學(xué) 計算機與信息科學(xué)學(xué)院, 重慶 401331; 3.重慶科技學(xué)院 數(shù)理與大數(shù)據(jù)學(xué)院, 重慶 401331)
安全高效的云存儲服務(wù)始終是云計算研究的核心問題之一[1]。目前,在云服務(wù)器不可信的情況下,支持關(guān)鍵詞搜索的公鑰加密方案研究已成為熱點。通常,可搜索加密方案的基本策略是:發(fā)送者將加密數(shù)據(jù)和關(guān)鍵詞上傳至云服務(wù)器,數(shù)據(jù)用戶發(fā)送一個由數(shù)據(jù)擁有者授權(quán)的關(guān)鍵詞陷門給云服務(wù)器,云服務(wù)器執(zhí)行關(guān)鍵詞密文和搜索陷門的匹配算法。若云服務(wù)器判斷密文和陷門相互匹配,則將密文數(shù)據(jù)發(fā)送給數(shù)據(jù)用戶,其間需確保云服務(wù)器無法獲得關(guān)鍵詞和明文數(shù)據(jù)的任何信息。
Song等人首次提出了一個具體的可搜索加密方案(BOOP-PEKS)[2]。其中,云服務(wù)器利用陷門信息與數(shù)據(jù)庫中所有密文關(guān)鍵詞逐一進行匹配比對:若匹配成功,則表明檢索到關(guān)鍵詞,隨即將目標文件返回給數(shù)據(jù)使用者;若匹配不成功,則表明服務(wù)器上未存儲相關(guān)文件。Golle等人討論了如何將關(guān)鍵詞連接后進行搜索,并提出支持多關(guān)鍵詞連接的可搜索加密方案[3]。Ballard提出利用雙線性映射、支持關(guān)鍵詞連接的可搜索加密方案,其中關(guān)鍵詞長度是固定的[4]。Boneh考慮了郵件加密環(huán)境,提出單關(guān)鍵詞加密搜索方案[5]。李真等人在半誠實的云服務(wù)器環(huán)境下弱化第三方的功能,利用雙線性對的性質(zhì),在不增加額外交互的前提下解決了加密文檔的密鑰分發(fā)問題[8]。Miao等人提出了一種多關(guān)鍵詞搜索加密方案,該方案支持多關(guān)鍵詞搜索,同時具有密文的完整性驗證能力[9]。郭麗峰等人引入了發(fā)送者和服務(wù)器的身份驗證環(huán)節(jié),用于抵制離線關(guān)鍵詞的猜測攻擊[10]。張鍵紅等人提出可驗證的多關(guān)鍵詞搜索加密方案,在支持多關(guān)鍵詞搜索的同時,保證了文件的前向安全性[11]。
在現(xiàn)有各方案的基礎(chǔ)上,我們設(shè)計了一種面向云存儲的多關(guān)鍵詞可驗證搜索加密方案。本方案效率較高,且支持對關(guān)鍵詞和文檔的增減。
在云環(huán)境下,系統(tǒng)模型中主要包含以下4個實體部分:參數(shù)生成和審計中心;云服務(wù)器;數(shù)據(jù)擁有者;數(shù)據(jù)用戶。系統(tǒng)模型結(jié)構(gòu)如圖1所示。參數(shù)生成和審計中心是誠實的,其功能是初始化系統(tǒng)參數(shù)以及對返回的搜索文檔進行驗證。云服務(wù)器可以存儲加密文檔和加密索引,同時對數(shù)據(jù)用戶提交的查詢請求予以響應(yīng),通過安全的匹配查詢驗證后返回查詢結(jié)果,并提交給審計中心,再經(jīng)驗證后返回給數(shù)據(jù)用戶。數(shù)據(jù)擁有者負責(zé)為將要上傳的文檔選取對應(yīng)的關(guān)鍵詞,生成加密文檔和文檔關(guān)鍵詞索引并將其打包后發(fā)送到云服務(wù)器,同時為數(shù)據(jù)用戶提供查詢授權(quán)令牌的功能。數(shù)據(jù)用戶,可以向數(shù)據(jù)擁有者索要關(guān)鍵詞,生成搜索令牌,并將令牌提交給云服務(wù)器,最終得到驗證后的搜索結(jié)果。
圖1 系統(tǒng)模型結(jié)構(gòu)
模型中基本符號的定義如表1所示。
表1 模型基本符號
設(shè)G1、G2是階為素數(shù)P的乘法循環(huán)群,g是G1的生成元,則雙線性映射e:G1×G2→G2具有以下3個條性質(zhì):
(1) 雙線性。對于任意元素,u,v∈G1,且a,b∈Zp,有e(ua,vb)=e(u,v)ab。
(2) 非退化性。e(g,g)≠1 。
(3) 可計算性。對于任意元素,u、v∈G1,e(u,v)的計算很簡單。
輸入一個安全參數(shù)k,調(diào)用初始化函數(shù)setup(k)算法,生成雙線性對加密系統(tǒng)中的參數(shù),如P、G1、g1、G2、g2、e等。P是一個大系數(shù),e為雙線性映射(e:G1×G2→G2),g1,g2為循環(huán)群G1、G2的生成元。在方案的后續(xù)設(shè)計中,需要用到2個哈希函數(shù)(H1、H2):
H1:{0,1}*→G1
H2:{0,1}*→Zp
系統(tǒng)的公開參數(shù)有:Pa={P,G1,g1,G2,g2,e,H1,H2}。
(1) 數(shù)據(jù)擁有者的密鑰對。隨機選擇d∈Zp為私鑰,對應(yīng)的公鑰為:
(1)
(2) 驗證用的密鑰對。隨機選擇s∈Zp為私鑰,對應(yīng)的公鑰為:
(2)
(3) 云服務(wù)器方的密鑰對。隨機選擇c∈Zp為私鑰,對應(yīng)的公鑰為:
(3)
這里,PKd、PKc、PKs是需要公開的公鑰,私鑰d、c、s歸各方私密保存。
數(shù)據(jù)擁有者利用一個可靠的常用對稱加密算法E(ek,F(xiàn)i),i∈{1,…,n},計算每個文件Fi的密文Ci:
Ci=E(ek,F(xiàn)i)
(4)
同時,利用文件標簽和哈希函數(shù)指針計算每個文件驗證所所需的簽名:
(5)
這里FIDi為Fi的文件標簽,H1(FIDi)表示針對文件標簽的H1哈希函數(shù),H2(Ci)表示針對密文的H2哈希函數(shù)。
每個文件都有m個關(guān)鍵詞,即W={w1,…,wm};因此,以數(shù)據(jù)擁有者的私鑰d為種子,利用哈希函數(shù)H1生成關(guān)鍵詞搜索索引:
(6)
(7)
式中:i=1,2,…,n;j=1,2,…,m。
文件Fj的總體索引為:
(8)
全部文件的索引集合則為:
I={I1,…,Ij,…,In}
(9)
數(shù)據(jù)擁有者將生成的全部文檔搜索信息包(C,SIG,I)上傳到云服務(wù)器端,存儲加密的文件,并支持多關(guān)鍵詞的搜索和密文驗證。
針對當(dāng)前搜索產(chǎn)生一個隨機數(shù)α,α∈Zp,生成令牌:
(10)
(11)
得到令牌T,T=(t0,t1,…,ti,…,tm);最后,由數(shù)據(jù)擁有者將令牌T發(fā)送給用戶。
用戶得到搜索令牌T后即可上傳給云服務(wù)器,然后運行文檔進行搜索,進而獲得關(guān)鍵的文檔密文。云服務(wù)器對令牌進行搜索運算:
輸入令牌(T,L),搜索信息包(C,Sig,I),公開參數(shù)為Pa;
輸出搜索到的密文集合C′和文件標準參數(shù)PID′,算法如下:
C′=Φ;PID′=Φ
forj=1 tondo
then
C′=C′∪{Cj}
FID′=FID′∪{FIDj}
end if
end for
return C′ and FID′
審計方對云服務(wù)器準備返回給用戶的密文進行審核,驗證其是否被篡改,以保證搜索結(jié)果的可靠性[11]。其驗證過程如下:
(1) 審計方選擇一組隨機數(shù){y1,…,yr}發(fā)給云服務(wù)器,其中r為C′集合中元素的個數(shù) 。
(2) 云服務(wù)器將計算的φ值返回給審計者,其算式如式(12):
(12)
(3) 審計者對返回的φ值進行驗證,其算式如式(13):
(13)
若式(13)成立,則表明文檔是可靠的。最后,將沒有被篡改的加密文檔返回給數(shù)據(jù)用戶。
若模型的各參與方遵循方案設(shè)計的所有環(huán)節(jié),那么搜索算法就可以充分保證已獲正確授權(quán)用戶的權(quán)益,為其提供相應(yīng)關(guān)鍵詞的正確密文。這是因為,用令牌T對加密文件Fi進行搜索,進行了以下匹配對比:
(14)
(15)
該方案的安全性依賴于離散對數(shù)的安全性,在文件索引中借助數(shù)據(jù)擁有者的私鑰構(gòu)建索引,以保證索引不可偽造。同時,在搜索令牌的生成當(dāng)中,即使檢測的關(guān)鍵詞相同,若隨機參數(shù)不同其每次搜索的令牌也會不同,因此云服務(wù)器方不能猜測出關(guān)鍵詞的內(nèi)容。此完整性驗證方案的算法基于Shacham 和 Waters 的遠程數(shù)據(jù)完整驗證方案[6],在安全模型下被證明可以抵制云服務(wù)器的篡改和刪除攻擊。
在生成加密文件、關(guān)鍵詞搜索索引以及搜索關(guān)鍵詞的索引令牌時,文件和關(guān)鍵詞的編號均可以方便地加以擴展。其中,只是增加了檢索結(jié)果的數(shù)量,而不會影響已有的檢索結(jié)果。
經(jīng)過本次研究,構(gòu)造了一個支持加密文檔驗證的多關(guān)鍵詞搜索公鑰加密方案。本方案具有較高的安全性,能夠抵制離線狀態(tài)下對關(guān)鍵詞的猜測和攻擊,且對文檔和關(guān)鍵詞的修改具有良好的適應(yīng)性。不足之處是,在搜索中需要提供關(guān)鍵詞的位置信息,這給系統(tǒng)的安全性帶來隱患。如果能夠構(gòu)造一個無需關(guān)鍵詞位置信息的方案,則更符合實際應(yīng)用。一種可行的方案是,利用布隆過濾器[12]來實現(xiàn)位置信息的傳遞。這一點將在后期研究中予以實現(xiàn)。