云存儲(chǔ)方案之引導(dǎo)密鑰廣播加密
為解決云存儲(chǔ)強(qiáng)安全性要求(即云端也是不可信的情況)下的數(shù)據(jù)安全問(wèn)題,提出一個(gè)基于引導(dǎo)密鑰廣播加密的云存儲(chǔ)系統(tǒng)方案。
一、本文的應(yīng)用場(chǎng)景和方案框架
設(shè)置一個(gè)應(yīng)用場(chǎng)景如下:
(1)分布式云存儲(chǔ)系統(tǒng)中,用戶將自己的數(shù)據(jù)放在云端,并能隨時(shí)隨地讀取,而不需要重復(fù)認(rèn)證。
(2)云端是不可信的,存在丟失和篡改數(shù)據(jù)的風(fēng)險(xiǎn)。
(3)數(shù)據(jù)在篡改時(shí)能夠定位并恢復(fù)數(shù)據(jù)能夠在可信第三方的監(jiān)察下,確定問(wèn)責(zé)主體。
(4)能實(shí)現(xiàn)合法用戶的數(shù)據(jù)共享和非法用戶的拒絕訪問(wèn)。
基于上述場(chǎng)景,給出技術(shù)上的實(shí)現(xiàn)功能框圖,如圖1所示。主要涉及4個(gè)部分的技術(shù)細(xì)節(jié):數(shù)據(jù)處理、引導(dǎo)密鑰的加密和數(shù)據(jù)讀取、廣播加密方案和基于可信第三方的數(shù)據(jù)審計(jì)和問(wèn)責(zé)。

基于圖1的框圖,在下一節(jié)中逐項(xiàng)給出相應(yīng)的技術(shù)實(shí)現(xiàn)。
二、可信高效的分布式云存儲(chǔ)方案
1、用戶數(shù)據(jù)的處理
用戶文件首先被切割成分片,然后分片被發(fā)散存儲(chǔ)到不同的存儲(chǔ)節(jié)點(diǎn)?,F(xiàn)有的大部分存儲(chǔ)系統(tǒng)都使用的這種存儲(chǔ)方式。分片處理的原因是由于文件的大小并不統(tǒng)一,整體存儲(chǔ)容易產(chǎn)生碎片。而且文件完整存儲(chǔ)在某個(gè)存儲(chǔ)節(jié)點(diǎn)上,容易導(dǎo)致信息泄露。為避免分片的節(jié)點(diǎn)的崩潰,需要引入冗余。
然后對(duì)分片的數(shù)據(jù)進(jìn)行編碼,如Tomado碼,具有良好的糾刪能力。
進(jìn)一步對(duì)數(shù)據(jù)碼進(jìn)行哈希運(yùn)算,實(shí)現(xiàn)檢測(cè)數(shù)據(jù)篡改功能。
這里使用一種帶密鑰的哈希函數(shù),如HMAC-SHA1。對(duì)每個(gè)數(shù)據(jù)塊都使用HAMC-SHA1和密鑰Enck計(jì)算一個(gè)哈希值,并且將數(shù)據(jù)塊與對(duì)應(yīng)的哈希值保存。對(duì)于數(shù)據(jù)塊x,攻擊者在沒(méi)有西ci的情況下,無(wú)法找到數(shù)據(jù)塊y≠z且Hmac(Enck,z)- Hmac(Fnck,y).而且也無(wú)法使用(y,Hmac(Enck,3,))替換(x,Hmac(Enck,z))。這種特性將保證我們可以檢測(cè)出數(shù)據(jù)是否被篡改,只要我們對(duì)數(shù)據(jù)進(jìn)行相同的哈希并與保存的哈希值進(jìn)行配對(duì)比較。
我們檢測(cè)到錯(cuò)誤數(shù)據(jù)后,還需要去糾正它。先丟棄錯(cuò)誤的數(shù)據(jù)塊,利用Tomado碼的良好糾刪能力可以實(shí)現(xiàn)數(shù)據(jù)塊的恢復(fù)。
2、引導(dǎo)密鑰管理方案
根據(jù)Diffie-Hellman原理,一個(gè)密碼系統(tǒng)的安全性不能依賴于算法本身,而是密鑰,所以對(duì)密鑰的產(chǎn)生和管理是系統(tǒng)安全的關(guān)鍵。
該部分主要講述如何實(shí)現(xiàn)數(shù)據(jù)的強(qiáng)機(jī)密性,即除了用戶自己,任何人都無(wú)法獲取數(shù)據(jù)的有意義信息,哪怕是云服務(wù)提供商。為了達(dá)到這種安全性,傳統(tǒng)的由云端負(fù)責(zé)加密的架構(gòu)已經(jīng)不適用。數(shù)據(jù)在上傳到云端之前就需要在本地加密,且加密密鑰僅用戶所有。數(shù)據(jù)既然在本地被加密后存放到云端,則在下載回本地。進(jìn)行數(shù)據(jù)讀取時(shí)也需要被解密,其中的過(guò)程都將牽涉到密鑰。
非對(duì)稱加密算法的速度較慢,在面對(duì)較大的文件時(shí)力不從心,很難達(dá)到理想的速度,因此我們選用對(duì)稱加密算法,用戶在上傳數(shù)據(jù)之前采用傳統(tǒng)的對(duì)稱加密技術(shù)(如AES)對(duì)數(shù)據(jù)進(jìn)行加密。
在云存儲(chǔ)中,由于存在大規(guī)模的用戶,用戶必須自己維護(hù)管理密鑰,而云存儲(chǔ)也喪失了簡(jiǎn)單、隨地可用的特性。為了解決這個(gè)問(wèn)題,我們引入引導(dǎo)密碼。如圖2所示。

