王棟 邊根慶 李睿堯
摘 要:針對云計算多副本存儲的情況與傳統(tǒng)的全量存儲對云存儲空間消耗巨大的問題,尤其改動頻繁的大容量文件對存儲空間的消耗更大。因此文中對基于增量存儲的多副本文件版本控制方法進行研究,支持多副本文件版本控制管理。數(shù)據(jù)所有者加密數(shù)據(jù),創(chuàng)建多個副本并將其存儲在云端,當更新數(shù)據(jù)時,數(shù)據(jù)文件不會被直接更新,而是將更新保存為增量。通過實驗仿真,對比了文件版本傳遞算法在不同配置運行環(huán)境下的CSP計算開銷,驗證了本方法的高效性和可用性。
關(guān)鍵詞:云存儲;多副本;文件版本控制;CSP
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2017)09-00-03
0 引 言
在云存儲[1,2]中,數(shù)據(jù)所有者對CSP端文件的每一次動態(tài)更新操作都是DO與CSP之間的多次交互,而在云存儲平臺中每次發(fā)生版本更新更迭,系統(tǒng)都會將歷史版本保存下來以響應(yīng)用戶的版本恢復請求。在多副本的情況下,傳統(tǒng)的全量存儲方式對云存儲平臺存儲空間消耗巨大,尤其對改動頻繁的大容量文件會消耗更大的存儲空間,因此文件的全量存儲方式對于多副本文件是不可取的[3,4]。
為了解決上述問題,緩解云存儲平臺的存儲空間,本文采用增量存儲方式來存儲多副本文件版本的信息[5,6]。增量存儲的基本思想是僅存儲最新版本與基本版本之間的差異信息(以下稱之為增量),由基本版本和增量構(gòu)成版本信息。目前有正增量和逆增量兩種存儲模型[7,8]。
1 增量存儲模型
(1)正增量存儲模型
在正增量存儲模型中,Vi+1=Vi+Δi │條件,i≥0,當i= 0時為原始版本。Δi │條件是在Vi基礎(chǔ)上通過操作條件修改得到差異信息,即只存儲原始版本的完整數(shù)據(jù),而后繼版本只保存其與前一版本的增量[9],如圖1所示。
(2)逆增量存儲模型
在逆增量存儲模型中,只存儲最新版本的完整數(shù)據(jù),其余歷史版本則只存儲與后繼版本之間的增量信息,即Vi存儲Vi+1和Vi之間的增量Δi │條件,最后一個版本存儲其完整內(nèi)容。
2 文件版本控制
數(shù)據(jù)所有者將文件劃分為多個文件塊,并為文件塊產(chǎn)生多個副本和數(shù)據(jù)標簽,且每個副本可唯一標識。文件塊的多個副本由同態(tài)概率加密方法生成,文件塊的數(shù)據(jù)標簽由BLS簽名生成,將文件塊副本和文件塊的數(shù)據(jù)標簽發(fā)送到云端。這些文件塊的加密副本表示未加密文件塊的基本版本,對未加密文件塊當前版本的每一次修改都將產(chǎn)生新的版本,新版本的文件塊不直接存儲在云端,只存儲增量,增量為未加密文件塊的新版本與基本版本之間的差異。當需要文件塊的特定版本時,數(shù)據(jù)所有者請求云端將增量塊與文件塊的基本版本合并,從而得到文件塊所需版本。
文件版本表由五部分組成,分別為塊號(BN)、增量塊號(DBN)、文件版本(FV)、塊版本(BV)、塊操作(BO)。
(1)BN表示文件塊的索引,描述了文件塊在數(shù)據(jù)文件中的物理位置。
(2)DBN是增量塊的索引,如果增量不存在,則該值存儲為“-”。
(3)FV表示整個文件的版本。
(4)BV表示文件塊的版本。
(5)BO指出了對文件塊執(zhí)行操作的類型。
FV的最大值表示文件的最新版本,并且對于特定的BN,其BV的最大值表示該文件塊的最新版本。如果在文件版本表中沒有找到文件塊號的條目,則意味著沒有對文件塊的基本版本進行更新操作,且文件的基本版本和最新版本的文件塊相同。當對塊號為b、文件版本為v和文件塊版本為y的文件塊進行修改時,數(shù)據(jù)所有者可以選擇將整個文件的版本更改為v + 1或保持原版本不變。對于這兩種情況,數(shù)據(jù)所有者在文件版本表中創(chuàng)建一個新條目。在第一種情況下,表條目將是,并且對于第二種情況,表條目將是,見表1所列。
數(shù)據(jù)所有者使用文件版本表來跟蹤記錄文件塊的版本更新情況,用來驗證CSP存儲的所有文件及其版本的完整性和一致性。當數(shù)據(jù)所有者對文件塊執(zhí)行更新操作時,將會生成新版本的文件塊,數(shù)據(jù)更新操作包括文件塊插入、刪除或修改,當且僅當數(shù)據(jù)更新操作是“修改”時才會生成增量塊,一旦更新操作完成,數(shù)據(jù)所有者就會更新文件版本表,文件版本表僅在數(shù)據(jù)所有者端維護,有助于數(shù)據(jù)所有者隱藏CSP執(zhí)行更新操作的詳細信息。
3 算法設(shè)計
3.1 文件版本動態(tài)更新
本文的文件版本動態(tài)更新操作由更新請求算法PrepareUpdate()和更新執(zhí)行算法ExecUpdate()來執(zhí)行,對應(yīng)的請求操作包括數(shù)據(jù)塊修改、數(shù)據(jù)塊插入和數(shù)據(jù)塊刪除。文件版本修改操作如圖2所示。
3.1.1 更新請求算法
更新請求算法:PrepareUpdate()→Update。本算法在數(shù)據(jù)所有者端運行,對遠程CSP存儲的外包文件副本執(zhí)行更新操作,算法的輸出是更新請求。數(shù)據(jù)所有者將更新請求以
(1)數(shù)據(jù)插入:對文件F的任一版本“v”的插入操作意味著在文件中插入新的文件塊。數(shù)據(jù)所有者決定新文件塊所屬的文件版本,可以是當前文件版本v或者是下一個文件版本v+1。如果新文件塊添加到文件版本“v+1”,則“v+1”就是文件的新版本,在文件版本表中創(chuàng)建一個新記錄為
(2)數(shù)據(jù)修改:對最新版本的文件塊進行修改。數(shù)據(jù)所有者識別需要修改的文件塊塊號,并在文件版本表中搜索塊號,如果沒有找到特定塊號記錄,那么從云中下載來自基本版本的文件塊。如果找到了目標記錄,那么識別出文件塊的最新版本并從云端下載,文件塊的最新版本就是解密下載的基本版本的文件塊與增量合并得到的文件塊版本。對明文進行修改操作以獲得更新后的明文,數(shù)據(jù)所有者將計算更新的明文和基本版本明文之間的差異作為新的增量,然后將增量隨機化,并將其發(fā)送到云端。隨機化的目的在于不向云端暴露增量值。令M={bi},其中1≤i≤s是更新操作之前的文件塊集合,M'={bi'},1≤i≤s是更新操作之后的文件塊,增量?M值為{bi'-bi},1≤i≤s。使用由PRF密鑰Keydata生成的隨機數(shù)來對增量進行隨機化,因此,?M={bi'-bi+N-xi},1≤i≤s。最后將M值發(fā)送到云端。
(3)數(shù)據(jù)刪除:對文件“v”的任一版本的刪除操作意味著從文件中刪除幾個文件塊。數(shù)據(jù)所有者可以從當前版本v刪除文件塊,或者從下一版本v+1中刪除文件塊。且數(shù)據(jù)所有者在文件版本表中創(chuàng)建一條記錄
3.1.2 更新執(zhí)行算法
更新執(zhí)行算法:ExecUpdate (F,φ,Update)→(F',φ')。本算法在CSP端運行,輸入?yún)?shù)為文件副本F、標簽φ和更新請求(由數(shù)據(jù)所有者發(fā)送)。輸出為新的文件副本F'以及更新的標簽φ'。在每次塊操作之后,數(shù)據(jù)所有者運行挑戰(zhàn)協(xié)議以確保云端正確執(zhí)行了更新操作,更新請求中的操作可以是插入新的文件塊或修改文件塊,數(shù)據(jù)所有者不向云端發(fā)送任何刪除請求,因此不會刪除任何數(shù)據(jù)塊。
3.2 文件版本請求與文件版本傳遞
數(shù)據(jù)所有者創(chuàng)建文件版本表跟蹤數(shù)據(jù)更新操作,此表中的記錄數(shù)值取決于對文件塊進行動態(tài)操作的數(shù)量。文件更新作為增量存儲在云端,為了獲得文件的特定版本,數(shù)據(jù)所有者將帶有兩個參數(shù)
(1)FileVersionRequest:數(shù)據(jù)所有者通過檢查文件版本表來識別所需版本的文件塊,并使用塊編號以
(2)FileVersionDeliver:對于“FileVersionRequest”中DBN值為“-”的所有文件塊號,將該文件的基本版本傳遞給數(shù)據(jù)所有者,如果具有有效的DBN值,則CSP利用公鑰對增量進行加密,并對基本版本的文件塊進行同態(tài)加法運算,最后得到數(shù)據(jù)所有者請求版本的文件塊。令?M={bi'-bi+N-xi},1≤i≤s是與數(shù)據(jù)所有者請求的相應(yīng)文件版本的文件塊相關(guān)聯(lián)的增量,加密的增量E(?M)={(1+(bi'-bi+N-xi)N(r)N},其中,r∈ZN*是隨機數(shù)。最后,云端對文件基本版本上所請求的文件塊執(zhí)行同態(tài)加法操作。同態(tài)加法之后得到的文件塊表示數(shù)據(jù)所有者所請求版本的加密文件塊,將加密的文件塊發(fā)送給數(shù)據(jù)所有者,數(shù)據(jù)所有者對文件塊進行解密,從而獲得其請求的版本。
4 算法性能分析
4.1 實驗環(huán)境
本文主要驗證文件版本傳遞算法的CSP計算開銷,對1MB文件在本地計算機、不同配置的虛擬機環(huán)境下進行實驗。本地計算機實驗環(huán)境為Intel(R) Core(TM) i7-6700HQ 2.60GHz處理器、16 GB RAM;虛擬機實驗環(huán)境1具有單核處理器,2 GB內(nèi)存,200 GB硬盤空間;虛擬機實驗環(huán)境2具有雙核虛擬處理器,8 GB內(nèi)存,500 GB硬盤空間。
4.2 文件版本傳遞算法CSP計算開銷比較
圖3中FileVersionRequest的數(shù)量用文件塊的百分比表示。例如,1 MB文件具有8 192個大小為128 B的文件塊。當數(shù)據(jù)所有者發(fā)送81個FileVersionRequest時,CSP加密81個增量塊(8 192個文件塊的1%),并執(zhí)行81次同態(tài)加法運算。因此任何數(shù)目的FileVersionRequest將導致CSP對這些文件塊執(zhí)行操作,并且FileVersionRequest可以用文件塊的數(shù)目來表示。MRFVCM(Multiple Replica File Version Control Method,MRFVCM)在數(shù)據(jù)所有者端不涉及執(zhí)行FileVersionDeliver算法的任何計算,數(shù)據(jù)所有者的唯一成本是維護文件版本表。圖3顯示了在本地計算機和不同配置的虛擬機環(huán)境上運行FileVersionDeliver算法的CSP計算時間的比較。FileVersionDeliver算法的CSP計算時間定義為CSP將所請求版本的文件塊傳遞給數(shù)據(jù)所有者所花費的時間。FileVersionDeliver算法在本地計算機上執(zhí)行得更好,因為它的配置最高。
5 結(jié) 語
本文支持多副本文件版本管理,首先構(gòu)建了文件版本表,該表由數(shù)據(jù)所有者運行維護;其次,詳細闡述了用戶申請?zhí)囟ò姹镜紺SP執(zhí)行文件版本傳遞算法的詳細過程;最后通過實驗仿真,對比了文件版本傳遞算法在不同配置運行環(huán)境下的CSP計算開銷,驗證了本算法的高效性和可用性。
參考文獻
[1] Wu Xiao-yong,Li Hui-na. Remote backup system based on file type [J]. NetWork & Computer Security,2012( 3) : 40-42.
[2] He Qian,Zhuo Bi-hua. A remote file synchronization method[J]. Journal of Computer Applications,2012,32( 2) : 566-568.
[3] 陳康, 鄭緯民.云計算:系統(tǒng)實例與研究現(xiàn)狀[J].軟件學報,2009,20(5):1337-1348.
[4] 薛一波,易成岐.云存儲(1)[J].中興通訊技術(shù), 2012,18(1):57-60.
[5] 高林, 宋相倩,王潔萍.云計算及其關(guān)鍵技術(shù)研究[J].微型機與應(yīng)用,2011,30(10):5-7.
[6] FENG DengGuo, ZHANG Min, ZHANG Yan,等.云計算安全研究[J].軟件學報,2011, 22(1):71-83.
[7] 周可,王樺,李春花.云存儲技術(shù)及其應(yīng)用[J]. 中興通訊技術(shù),2010,16(4):24-27.
[8] 張蓮,李京,劉煒清.云同步系統(tǒng)中采用增量存儲的版本控制技術(shù)研究[J].小型微型計算機系統(tǒng),2015,36(3):427-432.