文|李俊平,羅國星 電子科技大學計算機科學與工程學院
云存儲服務屬于基礎架構即服務(IaaS)的范疇,是云計算服務的最基本服務形式之一。在云存儲服務中,云服務提供商(CSP)為用戶提供無限量的空間供其存儲海量數據,并從中收取少量費用,這就為用戶省去了購買存儲設備的費用。一項調查結果顯示,56%的云用戶使用的是IaaS服務,并且絕大部分IaaS用戶使用的是云存儲服務和虛擬機租借服務。由此可見,云存儲服務在所有云服務中占據著非常重要的地位,可以為CSP帶來可觀的經濟收益。
然而,用戶在使用云存儲服務過程中也有很多擔憂。一項國外調查結果[1]顯示,81%的云用戶關注云數據的安全性和機密性,其中數據“安全性”指的是數據可靠性和完整性。顯然,數據安全性和機密性是云服務中用戶最關心的問題。
為了保證云端數據安全性,CSP(如Google,使用GFS[2]系統)會為每一份數據保存多份備份數據,當發生數據損壞時就可以從完整的數據副本里恢復出正確數據。顯然,備份數據越多數據越安全,但同時卻也降低了云存儲空間的有效利用率。此外,就機密性來說,一般情況下,用戶在存儲數據的時候會先將數據進行加密,然后將密文存于云端,這就可以避免數據信息泄露。
我們提出了一個空間高效的、面向用戶的、安全、可調節數據存儲方案。本方案基于Shamir秘密分享方案[3],可以在保證提供與GFS系統相同數據安全性的同時有效減少空間使用量。并且,本方案使得用戶可以估計自己數據安全性并以此為依據選擇備份數據的數量。該機制的引入對于用戶和CSP均有好處,對用戶來說,用戶可以租用適當的存儲空間,從而節約存儲費用;而對CSP來說,可以獲得更多的空間服務更大量的用戶。此外,本方案還可以為備份數據提供一定程度上的數據機密性。最后,在用戶下載數據的時候本方案可以提供不同安全級別的數據傳輸模式。
GFS[2]系統包括了兩個部分:Master服務器和Chunk服務器集群。其中,Master服務器負責與用戶的交互和對Chunk服務器集群的管理。而Chunk服務器集群負責存儲用戶的數據并接受Master服務器的調度和控制。當用戶存儲數據時,數據會被分成固定大小的數據分塊存儲在Chunk服務器集群之中。為了保證數據的安全性,GFS為每一個數據分塊備份三份數據副本。此模式下,GFS系統的有效空間利用率為25%。
從上述分析可以得知,當前的云存儲服務系統有效空間利用率非常低,并且云系統并不為備份數據提供數據機密性。因此,本文提出了一個空間高效的、面向用戶的、安全、可調節數據存儲方案。其具體設計目標包括:1.空間高效性,方案空間利用率應比較高;2.方案應該是面向用戶的,用戶可以自己估計數據的安全性,并根據安全需求個性化設置備份數據的數量;3.方案是安全的,方案能為備份數據提供一定程度上的數據機密性;4.方案是可調節的,當用戶下載數據時系統能為用戶提供不同安全級別的傳輸模式。

