苗 麗,彭月英
(1.廣西經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院,廣西 南寧 530021;2.廣西師范學(xué)院,廣西 南寧 530023)
在云計(jì)算模式下,靜態(tài)數(shù)據(jù)以存儲(chǔ)為主要目的,用戶只需將數(shù)據(jù)和應(yīng)用進(jìn)行托管.云計(jì)算大規(guī)模、高可擴(kuò)展性及按需服務(wù)等特點(diǎn),與傳統(tǒng)IT技術(shù)相比,都有著明顯的優(yōu)勢(shì).但是自云計(jì)算誕生以來(lái),發(fā)生的很多安全事件讓云用戶對(duì)云存儲(chǔ)產(chǎn)生了很多的不信任.由于這種數(shù)據(jù)外包的服務(wù)使用戶失去了對(duì)數(shù)據(jù)的控制,對(duì)用戶而言,托管至云端的數(shù)據(jù)一般不再保存數(shù)據(jù)副本,這對(duì)數(shù)據(jù)的安全存儲(chǔ)來(lái)說(shuō)無(wú)疑是一個(gè)隱患.畢竟云服務(wù)商的可信性不可評(píng)估:首先,存在不可預(yù)知的云服務(wù)器機(jī)械故障或管理失責(zé);其次,云服務(wù)商若發(fā)生數(shù)據(jù)破壞,會(huì)盡量隱瞞,是半可信的;再次,即使用戶追究云服務(wù)商的責(zé)任,由于涉及商業(yè)機(jī)密,調(diào)查細(xì)節(jié)往往難以實(shí)現(xiàn)[1].那么如何建立用戶對(duì)云端靜態(tài)數(shù)據(jù)存儲(chǔ)的信任,促成數(shù)據(jù)合法并安全的使用,數(shù)據(jù)可信存儲(chǔ)便成了需要解決的關(guān)鍵問(wèn)題.
云計(jì)算采用虛擬化技術(shù),虛擬軟件的安全、虛擬服務(wù)器和客戶端的安全均是研發(fā)人員所面臨的挑戰(zhàn),云安全方面的研究主要集中在三個(gè)方面:數(shù)據(jù)的保密性,查詢隱私保護(hù)和數(shù)據(jù)的完整性.而其中用戶數(shù)據(jù)完整性主要是指存儲(chǔ)在云端的數(shù)據(jù)有沒(méi)有被隨意篡改、刪除或者偽造,數(shù)據(jù)的完整性是數(shù)據(jù)安全中最基本的安全要求,現(xiàn)階段數(shù)據(jù)完整性保護(hù)的研究領(lǐng)域主要集中在外包數(shù)據(jù)庫(kù)、數(shù)據(jù)發(fā)布、遠(yuǎn)程存儲(chǔ)以及云存儲(chǔ)相關(guān)領(lǐng)域.鑒于云服務(wù)商的半可信性特點(diǎn),用戶必須定期對(duì)數(shù)據(jù)進(jìn)行測(cè)試,尤其是對(duì)于長(zhǎng)時(shí)間沒(méi)有被訪問(wèn)的數(shù)據(jù),當(dāng)用戶訪問(wèn)時(shí)才發(fā)現(xiàn)文件被篡改或者丟失,就為時(shí)已晚.對(duì)用戶來(lái)說(shuō),將數(shù)據(jù)存儲(chǔ)在云端,希望保證數(shù)據(jù)的完整狀態(tài),而且當(dāng)數(shù)據(jù)被破壞時(shí),希望知道并且可以定位出哪臺(tái)數(shù)據(jù)服務(wù)器有問(wèn)題,從而追究云服務(wù)商的責(zé)任,進(jìn)而最大程度的進(jìn)行數(shù)據(jù)補(bǔ)救.
云計(jì)算中對(duì)數(shù)據(jù)完整性測(cè)試可以分為兩個(gè)方面:數(shù)據(jù)擁有者和非數(shù)據(jù)擁有者對(duì)數(shù)據(jù)的完整性測(cè)試.數(shù)據(jù)擁有者是指?jìng)€(gè)人或企業(yè),非數(shù)據(jù)擁有者一般是第三方.已有的完整性測(cè)試方案有:
1)PDP(Provable Data Possression).
該方案是測(cè)試遠(yuǎn)程數(shù)據(jù)的完整性方案,可以檢測(cè)到外包數(shù)據(jù)中大于某個(gè)比例的數(shù)據(jù)破壞.用戶通過(guò)對(duì)服務(wù)器發(fā)送挑戰(zhàn)值進(jìn)行數(shù)據(jù)測(cè)試,服務(wù)器收到挑戰(zhàn)之后,隨時(shí)抽樣生成概率性的測(cè)試結(jié)果,最終反饋給用戶.
2)POR(Proof of Retrievability).
該方案是可證明性數(shù)據(jù)恢復(fù)方案,事先在數(shù)據(jù)文件上植入一些數(shù)據(jù)塊,用來(lái)檢測(cè)數(shù)據(jù)文件是否被篡改,在隨機(jī)抽樣生成的概率性結(jié)果的基礎(chǔ)上,再結(jié)合糾錯(cuò)碼,最終對(duì)被破壞的數(shù)據(jù)進(jìn)行一定程度的修復(fù).
3)基于哈希樹(shù)驗(yàn)證結(jié)構(gòu)的方法.
哈希完整驗(yàn)證方法需要用戶存儲(chǔ)所有數(shù)據(jù)文件用來(lái)計(jì)算哈希值,這本身與用戶使用云存儲(chǔ)的目的相違背,而且測(cè)試一次都需要下載整個(gè)文件,通信開(kāi)銷較大.所以,基于哈希計(jì)算的完整性測(cè)試不適用于云計(jì)算環(huán)境.
4)副本修復(fù)策略.
副本修復(fù)策略是系統(tǒng)為對(duì)象創(chuàng)建副本后,系統(tǒng)試圖在整個(gè)過(guò)程中修復(fù)維護(hù)對(duì)象的副本.有兩種不同的修復(fù)策略:一種是主動(dòng)修復(fù)策略,檢測(cè)到任何一份備份“死去”就立刻創(chuàng)建新的副本;另一種是基于閾值的修復(fù)策略,只有當(dāng)備份數(shù)量小于某些閾值才修復(fù),如Total Re-call[2].
云計(jì)算中靜態(tài)數(shù)據(jù)可信存儲(chǔ)的關(guān)鍵在于數(shù)據(jù)的完整性,包括租戶與云服務(wù)器之間傳輸數(shù)據(jù)時(shí)的數(shù)據(jù)完整性和已在云端保存的數(shù)據(jù)的完整性.針對(duì)云服務(wù)商的信譽(yù)和技術(shù),用戶和云服務(wù)商之間需要形成一定的測(cè)試規(guī)則.對(duì)用戶而言,希望能夠及時(shí)了解云端數(shù)據(jù)的完整性狀態(tài),當(dāng)數(shù)據(jù)出現(xiàn)不完整信息的反饋時(shí),用戶能夠及時(shí)確定是哪一臺(tái)服務(wù)器上的數(shù)據(jù),并且希望能夠?qū)?shù)據(jù)進(jìn)行較高比例的修復(fù).筆者致力于設(shè)計(jì)更為有效的完整性測(cè)試算法,利用某種形式的挑戰(zhàn)-應(yīng)答協(xié)議[1],用戶可以及時(shí)了解數(shù)據(jù)的完整性情況,還能夠在部分?jǐn)?shù)據(jù)出現(xiàn)損壞時(shí),僅用少量數(shù)據(jù)便能夠進(jìn)行最大程度的修復(fù)[3],此設(shè)計(jì)還巧妙的引入第三方機(jī)制,有效地防止云服務(wù)商對(duì)數(shù)據(jù)破壞的隱瞞,從而進(jìn)一步達(dá)到數(shù)據(jù)可信存儲(chǔ)的目標(biāo).
數(shù)據(jù)可信存儲(chǔ)的架構(gòu)包含三類實(shí)體:租戶、第三方服務(wù)器和云端服務(wù)器(如圖1所示).租戶端即將大量數(shù)據(jù)存儲(chǔ)在云端的租戶,也是完整性測(cè)試方案的實(shí)施者;第三方是租戶和服務(wù)商進(jìn)行通信的一個(gè)可信的媒介,能夠?qū)τ脩暨M(jìn)行身份認(rèn)證,并且可以根據(jù)用戶發(fā)出的響應(yīng)值對(duì)數(shù)據(jù)完整性進(jìn)行測(cè)試,并將測(cè)試結(jié)果返回給租戶;云端存儲(chǔ)服務(wù)器用來(lái)存儲(chǔ)用戶的數(shù)據(jù)[4].
圖1 完整性測(cè)試方案架構(gòu)Fig.1Integrity verification solution architecture
基于可證明性測(cè)試方案和數(shù)字簽名的啟發(fā),筆者提出的完整性測(cè)試方案采用多副本存儲(chǔ),在整個(gè)完整性測(cè)試過(guò)程中,包括3個(gè)初始化函數(shù),3個(gè)完整性測(cè)試函數(shù)和1個(gè)數(shù)據(jù)修復(fù)函數(shù).假設(shè)用F表示租戶要保存在云端服務(wù)器上的文件.
1)密鑰生成函數(shù)[1]:Setup(π)→(Pk,Sk),該函數(shù)由租戶設(shè)置,輸入值為安全參數(shù)π,生成租戶的公開(kāi)密鑰Pk和秘密密鑰Sk,Sk由租戶自己保存,Pk被公開(kāi).
2)副 本 生 成 算 法[6]:Duplicate (F,Sk,s,n,m)→ (F1,F(xiàn)2,…,F(xiàn)s).租戶在客戶端采用副本生成算法對(duì)源數(shù)據(jù)進(jìn)行加密,生成s個(gè)加密副本,再將加密副本劃分成n個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊劃分為m個(gè)子塊.加密密鑰Sk只有1個(gè),所以要想得到s個(gè)不同的副本,可以將副本序號(hào)與文件進(jìn)行連接,然后采用AES等,諸如此類具有強(qiáng)混淆能力的算法進(jìn)行加密.
綜上,租戶如果需要解密從云端服務(wù)器獲得的數(shù)據(jù),那么只需要保存一個(gè)Sk就能可以做到,在一定程度上保證了數(shù)據(jù)不被非法用戶使用,也為后期的數(shù)據(jù)恢復(fù)做好準(zhǔn)備.由此得到,每個(gè)副本又被分解為:
3)測(cè)試碼生成函數(shù):Key(Pk,Sk,F(xiàn))→ Key,該函數(shù)由租戶設(shè)置,以Pk,Sk,F(xiàn)為輸入,輸出為對(duì)文件F的一個(gè)測(cè)試碼Key.租戶將Key公開(kāi)為面向第三方的數(shù)據(jù)完整性公開(kāi)測(cè)試.
4)挑戰(zhàn)函數(shù):Chal(X)→Chal:該函數(shù)在租戶端執(zhí)行,輸入為隨機(jī)函數(shù)X,輸出值為挑戰(zhàn)值Chal,請(qǐng)求第三方開(kāi)展對(duì)文件F的完整性證明.
5) 響 應(yīng) 函 數(shù):Response(Pk,F(xiàn),Chal) →Ture/Res,該函數(shù)由第三方執(zhí)行,以公開(kāi)密鑰Pk、F和挑戰(zhàn)值為輸入,如果測(cè)試通過(guò),返回正確信息給租戶,如果測(cè)試沒(méi)通過(guò),則以Pk和F1…Fs數(shù)據(jù)分塊為輸入,將輸出響應(yīng)值Res發(fā)送至租戶端,由租戶確定哪個(gè)數(shù)據(jù)分塊出錯(cuò).
6)測(cè)試函數(shù)[1]:Verify(Res,Key)→ Ture/False,該函數(shù)在租戶端執(zhí)行,輸入值為響應(yīng)值Res和測(cè)試碼Key,輸出為對(duì)響應(yīng)Res的測(cè)試結(jié)果.若結(jié)果為True,則表明第i個(gè)數(shù)據(jù)分塊Fi的完整性測(cè)試通過(guò),基于文獻(xiàn)[7]提出的SESS秘密共享方案的性質(zhì),證明該文件分塊沒(méi)有問(wèn)題;當(dāng)測(cè)試結(jié)果為False時(shí),則說(shuō)明測(cè)試的第i(1≤i≤s)個(gè)數(shù)據(jù)塊發(fā)生了損壞.這時(shí)可以利用文件F的冗余性,如果測(cè)試結(jié)果為False,則執(zhí)行n=n+1,以此來(lái)測(cè)試n與門限值ε的大小關(guān)系.
7)數(shù)據(jù)修復(fù)算法:Repair(Fj|1<j<n-k)→F/⊥:K為(1<k<n)的整數(shù),該函數(shù)以測(cè)試通過(guò)的n-k個(gè)副本為輸入,其中,ε是秘密共享方案的門限值,該算法執(zhí)行基于閾值的懶惰的修復(fù)策略[8],這種策略只有當(dāng)樣本數(shù)量小于某些閾值時(shí),才嘗試從云存儲(chǔ)服務(wù)器上恢復(fù)原始數(shù)據(jù).如果恢復(fù)成功,則輸出正確的數(shù)據(jù)文件,并進(jìn)行文件的重新存儲(chǔ);如果恢復(fù)失敗,則終止.
該方案借助第三方對(duì)云端數(shù)據(jù)進(jìn)行完整性測(cè)試,當(dāng)測(cè)試出現(xiàn)數(shù)據(jù)錯(cuò)誤時(shí),借助副本恢復(fù)機(jī)制進(jìn)行數(shù)據(jù)恢復(fù).整個(gè)方案首先需要租戶對(duì)公開(kāi)密鑰和私密密鑰進(jìn)行初始化,另外租戶在存儲(chǔ)文件的同時(shí)進(jìn)行副本的創(chuàng)建,保證數(shù)據(jù)不被非法用戶使用,也為后期的數(shù)據(jù)恢復(fù)做準(zhǔn)備,測(cè)試及恢復(fù)過(guò)程是由租戶向第三方發(fā)起測(cè)試挑戰(zhàn)值開(kāi)始的,第三方收到挑戰(zhàn)之后進(jìn)行云端數(shù)據(jù)的測(cè)試過(guò)程,如果測(cè)試通過(guò),返回正確信息給租戶,如果沒(méi)有通過(guò),則記錄錯(cuò)誤信息,并返回一系列響應(yīng)值給租戶,由租戶確定出錯(cuò)的數(shù)據(jù)塊,并確定損壞副本數(shù)量是否小于一定的閾值,如在閾值范圍內(nèi),則執(zhí)行數(shù)據(jù)恢復(fù)函數(shù)進(jìn)行文件修復(fù).
在該方案中,主要完成了兩大任務(wù):
一是由第三方完成數(shù)據(jù)的完整性測(cè)試,這樣在發(fā)生數(shù)據(jù)完整性問(wèn)題時(shí),云服務(wù)商的責(zé)任不可推卸;
二是完成一定程度的數(shù)據(jù)恢復(fù),當(dāng)挑戰(zhàn)次數(shù)低于一定的閾值ε就可以借助副本機(jī)制和秘密共享算法進(jìn)行數(shù)據(jù)恢復(fù),當(dāng)然如果挑戰(zhàn)次數(shù)大于閾值ε,則證明存儲(chǔ)的數(shù)據(jù)到了比較嚴(yán)重的損壞程度,則無(wú)法進(jìn)行修復(fù).
筆者提出的支持公開(kāi)驗(yàn)證和數(shù)據(jù)恢復(fù)的數(shù)據(jù)完整性測(cè)試方案為用戶提供了遠(yuǎn)程數(shù)據(jù)完整性證明和數(shù)據(jù)的可恢復(fù)性等安全機(jī)制,可以使用戶及時(shí)知道云上數(shù)據(jù)的完整性狀態(tài),較以往的方法相比,很好地解決了目前云服務(wù)商半可信性等問(wèn)題所帶來(lái)的隱患,并且當(dāng)數(shù)據(jù)損壞小于一定程度時(shí),可以借助副本機(jī)制以較高概率修復(fù)數(shù)據(jù),在一定程度上保證了云計(jì)算的可信存儲(chǔ).除此之外,如何保證用戶數(shù)據(jù)不被云服務(wù)商非法泄露,防止被非授權(quán)第三方使用也是需要進(jìn)一步研究的課題,而對(duì)于動(dòng)態(tài)數(shù)據(jù)的實(shí)時(shí)性完整性測(cè)試也是下一步需要研究的課題.
[1]劉婷婷.面向云計(jì)算的數(shù)據(jù)安全保護(hù)關(guān)鍵技術(shù)研究[D].鄭州:解放軍信息工程大學(xué),2013.
[2]BHAGWAN R,TATI K.Total recall:System support for automated availability management[C]∥NSDI.2004:337-350.
[3]賀元香,史寶明,張永.帶消息恢復(fù)功能的基于身份的代理簽名方案[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(4):313-315.
[4]李琳.云環(huán)境下多租戶數(shù)據(jù)完整性保護(hù)機(jī)制研究[D].濟(jì)南:山東大學(xué),2014.
[5]游歷.云端數(shù)據(jù)完整性測(cè)試和數(shù)據(jù)恢復(fù)機(jī)制研究[D].成都:電子科技大學(xué),2013.
[6]李超零,陳越,譚鵬許,等.基于同態(tài)hash的數(shù)據(jù)多副本持有性證明方案[J].計(jì)算機(jī)應(yīng)用研究,2013,30(1):266-268.
[7]Parakh A,Kak S.Space efficient secret sharing for implicit data security[J].Information Science s,2011,181(2):335-341.
[8]宮婧,王文君.大數(shù)據(jù)存儲(chǔ)中的容錯(cuò)關(guān)鍵技術(shù)綜述[J].南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2014,34(4):21-25.