• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      使用模糊關(guān)鍵字可搜索同態(tài)加密的區(qū)塊鏈隱私保護(hù)方案

      2022-11-18 05:57:06蔡玉涵王靜宇
      關(guān)鍵詞:關(guān)鍵字解密合約

      蔡玉涵,王靜宇

      (內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)

      1 引 言

      區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本,本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),具有去中心化、不可篡改、可追溯、集體維護(hù)和公開(kāi)透明等特點(diǎn)[1-3].但區(qū)塊鏈在實(shí)現(xiàn)去中心化和去信任化的同時(shí),會(huì)將全網(wǎng)的交易信息公開(kāi)以達(dá)到節(jié)點(diǎn)的共識(shí),信息的公開(kāi)就會(huì)降低數(shù)據(jù)的隱私性.為解決這一問(wèn)題,數(shù)據(jù)加密應(yīng)運(yùn)而生,但是常用的數(shù)據(jù)加密方案會(huì)限制存儲(chǔ)服務(wù)器處理用戶訪問(wèn)請(qǐng)求的能力[4].如若用戶想要查詢包含某一關(guān)鍵字的文檔,用戶需將加密文檔下載,然后進(jìn)行解密得到想要獲取的內(nèi)容,這不僅消耗存儲(chǔ)空間,也給用戶帶來(lái)了較差的體驗(yàn)感.因此,可搜索加密的研究逐漸成為近幾年的熱點(diǎn).

      近年來(lái),許多研究者開(kāi)始致力于研究區(qū)塊鏈系統(tǒng)中的安全問(wèn)題,在該領(lǐng)域應(yīng)用較多的隱私保護(hù)技術(shù)主要有混幣機(jī)制[5]、零知識(shí)證明[6]、環(huán)簽名[7]和同態(tài)加密[8]等.祝烈煌等人[9]將區(qū)塊鏈中的隱私定義為身份隱私和交易隱私,在介紹區(qū)塊鏈架構(gòu)的同時(shí),詳細(xì)闡述了區(qū)塊鏈隱私保護(hù)面臨的危險(xiǎn)以及保護(hù)對(duì)策,但是該文更多的是理論闡述而沒(méi)有落實(shí)到具體場(chǎng)景之中.張奧等人[10]將區(qū)塊鏈隱私歸納為賬本隱私和網(wǎng)絡(luò)隱私,同時(shí)將現(xiàn)存的隱私保護(hù)技術(shù)總結(jié)為地址混淆、信息隱藏和通道隔離,詳細(xì)介紹了各類隱私保護(hù)機(jī)制的原理、特征以及不同的實(shí)現(xiàn)方式,但同樣的問(wèn)題是,該文獻(xiàn)也偏于理論,缺乏實(shí)際生活中的應(yīng)用.陳思吉等人[11]提出一種基于環(huán)簽名的區(qū)塊鏈隱私保護(hù)算法,在眾多用戶中混入真實(shí)的簽名者,用減小用戶身份信息和區(qū)塊鏈節(jié)點(diǎn)地址的相關(guān)性的方式來(lái)保護(hù)用戶的隱私,但該算法是基于相對(duì)穩(wěn)定以及有一定的角色權(quán)限管理的區(qū)塊鏈網(wǎng)絡(luò),如私有鏈和聯(lián)盟鏈,但對(duì)于公有鏈并不適用.Song等人[12]首次提出了可搜索加密,目前已經(jīng)得到了廣泛的研究.Shmueli等人[13]總結(jié)了在為加密數(shù)據(jù)庫(kù)設(shè)計(jì)安全索引時(shí)的挑戰(zhàn),同時(shí)為了支持在多用戶環(huán)境下的自由訪問(wèn),將該索引分為多個(gè)子索引,使用同一密鑰加密相關(guān)值,安全性較低.Boneh等人[14]在2004年提出一種基于公鑰密碼學(xué)的可搜索加密方案.之后,隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,可搜索加密技術(shù)開(kāi)始逐步與區(qū)塊鏈結(jié)合.聶夢(mèng)飛等人[15]為了解決傳統(tǒng)的可搜索加密方案的公平性問(wèn)題,提出了一個(gè)結(jié)合以太坊區(qū)塊鏈和智能合約的對(duì)稱可搜索加密方案,文中分別在服務(wù)器和用戶不誠(chéng)信時(shí)設(shè)置了懲罰措施,保證了隱私數(shù)據(jù)的安全性.杜瑞忠等人[16]提出一種基于區(qū)塊鏈的公鑰可搜索加密方案,該方案利用區(qū)塊鏈技術(shù)解決了傳統(tǒng)方案中第3方的不可信問(wèn)題,限制了服務(wù)器產(chǎn)生的惡意行為.

      但是在實(shí)際應(yīng)用中,精確搜索會(huì)給用戶帶來(lái)不便,如用戶在搜索時(shí)不小心輸錯(cuò)了關(guān)鍵字,精確搜索將不會(huì)返回結(jié)果,這樣就會(huì)給用戶極差的體驗(yàn)感.就這一問(wèn)題,Li等人[17]提出了在云計(jì)算中的模糊關(guān)鍵字搜索方案,首次形式化的實(shí)現(xiàn)了在云計(jì)算中支持高效隱私保護(hù)的模糊搜索,以實(shí)現(xiàn)遠(yuǎn)程存儲(chǔ)加密數(shù)據(jù)的有效利用的問(wèn)題.Yan等人[18]提出基于區(qū)塊鏈的可實(shí)現(xiàn)公平支付的可搜索加密方案,在該文獻(xiàn)中實(shí)現(xiàn)了模糊關(guān)鍵字搜索,同時(shí)保障了用戶查找到的數(shù)據(jù)文件的安全性和正確性.

      但是上述文獻(xiàn)主要是實(shí)現(xiàn)數(shù)據(jù)文件的安全性以及數(shù)據(jù)文件的相關(guān)隱私保護(hù),并未考慮到用戶的隱私保護(hù).本文借鑒文獻(xiàn)[19]的思想,基于模糊關(guān)鍵字可搜索加密和同態(tài)加密設(shè)計(jì)出一個(gè)區(qū)塊鏈隱私保護(hù)方案,通過(guò)引入中間節(jié)點(diǎn)將內(nèi)容加密密鑰分割,采用同態(tài)加密算法實(shí)現(xiàn)加密密鑰的安全性,該方案不僅能夠?qū)崿F(xiàn)數(shù)據(jù)文件的隱私安全保護(hù),同時(shí)也增加了用戶的隱私安全保護(hù).

      2 相關(guān)工作

      目前大多數(shù)的可搜索加密方案的實(shí)現(xiàn)是基于云服務(wù)器的,傳統(tǒng)的云服務(wù)器存儲(chǔ)大都是依賴于可信任的第3方來(lái)存儲(chǔ)數(shù)據(jù)和進(jìn)行交易,但是數(shù)據(jù)的可用性和數(shù)據(jù)的安全性是這種模型比較容易出現(xiàn)的問(wèn)題.當(dāng)使用各種安全等級(jí)不同的加密方案將保護(hù)的數(shù)據(jù)文件上傳到云服務(wù)器后,集中的密鑰管理方案容易造成單點(diǎn)故障[20],分布式存儲(chǔ)方案可以解決傳統(tǒng)云存儲(chǔ)系統(tǒng)中單點(diǎn)故障的問(wèn)題.本文的方案采用密鑰分割技術(shù),通過(guò)中間節(jié)點(diǎn)將密鑰存儲(chǔ)在區(qū)塊鏈上,避免了集中密鑰管理的單點(diǎn)故障問(wèn)題.此外,半可信的云服務(wù)器可能會(huì)篡改或泄露數(shù)據(jù)信息,區(qū)塊鏈作為具有去中心化和防篡改功能的分布式架構(gòu),可以很好的保持?jǐn)?shù)據(jù)的隱私性和完整性,正因?yàn)槿绱?,區(qū)塊鏈可以很好的與云計(jì)算結(jié)合.

      智能合約(1)http://zh.m.wiki.sxisa.org/wiki/智能合約是Szabo[21]在1995年首次提出的,其無(wú)需第3方就可以自動(dòng)執(zhí)行,用來(lái)實(shí)現(xiàn)可信交易.區(qū)塊鏈上的智能合約是一組協(xié)議,可以直接寫(xiě)入代碼,在部署智能合約的時(shí)候,將編譯器編譯產(chǎn)生的字節(jié)碼存儲(chǔ)在區(qū)塊鏈中[22],同時(shí)存儲(chǔ)產(chǎn)生的地址.當(dāng)觸發(fā)合約中預(yù)定義的條件時(shí),智能合約自動(dòng)執(zhí)行,將最終結(jié)果存儲(chǔ)到區(qū)塊鏈上.因?yàn)橹悄芎霞s允許在不參與中心化結(jié)構(gòu)機(jī)制的情況下執(zhí)行值得信賴的交易和協(xié)議,因此區(qū)塊鏈的智能合約可以適用于本文中設(shè)計(jì)的系統(tǒng)密鑰的分發(fā)和驗(yàn)證.

      Do等人[23]設(shè)計(jì)了一種具有關(guān)鍵字搜索功能的安全分布式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),通過(guò)使用加密技術(shù)確保數(shù)據(jù)的可用性,在區(qū)塊鏈的幫助下實(shí)現(xiàn)了對(duì)檢索結(jié)果完整性的驗(yàn)證.Wang等人[24]為了解決傳統(tǒng)云服務(wù)器存儲(chǔ)中單點(diǎn)故障的問(wèn)題,設(shè)計(jì)了一個(gè)分布式數(shù)據(jù)存儲(chǔ)的系統(tǒng)框架,在該框架中,基于以太坊區(qū)塊鏈的智能合約實(shí)現(xiàn)了分布式系統(tǒng)下對(duì)加密數(shù)據(jù)的關(guān)鍵字搜索功能,解決了云服務(wù)器返回錯(cuò)誤結(jié)果的問(wèn)題.Hu等人[25]使用了以太坊智能合約取代中心化服務(wù)器來(lái)構(gòu)建分布式隱私保護(hù)下的可搜索加密方案,保證了參與者只有在誠(chéng)實(shí)的執(zhí)行了智能合約的情況下才能獲得相應(yīng)的結(jié)果,增強(qiáng)了系統(tǒng)的可信性.Li等人[26]為了增加系統(tǒng)的可信度,將數(shù)據(jù)存儲(chǔ)在公共鏈上,使用區(qū)塊鏈構(gòu)造SSE模型,以加密的形式將數(shù)據(jù)擁有者的數(shù)據(jù)存放在區(qū)塊鏈上,但是該方案不適合動(dòng)態(tài)數(shù)據(jù).Cai等人[27]融合可搜索加密技術(shù)和基于分布式哈希表(Distributed Hash Table,DHT)的關(guān)鍵字搜索技術(shù)為加密和分布式存儲(chǔ)平臺(tái)設(shè)計(jì)了一個(gè)安全性和魯棒性都較強(qiáng)大的關(guān)鍵字搜索系統(tǒng).但是該系統(tǒng)的搜索功能比較單一,僅能支持私有關(guān)鍵字搜索,并且區(qū)塊鏈的開(kāi)銷較大.

      在數(shù)據(jù)存儲(chǔ)方面,上述方案基本上使用的都是區(qū)塊鏈存儲(chǔ)數(shù)據(jù),但是區(qū)塊鏈具有不可篡改的特性,如果在數(shù)據(jù)量比較大的時(shí)候,在發(fā)生修改或者加入文件數(shù)據(jù)時(shí),會(huì)對(duì)存儲(chǔ)時(shí)間和存儲(chǔ)空間造成比較大的消耗.

      Li等人[28]采用比特幣區(qū)塊鏈和云服務(wù)器結(jié)合實(shí)現(xiàn)單個(gè)關(guān)鍵字的可搜索加密方案,同時(shí)通過(guò)比特幣的腳本文件來(lái)對(duì)結(jié)果進(jìn)行驗(yàn)證.Zhang等人[29]為了保護(hù)誠(chéng)實(shí)的云服務(wù)器免受數(shù)據(jù)存儲(chǔ)過(guò)程中惡意數(shù)據(jù)擁有者的破壞,提出一種沒(méi)有第3方即可實(shí)現(xiàn)的服務(wù)器端驗(yàn)證框架TKSE,采用區(qū)塊鏈技術(shù)和哈希函數(shù),實(shí)現(xiàn)公平支付問(wèn)題.Wang等人[20]利用區(qū)塊鏈的不可篡改性,將在區(qū)塊鏈上的索引存儲(chǔ)內(nèi)容和云服務(wù)器中的搜索索引結(jié)果相匹配,設(shè)計(jì)出一個(gè)適用于單個(gè)關(guān)鍵字搜索的可搜索加密方案.

      上述方案結(jié)合了云服務(wù)器和區(qū)塊鏈,區(qū)塊鏈上存儲(chǔ)的是加密數(shù)據(jù)的哈希值,并且將相關(guān)索引集合存儲(chǔ)在智能合約中,進(jìn)一步提高了數(shù)據(jù)的完整性.但是這些方案都是要求用戶在輸入關(guān)鍵字之后要和數(shù)據(jù)擁有者預(yù)先定義好的關(guān)鍵字完全匹配才能夠返回結(jié)果,即基于精確的關(guān)鍵字搜索,這在用戶的使用過(guò)程中會(huì)帶來(lái)較差的體驗(yàn)感.

      為了解決上述問(wèn)題,本文提出一種基于區(qū)塊鏈的模糊關(guān)鍵字可搜索加密的方案,即用戶輸入關(guān)鍵字,系統(tǒng)返回與之匹配度相接近的文檔數(shù)據(jù).使用區(qū)塊鏈存儲(chǔ)分割的密鑰,將加密文檔存放在云服務(wù)器中,同時(shí)將加密文檔的文檔標(biāo)識(shí)符分別發(fā)送給云服務(wù)器和區(qū)塊鏈,因?yàn)閰^(qū)塊鏈不可篡改,即使惡意用戶修改云服務(wù)器中的數(shù)據(jù)信息,但在區(qū)塊鏈中有其記錄標(biāo)識(shí),在獲取數(shù)據(jù)時(shí)會(huì)停止服務(wù),保證了數(shù)據(jù)的安全性.同時(shí)采用加法同態(tài)加密算法,保證了密鑰分發(fā)時(shí)的安全性.

      3 預(yù)備知識(shí)

      3.1 構(gòu)造模糊關(guān)鍵字集合

      在從文檔中提取出關(guān)鍵字后,需要為關(guān)鍵字構(gòu)造模糊關(guān)鍵字集合,利用文獻(xiàn)[17]研究的編輯距離估計(jì)兩個(gè)字符串的相似性.對(duì)于兩個(gè)關(guān)鍵字W1和W2,編輯距離ed(W1,W2)就是指將一個(gè)關(guān)鍵字轉(zhuǎn)換為另一個(gè)關(guān)鍵字所需要的最小單字符操作數(shù),其中有3個(gè)基本操作[18],如下:

      a)插入:插入一個(gè)字符

      b)刪除:刪除一個(gè)字符

      c)替換:將一個(gè)字母替換成另外一個(gè)字母

      為了實(shí)現(xiàn)基于區(qū)塊鏈的模糊關(guān)鍵字搜索加密,利用編輯距離構(gòu)造模糊關(guān)鍵字集.給定關(guān)鍵字w和編輯距離d,假設(shè)Sw,d表示滿足Sw,d={w′|ed(w,w′)≤d}的模糊關(guān)鍵字集.例如,對(duì)于預(yù)設(shè)編輯距離為1的關(guān)鍵字CASTLE,其基于通配符的模糊關(guān)鍵字集合表示如下:

      SCASTLE,1={CASTLE,*CASTLE,*ASTLE,…,CASTL*E,CASTL*,CASTLE*}

      3.2 倒排索引

      倒排索引(Inverted Index)是被用來(lái)存儲(chǔ)在全文搜索下某個(gè)關(guān)鍵字在一個(gè)文檔或者一組文檔中的存儲(chǔ)位置映射的一種索引方式,以關(guān)鍵字為索引關(guān)鍵字和鏈表訪問(wèn)入口的索引結(jié)構(gòu)[30].

      以英文為例,下面是要被檢索的文本:

      T0="what is this place"

      T1="this is Shanghai" T2="I live in Shanghai"

      得到反向索引文件表如表1所示.

      表1 反向索引文件表

      故檢索條件“this”和“is”將對(duì)應(yīng)這個(gè)集合:{0,1}∩{0,1}={0,1}.

      3.3 同態(tài)加密

      同態(tài)加密(Homomorphic Encryption,HE)的思路是直接將密文進(jìn)行加密,然后在密文上進(jìn)行各種運(yùn)算操作,這些操作和在明文上的操作相同[8].換言之,同態(tài)加密允許在不知道私鑰的情況下對(duì)加密數(shù)據(jù)執(zhí)行特定的計(jì)算,使得計(jì)算之后得到加密數(shù)據(jù)在解密后的結(jié)果與對(duì)明文執(zhí)行相同的計(jì)算得到的結(jié)果相同.實(shí)現(xiàn)效果如圖1所示.本文方案中使用的是基于加法的半同態(tài)加密算法[31].

      圖1 同態(tài)加密工作圖

      4 具體方案

      本文方案使用了比較多的符號(hào),為了方便閱讀,在表2中總結(jié)了這些符號(hào)和對(duì)應(yīng)的描述.該方案主要由5個(gè)參與者,分別是數(shù)據(jù)擁有者(Data Owner,DO)、半可信的云服務(wù)器(Semi-convertible Cloud Server,SCS)、中間節(jié)點(diǎn)A、中間節(jié)點(diǎn)B和數(shù)據(jù)用戶(Data User,DU).

      表2 符號(hào)含義

      此外,本文還假設(shè)π表示本方案中的偽隨機(jī)置換函數(shù)(Pseudo-Random Permutation Function,PRP)π,用來(lái)混淆關(guān)鍵字的位置,選擇一個(gè)偽隨機(jī)函數(shù)(Pseudo-Random Functions,PRF)H來(lái)加密索引向量v(wi),上述兩個(gè)函數(shù)的參數(shù)如下,其中l(wèi)表示關(guān)鍵字的最大長(zhǎng)度:

      π:{0,1}λ×{0,1}l→{0,1}l

      H:{0,1}λ×{0,1}l→{0,1}N

      本方案的體系架構(gòu)如圖2所示,包括內(nèi)容加密、搜索、用戶獲取加密文檔和用戶解密4個(gè)階段.

      圖2 方案體系架構(gòu)

      4.1 內(nèi)容加密階段

      在文件內(nèi)容加密階段,DO使用加密組件生成加密密鑰key,使用對(duì)稱加密算法加密文檔內(nèi)容,并生成安全索引,將結(jié)果發(fā)送到SCS上.

      1)DO的加密組件隨機(jī)生成長(zhǎng)度為L(zhǎng)的子密鑰ak和bk,并相加得到key,同時(shí)生成搜索密鑰k1.

      key=ak+bk

      {0,1}λ→k1(λ表示安全參數(shù))

      2)DO使用key加密文檔,并將結(jié)果發(fā)送到SCS上,即Enc(key,D,k1)→(C,EID,I)

      a)文件加密.FileEnc(D,key)→C,DO使用key加密明文文檔Di(i∈[n]),獲得Ci.DO為加密的文檔集合C中的文件生成加密文檔標(biāo)識(shí)EID={EID1,EID2,…,EIDn},最后將加密文檔集合C和加密文檔標(biāo)識(shí)EID發(fā)送給SCS.

      b)安全索引生成.IndexGen(D,k1)→I,在建立索引表的時(shí)候,我們采用倒排索引的方式.DO通過(guò)掃描明文文檔集合D提取出所有不同的關(guān)鍵字,構(gòu)造出關(guān)鍵字集合,用WD={w1,…,wm}表示.在這之后DO為關(guān)鍵字集合WD中的每一個(gè)關(guān)鍵字wi構(gòu)造出一個(gè)n維向量v(wi),如果第j個(gè)文檔包含關(guān)鍵字wi,則v(wi)[j]=1,否則v(wi)[j]=0.例如有4個(gè)文件D1,D2,D3,D4,其中D1包含關(guān)鍵字w1、w2、w3和w4,文件D2包含關(guān)鍵字w2和w3,文件D3包含關(guān)鍵字w1、w3和w4,文件D4包含關(guān)鍵字w2、w3和w4,則我們可以得到結(jié)果v(w1)=[1010],v(w2)=[1101],v(w3)=[1111],v(w4)=[1011].具體如表3所示.

      表3 索引向量

      在完成上述工作之后,DO為每一個(gè)wi∈WD構(gòu)造模糊關(guān)鍵字集,用Swi,d表示具有編輯距離d的關(guān)鍵字wi的模糊關(guān)鍵字集合,讓wi,t(1≤i≤m,1≤t≤|Swi,d|)表示模糊關(guān)鍵字集Swi,d中的關(guān)鍵字.

      DO為每一個(gè)在Swi,d中的關(guān)鍵字wi,t計(jì)算πk1(wi,t),然后將πk1(wi,t)存儲(chǔ)在倒排索引的第1個(gè)節(jié)點(diǎn)上.其中πk1(wi,t)的計(jì)算方法是使用偽隨機(jī)置換函數(shù)PRPπ,此時(shí)可以混淆關(guān)鍵字的實(shí)際位置.在得到πk1(wi,t)和索引向量v(wi)之后,DO使用偽隨機(jī)函數(shù)PRFH計(jì)算H(πk1(wi,t))⊕v(wi)→E(wi),即通過(guò)索引向量v(wi)獲得加密的索引向量E(wi),如表4所示.

      表4 加密的索引向量

      再將加密后的索引向量E(wi)存儲(chǔ)在倒排索引的第2個(gè)節(jié)點(diǎn)上.之后構(gòu)造安全索引I,安全索引的結(jié)構(gòu)如圖3所示.

      圖3 安全索引

      3)DO使用中間節(jié)點(diǎn)A的公鑰PKA加密ak,并將加密結(jié)果發(fā)送給中間節(jié)點(diǎn)A,使用中間節(jié)點(diǎn)B的公鑰PKB加密bk,并將加密結(jié)果發(fā)送給中間節(jié)點(diǎn)B.

      DO→A:Enc(PKA,ak)

      DO→B:Enc(PKB,bk)

      4)中間節(jié)點(diǎn)A和B使用自己的私鑰SKA和SKB分別解密出ak和bk,并分別建立一張內(nèi)容標(biāo)識(shí)符EID與ak,bk相互對(duì)應(yīng)的表.

      4.2 搜索階段

      TokenGen(w′,k1)→Tw′,當(dāng)用戶想要搜索包含關(guān)鍵字w′(此時(shí)的關(guān)鍵字允許拼寫(xiě)錯(cuò)誤)的文檔時(shí),會(huì)使用共享密鑰k1計(jì)算搜索令牌Tw′=πk1(w′),將令牌發(fā)送給SCS.

      搜索操作由SCS執(zhí)行,在接收到搜索令牌Tw′之后,SCS將安全索引中每一個(gè)鏈表的第1個(gè)節(jié)點(diǎn)的元素與搜索令牌Tw′進(jìn)行匹配.本方案中加密的精確關(guān)鍵字πk1(wi)用于表示鏈表中第1個(gè)節(jié)點(diǎn)的第1個(gè)元素πk1(wi,1),即wi,1代表一個(gè)確切的關(guān)鍵字wi.因此,SCS先判斷搜索令牌πk1(w′)是否等于第1個(gè)元素πk1(wi,1),然后在模糊關(guān)鍵字集Swi,d中匹配其他的加密關(guān)鍵字πk1(wi,t).這個(gè)過(guò)程有以下兩種情況:

      a)πk1(w′)與第1個(gè)節(jié)點(diǎn)元素πk1(wi,1)不匹配,但是與鏈表的第1個(gè)節(jié)點(diǎn)中的剩余元素πk1(wi,t)匹配.這種情況下,SCS將πk1(wi,1)發(fā)送給用戶,當(dāng)用戶收到πk1(wi,1)之后,計(jì)算H(πk1(wi,1)),將其發(fā)送給SCS,SCS通過(guò)在鏈表的第2個(gè)節(jié)點(diǎn)上計(jì)算H(πk1(wi,1))⊕E(wi)→v(wi)得到索引向量v(wi).如果v(wi)[j]=1,SCS將加密文檔Cj添加到包含搜索關(guān)鍵字的加密文檔集合Cw′中.

      b)πk1(w′)與鏈表第1個(gè)節(jié)點(diǎn)元素πk1(wi,1)匹配.這種情況下,SCS通過(guò)計(jì)算H(πk1(w′))⊕E(wi)→v(wi)直接在鏈表的第2個(gè)節(jié)點(diǎn)上解密E(wi),得到索引向量v(wi).如果v(wi)[j]=1,SCS將加密文檔Cj添加到包含搜索關(guān)鍵字的加密文檔集合Cw′中.

      最后,SCS將加密文檔集合Cw′發(fā)送到區(qū)塊鏈的智能合約上,同時(shí),將加密文檔對(duì)應(yīng)的加密文檔標(biāo)識(shí)符EID發(fā)送給DU.

      4.3 用戶獲取加密文檔

      1)用戶首先隨機(jī)生成密鑰對(duì)PKU和SKU,之后用戶向智能合約提交搜索請(qǐng)求(Search Ask,SA),該搜索請(qǐng)求包含SCS返回的加密文檔標(biāo)識(shí)EID,并使用PKA加密:

      DO→smart:SA=Enc(PKA,EID‖PKU)

      2)智能合約收到搜索請(qǐng)求SA之后,向中間節(jié)點(diǎn)A提交搜索許可請(qǐng)求(Search Licensing Request,SLR),即SLR=SA‖T.

      3)中間節(jié)點(diǎn)A收到搜索許可請(qǐng)求SLR之后,會(huì)驗(yàn)證時(shí)間戳T是否有效,驗(yàn)證通過(guò)之后,中間節(jié)點(diǎn)A先使用SKA解密出EID和PKU.然后,中間節(jié)點(diǎn)A根據(jù)EID隨機(jī)生成長(zhǎng)度為L(zhǎng)的ha和hb,滿足ha+hb∈[0,M-1](其中M表示一個(gè)很大的數(shù)),并用ha加密ak,最后將生成的搜索許可(Search Licence,SL)發(fā)送到智能合約上.搜索許可包括使用ha加密的ak,以及搜索許可憑證(Search Licence Certificate,SLC),具體如下:

      SLC=(PKB,EID‖hb‖T)‖Sign(SKA,EID‖hb‖T)

      A→smart:SL=SLC‖Enc(ha,ak)‖Enc(PKU,ha+hb)‖

      Sign(SKA,Enc(ha,ak)‖Enc(PKU,ha+hb))

      4)智能合約將完整的SL發(fā)送給中間節(jié)點(diǎn)B,B在接收到消息之后,用PKA驗(yàn)證SL是否有效,驗(yàn)證通過(guò)之后,從SL中提取出SLC,再使用PKA驗(yàn)證SLC的有效性.以上均通過(guò)之后,中間節(jié)點(diǎn)B使用SKB解密出EID和hb,然后查找出與該加密文檔標(biāo)識(shí)符EID相對(duì)應(yīng)的bk,之后再使用hb加密bk,并將其發(fā)送給智能合約:

      B→smart:Enc(hb,bk)

      5)智能合約將來(lái)自中間節(jié)點(diǎn)A、B的信息打包發(fā)送給數(shù)據(jù)用戶DU,即:

      smart→DU:Enc(ha,ak)‖Enc(PKU,ha+hb)‖Enc(hb,bk)‖Cw′

      該階段的大致工作如圖4所示.

      圖4 用戶獲取加密文檔工作圖

      4.4 用戶解密階段

      1)用戶接收到智能合約的信息之后,使用SKU解密出ha+hb:

      DU:ha+hb=Dec(SKU,Enc(PKU,ha+hb))

      2)根據(jù)加法同態(tài)加密算法解密出:

      Enc(ha,ak)+Enc(hb,bk)=Enc(ha+hb,ak+bk)

      故用戶可以解密出ak+bk

      ak+bk=Dec(ha+hb,Enc(ha,ak)+Enc(hb+bk))

      3)用戶根據(jù)密鑰解密出結(jié)果:

      key=ak+bk

      Dw′=Dec(key,Cw′)

      Dw′即為用戶所要搜索包括關(guān)鍵字w′或者包含與關(guān)鍵字w′最接近的關(guān)鍵字的文檔集合.

      5 方案理論分析

      5.1 隱私保護(hù)能力分析

      用戶需要在獲取加密文檔的時(shí)候提交SA,此時(shí)會(huì)生成隨機(jī)密鑰對(duì)向區(qū)塊鏈的智能合約提交SA,之后智能合約將生成SLR轉(zhuǎn)發(fā)給中間節(jié)點(diǎn),因?yàn)槊看伟l(fā)送的SLR中的時(shí)間戳T都不相同,故這些中間節(jié)點(diǎn)是無(wú)法獲取用戶的身份信息的,所以本文方案是可以保證用戶的匿名性的.此外,因?yàn)閰^(qū)塊鏈?zhǔn)欠植际降拇鎯?chǔ)架構(gòu),所以是很難實(shí)現(xiàn)網(wǎng)絡(luò)竊聽(tīng)的.綜合上述要點(diǎn),該方案可以實(shí)現(xiàn)用戶隱私保護(hù).

      5.2 正確性分析

      在搜索階段,因?yàn)楸痉桨笣M足拼寫(xiě)錯(cuò)誤的關(guān)鍵字搜索,并且采用具有兩個(gè)節(jié)點(diǎn)的鏈表文件來(lái)存儲(chǔ)相關(guān)信息,如果在用戶拼寫(xiě)時(shí)發(fā)生拼寫(xiě)錯(cuò)誤,可以通過(guò)與鏈表第一個(gè)節(jié)點(diǎn)中存儲(chǔ)的模糊關(guān)鍵字集合進(jìn)行匹配,找到對(duì)應(yīng)的模糊關(guān)鍵字的位置,再進(jìn)行之后的操作.因此,在該階段時(shí)可以返回相應(yīng)的結(jié)果的.

      在用戶解密的階段,用戶獲取到Enc(ha,ak)、Enc(PKU,ha+hb)和Enc(hb,bk),首先解密出ha+hb,然后基于加密同態(tài)加密算法可以得出:

      Enc(ha,ak)+Enc(hb,bk)=Enc(ha+hb,ak+bk)

      最終可以得出:

      ak+bk=Dec(ha+hb,Enc(ha,ak)+Enc(hb+bk))

      因此根據(jù)key=ak+bk就可以解密出真正的內(nèi)容.

      5.3 安全性分析

      1)用戶只有從區(qū)塊鏈上獲取到有效的打包信息才能夠解密加密的文檔,保障了系統(tǒng)的安全性,防止惡意用戶獲取加密文檔信息.

      DO使用key加密明文文檔的內(nèi)容,用戶只有獲取到key才能夠解密出文檔內(nèi)容.DO通過(guò)將加密密鑰key分成兩部分ak和bk并分別交于中間節(jié)點(diǎn)A和B進(jìn)行存儲(chǔ).在獲得打包的信息之后,用戶使用自己的私鑰SKU解密出ha+hb,之后再基于加法同態(tài)加密算法解密出key.因此,只有獲得打包信息的用戶才能夠?qū)⒓用艿奈臋n進(jìn)行解密.

      2)在用戶獲取加密文檔以及加密密鑰的過(guò)程中,中間節(jié)點(diǎn)、智能合約以及區(qū)塊鏈上的其他節(jié)點(diǎn)均不會(huì)獲得完整的密鑰key.

      對(duì)于中間節(jié)點(diǎn)A,因?yàn)槠浔4娴氖遣糠置荑€ak,所以不能夠獲取完整的密鑰.同理,對(duì)于中間節(jié)點(diǎn)B而言,因?yàn)槠浔4娴氖遣糠置荑€bk,所以也不能夠獲取完整的密鑰.對(duì)于智能合約而言,中間節(jié)點(diǎn)A和B都是發(fā)送的各自加密的部分密鑰,智能合約無(wú)法獲取具體信息.在獲取加密文檔階段,中間節(jié)點(diǎn)A向智能合約提交搜索許可SL,其中包含使用ha加密的ak,而智能合約無(wú)法解密出結(jié)果.在將信息打包的時(shí)候,也包含了使用hb加密的bk,因?yàn)槎际鞘褂昧嗣荑€進(jìn)行了相應(yīng)的加密,因此智能合約無(wú)法獲取內(nèi)容加密密鑰.如果其他惡意節(jié)點(diǎn)試圖隨機(jī)生成hb′來(lái)偽造搜索許可憑證SLC的話,則智能合約將偽造的(PKB,EID‖hb′‖T)‖Sign(SKA′,EID‖hb′‖T)發(fā)送到中間節(jié)點(diǎn)B上,中間節(jié)點(diǎn)B會(huì)使用PKA驗(yàn)證簽名Sign(SKA′,EID‖hb′‖T)不通過(guò),因此不會(huì)得到部分密鑰bk.故最終不會(huì)獲得加密密鑰key.

      3)攻擊者不能夠偽造出智能合約發(fā)送給用戶的打包信息.

      如果攻擊者偽造中間節(jié)點(diǎn)A發(fā)送SL給智能合約,之后該偽造的SL發(fā)送給中間節(jié)點(diǎn)B,會(huì)通不過(guò)中間節(jié)點(diǎn)B的驗(yàn)證,故不會(huì)獲得相應(yīng)的密鑰.如果攻擊者偽造中間節(jié)點(diǎn)B在接收到搜索許可SL后提取出的搜索許可憑證SLC,首先使用PKA驗(yàn)證簽名Sign(SKA,EID‖hb‖T)通過(guò),但是攻擊者無(wú)法使用SKB解密出EID和hb,故也不會(huì)得到相應(yīng)的密鑰.因此,攻擊者不能夠偽造出智能合約發(fā)送給用戶的打包信息.

      5.4 可靠性分析

      假設(shè)在概率多項(xiàng)式時(shí)間(Probability polynomial time,PPT)內(nèi)存在一個(gè)敵手A可以以不可忽略的概率破壞方案的可靠性,換言之,敵手A可以偽造出(Cw′′,πk1(wi,1)′)使得用戶接收到偽造的加密文檔標(biāo)識(shí)EID′,之后DU會(huì)根據(jù)EID′去構(gòu)造搜索請(qǐng)求SA,最終會(huì)獲得其偽造的Cw′′,則敵手A就成功欺騙DU,并使DU相信Cw′′是有效的.

      但是在內(nèi)容加密階段,中間節(jié)點(diǎn)A和中間節(jié)點(diǎn)B分別建立了一張EID與ak和bk一一相對(duì)應(yīng)的表,故在DU使用EID′去獲取加密文檔時(shí),在中間節(jié)點(diǎn)B進(jìn)行查找與EID′相對(duì)應(yīng)的bk時(shí)就無(wú)法獲得結(jié)果,從而DU無(wú)法獲取到解密密鑰.此外,因?yàn)橹虚g節(jié)點(diǎn)建立的與EID相對(duì)應(yīng)的表只有自己保存,故敵手A并不能獲得.因此,敵手A是無(wú)法欺騙DU的,故假設(shè)不成立.綜上所述,在該方案中,不存在以不可忽略的概率破壞方案的可靠性的敵手A,即該方案滿足可靠性.

      5.5 智能合約

      在內(nèi)容加密階段,DO將加密密鑰key隨機(jī)生成長(zhǎng)度為L(zhǎng)的密鑰ak和bk,之后分別使用中間節(jié)點(diǎn)A和中間節(jié)點(diǎn)B的公鑰進(jìn)行加密,之后將加密的結(jié)果存放在智能合約上.

      在搜索階段,用戶通過(guò)生成搜索令牌Tw獲取到對(duì)應(yīng)加密文檔的文檔標(biāo)識(shí),此外,SCS將搜索到的加密文檔結(jié)果發(fā)送到區(qū)塊鏈的智能合約上.在這一階段,未直接將加密文檔發(fā)送給用戶是為了保護(hù)用戶的隱私.我們假設(shè)的SCS是誠(chéng)實(shí)但好奇的,如果直接將加密文檔發(fā)送給用戶,有SCS中好奇者想要獲取用戶的相關(guān)信息,就會(huì)根據(jù)用戶查找的相關(guān)信息進(jìn)行數(shù)據(jù)總結(jié)歸納,從而推測(cè)出用戶的搜索習(xí)慣,獲得用戶的相關(guān)信息.但是本文中是將加密的文檔的表示符EID發(fā)送給用戶,因?yàn)樵趦?nèi)容加密階段,DO使用偽隨機(jī)置換函數(shù)混淆了關(guān)鍵字的位置,在這之后使用的偽隨機(jī)函數(shù)進(jìn)行的安全加密獲得的結(jié)果所對(duì)應(yīng)的關(guān)鍵字文檔的實(shí)際位置發(fā)生變化,故好奇的用戶無(wú)法判斷出文檔位置.此外,在SCS中會(huì)包含大量的文件,如果好奇用戶進(jìn)行查找,在成本上會(huì)有巨大的消耗.

      在獲取加密文檔階段,智能合約作為信息的轉(zhuǎn)發(fā)者.智能合約將SLR發(fā)送給中間節(jié)點(diǎn)A,之后智能合約又將中間節(jié)點(diǎn)A返回的搜索許可SL發(fā)送給中間節(jié)點(diǎn)B.之后智能合約將中間節(jié)點(diǎn)A和B的信息以及加密文檔進(jìn)行打包發(fā)送給用戶.

      6 實(shí)驗(yàn)及結(jié)果分析

      6.1 智能合約的開(kāi)銷

      為了解智能合約在本方案中的開(kāi)銷,我們基于在線的Remix進(jìn)行智能合約的部署與測(cè)試,程序設(shè)計(jì)語(yǔ)言是Java語(yǔ)言和solidity.

      在部署智能合約和進(jìn)行相關(guān)交易時(shí)會(huì)執(zhí)行相應(yīng)的代碼,在執(zhí)行的過(guò)程中會(huì)使得智能合約產(chǎn)生一定的消耗.在以太坊中用gas為單位表示消耗,每次操作都會(huì)有相應(yīng)的gas消耗值,即gas used,單位gas的價(jià)格稱之為gas price,二者的乘積即為每筆交易的交易費(fèi).在進(jìn)行實(shí)驗(yàn)的時(shí)候,查詢得知以太坊的交易價(jià)格為1 ether=1757 USD,令gas價(jià)格是1 gasprice=10-9ether.

      首先是智能合約的部署,即deploysmart操作,開(kāi)銷為2.326717792 USD,DO將加密好的密鑰發(fā)送到智能合約上,即encryptedkey操作,開(kāi)銷為0.192962525 USD,智能合約接收到DU發(fā)送的搜索請(qǐng)求SA,即accSA操作,開(kāi)銷為0.077766577 USD,DO設(shè)置智能合約的地址,即setsmartaddress操作,開(kāi)銷為0.075930512 USD,DO設(shè)置中間節(jié)點(diǎn)的地址,即setnodeaddress操作,開(kāi)銷為0.194204724 USD,智能合約發(fā)送搜索許可請(qǐng)求SLR到中間節(jié)點(diǎn)A,即sendSLR操作,開(kāi)銷為0.078581825 USD,中間節(jié)點(diǎn)A將搜索許可SL發(fā)送給智能合約,即accSL操作,開(kāi)銷為0.080136770 USD,智能合約發(fā)送搜索許可SL到中間節(jié)點(diǎn)B,即sendSL操作開(kāi)銷為0.080168396 USD,中間節(jié)點(diǎn)B將加密好的部分密鑰發(fā)送給智能合約,即accEncbk操作,開(kāi)銷為0.077810502 USD,智能合約將信息打包發(fā)送給DU,即sendInfo操作,開(kāi)銷為0.124722402 USD.如表5所示,該實(shí)驗(yàn)的數(shù)據(jù)證明了本文方案能以較低的開(kāi)銷實(shí)現(xiàn)用戶的隱私保護(hù).

      表5 智能合約開(kāi)銷測(cè)試表

      6.2 模糊關(guān)鍵字集合生成時(shí)間

      為了測(cè)試本文方案的效率,我們?cè)谡鎸?shí)的數(shù)據(jù)集上進(jìn)行相關(guān)的實(shí)驗(yàn),我們使用從Kaggle下載的全美國(guó)各州的健康保險(xiǎn)市場(chǎng)的數(shù)據(jù)集Health-Insurance-Marketplace(2)http://www.kaggle.com/hhs/health-insurance-marketplace進(jìn)行分析,從其中選取了5000個(gè)數(shù)據(jù)文件,又從這5000個(gè)數(shù)據(jù)文件中獲得大約8000個(gè)關(guān)鍵字.即文檔數(shù)0≤n≤5000,關(guān)鍵字?jǐn)?shù)0≤m≤8000,該實(shí)驗(yàn)的硬件環(huán)境是Inter(R)Core(TM)i7-8700 CPU(3.2 GHz)的處理器和16 GB的內(nèi)存.操作系統(tǒng)是64位的Windows系統(tǒng),對(duì)稱加密算法使用的是AES算法.

      因?yàn)楸痉桨钢С帜:P(guān)鍵字搜索,故我們要為提取出的關(guān)鍵字構(gòu)造模糊關(guān)鍵字集合.如圖5是在編輯距離d=1時(shí)生成模糊關(guān)鍵字集合所開(kāi)銷的時(shí)間.

      圖5 模糊關(guān)鍵字集合生成時(shí)間(d=1)

      因?yàn)槊總€(gè)關(guān)鍵字的長(zhǎng)度不同,因此模糊關(guān)鍵字的數(shù)量以及生成所有模糊關(guān)鍵字的時(shí)間都會(huì)不同,在編輯距離d一定的情況下,構(gòu)造模糊關(guān)鍵字集合的時(shí)間隨著關(guān)鍵字的數(shù)量增加而增加.我們從文件中提取出的8000個(gè)關(guān)鍵字在生成模糊關(guān)鍵字集合時(shí),消耗的時(shí)間為357.7934ms,結(jié)果表明構(gòu)造模糊關(guān)鍵字集合的效率是比較高的.

      6.3 文檔加密解密時(shí)間

      DO使用密鑰加密明文文檔的時(shí)間和用戶進(jìn)行解密獲得的文檔時(shí)間如圖6所示.從圖中可以看出,內(nèi)容加密操作和用戶解密操作都與文檔的數(shù)量成線性關(guān)系,即加密操作和解密操作的時(shí)間隨著文檔數(shù)量增加而增加.此外,從開(kāi)銷的時(shí)間上分析,在相同數(shù)量的文檔下,解密操作所需要的時(shí)間是少于加密操作所需要的時(shí)間的.在對(duì)加密操作的時(shí)間進(jìn)行分析,在本文的實(shí)驗(yàn)環(huán)境下,對(duì)5000個(gè)文檔進(jìn)行加密操作的時(shí)間都小于1s,因此,該加密操作的時(shí)間是比較快的.所以綜合上述分析,該方案在內(nèi)容加密階段和用戶解密文檔階段,其對(duì)應(yīng)的加密操作和解密操作所需要的時(shí)間都有一定的優(yōu)勢(shì).

      圖6 加密解密時(shí)間對(duì)比圖

      7 結(jié)束語(yǔ)

      本文主要研究了區(qū)塊鏈環(huán)境下的隱私安全保護(hù)問(wèn)題,提出了基于模糊關(guān)鍵字可搜索加密和同態(tài)加密相結(jié)合的區(qū)塊鏈隱私保護(hù)方案.該方案通過(guò)使用加法同態(tài)加密算法,能夠一并實(shí)現(xiàn)獲取加密文檔信息隱私保護(hù)和用戶信息隱私保護(hù).同時(shí),我們對(duì)本方案的隱私保護(hù)性、正確性、安全性和可靠性進(jìn)行分析,證明了該方案的可行性.此外,實(shí)驗(yàn)數(shù)據(jù)證明了能以較低的開(kāi)銷實(shí)現(xiàn)區(qū)塊鏈隱私保護(hù),具有較好的實(shí)用性.

      猜你喜歡
      關(guān)鍵字解密合約
      解密“熱脹冷縮”
      履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
      解密“一包三改”
      炫詞解密
      成功避開(kāi)“關(guān)鍵字”
      解密“大調(diào)解”
      基于用戶反饋的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢系統(tǒng)
      合約必守,誰(shuí)能例外!——對(duì)“情勢(shì)變更”制度不可寄于過(guò)高期望
      誘導(dǎo)性虛假下載鏈接不完全評(píng)測(cè)
      奎屯市| 荣昌县| 陈巴尔虎旗| 正定县| 铜川市| 凌云县| 资中县| 贵南县| 孟州市| 万荣县| 加查县| 江陵县| 太仆寺旗| 吐鲁番市| 谷城县| 商河县| 高邮市| 江孜县| 二连浩特市| 东莞市| 塔河县| 肇庆市| 宜兰市| 北票市| 五峰| 呈贡县| 惠东县| 高密市| 钟祥市| 昌江| 昌宁县| 成都市| 双鸭山市| 海原县| 花莲县| 东城区| 双牌县| 陆丰市| 平舆县| 敦煌市| 礼泉县|