楊光遠(yuǎn) 楊大利 張 羽 馬利民 張 偉
1(北京信息科技大學(xué)計(jì)算機(jī)學(xué)院 北京 100101)
2(國家信息中心信息網(wǎng)絡(luò)安全部 北京 100045)
(guangyuany86@163.com)
可搜索加密(searchable encryption, SE)[1-2]的設(shè)計(jì)是使用戶能夠?qū)⒆约旱臄?shù)據(jù)安全地外包到服務(wù)器,同時(shí)保留查詢和搜索功能.SE被認(rèn)為是建立加密數(shù)據(jù)庫,防止隱私數(shù)據(jù)泄露最有前途的解決方案.通用的解決方案如全同態(tài)加密、安全多方計(jì)算等,雖然增強(qiáng)了數(shù)據(jù)的安全性,但增加了大量的計(jì)算和通信開銷.屬性保留加密,如確定性加密是有效的,但這些解決方案在實(shí)際應(yīng)用[3]中并不安全.近年來,SE方案的快速發(fā)展具備了更多的功能和更高的安全性[4-5].
在動(dòng)態(tài)SE中,前向隱私的概念是指新添加的數(shù)據(jù)和之前發(fā)布的搜索查詢之間的鏈接應(yīng)該隱藏在服務(wù)器上,后向隱私的概念是指刪除的數(shù)據(jù)和刪除后的搜索查詢之間的鏈接應(yīng)該隱藏.現(xiàn)有的前向和后向隱私SE方案[6-7]在客戶端和服務(wù)器端都引入了大量的存儲(chǔ)和計(jì)算開銷,增加了客戶端和服務(wù)器之間的交互.為了提高SE的效率,一種方法是采用硬件輔助的方案,例如Intel SGX,它可以在受信任且隔離的執(zhí)行環(huán)境中執(zhí)行本機(jī)代碼和數(shù)據(jù),從而減輕客戶端存儲(chǔ)和計(jì)算的開銷,并減少客戶端和服務(wù)器之間的通信成本.
Amjad等人[8]提出了第1個(gè)使用SGX的前向和后向隱私SE方案.方案中數(shù)據(jù)的添加和刪除對(duì)服務(wù)器是完全不知情的.但是,由于SGX和服務(wù)器之間的高I/O復(fù)雜性,這種方法仍然是低效的.后來他們?cè)诎踩院透叩男手g進(jìn)行權(quán)衡,提出了Bunker-B[8].文獻(xiàn)[8]中給出了Bunker-B的理論構(gòu)造,但是它是不可擴(kuò)展的,尤其是在處理大型數(shù)據(jù)集時(shí).首先,刪除操作是通過插入操作實(shí)現(xiàn)的,這將導(dǎo)致2個(gè)問題:1)導(dǎo)致SGX與服務(wù)器之間的通信成本較高;2)由于所有刪除的數(shù)據(jù)都需要從搜索結(jié)果中檢索、解密和過濾掉,這就會(huì)增加搜索延遲.
為了避免SGX的引入而導(dǎo)致的潛在性能瓶頸, 本文利用SGX enclave充分發(fā)揮客戶端的作用,enclave將同時(shí)緩存關(guān)鍵字狀態(tài)和刪除操作,以減少SGX與服務(wù)器之間在搜索、添加和刪除操作中的通信成本和往返次數(shù),并使客戶端幾乎沒有任何計(jì)算和存儲(chǔ)上的額外消耗.1)本文設(shè)計(jì)并實(shí)現(xiàn)了前向和后向隱私SE方案,稱為TSE.TSE利用SGX套件跟蹤關(guān)鍵字狀態(tài)和數(shù)據(jù)刪除,以最大程度地減少SGX和不受信任的內(nèi)存之間的通信開銷.2)我們?cè)跀?shù)據(jù)集上進(jìn)行實(shí)驗(yàn)并對(duì)數(shù)據(jù)進(jìn)行了分析,結(jié)果表明提出的技術(shù)相較于之前的技術(shù)降低了通信成本,查詢效率有所提高.向數(shù)據(jù)庫中插入106條數(shù)據(jù)時(shí)的ecall/ocall調(diào)用次數(shù)僅為Bunker-B方案的10%.
可搜索加密:Song等人[1]提出了第1個(gè)可搜索加密(SE),可以對(duì)加密的數(shù)據(jù)進(jìn)行搜索.古宜平等人[2]和Kamara等人[9]分別對(duì)靜態(tài)和動(dòng)態(tài)SE的安全定義進(jìn)行相關(guān)研究,并提出了具有次線性搜索時(shí)間的方案.自從SE研究以來,一系列的相關(guān)研究開始致力于提高查詢效率[10]和支持表達(dá)性查詢[11].
可信執(zhí)行環(huán)境中的密文搜索: 文獻(xiàn)[8,12-14]的研究是利用可信執(zhí)行環(huán)境(TEE).通常,TEE(例如Intel SGX)可以減少客戶端和服務(wù)器之間的網(wǎng)絡(luò)通信,并增加加密數(shù)據(jù)庫功能.Fuhry等人[14]提出了HardIDX,它以B+樹結(jié)構(gòu)構(gòu)建數(shù)據(jù)庫索引,并利用enclave遍歷樹節(jié)點(diǎn)的子集進(jìn)行搜索.文獻(xiàn)[8]提出了3種方案來啟用具有不同搜索泄露(即服務(wù)器可以從中獲悉有關(guān)查詢和數(shù)據(jù)的信息)的單關(guān)鍵字查詢.但是,他們尚未研究這些方案的實(shí)際性能.同時(shí),Ren等人[15]提出了一種通過SGX的隱藏范圍查詢方案.
Intel SGX是一組x86指令集,旨在提高應(yīng)用程序代碼和數(shù)據(jù)的安全性[16-17].在啟用SGX的平臺(tái)上,需要將應(yīng)用程序劃分為受信任部分和不受信任部分.受信任的部分稱為enclave,位于物理RAM的專用內(nèi)存部分中,由SGX實(shí)施強(qiáng)保護(hù).不受信任的部分作為普通進(jìn)程執(zhí)行,并且只能通過名為ecall的明確定義的接口調(diào)用enclave,而enclave可以加密明文數(shù)據(jù)并通過名為ocall的接口發(fā)送給不受信任的代碼.此外,當(dāng)將數(shù)據(jù)加載到enclave內(nèi)時(shí),將執(zhí)行解密和完整性檢查.所有其他軟件,包括操作系統(tǒng)、特權(quán)軟件、虛擬機(jī)管理程序和固件,都無法訪問enclave的內(nèi)存.在enclave中用于存儲(chǔ)數(shù)據(jù)的實(shí)際內(nèi)存最多只有96 MB[18].在此之上,SGX將自動(dòng)應(yīng)用頁面交換. SGX還具有遠(yuǎn)程認(rèn)證功能,該功能允許在遠(yuǎn)程服務(wù)器上驗(yàn)證enclave的創(chuàng)建,并創(chuàng)建與enclave的安全通信通道.
動(dòng)態(tài)SE中的前向和后向隱私:按照文獻(xiàn)[4-5]中的表達(dá),DB代表數(shù)據(jù)庫,每條具有唯一標(biāo)識(shí)符id的數(shù)據(jù)是一個(gè)可變長度的唯一關(guān)鍵字集.我們使用DB(w)來顯示出現(xiàn)關(guān)鍵字w的數(shù)據(jù)集. 關(guān)鍵字-數(shù)據(jù)對(duì)的總數(shù)用N表示,W是DB中不同關(guān)鍵字的總數(shù).indexMI是一種字典結(jié)構(gòu),用來存儲(chǔ)所有N個(gè)關(guān)鍵字-數(shù)據(jù)對(duì),將每個(gè)唯一關(guān)鍵字w映射到DB(w)中的匹配列表.名為EDB的加密數(shù)據(jù)庫是加密數(shù)據(jù)的集合.動(dòng)態(tài)SE方案Σ=(Setup,Search,Update)由客戶端和服務(wù)器之間的3個(gè)協(xié)議組成,如下所示:
1) Setup(1λ,DB).協(xié)議輸入1個(gè)安全參數(shù)λ,輸出1個(gè)密鑰K,1個(gè)客戶端狀態(tài)ST和1個(gè)加密數(shù)據(jù)庫EDB.
2) Search(K,w,ST;EDB).協(xié)議允許在客戶端根據(jù)狀態(tài)ST、密鑰K和狀態(tài)ST查詢w,在服務(wù)器端根據(jù)加密數(shù)據(jù)庫EDB查詢w.然后輸出搜索結(jié)果Res.
3) Update(K,(op,in),ST;EDB).該協(xié)議接收K、ST、一個(gè)與客戶端操作op相關(guān)的輸入以及EDB,其中op∈{add,del},in由數(shù)據(jù)標(biāo)識(shí)符id和該數(shù)據(jù)中的一組關(guān)鍵字組成.然后,協(xié)議執(zhí)行op操作時(shí)從EDB插入或刪除數(shù)據(jù).
Amjad等人[8]提出了3種采用SGX支持的向后隱私的方案:Type-I方案Fort,Bunker-B和Bunker-A.Fort是最安全的,但是由于其開銷較大,本文不對(duì)其進(jìn)行研究.Bunker-A不執(zhí)行重新加密和重新插入,只實(shí)現(xiàn)向后隱私.因此,本文主要分析Bunker-B的局限性,Bunker-B協(xié)議總結(jié)如下所示.
協(xié)議1.Bunker-B: update和search協(xié)議.
① Update(op,in):
/*op∈{add,del},in=(w,id)*/
② client從st檢索stw=(version,
count);
③ 發(fā)送(w,version,count,op,id)到
enclave;
④ client更新st中的stw=(version,
count+1);
⑤ enclave生成update令牌utk=(u,v):
uFK1(w‖version‖count+1),
vEnc(K2,id‖op);
⑥ enclave發(fā)送sutk到server;
⑦ server從enclave中檢索sutk=(u,v);
⑧ server更新mapMI[u]=v
⑨ Search(w):
⑩ client從st檢索stw=(version,count);
enclave的st;
count);
count);
qtk=(u1,u2,…,ui,…,ucount),其中:
v2),…,(uc,vc)}到enclave;
鍵字-數(shù)據(jù)對(duì);
∈L}過濾未刪除的ids;
Bunker-B的性能分析:對(duì)于每個(gè)(w,id),Bunker-B讓enclave遵循相同的例程來生成用于添加和刪除的令牌,并使用生成的令牌來更新服務(wù)器上的MI(協(xié)議1中的⑤).然而,它會(huì)導(dǎo)致高計(jì)算復(fù)雜度,并且在搜索過程中涉及到大量的數(shù)據(jù)傳輸.在Search協(xié)議中,Bunker-B的核心思想是讓enclave讀取MI中與關(guān)鍵字對(duì)應(yīng)的所有記錄(與add或del相關(guān)).然后,enclave對(duì)它們進(jìn)行解密,并根據(jù)操作過濾被刪除的id.查詢之后,enclave重新加密未刪除的id,并將新生成的令牌發(fā)送到服務(wù)器進(jìn)行更新.這些步驟總結(jié)在協(xié)議1的第~行中.本文復(fù)現(xiàn)了Bunker-B(見第4節(jié)的實(shí)驗(yàn)),發(fā)現(xiàn)該方案在實(shí)踐中還存在以下局限性:1)密集ecall/ocall調(diào)用.將具有標(biāo)識(shí)符id和M條唯一關(guān)鍵字的數(shù)據(jù)提供給服務(wù)器,Bunker-B通過使用M次ecall,然后使用相同數(shù)量的ocall重復(fù)執(zhí)行更新協(xié)議,以將令牌插入索引映射MI.2)搜索延遲.每次搜索都會(huì)對(duì)未刪除的id重新加密,這使得Bunker-B效率降低.
通過分析Bunke-B具有的一些限制,我們?cè)O(shè)計(jì)了TSE,TSE的整體架構(gòu)如圖1所示:
圖1 TSE系統(tǒng)整體架構(gòu)及工作流程
TSE方案涉及3個(gè)實(shí)體:客戶端(數(shù)據(jù)所有者,因此是受信任的)、不受信任的服務(wù)端和服務(wù)器內(nèi)受信任的SGX enclave,系統(tǒng)工作流程包括11個(gè)步驟.
在步驟1中,客戶端使用SGX認(rèn)證功能對(duì)enclave進(jìn)行身份驗(yàn)證,并與enclave建立安全通道. 然后,客戶端通過此通道將密鑰K提供給enclave. 這樣就完成了協(xié)議中的Setup協(xié)議.
在步驟2中,為客戶提供具有唯一標(biāo)識(shí)符id的數(shù)據(jù),客戶端管理器使用密鑰K加密數(shù)據(jù),并將數(shù)據(jù)的加密版本發(fā)送到服務(wù)器管理器(步驟3).然后將帶有id的加密版本插入到EDB中.客戶管理器通過安全通道將原始數(shù)據(jù)發(fā)送到位于enclave的狀態(tài)管理器(步驟4).在此步驟中,狀態(tài)管理器執(zhí)行加密操作以生成將被發(fā)送到服務(wù)端管理器的更新令牌(步驟5).令牌用于更新位于服務(wù)端管理器中的動(dòng)態(tài)SE的加密索引.動(dòng)態(tài)SE MI的索引位于服務(wù)器管理器中,而加密數(shù)據(jù)存儲(chǔ)于加密數(shù)據(jù)庫EDB中.要?jiǎng)h除具有給定id的數(shù)據(jù)(步驟6),客戶端管理器直接將數(shù)據(jù)id發(fā)送給狀態(tài)管理器(步驟7).
在步驟8中,客戶端想要搜索包含給定查詢關(guān)鍵字w的數(shù)據(jù).客戶端管理器將關(guān)鍵字w發(fā)送給狀態(tài)管理器(步驟9).然后,狀態(tài)管理器計(jì)算查詢令牌并排除標(biāo)記為刪除數(shù)據(jù).之后,狀態(tài)管理器將它們發(fā)送到服務(wù)器管理器(步驟10).服務(wù)器管理器將搜索接收到的令牌,并將加密的匹配數(shù)據(jù)列表返回給客戶端管理器,并用K解密加密的數(shù)據(jù).
對(duì)Intel SGX的假設(shè):本文假設(shè)SGX是可信的(即沒有硬件錯(cuò)誤或后門),并且enclave內(nèi)的預(yù)置代碼和數(shù)據(jù)是受到保護(hù)的.此外,客戶端和enclave之間的通信依賴于SGX認(rèn)證期間創(chuàng)建的安全通道.和其他SGX應(yīng)用程序[19]一樣,對(duì)SGX的[20]的側(cè)邊通道攻擊不在我們的范圍內(nèi).拒絕服務(wù)(DoS)攻擊也不在我們的關(guān)注范圍之內(nèi),也就是說,enclave總是在客戶端調(diào)用或查詢時(shí)可用.最后,我們假設(shè)SGX使用的所有加密原語和庫都是可信的.
威脅模型:根據(jù)文獻(xiàn)[17],我們認(rèn)為服務(wù)器端有一個(gè)半誠實(shí)但強(qiáng)大的攻擊者.盡管攻擊者不會(huì)偏離協(xié)議,但可以通過enclave之外的軟件堆棧、操作系統(tǒng)和管理程序,以及服務(wù)器中的硬件組件(處理器包除外)獲得完全訪問權(quán).攻擊者可以在內(nèi)存總線上、內(nèi)存中或EDB中觀察內(nèi)存地址和(加密的)數(shù)據(jù),以生成數(shù)據(jù)訪問模式.此外,攻擊者可以記錄這些內(nèi)存操作發(fā)生時(shí)的時(shí)間.
TSE的基本思想是讓enclave存儲(chǔ)關(guān)鍵字的最新狀態(tài)ST,并保留已刪除數(shù)據(jù)的數(shù)據(jù)id的列表d,方便后期搜索使用.然后,enclave僅在2次刪除操作之間加載用于第1次搜索的被刪除的數(shù)據(jù),以便于更新刪除的id和查詢的關(guān)鍵字之間的映射.在2次刪除更新之間的后續(xù)搜索不需要再次加載刪除的數(shù)據(jù).我們注意到,enclave在第1個(gè)查詢中檢索到d后顯然需要?jiǎng)h除d,以保存enclave的存儲(chǔ).一旦enclave知道查詢關(guān)鍵字和已刪除數(shù)據(jù)之間的映射,它就會(huì)推斷查詢關(guān)鍵字與其余未刪除數(shù)據(jù)的映射,以便生成查詢令牌. 之后,服務(wù)器根據(jù)接收到的令牌檢索數(shù)據(jù),并將數(shù)據(jù)結(jié)果列表返回給客戶端.接下來將結(jié)合協(xié)議偽代碼進(jìn)一步解釋協(xié)議,Setup協(xié)議如下所示:
協(xié)議2.Setup(1λ).
client:
①kΣ,kf←{0,1}λ;
② 啟動(dòng)遠(yuǎn)程認(rèn)證;
③ 建立安全的渠道;
④ 發(fā)送K=(kΣ,kf)到enclave;
enclave:
⑤ 初始化ST和D:
⑥ 初始化一個(gè)列表d;
⑦ 初始化T1和T2;
⑧ 接收K=(kΣ,kf);
server:
⑨ 初始化MI和Mc;
⑩ 初始化存儲(chǔ)庫R.
在Setup過程中,客戶端在建立的安全通道上與enclave通信,以提供K=(kΣ,kf),其中kΣ使enclave域能夠生成更新/查詢令牌,而kf是用于數(shù)據(jù)加密/解密的對(duì)稱密鑰.enclave維護(hù)映射ST和D以及列表d,其中ST存儲(chǔ)關(guān)鍵字的狀態(tài),D表示關(guān)鍵字和已刪除數(shù)據(jù)之間的映射,d是已刪除id的數(shù)組.服務(wù)器保存1個(gè)加密索引MI、加密狀態(tài)Mc的映射、帶有R[id]的存儲(chǔ)庫R存儲(chǔ)數(shù)據(jù)標(biāo)識(shí)符id的加密數(shù)據(jù).
如下為TSE的Update協(xié)議流程:
協(xié)議3.Update(op,in).
client:
① ifop=add then
②f←Enc(kf,data);
③ 發(fā)送(id,f)到server;
④ end if
⑤ 發(fā)送(op,id)到enclave;
enclave:
⑥ ifop=add then
⑦f←R[id];
⑧ {(w,id)}←Parse(Dec(kf,f));
⑨ foreach (w,id) do
⑩kw‖kc←F(kΣ,w);
server:
如下為TSE的Search流程:
協(xié)議4.Search(w).
client:
① 發(fā)送w到enclave;
enclave:
②stwc←{?},Qw←{?};
③kw‖kc←F(kΣ,w);
④ foreachidiinddo
⑤fi←R[idi];
⑥datai←Dec(kf,fi);
⑦ ifwindataithen
⑧D[w]←idi∪D[w];
⑨ 刪除R[idi];
⑩ end if
server:
client:
實(shí)驗(yàn)設(shè)置與實(shí)現(xiàn):本文選擇了Enron電子郵件數(shù)據(jù)集(1.4 GB),使用C++和Intel SGX SDK4構(gòu)建了TSE原型,此外,實(shí)現(xiàn)了Bunker-B的原型作為比較的基準(zhǔn),因?yàn)槠鋵?shí)現(xiàn)是不公開的,原型利用SGX SDK中的內(nèi)置加密原語進(jìn)行相關(guān)加密操作.它還使用SDK中的設(shè)置和API來創(chuàng)建、管理和訪問為SGX設(shè)計(jì)的應(yīng)用程序(enclave).實(shí)驗(yàn)環(huán)境部署在具備SGX功能的Intel i7 1.8 GHz和8 GB內(nèi)存的主機(jī).
圖2 Bunker-B與TSE查詢時(shí)間對(duì)比(刪除25%的數(shù)據(jù))
插入和刪除:首先,比較在Bunker-B和TSE方案下插入和刪除的時(shí)間,如表1所示.測量在不同方案的加密數(shù)據(jù)庫中添加關(guān)鍵字-數(shù)據(jù)對(duì)的運(yùn)行時(shí)間.如表1所示,Bunker-B需要21 μs插入1對(duì),當(dāng)關(guān)鍵字-數(shù)據(jù)對(duì)的數(shù)量等于數(shù)據(jù)數(shù)量時(shí),這比我們的方案(23 μs)要快.原因是上述3種方案的插入時(shí)間受到不受信任的應(yīng)用程序和enclave之間的I/O(ecall/ocall)的限制.對(duì)于Bunker-B,I/O成本與關(guān)鍵字-數(shù)據(jù)對(duì)的數(shù)量成線性關(guān)系,而TSE的I/O成本與數(shù)據(jù)數(shù)量成線性關(guān)系.當(dāng)插入1×106個(gè)數(shù)據(jù)時(shí),我們的方案只需要7 μs來插入1對(duì)關(guān)鍵字-數(shù)據(jù)對(duì),速度比Bunker-B (12 μs)快了近2倍.
表1 Bunker-B與TSE插入數(shù)據(jù)時(shí)間對(duì)比
對(duì)于刪除,Bunker-B的性能與插入(12 μs)是一樣的,因?yàn)閯h除運(yùn)行相同的算法只是操作不同.對(duì)于我們的方案,刪除過程只將數(shù)據(jù)id插入到列表中,并且在查詢階段通過排除已刪除的id來執(zhí)行刪除操作.因此,我們的方案在刪除階段只需要4 μs就可以處理1個(gè)數(shù)據(jù).
查詢延遲:為了測量關(guān)鍵字頻率和刪除操作帶來的查詢延遲,我們選擇在刪除部分?jǐn)?shù)據(jù)后查詢前25個(gè)關(guān)鍵字,如圖2所示,當(dāng)插入2.5×105條數(shù)據(jù)、刪除25%的數(shù)據(jù)后.對(duì)于最頻繁的關(guān)鍵字,Bunker-B需要1.3 s的查詢時(shí)間.雖然TSE執(zhí)行第1次搜索需要5 s,但它也會(huì)在enclave中緩存已刪除的關(guān)鍵字-數(shù)據(jù)對(duì),并在第1次查詢期間對(duì)數(shù)據(jù)執(zhí)行刪除.因此,接下來的查詢速度要快得多,因?yàn)檎{(diào)用的次數(shù)大大減少.即使是第25個(gè)最常見的關(guān)鍵字,TSE(159 ms)仍然比Bunker-B(221 ms)快40%.
通信成本:接下來展示了I/O操作(ocall/ecall)對(duì)不同方案性能的影響.如表2所示,Bunker-B比本文方案多需要10倍的ecall/ ocall操作.因此,盡管Bunker-B和本文方案都在最后生成并存儲(chǔ)加密的關(guān)鍵字-數(shù)據(jù)對(duì),但是本文方案可以實(shí)現(xiàn)更好的插入性能,因?yàn)楸疚姆桨敢蕾囕^少的I/O操作.在刪除操作上,Bunker-B比本文方案多了將近30倍的I/O操作(如表3所示).而且本文方案的刪除操作只需要插入已刪除的id,不涉及任何加密操作,而Bunker-B執(zhí)行的過程和插入數(shù)據(jù)是一樣的.這表明本文方案比Bunker-B通信成本更低.
表2 Bunker-B與TSE插入數(shù)據(jù)通信成本對(duì)比
表3 Bunker-B與TSE刪除數(shù)據(jù)通信成本對(duì)比
內(nèi)存消耗:因?yàn)榕c服務(wù)器和enclave相比,客戶機(jī)的內(nèi)存消耗可以忽略不計(jì)(即小于1 MB).如圖3所示,TSE的加密數(shù)據(jù)庫始終保持不變,因?yàn)樗鼈冊(cè)谔砑?×106條數(shù)據(jù)后保持相同的關(guān)鍵字-數(shù)據(jù)對(duì).另一方面,當(dāng)我們刪除更多的數(shù)據(jù)時(shí),Bunker-B的內(nèi)存使用量會(huì)持續(xù)增加,因?yàn)樗鼞?yīng)該在服務(wù)器上維護(hù)已刪除的關(guān)鍵字-數(shù)據(jù)對(duì).在enclave中,Bunker-B不維護(hù)任何持久的數(shù)據(jù)結(jié)構(gòu),而TSE需要存儲(chǔ)刪除所需的信息.對(duì)于TSE,它會(huì)緩存enclave中的所有數(shù)據(jù)id,這將導(dǎo)致非常高的內(nèi)存使用量,刪除25%的數(shù)據(jù)時(shí)是304 MB.
圖3 Bunker-B與TSE內(nèi)存占用對(duì)比(刪除25%的數(shù)據(jù))
為了解決傳統(tǒng)SE降低加密數(shù)據(jù)的查詢效率,增加了客戶端和服務(wù)器之間通信成本的問題,本文引入了硬件輔助解決方案——Intel SGX來解決這2個(gè)問題.本文通過分析當(dāng)前解決方案,發(fā)現(xiàn)當(dāng)前的解決方案存在密集ecall/ocall調(diào)用和搜索延遲的問題,提出利用Intel SGX的enclave來緩存關(guān)鍵字的狀態(tài),并且保留已刪除數(shù)據(jù)的id的列表d,為后期的數(shù)據(jù)查詢提供方便.本文的方案存在如下優(yōu)點(diǎn):
1) 由于在enclave中緩存了已刪除數(shù)據(jù)的關(guān)鍵字-數(shù)據(jù)對(duì),查詢效率相較于Bunker-B更高;
2) 數(shù)據(jù)查詢過程中依賴較少的I/O操作,因此通信開銷更低.
雖然本文的方案在查詢效率和通信開銷方面有所優(yōu)化,但是可以看到方案對(duì)enclave的內(nèi)存占用還較高,這將觸發(fā)enclave的自動(dòng)分頁機(jī)制,這個(gè)過程也會(huì)影響查詢效率,同時(shí)本文方案在大數(shù)據(jù)量時(shí)的處理表現(xiàn)還不好.因此接下來的研究工作將著力于提高方案的批處理能力,減少enclave的內(nèi)存占用,進(jìn)一步提高數(shù)據(jù)查詢效率.