王繼鋒,王國峰
(1.西安交通大學管理學院,陜西 西安 710049;2.國網(wǎng)匯通金財(北京)信息科技有限公司,北京 100053;3.朗新科技集團股份有限公司,江蘇 無錫 214135)
隨著萬物互聯(lián)的高速發(fā)展,數(shù)據(jù)呈爆炸性趨勢增長,物聯(lián)網(wǎng)得到了快速發(fā)展[1]。2020 年,全球物聯(lián)網(wǎng)設備數(shù)量達到126 億[2],全球物聯(lián)網(wǎng)市場規(guī)模達到2 480 億美元,預計到2025 年全球物聯(lián)網(wǎng)市場規(guī)模將超過1.5 萬億美元[3]。隨著5G 通信、物聯(lián)網(wǎng)等技術的快速發(fā)展,中國物聯(lián)網(wǎng)市場規(guī)模由2015 年的7 510.6 億元增長至2019 年的15 700 億元[4],且2020 年中國新增5G 連接設備超過2 億個,5G 基礎設施數(shù)量已躍居世界之首[5]。
萬物互聯(lián)時代,每天產(chǎn)生的數(shù)據(jù)量急增,數(shù)據(jù)在地理上分散,對數(shù)據(jù)安全性和響應時間都提出了更高的要求。云計算模式為大數(shù)據(jù)處理提供了高效的計算平臺,但目前網(wǎng)絡帶寬的增長速度遠遠趕不上數(shù)據(jù)的增長速度[6-7]。因此需要解決帶寬和時延兩大瓶頸。邊緣計算在靠近數(shù)據(jù)源頭的網(wǎng)絡邊緣提供計算服務和存儲資源,這里的邊緣是指從云服務器到數(shù)據(jù)源之間的任意資源[6]。由于邊緣計算能夠在靠近終端設備的邊緣節(jié)點處理和存儲數(shù)據(jù),從而能夠較好地滿足實時響應、多終端接入和節(jié)省網(wǎng)絡流量等需求,受到學術界和工業(yè)界的高度關注[8]。
盡管邊緣計算具有諸多優(yōu)點,但也面臨著各種隱私和安全威脅。作為云計算的拓展,邊緣計算仍具有與云計算相同的數(shù)據(jù)安全問題:用戶數(shù)據(jù)在云計算平臺存儲和計算,處于不可信環(huán)境中。針對此問題,用戶的數(shù)據(jù)在上傳至云計算平臺之前,可利用近數(shù)據(jù)端的邊緣節(jié)點直接對數(shù)據(jù)進行計算和處理,以保護用戶隱私數(shù)據(jù),降低邊緣計算模式隱私泄露風險。由于邊緣節(jié)點介于本地用戶和云服務器之間,這一特性使在云計算模式中的典型的數(shù)據(jù)加密機制無法直接應用于邊緣計算模式。因此,如何設計基于邊緣計算的隱私數(shù)據(jù)保護和共享方案成為研究的熱點和挑戰(zhàn)。
本文利用邊緣節(jié)點位于用戶端這一優(yōu)勢,通過邊緣節(jié)點對用戶數(shù)據(jù)進行加密,保護用戶隱私數(shù)據(jù),將密文上傳到云計算平臺。然而,云計算平臺難以對直接加密后的數(shù)據(jù)進行計算和數(shù)據(jù)搜索。本文針對此問題設計了邊緣計算模式下密文搜索方案,使邊緣節(jié)點與云計算平臺協(xié)同配合,在邊緣節(jié)點加密數(shù)據(jù)的同時,基于隱私保護數(shù)據(jù)構建加密索引,將密文索引上傳到云計算平臺,借助云計算平臺實現(xiàn)密文搜索功能,在保護用戶隱私數(shù)據(jù)的同時,提供對加密數(shù)據(jù)的搜索功能。
進一步地,不同用戶的數(shù)據(jù)在不同邊緣節(jié)點加密,密鑰安全隔離,若數(shù)據(jù)上傳者和數(shù)據(jù)使用者位于不同邊緣節(jié)點下,如邊緣節(jié)點B 下的用戶需要訪問邊緣節(jié)點A 下的用戶上傳的數(shù)據(jù),就需要在不同邊緣節(jié)點之間進行數(shù)據(jù)安全共享。本文結合基于身份加密和公鑰加密機制,實現(xiàn)密鑰在不同邊緣節(jié)點和云計算平臺之間安全分享,從而實現(xiàn)數(shù)據(jù)隱私保護和安全共享。
由于邊緣節(jié)點資源是動態(tài)變化的,需要密文搜索與共享方案能夠根據(jù)業(yè)務和用戶的動態(tài)需求,支持對文檔內(nèi)容進行動態(tài)更新,從而文檔資源可按需調(diào)整,提升方案的靈活性;另外,如果位于邊緣節(jié)點A 下的用戶移動到邊緣節(jié)點B 下,要在邊緣節(jié)點B 下搜索原來的數(shù)據(jù),就需要對原來的密鑰、索引和相關數(shù)據(jù)進行相應遷移。針對此問題,本文設計了一種數(shù)據(jù)動態(tài)更新方案,在邊緣節(jié)點和云計算平臺之間安全地同步和遷移索引,實現(xiàn)數(shù)據(jù)隱私保護和動態(tài)更新。
本文的主要貢獻有以下幾點。
1) 針對邊緣計算模式設計安全性高、實用性好的密文搜索方案,并從查詢性能和安全性方面對該方案進行系統(tǒng)的定量分析。從性能和安全性分析方面可以看出,本文設計的密文搜索方案安全性高,不需要專門定制及修改當前的云應用程序,是保護用戶數(shù)據(jù)的有效解決方案。
2) 提出一種數(shù)據(jù)安全共享方案,結合身份加密和公鑰加密,實現(xiàn)密鑰在不同邊緣節(jié)點和云計算平臺之間安全分享,從而實現(xiàn)數(shù)據(jù)隱私保護和安全共享。
3) 設計加密索引動態(tài)更新方案,支持索引數(shù)據(jù)遷移同步,在添加、刪除或更新文檔內(nèi)容時,依然支持用戶進行數(shù)據(jù)搜索,使數(shù)據(jù)更新和數(shù)據(jù)搜索并行執(zhí)行,從而提高事務執(zhí)行效率。
邊緣計算在數(shù)據(jù)源頭提供服務,將原有云計算中心的部分或全部任務遷移到邊緣節(jié)點執(zhí)行,使其在很多物聯(lián)網(wǎng)應用和移動應用上發(fā)揮巨大作用,如增強現(xiàn)實、圖像識別、網(wǎng)站性能優(yōu)化、智慧城市、車聯(lián)網(wǎng)等[7,9]。盡管邊緣計算具有諸多優(yōu)勢,但也面臨著數(shù)據(jù)隱私和安全威脅。本文假設邊緣節(jié)點部署在用戶側,處于用戶可控范圍內(nèi),且是可信的;其他邊緣節(jié)點和云計算平臺部署在遠端或云計算平臺,處于半可信或惡意敵手的環(huán)境中。邊緣節(jié)點介于本地用戶和云計算平臺之間,可以很好地過濾和保護用戶數(shù)據(jù)隱私。
在用戶數(shù)據(jù)傳送到云計算平臺之前,對數(shù)據(jù)加密可以有效保護用戶的隱私數(shù)據(jù)。ShadowCrypt[10]利用瀏覽器插件對用戶數(shù)據(jù)做加密保護,其針對的數(shù)據(jù)為文本型輸入數(shù)據(jù),不適用于更復雜的物聯(lián)網(wǎng)場景。Mylar[11]針對Web 應用服務防止用戶隱私數(shù)據(jù)泄露,僅支持Meteor JavaScript 框架,向后兼容性不足。在邊緣計算模式下,方晨等[12]基于區(qū)塊鏈和聯(lián)邦學習實現(xiàn)邊緣計算隱私保護;巫光福等[13]基于區(qū)塊鏈與云-邊緣計算混合架構對車聯(lián)網(wǎng)數(shù)據(jù)進行安全存儲與共享;Kumari 等[14]基于Carmichael 定理的改進同態(tài)加密方案保護醫(yī)療數(shù)據(jù)安全和隱私。
在保護用戶數(shù)據(jù)隱私的前提下進行數(shù)據(jù)計算操作,可首先在本地對數(shù)據(jù)做特殊加密操作,然后在密文上進行計算。同態(tài)加密[15-17]和差分隱私[18-19]算法已廣泛應用于此類場景。Lu 等[15]利用同態(tài)加密,為物聯(lián)網(wǎng)異構設備設計了一種輕量級數(shù)據(jù)聚合方案,保護數(shù)據(jù)機密性和完整性,但沒有涉及身份隱私和移動性。Lyu 等[20]設計了基于秘密共享和差分隱私的隱私保護數(shù)據(jù)聚合方案。該方案同樣不涉及移動性。安全多方計算在多用戶之間進行安全計算,同時保護各方輸入數(shù)據(jù)的隱私[21-22]。很多文獻使用混淆電路方法設計實際應用協(xié)議,如人臉識別[23]和遠程診斷[24],但這些方案需要很高的計算量及通信復雜度?;诿孛芄蚕頇C制,Damgard 等[25]設計了一種用于相等性測試、比較和位分解的通用協(xié)議。為了提高效率,Nishide 等[26]構建了用于求解2 個數(shù)大小關系的協(xié)議,不需要依賴位分解操作。Dinur 等[27]基于分布式離散對數(shù)問題設計了一個同態(tài)秘密共享協(xié)議。
針對密文數(shù)據(jù)搜索,Song 等[28]首先設計了一個可實用的方案,此方案搜索數(shù)據(jù)時需要云計算平臺對密文數(shù)據(jù)進行全文掃描,具有一定的復雜度,安全性也需要進一步提高。Curtmola 等[29]構建倒排索引密文搜索方案,提高了安全性和搜索性能,但不支持文檔動態(tài)更新。在邊緣計算模式下,王娜等[30]基于分塊技術設計了密文搜索方案;Li 等[31]利用云計算輔助設計了關鍵詞排序搜索方案;Liu 等[32]設計了適合于邊緣計算場景的數(shù)據(jù)安全搜索和存儲方案。
為支持高級搜索功能,Kamara 等[33]通過維護復雜的數(shù)據(jù)結構設計密文搜索方案,實現(xiàn)動態(tài)更新機制。Boneh 等[34]構建關鍵字搜索公鑰加密(PEKS,public key encryption with keyword search)算法實現(xiàn)多用戶數(shù)據(jù)加密搜索,具有一定的時間開銷。Liu等[35]在PEKS 基礎上借助云計算平臺參與計算,以提高計算性能。
用戶數(shù)據(jù)使用用戶對應的密鑰進行加密,密鑰是私有的。如果某一用戶A 想要向另一用戶B 分享自己的某加密文檔,用戶B 需要收到用戶A 的加密數(shù)據(jù),同時需要從用戶A 獲得密文數(shù)據(jù)對應的密鑰,才能看到解密后的明文,所以加密密鑰需要在不同用戶之間安全地共享。
在邊緣計算模式中,邊緣節(jié)點可對用戶數(shù)據(jù)進行加密,同時管理數(shù)據(jù)密鑰。為實現(xiàn)不同邊緣節(jié)點下的用戶之間的數(shù)據(jù)共享,公鑰加密(PKE,public key encryption)機制可有效地在不同邊緣節(jié)點之間實現(xiàn)安全密鑰共享。但PKE 需確認身份證書的合法性,判斷證書是否過期或撤銷,產(chǎn)生很多證書狀態(tài)查詢請求,降低通信效率。身份加密(IBE,identity based encryption)機制可解決身份驗證問題,但需要確保生成和托管私鑰的計算節(jié)點是可信的。
Shamir[36]基于IBE 提出一種加密和簽名方案,但不具備可完全實用性。Boneh 等[37]基于Weil 對設計了一種可實用的方案,但需要將私鑰進行托管。為解決私鑰托管問題,文獻[38-39]利用IBE 和PKE進行數(shù)據(jù)保護,Lewko 等[40]設計多授權方的數(shù)據(jù)加密方案。在邊緣計算場景中,SHARE-ABE[41]基于屬性加密方案設計數(shù)據(jù)共享框架;Zhang 等[42]在移動邊緣計算模式中設計一種抗密鑰濫用的輕量級數(shù)據(jù)共享方案。
為了安全地在邊緣節(jié)點和云計算平臺之間分享密鑰,本文結合IBE 和PKE 設計密鑰安全共享方案,利用云計算平臺計算和存儲能力,實現(xiàn)不同用戶之間的密文共享機制。
令{0,1}m代表所有m位字符串的集合。為從分布X中隨機取元素x,為從集合S中隨機取元素x,x←A′為經(jīng)過算法A′得到x。Zq為加法群{0,1,···,q-1},q為模。為Zq中去除單位元O的集合。對于足夠大的s和任意多項式p(·),若函數(shù)f滿足,則認為f(s)為可忽略的。給定任意概率多項式時間算法A′,分布X和Y計算不可區(qū)分需滿足
偽隨機函數(shù)f的安全性滿足{0,1}m×{0,1}n→ {0,1}s,其是多項式時間可計算的,其中,m,n,s> 0。對任意隨機函數(shù)F、概率多項式時間對手A、足夠大s和多項式p,有
對稱加密算法E安全性滿足:對任意概率多項式時間對手A、足夠大s和多項式p,有
其中,A得不到c的明文信息,|m0|=|m1|。若方案e=(K,E,De)滿足以上安全性,則具有選擇密文攻擊安全性,其中,K表示密鑰算法,E表示加密算法,De 表示解密算法。
可搜索加密算法一般包含如下多項式時間算法。
1) 密鑰生成算法。由安全參數(shù)s作為輸入,生成密鑰k,k=KeyGen(s)。
2)索引生成算法。由文檔集合D和密鑰k作為輸入,生成索引I,I=BuildIndex(k,D)。
3) 令牌生成算法。由密鑰k和關鍵字w作為輸入,生成搜索令牌Tw,Tw=Trapdoor(k,w)。
4) 搜索算法。由搜索令牌Tw和索引I作為輸入,生成針對文檔集合D的查詢結果D(w),D(w)=Search(Tw,I)。
針對密文搜索的攻擊主要有2 個目標,一是猜測用戶查詢的關鍵字,即得到查詢令牌和關鍵字的映射關系;二是猜測密文內(nèi)容。
在密文搜索相關術語中,搜索模式是指對于返回結果相同的2 個搜索令牌,能否決定這2 個搜索令牌對應于同一個關鍵字的概率不大于。訪問模式是指從返回結果中能夠獲取的信息,如判定2 個文檔同時含有的關鍵字的信息[43-44]。
密文搜索安全性級別定義如下。
選擇明文攻擊(CPA,chosen plaintext attack)安全性。在未查詢前提下,密文及索引不會泄露有關明文的任何信息,但有可能泄露其他信息,如文檔中關鍵字個數(shù)信息或位置信息。
非自適應選擇關鍵字攻擊(CKA1,non-adaptive chosen keyword attack)安全性。攻擊者在一次查詢的前提下,密文和索引除泄露搜索模式和訪問模式以外不會泄露其他有關明文和關鍵字的信息。
自適應選擇關鍵字攻擊(CKA2,adaptive chosen keyword attack)安全性。允許攻擊者在已搜索的令牌和搜索結果的基礎上發(fā)出查詢請求,密文和索引除泄露搜索模式和訪問模式以外不會泄露其他有關明文和關鍵字的信息。
根據(jù)密文搜索泄露信息劃分安全等級從低到高排列如下。
Le4:云計算平臺可以得知關鍵字在文檔中的具體位置和出現(xiàn)次數(shù)。
Le3:云計算平臺可以得知哪些文檔中含有相同的關鍵字,關鍵字在文檔中第一次出現(xiàn)的位置(不知道具體每一次的位置和出現(xiàn)次數(shù))。
Le2:云計算平臺可以得知哪些文檔中含有相同的關鍵字。
Le1:僅當用戶使用查詢功能時,云計算平臺才能得知哪些文檔中含有相同的關鍵字。隨著用戶查詢次數(shù)逐漸增多,云計算平臺得知的信息也逐漸積累,該安全模型逐漸退化為Le2。
Le0:在Le1 的基礎上,即使多次查詢也不暴露文檔中含有相同的關鍵字的信息。僅會暴露常規(guī)查詢統(tǒng)計信息(文檔的密文長度、查詢用戶的IP地址和查詢頻率等)。
密文搜索的攻擊者的前置知識等級及關聯(lián)如圖1 所示。
圖1 攻擊者的前置知識等級及關聯(lián)
預知查詢信息。1) 部分查詢信息:例如文檔內(nèi)容為微信聊天記錄,攻擊者可以參考典型用戶的使用習慣,推測用戶關心的內(nèi)容和比較常用的關鍵字等。2) 部分查詢關鍵字:攻擊者知道某些確切的查詢關鍵字,即部分查詢令牌和對應的關鍵字已泄露給了攻擊者,攻擊者試圖猜測所有的查詢關鍵字內(nèi)容。
預知文檔信息。1) 部分文檔信息:例如文檔為郵件內(nèi)容,攻擊者可以根據(jù)用戶的身份大致知道郵件可能的類型,如財務報表、競拍的標底、合同協(xié)議等。2) 部分文檔內(nèi)容:知道某些確切的文檔內(nèi)容或某些文檔的重要信息,知道文檔集合一定包含某些內(nèi)容,例如群發(fā)郵件被攻擊者獲取等。3) 所有文檔信息:不僅知道全部的明文文檔內(nèi)容,而且知道某些查詢對應的確切關鍵字。
針對密文搜索的攻擊者可分為2 種。1) 被動攻擊者:遵從正常的服務流程,不主動進行攻擊,希望通過用戶的查詢猜測出“密文文檔內(nèi)容”和“查詢關鍵字內(nèi)容”。2) 主動攻擊者:利用攻擊或欺騙手段獲取文檔集合中的某些選定文檔,或誘導用戶進行某一選定的查詢。根據(jù)密文搜索攻擊相關文獻[43-44],攻擊方法可通過對明文及密文搜索過程和結果進行統(tǒng)計,利用查詢計數(shù)進行查詢恢復攻擊(即查詢某關鍵字返回結果和對應文檔個數(shù)),或根據(jù)關鍵字對或多個關鍵字在同一文檔中共同出現(xiàn)的概率進行擬合和優(yōu)化得到明文內(nèi)容。
邊緣計算由多個位于本地設備和云計算平臺之間的邊緣節(jié)點協(xié)同完成數(shù)據(jù)存儲與計算任務。一般而言,邊緣節(jié)點與用戶之間的鏈接和安全更可靠,與云計算平臺之間的交互和鏈接更穩(wěn)定。如在邊緣節(jié)點就是用戶的主機上的虛擬機或局域網(wǎng)服務器的場景下,用戶可以將隱私信息直接發(fā)送給邊緣節(jié)點處理,邊緣節(jié)點與用戶之間的可信度很高。再如某公司某一業(yè)務上云,該業(yè)務由不同部門合作完成,各部門位于不同地區(qū),相互之間存在數(shù)據(jù)交互。各部門分別在己方可信環(huán)境內(nèi)部署邊緣節(jié)點,用于和云計算平臺及其他部門展開業(yè)務交互。這種情況下己方的邊緣節(jié)點被認為是可信的,云計算平臺和其他部門的邊緣節(jié)點被認為是“誠實而好奇”的半可信實體,己方部門用戶的數(shù)據(jù)隱私安全問題需要受到保護。
邊緣計算模式下密文搜索與共享系統(tǒng)架構由用戶、邊緣節(jié)點和云計算平臺3 個關鍵角色組成,如圖2 所示,利用邊緣節(jié)點位置和功能的特殊性,對用戶和云計算平臺之間的傳輸數(shù)據(jù)進行加密和索引,以保護用戶的隱私數(shù)據(jù),并實現(xiàn)搜索功能;同時利用云計算平臺超強計算能力和超大存儲空間,存儲密文數(shù)據(jù)并維護和更新數(shù)據(jù)索引。用戶數(shù)據(jù)在邊緣節(jié)點處進行加密,構建索引,同時密文數(shù)據(jù)和加密索引同步更新到云計算平臺。當用戶檢索數(shù)據(jù)時,密文搜索功能由云計算平臺執(zhí)行,由云計算平臺返回相應的密文數(shù)據(jù)。如果返回的密文在邊緣節(jié)點處有對應的密鑰,則可直接解密返回給用戶;如果沒有對應的密鑰,則需要和密鑰所在的邊緣節(jié)點進行密鑰安全傳輸,獲得相應的密鑰后即可對密文進行解密。當用戶對原始文件數(shù)據(jù)修改后,對應的文件索引需要同步更新,以確保正確的檢索結果。
圖2 密文搜索與共享系統(tǒng)架構
在密文搜索與共享系統(tǒng)架構中,邊緣節(jié)點隱私保護機制通過識別和過濾應用層協(xié)議來加密和保護用戶的隱私數(shù)據(jù)。隱私數(shù)據(jù)保護主要由以下功能模塊組成。
1) 數(shù)據(jù)識別模塊。根據(jù)服務器名稱標識(SNI,server name indication)、統(tǒng)一資源定位符(URL,uniform resource locator)等特征字段分析應用協(xié)議,識別用戶隱私數(shù)據(jù)。通過分析請求內(nèi)容格式,找到要加密的數(shù)據(jù),以交給數(shù)據(jù)加密模塊加密明文數(shù)據(jù);并把要搜索的數(shù)據(jù)交給索引服務模塊構建索引。
2) 數(shù)據(jù)加密模塊。加解密用戶隱私數(shù)據(jù),針對屬于同一文件的用戶數(shù)據(jù),構造密文元數(shù)據(jù)。元數(shù)據(jù)內(nèi)容包括密鑰標識、邊緣節(jié)點標識、特征標識等。元數(shù)據(jù)存儲在邊緣節(jié)點處,用于標識加密數(shù)據(jù),以便接收到密文數(shù)據(jù)時,可以識別并找到對應的密鑰進行解密。解密操作根據(jù)元數(shù)據(jù)中的特征標識定位到密文內(nèi)容,利用密鑰標識獲得密鑰并解密。
3) 索引服務模塊。當用戶加密后的文件上傳到云計算平臺后,會返回對應的文件標識符。索引服務模塊得到文件標識符和數(shù)據(jù)識別模塊緩存的明文數(shù)據(jù)并建立加密索引,在文件數(shù)據(jù)更新時維護和更新搜索索引。邊緣節(jié)點建立的索引同步更新到云計算平臺,由云計算平臺融合和管理各邊緣節(jié)點上傳的索引數(shù)據(jù),形成統(tǒng)一的搜索索引,成為主索引。當用戶文件更新后,邊緣節(jié)點形成索引更新數(shù)據(jù),并上傳到云計算平臺,由云計算平臺在主索引上完成同步更新。典型步驟執(zhí)行過程如下。
首先,數(shù)據(jù)識別模塊處理用戶數(shù)據(jù),識別并緩存要加密的隱私數(shù)據(jù)。然后,數(shù)據(jù)加密模塊生成密鑰加密數(shù)據(jù),將元數(shù)據(jù)附到密文頭部,并在數(shù)據(jù)庫中存放密鑰和密鑰標識;邊緣節(jié)點將加密后的文件數(shù)據(jù)發(fā)送到云計算平臺后,接收返回的文件標識符。最后,索引服務模塊使用緩存的文件數(shù)據(jù)和文件標識符建立索引,并將索引及時與云計算平臺同步。
當加密數(shù)據(jù)由云計算平臺返回后,數(shù)據(jù)加密模塊通過分析特征標識定位密文數(shù)據(jù);根據(jù)密文頭部元數(shù)據(jù)中的密鑰標識獲得對應密鑰并解密,將明文數(shù)據(jù)返回給用戶。
當用戶輸入查詢內(nèi)容進行搜索操作時,邊緣節(jié)點根據(jù)查詢請求獲得要搜索的關鍵字,然后向云計算平臺發(fā)起檢索請求。云計算平臺根據(jù)檢索請求返回對應的文件標識符,用戶利用文件標識符請求對應的密文文檔,當云計算平臺返回相對應的密文文檔后,邊緣節(jié)點獲取密文文檔對應的密鑰,解密并將明文數(shù)據(jù)返回給用戶。
邊緣計算模式下密文搜索與共享技術利用邊緣節(jié)點對用戶數(shù)據(jù)加密,將密文上傳到云計算平臺上,需要針對密文數(shù)據(jù)實現(xiàn)搜索、共享和動態(tài)更新等功能。本文針對此問題分別設計密文搜索、數(shù)據(jù)安全共享及索引動態(tài)更新機制,使邊緣節(jié)點與云計算平臺協(xié)同配合,在邊緣節(jié)點加密數(shù)據(jù)的同時,基于隱私保護數(shù)據(jù)構建加密索引,借助云計算平臺實現(xiàn)密文搜索功能,同時實現(xiàn)索引數(shù)據(jù)同步和動態(tài)更新方案,結合IBE 和PKE 實現(xiàn)密鑰安全共享,在保護用戶隱私數(shù)據(jù)的同時,提供對加密數(shù)據(jù)的搜索、共享和動態(tài)更新功能。
在邊緣節(jié)點處加密數(shù)據(jù)勢必與云計算平臺的數(shù)據(jù)計算功能產(chǎn)生沖突,如數(shù)據(jù)搜索功能。針對此問題,本文設計了基于加密索引的密文搜索方案,在保護用戶隱私數(shù)據(jù)的同時,提供對加密數(shù)據(jù)的搜索功能。
基于加密索引的密文搜索方案在云計算平臺執(zhí)行搜索和更新操作,搜索過程不泄露明文信息,只泄露一定的搜索模式和訪問模式。在邊緣節(jié)點處,每個關鍵字w被確定性加密成可搜索的令牌f(w),并對應建立由|D(w)|+Ω個文檔節(jié)點組成的倒排列表,其中,D表示文檔集合,|D(w)|表示文檔集合D中含有關鍵字w的文檔的個數(shù),Ω表示填充節(jié)點個數(shù)。每個文檔節(jié)點包含兩部分,一部分是被加密的含有w的密文文檔的標識符,另一部分是指向下一個文檔節(jié)點的指針。文檔節(jié)點以隨機順序排列。
密文搜索索引結構如圖3 所示,對于關鍵字K,經(jīng)確定性加密映射f得到令牌T,建立倒排列表L(T),長度為|D(w)|+Ω,Ω表示填充節(jié)點Δ的個數(shù),根據(jù)含有關鍵字的文檔個數(shù)調(diào)整Ω的大小,使每個關鍵字的倒排列表含有的節(jié)點個數(shù)一致。L(T)的每個節(jié)點包含含有關鍵字K的文檔Di的加密文檔標識符,以及指向下一個節(jié)點的指針。給定關鍵字K,通過f得到令牌T,獲得對應的倒排列表。
圖3 密文搜索索引結構
基于加密索引的密文搜索方案索引建立過程如下。
1) 邊緣節(jié)點從文檔中提取不同關鍵字,對關鍵字通過確定性加密f得到可搜索令牌T。
2) 邊緣節(jié)點將令牌和相應的密文文檔標識符做映射并索引,并上傳加密索引到云計算平臺。
3) 遇到搜索請求時,邊緣節(jié)點首先解析關鍵字,得到對應的令牌,并發(fā)送給云計算平臺,由云計算平臺執(zhí)行搜索操作,返回密文文檔標識符結果。
在邊緣計算場景下,邊緣節(jié)點解密得到的密文文檔標識符搜索結果后,根據(jù)用戶需求,把需要得到數(shù)據(jù)內(nèi)容的文檔標識符發(fā)送給云計算平臺。當接收到加密文檔數(shù)據(jù)后,邊緣節(jié)點解密相關文檔得到明文內(nèi)容。在搜索過程中文檔標識符是加密的,從而無法利用查詢結果推斷關鍵字共現(xiàn)頻率,一定程度上隱藏了訪問模式。
根據(jù)加密算法E和確定性加密f的安全性定義,除文檔和索引大小信息之外,索引數(shù)據(jù)結構沒有泄露其他信息,在搜索過程中除了一定的搜索模式和訪問模式信息之外沒有泄露其他任何信息。在實際搜索場景中,用戶對搜索到的文檔標識符結果列表,通常會針對部分感興趣的文檔進行查看,發(fā)起文檔內(nèi)容獲取請求。由于搜索結果列表和具體文檔內(nèi)容獲取請求沒有固定的對應關系,云計算平臺無法確定某一搜索請求的確定性結果,從而一定程度上隱藏了搜索的訪問模式。
用戶數(shù)據(jù)在邊緣節(jié)點處加密,即相應的密鑰存儲在邊緣節(jié)點中。在不同邊緣節(jié)點之間共享密文數(shù)據(jù),需要解決如何在不同邊緣節(jié)點之間安全地分享用于解密數(shù)據(jù)的密鑰的問題。
PKE 公鑰加密方案可確保加密密鑰在不同邊緣節(jié)點間安全共享。但在PKE 方案中,為驗證身份有效性,需要執(zhí)行大量驗證證書合法性的操作。本文結合IBE 和PKE 實現(xiàn)數(shù)據(jù)安全共享方案,采用PKE 方案[45]保證密鑰的安全傳輸,利用基于身份的加密IBE 方案[37]解決證書驗證問題,確保密鑰在邊緣節(jié)點之間安全傳輸。
數(shù)據(jù)安全共享方案使用控制節(jié)點充當IBE 方案的PKG。這里控制節(jié)點可以在云計算平臺設置,也可以由第三方機構代理。密鑰傳輸有PKE 加密層保護,即使控制節(jié)點是不可信的,由于其沒有PKE私鑰,故無法獲取明文內(nèi)容。邊緣節(jié)點使用PKE公鑰-私鑰對及身份ID 和控制節(jié)點進行交互,完成身份驗證。通過驗證,控制節(jié)點簽發(fā)ID 對應的IBE 私鑰。令PKI代表IBE 公鑰,SKI代表IBE私鑰,PKP代表PKE 公鑰,SKP代表PKE 私鑰,id(C)代表密文C的元數(shù)據(jù)。如圖4 所示,加密密鑰在不同邊緣節(jié)點之間傳輸過程如下。
圖4 密鑰分享架構
1) 邊緣節(jié)點B從云計算平臺接收到密文數(shù)據(jù),將密文元數(shù)據(jù)發(fā)送到控制節(jié)點。
2) 控制節(jié)點根據(jù)密文元數(shù)據(jù)中的邊緣節(jié)點標識得到對應的邊緣節(jié)點A,從A處請求解密密鑰。請求攜帶的參數(shù)包括密鑰標識、邊緣節(jié)點B的時間參數(shù)tB、B的身份標識IDB、B的PKE 公鑰PKP-B。時間參數(shù)t可用來更新邊緣節(jié)點對應的IBE 私鑰,以提高加密安全性。
3)A收到請求,根據(jù)tB、IDB參數(shù)得到PKI-B,利用PKP-B對密鑰做雙重加密,并將加密后的密鑰發(fā)送給B。
4)B接收到消息后,使用SKI-B和SKP-B解密獲得數(shù)據(jù)密鑰,即可獲得對應的明文數(shù)據(jù)。
在上述方案中,密鑰生成、參數(shù)選擇和加解密過程等均遵循標準IBE 方案[37]和PKE 方案[45],密鑰被PKE 公鑰和IBE 公鑰雙層加密??刂乒?jié)點獲取不到邊緣節(jié)點的PKE 私鑰,故無法竊取密鑰。即使某攻擊者獲得了PKE 私鑰,如果沒有IBE 私鑰,也無法解密獲得密鑰。邊緣節(jié)點同時具有與ID 對應的IBE 私鑰和PKE 私鑰,故數(shù)據(jù)安全共享方案確保了密鑰被安全傳輸。
基于加密索引的密文搜索方案支持數(shù)據(jù)動態(tài)更新,即可添加、刪除文檔或修改文檔內(nèi)容。在動態(tài)更新方案中,在云計算平臺和各邊緣節(jié)點處都維護著一份倒排索引結構,云計算平臺為主索引,執(zhí)行實際的搜索功能,并融合合并各邊緣節(jié)點的臨時輔助索引。索引動態(tài)更新如圖5 所示。
圖5 索引動態(tài)更新
添加新文檔時,邊緣節(jié)點中的索引服務模塊構建臨時索引。刪除文檔時,邊緣節(jié)點更新對應文檔標識符的無效位向量,標識文檔被刪除,在返回檢索結果前過濾已刪除文檔。若更新某文檔,則將此文檔刪除并重新添加文檔。執(zhí)行更新索引結構操作后,邊緣節(jié)點的索引服務器將輔助索引上傳到云計算平臺,與主索引進行合并,將新文檔節(jié)點插入對應的關鍵字令牌列表中,完成動態(tài)更新操作。
為了索引更新和搜索并行計算,可以在云計算平臺維護兩份索引,一份執(zhí)行搜索操作,另一份進行索引更新,更新完成后在兩份索引之間執(zhí)行數(shù)據(jù)同步操作。另外,邊緣節(jié)點和云計算平臺可以建立索引數(shù)據(jù)同步更新,在特殊情況下,搜索操作可以在邊緣節(jié)點執(zhí)行,從而向云計算平臺隱藏了搜索行為。
為了提高數(shù)據(jù)傳輸效率并節(jié)省帶寬,本文參考Rsync 算法[46]和端云協(xié)同數(shù)據(jù)同步方案[47],設計了 數(shù)據(jù)遷移同步方案,包括數(shù)據(jù)遷移與數(shù)據(jù)同步更新,數(shù)據(jù)遷移同步過程具體如下。
1) 將源文件F切分成大小相同的n塊,F(xiàn)=[f1,f2,…,fn]。
2) 構造生成矩陣GM(任意n×n子矩陣的秩為n),上部分為n×n的單位矩陣,下部分為m×n的范德蒙德矩陣,m為生成冗余塊的個數(shù)。利用GM將n個文件塊通過式(4)編碼成n+m個編碼塊C,,則有
3) 得到編碼塊C后,隨機選取n個線性無關的編碼塊Cn,利用GM 可恢復成源文件F,即
由上述過程可知,即使傳輸過程中某一編碼塊丟失或損壞,也可通過生成矩陣GM 和選取的n個線性無關的編碼塊Cn進行恢復。
在數(shù)據(jù)同步更新過程中,假設舊文件為Fv1=,新文件為,具體步驟如下。
1) 計算差分文件Δv1,v2,表示新文件Fv2與舊文件Fv1之間的差異,內(nèi)容匹配位為0,不匹配位為1,即
2) 通過生成矩陣GM 和Δv1,v2,得到差分文件編碼塊集合為
本文搭建了一個原型系統(tǒng)來模擬邊緣節(jié)點加密數(shù)據(jù)和解密數(shù)據(jù)的性能和安全性。所用虛擬機配置包括2.5 GHz 雙核英特爾處理器,2 GB 內(nèi)存,上行速度約為1 000 KB/s,下行速度約為7 500 KB/s。邊緣節(jié)點作為服務解析云計算平臺和用戶之間的數(shù)據(jù)連接,保護用戶隱私數(shù)據(jù)。
為了測試數(shù)據(jù)加密和解密性能,借助Gnu 隱私保護(GPG,Gnu privacy guard)加密工具,采用AES256 加密算法,分別發(fā)送和接收如下類型的文件:32 KB 文本,107 KB 壓縮文件,2 MB、31 MB、532 MB 可執(zhí)行程序和1.3 GB 壓縮文件。從圖6 可以看出,邊緣節(jié)點加密小文件消耗時間較少,加密大文件消耗時間較多。在實際應用場景中,大文件往往采取分塊傳輸?shù)姆绞?,針對?shù)據(jù)塊加密并傳輸,故可以大大縮小加密大文件數(shù)據(jù)的時間。
圖6 數(shù)據(jù)加密性能測試
圖7 展示了接收加密數(shù)據(jù)時,邊緣節(jié)點解密操作帶來的額外開銷。從圖7 中可以看出,當文件數(shù)據(jù)塊不大于31 MB 時,邊緣節(jié)點解密文件數(shù)據(jù)帶來的額外開銷較小。
圖7 邊緣節(jié)點解密操作帶來的額外開銷
本文密文搜索方案建立倒排索引進行搜索,實現(xiàn)最優(yōu)查詢效率,并可大大節(jié)省時間和空間消耗。令m為所有文檔不同的關鍵字的個數(shù),n為文檔數(shù)量,R(w)為搜索關鍵字w對應的含有此關鍵字的文檔集合,Et為加密時間消耗,Dt為解密時間消耗,a為各文檔含有的關鍵字個數(shù)的平均值,v為各關鍵字對應的文檔列表的平均長度,l為各關鍵字對應的文檔列表的最長的長度,各密文搜索方案相關功性能對比如表1 所示。
表1 不同密文搜索方案功性能對比
從表1 中可以看出,文獻[28]對文檔中關鍵字逐一進行偽隨機函數(shù)加密生成可搜索密文,搜索時間與文檔中關鍵字個數(shù)有關,泄露了文檔中關鍵字個數(shù)和位置,屬于CPA 安全級別。文獻[29]基于倒排索引構建密文搜索方案,與本文區(qū)別為其加密節(jié)點中指向下一加密節(jié)點的指針也被加密,不支持文檔動態(tài)更新功能,需要將云計算平臺密文下載到本地,重新構建索引后上傳,在不考慮填充節(jié)點的情況下,其安全級別為CKA1。本文密文搜索方案指向加密節(jié)點的指針未被加密,支持索引動態(tài)更新功能,索引構建大小與關鍵字對應的文檔列表的最長長度有關,搜索時間復雜度與含有關鍵字的文檔列表的長度及填充節(jié)點個數(shù)相關,安全級別為CKA2。
令N表示文檔更新一次變化的關鍵字的個數(shù),動態(tài)更新方案添加文檔時在邊緣節(jié)點先建立臨時索引,建好后同步到云計算平臺,更新時間與N正相關,從而大大減少了執(zhí)行時間。刪除文檔時在邊緣節(jié)點處建立含有文檔標識的無效位向量,會消耗一定的內(nèi)存,同時返回結果進行過濾會消耗一定的時間,可以考慮構建哈希映射數(shù)據(jù)結構,快速得到文檔是否已被刪除的結果。密文搜索方案在邊緣節(jié)點處構建索引,同步到云計算平臺,并在云計算平臺執(zhí)行搜索操作,具有很高的查詢性能。本文方案在邊緣節(jié)點處存儲一定的數(shù)據(jù),帶來一定的空間開銷。經(jīng)Rally 軟件評估測試,對于1.2 GB 大小的文件集合,構建的索引大小約為0.9 GB,查詢效率約為19.6 ops/s。
在不同邊緣節(jié)點分享密鑰場景下,使用GPG庫生成4 096 位的PKE 公私鑰對,使用雙線性密碼(PBC,pairing based cryptography)庫生成IBE 雙線性對。由于密鑰數(shù)據(jù)很小,密鑰雙層加密和解密方案引入的開銷很小,是毫秒級別的。
在安全性方面,本文假定用戶側邊緣節(jié)點是可信和安全的,即數(shù)據(jù)在邊緣節(jié)點中以明文形式傳輸。邊緣節(jié)點之外的路徑如云服務器或其他邊緣節(jié)點是不可信的。敏感數(shù)據(jù)在傳遞到外部之前被邊緣節(jié)點加密,加密數(shù)據(jù)上傳到云計算平臺,云計算平臺無法獲取位于邊緣節(jié)點存儲的相應密鑰,得不到明文信息,從而有效防止了云計算平臺竊取敏感數(shù)據(jù)。在邊緣節(jié)點外部,即使用戶賬戶信息泄露,攻擊者也只能得到密文數(shù)據(jù),因此本文方案可有效保護云服務中用戶的隱私數(shù)據(jù)。
參考文獻[29,33],利用Real/Ideal 模擬范式定義可搜索加密安全性,L表示有狀態(tài)的泄露函數(shù),存在一個模擬器S,以L(P)為輸入,P表示歷史協(xié)議;S(L(P))表示輸出視圖,和以P為輸入執(zhí)行真實搜索看到的視圖不可區(qū)分,則稱方案是L安全的。定義RealA(s)和IdealA,S(s)如下。
RealA(s)。挑戰(zhàn)者輸入安全參數(shù)生成密鑰k,利用密鑰k和數(shù)據(jù)文件D生成密文索引I和密文數(shù)據(jù)C,將I和C發(fā)送給攻擊者A。A發(fā)起一定量查詢Q,其中每次查詢關鍵字w,A會接收到w對應的令牌TD,最后A返回比特b作為游戲輸出。
IdealA,S(s)。給定L1(D),模擬器S生成(I*,C*)并發(fā)送到A。A發(fā)起一定量查詢Q,其中每次查詢關鍵字w,模擬器S收到L2(D,w),生成并返回對應的令牌TD*,最后A返回比特b作為游戲輸出。
若對任意攻擊者A,足夠大的s和多項式p,存在模擬器S,滿足
則可搜索加密方案對于CKA2 具有(L1,L2)安全性。當A在游戲開始時就確定了查詢Q,即查詢與索引以及之前的查詢結果是獨立的,則同樣地可給出CKA1 具有(L1,L2)安全性的定義。
針對密文搜索安全性定義,在本文設計的密文搜索過程中有以下定義。
1)L1安全性。密文搜索方案利用對稱加密方式對數(shù)據(jù)進行加密,安全強度高,攻擊者很難從密文中獲取額外的信息。加密索引在邊緣節(jié)點處生成,從而保證索引的安全性,使攻擊者無法從密文索引中獲得額外的信息。
2)L2安全性。在搜索過程中,查詢關鍵字交給邊緣節(jié)點,并在邊緣節(jié)點處執(zhí)行加密,加密后傳送到云計算平臺,從而向云端隱藏了關鍵字信息。在邊緣節(jié)點構建密文索引時,針對每個關鍵字,利用填充節(jié)點確保不同關鍵字對應的搜索結果長度大致相同,從而即使攻擊者獲得了查詢令牌和搜索結果的對應關系,也很難從返回結果獲得有價值信息。當用戶獲得搜索結果后,一般情況下并不會向云服務器請求所有結果文檔,而是檢索其中部分特定文檔,使攻擊者不能得到一次查詢對應于哪些文件,從而向攻擊者隱藏了訪問模式。
若攻擊者預知部分加密文檔內(nèi)容,在泄露搜索模式或訪問模式的情況下,攻擊者利用先驗知識會嘗試獲取到更多關于查詢關鍵字或文檔的信息[43-44]。通過將本文密文搜索方案構建模擬過程代入以上安全定義可看出,在文檔加密和索引構建過程中,文檔內(nèi)容通過對稱加密方式加密,密鑰在邊緣節(jié)點中存儲,安全度較高,攻擊者很難破解密文或獲得密文對應的密鑰。文檔內(nèi)容對應的搜索索引在邊緣節(jié)點生成并加密,然后上傳到云計算平臺進行合并和搜索,攻擊者無法解密密文索引,從而保護了索引數(shù)據(jù)的安全性。在搜索過程中,用戶查詢的關鍵字由邊緣節(jié)點確定性加密,加密后上傳到云計算平臺執(zhí)行查詢操作,云計算平臺返回搜索結果。在密文搜索方案中,文檔標識符被隨機性加密,利用填充節(jié)點使每個關鍵字的倒排列表含有的節(jié)點個數(shù)一致,保護搜索結果信息不被泄露,從而一定程度上向云計算平臺隱藏了訪問模式,即便攻擊者擁有密文數(shù)據(jù)對應的明文數(shù)據(jù)信息,根據(jù)查詢過程也無從得知其他的關鍵字或明文數(shù)據(jù)信息,滿足CKA2 安全性,具有Le0 安全等級。
本文針對邊緣計算數(shù)據(jù)安全問題,提出了一種密文搜索與共享方案,使在邊緣節(jié)點處建立加密搜索索引,并同步到云計算平臺,從而對索引作統(tǒng)一管理。同時本文設計密鑰安全共享方案,以在不同邊緣節(jié)點之間進行密文數(shù)據(jù)分享。
當然,本文設計的密文搜索與共享方案仍面臨諸多問題,需進一步研究和改進。例如,本文假定用戶側的邊緣節(jié)點是可信的,如果用戶和邊緣節(jié)點之間的可信度不高,則需要進一步利用脫密技術,如聯(lián)邦學習、同態(tài)加密等處理之后再交給邊緣節(jié)點執(zhí)行。另外,由于加密索引在云計算平臺進行管理,搜索過程中勢必會泄露一定的數(shù)據(jù)信息,需要研究在搜索過程中增加一定的混淆措施,避免泄露關鍵字與搜索文檔的對應關系。