引導(dǎo)密碼是一個(gè)類似于郵箱密碼或MSN密碼的一個(gè)普通密碼字符串,它的作用相當(dāng)于一個(gè)密鑰生成種子,通過(guò)它來(lái)生成加密所需的加密密鑰。引導(dǎo)密碼由兩部分組成:
第一部分是由用戶輸入的記憶密碼,第二部分是自動(dòng)加上的當(dāng)前加密的文件名或其它的文件唯一標(biāo)識(shí)符。這樣用戶可以通過(guò)相同的記憶密碼為不同的文件產(chǎn)生不同的引導(dǎo)密碼,進(jìn)而生成不同的加密密鑰。相比直接使用加密密鑰,使用更易于記憶的引導(dǎo)密碼可以使用戶避開(kāi)密鑰的管理等難題,用戶只需要記憶自己輸入的記憶密碼即可。
引導(dǎo)密鑰的獲取需要一個(gè)密鑰產(chǎn)生函數(shù),這個(gè)函數(shù)的輸入是引導(dǎo)密碼,輸出是加密密鑰。密鑰產(chǎn)生函數(shù)應(yīng)該具備的第一個(gè)特性是只要而且只有輸入相同,產(chǎn)生的輸出相同。第二個(gè)特性是它應(yīng)該將長(zhǎng)度較短的引導(dǎo)密碼發(fā)散成長(zhǎng)度固定的加密密鑰,如AES所需要的最短加密密鑰長(zhǎng)度128位。很明顯,哈希函數(shù)MD5或SHAI都具備這兩種特性,可以充當(dāng)我們的密鑰產(chǎn)生函數(shù)。
用戶每次上傳(下載)文件,都需要先輸入記憶密碼,組裝成引導(dǎo)密碼,通過(guò)哈希函數(shù)計(jì)算出加密密鑰,然后對(duì)文件進(jìn)行加密(解密)。引導(dǎo)密碼只有用戶知道,因此即使云提供商也無(wú)法獲取數(shù)據(jù)的有意義信息。不足的地方是數(shù)據(jù)機(jī)密性不再取決于AES的安全性,降低到了引導(dǎo)密碼的安全性。但這種安全性并非所想的那么不堪,對(duì)于一個(gè)16位長(zhǎng)的沒(méi)有任何社會(huì)規(guī)律的密碼,不考慮其它途徑如中毒導(dǎo)致的密碼泄露,使用一臺(tái)普通PC窮舉攻擊獲取這個(gè)密碼所需的時(shí)間以億年計(jì)。而且相對(duì)于直接使用加密密鑰帶來(lái)的幾乎無(wú)法接受的密鑰管理問(wèn)題,這是可以接受的。
3、廣播加密方案
為了使得合法數(shù)據(jù)得到共享,同時(shí)禁止非法用戶獲取資源,采用廣播加密方案(broadcast encrypeion scheme)來(lái)解決。
廣播加密方案是發(fā)送者向所有節(jié)點(diǎn)頒發(fā)加密的消息,只允許授權(quán)解密的用戶能成功解密的密碼系統(tǒng)。已廣泛應(yīng)用于有償電視(pay-TV)系統(tǒng)、版權(quán)資料發(fā)布和CD/DVD內(nèi)容保護(hù)等等。
最基本的廣播加密方案一般由以下3個(gè)算法組成:
-Setup:輸入用戶u∈U,且構(gòu)造一個(gè)私有信息Pu∈P。
-Broadcast:輸入revoked用戶集R和會(huì)話密鑰k∈K,輸出廣播消息B,其中:
![]()
-Decrypt:輸入B,pu和u,并計(jì)算共同密鑰,輸出對(duì)應(yīng)的明文。否則失敗。
初始化:用戶首先生成一個(gè)足夠健壯的私有主密鑰MSK,主密鑰即為足夠長(zhǎng)度的引導(dǎo)密鑰,然后將私有主密鑰與目標(biāo)接收點(diǎn)的身份ID和密鑰版本串聯(lián)在一起,并對(duì)該整體進(jìn)行哈希運(yùn)算,將得到的結(jié)果(聯(lián)合私鑰SkLDi)作為該對(duì)象的對(duì)應(yīng)于本次版本下的一個(gè)加密密鑰。
加密:對(duì)于私鑰skidi和一個(gè)用戶的身份集合S={IDi.…,,DIs},s為用戶節(jié)點(diǎn)數(shù)目,經(jīng)過(guò)哈希處理,加密密鑰即為skrrx,輸出為一對(duì)(H,K),其中H為S的哈希后的值.K是加密方案的密鑰集合,為占s個(gè)私鑰sidi的集合。
廣播:當(dāng)需要將消息M∈{0,1}廣播給s中的所有或部分用戶時(shí),廣播者先生成(H.K)-H(5,Sk,Di),然后根據(jù)加密算法生成(Hdr,S.CM) --Encrypt (H,K.M).CM為消息M的加密信息。廣播者廣播(Hdr,S.CAl)。(Hdr,S)作為整個(gè)報(bào)頭,CM作為廣播主體。
解密:利用解密算法計(jì)算Decrypt(S.ID.Hdr,skID:),在已知子集S={IDl,…,,DIs},某個(gè)接收者的身份ID和其私鑰skm的情況下,可以解析報(bào)頭Hdr,得到該合法節(jié)點(diǎn)加密密鑰,再對(duì)消息解CAf解密,從而恢復(fù)消息M。
其中加密和解密算法采用設(shè)計(jì)過(guò)程,此處就不再重復(fù)敘述了。改進(jìn)后的算法融合了本文的引導(dǎo)密鑰機(jī)制和帶密鑰的哈希運(yùn)算,相對(duì)于原文獻(xiàn),靈活性和安全性有進(jìn)一步的提高。
融合上述的引導(dǎo)密鑰機(jī)制和廣播加密方案,進(jìn)一步提出基于引導(dǎo)密鑰加密的廣播加密方案的云存儲(chǔ)方案如圖3所示。

