楊 瀟,吳黎兵,張壯壯,霍麗娟
(武漢大學(xué) 國家網(wǎng)絡(luò)安全學(xué)院,武漢 430072)
隨著互聯(lián)網(wǎng)的普及與發(fā)展,互聯(lián)網(wǎng)用戶的數(shù)量增加,用戶數(shù)據(jù)種類也越加多樣化,從簡單的文本發(fā)展到圖片、視頻;隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的終端設(shè)備例如汽車、智能穿戴設(shè)備等接入物聯(lián)網(wǎng).這些都導(dǎo)致了計算機(jī)數(shù)據(jù)呈爆炸性增長.IDC(International Data Corporation)預(yù)測,到2025年全球所產(chǎn)生的數(shù)據(jù)總量將達(dá)到163ZB[1].越來越多的數(shù)據(jù)成為了用戶有限存儲資源的負(fù)擔(dān),因此越來越多的用戶選擇將數(shù)據(jù)存儲在提供云存儲服務(wù)的云存儲服務(wù)器上以節(jié)約本地資源[2].
在將數(shù)據(jù)存儲到云服務(wù)器上之后,用戶為了節(jié)約本地存儲空間往往會將本地數(shù)據(jù)刪除,然而存儲在云上的數(shù)據(jù)并不安全,其完整性難以得到保證.2015年谷歌數(shù)據(jù)中心遭遇雷擊,部分存儲于磁盤的上的數(shù)據(jù)丟失,無法修復(fù);2018年,國內(nèi)某云服務(wù)商內(nèi)部磁盤發(fā)生靜默錯誤,致使一家公司平臺數(shù)據(jù)及備份數(shù)據(jù)全部丟失;2021年,歐洲規(guī)模最大的云計算公司OVHcloud的一個數(shù)據(jù)中心遭受火災(zāi),導(dǎo)致部分未購買異地備份和災(zāi)難恢復(fù)服務(wù)的用戶的數(shù)據(jù)無法恢復(fù).除了云服務(wù)商內(nèi)部發(fā)生軟硬件故障及自然災(zāi)害造成數(shù)據(jù)丟失,云服務(wù)器還會受到外部黑客的攻擊,黑客可能會盜取數(shù)據(jù),甚至惡意篡改和刪除數(shù)據(jù)[3,4].云服務(wù)商發(fā)生事故后,可能會為了維護(hù)聲譽(yù)而選擇不公開事故,導(dǎo)致用戶數(shù)據(jù)丟失而用戶不知情;惡意的云服務(wù)商還會刪除用戶不常用的文件以節(jié)約存儲空間.
為了保護(hù)云存儲數(shù)據(jù)的完整性,Ateniese等[5-7]等提出了驗(yàn)證云存儲數(shù)據(jù)完整性的方案,基于同態(tài)驗(yàn)證標(biāo)簽、抽樣策略等方法實(shí)現(xiàn)了在不將數(shù)據(jù)塊下載到本地的情況下以常數(shù)級別的通信開銷實(shí)現(xiàn)對云存儲數(shù)據(jù)完整性的驗(yàn)證.但是上述方案中完整性驗(yàn)證證據(jù)的驗(yàn)證由數(shù)據(jù)擁有者(Data Owner,DO)執(zhí)行,會給DO帶來較大的計算開銷.Wang等[8-10]提出引入可信第三方審計者(Third Party Auditor,TPA),接受DO的委托對云服務(wù)提供商(Cloud Service Provider,CSP)進(jìn)行挑戰(zhàn)和完整性驗(yàn)證證據(jù)的驗(yàn)證,使DO免于驗(yàn)證階段的計算開銷.
引入TPA后雖然降低了DO的計算開銷,但也帶來了額外的安全問題.首先,在基于TPA的方案中,存在著TPA是完全可信的安全假設(shè),然而在現(xiàn)實(shí)世界中,不存在完全可信的實(shí)體,TPA也可能做出違反云存儲數(shù)據(jù)完整性驗(yàn)證協(xié)議的行為.一方面,不誠實(shí)的TPA可能會總是返回驗(yàn)證通過的驗(yàn)證結(jié)果以節(jié)省計算資源,另一方面TPA可能會接受CSP的賄賂,與CSP聯(lián)合進(jìn)行共謀攻擊欺瞞用戶,來掩蓋數(shù)據(jù)受損情況.在基于TPA的方案中,往往還存在著DO是誠實(shí)的安全假設(shè).在現(xiàn)實(shí)情況中,DO可能會在數(shù)據(jù)完好的情況下對CSP進(jìn)行誣陷以尋求賠償.
其次,在基于TPA的方案中,缺乏仲裁機(jī)制,在一方認(rèn)定協(xié)議運(yùn)行異常的時候,無法通過協(xié)議運(yùn)行信息確定做出違反協(xié)議規(guī)定行為的一方.
最后,基于TPA的方案存在著中心化局限,整個協(xié)議運(yùn)轉(zhuǎn)依賴于TPA的正常運(yùn)行,當(dāng)TPA宕機(jī)或者被惡意入侵時,整個驗(yàn)證協(xié)議都將失效甚至危害用戶的數(shù)據(jù)安全.
區(qū)塊鏈?zhǔn)潜忍貛臶11]的底層核心技術(shù),具有去中心化、不可篡改、公開透明、可追溯、可審計等優(yōu)點(diǎn)[12].區(qū)塊鏈本質(zhì)是一個去中心化的分布式數(shù)據(jù)庫,能夠在沒有可信中心節(jié)點(diǎn)的情況下實(shí)現(xiàn)大規(guī)模分布式網(wǎng)絡(luò)中各個節(jié)點(diǎn)的數(shù)據(jù)共識,并能夠與智能合約結(jié)合,實(shí)現(xiàn)可信的分布式計算.
區(qū)塊鏈技術(shù)與云存儲數(shù)據(jù)完整性驗(yàn)證相結(jié)合,利用區(qū)塊鏈的去中心化特點(diǎn)可以降低協(xié)議中心化風(fēng)險;利用區(qū)塊鏈的不可篡改性、可追溯性可以實(shí)現(xiàn)對驗(yàn)證結(jié)果的審計,解決三方間的信任問題;利用區(qū)塊鏈的公開透明特性,比特幣、以太坊等比特幣等公有鏈也可作為外部可信數(shù)據(jù)源,替代協(xié)議中的一些參數(shù),提高協(xié)議的公平性與可信性.將區(qū)塊鏈技術(shù)與云數(shù)據(jù)完整性驗(yàn)證相結(jié)合已經(jīng)成為一種研究趨勢,本文將研究區(qū)塊鏈技術(shù)在云數(shù)據(jù)完整性驗(yàn)證領(lǐng)域的研究進(jìn)展,梳理區(qū)塊鏈與現(xiàn)有驗(yàn)證方案結(jié)合產(chǎn)生的新技術(shù)和新方法,形成圖1所示的結(jié)構(gòu)脈絡(luò).
圖1 基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證方法體系脈絡(luò)Fig.1 Architecture of blockchain-based cloud data integrity verification
本章將首先介紹云數(shù)據(jù)完整性驗(yàn)證的相關(guān)背景,包括系統(tǒng)模型、安全問題及功能目標(biāo).進(jìn)而介紹區(qū)塊鏈技術(shù),包括其原理、特性、關(guān)鍵技術(shù)等內(nèi)容.
2.1.1 系統(tǒng)模型
通常云數(shù)據(jù)完整性驗(yàn)證協(xié)議的系統(tǒng)模型包含三方,分別是 DO、CSP以及TPA,如圖2所示.
圖2 系統(tǒng)模型Fig.2 System model
DO:可能是個人用戶或者企業(yè)用戶,擁有大量的數(shù)據(jù),需要租用CSP的云存儲服務(wù)來存儲數(shù)據(jù).
CSP:對外出租其足量的存儲資源及計算資源來盈利.
TPA:具有一定的密碼學(xué)計算能力,接受DO的委托代替其完成審計任務(wù).
云存儲數(shù)據(jù)完整性驗(yàn)證協(xié)議本質(zhì)上是一個挑戰(zhàn)-應(yīng)答協(xié)議,其一般工作流程如下:
1)DO對其要外包的數(shù)據(jù)進(jìn)行預(yù)處理,例如分塊、加密、編碼等,然后對每個數(shù)據(jù)塊生成一個標(biāo)簽.
2)DO將數(shù)據(jù)塊及對應(yīng)的標(biāo)簽集合發(fā)送給CSP,并將審計任務(wù)委托給信任的TPA.
3)TPA定期生成挑戰(zhàn)信息并發(fā)送給CSP.
4)CSP接收到挑戰(zhàn)后,根據(jù)挑戰(zhàn)內(nèi)容生成完整性驗(yàn)證證據(jù),返回給TPA.
5)TPA驗(yàn)證CSP返回的完整性驗(yàn)證證據(jù),并及時將驗(yàn)證結(jié)果告知DO.
2.1.2 安全問題
在云存儲數(shù)據(jù)完整性驗(yàn)證模型中,三方互不信任.一方面,當(dāng)DO存儲在CSP中的數(shù)據(jù)發(fā)生損壞,CSP會為了維護(hù)聲譽(yù)或者意圖逃避對DO的賠償而不公開數(shù)據(jù)損壞的情況;CSP也會刪除用戶不常用數(shù)據(jù)以節(jié)省存儲空間.另一方面DO可能會在數(shù)據(jù)完好的情況下誣陷CSP,以得到CSP的賠償.最后,TPA可能欺騙用戶,做出違反完整性驗(yàn)證協(xié)議的行為,例如,TPA可能會不執(zhí)行挑戰(zhàn)和驗(yàn)證的過程而總是返回驗(yàn)證通過的結(jié)果給DO,以節(jié)省資源;又或者TPA會與CSP合謀,故意繞過損壞的數(shù)據(jù)塊而總是去挑戰(zhàn)完整的數(shù)據(jù)塊來欺瞞用戶.總而言之,云數(shù)據(jù)完整驗(yàn)證協(xié)議可能會遇到以下攻擊:
1)偽造攻擊:CSP偽造完整性驗(yàn)證證據(jù)繞過TPA的驗(yàn)證來掩蓋用戶數(shù)據(jù)受損的情況.
2)替換攻擊:CSP利用沒有損壞的數(shù)據(jù)塊及對應(yīng)的標(biāo)簽來生成完整性驗(yàn)證證據(jù)繞過TPA的驗(yàn)證.
3)重放攻擊:CSP利用之前生成的完整性驗(yàn)證證據(jù)來繞過當(dāng)前的TPA挑戰(zhàn),這樣便不需要保存DO的數(shù)據(jù)以及標(biāo)簽.
4)共謀攻擊:CSP與TPA合謀,或通過精心設(shè)計挑戰(zhàn)信息繞過損壞數(shù)據(jù)塊,或返回虛假驗(yàn)證結(jié)果來欺瞞用戶.
2.1.3 功能目標(biāo)
2.1.3.1 支持動態(tài)數(shù)據(jù)
用戶存在云上的文件除了音樂、視頻等不會發(fā)生改動的靜態(tài)數(shù)據(jù)之外,還會有一些會發(fā)生改動的文件即動態(tài)數(shù)據(jù),例如云文檔.然而Ateniese[5]提出的方案并不支持動態(tài)數(shù)據(jù)的完整性驗(yàn)證,若存儲在云上的數(shù)據(jù)發(fā)生改動,需要重新計算大量的標(biāo)簽,帶來極大的計算開銷.支持動態(tài)數(shù)據(jù)的思路是維護(hù)一個數(shù)據(jù)結(jié)構(gòu),記錄數(shù)據(jù)塊間的位置關(guān)系以及數(shù)據(jù)塊與其驗(yàn)證元數(shù)據(jù)間的映射關(guān)系.Liu等[13-16]引入默克爾哈希樹來支持動態(tài)數(shù)據(jù).Zhu等[17-21]使用線性表來支持動態(tài)數(shù)據(jù).
2.1.3.2 支持隱私保護(hù)
在CSP返回給TPA的完整性驗(yàn)證證據(jù)中往往會含有被挑戰(zhàn)數(shù)據(jù)塊的線性組合[8],好奇的TPA可能會從中恢復(fù)出數(shù)據(jù),導(dǎo)致用戶的數(shù)據(jù)隱私發(fā)生泄漏.常用的方案是采用隨機(jī)掩碼的方式來解決驗(yàn)證過程中的隱私保護(hù)問題[22,23].在數(shù)據(jù)共享的場景下,還需要考慮保護(hù)共享用戶的身份隱私問題[24,25].
2.1.3.3 批量審計
批量審計是指審計者TPA可以同時驗(yàn)證CSP返回的多個不同DO的完整性驗(yàn)證證據(jù),而不是依次驗(yàn)證每個證據(jù).批量審計可以在TPA接受了較多審計任務(wù)委托的時候極大的提高審計效率,降低TPA的計算開銷,是云數(shù)據(jù)完整性驗(yàn)證協(xié)議中非常重要的功能特性.
2.1.3.4 無塊驗(yàn)證
利用同態(tài)驗(yàn)證標(biāo)簽(Homomorphic Verification Tag,HVT),可以使驗(yàn)證者能夠在不接觸到數(shù)據(jù)塊的情況下實(shí)現(xiàn)對云數(shù)據(jù)的完整性驗(yàn)證,避免用戶數(shù)據(jù)塊在網(wǎng)絡(luò)上頻繁傳輸?shù)那闆r,有效地降低通信開銷.
2.1.3.5 可追溯性
將驗(yàn)證元數(shù)據(jù)、挑戰(zhàn)信息、完整性驗(yàn)證證據(jù)、驗(yàn)證結(jié)果等信息公開存儲到區(qū)塊鏈中,可供任意一方查看.
2.1.3.6 公共審計
由計算資源豐富的TPA或區(qū)塊鏈網(wǎng)絡(luò)接受DO的委托,對CSP進(jìn)行挑戰(zhàn)并驗(yàn)證CSP返回的完整性驗(yàn)證證據(jù)來確認(rèn)云存儲數(shù)據(jù)的完整性,節(jié)約DO的計算資源.
2.1.3.7 分布式審計
由區(qū)塊鏈網(wǎng)絡(luò)接受DO的委托執(zhí)行審計任務(wù),實(shí)現(xiàn)分布式審計.能夠避免傳統(tǒng)中心化TPA帶來的單點(diǎn)故障問題,提高協(xié)議的可靠性.
2.1.3.8 爭議仲裁
當(dāng)協(xié)議運(yùn)行狀態(tài)異常的時候,任何一方可以提起仲裁,可以根據(jù)存儲在區(qū)塊鏈中的三方通信信息判斷出做出違反協(xié)議規(guī)定行為的一方.
近些年,比特幣、以太坊等加密貨幣得到了越來越多的關(guān)注,區(qū)塊鏈作為加密貨幣的底層核心技術(shù)也迅速成為了國內(nèi)外學(xué)者的研究熱點(diǎn).如今區(qū)塊鏈已經(jīng)超脫于比特幣,代表了結(jié)合底層區(qū)塊結(jié)構(gòu)、P2P網(wǎng)絡(luò)結(jié)構(gòu)、共識機(jī)制、激勵機(jī)制的一類技術(shù).
區(qū)塊鏈的底層即狹義上的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu),基本單位稱為區(qū)塊,其中記錄了區(qū)塊鏈中所有的被確認(rèn)過的交易.區(qū)塊之間通過哈希指針邏輯上相連,形成鏈?zhǔn)浇Y(jié)構(gòu).區(qū)塊鏈結(jié)構(gòu)在整個系統(tǒng)中扮演“賬本”的角色,是區(qū)塊鏈系統(tǒng)透明性、可追溯性的基礎(chǔ).區(qū)塊鏈結(jié)構(gòu)如圖3所示.
圖3 區(qū)塊鏈結(jié)構(gòu)Fig.3 Structure of blockchain
區(qū)塊鏈系統(tǒng)通過P2P網(wǎng)絡(luò)組織各個對等節(jié)點(diǎn),區(qū)塊鏈“賬本”在P2P網(wǎng)絡(luò)中的每個節(jié)點(diǎn)都保存了一份,單個節(jié)點(diǎn)發(fā)生故障不會影響系統(tǒng)的正常運(yùn)作.P2P網(wǎng)絡(luò)是區(qū)塊鏈系統(tǒng)去自治性、中心化特性的基礎(chǔ).
在區(qū)塊鏈分布式系統(tǒng)中,為了達(dá)到對記賬權(quán)力、交易有效性的共識,需要有效的共識算法.常用且知名的共識算法有PBFT、PoW、PoS、DPoS等,可以根據(jù)網(wǎng)絡(luò)通信的可信程度及系統(tǒng)的特性選取或設(shè)計適配的共識算法.共識機(jī)制是區(qū)塊鏈系統(tǒng)不可篡改性、安全性的基礎(chǔ).
根據(jù)區(qū)塊鏈的開放程度,區(qū)塊鏈可以分為公有鏈、聯(lián)盟鏈和私有鏈.公有鏈允許用戶隨時加入和退出,無需授權(quán),沒有任何限制.聯(lián)盟鏈則是多個參與者共同管理的,這些參與者可以是不同的組織或?qū)嶓w.聯(lián)盟鏈的參與者需要進(jìn)行身份驗(yàn)證才能加入鏈中,鏈上的交易也需要獲得參與者的共識才能被確認(rèn)和記錄.私有鏈?zhǔn)怯梢粋€組織或一個實(shí)體完全控制和管理的,只有特定的參與者可以加入鏈中進(jìn)行交易和數(shù)據(jù)管理.隨著區(qū)塊鏈系統(tǒng)開放程度的降低,系統(tǒng)的共識算法效率高,交易速度更快,但系統(tǒng)的去中心化程度也越來越弱.
區(qū)塊鏈具有公開透明、可審計、去中心化的特點(diǎn),因此區(qū)塊鏈與傳統(tǒng)云存儲安全協(xié)議結(jié)合會增強(qiáng)安全協(xié)議的可靠性,并增加額外的安全特性.目前已有很多研究將云存儲安全協(xié)議與區(qū)塊鏈結(jié)合,例如云存儲訪問控制[26,27]、云存儲重復(fù)數(shù)據(jù)刪除[28-30]、云數(shù)據(jù)溯源[31,32]等,本文將著重研究云數(shù)據(jù)完整性審計安全協(xié)議與區(qū)塊鏈結(jié)合的研究進(jìn)展.
在TPA不可信的場景下,TPA可能會與CSP聯(lián)合實(shí)施共謀攻擊欺瞞用戶,一種可能的攻擊方式是TPA操縱其生成的挑戰(zhàn)信息,故意略過損壞的數(shù)據(jù)塊而只挑戰(zhàn)完好的數(shù)據(jù)塊,這樣每次驗(yàn)證都能通過但是用戶數(shù)據(jù)實(shí)際上已經(jīng)發(fā)生損壞.為了避免云數(shù)據(jù)完整性驗(yàn)證過程中發(fā)生上述的共謀攻擊行為,挑戰(zhàn)信息的生成不能由協(xié)議參與的任何一方?jīng)Q定,也不能由任意兩方協(xié)商決定,因?yàn)榇嬖趦煞焦仓\攻擊其他一方的可能,因此一個可行的思路是使用外部隨機(jī)源生成挑戰(zhàn)信息即使用公有鏈上的信息作為隨機(jī)采樣函數(shù)的種子,使得挑戰(zhàn)信息由公開、可驗(yàn)證的信息決定.
為了抵御上述的共謀攻擊,Xue[33]提出根據(jù)用戶指定的時間從比特幣公鏈上取得相應(yīng)塊中的nonce字段來構(gòu)造挑戰(zhàn)信息.類似地,Armknecht[34]提出根據(jù)用戶給出的時間來選取該時間比特幣公鏈中對應(yīng)最新塊的哈希值作為外部隨機(jī)源來生成挑戰(zhàn)信息.其同時提出了審計TPA行為的思想,并給出了具體設(shè)計方案.
TPA除了會與CSP共謀欺騙用戶外,可能還會惡意推遲審計時間,即審計者并不在委托期間定期進(jìn)行完整性審計,而是選擇在委托截至期快要到達(dá)時集中完成審計任務(wù),這樣便不能及時發(fā)現(xiàn)CSP上的數(shù)據(jù)損壞,DO容易遭受損失.為了及時發(fā)現(xiàn)惡意延遲審計者的行為,Zhang[35]提出可以通過以太坊的區(qū)塊高度推算出區(qū)塊生成時間,而區(qū)塊中的每一筆交易的生成時間都不晚于區(qū)塊的生成時間.因此方案提出TPA根據(jù)當(dāng)前最新的12個區(qū)塊生成挑戰(zhàn)信息,生成挑戰(zhàn)后生成一條日志記錄,記錄中包含最新區(qū)塊的高度來作為日志的時間戳.同時生成一條給數(shù)據(jù)擁有著轉(zhuǎn)賬0以太幣的交易,將日志的哈希值填入交易的data字段.后續(xù)數(shù)據(jù)擁有者可以根據(jù)日志和區(qū)塊鏈中的交易信息判定審計者的審計時間是否符合要求,來防御惡意延遲審計者的攻擊.
總而言之,Xue等[33-35]使用了公有鏈上不同的信息作為采樣函數(shù)的參數(shù)生成挑戰(zhàn)信息,Xue[33]使用了比特幣上區(qū)塊頭的nonce字段,Armknecht[34]使用了比特幣最新區(qū)塊的哈希值,Zhang[35]使用了以太坊最新的12個區(qū)塊的哈希值.因?yàn)門PA已經(jīng)不再可信,所以仍需驗(yàn)證挑戰(zhàn)信息是否按照協(xié)議規(guī)定根據(jù)公有鏈生成的,因此TPA需要在審計過程中生成相應(yīng)的日志記錄,例如包含審計時間、nonce值、區(qū)塊hash值、完整性證據(jù)、驗(yàn)證結(jié)果等值,供DO檢查,帶來了額外的計算開銷和存儲開銷,如表1所示.
表1 基于區(qū)塊鏈生成挑戰(zhàn)的方案對比分析Table 1 Comparative analysis of schemes generating challenge by blockchain
區(qū)塊鏈本質(zhì)上是一個分布式去中心化的數(shù)據(jù)庫,其去中心化的特性使其相較于傳統(tǒng)的中心化數(shù)據(jù)庫降低了集中控制的風(fēng)險,消除了單點(diǎn)故障的威脅.而在云數(shù)據(jù)完整性驗(yàn)證協(xié)議中,私有驗(yàn)證模型需要DO在本地存儲標(biāo)簽,公共驗(yàn)證模型需要TPA存儲標(biāo)簽以及其他的一些驗(yàn)證元信息,因此區(qū)塊鏈與云數(shù)據(jù)完整性驗(yàn)證的一個可能的結(jié)合方向是使用區(qū)塊鏈存儲驗(yàn)證元信息,用于后續(xù)的驗(yàn)證過程,避免驗(yàn)證元信息存儲服務(wù)單點(diǎn)故障造成協(xié)議運(yùn)行終止,提高了協(xié)議的穩(wěn)定性與可靠性.
Wang[36]對基于區(qū)塊鏈的私有可證明數(shù)據(jù)持有進(jìn)行了形式化建模,給出了私有云數(shù)據(jù)驗(yàn)證模型在區(qū)塊鏈存儲驗(yàn)證元信息情況下的基本流程框架,即DO將分塊后生成的標(biāo)簽存儲在區(qū)塊鏈上,在驗(yàn)證階段分別從CSP處取得完整性驗(yàn)證證據(jù)、從區(qū)塊鏈中取得驗(yàn)證元信息,最后進(jìn)行密碼學(xué)驗(yàn)證計算.類似地,Liu[37]提出了一個IOT場景下的基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證方案,與Wang[36]提出的方案相比,Liu提出利用智能合約實(shí)現(xiàn)在區(qū)塊鏈上對驗(yàn)證元數(shù)據(jù)的存取,且該方案考慮了云服務(wù)器支持密碼學(xué)運(yùn)算、不支持密碼學(xué)計算以及采用P2P文件系統(tǒng)的情況,但未考慮批量驗(yàn)證和數(shù)據(jù)隱私保護(hù)操作等其他功能,且存在重放攻擊的風(fēng)險.基于區(qū)塊鏈的云數(shù)據(jù)私有驗(yàn)證模型如圖4所示.
圖4 基于區(qū)塊鏈的云數(shù)據(jù)私有驗(yàn)證模型Fig.4 Blockchain-based private validating model for cloud data
與上述私有審計方案不同,Zhao等[38-40]提出了基于區(qū)塊鏈的公有審計方案.基于區(qū)塊鏈的云數(shù)據(jù)公有驗(yàn)證框架根據(jù)DO是否參與驗(yàn)證流程分為在線驗(yàn)證框架以及離線驗(yàn)證框架兩種,具體工作流程如圖5所示.在在線驗(yàn)證框架中,DO在完成數(shù)據(jù)的預(yù)處理后會將驗(yàn)證元信息存儲在區(qū)塊鏈上.在驗(yàn)證階段,挑戰(zhàn)由參與驗(yàn)證過程的DO生成,并分別發(fā)送給TPA與CSP,TPA會從區(qū)塊鏈上取得驗(yàn)證元信息以及完整性驗(yàn)證證據(jù),并進(jìn)行后續(xù)的驗(yàn)證計算.離線驗(yàn)證框架與離線驗(yàn)證框架不同,DO不會參與驗(yàn)證計算,而區(qū)塊鏈又僅承擔(dān)存儲任務(wù)不承擔(dān)計算任務(wù),因此通常的解決方式是CSP會根據(jù)事先約定定期生成驗(yàn)證元數(shù)據(jù)并將驗(yàn)證元數(shù)據(jù)發(fā)送到區(qū)塊鏈上,之后由TPA讀取區(qū)塊鏈取得完整性驗(yàn)證證據(jù)進(jìn)行驗(yàn)證,從這樣就免去的挑戰(zhàn)生成的過程.
圖5 基于區(qū)塊鏈的云數(shù)據(jù)公有驗(yàn)證模型Fig.5 Blockchain-based public validating model for cloud data
在在線驗(yàn)證框架中,DO發(fā)起挑戰(zhàn)傳輸給CSP后,CSP根據(jù)挑戰(zhàn)信息生成完整性驗(yàn)證證據(jù)發(fā)送給區(qū)塊鏈,完整性驗(yàn)證性證據(jù)經(jīng)過打包和驗(yàn)證鏈接在區(qū)塊鏈上后TPA才能從區(qū)塊鏈中取得證據(jù),帶來了較大的時延.離線驗(yàn)證框架的主要問題是重放攻擊問題,因?yàn)橥暾则?yàn)證證據(jù)的計算已經(jīng)事先約定好,CSP可以一次性計算出所有的完整性驗(yàn)證證據(jù)后刪除數(shù)據(jù)塊,之后僅通過標(biāo)簽便可以通過完整性驗(yàn)證,這是因?yàn)橹胤殴敉峭ㄟ^每次挑戰(zhàn)中利用不同的隨機(jī)數(shù)來防御的.
Zhao[38]提出的方法需要TPA在審計的時候額外向CSP請求加密數(shù)據(jù)塊,這樣CSP若刪除了數(shù)據(jù)塊則無法通過驗(yàn)證,避免了重放攻擊,但是顯然方案的驗(yàn)證過程中存在數(shù)據(jù)塊的傳輸,未能實(shí)現(xiàn)無塊驗(yàn)證,通信開銷較高.Yu[39]提出了適用于車聯(lián)網(wǎng)環(huán)境下的基于區(qū)塊鏈的完整性驗(yàn)證框架SC-BOCSA.Yu提出在車聯(lián)網(wǎng)環(huán)境下車輛可能經(jīng)常處于離線階段,因此設(shè)計了一個離線驗(yàn)證模型以減少車輛在完整性驗(yàn)證過程中的參與程度,具體來說,在初始化階段,DO和CSP會協(xié)商3個參數(shù)以確定若干個時間戳來規(guī)定CSP計算完整性驗(yàn)證證據(jù)的時間點(diǎn),并根據(jù)時間戳來生成用于計算完整性驗(yàn)證的參數(shù).顯然可見CSP可以一次性生成后續(xù)所需的所有完整性驗(yàn)證證據(jù),可以刪除數(shù)據(jù)塊僅用完整性驗(yàn)證證據(jù)通過驗(yàn)證,造成重放攻擊.
Li[40]提出了一個在線公有驗(yàn)證模型,將加密數(shù)據(jù)塊的哈希值廣播到區(qū)塊鏈網(wǎng)絡(luò)中,在驗(yàn)證階段要求CSP根據(jù)存儲的數(shù)據(jù)塊計算出默克爾哈希樹的樹根返回給DO,同時區(qū)塊鏈中的其他節(jié)點(diǎn)可作為審計者,根據(jù)存儲在區(qū)塊鏈中的哈希值同樣計算出默克爾哈希樹的樹根返回給DO,審計者比較兩顆默克爾哈希樹的樹根值來驗(yàn)證完整性.因?yàn)閮H僅比較默克爾哈希樹的樹根存在重放攻擊的風(fēng)險,因此仍需要結(jié)合基于雙線性對的同態(tài)驗(yàn)證標(biāo)簽的驗(yàn)證,效率較低.
文獻(xiàn)[36]與文獻(xiàn)[37]中驗(yàn)證操作由DO執(zhí)行,故屬于私有審計.而在文獻(xiàn)[38-40]中,TPA(文獻(xiàn)[39]中由路側(cè)單元RSU擔(dān)任TPA進(jìn)行完整性審計)從區(qū)塊鏈中提取完整性驗(yàn)證證據(jù)后進(jìn)行審計,故實(shí)現(xiàn)了公有審計的功能,此外文獻(xiàn)[38,39]屬于離線審計框架,挑戰(zhàn)時間節(jié)點(diǎn)由三方事先約定好,無需DO或TPA發(fā)起審計,降低了DO的參與度.而文獻(xiàn)[40]屬于在線審計框架,需要DO生成挑戰(zhàn)并發(fā)送給CSP與TPA.文獻(xiàn)[39]設(shè)計了相應(yīng)的交易信息結(jié)構(gòu),結(jié)合提出的證據(jù)鏈可以實(shí)現(xiàn)更快的地從區(qū)塊鏈中提取信息,具有更高的效率和可用性.
隨著區(qū)塊鏈的發(fā)展,其不但可以提供去中心化的賬本存儲服務(wù),還可以結(jié)合智能合約提供靈活的、圖靈完備的腳本代碼系統(tǒng),以支持用戶對鏈上數(shù)據(jù)進(jìn)行處理,創(chuàng)建高級中心化應(yīng)用.因此將區(qū)塊鏈與云數(shù)據(jù)完整性驗(yàn)證結(jié)合的進(jìn)一步思路是將驗(yàn)證流程合約化,進(jìn)一步提高驗(yàn)證服務(wù)的去中心化程度,增強(qiáng)了協(xié)議的可靠性和功能性.
將驗(yàn)證流程合約化的模型結(jié)構(gòu)通常如圖6所示,DO進(jìn)行數(shù)據(jù)初始化及生成標(biāo)簽后,會分別將數(shù)據(jù)外包到CSS.因?yàn)楹霞s不能主動執(zhí)行發(fā)起挑戰(zhàn),所以仍需DO發(fā)起挑戰(zhàn),并將挑戰(zhàn)信息分別發(fā)送給區(qū)塊鏈以及CSP.模型中一般需要設(shè)計兩個智能合約:挑戰(zhàn)接收智能合約(CRSC)與完整性驗(yàn)證智能合約(IVSC),CRSC 負(fù)責(zé)接收DO的挑戰(zhàn)信息并將挑戰(zhàn)信息傳輸給IVSC,IVSC負(fù)責(zé)接受來自CSP的完整性驗(yàn)證證明、來自CRSC的挑戰(zhàn)信息,并從區(qū)塊鏈中讀取驗(yàn)證元信息后進(jìn)行驗(yàn)證計算,判定數(shù)據(jù)的完整性情況.
圖6 驗(yàn)證流程合約化模型Fig.6 Validating model using smart contract
Wang[41]額外設(shè)計了一個HVT存儲智能合約(HSSC),用來接收數(shù)據(jù)擁有者生成的同態(tài)驗(yàn)證標(biāo)簽,并在驗(yàn)證階段將相應(yīng)的同態(tài)驗(yàn)證標(biāo)簽發(fā)送給IVSC.Yue[42]提出了邊緣云存儲場景下的數(shù)據(jù)完整驗(yàn)證方案,在IVSC合約中需要進(jìn)行哈希運(yùn)算,而Wang所提出的方案中需要在IVSC中需要進(jìn)行雙線對運(yùn)算,需要更高的計算成本.與上述方案不同,Wang[43]使用智能合約來保證傭金與賠償金的強(qiáng)制支付,確保當(dāng)完整性驗(yàn)證通過時CSP能獲得DO所支付的費(fèi)用、完整性驗(yàn)證不通過時數(shù)據(jù)擁有著會得到CSP的賠償.同時為了減少智能合約執(zhí)行時的通信開銷,Wang還引入了非交互式的PDP結(jié)構(gòu),即去掉了挑戰(zhàn)階段,由CSP定期將完整性驗(yàn)證證據(jù)發(fā)送給驗(yàn)證者.
總而言之,文獻(xiàn)[41]和文獻(xiàn)[42]通過設(shè)計了智能合約實(shí)現(xiàn)了在鏈上對驗(yàn)證元信息的存取,以及對驗(yàn)證元信息和完整性驗(yàn)證證據(jù)的驗(yàn)證計算.文獻(xiàn)[43]實(shí)現(xiàn)了審計任務(wù)委托的合約化,使用智能合約監(jiān)測驗(yàn)證結(jié)果,保證了數(shù)據(jù)完好時CSP能獲取酬勞而數(shù)據(jù)損壞時用戶獲得賠償.上述文獻(xiàn)結(jié)合智能合約對驗(yàn)證流程實(shí)現(xiàn)了合約化,實(shí)現(xiàn)了去中心化驗(yàn)證,避免了中心化TPA驗(yàn)證帶來的單點(diǎn)故障風(fēng)險,同時結(jié)合智能合約自動強(qiáng)制執(zhí)行的特性,賦予了完整性驗(yàn)證協(xié)議額外的功能特性.
區(qū)塊鏈?zhǔn)且粋€去中心化的交易系統(tǒng),所有的交易都以交易記錄的形式被打包在區(qū)塊中然后鏈接在區(qū)塊鏈上,加之區(qū)塊鏈不可篡改的特性,實(shí)現(xiàn)了對區(qū)塊鏈系統(tǒng)中的每一筆交易的追溯.對于云數(shù)據(jù)完整性驗(yàn)證這一問題而言,一種可能場景是DO與CSP互不信任,CSP可能對數(shù)據(jù)損壞進(jìn)行抵賴,而DO可能在數(shù)據(jù)完好的是情況下對CSP進(jìn)行誣陷,這在傳統(tǒng)的解決方案下是無法處理的.而結(jié)合區(qū)塊鏈,可以對云數(shù)據(jù)完整性驗(yàn)證這一場景設(shè)計適配的交易信息結(jié)構(gòu),使得完整性協(xié)議中三方的通信可以在鏈上進(jìn)行,或以智能合約的方式,將三方的通信以交易信息的形式公開透明地存儲在了區(qū)塊鏈上,可以實(shí)現(xiàn)由任意一可信實(shí)體進(jìn)行審計,杜絕了共謀攻擊、誣陷等其他違反協(xié)議規(guī)定的行為.
將云數(shù)據(jù)完整性驗(yàn)證三方的交易信息上鏈,本質(zhì)上是將區(qū)塊鏈作為一個通信平臺.與其他方案中CSP從TPA或DO處取得挑戰(zhàn)信息、TPA從CSP處取得完整性驗(yàn)證證據(jù)等三方直接通信交換信息不同,將區(qū)塊鏈作為通信平臺的驗(yàn)證方案要求DO或TPA先將挑戰(zhàn)信息、CSP先將完整性驗(yàn)證證據(jù)發(fā)送到區(qū)塊鏈、然后CSP再從區(qū)塊鏈中取得挑戰(zhàn)信息、TPA再從區(qū)塊鏈中取得完整性驗(yàn)證證據(jù),具體流程如圖7所示.這樣通過將協(xié)議中的挑戰(zhàn)、證據(jù)生成、證據(jù)驗(yàn)證步驟都在鏈上進(jìn)行,保證了驗(yàn)證過程的公開透明以及可追溯.
圖7 區(qū)塊鏈作為通信平臺的驗(yàn)證方案Fig.7 Validating model using blockchain as communication platform
Lu[44]提出了一個基于聯(lián)盟鏈的云數(shù)據(jù)完整性審計方案,在上述思路的基礎(chǔ)上設(shè)計了一個TPA選擇算法,根據(jù)用戶對可靠性和響應(yīng)時間的不同需求快速為用戶推薦合適的TPA,通過維護(hù)一組TPA和TPA選擇算法實(shí)現(xiàn)了TPA的動態(tài)選擇,實(shí)現(xiàn)了去中心化審計,因此協(xié)議從另一個角度實(shí)現(xiàn)了對共謀攻擊的防御.Chen[45]提出協(xié)議參與者節(jié)點(diǎn)間維護(hù)一個區(qū)塊鏈,系統(tǒng)中的注冊信息、挑戰(zhàn)信息等會被礦工打包到區(qū)塊鏈中,并通過押金機(jī)制規(guī)范各方行為并保證公平性.Huang[46]結(jié)合云數(shù)據(jù)完整性驗(yàn)證這一場景設(shè)計了與之相匹配的基于信用分?jǐn)?shù)的共識算法以及激勵機(jī)制.此外,方案還提出了輔助鏈表(ACT)來方便驗(yàn)證者從區(qū)塊鏈中提取驗(yàn)證元信息,并支持?jǐn)?shù)據(jù)的動態(tài)操作.
Xu等[47,48]在上述基礎(chǔ)上結(jié)合智能合約實(shí)現(xiàn)了爭議仲裁,即在DO提出數(shù)據(jù)發(fā)生損壞的情況下,利用區(qū)塊鏈的可追溯特性,結(jié)合存儲在區(qū)塊鏈中的挑戰(zhàn)、完整性驗(yàn)證證據(jù)等通信信息,通過調(diào)用智能合約實(shí)現(xiàn)爭議仲裁,找出做出違反協(xié)議規(guī)定行為的一方,并按照事先約定對違規(guī)方進(jìn)行處罰.通常需要設(shè)計兩個合約來滿足爭議仲裁的需求.第1個合約負(fù)責(zé)實(shí)現(xiàn)CSP與DO對驗(yàn)證元信息的共識,當(dāng)發(fā)現(xiàn)數(shù)據(jù)與驗(yàn)證元信息不匹配的時候終止合約,第2個合約負(fù)責(zé)追溯區(qū)塊鏈中的交易數(shù)據(jù)來實(shí)現(xiàn)爭議仲裁.
文獻(xiàn)[44]利用Fabric聯(lián)盟鏈特性實(shí)現(xiàn)了對用戶身份信息的保護(hù),但是聯(lián)盟鏈并未為提供證據(jù)驗(yàn)證等計算服務(wù),而在文獻(xiàn)[45,46]中驗(yàn)證計算由區(qū)塊鏈執(zhí)行.文獻(xiàn)[44-48]將驗(yàn)證元數(shù)據(jù)、挑戰(zhàn)信息等其他通信信息都在鏈上進(jìn)行,使協(xié)議運(yùn)行更加公開透明.文獻(xiàn)[47,48]在通信信息上鏈的基礎(chǔ)上設(shè)計了具有爭議仲裁功能的智能合約,能夠防止用戶在數(shù)據(jù)完好的情況下誣陷CSP以及在數(shù)據(jù)損壞的情況下CSP對數(shù)據(jù)損壞進(jìn)行抵賴.
對上述文獻(xiàn)以2.1.3節(jié)所述功能目標(biāo)為依據(jù)的對比分析如表2所示.其中“-”表示其模型為私有驗(yàn)證模型無TPA,不存在共謀攻擊問題.
表2 基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證框架總結(jié)與對比分析Table 2 Summary and comparative analysis ofBlockchain-based integrity validating framework
基于上述對文獻(xiàn)的比較分析,本文認(rèn)為未來基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證方案的研究應(yīng)集中于以下幾點(diǎn):
1)對數(shù)據(jù)恢復(fù)的支持.現(xiàn)有方案很少考慮對數(shù)據(jù)恢復(fù)的支持,然而在實(shí)際的云存儲服務(wù)場景下,僅僅保證文件損壞能夠被發(fā)現(xiàn)是不夠的,還應(yīng)該考慮數(shù)據(jù)損壞后如何進(jìn)行數(shù)據(jù)恢復(fù),因?yàn)镈O在將文件上傳到CSP后往往會將本地文件刪除.傳統(tǒng)方案采用糾錯碼或糾刪碼[49,50]對文件進(jìn)行編碼來解決數(shù)據(jù)可恢復(fù)證明(Proof of Retrievabilty,POR)問題,通過容錯技術(shù)使得文件損壞后能被恢復(fù).然而容錯編碼會導(dǎo)致文件的大小膨脹,如何利用區(qū)塊鏈的特性來優(yōu)化解決POR問題是一個值得研究的方向.
2)降低DO獲得驗(yàn)證結(jié)果的時延.使用分布式區(qū)塊鏈網(wǎng)絡(luò)替代中心化TPA完成審計任務(wù)時,雖然能有效地避免單點(diǎn)故障的風(fēng)險,但是只有在驗(yàn)證結(jié)果被寫入到區(qū)塊鏈時,甚至還需經(jīng)過多個區(qū)塊的驗(yàn)證后,用戶才能得到可靠的驗(yàn)證結(jié)果.在用戶需要及時了解數(shù)據(jù)狀態(tài)的場景下,這種時延是不能接受的,甚至?xí)e過數(shù)據(jù)恢復(fù)的時機(jī).一方面可以通過根據(jù)云數(shù)據(jù)完整性驗(yàn)證的場景設(shè)計更加適配更加高效的共識算法來降低時延,另一方面可以通過綜合考慮DO對可靠性和驗(yàn)證時延的需求,動態(tài)調(diào)整共識算法.
3)對數(shù)據(jù)動態(tài)操作的支持.現(xiàn)有的方案往往采用默克爾哈希樹作為動態(tài)數(shù)據(jù)結(jié)構(gòu)來支持?jǐn)?shù)據(jù)的動態(tài)操作,但是基于默克爾哈希樹的支持?jǐn)?shù)據(jù)動態(tài)操作方案往往具有較大的通信與計算開銷.一方面,默克爾哈希樹由CSP維護(hù),但是CSP是不可信的,每次動態(tài)操作后都需要驗(yàn)證CSP是否對哈希樹做了相應(yīng)的正確的修改,帶來了額外的計算和通信開銷.另一方面默克爾哈希樹的調(diào)整和存儲帶來的計算和存儲開銷也會隨著數(shù)據(jù)量的增加而增大.如果采用由TPA維護(hù)的線性表結(jié)構(gòu)作為動態(tài)數(shù)據(jù)結(jié)構(gòu),如索引哈希表、信息鏈表等,由區(qū)塊鏈來維護(hù)這些數(shù)據(jù)結(jié)構(gòu)也會帶來額外的問題.在數(shù)據(jù)發(fā)生動態(tài)操作后,線性表中的相應(yīng)的行數(shù)據(jù)也要發(fā)生改變,然而區(qū)塊鏈?zhǔn)且粋€僅允許添加操作的數(shù)據(jù)庫,如何使用區(qū)塊鏈維護(hù)一個時常發(fā)生變動的表結(jié)構(gòu)并保證能夠高效率地檢索來支持高效的數(shù)據(jù)動態(tài)操作是一個較為重要的研究方向.
4)協(xié)議的攻擊與防御.將區(qū)塊鏈技術(shù)與云數(shù)據(jù)完整性驗(yàn)證相結(jié)合,可以將區(qū)塊鏈的去中心化、可追溯等特性賦予給云數(shù)據(jù)完整性驗(yàn)證協(xié)議,但是影響區(qū)塊鏈的一些安全問題,諸如雙重花費(fèi)攻擊、分布式拒絕攻擊、自私挖礦攻擊、區(qū)塊扣留攻擊等,也會給協(xié)議帶來額外的安全隱患.目前很少有對區(qū)塊鏈的安全問題會如何影響云數(shù)據(jù)完整性驗(yàn)證的相關(guān)研究,因此對于如何通過攻擊區(qū)塊鏈來對云數(shù)據(jù)完整性驗(yàn)證協(xié)議進(jìn)行攻擊以及相關(guān)的防御措施是一個具有重要研究意義的研究方向.
將區(qū)塊鏈技術(shù)與云數(shù)據(jù)完整性驗(yàn)證相結(jié)合,可以增加完整性驗(yàn)證協(xié)議的可靠性與穩(wěn)定性,杜絕單點(diǎn)故障的風(fēng)險,還可以使協(xié)議的運(yùn)行公開透明,當(dāng)協(xié)議執(zhí)行異常的時候可以追溯到違反協(xié)議的一方.區(qū)塊鏈可以為傳統(tǒng)的基于中心化TPA的完整性驗(yàn)證方案的一些固有缺陷提供切實(shí)有效的解決思路,具有廣闊的應(yīng)用前景以及極高的研究價值.
本文對基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證方案做了較為詳盡的綜述.本文首先介紹了區(qū)塊鏈以及云數(shù)據(jù)完整性驗(yàn)證的相關(guān)背景,然后根據(jù)區(qū)塊鏈與云存儲數(shù)據(jù)完整性驗(yàn)證協(xié)議結(jié)合的不同方式對相應(yīng)文獻(xiàn)做了歸類整理與比較分析,最后指出了未來基于區(qū)塊鏈的云數(shù)據(jù)完整性驗(yàn)證方案這一研究領(lǐng)域中具有較高價值的研究方向.