王志高,鄧 科,嚴(yán)利雄,王身麗,李 挺
(國網(wǎng)湖北省電力公司 檢修公司,武漢 430050)
在云計(jì)算時代,人們的生產(chǎn)和生活方式發(fā)生了深刻的改變,云計(jì)算平臺具有巨大的存儲空間和強(qiáng)大的計(jì)算能力[1].在越來越多的數(shù)據(jù)被遷移到云平臺的同時,云平臺的安全問題也越發(fā)受到關(guān)注[2-3].使用云平臺存儲海量數(shù)據(jù)主要存在兩方面的潛在危險:一是數(shù)據(jù)采集過程中使用大量的虛擬化基礎(chǔ)設(shè)備,為數(shù)據(jù)帶來了泄露或丟失的風(fēng)險;二是數(shù)據(jù)量呈爆發(fā)式增長,結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的混合使用也會造成其安全性問題[4].目前,主要通過采用各種加密機(jī)制來保護(hù)其安全,這些加密機(jī)制根據(jù)數(shù)據(jù)類型主要分為動態(tài)加密機(jī)制和靜態(tài)加密機(jī)制[5-6].靜態(tài)加密主要包括對稱和非對稱兩種加密算法,對稱加密算法使用相同的加密密鑰與解密密鑰,如RC4、RC5和RC6等;而非對稱加密算法對加密與解密使用不同的密鑰,如RSA及EIGamal算法等.動態(tài)加密機(jī)制主要使用同態(tài)加密機(jī)制,如基于理想格的同態(tài)加密算法能夠?qū)崿F(xiàn)所有屬性的同態(tài)加密[7-8].
在云平臺下數(shù)據(jù)的備份和恢復(fù)主要采用異地備份、快照和數(shù)據(jù)鏡像等方式[9-10].而數(shù)據(jù)的隱私保護(hù)主要采用基于匿名化的隱私保護(hù)技術(shù)、基于完整性驗(yàn)證的隱私保護(hù)技術(shù)和基于數(shù)據(jù)變換的隱私保護(hù)技術(shù)[11],其中,基于匿名化的隱私保護(hù)技術(shù)和基于數(shù)據(jù)變換的隱私保護(hù)技術(shù)容易導(dǎo)致數(shù)據(jù)丟失;基于完整性驗(yàn)證的隱私保護(hù)技術(shù)需要較大的計(jì)算開銷,因此,研究針對不同的數(shù)據(jù),根據(jù)其實(shí)際需求采用不同的隱私保護(hù)技術(shù),可以極大地實(shí)現(xiàn)隱私保護(hù)的目的[12-14].
本文充分考慮云平臺下數(shù)據(jù)計(jì)算和存儲問題,提出了一種基于同態(tài)加密機(jī)制的云平臺安全保護(hù)算法,該算法能系統(tǒng)地保證云平臺數(shù)據(jù)的安全,達(dá)到計(jì)算信息和數(shù)據(jù)隱私保護(hù)的目的,并且解決了協(xié)議進(jìn)行的數(shù)據(jù)恢復(fù)與完整性驗(yàn)證的問題.
本文基于阿里云服務(wù)系統(tǒng),提出了一種基于云端多服務(wù)器的計(jì)算保護(hù)算法.該算法使用多個云服務(wù)器存儲加密后的數(shù)據(jù),由一個代理服務(wù)器按照用戶的需求對不同的數(shù)據(jù)生成不同的加密結(jié)果,并反饋給用戶.該算法不僅能獲得更精確、更快捷的計(jì)算結(jié)果,且還能節(jié)省數(shù)據(jù)使用者的存儲空間和存儲成本.
計(jì)算保護(hù)算法的目標(biāo)是實(shí)現(xiàn)數(shù)據(jù)的完整性、用戶響應(yīng)的正確性和用戶信息的隱私性.本文所使用的計(jì)算保護(hù)算法架構(gòu)如圖1所示,架構(gòu)使用了4個不同的網(wǎng)絡(luò)實(shí)體,各實(shí)體定義如下:1)User(用戶),為云平臺的使用者,從云平臺獲取數(shù)據(jù)存儲的結(jié)果;2)Data Owner(數(shù)據(jù)擁有者),云計(jì)算平臺通常含有多個User,該算法設(shè)計(jì)了多用戶擁有者,并設(shè)置各用戶具有多個數(shù)據(jù)條目;3)Cloud Server(云服務(wù)器),云服務(wù)器為Data Owner提供存儲空間以存儲海量數(shù)據(jù);4)Proxy Server(代理服務(wù)器),代理服務(wù)器負(fù)責(zé)接收并響應(yīng)User的數(shù)據(jù)存儲請求.
圖1 計(jì)算保護(hù)算法架構(gòu)
計(jì)算保護(hù)算法包括準(zhǔn)備、數(shù)據(jù)上傳和計(jì)算3個階段,各階段具體描述如下:
1)準(zhǔn)備階段.User通過調(diào)用密鑰生成算法,輸入安全參數(shù)即可生成輸出加密密鑰Ke和解密密鑰Kd,并與Data Owner共享密鑰且確定最大樣本數(shù)MAX.
2)上傳階段.上傳階段包括數(shù)據(jù)標(biāo)識生成、加密、添加空樣本和Salt-hash生成4個步驟:
① 標(biāo)識生成.第i個Data Owner調(diào)用標(biāo)識生成函數(shù)并輸入第j條數(shù)據(jù)條目Tij,即可生成Tij所對應(yīng)的標(biāo)識Tagij;
② 加密.第i個Data Owner調(diào)用同態(tài)加密算法并輸入加密密鑰及Tij所對應(yīng)的數(shù)據(jù)值Vij,可生成密文cij,即可生成數(shù)據(jù)條目及其值對應(yīng)的二元組(Tagij,cij);
③ 添加空樣本.當(dāng)Data Owner所擁有的總數(shù)據(jù)條目小于最大樣本數(shù)時,生成一個與(Tagij,cij)等長的空樣本(dtag,dvalue),其中,dtag為空樣本條目,dvalue為空樣本的值.該樣本并不具有實(shí)際意義,但有助于保護(hù)用戶數(shù)據(jù);
3)計(jì)算階段.計(jì)算階段包括數(shù)據(jù)請求、驗(yàn)證和計(jì)算3個步驟:
① 數(shù)據(jù)請求.用戶通過(Tij,Tagij)查找數(shù)據(jù)條目Tij所對應(yīng)的Tagij和Cloud Server,并隨即添加dtag來保證請求的隱私性,且根據(jù)結(jié)果查找隨機(jī)數(shù)δk.查找結(jié)束后,將δk、hk及隨機(jī)數(shù)生成法則發(fā)送給代理服務(wù)器.
② 驗(yàn)證.驗(yàn)證步驟實(shí)現(xiàn)User和Cloud Server的完整性驗(yàn)證,首先代理服務(wù)器將δk、hk發(fā)送給Cloud Server,Cloud Server根據(jù)接收的信息作應(yīng)答并返回(Tagij,cij,dtag,h′k)給代理服務(wù)器,之后代理服務(wù)器將h′k發(fā)送給User,最后User比較加收的h′k和本地存儲的hk,若h′k=hk,表明數(shù)據(jù)完整,并將結(jié)果發(fā)送給代理服務(wù)器,結(jié)束驗(yàn)證.
③ 計(jì)算.代理服務(wù)器接收到驗(yàn)證結(jié)果后,根據(jù)隨機(jī)數(shù)生成法則計(jì)算驗(yàn)證結(jié)果并發(fā)送給User.若無法通過完整性驗(yàn)證則向代理服務(wù)器發(fā)送錯誤信息;若通過驗(yàn)證,User使用解密算法得到解密后的結(jié)果.
對上述算法進(jìn)行安全和效率分析:
1)安全分析.計(jì)算保護(hù)算法為了保證數(shù)據(jù)的安全隱私,對數(shù)據(jù)擁有者上傳的所有數(shù)據(jù)均進(jìn)行了同態(tài)加密.當(dāng)云平臺受到攻擊時,其只能獲取加密后的數(shù)據(jù),而無法獲取密鑰且不能恢復(fù)出原數(shù)據(jù),因此,該算法能保證用戶數(shù)據(jù)的隱私性.
在數(shù)據(jù)協(xié)議處理過程中,代理服務(wù)器和云服務(wù)器可能會統(tǒng)計(jì)分析各條目內(nèi)容及其對應(yīng)值.而在數(shù)據(jù)上傳的過程中,已使用密鑰生成函數(shù)對其進(jìn)行了處理.由于密鑰具有不可逆性,因此代理服務(wù)器和云服務(wù)器均無法得知條目的內(nèi)容.同時,算法為了保護(hù)用戶數(shù)據(jù)添加空樣本,空樣本也會參與計(jì)算過程,所以代理服務(wù)器和云服務(wù)器無法確定用戶數(shù)據(jù)情況,該算法能同時保護(hù)條目內(nèi)容和條目數(shù)的隱私性.
該算法也使用了挑戰(zhàn)-應(yīng)答的形式來驗(yàn)證數(shù)據(jù)的完整性,并使用了Salt-hash值規(guī)避代理服務(wù)器和云服務(wù)器會隱瞞已發(fā)生的數(shù)據(jù)事故的問題,因此,算法能保證計(jì)算結(jié)果的完整性和正確性.
數(shù)據(jù)完整性隱私保護(hù)算法用于驗(yàn)證數(shù)據(jù)完整性及在數(shù)據(jù)發(fā)生損壞時,能及時恢復(fù)被破壞的數(shù)據(jù)的能力.該算法的系統(tǒng)模型與計(jì)算保護(hù)算法類似,且對User、Data Owner和Proxy Server的定義與計(jì)算保護(hù)算法的定義一致,而這里的Cloud Server定義是為Data Owner提供存儲空間以存儲海量數(shù)據(jù),與計(jì)算保護(hù)算法不同,這里不再為數(shù)據(jù)擁有者指定特定的云服務(wù)器,數(shù)據(jù)擁有者只需將數(shù)據(jù)發(fā)送給云平臺即可.
該算法主要考慮云計(jì)算平臺對數(shù)據(jù)完整性造成的威脅,即云平臺管理不善或受黑客攻擊時對數(shù)據(jù)的破壞.此處使用RS編碼算法對文件進(jìn)行編碼,假設(shè)待編碼文件為Ci={Ci,1,Ci,2,…,Ci,MAX},編碼參數(shù)為t,編碼后的結(jié)果為Cicode={Cicode,1,Cicode,2,…,Cicode,MAX}.RS編碼算法使用糾錯能力較強(qiáng)的多元BCH碼,具體編碼算法為
CiD=(Ci,1,Ci,2,…,Ci,MAX)(I|R)=
{Ci,1,Ci,2,…,Ci,MAX,Ci,MAX+1,…,Ci,t}=
{Cicode,1,Cicode,2,…,Cicode,MAX}
式中:D=(I|R)為分布矩陣;R為監(jiān)督碼多項(xiàng)式.
數(shù)據(jù)完整性隱私保護(hù)算法包括準(zhǔn)備階段、上傳階段、驗(yàn)證階段和數(shù)據(jù)恢復(fù)4個模塊,具體實(shí)現(xiàn)過程如下:
1)準(zhǔn)備階段.準(zhǔn)備階段由用戶調(diào)用秘鑰生成算法,輸入安全參數(shù)即可生成輸出加密密鑰Ke和解密密鑰Kd,并與Data Owner共享密鑰且確定最大樣本數(shù)MAX及編碼參數(shù)t.
2)上傳階段.數(shù)據(jù)擁有者調(diào)用編碼函數(shù),生成密文Ci={Ci,1,Ci,2,…,Ci,MAX}和編碼文件Cicode={Cicode,1,Cicode,2,…,Cicode,t}以及每個文件對應(yīng)的Hash值{H(Cicode,1),H(Cicode,2),…,H(Cicode,t)}.
圖2 挑戰(zhàn)應(yīng)答過程
4)數(shù)據(jù)恢復(fù).當(dāng)云平臺接收到報錯信息后,啟動數(shù)據(jù)恢復(fù)機(jī)制即可根據(jù)文件的哈希值和RS編碼算法恢復(fù)出不完整的數(shù)據(jù)塊.假設(shè)需要恢復(fù)的數(shù)據(jù)塊為D,則數(shù)據(jù)恢復(fù)表達(dá)式為
(Cicode,r1,Cicode,r2,…,Cicode,rn)(I|R)-1D=
{Cicode,s1,Cicode,s2,…,Cicode,sn}
式中:{Cicode,r1,Cicode,r2,…,Cicode,rn}為編碼文件;{Cicode,s1,Cicode,s2,…,Cicode,sn}為恢復(fù)后的文件;(I|R)-1D為D對應(yīng)的分布矩陣構(gòu)成的逆矩陣.
為了驗(yàn)證本文所提出算法的有效性,文中基于阿里云平臺進(jìn)行仿真測試.本文采用個人醫(yī)療記錄數(shù)據(jù)作為需要加密存儲的數(shù)據(jù),這些數(shù)據(jù)為非結(jié)構(gòu)性數(shù)據(jù),包含文本和圖片.數(shù)據(jù)的最大樣本數(shù)MAX固定為20,使用MD5哈希算法對數(shù)據(jù)進(jìn)行編碼,每個數(shù)據(jù)樣本的大小為1 MB.
本文使用不同數(shù)量的數(shù)據(jù)測試本文算法進(jìn)行數(shù)據(jù)編解碼所需時間,結(jié)果如圖3所示.從圖3可以看出,計(jì)算保護(hù)算法和數(shù)據(jù)完整性隱私保護(hù)算法均能在較短的時間內(nèi)完成數(shù)據(jù)編碼和隱私保護(hù),且數(shù)據(jù)完整性隱私保護(hù)算法所需的計(jì)算時間更短.計(jì)算保護(hù)算法在處理時需要預(yù)計(jì)算多個Salt-hash值,這會導(dǎo)致一定程度的時間浪費(fèi).
圖3 不同長度數(shù)據(jù)的處理時間
本文通過添加不同長度冗余數(shù)據(jù)測試了數(shù)據(jù)完整性隱私保護(hù)算法的數(shù)據(jù)恢復(fù)能力,不同長度數(shù)據(jù)的編碼及解碼結(jié)果如圖4、5所示.實(shí)驗(yàn)結(jié)果表明,添加越多的冗余數(shù)據(jù)所需要的編碼時間越長.但當(dāng)數(shù)據(jù)發(fā)生錯誤時,能正確恢復(fù)的概率越高.而對于數(shù)據(jù)解碼所需的時間并無明顯的規(guī)律,表明用戶選擇不同的參數(shù)并不能影響云平臺的工作效率.
圖4 不同長度數(shù)據(jù)編碼所需時間
圖5 不同長度數(shù)據(jù)解碼所需時間
本文從數(shù)據(jù)存儲和計(jì)算結(jié)果兩方面分析所提出算法的安全性.本文算法只將用戶上傳的數(shù)據(jù)存儲在云服務(wù)器,并對數(shù)據(jù)進(jìn)行加密,當(dāng)服務(wù)器受到攻擊時,黑客只能獲取加密后的密文,而由于秘鑰是保存在用戶本地的,因此,黑客無法恢復(fù)出原始數(shù)據(jù).對于計(jì)算結(jié)果,本文算法使用Proxy Server接收用戶的請求,并計(jì)算云服務(wù)器所存儲的數(shù)據(jù),然后返回計(jì)算結(jié)果給用戶,但是Proxy Server并不擁有數(shù)據(jù)秘鑰,因此能保證計(jì)算結(jié)果的隱私性.
為了保證云平臺的安全,在充分考慮云平臺數(shù)據(jù)計(jì)算和存儲問題的基礎(chǔ)上,提出一種基于同態(tài)加密機(jī)制的云平臺計(jì)算安全保護(hù)算法和云平臺數(shù)據(jù)完整性隱私保護(hù)算法.云平臺計(jì)算安全保護(hù)算法能成功實(shí)現(xiàn)云平臺對加密后的用戶數(shù)據(jù)進(jìn)行安全計(jì)算,并使用同態(tài)加密算法保護(hù)用戶詳細(xì)信息.云平臺數(shù)據(jù)完整性隱私保護(hù)算法能保證數(shù)據(jù)的完整性,并在數(shù)據(jù)遭受破壞時恢復(fù)出原始數(shù)據(jù).仿真測試與實(shí)驗(yàn)結(jié)果表明,所提出的方法使用較小的計(jì)算代價即可有效保證云平臺數(shù)據(jù)的安全.