實(shí)線表示實(shí)際的路徑,用戶將數(shù)據(jù)通過(guò)加密,傳到網(wǎng)上,通過(guò)公共接口達(dá)到云存儲(chǔ)服務(wù)器端,寫(xiě)入云端。虛線表示透明功能選項(xiàng),本文的加密機(jī)制采用引導(dǎo)密鑰加密,從用戶角度來(lái)看,就是直接加密數(shù)據(jù)放到云端,并用引導(dǎo)密鑰濱取數(shù)據(jù);云端的加密密鑰是采用廣播方式發(fā)送到用戶端,合法的認(rèn)證用戶可以提取數(shù)據(jù)。上述的引導(dǎo)密鑰只對(duì)文件所有者或共享者所有的,對(duì)云端也是保密的,安全性進(jìn)一步提高。
4、基于可信第三方的數(shù)據(jù)審計(jì)
為了實(shí)現(xiàn)強(qiáng)安全性的審計(jì)功能,本文引入了可信第三方參與。引入可信第三方之后的數(shù)據(jù)流向圖如圖4所示。

圖中SSP (storage service provider)表示云存儲(chǔ)服務(wù)提供商,TTP表示可信第三方。相對(duì)于圖3、圖4增加了可信第三方以及基于第三方的審計(jì)功能,圖中描述了3種獨(dú)立的數(shù)據(jù)流:文件讀/寫(xiě)數(shù)據(jù)流,該數(shù)據(jù)流只存在于用戶和SLSP之間}憑單生成數(shù)據(jù)流,關(guān)于數(shù)據(jù)流的交互憑據(jù),存在SSP上;問(wèn)責(zé)審計(jì)數(shù)據(jù)流。
審計(jì)和問(wèn)責(zé)的過(guò)程如下:
(1)在文件讀寫(xiě)的過(guò)程中分別增加憑據(jù)流和審計(jì)流,可信第三方負(fù)責(zé)認(rèn)證信息的收集和證言的判斷。用戶讀寫(xiě)數(shù)據(jù)流(R\ Wflow)時(shí),按照版本遞增的原則給每條操作設(shè)置一個(gè)字符串一憑據(jù),為用戶讀取和寫(xiě)入的文件提供完整性保護(hù)的同時(shí)為審計(jì)提供證據(jù)。
(2)當(dāng)通過(guò)前面描述的方法檢測(cè)出數(shù)據(jù)不完整或者丟失篡改時(shí),由于云端的不可信,用戶很可能與云端發(fā)生錯(cuò)誤歸屬的爭(zhēng)議。這時(shí)S.SP可以提取和驗(yàn)證在數(shù)據(jù)交互中產(chǎn)生的憑單鏈條來(lái)實(shí)現(xiàn)相關(guān)操作的舉證。
(3)可信第三方在認(rèn)證各方以及憑據(jù)的合法性后,出示證言,進(jìn)行追貴,或是用戶的操作錯(cuò)誤,或是云端的惡意操作,然后主張權(quán)責(zé)歸屬。
該方案,在圖3對(duì)云端保密數(shù)據(jù)的基礎(chǔ)上,進(jìn)一步確保了云端的強(qiáng)安全性。
三、方案性能分析
所提方案具有較好的靈活性和較高的安全性。
(l)本方案采用用戶引導(dǎo)密碼來(lái)生成主密鑰,在保證系統(tǒng)機(jī)密性要求的前提下,使得用戶能夠在任何時(shí)間、任何地點(diǎn)和任何一臺(tái)機(jī)器上實(shí)現(xiàn)對(duì)密鑰數(shù)據(jù)的有效管理。這實(shí)質(zhì)上是引入了人的管理因素,每個(gè)人只需要記住涉及自己的若干個(gè)密碼,就可以維護(hù)自己的數(shù)據(jù)以及與他人進(jìn)行廣播共享,而若干密碼可以由用戶設(shè)置的引導(dǎo)密碼來(lái)完成加密解密f這樣可以避免云端管理密鑰惜來(lái)的可能的泄漏或者負(fù)擔(dān)過(guò)重的問(wèn)題。
(2)用戶內(nèi)容對(duì)云端保密。本文方案通過(guò)用戶來(lái)管理密鑰,同時(shí)對(duì)具體內(nèi)容進(jìn)行加密傳輸并儲(chǔ)存在云端。這樣云端或可信第三方部無(wú)法知道文件內(nèi)容,就可以避免前述的存儲(chǔ)在云端的數(shù)據(jù)不會(huì)被泄露(至少泄露信息可控),另一方面云端很難有意或無(wú)意的更改存儲(chǔ)的數(shù)據(jù)。特別是將重要敏感的數(shù)據(jù)交給云端托管時(shí),這些措施很有必要。傳統(tǒng)的云存儲(chǔ)都是用明文存放數(shù)據(jù)后在云端加密,因此數(shù)據(jù)的安全性依賴于對(duì)云端的信任,而一旦云端的訪問(wèn)控制機(jī)制出現(xiàn)問(wèn)題后果不堪沒(méi)想。
(3)本文的廣播加密的作用類似于數(shù)字版權(quán)保護(hù)。文件對(duì)象的創(chuàng)建者通過(guò)廣播加密向允許訪問(wèn)該文件對(duì)象的用戶范圍廣播該對(duì)象的加密密鑰,只有處于創(chuàng)建者指定的集合中的用戶才能解密收到的消息從而獲得加密密鑰。密鑰輪換用來(lái)在需要變更能夠訪問(wèn)該文件的用戶范圍時(shí)使用,文件對(duì)象的創(chuàng)建耆將對(duì)新的能夠訪問(wèn)該對(duì)象的用戶集合廣播新的密鑰,同時(shí)更改密鑰版本(版本號(hào)加1)。
(4)所提方案使用一種帶密鑰的哈希函數(shù)對(duì)數(shù)據(jù)塊進(jìn)行加密。這種哈希函數(shù)與普通哈希函數(shù)的區(qū)別是它的哈希結(jié)果不僅與輸入數(shù)據(jù)有關(guān),而且與輸入密鑰也有關(guān)。對(duì)于同一個(gè)數(shù)據(jù)塊,輸入不同的密鑰產(chǎn)生的哈希結(jié)果也是不同的。相對(duì)普通哈希解決方案不能檢測(cè)內(nèi)容和哈希值同時(shí)被替換的情況,提高了篡改檢測(cè)的準(zhǔn)確性和安全性。
(5)問(wèn)責(zé)的效果和抗攻擊。云提供商故意修改或破壞存放的數(shù)據(jù)對(duì)象;由于存放在云端的數(shù)據(jù)經(jīng)過(guò)了分片和單向函數(shù)的置亂,云提供商SSP無(wú)法偽造一個(gè)合法簽名的數(shù)據(jù)對(duì)象;同時(shí)由于每個(gè)數(shù)據(jù)對(duì)象每次合理的修改后,都會(huì)產(chǎn)生一個(gè)憑據(jù),這樣就形成了一個(gè)憑據(jù)鏈,本方案引入了可信第三方的簽名認(rèn)證,這樣方案中涉及到的關(guān)鍵動(dòng)作均有三方簽名的憑據(jù)做保障,可信第三方負(fù)責(zé)確保憑據(jù)鏈的完整性和最新性。若出現(xiàn)云提供商的違規(guī),是可以定位SSP的責(zé)任的。如果SSP想刪除某個(gè)對(duì)象時(shí),由于每個(gè)數(shù)據(jù)對(duì)象每次合理的修改后的版本號(hào)是遞增的關(guān)系,不同的版本之間也構(gòu)成了一個(gè)可認(rèn)證的憑據(jù)鏈,刪除對(duì)象會(huì)造成憑據(jù)鏈條的跳躍情況,很容易被發(fā)現(xiàn)。如果云端想用替換的方法,如用一個(gè)相同版本號(hào)的憑據(jù)替換惡意操作部分的憑據(jù),則需要同時(shí)偽造TTP和用戶的簽名,這是非常困難的。
同理用戶出現(xiàn)上述的違規(guī)行為,或抵賴自身行為,或污蔑對(duì)方,也是可以通過(guò)對(duì)方(SSP)舉證,可信第三方認(rèn)證雙方身份,并出示證言,而判斷各自的權(quán)責(zé)歸屬的。
小知識(shí)之云存儲(chǔ)
云存儲(chǔ)是在云計(jì)算(cloud computing)概念上延伸和發(fā)展出來(lái)的一個(gè)新的概念,是一種新興的網(wǎng)絡(luò)存儲(chǔ)技術(shù),是指通過(guò)集群應(yīng)用、網(wǎng)絡(luò)技術(shù)或分布式文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲(chǔ)設(shè)備通過(guò)應(yīng)用軟件集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問(wèn)功能的一個(gè)系統(tǒng)。當(dāng)云計(jì)算系統(tǒng)運(yùn)算和處理的核心是大量數(shù)據(jù)的存儲(chǔ)和管理時(shí),云計(jì)算系統(tǒng)中就需要配置大量的存儲(chǔ)設(shè)備,那么云計(jì)算系統(tǒng)就轉(zhuǎn)變成為一個(gè)云存儲(chǔ)系統(tǒng),所以云存儲(chǔ)是一個(gè)以數(shù)據(jù)存儲(chǔ)和管理為核心的云計(jì)算系統(tǒng)。簡(jiǎn)單來(lái)說(shuō),云存儲(chǔ)就是將儲(chǔ)存資源放到云上供人存取的一種新興方案。使用者可以在任何時(shí)間、任何地方,透過(guò)任何可連網(wǎng)的裝置連接到云上方便地存取數(shù)據(jù)。






