謝晴晴,楊念民,馮霞
(1.江蘇大學計算機科學與通信工程學院,江蘇 鎮(zhèn)江 212013;2.江蘇大學汽車與交通工程學院,江蘇 鎮(zhèn)江 212013)
區(qū)塊鏈技術(shù)具有難以篡改、公開透明、去中心化等優(yōu)點,是數(shù)字加密貨幣的底層核心技術(shù)[1]。目前已有許多學者基于區(qū)塊鏈技術(shù)來實現(xiàn)數(shù)據(jù)的可信分享。以金融供應鏈為例,傳統(tǒng)金融體系存在著信息不對稱、信息孤島、結(jié)算不能自動完成等缺點。以區(qū)塊鏈為底層技術(shù)的金融供應鏈可以將銀行、核心企業(yè)、二三級供應商和其他金融機構(gòu)上鏈,支持資金流、信息流、信任流同時傳遞,并通過嵌入智能合約實現(xiàn)協(xié)議的自動執(zhí)行,提高信息共享的效率,降低信任和資金傳遞成本[2]。然而,區(qū)塊鏈的開放特性使所有節(jié)點都可以復制和共享區(qū)塊鏈上的數(shù)據(jù),查看所有交易歷史。這給敏感數(shù)據(jù)的隱私保護帶來了挑戰(zhàn)[3]。
為了解決隱私泄露的問題,許多學者從密碼學的角度出發(fā)來設(shè)計解決方法。牛淑芬等[4]提出了一種基于聯(lián)盟鏈的可搜索加密方案。該方案將區(qū)塊鏈技術(shù)和可搜索加密算法相結(jié)合,通過代理重加密技術(shù)保障數(shù)據(jù)在不同醫(yī)院之間進行傳輸時不會泄露患者的敏感信息,從而解決了病例數(shù)據(jù)在不同醫(yī)院中共享的問題。薛騰飛等[5]建立了基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享模型,采用代理重加密方案解決了訪問控制問題。Chen 等[6]提出了一種基于區(qū)塊鏈的物聯(lián)網(wǎng)跨域數(shù)據(jù)共享方法,使用門限代理重加密的方法對密文進行處理,避免惡意的代理機構(gòu)與訪問者合謀,保證數(shù)據(jù)在跨域存儲、共享過程的安全性。
但是目前已有的基于區(qū)塊鏈的數(shù)據(jù)分享協(xié)議皆不適用于數(shù)據(jù)的噪聲化分享場景。例如,導航服務(wù)應用程序需要精確的位置數(shù)據(jù),外賣服務(wù)中顧客可以僅提供樓棟號而非具體的房間號以保護隱私。在醫(yī)療健康數(shù)據(jù)的共享中,醫(yī)院為了保護病人的隱私,對一些敏感數(shù)據(jù)進行不同程度的噪聲化處理,然后根據(jù)數(shù)據(jù)用戶的不同需求來提供不同精度的數(shù)據(jù)。在社交平臺上,用戶出于人身安全的考慮,可以先將自己的位置信息進行零度、輕度和重度的噪聲化處理后,再分別發(fā)布給家人、普通朋友和應用程序。上述情況皆可以歸結(jié)為數(shù)據(jù)的噪聲化分享控制問題,即通過控制用戶訪問到的數(shù)據(jù)精度來實現(xiàn)數(shù)據(jù)的噪聲化分享控制。
為此,本文將智能合約和密文策略屬性基加密(CP-ABE,ciphertext policy attribute-based encryption)算法相結(jié)合,設(shè)計了一種基于區(qū)塊鏈的噪聲化數(shù)據(jù)分享控制協(xié)議。首先采用支持外包的CP-ABE 算法來減少用戶端的加解密計算負擔。其次,利用智能合約來實現(xiàn)密文之上的數(shù)據(jù)搜索,預防了惡意服務(wù)器的非法操作,實現(xiàn)了高效、安全且可搜索的數(shù)據(jù)分享功能。具體來說,本文協(xié)議的主要貢獻如下。
1) 本文將智能合約、云計算技術(shù)和CP-ABE算法相結(jié)合,實現(xiàn)了數(shù)據(jù)的噪聲化細粒度分享控制,不但保護了數(shù)據(jù)隱私,而且能夠提供可信的數(shù)據(jù)搜索結(jié)果。
2) 本文協(xié)議可以支持密文同態(tài)運算,使數(shù)據(jù)更新的計算復雜度為O(1)。因此本文協(xié)議適用于數(shù)據(jù)實時更新的應用場景。
3) 本文協(xié)議的安全性和性能評估分別得到了充分的分析和驗證,表明本文協(xié)議具有安全性和可行性。
本節(jié)主要介紹訪問控制技術(shù)和基于區(qū)塊鏈的數(shù)據(jù)分享兩方面的相關(guān)工作。
基于屬性的加密(ABE,attribute-based encryption)技術(shù)使數(shù)據(jù)所有者能夠根據(jù)用戶的屬性對敏感數(shù)據(jù)進行細粒度的訪問控制。ABE 的概念最早由Sahai 等[7]提出,其原型來源于基于身份的加密。根據(jù)解密策略的位置不同,ABE 可以分為密鑰策略屬性基加密[8](KP-ABE,key policy attribute-based encryption)和密文策略屬性基加密[9](CP-ABE,ciphertext policy attribute-based encryption)。在KP-ABE 中,密鑰關(guān)聯(lián)于一個訪問控制策略,密文關(guān)聯(lián)于數(shù)據(jù)屬性集合;在CP-ABE 中,密文關(guān)聯(lián)于一個訪問控制策略,密鑰關(guān)聯(lián)于用戶屬性集合。無論是 KP-ABE 還是 CP-ABE,只有屬性集和訪問控制策略完全匹配時,用戶才能解密該密文。與傳統(tǒng)加密方法相比,ABE 實現(xiàn)了一對多加密,降低了密鑰管理開銷。
ABE 技術(shù)是最適用于云存儲的加密方法之一,已被廣泛研究。隨著區(qū)塊鏈技術(shù)的發(fā)展,分布式存儲技術(shù)得到廣泛關(guān)注,迎來了ABE 與區(qū)塊鏈相結(jié)合的熱潮。汪玉江等[10]提出基于ABE 和區(qū)塊鏈的個人隱私數(shù)據(jù)保護方案,實現(xiàn)個人數(shù)據(jù)的一對多的安全傳輸和數(shù)據(jù)的細粒度訪問控制。牛淑芬等[11]針對中心化云存儲帶來的數(shù)據(jù)安全和隱私保護問題,提出了一種區(qū)塊鏈上基于云輔助的密文策略屬性基數(shù)據(jù)共享加密方案,確保了數(shù)據(jù)的安全存儲。Zhang 等[12]結(jié)合區(qū)塊鏈技術(shù)、密文策略分級屬性加密技術(shù)和星際文件系統(tǒng)設(shè)計了一種語音數(shù)據(jù)加密的分布式存儲方案,確保了語音數(shù)據(jù)的安全性、難以篡改性和可擴展性。Wu 等[13]提出一種基于區(qū)塊鏈的隱藏策略和屬性訪問控制方案,實現(xiàn)屬性和策略的私密性,增強數(shù)據(jù)的安全性。Yin 等[14]針對區(qū)塊鏈物聯(lián)網(wǎng)中指定接收者的敏感數(shù)據(jù)安全共享問題,提出一種基于去中心化密鑰生成和可編程密文的私有數(shù)據(jù)共享方案。該方案設(shè)計了一種新的密文策略去中心化密鑰屬性基加密算法,以防止敏感數(shù)據(jù)泄露。Zhang 等[15]針對車聯(lián)網(wǎng)面臨的敏感數(shù)據(jù)暴露、數(shù)據(jù)易受非法訪問和篡改、云服務(wù)器單點故障等問題,提出一種基于屬性加密的區(qū)塊鏈數(shù)據(jù)訪問方法。為了加強隱私保護,屬性被隱藏,所有生成的交易都記錄在區(qū)塊鏈上以供審計。Yu 等[16]提出了一種基于區(qū)塊鏈的具有屬性撤銷的細粒度訪問控制算法,并應用于物聯(lián)網(wǎng)應用系統(tǒng)中。Li 等[17]針對醫(yī)療行業(yè)的安全存儲、可靠共享和隱私保護問題,提出了一種基于屬性和同態(tài)密碼系統(tǒng)的區(qū)塊鏈電子醫(yī)療系統(tǒng)。系統(tǒng)中應用的屬性基加密算法實現(xiàn)了基于部分密文的半策略隱藏和動態(tài)權(quán)限更改的功能。
隨著區(qū)塊鏈技術(shù)的發(fā)展,去中心化存儲模式進入大眾視野。去中心化存儲方式可以解決傳統(tǒng)云存儲系統(tǒng)的單點故障問題,與中心化存儲相比具有價格低、安全性高等諸多優(yōu)勢。此外,區(qū)塊鏈具有難以篡改、多方可信等特征,可以有效解決數(shù)據(jù)篡改和服務(wù)器不可信等問題。為此相關(guān)學者基于區(qū)塊鏈技術(shù)陸續(xù)提出了一系列的數(shù)據(jù)安全分享方案。
Liu 等[18]針對醫(yī)療數(shù)據(jù)泄露問題,將區(qū)塊鏈技術(shù)和基于屬性的可搜索加密技術(shù)結(jié)合,實現(xiàn)醫(yī)療數(shù)據(jù)的安全共享。Long 等[19]針對工業(yè)區(qū)塊鏈隱私泄露問題,結(jié)合對稱加密和同態(tài)加密技術(shù),提出數(shù)據(jù)隱私保護方法。Huang 等[20]將聯(lián)盟鏈與云計算相結(jié)合提出了一套分布式醫(yī)療數(shù)據(jù)隱私保護方案。該方案通過云服務(wù)器為區(qū)塊鏈節(jié)點提供服務(wù)并設(shè)計了基于區(qū)塊鏈的智能醫(yī)療分布式數(shù)據(jù)管理架構(gòu)。Regueiro 等[21]利用區(qū)塊鏈技術(shù)和Paillier 加密算法提出了一種用于健康數(shù)據(jù)統(tǒng)計分析的隱私保護方法。該方法能夠在保護患者隱私的前提下提高數(shù)據(jù)分析的準確性。Gochhayat 等[22]針對物聯(lián)網(wǎng)和邊緣設(shè)備的快速增長所帶來海量數(shù)據(jù)的安全存儲問題,提出了一種新穎的基于區(qū)塊鏈技術(shù)的輕量級去中心化加密云存儲架構(gòu)。Agyekum 等[23]提出了一種基于區(qū)塊鏈和代理重加密算法的物聯(lián)網(wǎng)數(shù)據(jù)安全共享方案,實現(xiàn)數(shù)據(jù)的機密性、完整性和安全性。Zhang 等[24]基于CP-ABE 和區(qū)塊鏈提出了一套輕量級、去中心化且多權(quán)限的訪問控制方案,用以保證車聯(lián)網(wǎng)用戶的信息安全和隱私保護。Liu 等[25]提出了一種基于CP-ABE 的分層物流數(shù)據(jù)訪問控制方案,以超級賬本中的成員身份代替?zhèn)鹘y(tǒng)的密鑰分發(fā)中心來保證用戶私鑰的安全性。
但是以上工作僅能實現(xiàn)部分的如下功能:1)隱私保護的數(shù)據(jù)搜索;2)安全可信的數(shù)據(jù)搜索;3)針對搜索權(quán)限的細粒度控制。
本節(jié)主要介紹本文使用的密碼學知識,包括雙線性配對和CP-ABE 方案。
設(shè)G0和GT均為q階大素數(shù)循環(huán)群,稱映射e:G0×G0→GT為雙線性配對,e滿足下列條件。
1) 雙線性:對于任意x,y∈G0和任意a,b∈Zq,都有e(xa,yb)=e(x,y)ab。
2) 非退化:若g是G0的生成員,則e(g,g)≠1GT。
3) 可計算:對于任意x,y∈G0,e(x,y)∈GT可被有效計算。
CP-ABE 將訪問策略嵌入密文中,將用戶的身份屬性集合嵌入用戶的身份私鑰中。只有當用戶的身份屬性集合滿足數(shù)據(jù)的訪問策略時,該用戶才能成功解密獲得明文。然而,在傳統(tǒng)的CP-ABE 系統(tǒng)中,加解密需要花費較大的計算開銷,不但導致數(shù)據(jù)分享延遲,而且不適用于資源受限的物聯(lián)網(wǎng)場景。為此,很多研究學者提出了支持加解密外包的CP-ABE 方案[26],基本框架如下。
3) Encrypt1(PK,T)→CT′。輸入公鑰PK 和訪問策略樹T,輸出中間密文CT′。該算法的計算復雜度與訪問策略樹T有關(guān),即O(NumLeaf),其中NumLeaf 是訪問策略樹T的葉子節(jié)點數(shù)。從訪問策略樹T的根節(jié)點開始為T的每個節(jié)點x賦予一個階為dx的多項式qx,令kx為節(jié)點x的門限值,則dx=kx-1。對于T的根節(jié)點r,隨機選擇s∈Zp,令qr(0)=s,并選擇dr個隨機整數(shù)來確定多項式qr。對于其他節(jié)點x,令qx(0)=qparent(x)(index(x)),選擇dx個隨機整數(shù)來確定多項式qx,其中parent(x)是節(jié)點x的父節(jié)點,當前節(jié)點是x的第index(x)個子節(jié)點。令X表示T中所有葉子節(jié)點構(gòu)成的集合,att(x)表示節(jié)點x對應的屬性,該算法輸出。
本節(jié)主要介紹系統(tǒng)模型和安全模型。
基于區(qū)塊鏈的噪聲化數(shù)據(jù)分享控制系統(tǒng)模型如圖1 所示,主要包括四類主體:①可信機構(gòu)(TA,trusted authority)、②數(shù)據(jù)主(DO,data owner)、③數(shù)據(jù)用戶(DU,data user)、④云服務(wù)器(CS,cloud server)。
圖1 基于區(qū)塊鏈的噪聲化數(shù)據(jù)分享控制系統(tǒng)模型
1) TA。TA 生成系統(tǒng)參數(shù)和系統(tǒng)主密鑰,為用戶分發(fā)屬性私鑰,維持屬性列表。
2) DO。DO 首先為待分享的敏感數(shù)據(jù)設(shè)置訪問策略,從數(shù)據(jù)文件中提取關(guān)鍵字,然后加密數(shù)據(jù)文件,將密文存儲到云服務(wù)器中并獲取存儲地址,最后在區(qū)塊鏈中生成關(guān)鍵字索引列表,并部署索引合約。
3) DU。DU 首先計算搜索令牌,將公鑰和搜索令牌發(fā)送給云服務(wù)器,然后云服務(wù)器對數(shù)據(jù)密文進行半解密,并將半解密結(jié)果返回給DU,最后DU在本地計算相應的噪聲化數(shù)據(jù)。
4) CS。CS 負責存儲DO 上傳的數(shù)據(jù)密文,并提供外包加解密服務(wù)。
智能合約包括屬性合約、查詢合約和索引合約。其中,屬性合約維護屬性列表;查詢合約根據(jù)DU 給出的搜索令牌來尋找相應的數(shù)據(jù)密文存儲地址;索引合約建立關(guān)鍵字搜索令牌和密文地址的映射關(guān)系。
各個主體之間的交互流程如下。TA 為DU 計算屬性私鑰1、屬性私鑰2 和證書,并將屬性私鑰1和證書上傳到區(qū)塊鏈,屬性私鑰2 交給DU 保存;DO 將公鑰和訪問策略發(fā)送給CS;CS 執(zhí)行外包CP-ABE 的加密算法,并將訪問策略密文發(fā)送給DO;DO 加密消息和噪聲并將完整密文上傳到CS;DO 根據(jù)關(guān)鍵詞生成索引,部署并調(diào)用索引合約;DU 將搜索請求<公鑰,搜索令牌,簽名>發(fā)送給云CS;CS 將搜索請求轉(zhuǎn)發(fā)給查詢合約;區(qū)塊鏈運行查詢合約,并將查詢到的密文地址和屬性私鑰1 返回給CS;CS 執(zhí)行外包CP-ABE 的解密操作,將得到的中間密文并返回給DU;DU 進行本地解密,計算得到噪聲化數(shù)據(jù)。
考慮到本文所提方案是通過加密來實現(xiàn)數(shù)據(jù)的隱私保護和密文搜索的,因此本節(jié)討論的安全模式針對2 種典型的安全標準:選擇明文攻擊下的不可區(qū)分性和適應性選擇關(guān)鍵詞語義安全。
1) 選擇明文攻擊下的不可區(qū)分性
定義1為證明選擇明文攻擊下的不可區(qū)分性,本文定義了敵手和挑戰(zhàn)者之間的交互性游戲。
初始化。挑戰(zhàn)者C 運行初始化程序并且向敵手A 發(fā)送公鑰PK。
階段1。敵手A 提交屬性集合A1,A2,···,An進行解密密鑰查詢。作為響應,挑戰(zhàn)者C 運行屬性密鑰生成算法生成相應的屬性密鑰ASKj,其中j∈[1,n1],這些屬性私鑰發(fā)送給敵手A。
猜測。敵手A 輸出猜測μ′∈[0,1]。
本文定義敵手A 的優(yōu)勢在這個游戲中為AdvA=Pr[μ′=μ]-。
定理1如果任意多項式時間的敵手A 在以上的安全游戲中的優(yōu)勢AdvA是可忽略的,那么本文協(xié)議是CPA 安全的。
2) 適應性選擇關(guān)鍵詞語義安全
本文在有狀態(tài)的模擬器S 和敵手A 之間采用基于模擬的游戲,允許泄露訪問模式和搜索模式來證明安全。信息泄露情況采用2 個泄露函數(shù)進行描述,即,輸入數(shù)據(jù)文件集合D,輸出數(shù)據(jù)文件集合的大小、數(shù)據(jù)文件數(shù)量、每個數(shù)據(jù)文件的大小和標識符;L2定義為L2(D,w)=(AP(w),Tokw),輸入數(shù)據(jù)文件集合和查詢關(guān)鍵詞w,輸出關(guān)鍵詞的訪問模式AP(w)和搜索令牌。在挑戰(zhàn)者C、敵手A 以及模擬器S 之間進行的游戲定義如下。
RealA(λ)。挑戰(zhàn)者C 根據(jù)安全參數(shù)λ初始化系統(tǒng)、敵手A 給挑戰(zhàn)者文件集合D,挑戰(zhàn)者根據(jù)索引生成算法和數(shù)據(jù)加密算法生成安全索引I和加密文檔D并給敵手。敵手向挑戰(zhàn)者發(fā)起多項式次查詢,對于每次查詢q,查詢的關(guān)鍵詞產(chǎn)生搜索令牌并發(fā)送給A,最后A 輸出一個比特位作為游戲的輸出。
IdealA(λ)。數(shù)據(jù)文件集合D,給定泄露函數(shù)L1和L2,模擬器S 產(chǎn)生并發(fā)送 (I*,C*)給A。然后敵手A 重復向模擬器S 發(fā)起多項式次查詢,對于每次查詢q,模擬器S 根據(jù)泄露函數(shù)L2返回相應的搜索令牌 To,最后敵手A 輸出一個比特位作為該概率實驗的結(jié)果。
本節(jié)介紹協(xié)議的具體構(gòu)造,假設(shè)本文涉及的所有成員都有自己的公私鑰對,記為 pkentity/skentity,其中entity 指代實體名稱。本文協(xié)議的主要標記符說明如表1 所示。
表1 主要標識符說明
TA 首先設(shè)置用戶屬性空間L={ai}i∈[1,n],調(diào)用Setup(1k,L)→(PK,MSK)產(chǎn)生系統(tǒng)公鑰PK 和主密鑰 MSK,然后定義公開的偽隨機函數(shù)F:{0,1}k×{0,1}*→{0,1}l,并生成隨機搜索密鑰SKS←{0,1}k。
用戶注冊過程是DU、TA 和區(qū)塊鏈之間的交互,如圖2 所示,主要步驟如下。
圖2 用戶注冊時序
步驟1用戶u向TA 發(fā)送二元組 〈Au,pku〉以請求計算屬性私鑰ASKu,其中Au是該用戶的身份屬性集合,pku是該用戶的公鑰。
步驟2TA 首先調(diào)用KeyGen(MSK,Au)→ASKu算法為用戶生成屬性私鑰ASKu=〈 AK1,AK2〉 并為用戶分發(fā)證書Cert(skTA,pku);然后將 〈Cert(skTA,pku),pku,Au〉上傳到區(qū)塊鏈中,返回交易號;再以pku為鍵,為值調(diào)用屬性合約,屬性合約的執(zhí)行過程如算法1 所示。若TA 賬戶沒有足夠的余額來支付礦工收取的燃料費,則系統(tǒng)回滾;最后將屬性私鑰分量 ASKu.AK2和搜索密鑰SKS發(fā)回給DU。
算法1屬性合約
DO 首先設(shè)置噪聲集合 NoiS={τi}i∈[1,N]和相應的訪問策略樹 TS={Ti}i∈[1,N],其中Ti規(guī)定了能獲得噪聲化數(shù)據(jù)noi(m,τi)的用戶類型,τi隨著i的增加而變大。在TS 的基礎(chǔ)上,DO 設(shè)計一個新的訪問策略樹T?,其定義為用戶屬性集滿足T?當且僅當其滿足任一訪問樹Ti∈TS。另外,DO 還需要產(chǎn)生一個對稱的會話密鑰k,用于加密原始數(shù)據(jù)的相關(guān)信息,支持數(shù)據(jù)的高效更新。
然后,DO 和 CS 計算 NoiS 的密文CTNoiS={εTi(Aτi)i∈[1,N]}和會話密鑰k的密文εT?(k),計算過程如下。
步驟1DO 將PK和T?發(fā)送給CS,CS 執(zhí)行外包屬性基加密算法,計算密文 C=Encrypt1(PK,T?),并將C返回給DO。
步驟2DO 加密會話密鑰k為(k)=Encrypt2(PK,k,C)。
步驟3DO 隨機選擇,∈Zq,計算噪聲集合密文 CTNoiS。對于 ?τi∈NoiS,執(zhí)行以下步驟。
1) DO 將PK和Ti發(fā)送給 CS,CS 計算CTi′=Encrypt1(PK,Ti)并發(fā)送給DO。
至此,數(shù)據(jù)加密階段結(jié)束,DO 得到噪聲集合NoiS 密文 CTNoiS={εTi(Aτi)}i∈[1,N]、會話密鑰k密文(k)和原數(shù) 據(jù)m的密文共享組件CTm={Cm,Ek(Pup)}。值得注意的是,CTNoiS和(k)的計算與原數(shù)據(jù)m無關(guān),因此在數(shù)據(jù)m持續(xù)更新的場景中,DO 僅需更新數(shù)據(jù)的密文共享組件CTm即可。
假設(shè)數(shù)據(jù)m的關(guān)鍵詞集為KWm,其索引的計算步驟如下。
步驟1DO 向TA 申請搜索密鑰SKS,TA 使用DO 的公鑰pkDO來加密搜索密鑰 En c(SKS,pkDO)并傳送給DO。
步驟2DO 將CTm和εT?(k)||C TNoiS||TS 分別存放到CS 中,并返回存儲地址addrm和addrτ,令addrmτ={addrm,addrτ}。
步驟3對 ?wj∈KWm,DO 計算搜索令牌,將 〈Tok,addrmτ〉通過交易發(fā)送給索引合約,調(diào)用索引合約更新索引I,如算法2 所示。若DO 賬戶沒有足夠的余額來支付燃料費,則系統(tǒng)回滾。假設(shè)只有2 個數(shù)據(jù)m1和m2被分享,其中數(shù)據(jù)m1有關(guān)鍵詞w1和w2,密文存儲地址為 addrm1τ;數(shù)據(jù)m2有關(guān)鍵詞w1,w2,w3,密文存儲地址為 addrm2τ,則生成的索引如表2 所示。索引合約的執(zhí)行過程如算法 2所示。
表2 生成的索引
算法2索引合約
上述數(shù)據(jù)加密和生成索引流程如圖3 所示。
圖3 數(shù)據(jù)加密和生成索引流程
假設(shè)用戶u的搜索關(guān)鍵詞集合為KWu,初始化查詢結(jié)果Ru為空集。訪問數(shù)據(jù)過程如下。
步驟1用戶u首先計算搜索令牌集TKu={TokWi=F(SKS,wi)|wi∈KWu},然后簽名搜索令牌集得到Sig(sku,TKu),并形成搜索請求〈TKu,pku,Sig(sku,TKu)〉發(fā)送給CS。
步驟2CS 將搜索請求〈TKu,pku,Sig(sku,TKu)〉轉(zhuǎn)發(fā)給查詢合約。該查詢合約根據(jù)搜索請求執(zhí)行搜索,其執(zhí)行過程如算法3 所示。
算法3查詢合約
步驟3針對 ?a ddrmτ∈Ru,CS 執(zhí)行操作如下。
1) 從addrmτ.addrτ中獲取εT?(k)||C TNoiS||TS 。
2) 對于?Ti∈TS,一旦找到數(shù)據(jù)用戶u的身份屬性集合Au滿足的訪問策略樹Ti,則從addrmτ.addrm中獲取數(shù)據(jù)密文共享組件CTm={Cm,Ek(Pup)},并跳到第3)步;否則結(jié)束該進程,繼而處理下一個數(shù)據(jù)密文地址addrmτ∈Ru。
3) CS 使用屬性私鑰 ASKu.AK1外包解密,調(diào)用Decrypt1(PK,εTi(Aτi),ASKu.AK1)和 Decrypt1(PK,εT?(k),ASKu.AK1),并將結(jié)果{C Tm,CA′τi,Ck}返回給u。
4)u首先對收到的密文做第二次解密,執(zhí)行式(1)和式(2)。
在數(shù)據(jù)噪聲化分享場景中,一般只更新原數(shù)據(jù)m,而無須更新噪聲。具體的更新過程如下。
本文協(xié)議通過加密實現(xiàn)了數(shù)據(jù)的隱私保護和密文搜索,因此本節(jié)將證明本文協(xié)議具有選擇明文攻擊下的不可區(qū)分性和適應性選擇關(guān)鍵詞語義安全。
證明假設(shè)一個概率多項式時間敵手A 的優(yōu)勢在之前的安全模型的定義中是AdvA,然后證明可以基于A 構(gòu)建敵手 A ′,使 A ′能夠破解屬性基加密算法難以區(qū)分的多重加密,在接下來的安全博弈中具有與AdvA相同的優(yōu)勢。
初始化。A 獲取屬性基加密算法的公鑰,然后發(fā)送公鑰給敵手A。相應的主密鑰只有屬性基加密算法的挑戰(zhàn)者C 知道。
階段1。A 提交屬性集合A1,A2,A3,···,An1。為了產(chǎn)生相應的屬性密鑰,A' 對于每個屬性集Al,l∈[1,n1]向挑戰(zhàn)者C 生成一個屬性密鑰查詢。然后 A ′將生成的私鑰 ASKl={AK1,l,AK2,l}l∈[1,n1]發(fā)送給敵手A。
步驟1A ′隨機選擇一個秘密的會話密鑰k并且在相應的訪問策略樹加密k。相應的密文計算過程為
階段2。在沒有一組屬性可以滿足挑戰(zhàn)中的任何訪問策略樹的條件下重復階段1。
猜測。敵手A 從μ∈[0,1]輸出猜測u′。然后,敵手 A ′輸出u′結(jié)束游戲。
根據(jù)之前定義的安全模型,敵手 A ′的優(yōu)勢攻破具有多重加密的屬性基加密算法的概率是AdvA=。上述等式表明,如果在本文的安全模型中AdvA是不可忽略的,那么對于敵手也具有不可忽略的優(yōu)勢AdvA=AdvA′來打破具有多重加密的屬性基加密算法的安全性。證畢。
階段2。生成模擬安全索引I*。模擬器在{0,1}l隨機選擇n個元素作為模擬搜索令牌,并生成模擬安全索引I*。在RealA(λ)中采用偽隨機方法F構(gòu)造索引,而模擬安全索引I*由模擬器隨機生成的字符串代替。根據(jù)偽隨機函數(shù)的安全性,在搜索密鑰SKs未知的情況下,敵手A 在計算中無法區(qū)分隨機字符串和偽隨機函數(shù)F的輸出結(jié)果。因此,敵手A在計算中無法區(qū)分I和I*,故negl2(λ),其中IndexGen 是索引生成算法。
本文用Advan(A(C))來表示對手A 能辨別真實的密文和隨機密文的優(yōu)勢,用Advan(A(I))來表示對手A 辨別真實的加密索引和隨機字符串的優(yōu)勢,則
根據(jù)上述證明,對于在任意概率多項式時間的外部敵手A,RealA(λ)和 IdealA,S的輸出是不可區(qū)分的,因此,本文協(xié)議滿足適應性選擇關(guān)鍵詞語義安全。證畢。
本節(jié)將介紹所提出的數(shù)據(jù)噪聲化分享協(xié)議在功能和性能方面與其他現(xiàn)有工作的對比。
文獻[10-11,27]與本文協(xié)議類似,因此將本文協(xié)議與其進行功能對比,對比結(jié)果如表3 所示。文獻[10]方案實現(xiàn)了解密計算的外包,但是用戶端的加密計算開銷與訪問策略樹屬性數(shù)量成正比,而且數(shù)據(jù)關(guān)鍵字以明文的形式出現(xiàn)在區(qū)塊鏈。文獻[11]方案將可搜索加密和區(qū)塊鏈技術(shù)相結(jié)合實現(xiàn)數(shù)據(jù)隱私保護,但不支持高效的數(shù)據(jù)更新。文獻[27]方案依賴半可信服務(wù)器,而且未考慮密文之上的數(shù)據(jù)搜索。
表3 功能對比
表4 展示了本文協(xié)議與文獻[10-11,27]在數(shù)據(jù)主端的加密計算、數(shù)據(jù)用戶端的解密計算、搜索令牌計算、數(shù)據(jù)搜索計算和數(shù)據(jù)更新開銷的計算代價進行對比。其中,Te表示指數(shù)運算;Tm表示乘法運算;Tp表示雙線性對操作;TD表示一次對稱加解密;H表示散列運算;F表示偽隨機函數(shù);表示訪問策略樹中的葉子節(jié)點個數(shù);k表示用戶屬性數(shù)量;kn表示搜索關(guān)鍵詞的數(shù)量;符號—表示不適用;nz表示噪聲集合中噪聲因子的數(shù)量;S表示滿足訪問結(jié)構(gòu)的最小屬性集合數(shù)量。
表4 性能對比
1) 數(shù)據(jù)主端的加密計算。文獻[10-11]方案沒有實現(xiàn)數(shù)據(jù)的噪聲化處理,所以數(shù)據(jù)主端的加密開銷與訪問策略樹的葉子節(jié)點數(shù)量成正比。文獻[27]方案的數(shù)據(jù)主端加密開銷與葉子節(jié)點數(shù)量和噪聲因子數(shù)量成正比。本文協(xié)議提供不同程度的噪聲化數(shù)據(jù),所以數(shù)據(jù)主端的加密開銷與噪聲因子數(shù)量成正比;又由于將訪問策略計算的加密部分外包給了CS,所以數(shù)據(jù)主端的加密開銷與葉子節(jié)點數(shù)量無關(guān)。此外,本文協(xié)議只在初始化時需要計算噪聲因子密文,后續(xù)對數(shù)據(jù)進行噪聲化加密時只需采用數(shù)據(jù)更新算法即可,其復雜度與噪聲因子數(shù)量無關(guān)。而文獻[10-11]方案若要提供不同程度的噪聲化數(shù)據(jù),需要對數(shù)據(jù)執(zhí)行nz次加密,顯然本文協(xié)議具有顯著優(yōu)勢。
2) 數(shù)據(jù)用戶端的解密計算。文獻[10]方案將解密操作的部分加密外包給了CS,但是數(shù)據(jù)用戶端的解密開銷與用戶的屬性數(shù)量成正比。文獻[11]方案的數(shù)據(jù)用戶端解密開銷與訪問控制策略和用戶屬性數(shù)量皆無關(guān),僅需要一次雙線性對運算,一次乘法運算和一次對稱加密計算。文獻[27]方案的數(shù)據(jù)用戶端的解密開銷與訪問策略樹的復雜程度和用戶的屬性數(shù)量有關(guān),需要4S+2次雙線性對運算,2S+1次乘法運算,2S次指數(shù)運算,一次對稱加密運算。本文協(xié)議將與訪問控制策略相關(guān)的解密運算外包給了CS,所以數(shù)據(jù)用戶端的解密計算需要2 次雙線性對運算,3 次乘法運算,一次對稱加密運算。
3) 搜索令牌計算。文獻[27]方案不支持對密文進行檢索,所以搜索令牌計算開銷不存在。文獻[10]方案采用明文關(guān)鍵字進行搜索,所以搜索令牌計算開銷記為0。文獻[11]方案將屬性基加密與可搜索加密結(jié)合,所以計算搜索陷門時需對用戶的每個屬性做運算,故計算搜索開銷與用戶的屬性數(shù)量成正比;計算單個關(guān)鍵字陷門需要2k+1次指數(shù)運算、k次乘法運算,1+k次哈希運算。本文協(xié)議需對每個搜索關(guān)鍵詞計算一次偽隨機函數(shù),因此計算代價為nk F。
4) 數(shù)據(jù)搜索計算。本文協(xié)議和文獻[10]方案在構(gòu)建索引時皆采用基于鍵值對的查找表方式,因此數(shù)據(jù)搜索計算的代價皆為常數(shù)級。而文獻[11]方案將訪問控制策略應用于關(guān)鍵字搜索上,當用戶的搜索陷門與索引陷門相匹配且用戶的屬性滿足訪問控制策略時,搜索匹配才能成功,所以文獻[11]方案搜索開銷與用戶的屬性數(shù)量成正比。
5) 數(shù)據(jù)更新開銷。文獻[27]方案和本文數(shù)據(jù)更新需要3 次乘法運算,一次指數(shù)計算和一次對稱加密計算,與訪問策略和噪聲因子數(shù)量無關(guān),更新開銷較少。
為了更準確地評估協(xié)議性能,本文在系統(tǒng)初始化、密鑰生成、用戶加密、索引生成、搜索令牌生成、搜索、用戶解密和用戶更新密文的時間方面進行仿真測試。本節(jié)實驗選取 JPBC(java pairing-based cryptography library)庫中提供的 A 類橢圓曲線,偽隨機函數(shù)采用 HMAC-SHA256,智能合約采用 solidity 語言,運行在以太坊虛擬機中,使用web3.js 庫對部署的3 個智能合約進行調(diào)用和測試。本文實驗的硬件環(huán)境為 Intel(R) Core(TM)i5-4210M CPU @ 2.60 GHz,RAM 為8 GB。
數(shù)據(jù)加解密的運行開銷如圖4 所示。圖4(a)描述了在不同數(shù)量的噪聲因子下,數(shù)據(jù)主端的加密時間。數(shù)據(jù)主端加密開銷主要包含三部分:數(shù)據(jù)明文的加密即共享組件的計算、會話組件的加密以及噪聲集合的加密。共享組件計算和會話組件加密的時間復雜度為O(1),而噪聲集合密文的計算開銷與噪聲因子數(shù)量成正比。由于使用了具有外包加解密的CP-ABE 算法,有關(guān)訪問策略的計算部分都外包給了CS,用戶端屬性基加密的開銷與屬性數(shù)量無關(guān),這很大程度減少了用戶端的計算開銷。此外,數(shù)據(jù)主僅在初始化時需計算噪聲集合密文,在后續(xù)數(shù)據(jù)更新時不需要重新計算噪聲密文。而文獻[27]方案數(shù)據(jù)主端的加密時間包含了有關(guān)訪問策略的計算部分,開銷大于本文協(xié)議。圖4(b)描述了當噪聲因子數(shù)量為1 時,各方案的數(shù)據(jù)主端加密時間。由于使用了外包加解密的CP-ABE 算法,本文協(xié)議的數(shù)據(jù)主端加密時間幾乎不受屬性數(shù)量影響,而文獻[10-11,27]方案的數(shù)據(jù)主端加密時間與屬性數(shù)量近似成正比。圖4(c)描述了在不同的滿足訪問策略樹的最小屬性數(shù)量下,數(shù)據(jù)用戶端的解密時間。本文協(xié)議的數(shù)據(jù)用戶端解密開銷主要包含三部分:會話組件密文解密運算、噪聲密文解密運算、加噪數(shù)據(jù)的運算。盡管數(shù)據(jù)主設(shè)置了多個噪聲密文集,但是數(shù)據(jù)用戶在解密時只需解密與其屬性集合匹配的噪聲密文,所以用戶解密時間與噪聲因子數(shù)量無關(guān)。同樣,由于本文協(xié)議使用了外包加解密的CP-ABE 算法,用戶端的解密時間與屬性數(shù)量也無關(guān),解密開銷較低。文獻[11]方案中的數(shù)據(jù)用戶端解密不包含與訪問策略相關(guān)的運算,所以解密時間與屬性數(shù)量無關(guān)。而文獻[10-27]方案中的數(shù)據(jù)用戶端解密包含與訪問樹相關(guān)的運算,所以解密時間與屬性數(shù)量成正比。綜上,本文協(xié)議在解密時間上略高于文獻[11]方案,但遠低于[10,27]方案。
圖4 數(shù)據(jù)加解密的運行開銷
圖5(a)描述了當用戶屬性數(shù)量為10 時,各方案搜索令牌的生成時間和搜索時間。本文采用HMAC-SHA256 算法生成搜索令牌,在Java 語言環(huán)境下經(jīng)1 000 次獨立實驗測得搜索密鑰初始化時間平均為102 ms。當搜索關(guān)鍵詞數(shù)量為10 時,在搜索密鑰已初始化的情況下,搜索令牌生成時間為4 ms。當搜索關(guān)鍵詞數(shù)量為20 時,在搜索密鑰已初始化的情況下,搜索令牌生成時間為6 ms。搜索關(guān)鍵詞數(shù)量越多,生成搜索令牌的花費開銷平均到計算單個關(guān)鍵詞搜索令牌的開銷上越小,因此具有較高的效率。而文獻[11]方案中搜索令牌的計算步驟包括指數(shù)運算、乘法運算和哈希運算,搜索令牌的生成時間與搜索關(guān)鍵詞數(shù)量成正比。圖5(b)描述了當搜索關(guān)鍵詞數(shù)量為10 時,各方案的搜索令牌生成時間。本文協(xié)議搜索令牌生成時間與數(shù)據(jù)用戶屬性數(shù)無關(guān)。而文獻[11]方案中搜索令牌生成時間與用戶屬性數(shù)量成正比。
圖5 搜索令牌的生成時間和搜索時間
圖5(c)和圖5(d)展示了各方案執(zhí)行查詢合約的搜索時間。假設(shè)索引表中存儲50 個鍵值對,每個鍵值對存儲10 個密文存儲地址。圖5(c)描述了當用戶屬性數(shù)量為10 時,各方案搜索時間與搜索關(guān)鍵詞數(shù)量之間的關(guān)系。本文協(xié)議和文獻[10]方案在構(gòu)建索引時皆采用基于鍵值對的查找表方式,而文獻[11]方案采用基于屬性的可搜索加密的方式,其需與關(guān)鍵詞和訪問策略進行匹配,所以本文協(xié)議在搜索效率上高于文獻[11]方案。圖5(d)描述了當搜索關(guān)鍵詞數(shù)量為10 時,各方案搜索時間與用戶屬性數(shù)量的關(guān)系。本文協(xié)議和文獻[10]方案在構(gòu)建索引時皆采用基于鍵值對的查找表方式,所以搜索計算開銷與用戶屬性數(shù)無關(guān)。而文獻[11]方案中的搜索計算開銷與用戶屬性數(shù)量成正比。
圖6(a)和圖6(b)分別描述了數(shù)據(jù)主端數(shù)據(jù)更新時間與用戶屬性數(shù)量和噪聲因子數(shù)量之間的關(guān)系。數(shù)據(jù)主端更新一個密文數(shù)據(jù)大約耗費4.25 ms,更新的計算開銷與訪問策略和噪聲因子數(shù)量皆無關(guān),因此數(shù)據(jù)更新效率高。
圖6 數(shù)據(jù)更新時間
本文采用密文策略屬性基加密算法和智能合約技術(shù),構(gòu)造了一套安全且高效的噪聲化數(shù)據(jù)分享控制協(xié)議。本文協(xié)議實現(xiàn)了對不同類型的數(shù)據(jù)用戶可以訪問到的數(shù)據(jù)精度的控制。首先,為了抵抗惡意服務(wù)器,本文協(xié)議利用智能合約機制實現(xiàn)數(shù)據(jù)搜索;其次,為了減輕客戶端的計算開銷,屬性加解密過程被外包給云服務(wù)器;其次,本文協(xié)議支持密文的快速更新,更新的時間開銷與訪問策略復雜度和噪聲因子數(shù)量無關(guān);最后,安全性分析證明本文協(xié)議具有密文不可區(qū)分性和適應性選擇關(guān)鍵詞語義的安全性,性能分析與實驗評估證明了本文協(xié)議在客戶端的計算開銷、搜索效率和數(shù)據(jù)更新開銷等方面具有優(yōu)良的性能。