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