劉憶寧 周元健 藍(lán)如師 唐春明
1(桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院 廣西桂林 541004)2(廣州大學(xué)數(shù)學(xué)與信息科學(xué)學(xué)院 廣州 510006)
隨著互聯(lián)網(wǎng)的發(fā)展,人們把大量的數(shù)據(jù)存放在云平臺(tái),實(shí)現(xiàn)任何時(shí)間、任何地點(diǎn)的便捷使用.云存儲(chǔ)雖然存在巨大的好處,但也存在很多的安全隱患,比如云平臺(tái)可能惡意刪除文件和對(duì)用戶進(jìn)行欺騙.當(dāng)用戶需要?jiǎng)h除數(shù)據(jù)時(shí),會(huì)向云服務(wù)器發(fā)送刪除命令,服務(wù)器執(zhí)行刪除操作.然而,云服務(wù)器可能并未執(zhí)行刪除操作.因此,有必要驗(yàn)證云服務(wù)器是否正確地執(zhí)行了刪除操作.為了解決刪除操作中的數(shù)據(jù)驗(yàn)證問題,文獻(xiàn)[1-10]提出了多種不同類別的數(shù)據(jù)驗(yàn)證方案,其中公開驗(yàn)證最為普遍.2014年,Sookhak等人[11]等人對(duì)遠(yuǎn)程驗(yàn)證方案做了歸納,將其分為以下3類:
1) PDP方案.Ateniese等人[1]提出一種同態(tài)認(rèn)證器與RSA簽名結(jié)合的數(shù)據(jù)占有(provable data possession, PDP)方案,該方案實(shí)現(xiàn)了數(shù)據(jù)完整性的公開驗(yàn)證.然而,PDP是靜態(tài)模型,不支持存儲(chǔ)數(shù)據(jù)的動(dòng)態(tài)操作.為了實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)性,Wang等人[12]提出了一個(gè)動(dòng)態(tài)數(shù)據(jù)完整性驗(yàn)證方案和Wang等人[13]提出了一個(gè)動(dòng)態(tài)數(shù)據(jù)公開驗(yàn)證方案.文獻(xiàn)[12]在分布式條件下解決了數(shù)據(jù)動(dòng)態(tài)存儲(chǔ)問題并支持TPA審證;文獻(xiàn)[13]在BLS簽名技術(shù)中引入RSA結(jié)構(gòu),因此加強(qiáng)了數(shù)據(jù)的動(dòng)態(tài)操作性,但又引入了隱私泄露問題;2016年,Liu等人提出了改進(jìn)方案[14],該方案不但可以抵御來自外部的偽造攻擊,還支持動(dòng)態(tài)審核和多批次審批,但是沒有實(shí)現(xiàn)多用戶的審批.因?yàn)椴煌瑓?shù)構(gòu)成的用戶驗(yàn)證數(shù)據(jù)標(biāo)簽不同,所以第三方審計(jì)者(third-party auditor, TPA)不能使用不同的標(biāo)簽線性組合審計(jì).
2) POR方案.Juels等人[7]提出可檢索性證明(proofs of retrievability, POR)方案.POR方法會(huì)產(chǎn)生一個(gè)特殊的數(shù)據(jù)塊,并將其嵌入數(shù)據(jù)中以達(dá)到檢查正確性的目的.POR和第1類方法PDP一樣,不適合動(dòng)態(tài)數(shù)據(jù)的存儲(chǔ),動(dòng)態(tài)數(shù)據(jù)會(huì)使特殊數(shù)據(jù)塊丟失原來的位置.隨后,Cashd等人[4]提出了動(dòng)態(tài)POR.鄭等人[8]在原有的POR模型上實(shí)現(xiàn)了公平性,提出了基于2-3層Merkle樹結(jié)構(gòu)的公平動(dòng)態(tài)POR協(xié)議.
3) POW方案.POW被稱為所有權(quán)驗(yàn)證方案,其主要貢獻(xiàn)在于提高數(shù)據(jù)存儲(chǔ)的效率.
上述研究通常把驗(yàn)證者的角色分為公開驗(yàn)證和私有驗(yàn)證2種:1)公開驗(yàn)證意味著數(shù)據(jù)擁有者授權(quán)其他驗(yàn)證者去驗(yàn)證自己的數(shù)據(jù)是否有效;2)私有驗(yàn)證與公開驗(yàn)證相反,它是數(shù)據(jù)擁有者直接驗(yàn)證數(shù)據(jù),這種方式是高效的.
雖然到目前為止已經(jīng)提出很多數(shù)據(jù)完整性驗(yàn)證協(xié)議,但考慮到在面向物聯(lián)網(wǎng)的云存儲(chǔ)環(huán)境中,大多數(shù)設(shè)備的計(jì)算及存儲(chǔ)資源有限,不適用較為復(fù)雜的運(yùn)算.因此,能夠高效驗(yàn)證物聯(lián)網(wǎng)設(shè)備對(duì)云存儲(chǔ)數(shù)據(jù)的完整性是至關(guān)重要的.Wang等人[15]提出一個(gè)基于輕量級(jí)算法的高效公開數(shù)據(jù)完整性驗(yàn)證方案.該協(xié)議使用隨機(jī)掩碼技術(shù)保護(hù)用戶的隱私,第三方審計(jì)人員無法由審計(jì)信息恢復(fù)用戶的數(shù)據(jù).Yu等人[16]提出了一種開放式云存儲(chǔ)數(shù)據(jù)驗(yàn)證方案.用戶不再需要從云中下載數(shù)據(jù),直接使用云中的小型認(rèn)證器進(jìn)行認(rèn)證.該方案有效降低了通信成本和技術(shù)成本,使用戶可以有效更改驗(yàn)證標(biāo)記.Zhang等人發(fā)現(xiàn)文獻(xiàn)[16]在密鑰更新階段存在用戶私鑰泄露的問題.因此,Zhang等人改進(jìn)了密鑰更新機(jī)制,提出了一個(gè)新的數(shù)據(jù)驗(yàn)證方案[17],在該方案中,新用戶用私鑰對(duì)原始用戶進(jìn)行簽名形成用戶的新密鑰防止攻擊.接著,Zhang等人發(fā)現(xiàn)自己的協(xié)議不能抵御撤銷用戶與惡意云服務(wù)器的合謀攻擊.Zhang等人改進(jìn)了文獻(xiàn)[17],提出一個(gè)新的方案[18].他們利用代理再簽名算法生成的簽名密鑰可以有效防止合謀攻擊,實(shí)現(xiàn)數(shù)據(jù)的安全傳輸.
本文基于區(qū)塊鏈技術(shù),設(shè)計(jì)了面向云平臺(tái)的數(shù)據(jù)刪除驗(yàn)證協(xié)議,尤其是降低了用戶對(duì)云服務(wù)器的信任假設(shè).當(dāng)云服務(wù)器發(fā)送惡意操作時(shí),任何人都可以根據(jù)協(xié)議中的區(qū)塊鏈驗(yàn)證操作結(jié)果.主要?jiǎng)?chuàng)新點(diǎn)包括3個(gè)方面:
1) 創(chuàng)建了一個(gè)基于區(qū)塊鏈的遠(yuǎn)程醫(yī)療數(shù)據(jù)驗(yàn)證系統(tǒng).如果云服務(wù)器沒用誠(chéng)實(shí)地刪除數(shù)據(jù),協(xié)議可以為用戶提供檢查服務(wù)器惡意行為的功能.而且,協(xié)議不需要任何的可信第三方的支持.
2) 在實(shí)現(xiàn)數(shù)據(jù)公開驗(yàn)證的同時(shí),協(xié)議具有通信和計(jì)算上的高效性.
3) 構(gòu)建了專門的智能合約,以實(shí)現(xiàn)對(duì)用戶的身份驗(yàn)證.
本節(jié)介紹相關(guān)的密碼學(xué)基礎(chǔ)知識(shí),包括基于屬性的簽名方案(attribute based signature, ABS),Merkle二叉樹的定義和結(jié)構(gòu)以及區(qū)塊鏈技術(shù).
在基于屬性的簽名方案中,簽名者首先會(huì)聲明簽名對(duì)應(yīng)一組特定的屬性或特定的訪問控制結(jié)構(gòu),然后驗(yàn)證者對(duì)此進(jìn)行驗(yàn)證.這類方案具有良好的匿名性,可以細(xì)粒度劃分身份特征,滿足分布式網(wǎng)絡(luò)系統(tǒng)的要求.因此,在區(qū)塊鏈網(wǎng)絡(luò)的構(gòu)建中,使用ABS簽名代替?zhèn)鹘y(tǒng)的ECDSA簽名(用于比特幣)以保護(hù)隱私和安全性.
3)ABS.Sign.輸入(APK,SKu,m,γ),其中m是消息,γ是一個(gè)單調(diào)布爾函數(shù).輸入成立的條件:γ(s)=1,意味著對(duì)應(yīng)的屬性嵌入在s中.然后返回一個(gè)簽名σ.
4)ABS.Ver.輸入(APK,σ,m,γ),輸出一個(gè)布爾值,如果布爾值是Ture,則表示驗(yàn)證成功并接收σ,否則程序中止.
Merkle樹[20]是一種散列二叉樹,是一種做快速歸納和效驗(yàn)大數(shù)據(jù)完整性的數(shù)據(jù)結(jié)構(gòu).本文以比特幣中交易存儲(chǔ)結(jié)構(gòu)為例,如圖1所示.A,B,C,D四個(gè)構(gòu)成Merkle樹葉的交易.在比特幣中,對(duì)交易分別計(jì)算Hash值后,將Hash值存儲(chǔ)在對(duì)應(yīng)的葉子節(jié)點(diǎn).然后,相鄰葉子節(jié)點(diǎn)的Hash值串聯(lián)哈希后生成父節(jié)點(diǎn).重復(fù)同樣的操作直到只剩下一個(gè)頂部節(jié)點(diǎn)為止,即Merkle根.二叉樹是偶數(shù)葉子節(jié)點(diǎn),如果交易個(gè)數(shù)為奇數(shù),將最后一個(gè)交易復(fù)制一份即可.最后,用公鑰簽名技術(shù)對(duì)根節(jié)點(diǎn)簽名,并且通過驗(yàn)證特定葉節(jié)點(diǎn)到根節(jié)點(diǎn)路徑上的所有兄弟節(jié)點(diǎn)來驗(yàn)證交易.
Fig. 1 Merkle tree structure圖1 Merkle樹結(jié)構(gòu)
區(qū)塊鏈[21]源于比特幣的底層技術(shù),是一個(gè)去中心化、防篡改的分布式數(shù)據(jù)庫,在沒有中心集權(quán)機(jī)構(gòu)的存在下,實(shí)現(xiàn)多方可信、價(jià)值對(duì)等的傳輸.在比特幣系統(tǒng)中,如果有交易寫入?yún)^(qū)塊,交易數(shù)據(jù)必須由系統(tǒng)中的所有節(jié)點(diǎn)通過共識(shí)機(jī)制共同決定,并且系統(tǒng)內(nèi)部的所有節(jié)點(diǎn)都無法修改.如果鏈上的一個(gè)區(qū)塊中的交易被非法更改,其他節(jié)點(diǎn)會(huì)識(shí)別出非法節(jié)點(diǎn),并刪除這條鏈.區(qū)塊鏈為每個(gè)參與者提供分散信任的賬簿,每個(gè)用戶或節(jié)點(diǎn)共同維護(hù)并存儲(chǔ)這個(gè)完全相同的分類賬簿,這確保了所有用戶和相應(yīng)區(qū)塊鏈中的節(jié)點(diǎn)完全一致.在分類賬中,交易和歷史數(shù)據(jù)都會(huì)永久存在區(qū)塊中,其持久性基于網(wǎng)絡(luò)的持久性.要改變或者刪除區(qū)塊中的交易記錄是非常困難的,除非攻擊者可以篡改網(wǎng)絡(luò)中51%的節(jié)點(diǎn).此外,所有的系統(tǒng)規(guī)則都是公開和透明的,并且是經(jīng)過所有節(jié)點(diǎn)同意的.系統(tǒng)中的每個(gè)節(jié)點(diǎn)中都存有當(dāng)前網(wǎng)路區(qū)塊鏈的副本.換句話說,每個(gè)節(jié)點(diǎn)都持有數(shù)據(jù)庫的副本,這保證了數(shù)據(jù)庫不能被單個(gè)節(jié)點(diǎn)單獨(dú)操作.
目前,區(qū)塊鏈分為3類:
1) 公有鏈.公有鏈缺少訪問控制權(quán)限,任何人都可以隨時(shí)進(jìn)入系統(tǒng)中進(jìn)行數(shù)據(jù)操作和發(fā)送交易.公有鏈去中心化程度高,數(shù)據(jù)也是公開的.比如比特幣和以太坊.
2) 聯(lián)盟鏈.聯(lián)盟鏈?zhǔn)侵赣扇舾蓚€(gè)機(jī)構(gòu)共同參與管理的區(qū)塊鏈,只允許系統(tǒng)內(nèi)的機(jī)構(gòu)進(jìn)行讀寫和發(fā)送交易,共同記錄交易.比如超級(jí)賬本.
3) 私有鏈.私有鏈?zhǔn)侵笇懭霗?quán)限集中在一個(gè)組織手里的區(qū)塊鏈.由于參與節(jié)點(diǎn)有限和可控,因此私有鏈交易速度快、隱私性好、交易成本低、不易被惡意攻擊.
1994年,Szabo[22]首次提出智能合約,定義為“執(zhí)行合同條款的計(jì)算機(jī)協(xié)議”.一般智能合約可以理解為是一段部署在區(qū)塊鏈上的程序代碼.每個(gè)智能合約都具有獨(dú)特地址的數(shù)據(jù)槽,并通過事務(wù)或者交易來觸發(fā)其數(shù)據(jù)管理功能.
在提出的協(xié)議中,使用智能合約來管理訪問和產(chǎn)生交易.具體描述如附錄的算法1和算法2.
基于區(qū)塊鏈的云數(shù)據(jù)刪除驗(yàn)證系統(tǒng)結(jié)構(gòu)如圖2所示,其中包括云服務(wù)器、用戶、區(qū)塊鏈網(wǎng)絡(luò).系統(tǒng)初始化前,系統(tǒng)會(huì)收集用戶的屬性并在區(qū)塊鏈網(wǎng)絡(luò)中布置智能合約.如果用戶發(fā)布交易就會(huì)觸發(fā)智能合約對(duì)其身份驗(yàn)證.如果用戶是合法的,用戶使用智能合約產(chǎn)生的屬性密鑰對(duì)交易簽名和發(fā)布.交易發(fā)布后,區(qū)塊鏈網(wǎng)絡(luò)中的“驗(yàn)證節(jié)點(diǎn)”會(huì)對(duì)其進(jìn)行驗(yàn)證.云服務(wù)器接收交易后調(diào)用設(shè)備,同時(shí)為調(diào)用的設(shè)備產(chǎn)生一個(gè)調(diào)用證據(jù),并將其放入?yún)^(qū)塊中形成一條區(qū)塊鏈(證據(jù)鏈).最后,云服務(wù)器將證據(jù)發(fā)送給用戶,用戶根據(jù)證據(jù)鏈驗(yàn)證數(shù)據(jù)刪除結(jié)果是否合法.下面我們對(duì)系統(tǒng)中的實(shí)體進(jìn)行描述:
1) 用戶.用戶可以在區(qū)塊鏈網(wǎng)絡(luò)中發(fā)布交易,并且可以驗(yàn)證云服務(wù)器實(shí)現(xiàn)刪除操作的結(jié)果.
2) 區(qū)塊鏈網(wǎng)絡(luò).本文采用一種許可處理結(jié)構(gòu),這些許可節(jié)點(diǎn)分為“驗(yàn)證節(jié)點(diǎn)”(主要負(fù)責(zé)驗(yàn)證交易,簡(jiǎn)稱vdn)和“記賬節(jié)點(diǎn)”(主要負(fù)責(zé)將驗(yàn)證的事務(wù)鏈接到區(qū)塊鏈,簡(jiǎn)稱bkn)
3) 云服務(wù)器.云服務(wù)器是存儲(chǔ)用戶數(shù)據(jù)的實(shí)體.云服務(wù)器在區(qū)塊鏈網(wǎng)絡(luò)中收到用戶的數(shù)據(jù)刪除的請(qǐng)求交易后,生成刪除證據(jù)并嵌入到區(qū)塊鏈中.最后,將證據(jù)發(fā)送給用戶.這個(gè)證據(jù)包含用戶想要?jiǎng)h除的數(shù)據(jù)請(qǐng)求,用戶對(duì)數(shù)據(jù)請(qǐng)求交易的簽名,服務(wù)器對(duì)刪除交易的簽名以及時(shí)間戳.
Fig. 2 Data deletion model圖2 數(shù)據(jù)刪除模型
本文假設(shè)云服務(wù)器是半可信的,它不會(huì)泄露我們的數(shù)據(jù)隱私,但可能不會(huì)按照協(xié)議執(zhí)行刪除數(shù)據(jù)的操作,并有可能返回錯(cuò)誤結(jié)果去誤導(dǎo)用戶.另外,本文假設(shè)區(qū)塊鏈網(wǎng)絡(luò)是公開的,攻擊者容易獲得公開信道上的傳輸數(shù)據(jù).因此,協(xié)議存在以下3種攻擊.
1) 攻擊者竊聽和篡改傳輸在公開信道上的信息,并執(zhí)行竊聽攻擊和重復(fù)攻擊等.
2) 服務(wù)器收到用戶的數(shù)據(jù)刪除請(qǐng)求后,沒有誠(chéng)實(shí)按協(xié)議刪除數(shù)據(jù)并返回錯(cuò)誤的結(jié)果誤導(dǎo)用戶.
3) 在沒有收到用戶的數(shù)據(jù)刪除情況下,云服務(wù)器為了經(jīng)濟(jì)利益隨意刪除數(shù)據(jù).
本文擬實(shí)現(xiàn)的安全目標(biāo)包括:
1) 匿名性.任何實(shí)體都不能通過云服務(wù)器產(chǎn)生的證據(jù)得到用戶信息.
2) 防竊聽攻擊.通過對(duì)公開信道的竊聽,攻擊者無法獲得任何有用信息.
3) 防重復(fù)攻擊.過時(shí)的信息重新發(fā)送時(shí),它將被丟棄.
4) 完整性.用戶可以檢測(cè)半可信云服務(wù)器篡改數(shù)據(jù)的惡意行為.
5) 可追溯性.如果服務(wù)器沒有誠(chéng)實(shí)的刪除數(shù)據(jù),用戶可以通過調(diào)用證據(jù)追溯服務(wù)器的責(zé)任,并且服務(wù)器不能否定.
本文基于區(qū)塊鏈技術(shù),設(shè)計(jì)了一個(gè)面向云數(shù)據(jù)刪除驗(yàn)證協(xié)議.其中,云服務(wù)器被假設(shè)為半可信的,服務(wù)器可能不會(huì)誠(chéng)實(shí)的刪除數(shù)據(jù).協(xié)議的主要過程如圖3所示.用戶進(jìn)入系統(tǒng)調(diào)用智能合約進(jìn)行身份驗(yàn)證,驗(yàn)證合法后,用戶構(gòu)建一個(gè)含有數(shù)據(jù)刪除請(qǐng)求的交易并廣播.云服務(wù)器確認(rèn)交易后刪除數(shù)據(jù),并為用戶產(chǎn)生可以對(duì)刪除結(jié)果驗(yàn)證的證據(jù).證據(jù)嵌入?yún)^(qū)塊中形成一條可驗(yàn)證云服務(wù)器是否誠(chéng)實(shí)刪除數(shù)據(jù)的區(qū)塊鏈(證據(jù)鏈).在證據(jù)鏈的幫助下,如果云服務(wù)器沒有誠(chéng)實(shí)刪除數(shù)據(jù),用戶可以驗(yàn)證刪除結(jié)果并且云服務(wù)器不能否認(rèn).
Fig. 3 Protocol Framework圖3 協(xié)議框架
本文方案類似于聯(lián)盟鏈,區(qū)塊鏈間的節(jié)點(diǎn)通過共識(shí)機(jī)制達(dá)成了相互信任,同時(shí)實(shí)現(xiàn)了匿名性.由于區(qū)塊鏈網(wǎng)絡(luò)中的交易都是透明的,因此需要通過加密手段保護(hù)交易內(nèi)容的機(jī)密性.所以,本文中的交易內(nèi)容delete-request是用戶希望刪除數(shù)據(jù)的請(qǐng)求集合經(jīng)過AES.Enc加密算法加密后形成的密文,例如delete-request=AES.Enc(delete-data1,delete-data2,…,delete-datan),其中delete-datai(i=1,2,…,n)表示刪除集合中的一個(gè)數(shù)據(jù)刪除請(qǐng)求.tag是文件的標(biāo)簽,由用戶產(chǎn)生并上傳給云服務(wù)器.tag=H(namef),其中namef表示刪除文件的名字,只有用戶知道.H()表示一種安全散列函數(shù).
3.2.1 初始化階段
系統(tǒng)管理者選擇單調(diào)跨度程序的寬度cmax,并通過調(diào)用ABS.Setup()算法生成公共參數(shù)PP(G1,G2,H,g,(h0,h1,…,hcmax))和主/公密鑰對(duì)(ASK,APK).當(dāng)用戶首次進(jìn)入系統(tǒng)時(shí),根據(jù)用戶的屬性調(diào)用ABS.AttrGen()算法生成簽名密鑰SKu.
3.2.2 合約部署
將策略和交易上設(shè)計(jì)的智能契約作為輸入,編譯并將它們作為事務(wù)部署到塊鏈中.如果智能合約通過驗(yàn)證且在區(qū)塊鏈網(wǎng)絡(luò)中達(dá)到了共識(shí),它將永遠(yuǎn)記錄在區(qū)塊鏈中,并且區(qū)塊鏈網(wǎng)絡(luò)中所有的實(shí)體必須按照合約規(guī)則執(zhí)行.
3.2.3 交易生成階段
如果用戶希望發(fā)布一個(gè)數(shù)據(jù)刪除的請(qǐng)求交易,執(zhí)行步驟如下:
1) 調(diào)用智能合約上的getPolicy()算法,得到相對(duì)應(yīng)的謂詞γ.如果用戶的屬性滿足相應(yīng)的謂詞γ,他可以發(fā)布一個(gè)合法的交易并執(zhí)行下一步.
2) 用戶調(diào)用屬性簽名算法ABS中的ABS.AttrGen()算法和密鑰生成算法生成屬性簽名密鑰SKu和一對(duì)公私鑰PKi/SKi.然后創(chuàng)建數(shù)據(jù)刪除的請(qǐng)求交易Tx=Adu,delete-request,SigReu,t1,tag,Ads,并觸發(fā)在智能合約交易上的函數(shù)upTrans().交易Tx包括用戶的地址Adu=SHA(PKi),交易內(nèi)容包括delete-request和tag,交易內(nèi)容的簽名SigReu=delete-request,t1,tag,交易的時(shí)間戳t1和服務(wù)器的地址Ads=SHA(PKs).最后在區(qū)塊鏈網(wǎng)路中廣播交易Tx.
3.2.4 交易驗(yàn)證階段
1) 驗(yàn)證節(jié)點(diǎn)vdn(其中包括云服務(wù)器)調(diào)用智能合約交易上的getTrans(),獲得未驗(yàn)證交易.通過調(diào)用ABS.Ver()算法驗(yàn)證交易中屬性簽名,然后,vdn調(diào)用函數(shù)upTrans()改變交易的狀態(tài),使其成為經(jīng)過驗(yàn)證的合法交易.
2) 共識(shí)節(jié)點(diǎn)bkn使用PoW協(xié)商一致機(jī)制來鏈接交易.換句話說,服務(wù)器利用自己的私鑰SKs確認(rèn)交易Tx后, 生成一個(gè)待處理區(qū)塊.如果此區(qū)塊被2/3及以上的bkn節(jié)點(diǎn)批準(zhǔn),服務(wù)器才能將該塊鏈接到區(qū)塊鏈.
3.2.5 證書生成階段
云服務(wù)器監(jiān)視區(qū)塊鏈網(wǎng)絡(luò),一旦用戶發(fā)布新的有效請(qǐng)求,云服務(wù)器立刻響應(yīng)用戶的交易請(qǐng)求.在刪除相應(yīng)數(shù)據(jù)后產(chǎn)生一條用以驗(yàn)證云服務(wù)器是否誠(chéng)實(shí)刪除數(shù)據(jù)的區(qū)塊鏈.為了更好地描述問題,假設(shè)用戶發(fā)布的交易中需要?jiǎng)h除數(shù)據(jù)的數(shù)量為8,即1≤j≤8.
1) 收到用戶發(fā)布的交易后,云服務(wù)器調(diào)用AES.Dec()算法解密密文delete-request獲得相應(yīng)的數(shù)據(jù)刪除請(qǐng)求delete-datai,delete-datai表示當(dāng)前需要?jiǎng)h除數(shù)據(jù)的請(qǐng)求消息.刪除數(shù)據(jù)delete-datai后,云服務(wù)器為其建立證據(jù)proofj=(delete-datai,SigReu,Sigs,t1),其中Sigs=(delete-datai,tag,t1),SKs是服務(wù)器的私鑰.然后,云服務(wù)器計(jì)算一個(gè)待處理區(qū)塊Hash值hi=H(hi-1,tsi,rooti),并用Merkle樹結(jié)構(gòu)將這些proofj歸納到該處理區(qū)塊中,并生成根節(jié)點(diǎn)rooti.如果此區(qū)塊被2/3及以上的bkn節(jié)點(diǎn)批準(zhǔn),云服務(wù)器才能將該區(qū)塊鏈接到區(qū)塊鏈,其中tsi表示當(dāng)前區(qū)塊產(chǎn)生的時(shí)間戳,hi-1表示Hash鏈中的前一個(gè)Hash值.另外,區(qū)塊鏈形成后,服務(wù)器刪除數(shù)據(jù)并建立刪除證據(jù)proofj,發(fā)送proofj、區(qū)塊時(shí)間戳tsi給用戶.這樣區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都會(huì)存儲(chǔ)一條如圖4所示的區(qū)塊鏈.
Fig. 4 “Evidence chain” structure diagram圖4 “證據(jù)鏈”結(jié)構(gòu)示意圖
2) 用戶收到最終的證據(jù)τ=(proofj,rooti,hi,tsi),通過τ可以驗(yàn)證云服務(wù)器是否誠(chéng)實(shí)刪除數(shù)據(jù).
3.2.6 驗(yàn)證階段
當(dāng)用戶接收到τ后,可以驗(yàn)證τ的正確性.為了不失一般性,以圖4中的證據(jù)proof4作為一個(gè)例子來解釋驗(yàn)證過程.首先,用戶需要驗(yàn)證等式(1)~(4),確保云服務(wù)器產(chǎn)生的證據(jù)在區(qū)塊鏈中.
hi=H(hi-1‖tsi‖rooti);
(1)
hi+1=H(hi‖tsi+1‖rooti+1);
(2)
……
hm-1=H(hm-2‖tsm-1‖rootm-1);
(3)
hm=H(hm-2‖tsm‖rootm);
(4)
其中,hm是最近發(fā)布的Hash值.
只有所有的驗(yàn)證和等式都是成立的,用戶才可以確定服務(wù)器是誠(chéng)實(shí)的以及這些證據(jù)proofj是可信的.
1) 防竊聽攻擊
攻擊者在公開信道上竊聽通信信息,并且獲得交易內(nèi)容delete-request.由于密文delete-request的密鑰是不可盜取的,攻擊者無法獲得任何有用的信息.因此,設(shè)計(jì)的協(xié)議能夠抵御竊聽攻擊.
2) 防篡改攻擊
假設(shè)攻擊者修改了交易內(nèi)容,由于攻擊者不知道用戶的屬性,因此無法獲取用戶的屬性密鑰SKu.當(dāng)驗(yàn)證節(jié)點(diǎn)vdn調(diào)用ABS.Ver()算法時(shí),交易無法通過驗(yàn)證,系統(tǒng)將丟棄攻擊者的交易.
3) 防重放攻擊
假設(shè)攻擊者利用過期交易發(fā)動(dòng)重放攻擊,由于每個(gè)交易都含有一個(gè)獨(dú)特的時(shí)間戳,通過對(duì)時(shí)間戳的檢驗(yàn),可以有效防止這類攻擊.
4) 正確性
5) 可追溯
如果云服務(wù)器不可信,用戶將從2個(gè)方面實(shí)現(xiàn)對(duì)云服務(wù)器的追溯問責(zé):
情形1. 云服務(wù)器在沒有收到刪除請(qǐng)求交易的情況下刪除數(shù)據(jù).在這種情況下,云服務(wù)器沒有刪除請(qǐng)求的交易Tx=Adu,delete-datai,SigReu,t1,Ads,其中SigReu是基于用戶屬性的簽名,SigReu只有用戶可以計(jì)算,云服務(wù)器不能偽造它.因此,云服務(wù)器不能證明刪除操作是否合法,必須承擔(dān)相應(yīng)責(zé)任.
情形2. 云服務(wù)器根據(jù)刪除請(qǐng)求刪除數(shù)據(jù)后,用戶依然可以在云中檢測(cè)到刪除數(shù)據(jù)的存在.對(duì)于這種情況,用戶可以根據(jù)證據(jù)τ=(proofj,rooti,hi,tsi)來檢驗(yàn)服務(wù)器是否誠(chéng)實(shí)刪除數(shù)據(jù).證據(jù)τ=(proofj,rooti,hi,tsi)中的proofj包含由云服務(wù)器私鑰SKs的簽名Sigs.Sigs只能由云服務(wù)器生成,所以用戶可以證明云服務(wù)器是否誠(chéng)實(shí)刪除了數(shù)據(jù).
為了便于把本文的協(xié)議與原有的協(xié)議比較,使用Sig表示簽名生成運(yùn)算,Hash表示Hash運(yùn)算,V表示一次合法的簽名驗(yàn)證.另外,我們假設(shè)n=lbm(m是文件的數(shù)量).如表1所示,提出的協(xié)議與原有協(xié)議進(jìn)行比較.
Table 1 Performance Comparison表1 協(xié)議性能比較
本節(jié)對(duì)所提出的協(xié)議進(jìn)行實(shí)驗(yàn)評(píng)估,并在一個(gè)1.8 GHz處理器和2 GB內(nèi)存的Ubuntu16.04虛擬機(jī)上使用OpenSSL工具實(shí)現(xiàn).表2~4列出了協(xié)議中主要密碼算法的時(shí)間開銷.
如圖5所示,在刪除階段,我們需要計(jì)算簽名與驗(yàn)證算法.雖然,在刪除階段的計(jì)算時(shí)間開銷稍大,但是刪除階段由云服務(wù)器上執(zhí)行,我們可以接受較大的時(shí)間開銷.驗(yàn)證階段,我們只需要計(jì)算(n+2)個(gè)散列函數(shù),大大降低了驗(yàn)證者的計(jì)算能力.因此,提出的協(xié)議更符合公開驗(yàn)證的實(shí)際情況.
Table 2 Time Cost of ABS Algorithm表2 ABS算法的時(shí)間開銷 s
Table 3 Time Cost of AES Algorithm表3 AES算法的時(shí)間開銷 s
Table 4 Time Cost of Hash Algorithm表4 Hash算法的時(shí)間開銷
Fig. 5 Time cost for deletion and validation圖5 刪除與驗(yàn)證的時(shí)間消耗
本文設(shè)計(jì)了一個(gè)基于區(qū)塊鏈的云數(shù)據(jù)刪除驗(yàn)證協(xié)議,不需假設(shè)云服務(wù)器是可信的,它可能會(huì)篡改數(shù)據(jù)刪除的結(jié)果并欺騙用戶.與其他同類型的協(xié)議相比,本文的協(xié)議采用區(qū)塊鏈系統(tǒng)保證用戶可以檢驗(yàn)云服務(wù)器的欺騙行為.如果不誠(chéng)信的云服務(wù)器欺騙用戶,用戶可以在沒有第三方可信機(jī)構(gòu)的幫助下對(duì)刪除證據(jù)進(jìn)行檢驗(yàn),證明服務(wù)器的欺騙行為.