李西明 陶汝裕 粟 晨 黃 瓊 黃欣沂
1(華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院 廣州 510642)2(福建師范大學(xué)數(shù)學(xué)與信息學(xué)院 福州 350117)
隨著云計(jì)算的快速發(fā)展,數(shù)據(jù)外包在數(shù)據(jù)存儲(chǔ)市場的應(yīng)用也越來越廣泛.通常情況下,用戶會(huì)選擇將數(shù)據(jù)外包給云服務(wù)器存儲(chǔ),同時(shí)又不公開數(shù)據(jù).為了保護(hù)數(shù)據(jù)和隱私,數(shù)據(jù)擁有者會(huì)先選擇加密數(shù)據(jù),然后將加密數(shù)據(jù)上傳到云端.然而當(dāng)用戶搜索關(guān)鍵詞獲得了一系列包含關(guān)鍵詞的文檔都太大時(shí)并且用戶只想查詢這些文檔中的一部分內(nèi)容時(shí),檢索就顯得十分麻煩,例如在線DNA測序等.最簡單的解決方法是將所有加密文檔下載到客戶端解密并檢索.但是,這不僅會(huì)造成巨大的網(wǎng)絡(luò)開銷,還會(huì)帶來不必要的計(jì)算成本.如果服務(wù)器不可信,那么用戶數(shù)據(jù)的安全性就很難得到保護(hù).因此,可搜索的對(duì)稱加密方案(searchable symmetric encryption, SSE)迅速成為研究者們研究的熱點(diǎn).
關(guān)鍵詞搜索技術(shù)通常分為精確關(guān)鍵詞搜索和模糊關(guān)鍵詞搜索.但是目前精確關(guān)鍵詞搜索存在很大的問題.當(dāng)用戶描述不準(zhǔn)確或輸入錯(cuò)誤時(shí),精確關(guān)鍵詞搜索可能無法找到用戶真正需要的文件.因?yàn)槟:阉骷夹g(shù)的引入可以靈活地找到與用戶輸入的搜索詞相關(guān)的文件,所以模糊關(guān)鍵詞搜索技術(shù)迅速發(fā)展了起來.但是由于數(shù)據(jù)是以密文形式存儲(chǔ)的,因此明文中使用的模糊搜索方法不能直接應(yīng)用于密文搜索.從而模糊可搜索的加密機(jī)制是研究者重點(diǎn)研究的方向之一.
近年來,研究人員針對(duì)不同的問題提出了許多可搜索的對(duì)稱加密方案(SSE).Popa等人[1]在2011年SOSP會(huì)議上首次提出CryptDB,它可以在加密文本上執(zhí)行搜索操作,如MySQL中的LIKE等操作,并且提供了很好的安全性保證.陳萍等人[2]首次提出了可以在密文上執(zhí)行所有SQL語句的CryptDB系統(tǒng).CryptDB是以第三方中間代理人的形式來對(duì)數(shù)據(jù)庫提供安全高效的加密和解密方案.其主要核心分為3個(gè)模塊:加密策略、洋蔥加密模型和密鑰鏈管理模塊.但CryptDB存在著一些明顯的缺陷,例如,當(dāng)前的同態(tài)加密只支持整數(shù)型運(yùn)算不支持浮點(diǎn)型運(yùn)算、不能做到對(duì)原始數(shù)據(jù)庫不作任何修改.在文獻(xiàn)[3]中汪海偉等人提出一個(gè)可搜索數(shù)據(jù)庫加密系統(tǒng),解決了傳統(tǒng)的加密數(shù)據(jù)庫無法在保證數(shù)據(jù)安全性的同時(shí)實(shí)現(xiàn)執(zhí)行復(fù)雜的SQL語句并解決了文獻(xiàn)[1]中的缺陷.Cash等人提出了一種針對(duì)不同數(shù)據(jù)庫規(guī)模的安全有效的數(shù)據(jù)處理方案[4],特別是對(duì)于大型數(shù)據(jù)庫,它可以高效并秘密地搜索具有數(shù)百億記錄-關(guān)鍵詞對(duì)的加密的服務(wù)器數(shù)據(jù)庫.文獻(xiàn)[4]的基本構(gòu)造方案支持單個(gè)關(guān)鍵詞搜索,并提供漸近優(yōu)化的服務(wù)器索引大小、完全并行的搜索和最小的泄露,同時(shí)其所有方案和優(yōu)化都被證明是安全的,并且泄露給不可信服務(wù)器的信息被精確地量化.
一方面可搜索加密方案[1-4]側(cè)重于解決密文數(shù)據(jù)庫存儲(chǔ)以及查詢的問題.另一方面在密文文本中搜索實(shí)現(xiàn)文本文件的可搜索加密技術(shù)也是當(dāng)下研究的熱點(diǎn).當(dāng)服務(wù)器返回許多文檔到本地時(shí),用戶無法將每個(gè)匹配了關(guān)鍵詞的文檔都下載到客戶端以確定哪些文檔是需要的,尤其是查詢結(jié)果中存在許多大型文檔時(shí).這個(gè)問題是通常的SSE所不能解決的.此時(shí)子串可搜索對(duì)稱加密成為必要手段.在文獻(xiàn)[5]中Faber為了支持子串查詢需要構(gòu)建重疊k-gram的索引,但是這個(gè)方案需要大量的存儲(chǔ)開銷來存儲(chǔ)所有的k-gram,這顯然是不現(xiàn)實(shí)的.Chase等人在文獻(xiàn)[6]中使用后綴樹來構(gòu)建搜索框架.相比之下,后綴樹的數(shù)據(jù)結(jié)構(gòu)沒有固定的大小,最多達(dá)2n個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)存儲(chǔ)其邊、父節(jié)點(diǎn)和子節(jié)點(diǎn)的信息,從而增加了存儲(chǔ)需求.
傳統(tǒng)的精確關(guān)鍵詞加密搜索是不能容忍任何的拼寫錯(cuò)誤,否則將返回錯(cuò)誤的結(jié)果,這顯然不能滿足用戶的需求.Hu等人通過使用通配符來構(gòu)建模糊關(guān)鍵詞集的方法來實(shí)現(xiàn)加密搜索[7].Zhou等人使用了編輯距離(edit distance)來設(shè)計(jì)加密搜索方案[8],通過保存與關(guān)鍵詞在一定編輯距離內(nèi)的所有單詞來緩解這種情況.雖然Zhou等人的這種方法可以實(shí)現(xiàn)對(duì)關(guān)鍵詞的模糊搜索,但是需要的存儲(chǔ)開銷較大并且最終得到的搜索結(jié)果中存在大量的弱相關(guān)性文檔從而導(dǎo)致計(jì)算開銷和網(wǎng)絡(luò)開銷的增加.Zhang等人提出一種高效的模糊關(guān)鍵詞集構(gòu)建方法[9],它是基于gram來構(gòu)建模糊關(guān)鍵詞集,達(dá)到了較好的效果.
本文提出了一種基于Leontiadis等人[10]的靈活精度可控的可搜索對(duì)稱加密方案(flexible accuracy-controllable searchable symmetric encryption, FASSE),F(xiàn)ASSE方案支持靈活精度可控的加密搜索并且節(jié)省了大量的存儲(chǔ)開銷.FASSE考慮使用Leontiadis的方案為底層框架主要是因?yàn)槠浠诤缶Y數(shù)組的索引設(shè)計(jì),其所允許的最佳存儲(chǔ)成本是O(n),且在大小為n的字符串中具有小的隱藏因子.
相比許多基于關(guān)鍵詞集查詢的SSE方案,本文方案在4個(gè)方面有提高:
1) FASSE方案允許動(dòng)態(tài)發(fā)出可變大小的子字符串查詢,而無需事先定義固定的查詢大小.
2) FASSE方案通過搜索加密的文檔摘要的FM索引(abstract FM index),即AFM索引,解決了傳統(tǒng)的基于關(guān)鍵詞集查詢的SSE方案中可能會(huì)由于關(guān)鍵詞集創(chuàng)建的不友好從而導(dǎo)致沒有在關(guān)鍵詞集中查到任何記錄的問題;FM索引的結(jié)構(gòu)和使用詳見第2節(jié).
3) FASSE方案通過一次命中搜索、增強(qiáng)搜索和過濾搜索這3種搜索方法解決了在基于關(guān)鍵詞集合查詢的SSE中用戶得到許多低相關(guān)性文檔的問題.
4) 為了提升搜索的實(shí)用性,F(xiàn)ASSE方案通過調(diào)節(jié)在模糊搜索中的一些參數(shù)實(shí)現(xiàn)了靈活搜索精度可控的模糊增強(qiáng)搜索.
Burrows Wheeler Transform(BWT)轉(zhuǎn)換[11]將原始文本數(shù)據(jù)轉(zhuǎn)換為一個(gè)相似的文本,轉(zhuǎn)換后使得相同的字符位置連續(xù)或者相鄰,經(jīng)過BWT操作之后的文本數(shù)據(jù)可以使用其他編碼技術(shù)如Move-to-front transform和游程編碼進(jìn)行文本壓縮.
BWT有4個(gè)主要步驟:
1) 在原始字符串S=“banana”的末尾添加一個(gè)‘$’字符,令S=“banana$”;
2) 字符串S循環(huán)向左旋轉(zhuǎn)n次得到矩陣W′;
3) 按字典順序排列矩陣的每一行字符串以獲得新的矩陣W;
4) 分別取矩陣W的第1列和最后1列,并將它們定義為F和L列,把L列作為BWT(S)的結(jié)果.
算法1給出了BWT轉(zhuǎn)換的具體描述.值得注意的是BWT中有一個(gè)十分重要的屬性就是第i次出現(xiàn)在F列中的字符x是對(duì)應(yīng)于第i次出現(xiàn)在L列中的字符x,Burrows和Wheeler在文獻(xiàn)[11]中給出了證明.
算法1.BWT轉(zhuǎn)換算法.
輸入:字符串S;
輸出:轉(zhuǎn)換結(jié)果矩陣W.
l=S.length()+1;
S.append(‘$’);
i=0;
charW′[l][l];
S往左旋轉(zhuǎn)l次,每次的結(jié)果保存在W′的第i行中;
whilei W′[i++]=rotate(S,i); 將矩陣W′的每一行按照字典順序重新排列最終得到W; end while returnW=SortedW′. 字符串S的長度為n,那么S的后綴是suffix[i]=S[i,…,n-1].字符串S=“banana”,那么字符串S的后綴suffix[i]={“banana”,“anana”,“nana”,“ana”,“na”,“a”}.后綴數(shù)組SA是字符串S所有后綴按照字典順序排序后,每個(gè)后綴對(duì)應(yīng)于S中的位置的數(shù)組.S的后綴數(shù)組是SA[i]={5,3,1,0,4,2}.通常計(jì)算后綴數(shù)組SA的效率都比較低.例如樸素暴力窮舉算法的時(shí)間復(fù)雜度為O(n2logn),它把字符串所有的后綴全部都計(jì)算出來后依次去排序最終得到后綴數(shù)組SA,這種方法的效率是十分低效的.倍增法[12]的時(shí)間復(fù)雜度為O(nlogn),它是基于基數(shù)排序思想去計(jì)算后綴數(shù)組SA的.雖然倍增法已經(jīng)極大地縮短了計(jì)算后綴數(shù)組SA的時(shí)間,但是相對(duì)于在一個(gè)線性時(shí)間復(fù)雜度O(n)下快速計(jì)算后綴數(shù)組SA的算法,倍增法就失去了優(yōu)勢.Sanders等人提供了一個(gè)非常有效的skew算法[13].skew算法是根據(jù)原始字符串S的所有后綴的位置pos遞歸地將其分成3組:posmodh{1,2,3},最后合并結(jié)果求出后綴數(shù)組SA. LF映射[11]是通過BWT(S)后得到矩陣W中的F列字符串和L列字符串多次反復(fù)迭代最終恢復(fù)原始字符串S的過程.它等同于在原始字符串S中搜索子字符串T,其中S=T.LF映射如算法2所示. 算法2.LF映射算法. 輸入:矩陣第1列F、矩陣最后1列L; 輸出:原始字符串S. D=0; i=0; 執(zhí)行算法1得到轉(zhuǎn)換結(jié)果矩陣W; 判斷W的第F列和第L行; 在F列中查找排名等于r的L[i]的位置; whileL[i]≠‘$’ do D.push(L[i]); r=rank(L[i]);*L[i]在L列中的排名* i=find(F[L[i]],r); end while whileD≠‘0’ do S=S+D.POP; end while returnS. 然而,實(shí)際上方案可以通過SubLF映射來部分恢復(fù)原始字符串S從而達(dá)到實(shí)現(xiàn)子串匹配的目的.它等同于在原始字符串S中搜索子字符串T,其中S≠T.這也是搜索子字符串的重要手段.SubLF映射的具體步驟如算法3所示. 算法3.SubLF映射算法. 輸入:矩陣第1列F、矩陣最后1列L、字符串m; 輸出:字符串m在串S中的位置pos. l=m.length(); flag=0; num=rank_max(m[l-1]);*查找m[l-1]的最大排名* fori=0 tonumdo forj=0 toldo ifa≠⊥ a=find(F[m[l-j-1]],i); end if ifa==⊥ orL[a]≠m[l-j-2] flag=0,pos=null; end if returnpos; end for end for flag=1; r=rank(L[a]); a=find(F[L[a]],r); ifflag==1 pos.append(a); end if returnpos. FM索引是由3列數(shù)組組成.FM索引的第1列F列是矩陣W的第1列,第2列L列是矩陣W的最后1列,最后1列是原始字符串S的后綴數(shù)組SA.為了支持LF映射,F(xiàn)列和L列中每個(gè)字符的唯一排名也都需要存儲(chǔ)在rF和rL中,其中rF和rL均來自于rank〈rF,rL〉二元組.最終通過LF映射利用公式[14]BWT(S)[i]=L[i]=S[SA[i]],可以計(jì)算出后綴數(shù)組SA來完成子串查詢.FASSE方案利用文獻(xiàn)[10]中加密的FM索引的方法來構(gòu)造整個(gè)方案.其中FASSE方案中的加密方法包括對(duì)稱加密方案SKE={Gen,Enc,Dec}和輕量級(jí)加密原語:偽隨機(jī)函數(shù)PRFFkf(·),偽隨機(jī)置換PRPΠkπ(·). 加密的FM索引結(jié)構(gòu)如圖1所示.其中L列和F列的值為Fkf(cLj)⊕Fkf(rFj‖cFj)‖F(xiàn)kf(rLj‖cLj)和Fkf(cFj)⊕Fkf(rFj‖cFj).后綴數(shù)組SA為SKE.Enc(ke,SA[j]),最后執(zhí)行PRPΠkπ(FM)打亂整個(gè)FM索引的順序.其中kf,kl是偽隨機(jī)函數(shù)密鑰;kπ是偽隨機(jī)置換密鑰;ke是對(duì)稱加密密鑰.加密的FM索引執(zhí)行LF映射算法會(huì)比明文FM索引執(zhí)行LF映射算法要復(fù)雜.具體做法是:先生成字符c的搜索令牌Fkf(c),計(jì)算Fkf(c)⊕Fkl(c),通過查找對(duì)應(yīng)位置的LLset異或解密相應(yīng)的LL得到字符c對(duì)應(yīng)的二元組lc=〈nptr,addr〉,其中nptr是下一個(gè)lc的位置,addr是字符c在F列中的位置.在F[addr]上執(zhí)行Fkf(c)⊕Fkf(cFj)⊕Fkf(rFj‖cFj)異或運(yùn)算解密得到Fkf(rFj‖cFj)并且得到的Fkf(rFj‖cFj)可以在L列中執(zhí)行Fkf(rFj‖cFj)⊕Fkf(cLj)⊕Fkf(rFj‖cFj)異或解密得到Fkf(cLj),計(jì)算Fkf(cLj)⊕Fkf(rLj‖cLj),繼續(xù)比對(duì)F列中的Fkf(cFj)⊕Fkf(rFj‖cFj),經(jīng)過多輪循環(huán)后得到搜索結(jié)果,即加密的SA[j].最終使用ke解密得到真正的SA[j]. Fig. 1 Construction of an encrypted AFM圖1 加密的AFM的構(gòu)建 如圖2所示,F(xiàn)ASSE方案系統(tǒng)模型包含3個(gè)實(shí)體:云服務(wù)器、授權(quán)用戶和數(shù)據(jù)擁有者.數(shù)據(jù)擁有者使用任意關(guān)鍵詞提取算法對(duì)文檔集合D提取的關(guān)鍵詞KW.數(shù)據(jù)擁有者為每一個(gè)文檔生成唯一文檔標(biāo)示符id.加密的唯一文檔id得到唯一加密標(biāo)示符d.數(shù)據(jù)擁有者加密文檔標(biāo)題TIT得到ETIT且為每一個(gè)文檔構(gòu)造出安全加密的EAFM索引.最后將加密文檔集ED及EAFM索引上傳至云服務(wù)器.云服務(wù)器保存ED和EAFM索引返回保存地址給用戶.數(shù)據(jù)擁有者構(gòu)建并發(fā)送字典Dic到服務(wù)器保存.在搜索階段,授權(quán)用戶先對(duì)搜索的關(guān)鍵詞Q={q1;q2;…;qu}構(gòu)造陷門TQ并上傳.當(dāng)授權(quán)用戶接收到陷門TQ后,云服務(wù)器通過字典Dic進(jìn)行搜索,如果云服務(wù)器執(zhí)行一次命中搜索協(xié)議則將結(jié)果返回.如果云服務(wù)器執(zhí)行增強(qiáng)搜索協(xié)議則通過搜索EAFM索引將結(jié)果返回.最后,授權(quán)用戶解密密文文檔ED. 在FASSE方案構(gòu)建的威脅模型中,服務(wù)器被定義為是“半誠實(shí)并且好奇”的,敵手和云服務(wù)器被視為潛在威脅對(duì)象.FASSE方案中云服務(wù)器確保會(huì)完整正確地執(zhí)行FASSE方案設(shè)計(jì)的所有搜索協(xié)議,不會(huì)惡意刪除用戶文檔和惡意泄露用戶隱私.但是云服務(wù)器可能會(huì)分析文檔和索引,例如統(tǒng)計(jì)分析字符頻率、文檔與關(guān)鍵詞匹配的數(shù)目、文檔的歷史信息等.在FASSE方案中敵手可能會(huì)和云服務(wù)器合謀,那么上述的這些隱私信息很可能會(huì)被敵手利用去分析攻擊系統(tǒng),導(dǎo)致系統(tǒng)存在安全隱患.所以在此威脅模型中FASSE方案要確保所有歷史信息、陷門、字典、文檔信息和索引的安全. FASSE方案是7個(gè)多項(xiàng)式時(shí)間算法(KeyGen;Encrypt;PreProcess;DicGen;Trapdoor;Search;Decrypt)的集合,定義為: 1)K=KeyGen(1λ).其中,λ是安全參數(shù).該算法用于生成加密密鑰K={k,kf,kl,kπ,ke,kt,kid,kaddr},其中kf,kl是偽隨機(jī)函數(shù)密鑰,kπ是偽隨機(jī)置換密鑰,ke是對(duì)稱加密密鑰,kaddr由服務(wù)器生成.這些密鑰都是隨機(jī)數(shù),均由系統(tǒng)隨機(jī)生成. 2)ED=Encrypt(k,D).D為明文文檔集合,D={D1,D2,…,Dn}.ED為密文文檔集合,ED={ED1,ED2,…,EDn}.使用密鑰k以及對(duì)稱加密算法(比如AES)加密生成ED. 3)EAFM=PreProcess({kf,kl,kπ,ke},F‖L‖SA).F是BWT(S)生成矩陣W的第1列,L是W的最后1列.SA是字符串文本S的后綴數(shù)組.使用密鑰{kf,kl,kπ,ke}以及對(duì)稱加密算法加密F,L,SA生成EAFM索引. 4)Dic=DicGen(Enc({kf,kid,kt,kaddr},KW,id,tit,EAFMaddr,EDaddr)).其中,KW是關(guān)鍵詞,id是文檔標(biāo)示符,tit是文檔標(biāo)題,EAFMaddr是EAFM的地址,EDaddr是ED的地址.使用密鑰{kf,kid,kt,kaddr}以及對(duì)稱加密算法加密KW,id,tit,EAFMaddr和EDaddr生成字典Dic. 5)TKW=SearchToken(kf,KW).其中KW是用戶查詢的關(guān)鍵詞.利用密鑰kf加密關(guān)鍵詞KW生成對(duì)應(yīng)的搜索令牌TKW. 6)ED(KW)=Search(Dic,EAFM,TKW).利用搜索令牌TKW、字典Dic和EAFM索引進(jìn)行查找,輸出與KW匹配的加密的文檔集ED(KW).具體的實(shí)現(xiàn)細(xì)節(jié)需要依賴具體的實(shí)現(xiàn)算法,將在第4節(jié)的4個(gè)搜索過程中進(jìn)行詳細(xì)描述. 7)Di(KW)=Decrypt(K,EDi(KW)).使用對(duì)稱加密算法以及密鑰k解密包含關(guān)鍵詞KW的密文文檔EDi(KW),生成包含關(guān)鍵詞的明文文檔Di(KW). 如果靈活精度可控的對(duì)稱加密方案FASSE是正確的,那么對(duì)于?λ∈N,n∈Z,D={D1,D2,…,Dn},KeyGen(1λ)和Encrypt(k,D)輸出的k和ED都有: Search(Dic,EAFM,SearchToken(kf,KW))=EDi(KW)和Decrypt(k,EDi(KW))=Di(KW)成立. 本文設(shè)計(jì)的FASSE方案假設(shè)服務(wù)器是“半誠實(shí)且好奇”的,所有的數(shù)據(jù)查詢操作對(duì)服務(wù)器都是透明的,并且所有的明文數(shù)據(jù)處理都是由可信客戶端處理后以密文的形式上傳到服務(wù)器.服務(wù)器僅用于存儲(chǔ)和計(jì)算,而并不知道存儲(chǔ)和計(jì)算的具體內(nèi)容. 當(dāng)存在一個(gè)敵手A在不知道密鑰的情況下是無法得知存儲(chǔ)在服務(wù)器上加密文檔的任何信息.當(dāng)敵手A在線攻擊分析時(shí),首先敵手A并不知道搜索令牌tokenm對(duì)應(yīng)的是哪個(gè)關(guān)鍵詞的令牌,那么敵手A就不可能知道搜索的是哪個(gè)關(guān)鍵詞.即便敵手得知搜索令牌對(duì)應(yīng)的是哪個(gè)關(guān)鍵詞,最后也因?yàn)闊o法解密SA所以無法得知本次搜索結(jié)果是否有效,這也保護(hù)了用戶的隱私信息安全. 敵手A不能通過LLset離線分析字符的頻率去猜測攻擊,因?yàn)镕ASSE方案使用了Fkl(c)加密,F(xiàn)kf(c)使敵手A無法在不觀察任何搜索令牌的情況下去執(zhí)行離線頻率攻擊.即便敵手A獲得了搜索關(guān)鍵詞令牌也無法執(zhí)行在線頻率攻擊,因?yàn)镕ASSE方案在LL中進(jìn)行了填充使得每一個(gè)字符的頻率都一樣. 在存儲(chǔ)安全性方面如果存在惡意敵手A想要惡意刪除存在某個(gè)關(guān)鍵詞k的文檔時(shí),在沒有破解字典之前就無法得知文檔的具體存儲(chǔ)地址、破壞文件,這一定程度上提升了文檔存儲(chǔ)的安全性.當(dāng)存在一個(gè)敵手A試圖去離線分析字典Dic時(shí),他無法得知服務(wù)器中存儲(chǔ)了多少文檔和每個(gè)關(guān)鍵詞對(duì)應(yīng)多少文檔,因?yàn)榭蛻舳艘呀?jīng)將隨機(jī)記錄添加到字典Dic中了.為了提高安全性,字典Dic按字典順序排序.那么字典Dic在歷史上是獨(dú)立的,敵手A不能得知任何歷史相關(guān)信息.但是,當(dāng)用戶在線搜索字符串時(shí),服務(wù)器將向A暴露有多少個(gè)文檔包含字符串m.如果敵手A想要分析EAFM索引,他也不能得知任何與明文有關(guān)的內(nèi)容,因?yàn)長eontiadis[10]針對(duì)離線頻率攻擊(offline frequency attack)、在線差別攻擊(online difference attack)、離線差別攻擊(offline difference attack)、在線頻率攻擊(online frequency attack)已經(jīng)做出了相應(yīng)的對(duì)抗手段. 1) AFM. AFM是文檔摘要的FM索引.FM索引在文獻(xiàn)[10]中已經(jīng)有了詳細(xì)的描述,它是子字符串搜索的核心部分.客戶端加密AFM后會(huì)得到EAFM,EAFM的結(jié)構(gòu)如圖1所示. 2) 字典Dic. FASSE用一個(gè)字典Dic代替創(chuàng)建關(guān)鍵字集合.字典Dic中每一條記錄的第1個(gè)屬性是EKW,它等于F(kf,KW),表示加密的關(guān)鍵詞Fkf(KW).第2個(gè)屬性是d,它等于Enc(kid,id),表示加密文檔的標(biāo)識(shí)符,其中kid是加密文檔標(biāo)示符id的對(duì)稱加密密鑰.這里將加密文檔表示為ED.第3個(gè)屬性是Etit,它等于Enc(kf,tit),表示文檔的加密標(biāo)題.第4個(gè)屬性是EEDaddr,它等于Enc(kaddr,EDaddr),表示EDaddr的加密地址,其中kaddr是加密EDaddr的對(duì)稱加密密鑰,EDaddr是加密文檔的地址.最后一個(gè)屬性是EEAFMaddr,等于Enc(kaddr,EAFMaddr)表示EAFMaddr的加密地址,其中EEAFMaddr是加密的AFM的加密地址.通過對(duì)EDaddr和EAFMaddr加密盡可能地阻止敵手A在離線分析這些地址的時(shí)候可以獲取到任何與明文文檔相關(guān)的任何內(nèi)容或者破壞文檔.同時(shí)為了提高安全性,F(xiàn)ASSE還將記錄(EKW,d,Etit,EEDaddr,EEAFMaddr)按字典順序添加到字典Dic中.另外,方案還會(huì)隨機(jī)添加q個(gè)記錄到詞典Dic中(q的大小可以手動(dòng)設(shè)置也可以隨機(jī)生成)以防敵手A離線分析服務(wù)器端的文檔總數(shù)以及每個(gè)關(guān)鍵詞對(duì)應(yīng)的文檔總數(shù).字典Dic的結(jié)構(gòu)如表1所示: Table 1 Dictionary Dic表1 字典表Dic 首先,數(shù)據(jù)擁有者會(huì)將原始的明文文檔D上傳到客戶端同時(shí)會(huì)生成唯一的加密文檔標(biāo)識(shí)符d.客戶端加密文檔D,生成加密文檔ED、文檔摘要的FM索引AFM、加密的文檔摘要的FM索引EAFM和加密的文檔標(biāo)示符d,并通過有效地提取關(guān)鍵詞算法提取有效關(guān)鍵字kwi或者也可以使用預(yù)先設(shè)定好的關(guān)鍵詞kwi.同時(shí)使用kf作為密鑰的偽隨機(jī)函數(shù)PRFF(·)加密有效關(guān)鍵字kwi生成Fkf(kwi).客戶端通過計(jì)算Enc(kf,tit)來加密文檔的標(biāo)題得到加密的文檔標(biāo)題Etit.最后客戶端將這些加密的數(shù)據(jù)全部都上傳到服務(wù)器.服務(wù)器保存這些加密數(shù)據(jù)并且將這些加密文檔的地址EDaddr和加密的文檔摘要的FM索引即EAFM的地址EAFMaddr用kaddr進(jìn)行加密得到加密文檔的加密地址EEDaddr和EAFM的加密地址EEAFMaddr.最終得到(Ewi,d,Etit,EEDaddr,EEAFMaddr)并生成記錄上傳到字典表Dic中. 一次命中搜索、增強(qiáng)搜索和過濾搜索,它們分別對(duì)應(yīng)著用戶只用一次就在字典中找到關(guān)鍵詞記錄、沒有在字典中找到關(guān)鍵詞記錄而只用一次就在摘要中找到記錄或者多次在字典和摘要中查找到關(guān)鍵詞記錄的這3種搜索情況. 一次命中搜索主要適用于關(guān)鍵詞提取精度比較高的搜索場景.增強(qiáng)搜索主要適用于關(guān)鍵詞提取的比較粗糙的搜索場景.過濾搜索適用于存在關(guān)鍵詞重要程度概念的搜索場景. 用戶在輸入搜索字符串m之后服務(wù)器會(huì)在詞典Dic中依次去查找EKW=Fkf(m)的記錄.如果存在相應(yīng)的記錄服務(wù)器會(huì)立即執(zhí)行一次命中搜索,解密這些EEDaddr得到相應(yīng)的加密文檔地址EDaddr,并將這些加密文檔標(biāo)識(shí)符d、加密文檔標(biāo)題Etit和加密文檔地址EDaddr全都發(fā)送給客戶端.客戶端會(huì)通過計(jì)算Dec(kf,Etit)來解密這些文件加密的標(biāo)題得到明文的標(biāo)題tit.用戶通過tit選擇對(duì)應(yīng)需要的加密文檔標(biāo)識(shí)符d.客戶端通過這些加密文檔標(biāo)識(shí)符d找到對(duì)應(yīng)的加密文檔地址EDaddr并將這些加密文檔地址EDaddr發(fā)送到服務(wù)器并請(qǐng)求服務(wù)器下載這些加密文檔ED.如圖3所示,一次命中搜索協(xié)議的特點(diǎn)是對(duì)于搜索關(guān)鍵詞已經(jīng)在字典Dic中的這次搜索服務(wù)器會(huì)直接檢索字典Dic中的EKW屬性從而最快得到檢索結(jié)果,它是整個(gè)FASSE搜索過程中耗時(shí)最短、精度最高的.但是和傳統(tǒng)的基于關(guān)鍵詞集合的SSE一樣,對(duì)關(guān)鍵詞的提取和關(guān)鍵詞集的建立的要求都十分高.綜上可得一次命中搜索主要適用于關(guān)鍵詞提取精度比較高的搜索場景. 一次命中搜索協(xié)議如下: 客戶端:生成搜索字符串m的搜索令牌tokenm并發(fā)送到服務(wù)器. 服務(wù)器:ifFind(tokenm,Dic)==⊥ 返回⊥(空)到客戶端; else 返回d,Etit,EEDaddr和relativity到客戶端; 其中relativity的每一個(gè)元素值都為“Max”. end if 客戶端:if 從服務(wù)器端接收到⊥ 請(qǐng)求服務(wù)器執(zhí)行增強(qiáng)搜索or結(jié)束退出; relativity* 設(shè)置relativity的每一個(gè)元素值都為1.0; 生成新的搜索字符串mi的搜索令牌 tokenmi; 發(fā)送tokenmi,d,Etit,EEDaddr和relativity 到服務(wù)器請(qǐng)求執(zhí)行過濾搜索; or發(fā)送EEDaddr后等待接收從服務(wù)器發(fā)送的ED; else 解密Etit得到tit; 根據(jù)tit選擇需要的d并得到相應(yīng)的 EEDaddr; 發(fā)送EEDaddr到服務(wù)器請(qǐng)求服務(wù)器進(jìn)行下載. end if end if 服務(wù)器:解密EEDaddr下載ED發(fā)送到客戶端. 如果服務(wù)器在詞典Dic中未找到任何相應(yīng)的記錄時(shí),這種情況是經(jīng)常遇到的,那么增強(qiáng)搜索將起到重要的作用.服務(wù)器將通過字典Dic去搜索每個(gè)文檔的EAFM,并將與字符串搜索令牌即Fkf(m)相匹配的記錄中的d,Etit和服務(wù)器解密后得到的EDaddr發(fā)送到客戶端.如果擔(dān)心服務(wù)器返回大量無效填充位置,那方案也可以使用文獻(xiàn)[10]中的bucke-tization技術(shù)并選取適當(dāng)大小的窗口使填充節(jié)點(diǎn)的數(shù)量大大減少.通過計(jì)算Dec(kf,Etit)來解密得到這些文件的標(biāo)題tit.用戶通過tit選擇需要的d.最后,客戶端將EDaddr發(fā)送到服務(wù)器請(qǐng)求下載這些ED.增強(qiáng)搜索結(jié)構(gòu)如圖4所示.如果服務(wù)器有足夠的空間資源FASSE也可以采用建立內(nèi)容的FM索引即CFM(FM index of the content)的方法來進(jìn)一步提高搜索結(jié)果的精確性.增強(qiáng)搜索協(xié)議的特點(diǎn)是針對(duì)字典Dic中不存在搜索關(guān)鍵詞的情況下從而對(duì)文檔摘要進(jìn)行搜索,那么增強(qiáng)搜索相對(duì)一次命中搜索速度就會(huì)慢上很多,但它也打破了傳統(tǒng)基于關(guān)鍵詞集合的SSE因?yàn)樵陉P(guān)鍵詞集合中未檢索到搜索關(guān)鍵詞而無結(jié)果的尷尬局面.綜上可見增強(qiáng)搜索主要適用于關(guān)鍵詞提取的比較粗糙的搜索場景. Fig. 4 Reinforcement search圖4 增強(qiáng)搜索 增強(qiáng)搜索協(xié)議如下: 服務(wù)器:解密整個(gè)字典Dic中的EEAFMaddr得到EAFM; 對(duì)EAFM執(zhí)行SubLF映射算法; 計(jì)算m在所有摘要中不算填充的有效次數(shù)Occur; ifOccur中的每一元素的值都為0 返回⊥并結(jié)束退出; else 從Occur中選最大的nk項(xiàng)Occurk; 取出Occurk對(duì)應(yīng)字典Dic中nk項(xiàng)的記錄 Temp; 設(shè)置relativity的每一個(gè)元素值與Temp[Occurk]相對(duì)應(yīng);*當(dāng)從過濾搜索執(zhí)行增強(qiáng)搜索時(shí)relativity等于上一次的relativity加上0.2*Temp[Occurk]* 發(fā)送Temp[d,Etit,EEDaddr,Occurk]到客戶端. end if 客戶端:取出Temp[Occurk]; 生成新的搜索字符串mi的搜索令牌tokenmi; 發(fā)送tokenmi,d,Etit,EEDaddr和relativity到服務(wù)器請(qǐng)求執(zhí)行過濾搜索; or發(fā)送EEDaddr后等待接收從服務(wù)器發(fā)送的ED; else 解密Temp[Etit]得到tit; 根據(jù)tit從Temp[d]選擇需要的d并得到 相應(yīng)的EEDaddr; 發(fā)送EEDaddr到服務(wù)器請(qǐng)求服務(wù)器進(jìn)行下載. end if 服務(wù)器:解密EEDaddr下載ED發(fā)送到客戶端. Fig. 5 Filter search圖5 過濾搜索 用戶在經(jīng)過了一次命中搜索或者增強(qiáng)搜索之后仍然得到了許多難以選擇的tit和d,這是最常見的但也同時(shí)是最麻煩的情況.這種情況如果服務(wù)器的查詢結(jié)果中只有少量的小文件時(shí),那么用戶就可以直接發(fā)送請(qǐng)求給服務(wù)器請(qǐng)求服務(wù)器下載這些文檔到本地來篩選并確定哪些文檔是自己需要的.但是如果服務(wù)器的查詢結(jié)果中有許多大文檔時(shí),那么巨大的網(wǎng)絡(luò)開銷是服務(wù)器和客戶端雙方都難以承受的.事實(shí)上FASSE中的過濾搜索其實(shí)是相當(dāng)于一個(gè)篩子,可以連續(xù)地過濾用戶不滿意的文檔.FASSE將成功匹配m1搜索令牌的數(shù)量定義為相關(guān)性,字符串m1出現(xiàn)在摘要中的頻率越高,那么文檔的相關(guān)性越大,反之亦然.服務(wù)器會(huì)選擇相關(guān)度最高的前n%個(gè)文件進(jìn)行下一步處理.n可以通過計(jì)算成功匹配了字符串m1摘要的總數(shù)的百分比或手動(dòng)設(shè)置合適的數(shù)字來確定.服務(wù)器將nd,nEtit和解密后的nEDaddr返回給客戶端,客戶端通過計(jì)算Dec(kf,Etit)來解密這些tit.最后,用戶通過tit選擇需要的d和EDaddr最終獲得需要的ED.過濾搜索是通過使用不同的字符串mi在這些難以選擇的d上執(zhí)行重復(fù)搜索.用戶將得到n1,n2…直到有確定可以下載的nk個(gè)d時(shí),下載這nk個(gè)文件,因?yàn)橹貜?fù)過濾后文件的相關(guān)性達(dá)到了最大.過濾搜索結(jié)構(gòu)如圖5所示.因此可得,用戶可以控制搜索的精準(zhǔn)性,以便搜索需要的文檔.搜索的準(zhǔn)確度越高,用戶獲得預(yù)期文檔的可能性就越大,F(xiàn)ASSE通過控制用戶獲得預(yù)期文檔的可能性就越大.FASSE通過控制過濾搜索的次數(shù)來達(dá)到精度的控制,從而實(shí)現(xiàn)精度可控的搜索.過濾搜索協(xié)議的特點(diǎn)是針對(duì)在一次關(guān)鍵詞搜索字典和文檔摘要后得到太多的結(jié)果的局面,對(duì)文檔進(jìn)行反復(fù)多次地一次命中搜索或增強(qiáng)搜索,它消耗的時(shí)間最多、速度最慢,并且需要用戶手動(dòng)設(shè)置新的關(guān)鍵詞.綜上所述過濾搜索適用于存在關(guān)鍵詞重要程度概念的搜索場景. 過濾搜索協(xié)議如下: 服務(wù)器:接收從客戶端發(fā)送的d,Etit,EDaddr,relativity; ifFind(tokenmi,Dic,d)==⊥ 返回⊥(空)到客戶端; else 返回d,Etit,EEDaddr和relativity到客戶端; 其中relativity的每一個(gè)元素值都為“Max”. end if 客戶端:if 從服務(wù)器端接收到⊥ 請(qǐng)求服務(wù)器在d上執(zhí)行增強(qiáng)搜索; or發(fā)送EEDaddr后等待接收從服務(wù)器發(fā)送的ED. relativity* end if if 搜索結(jié)果相關(guān)性低 設(shè)置relativity的每一個(gè)元素值都為1; 生成新的搜索字符串mi的搜索令牌tokenmi; 發(fā)送tokenmi,d,Etit,EEDaddr和relativity 到服務(wù)器請(qǐng)求執(zhí)行過濾搜索; or發(fā)送EEDaddr后等待接收從服務(wù)器發(fā)送的ED; else 解密Etit得到tit; 根據(jù)tit選擇需要的d并得到相應(yīng)的EDaddr; 發(fā)送EDaddr到服務(wù)器請(qǐng)求服務(wù)器進(jìn)行下載. end if 服務(wù)器:解密EDaddr下載ED發(fā)送到客戶端. 模糊增強(qiáng)搜索操作是利用通配符‘*’和‘?’在普通增強(qiáng)搜索的基礎(chǔ)上進(jìn)行簡單的修改.當(dāng)服務(wù)器在成功匹配到搜索令牌Fkf(T[i])時(shí),如果發(fā)現(xiàn)Fkf(T[i])=Fkf(‘?’),那么直接跳過這次與L列中Fkf(cLj)的比對(duì),利用從F列中得到的Fkf(rFj‖cFj)異或L列中的Fkf(cLj)⊕Fkf(rFj‖cFj)‖F(xiàn)kf(rLj‖cLj)獲得L列中的Fkf(cLj)‖F(xiàn)kf(rLj‖cLj),繼續(xù)通過異或運(yùn)算得到Fkf(cLj)⊕Fkf(rLj‖cLj)Fkf(cLj)‖F(xiàn)kf(rLj‖cLj)并通過LLset依次在F列中查找與Fkf(cLj)⊕Fkf(rLj‖cLj)相等的Fkf(cFk)⊕Fkf(rFk‖cFk),經(jīng)過多次迭代后就可以找到需要搜索的關(guān)鍵詞.為了進(jìn)一步提高方案的靈活性,方案提出了最大容忍錯(cuò)拼字符數(shù)em,并且默認(rèn)em=0;也可以手動(dòng)設(shè)置em的值,只要em的值合理即可.關(guān)于錯(cuò)拼的搜索本質(zhì)基本和‘?’一樣,它需要引入一個(gè)錯(cuò)誤程度變量e,當(dāng)發(fā)現(xiàn)Fkf(cLj)不等于Fkf(T[i-1])時(shí)直接跳過這次在L列中的比對(duì),同時(shí)執(zhí)行e++一次,只要e不超過設(shè)定的最大容忍錯(cuò)拼字符數(shù)em就屬于錯(cuò)誤可容忍范圍內(nèi).關(guān)于通配符‘*’,F(xiàn)ASSE設(shè)置‘*’最大能夠表示r個(gè)字符.本文在實(shí)現(xiàn)FASSE方案時(shí)將r的值設(shè)置為2.例如“he*lo”={“helo”,“he?lo”,“he??lo”}.通過觀察發(fā)現(xiàn)增強(qiáng)模糊搜索本質(zhì)上還是對(duì)包含‘?’的字符串搜索.關(guān)于e,它和“?”一樣相當(dāng)于在不匹配的位置上加上了“?”.本方案通過對(duì)em,r,“?”和“*”的設(shè)置來實(shí)現(xiàn)靈活的精度可控的模糊搜索.最后可能還會(huì)得到一些不相關(guān)的結(jié)果,可以通過返回結(jié)果的相關(guān)性來剔除相關(guān)性低的結(jié)果,從而得到一個(gè)相對(duì)不錯(cuò)的結(jié)果. 本方案實(shí)驗(yàn)測試使用的計(jì)算機(jī)操作系統(tǒng)是Windows7,機(jī)器配備了Intel?CoreTMi5-4590 CPU @ 3.30 GHz四核處理器,具有8 GB RAM內(nèi)存.實(shí)驗(yàn)是在本地同時(shí)模擬了一臺(tái)服務(wù)器和一個(gè)客戶端,開發(fā)環(huán)境為Eclipse_4.5.0,使用語言為Java編程語言.對(duì)稱加密算法是使用AES密碼算法且實(shí)現(xiàn)均調(diào)用的是java.security和javax.crypto下工具包.本系統(tǒng)的實(shí)現(xiàn)Java代碼已經(jīng)全部上傳至https:github.comtaoruyuFA-SSE.git上. 本實(shí)驗(yàn)主要從2個(gè)方面測試方案的性能效率.首先測試上傳生成索引的時(shí)間效率,研究生成索引的時(shí)間與文檔的數(shù)量和摘要包含的字符數(shù)的相關(guān)性;其次對(duì)搜索的效率進(jìn)行進(jìn)一步的實(shí)驗(yàn)研究.對(duì)于搜索的效率研究,本文從增強(qiáng)搜索和模糊增強(qiáng)搜索2個(gè)方面進(jìn)行對(duì)比試驗(yàn),探索文檔的數(shù)量與搜索關(guān)鍵詞長度和文檔包含的字符總數(shù)對(duì)搜索效率的影響.關(guān)于本次實(shí)驗(yàn)的所有實(shí)驗(yàn)數(shù)據(jù)均來自于真實(shí)數(shù)據(jù)集eprint中所有文章的英文摘要.FASSE方案搜索的時(shí)間效率主要取決于是否是執(zhí)行了一次命中搜索.如果搜索過程中的所有操作都是一次命中搜索,這意味著它在搜索過程中所需的時(shí)間幾乎等于在字典Dic中搜索全部記錄的時(shí)間.這個(gè)時(shí)間相對(duì)于其他搜索過程是可以被忽略不計(jì)的.然而,搜索操作不可能都是一次命中搜索,大多數(shù)情況下都是增強(qiáng)搜索或過濾搜索,并且搜索過程中的大部分時(shí)間也都會(huì)消耗在這2種搜索過程中.經(jīng)過多輪搜索后,增強(qiáng)搜索和過濾搜索的次數(shù)將繼續(xù)不斷增加,搜索所需的總時(shí)間會(huì)越來越多,但是每一輪新的搜索所需要的時(shí)間也會(huì)越來越短同時(shí)準(zhǔn)確性會(huì)越來越高.本實(shí)驗(yàn)中未對(duì)過濾搜索的性能進(jìn)行實(shí)驗(yàn)研究,因?yàn)檫^濾搜索的時(shí)間是可以從增強(qiáng)搜索的時(shí)間效率圖中計(jì)算出來的.過濾搜索本質(zhì)也是一次命中搜索和增強(qiáng)搜索的不斷循環(huán)交替,不同的是過濾搜索的文檔范圍會(huì)越來越小. Fig. 6 Efficiency of uploading and searching for the FASSE圖6 FASSE方案的上傳和搜索的效率 FASSE方案的上傳和搜索的結(jié)果具體參考圖6.其中圖6(a)展示了FASSE方案上傳文件所需的時(shí)間效率圖.從中可以計(jì)算出當(dāng)摘要包含500字符以內(nèi)時(shí),上傳效率平均每個(gè)為0.09 s;當(dāng)摘要包含500~1 000字符時(shí),上傳效率平均每個(gè)為0.32 s,當(dāng)摘要包含1 000~1 500字符時(shí),上傳效率平均每個(gè)為0.79 s;當(dāng)摘要包含1 500~2 000字符時(shí),上傳效率平均每個(gè)為1.42 s;當(dāng)摘要包含2 000~2 500字符時(shí),上傳效率平均每個(gè)為2.34 s.圖6(b)表示增強(qiáng)搜索的時(shí)間性能圖(固定摘要包含2 000~2 500字符),可以發(fā)現(xiàn)當(dāng)文檔數(shù)逐漸增加時(shí),搜索所需時(shí)間越來越不穩(wěn)定,這是由于不同的搜索關(guān)鍵詞在文檔中的頻率不一樣導(dǎo)致的.圖6(c)表示關(guān)鍵詞搜索與文檔摘要包含的字符總數(shù)的關(guān)系圖(固定搜索關(guān)鍵詞長度為3).圖6(c)可以發(fā)現(xiàn)摘要包含字符總數(shù)與搜索時(shí)間呈現(xiàn)正相關(guān),且呈現(xiàn)出當(dāng)文檔數(shù)越多這種正相關(guān)性越強(qiáng)的趨勢.在圖6(c)中,當(dāng)摘要包含的字符總數(shù)小于500時(shí),對(duì)于各個(gè)不同文檔數(shù)量的平均搜索時(shí)間依次為36.425 ms,67.375 ms,109.125 ms,149.125 ms,209.25 ms,故平均搜索時(shí)間為114.26 ms.文獻(xiàn)[15]討論了面向多關(guān)鍵字的模糊密文搜索,與本文設(shè)計(jì)的方案相近,同本文具有一定的可比性.該文通過將文件數(shù)分為6類進(jìn)行可搜索對(duì)稱加密實(shí)驗(yàn),該文的平均搜索時(shí)間約為120 ms,本文的搜索效率略有提高. Fig. 7 The efficiency of fuzzy enhanced search with different n圖7 文檔數(shù)n不同時(shí)模糊增強(qiáng)搜索效率 通過圖6的實(shí)驗(yàn)看到了搜索關(guān)鍵詞對(duì)實(shí)驗(yàn)結(jié)果的影響,圖7將給出模糊增強(qiáng)搜索的搜索效率圖.(由圖6(b)得到結(jié)果,設(shè)置固定關(guān)鍵詞長度為6). 由圖7可以發(fā)現(xiàn)通配符‘?’對(duì)搜索結(jié)果的影響其實(shí)并不大,所以方案會(huì)在提高實(shí)用性的同時(shí)也會(huì)兼顧搜索的效率. 本文基于Leontiadis[10]可搜索對(duì)稱加密方案提出了一種能夠支持靈活的精度可以控制的可搜索對(duì)稱加密方案——FASSE方案,它支持靈活精度可控的加密搜索并且節(jié)省了大量的存儲(chǔ)開銷.FASSE方案提供了4種基本搜索方式:一次命中搜索、增強(qiáng)搜索、過濾搜索和模糊增強(qiáng)搜索.同時(shí),本文還結(jié)合這4種搜索方式設(shè)計(jì)了一種基于通配符技術(shù)的模糊增強(qiáng)搜索,并且通過設(shè)置部分參數(shù)從而達(dá)到靈活可控精度的搜索效果從而進(jìn)一步增強(qiáng)系統(tǒng)的實(shí)用性.最后實(shí)驗(yàn)得出FASSE方案在實(shí)驗(yàn)論文數(shù)據(jù)集中平均搜索完每一篇論文的時(shí)間為114.26 ms.通過實(shí)驗(yàn)可以發(fā)現(xiàn)FASSE方案可以輕松應(yīng)對(duì)各種關(guān)鍵詞的搜索.但是目前FASSE方案不支持動(dòng)態(tài)更新EAFM索引,所有的EAFM索引都是靜態(tài)的,對(duì)用戶操作(增、刪、改)都無法做到及時(shí)更新,必須重新生成EAFM索引,這會(huì)導(dǎo)致時(shí)間和空間開銷增加,所以一個(gè)可以動(dòng)態(tài)更新EAFM索引的解決方案是我們今后的目標(biāo).FASSE將會(huì)參考文獻(xiàn)[16],并且在未來希望它能幫助改進(jìn)FASSE.此外,F(xiàn)ASSE方案的模糊搜索方案中暫時(shí)不提供一次命中模糊搜索,所以在今后的工作中希望可以彌補(bǔ)這一點(diǎn).2.2 后綴和后綴數(shù)組
2.3 LF映射
2.4 FM索引
3 定義FASSE方案
3.1 方案系統(tǒng)模型
3.2 FASSE方案威脅模型
3.3 FASSE方案算法描述
3.4 FASSE方案系統(tǒng)安全性分析
3.5 數(shù)據(jù)結(jié)構(gòu)圖
3.6 初始化
4 FASSE加密搜索過程
4.1 一次命中搜索
4.2 增強(qiáng)搜索
4.3 過濾搜索
4.4 基于通配符的模糊增強(qiáng)搜索
5 實(shí)驗(yàn)驗(yàn)證
5.1 測試環(huán)境搭建
5.2 實(shí)驗(yàn)設(shè)計(jì)
5.3 實(shí)驗(yàn)結(jié)果
6 總 結(jié)