圖1 系統架構圖
系統架構圖如圖1所示,系統包括用戶模塊和CSP模塊。用戶模塊即使用云存儲服務的用戶,CSP模塊即云系統模塊。如GFS一樣,CSP模塊也包括了兩類服務器:Master服務器和Storage服務器。
在我們的系統中,用戶模塊除了可以向CSP模塊租用云服務以外還可以:1. 根據自己實際安全需求個性化定制自己備份數據副本的數量;2.下載數據時可以選擇不同安全級別的傳輸模式。
在CSP模塊中,Master服務器主要負責與用戶進行請求交互、管理Storage服務器集群、根據用戶設置的參數引導Storage服務器備份數據等。而Storage服務器則主要負責存儲數據、在Master服務器的引導下備份數據等。
在我們的方案中,當用戶想要將數據存儲至云端的時候,他首先應該個性化定制他的數據備份方案(即,確定備份數據的數量)。接著他向Master服務器提出存儲請求,Master服務器根據用戶的數據總量和備份方案選擇是否向用戶提供云存儲服務。
我們的存儲方案與GFS系統一樣,存儲數據時用戶數據會首先被分成固定大小的數據分塊,然后再備份并存儲。但我們的數據備份方案卻與GFS完全不一樣。我們的方案基于(K,N)-Shamir秘密分享方案[3],是一個空間高效性的、面向用戶的備份過程。當用戶擁有N中的任意K份數據就能恢復出原始數據,具體過程如下所示。
當Storage服務器收到用戶的數據之后,它會以數據分塊為單位對數據進行備份,我們以一個數據分塊(記作D)為例來講解數據備份過程。服務器首先將數據分塊D分成多份更小的單位數據塊(記作URP),于是我們就可以用有序對(i,URPi)來表示D,即D={(i,URPi)┤0

然后我們可以從f(x)上采集不同于之前K個點的其他N個點。這N個點即是Storage服務器備份完成的數據。使用N個中的任意K個點即能重構出多項式f(x),從f(x)中抽取出原始的K個點就能恢復出原始數據。
顯然,只要保證N個點中的K個點正確我們即能輕易地恢復出原始數據,因此我們的方案能保證很強的數據安全性。假設我們用ρ表示一個URP的出錯概率,PS表示D的備份數據所能提供的數據安全性,于是我們可以用公式(2)來量化我們的數據安全性:

值得注意的是,公式(2)中的K是由云服務商根據系統能力來確定,備份數據的數量N是由用戶根據自己的安全需求來確定。
在我們的系統中,當用戶需要存儲數據到云端時。他首先根據自己的安全需求和公式(2)確定備份數據的數量N,即個性化定制備份方案。
當N確定之后,用戶會向Master服務器發出請求并告知其數據存儲需求,即數據存儲總量和備份方案。Master服務器收到請求之后會根據用戶的存儲需求確定所有數據(包括原始數據和備份數據)的存儲位置。接著Master服務器會通知各Storage服務器準備接收數據并按照用戶的備份方案來備份數據。當上述過程完成之后,Master服務器會告訴用戶數據的存儲位置。接著用戶可以上傳所有數據到指定的Storage服務器。各Storage服務器收到數據之后在Master服務器的指令引導下完成數據的備份和存儲。
值得注意的是,為了保證數據的安全性,用戶原始數據和備份數據所存儲的位置不能相同。當Storage服務器備份完數據之后需要將備份數據發送到其他Storage服務器保存,以提高數據的存儲安全性。
當用戶需要從云端下載數據時,它會向Master服務器發出下載請求,請求中還應包含用戶指定的數據傳輸模式:即傳輸備份數據或者傳輸原始數據。
如果用戶選擇傳輸備份數據,它應該指定傳輸備份數據中的特定K個數據。在該傳輸模式下,數據傳輸的總量并沒有發生變化,因為一個數據分塊(D)所占空間等于K個單位數據塊(URP)所占空間。然而,由于傳輸的是K個備份數據,這些數據是原始數據的映射,相當于對原始數據的加密,即便傳輸過程中被敵手竊取了這些備份數據,只要敵手不知道各URP的序列號敵手就無法恢復出原始數據。因此,此模式下傳輸安全級別較高。
如果用戶選擇傳輸原始數據,則敵手竊取到的內容即是原始數據。顯然,該傳輸模式安全級別較低。
在這里,我們將比較GFS系統備份方案和我們的備份方案所能提供的數據安全性。為了使得比較標準一致,我們將GFS系統的數據分塊分成NBlock個更小的單位數據塊(記作unitreplica),具體做法與我們的存儲方案做法一樣。同樣的,我們用ρ表示單位數據塊出錯概率,NGFS表示GFS系統中備份數據的數量,于是GFS系統中備份數據所能提供的安全性可以用公式(3)表示:
其中,NBlock與公式(2)中的K的意義完全一樣,而公式(2)中的N=NGFS*NBlock。
如果我們令NBlock=10、ρ=0.01,則根據公式(2)和公式(3)我們可以得出備份數據所提供的數據安全性,結果如圖2所示:

圖2 數據安全性(NBlock=10,ρ=0.01)
圖2中,橫坐標是備份數據的數量,縱坐標是備份數據所提供的安全性。需要注意的是,在GFS系統中,由于備份方案是復制整個數據分塊,所以,單位數據塊的數量的增長應該是按照NBlock的倍數增長方式進行的:即NBlock=10時,當單位數據塊數量為10時,備份了一個數據,為20時,備份了兩個數據,以此類推。因此,當NBlock處于10~20之間時,由于GFS沒有完整的備份完第二個數據副本,因此其提供的安全性并沒有增長。
從圖2中我們可以看出,在備份數據數量達到12時我們的方案即能提供99.98%的安全性。而在GFS系統中,要達到同等級別的數據安全性則需要備份三份(即NGFS=3)完整數據,即備份數據數量為30(3*NBlock)。此時,我們的方案可以比GFS節約60%((30-12)/30*100%)的存儲空間。
同樣的,當NBlock和ρ的值發生變化時,根據公式(2)和公式(3)我們依然能得出如圖2所示的同等結論:我們的存儲方案提供與GFS系統同等數據安全性的情況下能比后者節約大量的存儲空間。因此,我們的方案有著非常高的空間利用率。
從本文3.2節中我們知道,我們的備份數據是從原始的K個單位數據中映射出來的N個單位數據,這N個數據與原來的K個數據完全不同。敵手在不知道各單位數據的具體序列的情況下,即便竊取了所有數據也無法重構出原始數據,因此可以看作是對原始數據的一次加密。所以,我們的方案能為備份數據提供一定程度的數據機密性。
從本文3.4節的介紹可知,用戶在下載數據的時候有兩種安全級別的傳輸模式:高安全傳輸模式和低安全傳輸模式。
然而,高安全傳輸模式并不是完美無瑕的。在高安全傳輸模式中,用戶下載完數據之后還需要利用公式(1)恢復出原始數據,與低安全傳輸模式相比,此模式下計算開銷相對較大、用戶等待時間相對較長。因此,高安全傳輸模式不適合對數據讀取及時性要求比較高的場景。
在我們的備份方案中,備份時間TS可以用公式(4)表示:

其中,Tr(s)是讀取大小為s的數據所需時間,Tb(s)是備份數據所需時間,Tt(s)是傳輸備份數據到其他Storage服務器所需時間,Tw(s)是Storage服務器存儲備份數據所需時間。由于,數據讀取和數據備份并發進行,數據傳輸和數據存儲并發進行。因此,我們可以認為TS≈Tb(s)+Tt(s)。同時,在公式(1)中的各系數li(x)獨立于用戶數據URPi,可以預先計算出來。于是,我們在備份的過程中只需要計算公式:

的計算開銷,該公式的計算時間為Tb(s)≈N*K*Tmul(p),其中,Tmul(p)表示計算有限域Z p上的一次乘法所需時間。再者,如果我們用Tur表示服務器傳輸單位數據塊所需時間,則傳輸備份數據所需時間Tt(s)=N*Tur=N*K*Tur/K。于是,TS≈N*K*(Tmul(p)+Tur/K)。又根據公式(2)可知,N和K大小相差不大,因此,備份方案的時間復雜度約為O(K2)。
云存儲服務是云計算服務的基本服務形式之一,用戶對云服務的最大擔憂是數據的安全性。我們調研了各大CSP,如,Google、Amazon和Microsoft等,發現在這些云系統中保證數據安全性的機制是簡單的存儲多份相同數據,這極大降低了存儲空間的利用率。因此,我們設計了一個基于秘密分享方案的、空間高效的、面向用戶的、安全、可調節數據存儲方案。方案中利用拉格朗日插值公式和秘密分享技術備份用戶數據,從而達到了對數據加密和提高空間利用率雙重目的。本文詳細介紹了方案的架構,并結合設計目標對方案做了詳盡的分析,完全達到了既定目標。最后,我們通過分析可知備份過程的時間復雜度為O(K2),當K取值合理時,備份時間開銷是完全可接受的。
[1] Wu J, Ping L, Ge X, et al. Cloud storage as the infrastructure of cloud computing[C]//Intelligent Computing and Cognitive Informatics (ICICCI), 2010 International Conference on. IEEE, 2010: 380-383.
[2] Ghemawat S, Gobioff H, Leung S T. The Google fi le system[C]//ACM SIGOPS Operating Systems Review. ACM, 2003,37(5): 29-43.
[3]Parakh A, Kak S. Space eff i cient secret sharing for implicit data security[J]. Information Sciences, 2011, 181(2): 335-341.
[4]Quadling D A. Lagrange's Interpolation Formula[J]. The Mathematical Gazette, 1966, 50(374): 372-375.
[5]Z. Zheng and M. R. Lyu.A qos-aware fault tolerant middleware fordependable service composition. In DSN , pages 239–248, 2009.
[6] S. Dustdar and L. Juszczyk.Dynamic replication and synchronizationof web services for high availability in mobile ad-hoc networks. ServiceOriented Computing and Applications (SOCA), 1(1):19–33, 2007.
[7]Triantaf i llou P, Taylor D. Using multiple replica classes to improve performance in distributedsystems[C]//Distributed Computing Systems, 1991., 11th International Conference on. IEEE, 1991: 420-428.