王雙星,羅勁瑭,帥莉莎,張佳敏,張敏,陽(yáng)小龍
(1. 北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院,北京 100083;2. 國(guó)網(wǎng)四川省電力公司經(jīng)濟(jì)技術(shù)研究院,四川 成都 610041)
云計(jì)算服務(wù)在大數(shù)據(jù)時(shí)代為人們帶來(lái)了極大的方便,其計(jì)算能力強(qiáng)、存儲(chǔ)空間大的優(yōu)勢(shì)吸引了無(wú)數(shù)用戶。用戶將數(shù)據(jù)上傳到云端后,數(shù)據(jù)的所有權(quán)與其使用權(quán)處于分離狀態(tài),容易造成個(gè)人隱私信息泄露的問(wèn)題。確定性刪除作為云數(shù)據(jù)安全存儲(chǔ)領(lǐng)域的核心技術(shù)之一,旨在保障用戶數(shù)據(jù)隱私,使超過(guò)用戶授權(quán)期限的數(shù)據(jù)在CSP(cloud service provider,云服務(wù)提供商)處失效且不可恢復(fù)。實(shí)現(xiàn)云端數(shù)據(jù)的確定性刪除,是用戶實(shí)現(xiàn)對(duì)其參與共享內(nèi)容的有效管控和保護(hù)自身隱私的重要途徑。
根據(jù)調(diào)研,現(xiàn)有研究主要實(shí)現(xiàn)了3個(gè)層面的確定性刪除[1]。
· 第一層意義上的確定性刪除是指將云端數(shù)據(jù)刪除問(wèn)題轉(zhuǎn)換為用戶對(duì)密鑰的安全刪除問(wèn)題。其研究成果可以分為基于密鑰集中管理和密鑰分散管理兩大類。集中式密鑰管理的代表方案為Nair等[2]提出的基于Ephemerizer系統(tǒng)的確定性刪除方案,通過(guò)第三方密鑰管理服務(wù)器生成公鑰加密數(shù)據(jù)密鑰,當(dāng)密鑰管理服務(wù)器刪除私鑰之后數(shù)據(jù)密鑰和密文將無(wú)法解密訪問(wèn),從而實(shí)現(xiàn)數(shù)據(jù)的確定性刪除。Tang 等[3]對(duì)上述方案進(jìn)行了擴(kuò)展,提出基于策略的確定性刪除方案(FADE),其基本思想是將數(shù)據(jù)用DK(data key,數(shù)據(jù)密鑰)加密并與訪問(wèn)策略的布爾組合進(jìn)行關(guān)聯(lián),每條訪問(wèn)策略與一個(gè)CK(control key,控制密鑰)關(guān)聯(lián),如果CK被密鑰管理者刪除則原數(shù)據(jù)便不可恢復(fù)。分散式密鑰管理的代表性方案是Geambasu 等[4]提出的Vanish方案。其主要思想是:用戶將數(shù)據(jù)用隨機(jī)生成的密鑰K進(jìn)行加密,并將此密鑰進(jìn)行門限密碼處理后隨機(jī)分發(fā)到DHT[5](distributed hash table,分布式哈希表)網(wǎng)絡(luò)中,DHT網(wǎng)絡(luò)的動(dòng)態(tài)更新特性會(huì)將密鑰分片刪除,此時(shí)密鑰K將不能進(jìn)行重構(gòu),達(dá)到用戶數(shù)據(jù)確定性刪除的目的。為了解決Vanish方案易受Sybil攻擊[6]的缺陷,Zeng 等[7]提出一種解決方案SafeVanish,通過(guò)增加密文分量長(zhǎng)度并利用RSA加密對(duì)稱密鑰的方式抵抗Sybil攻擊。
· 第二層意義上的確定性刪除指云內(nèi)或跨云的數(shù)據(jù)副本刪除問(wèn)題。針對(duì)云環(huán)境下數(shù)據(jù)多副本難以管理的問(wèn)題,熊金波等[8]提出一種多副本安全共享與關(guān)聯(lián)刪除方案,方案利用RAO(replication associated object,副本關(guān)聯(lián)對(duì)象)封裝用戶數(shù)據(jù)副本,CSP維護(hù)副本目錄記錄和追蹤用戶數(shù)據(jù)所有副本信息。不同服務(wù)器之間的同步機(jī)制可以監(jiān)測(cè)RAO產(chǎn)生或刪除副本的操作行為,保證了跨云副本的精確管理。
· 第三層意義上的確定性刪除是指實(shí)現(xiàn)云端數(shù)據(jù)的刪除反饋機(jī)制。Zhang等[9]基于數(shù)據(jù)完整性檢查提出可證明可追溯的確定性刪除方案,云端對(duì)數(shù)據(jù)確定性刪除后需要按照用戶指定的模式對(duì)原始存儲(chǔ)位置進(jìn)行覆寫(xiě),并利用區(qū)塊鏈公開(kāi)透明的特性進(jìn)行覆寫(xiě)結(jié)果的公眾驗(yàn)證。杜瑞忠等[10]構(gòu)建基于臟數(shù)據(jù)塊覆寫(xiě)的可搜索路徑散列二叉樹(shù)(DSMHT),對(duì)要?jiǎng)h除的數(shù)據(jù)進(jìn)行覆寫(xiě)后再進(jìn)行正確性驗(yàn)證。余海波[11]提出基于區(qū)塊鏈的數(shù)據(jù)確定性刪除協(xié)議,利用區(qū)塊鏈保存服務(wù)器生成的數(shù)據(jù)刪除證據(jù)和經(jīng)證據(jù)構(gòu)造得到的Merkle樹(shù)的根值。用戶通過(guò)區(qū)塊鏈上的證據(jù)信息,對(duì)收到的刪除結(jié)果進(jìn)行驗(yàn)證,確保服務(wù)器的行為誠(chéng)實(shí)和數(shù)據(jù)不可恢復(fù)。
由上述調(diào)研可知,現(xiàn)有確定性刪除方法聚焦的重點(diǎn)是確保用戶可以通過(guò)刪除數(shù)據(jù)密鑰等手段使其共享數(shù)據(jù)不再可以訪問(wèn),并使刪除結(jié)果更具有說(shuō)服力;但現(xiàn)有方法都忽略的是除了數(shù)據(jù)本身,用戶的共享和刪除行為也是攻擊者關(guān)注的對(duì)象。這是因?yàn)橥ㄟ^(guò)將用戶行為與其身份進(jìn)行關(guān)聯(lián),CSP或攻擊者可以監(jiān)視用戶的一舉一動(dòng),甚至對(duì)用戶進(jìn)行肖像描繪、興趣預(yù)測(cè),并在用戶不知情的情況下將分析結(jié)果隨意傳播以換取經(jīng)濟(jì)利益,這無(wú)疑會(huì)給用戶隱私帶來(lái)威脅。所以,如何實(shí)現(xiàn)在不透露用戶身份的情況下在云環(huán)境下共享數(shù)據(jù)、刪除(撤銷)數(shù)據(jù)是解決數(shù)據(jù)共享參與用戶隱私保護(hù)的另一重要途徑。針對(duì)上述問(wèn)題,本文提出的確定性刪除方法實(shí)現(xiàn)了用戶數(shù)據(jù)匿名上云,并在保持用戶匿名情況下實(shí)現(xiàn)數(shù)據(jù)的確定性刪除,能有效避免攻擊者對(duì)用戶行為的追蹤分析。本文的主要貢獻(xiàn)如下。
· 改進(jìn)了可鏈接環(huán)簽名方案,可同時(shí)兼顧用戶匿名性和用戶自主性,即用戶可在匿名情況下自由決定簽名中的鏈接標(biāo)記。這樣,用戶可以將加密數(shù)據(jù)與環(huán)簽名信息上傳到CSP,在確定性刪除階段用戶生成帶有同樣鏈接標(biāo)記的簽名,CSP即可通過(guò)鏈接數(shù)據(jù)上傳階段和數(shù)據(jù)確定性刪除階段的簽名信息實(shí)現(xiàn)匿名確權(quán)從而執(zhí)行確定性刪除。
· 構(gòu)建了不同類型的區(qū)塊鏈交易以實(shí)現(xiàn)密鑰信息分散管理和確定性刪除,避免了集中密鑰管理的單點(diǎn)失效問(wèn)題,也不需要引入可信第三方,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu);同時(shí)得益于區(qū)塊鏈難以篡改和可追溯的特性,使確定性刪除操作被永久記錄在區(qū)塊鏈并且不可抵賴,更具有“確定性”。
(1)Shamir門限秘密共享方案[12]
其基本思想是,將秘密k以某種方式分成n份k1,k2,…,kn,并滿足:
· 任意t或t個(gè)以上ki能夠計(jì)算出k;
· 任意少于或等于t-1個(gè)ki無(wú)法計(jì)算出k。
(2) 可鏈接環(huán)簽名[13]
又稱為L(zhǎng)SAG(linkable spontaneous anonymous group,可鏈接自發(fā)匿名群組)簽名??涉溄迎h(huán)簽名有以下特性。
· 匿名性:若簽名者所在環(huán)中有n個(gè)成員的公鑰,攻擊者無(wú)法確定簽名由環(huán)中哪個(gè)成員生成。
· 自發(fā)性:沒(méi)有群組秘密,不需要群組管理員。
· 不可偽造性:環(huán)中其他成員不能偽造真實(shí)簽名者對(duì)消息m的簽名,攻擊者在獲得某個(gè)有效簽名的基礎(chǔ)上,也不能為消息偽造一個(gè)簽名。
· 可鏈接性:若誠(chéng)實(shí)簽名者在同一環(huán)中對(duì)消息m和m′簽名得到兩個(gè)可鏈接環(huán)簽名,那么這兩個(gè)環(huán)簽名擁有相同的鏈接標(biāo)記。根據(jù)鏈接標(biāo)記,環(huán)中成員能在不知簽名者身份的情況下驗(yàn)證兩個(gè)簽名是否由同一簽名者生成。
本文對(duì)可鏈接環(huán)簽名方案進(jìn)行了改進(jìn),使其能在同一簽名群體中生成帶有不同鏈接標(biāo)記的簽名。
(3)區(qū)塊鏈[14-15]
區(qū)塊鏈實(shí)際上是一種分布式數(shù)據(jù)庫(kù)或公共分類賬本,由一系列按時(shí)間順序排列的區(qū)塊組成,其中記錄著經(jīng)過(guò)驗(yàn)證的交易或者數(shù)字事件。最重要的是,區(qū)塊鏈每個(gè)區(qū)塊都包含時(shí)間戳和前一個(gè)區(qū)塊的哈希值(如圖1所示),這使得區(qū)塊鏈的數(shù)據(jù)不可更改并且可追蹤。分布式網(wǎng)絡(luò)中的節(jié)點(diǎn)達(dá)成共識(shí)后,新的有效區(qū)塊才會(huì)被添加到區(qū)塊鏈。此外,分布式網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都保留相同的區(qū)塊鏈副本,這使得區(qū)塊鏈能有效防止單點(diǎn)失效問(wèn)題。
文中所用符號(hào)縮寫(xiě)及含義見(jiàn)表1。
系統(tǒng)模型如圖2所示,基于區(qū)塊鏈的確定性刪除模型由4個(gè)實(shí)體組成:數(shù)據(jù)擁有者(data owner,DO)、數(shù)據(jù)使用者(data user,DU)、區(qū)塊鏈網(wǎng)絡(luò)和CSP(數(shù)據(jù)擁有者和數(shù)據(jù)使用者均為
圖1 區(qū)塊鏈的結(jié)構(gòu)
表1 符號(hào)縮寫(xiě)
圖2 系統(tǒng)模型
區(qū)塊鏈中的節(jié)點(diǎn),為方便敘述將其分開(kāi)表示)。其中,CSP負(fù)責(zé)存儲(chǔ)、返回用戶的加密數(shù)據(jù),監(jiān)聽(tīng)區(qū)塊鏈交易信息并執(zhí)行云數(shù)據(jù)的刪除;數(shù)據(jù)擁有者將密鑰信息通過(guò)交易分散到區(qū)塊鏈網(wǎng)絡(luò)中并將加密數(shù)據(jù)上傳到CSP;數(shù)據(jù)使用者通過(guò)交易請(qǐng)求從區(qū)塊鏈中恢復(fù)密鑰信息并解密從CSP下載的加密數(shù)據(jù);區(qū)塊鏈網(wǎng)絡(luò)負(fù)責(zé)密鑰信息的分散管理,同時(shí)驗(yàn)證交易信息的合法性。本文參考Li等[16]的方案為區(qū)塊鏈網(wǎng)絡(luò)構(gòu)建了3種類型的區(qū)塊鏈交易,分別為TXDATA、TXREQUEST和TXDELETE,分別用于數(shù)據(jù)上傳、數(shù)據(jù)請(qǐng)求和數(shù)據(jù)確定性刪除。每個(gè)區(qū)塊鏈節(jié)點(diǎn)還擁有一個(gè)鏈下數(shù)據(jù)庫(kù),用以存儲(chǔ)密鑰信息經(jīng)Shamir門限秘密拆分得到的子秘密。此外,區(qū)塊鏈節(jié)點(diǎn)共同維護(hù)一個(gè)公鑰池,其中存儲(chǔ)所有節(jié)點(diǎn)的環(huán)簽名公鑰和RSA公鑰,所有節(jié)點(diǎn)都能獲取其中存儲(chǔ)的公鑰列表。
對(duì)于上述系統(tǒng)模型,本文定義如下假設(shè)條件。
(1)云服務(wù)提供商(CSP):誠(chéng)實(shí)地存儲(chǔ)用戶數(shù)據(jù),但是對(duì)用戶數(shù)據(jù)好奇,可能不誠(chéng)實(shí)刪除用戶數(shù)據(jù)。
(2)數(shù)據(jù)使用者:數(shù)據(jù)使用者是可信的,不會(huì)將恢復(fù)的明文信息透露給其他人。實(shí)際上,一旦數(shù)據(jù)使用者獲得數(shù)據(jù)訪問(wèn)權(quán)限,諸如截屏、拍照等較高層級(jí)的操作是無(wú)法被禁止的[17],所以本文認(rèn)為假設(shè)合理。
(3)區(qū)塊鏈網(wǎng)絡(luò):當(dāng)收到外部交易時(shí),每一個(gè)區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)會(huì)根據(jù)交易類型誠(chéng)實(shí)執(zhí)行相應(yīng)命令,即每個(gè)節(jié)點(diǎn)會(huì)自動(dòng)執(zhí)行數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)刪除的操作。假設(shè)合理性基于區(qū)塊鏈網(wǎng)絡(luò)的安全性,即某個(gè)節(jié)點(diǎn)想要改變當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)狀態(tài),則其需要利用自己想要的執(zhí)行結(jié)果說(shuō)服其他節(jié)點(diǎn)或者發(fā)動(dòng)51%攻擊,無(wú)論哪一種方式都需要付出極大的代價(jià)。
數(shù)據(jù)擁有者將數(shù)據(jù)加密后上傳到CSP,將密鑰信息和存儲(chǔ)位置利用Shamir秘密分享策略進(jìn)行拆分,并通過(guò)區(qū)塊鏈交易廣播到不同區(qū)塊鏈節(jié)點(diǎn)中存儲(chǔ)。這樣不僅避免了使用密鑰管理服務(wù)器容易發(fā)生的單點(diǎn)失效問(wèn)題,同時(shí)也使密鑰信息不容易被攻擊者竊取。
數(shù)據(jù)擁有者和數(shù)據(jù)使用者是對(duì)等的區(qū)塊鏈節(jié)點(diǎn)。為實(shí)現(xiàn)匿名確定性刪除,所有區(qū)塊鏈節(jié)點(diǎn)發(fā)送交易時(shí)不攜帶身份信息,即匿名發(fā)送交易。但是匿名情況下確保交易發(fā)送者身份合法性是需要解決的問(wèn)題,而可鏈接環(huán)簽名可以實(shí)現(xiàn)匿名情況下的身份認(rèn)證,故本文利用可鏈接環(huán)簽名對(duì)交易進(jìn)行簽名和驗(yàn)證。在數(shù)據(jù)上傳階段,數(shù)據(jù)擁有者為TXDATA交易添加特定鏈接標(biāo)記,當(dāng)數(shù)據(jù)擁有者想要結(jié)束共享時(shí),則發(fā)送帶有相同鏈接標(biāo)記的TXDELETE交易通知區(qū)塊鏈節(jié)點(diǎn)和CSP執(zhí)行刪除操作。由于可鏈接環(huán)簽名的不可偽造性,攻擊者無(wú)法偽造帶有相同鏈接標(biāo)記的合法簽名,也就是說(shuō)只有數(shù)據(jù)擁有者才能刪除自己共享的數(shù)據(jù),保證了數(shù)據(jù)安全性。
本文構(gòu)建了3種不同類型的交易,設(shè)計(jì)了區(qū)塊鏈中交易發(fā)送算法SendTX和交易處理算法HandleTX,算法會(huì)根據(jù)交易類型的不同控制區(qū)塊鏈節(jié)點(diǎn)執(zhí)行不同的操作;由于本方法的匿名要求,將交易的簽名算法替換為改進(jìn)的可鏈接環(huán)簽名算法,實(shí)現(xiàn)交易的匿名驗(yàn)證。如果數(shù)據(jù)擁有者將密鑰信息直接發(fā)送到區(qū)塊鏈,區(qū)塊鏈的公開(kāi)性會(huì)使用戶數(shù)據(jù)直接暴露給所有人,這是不能接受的。針對(duì)這一問(wèn)題,本文采用RSA加密算法將交易信息加密后發(fā)送。當(dāng)數(shù)據(jù)擁有者準(zhǔn)備將密鑰信息通過(guò)交易信息發(fā)送到區(qū)塊鏈時(shí),其從公鑰池中隨機(jī)選擇RSA公鑰對(duì)交易進(jìn)行加密,這樣確保了只有該公鑰的持有者(即數(shù)據(jù)擁有者所選擇的交易接收者)可以解密并存儲(chǔ)密鑰信息。
方案可以分為3個(gè)階段描述:數(shù)據(jù)上傳階段、數(shù)據(jù)請(qǐng)求階段和數(shù)據(jù)確定性刪除階段。假設(shè)區(qū)塊鏈由n個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)i可以用五元組(Nodei,PKi、SKi,yi,xi)表示,其中Nodei為節(jié)點(diǎn)名稱,PKi、SKi為RSA加密公鑰和私鑰,yi、xi為可鏈接環(huán)簽名公鑰和私鑰。特別地,用π(1≤π≤n)表示作為數(shù)據(jù)擁有者的節(jié)點(diǎn),用μ(1≤μ≤n)表示數(shù)據(jù)使用者節(jié)點(diǎn)。在數(shù)據(jù)上傳階段之前,所有節(jié)點(diǎn)生成RSA密鑰對(duì)和可鏈接環(huán)簽名密鑰對(duì),并將公鑰發(fā)送到公鑰池中得到公鑰列表L1={PK1,PK2,…,PKn}和L2={y1,y2,…,yn}。
4.2.1 數(shù)據(jù)上傳階段
數(shù)據(jù)擁有者在數(shù)據(jù)上傳階段將加密數(shù)據(jù)上傳到CSP,同時(shí)將密鑰信息通過(guò)TXDATA類型的交易拆分并分散到不同區(qū)塊鏈節(jié)點(diǎn)存儲(chǔ)。這樣不僅避免了單獨(dú)使用密鑰管理服務(wù)器的單點(diǎn)失效問(wèn)題,而且當(dāng)數(shù)據(jù)擁有者想要結(jié)束共享時(shí),可以隨時(shí)發(fā)送TXDELETE類型的交易撤銷密鑰信息進(jìn)行數(shù)據(jù)的確定性刪除。數(shù)據(jù)上傳階段如圖3所示,共分為6個(gè)步驟。
步驟1假設(shè)數(shù)據(jù)擁有者待上傳的加密數(shù)據(jù)為E,其對(duì)稱加密密鑰為KEY。在數(shù)據(jù)上傳之前,數(shù)據(jù)擁有者向云服務(wù)提供商發(fā)送存儲(chǔ)請(qǐng)求。
步驟2云服務(wù)提供商為數(shù)據(jù)擁有者預(yù)先分配并返回存儲(chǔ)地址ADDR,數(shù)據(jù)擁有者將KEY和ADDR封裝成秘密數(shù)據(jù)封裝體SDO。
步驟3數(shù)據(jù)擁有者運(yùn)行Shamir門限秘密共享算法將SDO拆分成多個(gè)子秘密。具體計(jì)算過(guò)程如下。
假設(shè)區(qū)塊鏈網(wǎng)絡(luò)共有n個(gè)節(jié)點(diǎn),數(shù)據(jù)擁有者選擇秘密恢復(fù)門限值t>n/2(防止51%攻擊),選擇一個(gè)大素?cái)?shù)p,在GF(p)中隨機(jī)選擇系數(shù)at-1,at-2,…,a1,且令a0=H3(SDO),其中H3:{0,1}*→Zp。構(gòu)造GF(p)上的t-1次多項(xiàng)式:
圖3 數(shù)據(jù)上傳階段
在GF(p)中選取n個(gè)非零、互不相同的x1,x2,…,xn,令i=1,2,…,n,計(jì)算:
并將x1,x2,…,xn和p公開(kāi),將Datai(i=1,2,…,n)輸出。
步驟4數(shù)據(jù)擁有者運(yùn)行交易發(fā)送算法SendTX(TXDATA,[Data1,Data2,…,Datan],None,r)→{txdata0},參數(shù)一表示發(fā)送TXDATA類型的交易,參數(shù)二表示要發(fā)送的數(shù)據(jù),參數(shù)三表示交易接收者公鑰,數(shù)據(jù)上傳階段接收者公鑰從公鑰列表隨機(jī)選擇,所以設(shè)置為None(空)。參數(shù)四表示可鏈接環(huán)簽名的鏈接參數(shù)。數(shù)據(jù)擁有者會(huì)將Datai用接收者公鑰進(jìn)行RSA加密填充到Payload字段,對(duì)交易進(jìn)行可鏈接環(huán)簽名后填充到SIG字段,然后將交易廣播到區(qū)塊鏈網(wǎng)絡(luò)中,最后將算法運(yùn)行過(guò)程所用參數(shù)保存到DVO(如圖4所示)以便在數(shù)據(jù)請(qǐng)求階段使用。
圖4 兩種數(shù)據(jù)訪問(wèn)封裝體
步驟5區(qū)塊鏈節(jié)點(diǎn)收到交易廣播運(yùn)行此交易處理算法HandleTX(txdata0)。算法判斷交易為TXDATA類型后,驗(yàn)證交易的可鏈接環(huán)簽名是否合法,若合法則將交易打包到區(qū)塊鏈。打包交易后,區(qū)塊鏈節(jié)點(diǎn)嘗試解密txdata0交易的Payload字段,若能解密則將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。以圖中3中Node1節(jié)點(diǎn)為例,Node1可以解密Payload字段的第一行,得到Data1后將Data1及其哈希值和txdata0的SIG字段保存到數(shù)據(jù)庫(kù),其他節(jié)點(diǎn)同理。由圖3可知,數(shù)據(jù)擁有者Nodeπ已經(jīng)將SDO子秘密Data1,Data2,…,Datan分 散 到Node1,Node2,…,Noden。
步驟6數(shù)據(jù)擁有者運(yùn)行可鏈接環(huán)簽名的簽名算法LSAGSig(E,r)→{σr(E)}對(duì)加密數(shù)據(jù)E進(jìn)行可鏈接環(huán)簽名,鏈接參數(shù)為r,并將簽名結(jié)果與加密數(shù)據(jù)E一同嘗試發(fā)送給CSP。CSP運(yùn)行可鏈接環(huán)簽名的鏈接算法LSAGLink(σr(E),σr(txdata0))→True or False,如果算法輸出True,表示當(dāng)前E的發(fā)送者與txdata0是同一用戶,其身份已經(jīng)由區(qū)塊鏈網(wǎng)絡(luò)驗(yàn)證,CSP即可從數(shù)據(jù)擁有者接受加密數(shù)據(jù)E。
數(shù)據(jù)上傳階段結(jié)束后,CSP中已經(jīng)存儲(chǔ)了加密數(shù)據(jù)E,數(shù)據(jù)擁有者將步驟4中所用Datai的哈希值H(Datai)和其對(duì)應(yīng)RSA公鑰封裝到DVO(data visit object,數(shù)據(jù)訪問(wèn)封裝體)的MAPPING字段,將加密數(shù)據(jù)E的哈希值H(E)和鏈接參數(shù)r封裝到DVO的PROOF字段(如圖4(a)所示)。除此之外,數(shù)據(jù)擁有者還封裝一個(gè)PDVO(partial data visit object,部分?jǐn)?shù)據(jù)訪問(wèn)封裝體)(如圖4(b)所示),PDVO省去了DVO的鏈接參數(shù)r,沒(méi)有鏈接參數(shù)r意味著無(wú)法生成合法的TXDELETE交易,所以PDVO不具有確定性刪除權(quán)限。數(shù)據(jù)擁有者可以將PDVO交給其他數(shù)據(jù)使用者而不必?fù)?dān)心數(shù)據(jù)被惡意刪除。
4.2.2 數(shù)據(jù)請(qǐng)求階段
數(shù)據(jù)使用者利用部分?jǐn)?shù)據(jù)訪問(wèn)封裝體(PDVO)訪問(wèn)數(shù)據(jù)擁有者共享的數(shù)據(jù),共分為5個(gè)步驟,如圖5所示。
步驟1數(shù)據(jù)使用者提取部分?jǐn)?shù)據(jù)訪問(wèn)體中MAPPING字段(t行,t為Shamir秘密分享策略設(shè)置的門限值)的H(Datai)與其對(duì)應(yīng)的RSA公鑰PKi,運(yùn)行發(fā)送交易算法SendTX(TXREQUEST,{Data1,Data2,…,Datat},{PK1,PK2,…,PKt},r)→ {txrequest}。
步驟2區(qū)塊鏈所有節(jié)點(diǎn)運(yùn)行接收交易算法HandleTX(txrequest),成功驗(yàn)證交易簽名信息驗(yàn)證后將交易打包到區(qū)塊鏈,并解密Payload得到數(shù)據(jù)請(qǐng)求者公鑰PKμ和請(qǐng)求數(shù)據(jù)的摘要H(Datai),區(qū)塊鏈節(jié)點(diǎn)根據(jù)數(shù)據(jù)摘要查找數(shù)據(jù)庫(kù)C1字段,若查找成功則向數(shù)據(jù)請(qǐng)求者返回一個(gè)TXDATA交易,即再次運(yùn)行算法SendTX(TXDATA,Datai,PKμ,0) →{txdatai}。數(shù)據(jù)請(qǐng)求階段只需要驗(yàn)證交易合法性即可,故鏈接參數(shù)設(shè)置為0。在圖5中,Node1,Node2,…,Nodet節(jié)點(diǎn)分別返回TXDATA類型的交易txdata1,txdata2,…,txdatat。
步驟3數(shù)據(jù)使用者運(yùn)行交易處理算法HandleTX(txdatai),驗(yàn)證txdatai的簽名后打包交易到區(qū)塊鏈,并解密Payload字段可以得到秘密封裝體SDO子秘密Data1,Data2,…,Datat。
圖5 數(shù)據(jù)請(qǐng)求階段
步驟4數(shù)據(jù)使用者對(duì)SDO子秘密進(jìn)行Shamir秘密重構(gòu),將t組(xi,Datai)代入拉格朗日插值計(jì)算式重構(gòu)f(x):
得到f(x)之后計(jì)算:
即可恢復(fù)秘密數(shù)據(jù)封裝體SDO。
步驟5數(shù)據(jù)使用者將秘密數(shù)據(jù)封裝體SDO中的存儲(chǔ)位置ADDR發(fā)送至CSP請(qǐng)求加密數(shù)據(jù)E。CSP查找數(shù)據(jù)庫(kù)的C0字段,若查找成功則向數(shù)據(jù)使用者返回C1字段即加密數(shù)據(jù)E。數(shù)據(jù)使用者首先驗(yàn)證E的摘要值是否與PDVO中存儲(chǔ)的H(E)一致,若一致則用密鑰KEY對(duì)加密數(shù)據(jù)E進(jìn)行解密即可得到數(shù)據(jù)擁有者共享的數(shù)據(jù)。
經(jīng)過(guò)數(shù)據(jù)請(qǐng)求階段,數(shù)據(jù)使用者通過(guò)利用PDVO向區(qū)塊鏈請(qǐng)求到數(shù)據(jù)擁有者的SDO信息,并利用SDO向CSP請(qǐng)求得到數(shù)據(jù)擁有者的加密數(shù)據(jù)。
4.2.3 數(shù)據(jù)確定性刪除階段
數(shù)據(jù)擁有者利用DVO進(jìn)行確定性刪除操作,以撤銷其在數(shù)據(jù)上傳階段共享的數(shù)據(jù),如圖6所示,確定性刪除階段分為3個(gè)步驟。
步驟1數(shù)據(jù)擁有者提取DVO的MAPPING字段SDO子秘密的哈希值H(Datai)與其對(duì)應(yīng)的PKi,執(zhí)行算法SendTX(TXDELETE,H(Datai),PKi,r)→{txdelete}。
步驟2區(qū)塊鏈中所有節(jié)點(diǎn)執(zhí)行交易接收算法HandleTX(txdelete),此算法驗(yàn)證交易簽名、將交易打包到區(qū)塊鏈后,對(duì)交易Payload字段進(jìn)行解密得到H(Datai),并在數(shù)據(jù)庫(kù)中匹配H(Datai)對(duì)應(yīng)的數(shù)據(jù)條目。若匹配成功則執(zhí)行算法LSAGLink(σr(txdelete),σr(txdatai))→True or False,如果算法輸出True,表示此txdelete的發(fā)送者與txdata0是同一用戶,完成了確定性刪除的匿名身份認(rèn)證。確定了刪除發(fā)起者的身份后,區(qū)塊鏈節(jié)點(diǎn)將H(Datai)對(duì)應(yīng)的整行數(shù)據(jù)條目刪除。
步驟3區(qū)塊鏈節(jié)點(diǎn)刪除了SDO子秘密后,加密數(shù)據(jù)E的密鑰KEY與存儲(chǔ)位置ADDR已經(jīng)被永久銷毀,CSP中還存儲(chǔ)著加密數(shù)據(jù)E,需要將其刪除以釋放空間。具體做法是:CSP監(jiān)聽(tīng)到步驟1中txdelete交易信息,根據(jù)σr(txdelete)在數(shù)據(jù)庫(kù)中進(jìn)行匹配得到C2字段的可鏈接環(huán)簽名信息σr(E),執(zhí)行LSAGLink(σr(txdelete),σr(E))→True or False。若算法輸出True,表示此txdelete的發(fā)送者與txdata0是同一用戶,完成確定性刪除的匿名身份認(rèn)證,將σr(E)對(duì)應(yīng)條目從本地?cái)?shù)據(jù)庫(kù)刪除。至此,數(shù)據(jù)已完成確定性刪除。
圖6 確定性刪除階段
4.3.1 區(qū)塊鏈交易發(fā)送與交易處理算法
本方案的主要邏輯功能依靠區(qū)塊鏈交易發(fā)送與交易處理算法實(shí)現(xiàn)。數(shù)據(jù)擁有者或數(shù)據(jù)使用者通過(guò)交易發(fā)送算法發(fā)送不同類型的區(qū)塊鏈交易,區(qū)塊鏈節(jié)點(diǎn)根據(jù)交易處理算法通過(guò)收到交易的類型執(zhí)行相應(yīng)操作。
算法1交易發(fā)送算法
輸入交易類型Type,將被加密發(fā)送的數(shù)據(jù)列表DatasOrHashs,目的節(jié)點(diǎn)RSA公鑰列表PKs,可鏈接環(huán)簽名鏈接參數(shù)r。
輸出類型為Type的交易TX。
(1)function SendTX(Type, DatasOrHashs,PKs,r):
(2)begin
(3) if Type=TXDATA or TXDELETE then
(4) PKform←None,LinkSym←r
(5) else if Type=TXREQUEST
(6) PKform←PKπ,LinkSym←0
(7) end if
(8) if PK= None
(9) PKdest←RandomChoose(L1)
(10) else
(11) PKdest←PKs
(12) end if
(13) fori=0 to PKs.length
(14) Payload[i]←RSAEnc(DatasOr Hashs[i]|| PKform, PKdest[i])
(15) end for
(16)σr(Payload)←LSAGSig(L2, Payload, Link Sym,yπ,xπ)
(17)return TX(Type, Payload,σr(Payload))
(18)end
算法1的第(3)~(7)步判斷要發(fā)送的交易類型,如果是TXDATA或TXDELETE類型的交易,說(shuō)明不需要區(qū)塊鏈返回交易,故PKform可以設(shè)置為空值None;但這兩種類型的交易需要發(fā)送者添加鏈接標(biāo)記r,將r保存到變量LinkSym以便后續(xù)調(diào)用。如果是TXREQUEST類型的交易,區(qū)塊鏈會(huì)向自己返回TXDATA交易,所以需要將自己的RSA公鑰賦值給PKform。算法第(8)~(12)步指定交易接收者RSA公鑰(確保交易只能由特定接收者解密),如果PKs參數(shù)未設(shè)定(None),則從公鑰池的RSA公鑰列表中隨機(jī)選擇接收者公鑰(RandomChoose);如果PKs不為空,則說(shuō)明這是數(shù)據(jù)使用者請(qǐng)求的交易,PKs即數(shù)據(jù)使用者的公鑰。第(13)~(15)步是加密過(guò)程,保證交易信息只有接收者能解密。第(16)步對(duì)交易進(jìn)行可鏈接環(huán)簽名,實(shí)現(xiàn)匿名情況下交易合法性的驗(yàn)證。算法最后返回交易信息TX。
算法2交易處理算法
輸入接收到的交易TX
輸出Type為TXDATA的交易或者空
(1)function HandleTX(TX)
(2)begin
(3) if LSAGVer(L2,TX.Payload,TX.σr(Payload)) =Reject
(4) exit
(5) end if
(6)try
(7){DatasOrHashs||PKfrom}← RSADec(TX.Payload, SKπ)
(8)except 解密失敗exit
(9) if TX.Type=TXDATA
(10)C0 ,C1,C2←DatasOrHashs, H(Datas OrHashs), TX.σr(Payload)
(11) 將C0,C1,C2分別保存到本節(jié)點(diǎn)數(shù)據(jù)庫(kù)C0,C1,C2列
(12) else if TX.Type=TXREQUEST
(13)C0,C1,C2←嘗試查找本節(jié)點(diǎn)數(shù)據(jù)庫(kù)中C1列為DatasOrHashs的數(shù)據(jù)
(14)查找成功則執(zhí)行SendTX(TXDATA,C0,L1, L2, 0),否則exit
(15) else if TX.Type is TXDELETE
(16)C0,C1,C2←查找本節(jié)點(diǎn)數(shù)據(jù)庫(kù)中C1列為DatasOrHashs的數(shù)據(jù)
(17) 若查找失敗,exit,否則繼續(xù)
(18) if LSAGLink(C2,TX.σr(Payload))=True
(19) 刪除本節(jié)點(diǎn)數(shù)據(jù)庫(kù)中C1列為Data的數(shù)據(jù)
(20) end if
(21) end if
(22)end
算法2第(3)~(8)步首先驗(yàn)證交易,即驗(yàn)證交易的可鏈接環(huán)簽名字段是否合法,若是非法交易則結(jié)束算法;若交易合法則會(huì)被打包到區(qū)塊鏈,所有節(jié)點(diǎn)會(huì)嘗試解密該交易,如果解密失敗,說(shuō)明此交易接收者不是自己,結(jié)束程序;若解密成功,則說(shuō)明此交易是發(fā)給自己的,執(zhí)行后續(xù)步驟。第(9)~(19)步判斷交易類型并執(zhí)行相應(yīng)操作,如果判斷交易類型為TXDATA,則將交易數(shù)據(jù)保存到本地?cái)?shù)據(jù)庫(kù)。如果交易類型為TXREQUEST,說(shuō)明有數(shù)據(jù)使用者正在請(qǐng)求數(shù)據(jù),嘗試從本地?cái)?shù)據(jù)庫(kù)查找數(shù)據(jù),如果找到則通過(guò)TXDATA交易返回該數(shù)據(jù),否則退出算法。如果交易類型為TXDELETE,首先查找本地?cái)?shù)據(jù)庫(kù),確定要?jiǎng)h除的數(shù)據(jù)是否存在。如果存在則將TXDELETE的可鏈接環(huán)簽名字段與對(duì)本地查找到的簽名信息進(jìn)行環(huán)簽名的鏈接操作,若鏈接成功則說(shuō)明TXDELETE交易的發(fā)送者是數(shù)據(jù)庫(kù)中該條數(shù)據(jù)的擁有者,執(zhí)行刪除操作。
4.3.2 改進(jìn)的可鏈接環(huán)簽名算法
原始可鏈接環(huán)簽名算法在相同公鑰列表下只能生成帶有相同鏈接標(biāo)記的簽名結(jié)果,無(wú)法應(yīng)用在本方案中。主要有兩點(diǎn)原因:首先,如果同一用戶生成的簽名結(jié)果只能有一種鏈接標(biāo)記,那么攻擊者可以根據(jù)此鏈接標(biāo)記定位用戶所有簽名,從而分析用戶行為,這樣會(huì)大大降低用戶匿名性。其次,改進(jìn)的可鏈接環(huán)簽名可以很容易匿名實(shí)現(xiàn)文件所有權(quán)的鑒權(quán)。原理是:針對(duì)某一次共享過(guò)程,用戶對(duì)其進(jìn)行簽名并附加一個(gè)獨(dú)特的鏈接標(biāo)記,在確定性刪除階段發(fā)送帶有同樣鏈接標(biāo)記的TXDATA交易,區(qū)塊鏈節(jié)點(diǎn)和CSP即可確定用戶對(duì)該數(shù)據(jù)的所有權(quán)并執(zhí)行刪除操作。如果只能生成一種鏈接標(biāo)記,就無(wú)法指定對(duì)哪一次共享進(jìn)行確定性刪除。具體改進(jìn)算法,包括簽名算法、簽名驗(yàn)證算法和簽名鏈接算法。
令G(q)= · 簽名算法 LSAGSig(L2,m,r,yπ,xπ) →σrm:算法輸入為消息m∈ {0,1}*,環(huán)簽名公鑰列表L2={y1,…,yn},yn對(duì)應(yīng)的私鑰(1 ≤π≤n)和鏈接參數(shù),根據(jù)鏈接參數(shù)計(jì)算h=H2(r)和y~=hxπ,得到鏈接標(biāo)記。接下來(lái)選擇u∈RZq,并計(jì),為使簽名閉合成環(huán),令i=π+1 ,…,n,1,…,π-1,選 擇并 計(jì) 算最后計(jì)算sπ=u xπcπmodq. 得到并輸出可鏈接環(huán)簽名結(jié)果 · 簽名驗(yàn)證算法LSAGVer(L2,m,σrm)→Accept or Reject:算法輸入為消息m,環(huán)簽名公鑰列表L2以及消息m在L2上的環(huán)簽名σr(m)。令i=1,…,n,首先計(jì)算中間變量,根據(jù)中間變量計(jì)算最后驗(yàn)證是否成立,若成立則輸出Accept,否則輸出Reject。 定理1改進(jìn)的可連接環(huán)簽名不改變?cè)挤桨傅哪涿浴?/p> 證明假設(shè)L為可鏈接環(huán)簽名公鑰列表,m為待簽名消息,r為改進(jìn)方案中的鏈接參數(shù)。原方案中,簽名算法第一步計(jì)算h=H2(L)和最終生成簽名改進(jìn)方案中,簽名算法第一步計(jì)算和y~ =hxπ,最終生成簽名對(duì)比原方案與改進(jìn)方案可知,原方案中L為公鑰列表,這是所有環(huán)內(nèi)成員已知條件,即h為環(huán)內(nèi)成員已知條件,所以原方案生成簽名等價(jià)于與改進(jìn)方案相同。所以,改進(jìn)方案中將h=H2(r)加入簽名結(jié)果使環(huán)內(nèi)成員可見(jiàn),相比較原方案沒(méi)有透露更多信息。綜上所述,改進(jìn)的可鏈接環(huán)簽名方案不改變?cè)桨改涿浴?/p> 定理2除了簽名者,其他人不能偽造帶有相同鏈接標(biāo)記的簽名。 證明要生成鏈接標(biāo)記,首先通過(guò)單向哈希函數(shù)計(jì)算h,再計(jì)算所以要想偽造相同鏈接標(biāo)記,必須解決離散對(duì)數(shù)問(wèn)題,計(jì)算出簽名者私鑰,才能偽造消息m的簽名。而目前沒(méi)有有效的算法在多項(xiàng)式時(shí)間內(nèi)解決離散對(duì)數(shù)問(wèn)題,所以只有簽名者可以生成同樣鏈接標(biāo)記的環(huán)簽名。 (1)區(qū)塊鏈交易信息對(duì)匿名性影響 區(qū)塊鏈節(jié)點(diǎn)和CSP通過(guò)驗(yàn)證交易信息的簽名字段驗(yàn)證交易發(fā)出者身份的合法性,不涉及交易發(fā)出者的真實(shí)身份,切斷了用戶數(shù)據(jù)與其身份的關(guān)聯(lián)性。由于可鏈接環(huán)簽名的匿名性可知,區(qū)塊鏈節(jié)點(diǎn)之間是相互匿名的,節(jié)點(diǎn)對(duì)于CSP來(lái)說(shuō)也是匿名的。假設(shè)攻擊者想要跟蹤某一用戶的共享和刪除行為,需要破解區(qū)塊鏈上記錄的環(huán)簽名信息(第5.1節(jié)已經(jīng)證明簽名方案的安全性)。攻擊者還可以根據(jù)鏈接標(biāo)記追蹤用戶行為,但是用戶的每次共享行為都會(huì)隨機(jī)選擇鏈接參數(shù)生成不同鏈接標(biāo)記,除非攻擊者竊取到簽名者私鑰,否則系統(tǒng)是安全的,能有效防止攻擊者的追蹤分析。 (2)安全信道對(duì)匿名性影響 方案中數(shù)據(jù)使用者和數(shù)據(jù)擁有者與CSP之間會(huì)使用安全信道進(jìn)行數(shù)據(jù)傳輸,安全信道的建立可能會(huì)涉及用戶IP地址,但是用戶IP地址不能代表用戶身份。首先,用戶IP地址通常由運(yùn)營(yíng)商進(jìn)行分配,所以會(huì)經(jīng)常變動(dòng)。其次,在大多數(shù)情況下一個(gè)公網(wǎng)IP地址對(duì)應(yīng)的是一個(gè)用戶群體而不是單獨(dú)一個(gè)用戶。在安全信道進(jìn)行數(shù)據(jù)傳輸之前,通信雙方可以先進(jìn)行密鑰協(xié)商,利用協(xié)商的密鑰加密傳輸?shù)臄?shù)據(jù),這個(gè)過(guò)程可以不涉及用戶身份。綜上所述,安全信道不會(huì)降低用戶匿名性。 在所提方法中,區(qū)塊鏈網(wǎng)絡(luò)不僅負(fù)責(zé)密鑰信息的分散存儲(chǔ),還起到驗(yàn)證操作者身份的作用,用戶的所有操作都會(huì)經(jīng)驗(yàn)證后記錄在區(qū)塊鏈中并且不會(huì)被篡改。不論是數(shù)據(jù)上傳、數(shù)據(jù)請(qǐng)求還是數(shù)據(jù)確定性刪除都需要操作者向區(qū)塊鏈發(fā)送相應(yīng)類型的交易,CSP監(jiān)聽(tīng)到交易信息才會(huì)對(duì)用戶數(shù)據(jù)進(jìn)行相應(yīng)操作。如果某節(jié)點(diǎn)試圖篡改區(qū)塊鏈數(shù)據(jù),則其需要從該區(qū)塊開(kāi)始計(jì)算哈希值直到最新區(qū)塊使區(qū)塊之間通過(guò)哈希值連接,這需要非常強(qiáng)大的算力,通常需要全網(wǎng)一半以上的算力才能做到如此(51%攻擊)。 如上所述,區(qū)塊鏈的難以篡改性,使鏈上數(shù)據(jù)具有權(quán)威性,任何一方都不能抵賴。如果CSP沒(méi)有誠(chéng)實(shí)刪除用戶數(shù)據(jù),則用戶可以將環(huán)簽名鏈接參數(shù)r和簽名私鑰xπ交給第三方仲裁機(jī)構(gòu),仲裁機(jī)構(gòu)根據(jù)鏈接參數(shù)計(jì)算將得到的鏈接標(biāo)記y~與出現(xiàn)糾紛交易的簽名進(jìn)行對(duì)比,如果鏈接標(biāo)記相同,說(shuō)明用戶確實(shí)執(zhí)行過(guò)刪除操作,CSP無(wú)法抵賴。 本文采用阿里云服務(wù)器模擬云服務(wù)提供商(CSP),用本地計(jì)算機(jī)運(yùn)行區(qū)塊鏈節(jié)點(diǎn)(包括數(shù)據(jù)擁有者和數(shù)據(jù)使用者),其中阿里云服務(wù)器CPU為2核心,內(nèi)存為4 GB,操作系統(tǒng)為CentOS 8.0 64位,網(wǎng)絡(luò)帶寬為1 Mbit/s;本地計(jì)算機(jī)配置為Intel Core(TM) i5-10210U CPU @ 1.60 GHz四核,設(shè)備內(nèi)存為12 GB,操作系統(tǒng)為Windows 1 064位,網(wǎng)絡(luò)帶寬為100 Mbit/s。方案中使用的AES算法、RSA算法和數(shù)據(jù)摘要算法采用Python加密庫(kù)PyCryptodome提供的API函數(shù)。區(qū)塊鏈采用基于RPC[18](remote procedure call,遠(yuǎn)程過(guò)程調(diào)用)實(shí)現(xiàn)的開(kāi)源項(xiàng)目[19]。數(shù)據(jù)擁有者或數(shù)據(jù)使用者與CSP之間的數(shù)據(jù)傳輸采用FTP進(jìn)行模擬,CSP對(duì)區(qū)塊鏈數(shù)據(jù)的監(jiān)聽(tīng)通過(guò)調(diào)用區(qū)塊鏈的接口實(shí)現(xiàn)。 實(shí)驗(yàn)主要對(duì)方案的3個(gè)階段耗時(shí)情況進(jìn)行了實(shí)驗(yàn)評(píng)估。實(shí)驗(yàn)選擇Shamir秘密分享門限t為0.6n,選取AES密鑰長(zhǎng)度為128 bit,RSA模數(shù)長(zhǎng)度為1 024 bit。 (1) 數(shù)據(jù)上傳階段和數(shù)據(jù)確定性刪除階段性能分析 數(shù)據(jù)上傳階段中,數(shù)據(jù)擁有者和數(shù)據(jù)使用者與CSP之間的數(shù)據(jù)傳輸速率取決于雙方帶寬的最小值,可直接計(jì)算得出,所以本實(shí)驗(yàn)沒(méi)有統(tǒng)計(jì)文件上傳耗時(shí),即實(shí)驗(yàn)統(tǒng)計(jì)的時(shí)間是從數(shù)據(jù)擁有者發(fā)出存儲(chǔ)請(qǐng)求到數(shù)據(jù)擁有者開(kāi)始向CSP上傳文件。系統(tǒng)主要時(shí)間消耗為Shamir秘密拆分算法、交易發(fā)送算法SendTX和交易處理算法HandleTX,SendTX算法主要包含RSA加密和簽名算法,HandleTX算法主要包含RSA解密算法和簽名驗(yàn)證算法。表2為數(shù)據(jù)上傳階段各個(gè)算法耗時(shí)占比情況(“其他”指代數(shù)據(jù)擁有者向CSP發(fā)送請(qǐng)求、數(shù)據(jù)庫(kù)存儲(chǔ)和區(qū)塊鏈網(wǎng)絡(luò)通信等開(kāi)銷),可見(jiàn)數(shù)據(jù)上傳階段主要時(shí)間開(kāi)銷來(lái)源是RSA算法和簽名(改進(jìn)的可鏈接環(huán)簽名)算法。同時(shí)由圖7可見(jiàn),隨著節(jié)點(diǎn)數(shù)量的增加,系統(tǒng)耗時(shí)呈現(xiàn)線性增長(zhǎng)的趨勢(shì),這是因?yàn)楹灻纳珊万?yàn)證是與環(huán)內(nèi)成員(區(qū)塊鏈節(jié)點(diǎn))數(shù)量線性相關(guān)的,RSA加解密次數(shù)也是與節(jié)點(diǎn)數(shù)量呈線性相關(guān)的。 表2 數(shù)據(jù)上傳階段耗時(shí)占比詳情 圖7 數(shù)據(jù)上傳階段耗時(shí)曲線 (2) 數(shù)據(jù)請(qǐng)求階段性能分析 實(shí)驗(yàn)統(tǒng)計(jì)數(shù)據(jù)請(qǐng)求階段時(shí)間是從數(shù)據(jù)使用者發(fā)送TXREQUEST交易到接收到CSP返回的密文結(jié)束。期間各個(gè)算法耗時(shí)占比見(jiàn)表3。可見(jiàn)RSA解密耗時(shí)占比非常大,其原因是,當(dāng)區(qū)塊鏈接收數(shù)據(jù)使用者發(fā)送的TXREQUEST交易后還需要返回t個(gè)TXDATA交易,而針對(duì)這t個(gè)交易數(shù)據(jù)使用者要逐個(gè)解密這些交易的Payload字段。從圖8也可以看出,由于RSA解密階段的影響,整個(gè)數(shù)據(jù)請(qǐng)求階段耗時(shí)遠(yuǎn)遠(yuǎn)高于數(shù)據(jù)上傳階段。這個(gè)問(wèn)題是可以改善的,由于此解密過(guò)程在數(shù)據(jù)使用者本地計(jì)算機(jī)進(jìn)行,可以用計(jì)算機(jī)編程的多線程思想解決,即對(duì)t個(gè)秘密并行解密,優(yōu)化后與數(shù)據(jù)上傳階段耗時(shí)是相近的。 圖8 數(shù)據(jù)請(qǐng)求階段耗時(shí)曲線 (3)數(shù)據(jù)確定性刪除階段性能分析 實(shí)驗(yàn)統(tǒng)計(jì)數(shù)據(jù)確定性刪除階段時(shí)間是從數(shù)據(jù)擁有者發(fā)送TXDELETE交易到云端從數(shù)據(jù)庫(kù)中刪除加密數(shù)據(jù)結(jié)束。此階段與數(shù)據(jù)上傳階段類似,主要時(shí)間開(kāi)銷為RSA算法和簽名算法(見(jiàn)表4),并且隨著節(jié)點(diǎn)數(shù)量增加,時(shí)間消耗呈線性增長(zhǎng)(如圖9所示)。 表3 數(shù)據(jù)請(qǐng)求階段耗時(shí)占比 表4 數(shù)據(jù)確定性刪除階段耗時(shí)占比 圖9 數(shù)據(jù)確定性刪除階段耗時(shí)曲線 本文在現(xiàn)有確定性刪除方法的基礎(chǔ)上做了進(jìn)一步的探索,提出切斷用戶數(shù)據(jù)與用戶身份關(guān)聯(lián)的確定性刪除理念,并提出了基于區(qū)塊鏈的匿名確定性刪除方法。方法在區(qū)塊鏈中構(gòu)建不同類型的交易實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)密鑰的隱藏、請(qǐng)求和刪除,并應(yīng)用改進(jìn)的可鏈接環(huán)簽名技術(shù)實(shí)現(xiàn)了云數(shù)據(jù)的匿名確定性刪除,進(jìn)一步提高了用戶使用云計(jì)算服務(wù)時(shí)的隱私性。最后對(duì)方案性能進(jìn)行了評(píng)估,結(jié)果表明系統(tǒng)能實(shí)現(xiàn)較高效率的數(shù)據(jù)上傳、數(shù)據(jù)請(qǐng)求和數(shù)據(jù)確定性刪除。在未來(lái)研究中,會(huì)在方案中加入節(jié)點(diǎn)動(dòng)態(tài)加入和退出功能,并進(jìn)一步提高系統(tǒng)效率。5 安全性分析
5.1 改進(jìn)的可鏈接環(huán)簽名安全性分析
5.2 方案匿名性分析
5.3 不可抵賴性分析
6 實(shí)驗(yàn)仿真
6.1 實(shí)驗(yàn)環(huán)境
6.2 實(shí)驗(yàn)及結(jié)果分析
7 結(jié)束語(yǔ)