趙 亮,王學(xué)良,陳聲濤
(1.北京航空材料研究院,北京 100095;2.北京格爾國(guó)信科技有限公司,北京 100095;3.格爾軟件股份有限公司,上海 200436)
近年來(lái),物聯(lián)網(wǎng)技術(shù)蓬勃發(fā)展,并逐漸滲透到人們?nèi)粘Ia(chǎn)與社會(huì)生活中。例如,智能家居、車(chē)路協(xié)同等技術(shù)領(lǐng)域?qū)ξ锫?lián)設(shè)備的需求迎來(lái)爆炸式增長(zhǎng)。同時(shí),伴隨著大眾網(wǎng)絡(luò)安全和數(shù)據(jù)安全意識(shí)的不斷增強(qiáng),物聯(lián)網(wǎng)的數(shù)據(jù)安全與設(shè)備安全問(wèn)題成為學(xué)術(shù)界與工業(yè)界關(guān)注的熱點(diǎn)問(wèn)題[1]。保障物聯(lián)網(wǎng)數(shù)據(jù)安全的有效方法是將密碼技術(shù)、身份認(rèn)證、路由協(xié)議等隱私保護(hù)技術(shù)相結(jié)合,構(gòu)造適用于具體業(yè)務(wù)場(chǎng)景的數(shù)據(jù)安全保護(hù)方案。這類(lèi)方案需要根據(jù)具體業(yè)務(wù)要求滿(mǎn)足物聯(lián)網(wǎng)的防滲透、防篡改、數(shù)據(jù)隱私保護(hù)及高效利用等需求[2-3]。
一般而言,物聯(lián)網(wǎng)系統(tǒng)是由遠(yuǎn)端節(jié)點(diǎn)和中心業(yè)務(wù)節(jié)點(diǎn)組成的應(yīng)用系統(tǒng),遠(yuǎn)端節(jié)點(diǎn)負(fù)責(zé)執(zhí)行業(yè)務(wù),并將產(chǎn)生的業(yè)務(wù)數(shù)據(jù)加密存儲(chǔ),中心業(yè)務(wù)節(jié)點(diǎn)根據(jù)上層應(yīng)用的具體要求,每次與遠(yuǎn)端節(jié)點(diǎn)驗(yàn)證身份,隨后請(qǐng)求所有業(yè)務(wù)相關(guān)的加密數(shù)據(jù)再統(tǒng)一作解密處理。但是,這種方式存在數(shù)據(jù)傳輸壓力大和數(shù)據(jù)處理效率低等問(wèn)題。
文本利用軟件定義邊界(SDP)技術(shù)保證訪問(wèn)身份可信,實(shí)現(xiàn)端對(duì)端的身份認(rèn)證,使用一種基于倒排索引的可搜索加密技術(shù)實(shí)現(xiàn)密文數(shù)據(jù)的高效檢索,實(shí)現(xiàn)了在有限計(jì)算資源下對(duì)加密數(shù)據(jù)的快速檢索和高效傳輸。具體而言,為遠(yuǎn)端節(jié)點(diǎn)的加密數(shù)據(jù)建立數(shù)據(jù)查詢(xún)倒排索引,中心業(yè)務(wù)節(jié)點(diǎn)只需要確定所需數(shù)據(jù)關(guān)鍵字,調(diào)用檢索算法即可獲取期望的加密數(shù)據(jù),從而減少每次大量數(shù)據(jù)傳輸帶來(lái)的網(wǎng)絡(luò)帶寬壓力,同時(shí)滿(mǎn)足物聯(lián)網(wǎng)數(shù)據(jù)加密存儲(chǔ)和隱私需求。
軟件定義邊界(Software Defined Perimeter,SDP)由云安全聯(lián)盟(CSA)[4]于2013 年提出,是一種基于軟件的計(jì)算機(jī)安全防護(hù)方式,基于策略為企業(yè)構(gòu)建起虛擬邊界,對(duì)外提供零可見(jiàn)和零連接,利用基于身份的訪問(wèn)控制和權(quán)限認(rèn)證機(jī)制,在端點(diǎn)證明其可信后才可連接,允許合法流量通過(guò)。為企業(yè)應(yīng)用和服務(wù)提供隱身保護(hù),未經(jīng)授權(quán)的用戶(hù)和設(shè)備無(wú)法訪問(wèn)到受保護(hù)的資源,有效保護(hù)企業(yè)的數(shù)據(jù)安全。
針對(duì)傳統(tǒng)訪問(wèn)控制模型引發(fā)的數(shù)據(jù)泄露和安全問(wèn)題,結(jié)合企業(yè)不斷提升的數(shù)據(jù)泄露防范要求,王駿彪[5]提出軟件定義邊界下的可信動(dòng)態(tài)訪問(wèn)控制模型,利用訪問(wèn)數(shù)據(jù)集實(shí)時(shí)情況所引起的可信度變化調(diào)整訪問(wèn)控制策略。王亦然等[6]提出一種新型的SDP 模型架構(gòu),通過(guò)對(duì)SDP 模型、邏輯架構(gòu)以及部署方式的相關(guān)研究,構(gòu)建全新的應(yīng)用訪問(wèn)安全模式,實(shí)現(xiàn)動(dòng)態(tài)最小權(quán)限的訪問(wèn)授權(quán)。謝欣夢(mèng)[7]將單數(shù)據(jù)包授權(quán)的方式應(yīng)用在軟件定義邊界中,對(duì)軟件定義邊界組件進(jìn)行預(yù)認(rèn)證和預(yù)授權(quán),阻止攻擊者通過(guò)系統(tǒng)掃描對(duì)漏洞進(jìn)行攻擊,有效增強(qiáng)了數(shù)據(jù)包的安全性。
隨著云計(jì)算和物聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,數(shù)據(jù)云端存儲(chǔ)和計(jì)算的需求不斷增加,也引發(fā)了許多網(wǎng)絡(luò)存儲(chǔ)和數(shù)據(jù)泄露的安全問(wèn)題,而解決云端存儲(chǔ)密態(tài)數(shù)據(jù)濫用和滲透的最有效方法是可搜索加密技術(shù)。2000 年,Song 等[8]開(kāi)始探索存儲(chǔ)在云服務(wù)器上的加密數(shù)據(jù)檢索問(wèn)題,并首次給出可搜索加密(Searchable Encryption)的概念。該機(jī)制保證了數(shù)據(jù)安全并且具有控制搜索、隱藏查詢(xún)、查詢(xún)獨(dú)立等多個(gè)優(yōu)勢(shì)。
Curtmola 等[9]提出對(duì)稱(chēng)可搜索加密的改進(jìn)定義和有效構(gòu)造,實(shí)現(xiàn)自適應(yīng)的對(duì)稱(chēng)可搜索加密,首次實(shí)現(xiàn)了在搜索執(zhí)行過(guò)程中可自適應(yīng)地選擇對(duì)服務(wù)器的查詢(xún)。Kamara等[10]設(shè)計(jì)一個(gè)動(dòng)態(tài)對(duì)稱(chēng)可搜加密方案,該方案同時(shí)滿(mǎn)足次線性搜索時(shí)間、抵御自適應(yīng)選擇關(guān)鍵字攻擊安全性、緊湊的索引以及有效地添加和刪除文件的能力,這極大提高了可搜索加密方案的實(shí)用性。
在可搜索加密過(guò)程中,用戶(hù)需要在查詢(xún)時(shí)能夠快速、準(zhǔn)確地找到文件,在搜索語(yǔ)句表達(dá)能力方面先后出現(xiàn)了基于精確條件查詢(xún)的單關(guān)鍵詞檢索和多關(guān)鍵詞檢索[11]相關(guān)技術(shù),模糊關(guān)鍵詞檢索[12]和混淆關(guān)鍵字密文檢索[13]等相關(guān)技術(shù)。為提高檢索效率和正確性,孫曉玲等[14]提出基于可拆分倒排索引的可搜索加密方案;Hahn 等[15]提出支持批量更新的可搜索加密方案;劉政等[16]實(shí)現(xiàn)了一種高效的基于聚合索引的加密搜索方案。
系統(tǒng)模型如圖1 所示,由遠(yuǎn)端節(jié)點(diǎn)、中心業(yè)務(wù)節(jié)點(diǎn)、其他應(yīng)用節(jié)點(diǎn)及PKI/CA 基礎(chǔ)設(shè)施組成。
遠(yuǎn)端節(jié)點(diǎn),即物聯(lián)網(wǎng)中的邊緣節(jié)點(diǎn),如傳感器等設(shè)備。這類(lèi)節(jié)點(diǎn)具備一定的數(shù)據(jù)存儲(chǔ)能力且能夠內(nèi)嵌基本加解密硬件,可將運(yùn)行時(shí)產(chǎn)生和收集的數(shù)據(jù)加密并存儲(chǔ)在本地,可以與中心業(yè)務(wù)節(jié)點(diǎn)建立連接交換數(shù)據(jù)。
中心業(yè)務(wù)節(jié)點(diǎn),即物聯(lián)網(wǎng)中的業(yè)務(wù)數(shù)據(jù)處理節(jié)點(diǎn),根據(jù)應(yīng)用程序的具體要求,負(fù)責(zé)從遠(yuǎn)端節(jié)點(diǎn)獲取相關(guān)數(shù)據(jù)執(zhí)行數(shù)據(jù)處理任務(wù)。中心業(yè)務(wù)節(jié)點(diǎn)的存儲(chǔ)和計(jì)算能力要遠(yuǎn)強(qiáng)于遠(yuǎn)端節(jié)點(diǎn),中心業(yè)務(wù)節(jié)點(diǎn)搭載部分業(yè)務(wù)應(yīng)用程序、SDP和存儲(chǔ)數(shù)據(jù)查找索引。其他應(yīng)用節(jié)點(diǎn)代表廣泛的物聯(lián)網(wǎng)中具體的應(yīng)用系統(tǒng),包含具體的應(yīng)用客戶(hù)端和應(yīng)用服務(wù)器,能夠根據(jù)需求向中心業(yè)務(wù)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)處理結(jié)果。
PKI/CA 基礎(chǔ)設(shè)施,用于系統(tǒng)中參與者的身份訪問(wèn)認(rèn)證。遠(yuǎn)端節(jié)點(diǎn)、中心業(yè)務(wù)節(jié)點(diǎn)、其他應(yīng)用節(jié)點(diǎn)都需要向PKI注冊(cè)獲得證書(shū),所有向中心業(yè)務(wù)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)的節(jié)點(diǎn)都必須通過(guò)SDP 身份互認(rèn)。
本文所提基于可信身份檢索的物聯(lián)網(wǎng)隱私保護(hù)方案可看作兩階段運(yùn)行過(guò)程,分別是系統(tǒng)建立階段和數(shù)據(jù)處理階段。
2.2.1 系統(tǒng)建立階段
該階段主要包括系統(tǒng)中遠(yuǎn)端節(jié)點(diǎn)、中心業(yè)務(wù)節(jié)點(diǎn)、其他應(yīng)用節(jié)點(diǎn)以及PKI/CA 基礎(chǔ)設(shè)施初始化,并針對(duì)各參與實(shí)體身份進(jìn)行可信認(rèn)證。本文應(yīng)用SDP 技術(shù)實(shí)現(xiàn)端設(shè)備身份可信,使用單包授權(quán)技術(shù)SPA 實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的隱藏,并使用類(lèi)似地址白名單的訪問(wèn)控制方式,通過(guò)SDP 實(shí)現(xiàn)遠(yuǎn)端節(jié)點(diǎn)與中心業(yè)務(wù)節(jié)點(diǎn)的邏輯隔離,使得資源對(duì)未授權(quán)用戶(hù)透明,能減少來(lái)自外部的各種攻擊,達(dá)成身份認(rèn)證功能,確保每個(gè)接入的設(shè)備都是可信的。認(rèn)證過(guò)程如下:
SDP 架構(gòu)主要包括控制器(Controller)、連接發(fā)起方(Initial Host,IH)和接收方(Accept Host,AH)。在系統(tǒng)中SDP 建立連接過(guò)程如圖2 所示,采用“客戶(hù)端—服務(wù)器”模式,遠(yuǎn)端節(jié)點(diǎn)、其他應(yīng)用節(jié)點(diǎn)均包含IH 組件,將AH、控制器部署在中心業(yè)務(wù)節(jié)點(diǎn)上。身份確認(rèn)過(guò)程:①由AH 向控制器注冊(cè)各節(jié)點(diǎn)身份;②當(dāng)請(qǐng)求節(jié)點(diǎn)需要訪問(wèn)中心業(yè)務(wù)節(jié)點(diǎn)時(shí),請(qǐng)求節(jié)點(diǎn)向控制器發(fā)起請(qǐng)求訪問(wèn);③AH 驗(yàn)證請(qǐng)求節(jié)點(diǎn)(IH)的身份證書(shū)為請(qǐng)求節(jié)點(diǎn)建立安全連接。
Fig.2 SDP deployment圖2 SDP部署
2.2.2 數(shù)據(jù)處理階段
該階段主要是實(shí)例化本文所提基于倒排索引的的可搜索加密算法,為存儲(chǔ)在遠(yuǎn)端節(jié)點(diǎn)的加密數(shù)據(jù)建立查找索引,使得其他應(yīng)用可以通過(guò)中心業(yè)務(wù)節(jié)點(diǎn)按需高效查詢(xún)所需數(shù)據(jù)。算法描述如下:
(1)初始化算法。該算法對(duì)遠(yuǎn)端節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)文件進(jìn)行編碼并進(jìn)行加密處理,由遠(yuǎn)端節(jié)點(diǎn)運(yùn)行或預(yù)處理。
輸入:待處理文件f。輸出:加密數(shù)據(jù)庫(kù)EDB。
Step1:為文件f=(f1,…,fn)賦予對(duì)應(yīng)的唯一標(biāo)識(shí)符id=(id1,…,idn),fi表示明文文件,id表示明文文件生成的整數(shù)標(biāo)識(shí)符。
Step2:生成選擇對(duì)稱(chēng)加密算法實(shí)例(例如,AES 算法等),該對(duì)稱(chēng)加密算法包含密鑰生成算法、加密算法和解密算法(KeyGen,Enc,Dec),生成對(duì)稱(chēng)密鑰K←KeyGen{0,1}λ,對(duì)文件f=(f1,…,fn)進(jìn)行加密,xi=Enc(K,fi),得到密文序列x=(x1,…,xn)。
Step3:得到加密數(shù)據(jù)庫(kù)EDB=(idi,xi)i∈[1,n],數(shù)據(jù)庫(kù)DB=(idi,wi)i∈[1,n],wi是對(duì)應(yīng)文件的關(guān)鍵字,并將密鑰K 保留在本地,關(guān)鍵字由具體的系統(tǒng)業(yè)務(wù)決定,一般在系統(tǒng)運(yùn)行前預(yù)生成完成(例如傳感器的壓力、溫度、濕度等關(guān)鍵字名稱(chēng))。
(2)倒排索引建立算法。該算法為遠(yuǎn)端節(jié)點(diǎn)存儲(chǔ)的加密數(shù)據(jù)建立查找索引,由中心業(yè)務(wù)節(jié)點(diǎn)運(yùn)行。
輸入:數(shù)據(jù)庫(kù)DB。輸出:索引γ,字典δ。
該算法建立的是一種倒排索引,傳統(tǒng)順序索引方式以文件名稱(chēng)為關(guān)鍵字,文件內(nèi)容為檢索結(jié)果,以此建立查找索引,當(dāng)需要查找的詞條在文件末尾時(shí)則需要遍歷整個(gè)文件以確定本文件是否包含所需的詞條,通常效率較低。對(duì)于物聯(lián)網(wǎng)中格式化較強(qiáng)的數(shù)據(jù)而言,順序建立索引并不是一種高效的查找方式。倒排索引能夠很好地解決上述查找速度慢的問(wèn)題,在初始化算法中加密數(shù)據(jù)庫(kù)已經(jīng)預(yù)先將需要的詞條作為關(guān)鍵字w與其所在的文件id做了關(guān)聯(lián),只需要為關(guān)鍵字建立索引,則每次查找關(guān)鍵字即可找到所有相關(guān)的文件id,提升了查找效率。例如,以遠(yuǎn)端傳感器存儲(chǔ)文件中存儲(chǔ)的門(mén)禁識(shí)別號(hào)碼作為關(guān)鍵字映射存儲(chǔ)文件id,建立查找索引,倒排索引只要查詢(xún)門(mén)禁識(shí)別號(hào)碼即可獲得所有包含門(mén)禁識(shí)別號(hào)碼的文件id,傳統(tǒng)方法則需要遍歷傳感器存儲(chǔ)的所有文件以查找與門(mén)禁識(shí)別號(hào)碼有關(guān)的內(nèi)容,查找效率不高。
Step1:初始化空鏈表L,該鏈表每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)二元組(l,d),l為關(guān)聯(lián)字典的鍵值,d為加密的文件id,以及空字典δ,字典格式也是一個(gè)二元組(w,c),w是待檢索文件的關(guān)鍵字,c是該條目在字典中的序號(hào)。
Step2:對(duì)于數(shù)據(jù)庫(kù)DB 中的每一個(gè)文件所對(duì)應(yīng)的關(guān)鍵字wi,可以計(jì)算兩個(gè)系統(tǒng)秘密值Ki1=F(K,1||wi),Ki2=F(K,2||wi),F(xiàn) 為一個(gè)任意的偽隨機(jī)函數(shù),能夠?qū)⑤斎氪成錇殡S機(jī)比特串F:{0,1}*→{0,1}*,符號(hào)||表示串聯(lián)兩個(gè)字符串,初始化字典中的序號(hào)為零c=0。
Step3:對(duì)于每一個(gè)數(shù)據(jù)庫(kù)DB 中的id,計(jì)算索引條目信息l←F(Ki1,c),d←Enc(Ki2,id),將(l,d)添加進(jìn)鏈表L,c++,將(w,c)寫(xiě)入字典δ,鏈表L即為索引γ。
(3)應(yīng)用查詢(xún)算法。當(dāng)需要查找數(shù)據(jù)時(shí),運(yùn)行本算法。
輸入:關(guān)鍵字w*。輸出:結(jié)果集{id}。
Step1:用戶(hù)端發(fā)送想要查詢(xún)的關(guān)鍵字w,計(jì)算K*1=F(K,1||w*),K*2=F(K,2||w*),從字典δ中找出匹配的關(guān)鍵字對(duì)應(yīng)的序號(hào)值c并賦值給total。
Step2:令臨時(shí)變量i=0 直到i=total:計(jì)算i對(duì)應(yīng)的l值,再在索引γ中進(jìn)行匹配得到d值。若d為空,則i自增重新計(jì)算l的值再進(jìn)行匹配;否則,計(jì)算id←Dec(K*2,d),將id加入結(jié)果集,i++。
Step3:根據(jù)得到的{id}在加密數(shù)據(jù)庫(kù)中進(jìn)行匹配,得到對(duì)應(yīng)的加密密文,再使用本地存儲(chǔ)的密鑰對(duì)密文進(jìn)行解密,解密后將明文結(jié)果集發(fā)送給查詢(xún)用戶(hù)。
(4)文件—索引添加算法。當(dāng)需要增加文件并更新索引時(shí),由中心業(yè)務(wù)節(jié)點(diǎn)執(zhí)行。
輸入:文件f。輸出:索引γ、字典δ。
Step1:為需要添加的文件f生成對(duì)應(yīng)的標(biāo)識(shí)符id,提取文件f的關(guān)鍵字集Wf保存,計(jì)算文件的密文x,并將對(duì)應(yīng)的(id,x)記錄在加密數(shù)據(jù)庫(kù)EBD 中,并同步根據(jù)明文提取對(duì)應(yīng)的id、加密密鑰K和關(guān)鍵字集Wf。
Step2:對(duì)于wi∈Wf,計(jì)算Ki1=F(K,1||w),Ki2=F(K,2||w),在字典中查找關(guān)鍵字wi是否有對(duì)應(yīng)序號(hào)c,若不存在該序號(hào)則設(shè)置新插入的關(guān)鍵字序號(hào)c=0,若原字典存在該關(guān)鍵字及序號(hào),則將該序號(hào)c加一并作為關(guān)鍵字wi的字典序號(hào)。
Step3:計(jì)算l=F(Ki1,c),d=Enc(Ki2,id),將(l,d)按加入索引γ,并將(w,c)插入到字典δ。當(dāng)將(w,c)插入δ時(shí),假設(shè)它將覆蓋任何先前的條目(w,·),輸出更新后的索引γ及字典δ。
(5)文件—索引刪除算法。當(dāng)需要?jiǎng)h除目前索引中引用的文件及對(duì)應(yīng)索引條目時(shí),由中心業(yè)務(wù)節(jié)點(diǎn)執(zhí)行。
輸入:文件id。輸出:索引γ。
Step1:查詢(xún)用戶(hù)選定將要?jiǎng)h除的記錄。
Step2:在加密數(shù)據(jù)庫(kù)中匹配id對(duì)應(yīng)的密文,使用密鑰K進(jìn)行解密得到明文,再根據(jù)明文提取對(duì)應(yīng)的關(guān)鍵字集Wf,加密數(shù)據(jù)庫(kù)中同時(shí)刪除該id對(duì)應(yīng)的記錄。
Step3:對(duì)于該id對(duì)應(yīng)的每個(gè)關(guān)鍵字,生成所需的秘鑰Ki1和Ki2,計(jì)算對(duì)id加密后的revid值(索引中d列的值),在字典δ中取出關(guān)鍵字對(duì)應(yīng)的計(jì)數(shù)值c賦值給total。令i=0直到i=total:對(duì)其進(jìn)行加密得到l的值,再?gòu)募用芩饕?中取出對(duì)應(yīng)d的值;當(dāng)revid與d值相同,則物理刪除索引中的該條記錄;否則執(zhí)行i++。最終,輸出更新后的索引γ。
(1)認(rèn)證性安全。本文所提應(yīng)用方案使用可信身份認(rèn)證技術(shù)SDP 實(shí)現(xiàn)系統(tǒng)中參與者實(shí)體的身份認(rèn)證,因此假設(shè)參與者都是誠(chéng)實(shí)的。
(2)機(jī)密性安全。如果存在安全的偽隨機(jī)函數(shù)F,以及安全的對(duì)稱(chēng)加密算法Fun{KeyGen,Enc,Dec},則本應(yīng)用方案是抵抗竊聽(tīng)敵手攻擊安全的。
(3)安全分析。竊聽(tīng)敵手具備監(jiān)聽(tīng)網(wǎng)絡(luò)消息的能力,在本系統(tǒng)中允許竊聽(tīng)敵手可以獲取遠(yuǎn)端節(jié)點(diǎn)和中心業(yè)務(wù)節(jié)點(diǎn)之間傳遞的密文信息x,索引γ,竊聽(tīng)敵手的視圖記為Vieweadv{x,l,d}。對(duì)于密文x而言,其由安全的對(duì)稱(chēng)加密算法實(shí)現(xiàn),則由其語(yǔ)義安全性,x應(yīng)當(dāng)與隨機(jī)串的xr不可區(qū)分。對(duì)于索引γ而言,其l項(xiàng)目由安全的偽隨機(jī)函數(shù)生成,則由于偽隨機(jī)函數(shù)的單向性,l應(yīng)當(dāng)與一個(gè)隨機(jī)數(shù)不可區(qū)分;其d項(xiàng)由安全的對(duì)稱(chēng)加密算法計(jì)算得到,則由其語(yǔ)義安全性,d應(yīng)當(dāng)與隨機(jī)串的dr不可區(qū)分。因此,存在理想的安全視圖Viewide{xr,rand,dr},根據(jù)安全的對(duì)稱(chēng)加密算法和偽隨機(jī)函數(shù)的安全性質(zhì),可以得到Vieweadv和Viewide是不可區(qū)分的,因此本文所提應(yīng)用方案是安全抵抗竊聽(tīng)敵手的。
本方案是面向物聯(lián)網(wǎng)環(huán)境而提出,針對(duì)物聯(lián)網(wǎng)中遠(yuǎn)端節(jié)點(diǎn)的場(chǎng)景,本文使用11 位數(shù)字(真實(shí)場(chǎng)景中可對(duì)應(yīng)遠(yuǎn)端節(jié)點(diǎn)對(duì)身份鑒別碼、電話號(hào)碼或身份證號(hào)等加密查詢(xún))作為需要存儲(chǔ)和查詢(xún)的文件條目。每次實(shí)驗(yàn)隨機(jī)生成100、500、2 500、12 500、62 500 個(gè)11 位數(shù)字作為測(cè)試數(shù)據(jù)集,從索引構(gòu)建、搜索、更新(添加和刪除)上對(duì)方案性能進(jìn)行測(cè)試評(píng)估。其中,對(duì)稱(chēng)加密算法實(shí)例選擇AES 算法,偽隨機(jī)數(shù)函數(shù)使用AES 算法對(duì)輸入數(shù)據(jù)進(jìn)行一次加密,用加密結(jié)果作為偽隨機(jī)數(shù)的模擬。
本文實(shí)驗(yàn)平臺(tái):Apple M1 芯片8 核心CPU(4*3.2GHz+4*2.064GHz),8GB 內(nèi)存空間作為運(yùn)行環(huán)境,采用Python3.1 編程語(yǔ)言進(jìn)行程序編寫(xiě)。基于不同量級(jí)的數(shù)據(jù),索引存儲(chǔ)空間及效率測(cè)試如表1、表2所示。
Table 1 Index storage space test表1 索引存儲(chǔ)空間測(cè)試
Fig.3 Index storage space trend圖3 索引存儲(chǔ)空間趨勢(shì)
通過(guò)空間測(cè)試,在100~62 500 量級(jí)的數(shù)據(jù)上,對(duì)索引所占空間(單位KB)進(jìn)行測(cè)試評(píng)價(jià)。在100 條數(shù)據(jù)時(shí),索引占用4.623KB 存儲(chǔ)空間;在模擬測(cè)試最大的62 500 量級(jí)數(shù)據(jù)上,索引所占空間為1 356.08KB,空間占用趨勢(shì)如圖3 所示。可以看出,隨著數(shù)據(jù)條目的增長(zhǎng),索引存儲(chǔ)空間擴(kuò)張曲線尚平滑。對(duì)于物聯(lián)網(wǎng)系統(tǒng)中資源受限的設(shè)備而言,該空間大小依然是可以接受的。
方案中各函數(shù)執(zhí)行時(shí)間與增長(zhǎng)趨勢(shì)如表2 和圖4 所示,本文使用100~62 500的數(shù)據(jù)量,對(duì)搜索算法(圖4-圓形標(biāo)記線)、更新—增加算法(圖4 三角形標(biāo)記線)、更新—?jiǎng)h除算法(圖4 正方形標(biāo)記線)進(jìn)行運(yùn)行時(shí)間測(cè)試。結(jié)果顯示,搜索算法的運(yùn)行時(shí)間從0.09ms 增長(zhǎng)到0.817ms;更新—增加操作的運(yùn)行時(shí)間從0.166ms 增長(zhǎng)到1.56ms;更新—?jiǎng)h除操作的運(yùn)行時(shí)間從0.126 增長(zhǎng)到6.765ms。在物聯(lián)網(wǎng)環(huán)境下,本方案在搜索和更新—增加算法運(yùn)行上效率較低,比較適合查找和增加業(yè)務(wù)繁重的場(chǎng)景。
Table 2 Index efficiency test表2 索引效率測(cè)試
Fig.4 Running time trend of each function of the scheme圖 4 方案各函數(shù)執(zhí)行時(shí)間趨勢(shì)
在本方案數(shù)據(jù)傳輸方面,通信的時(shí)間開(kāi)銷(xiāo)主要依賴(lài)物聯(lián)網(wǎng)場(chǎng)景所使用的實(shí)際帶寬,查詢(xún)操作與刪除操作僅需傳輸關(guān)鍵字即可,在本實(shí)驗(yàn)中每條目標(biāo)數(shù)據(jù)為11 個(gè)符號(hào)的字符串,那么關(guān)鍵字應(yīng)當(dāng)小于11 字節(jié),對(duì)于增加操作本實(shí)驗(yàn)需要傳輸關(guān)鍵字(小于11 字節(jié))、數(shù)據(jù)條目(11 字節(jié)),更新的一條字典表項(xiàng)(小于32 字節(jié))和更新的一條索引(小于32 字節(jié))的表項(xiàng),如果修改一條數(shù)據(jù)最多需要11+11+32+32=86字節(jié),對(duì)于物聯(lián)網(wǎng)系統(tǒng)傳輸而言是可以接受的。
文獻(xiàn)[14]提出一種可拆分倒排索引的搜索加密方案,適用于有批量數(shù)據(jù)處理的場(chǎng),該方案將搜索索引的構(gòu)建時(shí)間分?jǐn)偟搅嗣看螜z索過(guò)程中,這樣在一定程度上增加了檢索的時(shí)間消耗。本文所提方案的索引建立階段是在初始化階段進(jìn)行,因此在執(zhí)行搜索算法的過(guò)程中相比文獻(xiàn)[14]具有優(yōu)勢(shì)。此外,在索引—增加、索引—?jiǎng)h除算法設(shè)計(jì)上,文獻(xiàn)[14]每次由客戶(hù)端根據(jù)需要添加或刪除的文件集生成對(duì)應(yīng)的文件索引和搜索索引,然后由服務(wù)器(代理)進(jìn)行合并與拆分,而本文所提方案則將增加和刪除導(dǎo)致更新索引的問(wèn)題全部分給代理服務(wù)器執(zhí)行。文獻(xiàn)[14]中文件索引、字典計(jì)算與存儲(chǔ)復(fù)雜度對(duì)比如表3 所示。其中,F(xiàn)、G為隨機(jī)函數(shù),id與c均為整型編碼,w為關(guān)鍵字,Enc 為加密算法。文獻(xiàn)[14]中的方案共需要計(jì)算兩次隨機(jī)函數(shù),本文需要計(jì)算一次加密和一次隨機(jī)函數(shù)。在字典索引的生成過(guò)程中,本文具備較少的計(jì)算代價(jià)。
Table 3 Scheme comparison表3 方案對(duì)比
綜上,本方案在有限的設(shè)備性能環(huán)境中檢索所耗費(fèi)的時(shí)間較少,在物聯(lián)網(wǎng)遠(yuǎn)端節(jié)點(diǎn)上的有限空間中索引耗費(fèi)的存儲(chǔ)空間也較小,能夠滿(mǎn)足物聯(lián)網(wǎng)場(chǎng)景下數(shù)據(jù)應(yīng)用的隱私保護(hù)和檢索需求。
本文提出了一種基于可信身份檢索的物聯(lián)網(wǎng)隱私保護(hù)方案,該方案利用軟件定義邊界技術(shù)保證系統(tǒng)訪問(wèn)者的身份是可信的,使用一種基于倒排索引的可搜索加密算法實(shí)現(xiàn)了密文數(shù)據(jù)的高效檢索功能,并給出基本的安全性分析與描述。實(shí)驗(yàn)表明,該方案在物聯(lián)網(wǎng)場(chǎng)景下,計(jì)算復(fù)雜度和存儲(chǔ)空間都在可接受范圍內(nèi),可在一定程度上緩解數(shù)據(jù)傳輸所帶來(lái)的的網(wǎng)絡(luò)帶寬壓力,同時(shí)滿(mǎn)足物聯(lián)網(wǎng)數(shù)據(jù)加密存儲(chǔ)和隱私需求。