楊 杰,譚道軍,邵金俠
(湖南科技學(xué)院 電子與信息工程學(xué)院,湖南 永州 425199)
隨著云計(jì)算的發(fā)展,云存儲(chǔ)作為云計(jì)算的一項(xiàng)重要服務(wù)得到越來(lái)越多的關(guān)注[1-3],它允許個(gè)人和行業(yè)以較低的成本將數(shù)據(jù)保存在云中,為了方便管理數(shù)據(jù)并降低管理成本,許多數(shù)據(jù)所有者將數(shù)據(jù)外包給云服務(wù)器[4-5],這使得云存儲(chǔ)服務(wù)的用戶數(shù)量迅速增長(zhǎng)。但是,將個(gè)人及企業(yè)數(shù)據(jù)存儲(chǔ)在云中需要信任的存儲(chǔ)服務(wù),以確保數(shù)據(jù)的保護(hù)和隱私。數(shù)據(jù)安全和隱私保護(hù)是云計(jì)算面臨的挑戰(zhàn),這些安全挑戰(zhàn)的出現(xiàn)主要是由于“缺乏信任”和“缺乏控制”的原因。用戶正在將數(shù)據(jù)提供給不受信任的云存儲(chǔ),因此,數(shù)據(jù)可能會(huì)被損壞,修改,被盜或甚至被刪除[6-7]。
由于所有的安全策略都是由云服務(wù)提供商處理的,用戶無(wú)法控制自己的數(shù)據(jù)。因此,為了使云存儲(chǔ)安全高效,云服務(wù)必須確保數(shù)據(jù)的可用性和完整性這2個(gè)基本安全要求[8-10]。
文獻(xiàn)[11]提出了隱私欺騙阻止和安全計(jì)算審計(jì)協(xié)議,同時(shí)解決了云計(jì)算數(shù)據(jù)存儲(chǔ)安全性與計(jì)算安全性,通過(guò)指定的驗(yàn)證者簽名,批量驗(yàn)證和概率抽樣技術(shù)來(lái)實(shí)現(xiàn)隱私欺騙阻礙。為了解決對(duì)大量加密的云數(shù)據(jù)進(jìn)行高效全文檢索這個(gè)挑戰(zhàn),文獻(xiàn)[12]提出了一個(gè)基于Bloom過(guò)濾器的樹(shù)索引,通過(guò)提出索引詞的隸屬熵來(lái)優(yōu)化查詢和加密文檔之間的相似性,實(shí)現(xiàn)了加密云數(shù)據(jù)的全文檢索。
文獻(xiàn)[13]給出了云計(jì)算環(huán)境的實(shí)際數(shù)據(jù)完整性需求,并研究了區(qū)塊鏈在實(shí)現(xiàn)數(shù)據(jù)完整性面臨的問(wèn)題,設(shè)計(jì)了云計(jì)算環(huán)境中基于區(qū)塊鏈的有效數(shù)據(jù)庫(kù)。文獻(xiàn)[14]提出了一種高效的相互驗(yàn)證的可證明數(shù)據(jù)擁有方案,該方案利用Diffie-Hellman共享密鑰構(gòu)造同態(tài)驗(yàn)證器,該方案中的驗(yàn)證者是無(wú)狀態(tài)的,獨(dú)立于云存儲(chǔ)服務(wù),因?yàn)椴恍枰p線性操作,所以所提出的方案非常有效。
為了提高云存儲(chǔ)數(shù)據(jù)的安全性與完整性,本文在研究以上方法的基礎(chǔ)上,提出了一種基于顯式精確最小存儲(chǔ)再生代碼(explicit exact minimal storage regenerating code, EEMSR)的云計(jì)算安全性研究方法,該方法使用加密哈希函數(shù)的精確再生代碼的顯式構(gòu)造,以確保云中存儲(chǔ)數(shù)據(jù)的可用性和完整性。在本文協(xié)議中,用戶首先使用EEMSR代碼對(duì)數(shù)據(jù)進(jìn)行編碼,然后將此編碼數(shù)據(jù)上傳到云中。該編碼有助于重新生成丟失的數(shù)據(jù),以此確保數(shù)據(jù)的可用性。另外還使用加密哈希函數(shù)通過(guò)Challenge-Response協(xié)議來(lái)驗(yàn)證數(shù)據(jù)的完整性,如果完整性得到驗(yàn)證則可以重構(gòu)數(shù)據(jù),否則,可以使用EEMSR代碼修復(fù)數(shù)據(jù)。
用戶將數(shù)據(jù)存儲(chǔ)在不可信的云系統(tǒng)中, 一旦數(shù)據(jù)存儲(chǔ)后,用戶就會(huì)失去對(duì)數(shù)據(jù)的控制權(quán),數(shù)據(jù)可能會(huì)丟失或者數(shù)據(jù)可能被調(diào)節(jié),這種缺乏控制主要產(chǎn)生了2個(gè)安全挑戰(zhàn):完整性和可用性。
云系統(tǒng)體系結(jié)構(gòu)(見(jiàn)圖1)中有用戶和云服務(wù)器2個(gè)實(shí)體。用戶首先對(duì)原始文件進(jìn)行編碼,上傳到云端,產(chǎn)生挑戰(zhàn)并檢查來(lái)自服務(wù)器的響應(yīng)是否有效;云服務(wù)器存儲(chǔ)和維護(hù)用戶上傳的數(shù)據(jù)。
已經(jīng)上傳至云服務(wù)器上的數(shù)據(jù)會(huì)受到不同種類的安全威脅。本文云存儲(chǔ)模型主要關(guān)注2種威脅:①由于硬件故障而引起的數(shù)據(jù)丟失;②由于任何惡意活動(dòng)而引起的數(shù)據(jù)損壞。
EEMSR碼是(n,k,d,B,α,β)再生碼,最初,大小為B的文件被分成e個(gè)塊,每個(gè)塊的大小為β=B/e,其中,e=n×(n-1)/2,在編碼矩陣的幫助下,這e個(gè)信息塊被進(jìn)一步編碼為n個(gè)編碼塊,每個(gè)編碼塊的大小α使得屬于n個(gè)塊中的k個(gè)塊足以重建原始文件。這些編碼的塊存儲(chǔ)在云服務(wù)器中。如果任一服務(wù)器發(fā)生故障,則可以通過(guò)從d服務(wù)器下載β數(shù)據(jù)來(lái)重新生成丟失的數(shù)據(jù)。表1是對(duì)EEMSR碼中各符號(hào)的描述。
表1 符號(hào)描述
為了確保云存儲(chǔ)數(shù)據(jù)的完整性和可用性,本文提出EEMSR和Hash函數(shù)的存儲(chǔ)數(shù)據(jù)安全性新方法,該方法有4個(gè)階段:設(shè)置階段、完整性驗(yàn)證階段、重建和再生階段,其流程圖如圖2。
圖2 本文方法過(guò)程圖Fig.2 Method process diagram in this paper
設(shè)置階段是在上傳數(shù)據(jù)之前的準(zhǔn)備工作,完整性驗(yàn)證階段是上傳數(shù)據(jù)以后進(jìn)行的階段,本文方法主要集中在設(shè)置階段和完整性驗(yàn)證階段。
用戶在云中存儲(chǔ)數(shù)據(jù)之前準(zhǔn)備的文件,包括3個(gè)算法;密鑰生成、文件編碼和元數(shù)據(jù)生成。
1)密鑰生成。用戶選擇一些隨機(jī)正整數(shù)S用作私鑰及選擇一些大的素?cái)?shù)P和正整數(shù)r(P的原始根)作為公鑰。公鑰將用于Deffie-Hellman算法生成共享密鑰S′, 因此,S和{r,P}將分別作為私鑰和公鑰使用。
2)文件編碼。為了確保云存儲(chǔ)中的數(shù)據(jù)可用性,用戶在把數(shù)據(jù)存儲(chǔ)到云中之前,通過(guò)使用顯式精確再生代碼來(lái)對(duì)文件進(jìn)行編碼。 文件編碼分為文件分區(qū)、編碼矩陣構(gòu)建和文件編碼3個(gè)部分。
文件分區(qū):文件F被分成e-1個(gè)區(qū)塊,其中,e=n×(n-1)/2,即
F={m1,m2,…,me-1}
(1)
(1)式中,mi,(i=1,…,e-1)表示分塊后的塊文件。在文件分區(qū)之后,用戶通過(guò)計(jì)算每e-1個(gè)塊的異或運(yùn)算來(lái)生成一個(gè)新塊,然后將新塊添加到以前的e-1塊。因此,最后F包含全部e塊為
F′={m1,m2,…,me-1,me}
(2)
分區(qū)算法:FileDivision (F,e)
procedure:F′→ FileDivision (F,e)
e=n×(n-1)/2,將文件F分為(e-1)個(gè)塊
計(jì)算me=m1+m2
fori=3 toe-1
me=me+mi
end for
end procedure
編碼矩陣E構(gòu)造:該矩陣大小為n×e,其元素是0或1,且每一行都有d個(gè)1,每列只有2個(gè)1。
文件編碼:在生成編碼矩陣后,用戶可以將編碼矩陣E乘以文件F′來(lái)對(duì)文件進(jìn)行編碼。
C=E×F′
(3)
文件編碼算法:FileEncode (E,mj,n,e)
procedure:C→ FileEncode (E,mj,n,e)
fori=1 ton
sum=0
forj=1 toe
sum=sum+(Eij×mj)
end for
Ci1=sum
end for
end procedure
文件編碼過(guò)程如圖3。
圖3 文件編碼過(guò)程Fig.3 File encoding process
元數(shù)據(jù)生成:在對(duì)文件進(jìn)行編碼之后,用戶通過(guò)使用密鑰S計(jì)算文件F′的每個(gè)塊的hash值來(lái)生成文件的元數(shù)據(jù),并在預(yù)處理文件已經(jīng)發(fā)送到云存儲(chǔ)中以后在本地刪除文件F′。
元數(shù)據(jù)生成算法:MetadataGen (mi,S)
procedure:M→ MetadataGen (mi,S)
forj=1 ton
end for
end procedure
元數(shù)據(jù)生成算法中,P表示一個(gè)素?cái)?shù)。
將數(shù)據(jù)存儲(chǔ)在云中后,用戶需要通過(guò)challenge-response協(xié)議來(lái)檢查數(shù)據(jù)的完整性。為此,用戶創(chuàng)建challenge并發(fā)送到云服務(wù)器,接收到客戶端云服務(wù)器的challenge后,生成與挑戰(zhàn)相對(duì)應(yīng)的響應(yīng)并將response發(fā)送回客戶端,然后客戶端驗(yàn)證數(shù)據(jù)的完整性。該階段由challenge生成、response生成和驗(yàn)證3種算法組成。
Challenge生成:最初,用戶使用SOBOL隨機(jī)序列選擇隨機(jī)密鑰KSRP,并計(jì)算集合[1,n]的隨機(jī)索引1≤j≤n(j=1,…,c),其中,c=πKSRP(c),它阻止服務(wù)器猜測(cè)下一個(gè)challenge中將查詢哪個(gè)塊。用戶選擇一個(gè)隨機(jī)整數(shù)XA并計(jì)算YA,用于生成共享密鑰S′。
算法:ChallengeGen (KSRP,XA)
procedure: Chall→ ChallengeGen (KSRP,XA)
生成隨機(jī)密鑰KSRP, 選擇一些隨機(jī)整數(shù)XA
計(jì)算YA=rXAmodP,計(jì)算c=πKSRP(c)
生成Chall={c,YA}
end procedure
Response生成:基于收到的challenge,服務(wù)器生成response并發(fā)送給用戶進(jìn)行進(jìn)一步驗(yàn)證。最初服務(wù)器選擇一個(gè)秘密整數(shù)XA并計(jì)算YA,之后計(jì)算共享密鑰S′,該共享密鑰用于生成response,即R。
算法:ResponseGen (c,YA,XB)
procedure: {Φ,YB}→ ResponseGen (c,YA,XB)
forj=1 toc
end for
end procedure
驗(yàn)證:用戶通過(guò)檢查response是否有效來(lái)驗(yàn)證數(shù)據(jù)的完整性。這個(gè)算法以Rj,Hj和Y為輸入,比較詢問(wèn)中索引所有索引塊的response和哈希值,并檢查它們是否相同,如果相同,那么完整性被驗(yàn)證,該算法將返回1,如不同則返回0。
算法:Verification (Φ,Hj,YB)
procedure: 0/1→Verification (Φ,Hj,YB)
Φ1=H′S′modP,Φ2=ΦSmodP
fori=1 toc
If (Φ1==Φ2)
return 1
else
return 0
end procedure
重建階段:在云存儲(chǔ)中存儲(chǔ)數(shù)據(jù)后,如果驗(yàn)證了完整性,用戶可以從云服務(wù)器重建數(shù)據(jù)。原始數(shù)據(jù)可以通過(guò)重構(gòu)算法恢復(fù),算法以k和e作為輸入,并返回原始文件F′作為輸出。對(duì)于重構(gòu)用戶將從任何k個(gè)服務(wù)器下載大小為α的數(shù)據(jù),并刪除重復(fù)的塊,由此,用戶將從e塊中獲得e-1個(gè)塊,通過(guò)對(duì)所有e-1個(gè)塊進(jìn)行異或運(yùn)算,可以在這些e-1塊的幫助下生成剩余的一個(gè)塊。
算法:MetadataGen (mj,S)
procedure:M→MetadataGen (mj,S)
從任意k臺(tái)服務(wù)器下載所有數(shù)據(jù),刪除重復(fù)塊
me=m1+m2
forj=3 toe-1
計(jì)算me=me+mj
end for
end procedure
再生階段:特定服務(wù)器網(wǎng)絡(luò)的故障能夠重新生成丟失的數(shù)據(jù),丟失的數(shù)據(jù)可以通過(guò)從每d個(gè)服務(wù)器下載β數(shù)據(jù)來(lái)重新生成。
本文方法作為安全觀點(diǎn)進(jìn)行分析,則需要確保在所有情況下的完整性和健全性。
為了確保完整性,需要滿足以下2個(gè)屬性:完整性和健全性。
完整性。只要用戶向服務(wù)器發(fā)送challenge,服務(wù)器就需要計(jì)算response,如果服務(wù)器計(jì)算相應(yīng)challenge的response,則用戶將始終接受response為有效的。
健全性。只要用戶向服務(wù)器發(fā)送challenge,服務(wù)器就需要計(jì)算response,如果服務(wù)器不誠(chéng)實(shí)地計(jì)算相應(yīng)挑戰(zhàn)的響應(yīng),則用戶將總是以微小的概率接受響應(yīng)。
所提出的方法是完整的或健全的證明。
1)完整性證明。
只須證明Φ1=Φ2就可。
Φ1=H′S′modP
(4)
從(5)式和(6)式可以得出Φ1=Φ2。
2)健全性證明。
在這個(gè)證明中,表明一個(gè)不誠(chéng)實(shí)的服務(wù)器不能通過(guò)使用預(yù)先計(jì)算的元數(shù)據(jù)來(lái)欺騙用戶。主要有2種可能性,即服務(wù)提供商可以在不存儲(chǔ)用戶數(shù)據(jù)的情況下計(jì)算響應(yīng)。
如果服務(wù)器猜測(cè)或使用預(yù)先計(jì)算的元數(shù)據(jù),首先猜測(cè)正確的response以可忽略的概率發(fā)生,并且如果服務(wù)器嘗試使用預(yù)先計(jì)算的response,那么這是不可能的,因?yàn)槊看斡脩羰褂肧obol隨機(jī)序列向服務(wù)器發(fā)送一個(gè)新的隨機(jī)challenge,這是很難猜測(cè)到的。
另一種方法是通過(guò)基于先前的challenge發(fā)送response來(lái)欺騙用戶,在這種情況下,服務(wù)器必須從challenge Chall中找到j(luò)來(lái)計(jì)算正確的證明。
在本節(jié)中,通過(guò)測(cè)量3種操作(文件編碼,驗(yàn)證和再生)的運(yùn)行時(shí)間,分析本文提出的云存儲(chǔ)方案的性能,另外,還將此方法的運(yùn)行時(shí)間開(kāi)銷與現(xiàn)有的方法進(jìn)行比較。
實(shí)驗(yàn)環(huán)境:Intel Core i3 CPU和3 GB RAM的筆記本電腦,在MATLAB R2014b中使用各種參數(shù)進(jìn)行實(shí)驗(yàn)。在圖4顯示了文件編碼操作和再生操作的運(yùn)行時(shí)間,編碼矩陣的生成很容易,因?yàn)椴簧婕叭魏嗡阈g(shù)運(yùn)算。
圖4 文件編碼和再生操作的運(yùn)行時(shí)間Fig.4 Runtime for file encoding and regeneration operations
從圖4可以看到,隨著文件大小增加,編碼矩陣的生成時(shí)間逐漸增加,將文件大小為50 MByte的doc文件分成多個(gè)塊時(shí),執(zhí)行文件編碼操作所需的平均時(shí)間為3.64 s。對(duì)于再生操作運(yùn)行時(shí)間,這是精確的修復(fù),編碼和解碼規(guī)則不需要更新,因此計(jì)算復(fù)雜度較低。在實(shí)驗(yàn)中,將文件大小為50 MByte的doc文件分成多個(gè)塊時(shí),再生操作的平均時(shí)間為0.189 s。
將本文方法與糾刪碼(reed-solomon code, R-S code)和功能最小存儲(chǔ)再生碼functional minimum storage regenerating code, FMSR code)進(jìn)行比較。
圖5 驗(yàn)證操作的運(yùn)行時(shí)間Fig.5 Runtime of verification operations
在圖5中顯示了驗(yàn)證操作的運(yùn)行時(shí)間,改變challenge中塊的數(shù)量與驗(yàn)證操作運(yùn)行時(shí)間的關(guān)系,階段性成線性關(guān)系,并且與其他2種方法比較,本文方法運(yùn)行時(shí)間更短。
在圖6中,比較了本文方法與其他方法對(duì)云存儲(chǔ)數(shù)據(jù)安全性驗(yàn)證的總體運(yùn)行時(shí)間。
由圖6可以看出來(lái),本文方法在云存儲(chǔ)數(shù)據(jù)安全性用時(shí)更少,并且隨著文件的增大,運(yùn)行時(shí)間減少的更明顯。
圖7比較了本文方法與其他方法在challenge中塊的數(shù)量與編碼速率的關(guān)系,由圖7可以得到本文方法編碼速率高于其他2種方法,隨著challenge中塊的數(shù)量的增加,編碼速率呈下降趨勢(shì),但本文方法還是優(yōu)于其他2種方法。
圖6 不同方法對(duì)云數(shù)據(jù)安全性驗(yàn)證的運(yùn)行時(shí)間Fig.6 Running time of cloud data security verification under different methods
圖7 不同方法下編碼速率Fig.7 Code rate under different methods
在本文中,通過(guò)加密哈希函數(shù)提出了一種基于EEMSR的新方法,以確保存儲(chǔ)在云中的數(shù)據(jù)的完整性和可用性。從安全分析中發(fā)現(xiàn)本文方法足夠安全,適用于多種類型的攻擊。實(shí)驗(yàn)表明,本文方法是可行的與有效的,并且與現(xiàn)有其他方法比較,本文方法花費(fèi)較少的運(yùn)行時(shí)間。本文方法使得云存儲(chǔ)服務(wù)更安全,通過(guò)確保完整性以及存儲(chǔ)在云中數(shù)據(jù)的可用性,具有較少的運(yùn)行時(shí)間開(kāi)銷。