貢 堅,王少輝,李燦燦
(南京郵電大學 計算機學院、軟件學院、網(wǎng)絡空間安全學院,南京 210003) (江蘇省無線傳感網(wǎng)高技術(shù)研究重點實驗室,南京 210003) (江蘇省大數(shù)據(jù)安全與智能處理重點實驗室,南京 210003)
隨著云存儲技術(shù)的飛速發(fā)展,越來越多的用戶將他們的數(shù)據(jù)文件外包給云服務器(Cloud Server,CS),來享受近乎無限的存儲空間和計算能力.根據(jù)文獻[1]的研究,截至2013年底,世界數(shù)據(jù)總量估計為4.4 ZB,到2020年將達到44 ZB.當大量用戶將其數(shù)據(jù)外包給云服務器時,相同數(shù)據(jù)的冗余副本會導致存儲空間的大量浪費.為了有效利用存儲資源,CS通常采用重復數(shù)據(jù)刪除技術(shù)[2]來消除冗余副本而僅存儲一個內(nèi)容副本,實現(xiàn)50-90%的存儲空間節(jié)省.重復數(shù)據(jù)刪除技術(shù)主要分為兩種:1)服務器端去重,用戶將全部數(shù)據(jù)上傳至CS,在CS端實現(xiàn)去重.2)客戶端去重,能夠避免在去重過程中用戶上傳整個數(shù)據(jù),節(jié)約了通信開銷.因此客戶端去重技術(shù)已廣泛應用于企業(yè)CS系統(tǒng),如Dropbox,Google Drive和Mozy.
為了提高外包數(shù)據(jù)的隱私性,用戶通常將加密后的數(shù)據(jù)上傳到CS,但此策略與重復數(shù)據(jù)刪除技術(shù)相沖突.傳統(tǒng)加密方案中,不同用戶采用不同私鑰對相同數(shù)據(jù)加密時,會導致完全不同的密文,這意味著無法應用重復數(shù)據(jù)刪除技術(shù).為了克服這種困境,研究人員提出了基于收斂加密(Convergent Encryption,CE)[3]的方案.CE以確定的方式從數(shù)據(jù)明文中導出加密密鑰,相同明文具有相同的密文,即加密只與明文數(shù)據(jù)相關(guān),而與用戶無關(guān).但是,CE方案存在很大的安全問題,如暴力字典攻擊[4]:對于信息熵小的明文,攻擊者可以通過窮舉得方式輕易猜測出收斂密鑰.Bellare等人[5]提出了DupLESS方案,他們通過引入密鑰服務器來抵制上述暴力攻擊.但該方案無法靈活地控制其他用戶對數(shù)據(jù)的訪問.Wen等人[6]提出了收斂密鑰管理和共享方案,但是要求所有數(shù)據(jù)所有者相互通信以管理他們的收斂密鑰.Liu等人[7]基于PAKE協(xié)議[8]提出了安全的跨用戶重復數(shù)據(jù)刪除方案,該方案支持客戶端去重,且無需任何額外的獨立服務器,但此方案要求數(shù)據(jù)所有者始終在線進行擁有權(quán)認證和數(shù)據(jù)去重.Karthika等人[9]通過在將數(shù)據(jù)塊發(fā)送到服務器之前對數(shù)據(jù)塊進行簽名來實現(xiàn)隱私保護和公共審計,但其效率依然不高.文獻[10]引入一個第三方的密鑰服務器,基于RSA盲簽名技術(shù)對收斂密鑰進行二次加密,進而有效地抵抗了暴力字典的攻擊,但其在密鑰管理過程中將加密密鑰分成三部分分別存儲,并且所有用戶均需對數(shù)據(jù)進行加密來計算密文哈希值作為重復認證標簽密鑰,導致其在計算和存儲成本上過高,因而整個方案存在效率偏低問題.
對于客戶端去重,由于外部攻擊者可以只憑借文件重復驗證標簽即可從CS獲得相應的文件下載權(quán)限,故而提出了擁有權(quán)證明(Proof of Ownership,PoW)的方法,即用戶必須向CS證明其確實擁有相關(guān)重復數(shù)據(jù).目前PoW方法主要有基于數(shù)字簽名[11]、Merkle 哈希樹[12]以及Bloom過濾器[13]等.文獻[14]提出了基于加同態(tài)重加密(Additive Homomorphic Re-Encryption,AHRE)的去重方案,該方案利用文件哈希值生成認證信息來完成擁有權(quán)認證,提高了認證效率.然而該方案中,PoW認證信息容易遭受暴力字典攻擊,并且用戶的認證信息缺乏實時性保護,難以抵抗重放攻擊,同時在其密鑰管理過程中存在第三方服務器可解密獲得用戶文件加密密鑰的安全問題.
本文對云存儲中客戶端密文去重方案進行了研究,提出了一個新的客戶端密文去重方案.選用HMAC函數(shù)生成重復驗證標簽,具有較高的運行效率.利用文獻[10]的盲簽名技術(shù)以抵御CS的暴力字典攻擊,生成HMAC函數(shù)密鑰.改進文獻[14]所提的擁有權(quán)認證算法,通過CS引入隨機因子來保證認證信息實時性,其次利用重復驗證標簽密鑰生成PoW認證信息以抵抗暴力字典攻擊.最后,借鑒Joux提出的三方密鑰協(xié)商協(xié)議的思想[15],提出了一個新的文件加密密鑰管理方案.新方案中,文件加密密鑰密文在CS中只需存儲一次,用戶在其本地只需存儲文件重復驗證標簽以及文件哈希值即可.分析表明新方案不僅提高了用戶擁有權(quán)認證過程的安全性,還有效的降低了存儲和計算開銷,提高了密鑰管理效率.
如圖1所示,云存儲中客戶端密文去重方案主要包含以下3個實體:
1)用戶:用戶將其數(shù)據(jù)密文安全外包給CS,來享受近乎無限的存儲資源.
2)云服務器:CS為用戶提供數(shù)據(jù)外包服務,它與用戶合作利用重復數(shù)據(jù)刪除技術(shù)來節(jié)省自身存儲空間.我們認為CS是半誠實的,即CS嚴格按照協(xié)議執(zhí)行數(shù)據(jù)的去重與存儲,但對用戶上傳的數(shù)據(jù)是好奇的,希望能夠竊取用戶的數(shù)據(jù)信息.
3)密鑰服務器(Key Server,KS):KS與用戶合作生成HMAC函數(shù)的密鑰,以增強擁有權(quán)認證信息以及重復驗證標簽對暴力字典攻擊的安全性;并且與CS合作負責用戶文件加密密鑰的管理,認為KS是可信的,同時要求KS不能與CS進行合謀.
客戶端密文去重方案可分為兩個主要部分:數(shù)據(jù)上傳過程和數(shù)據(jù)下載過程.
圖1 客戶端密文去重系統(tǒng)模型Fig.1 Client ciphertext deduplication system model
數(shù)據(jù)上傳過程中,用戶首先與KS合作產(chǎn)生待上傳文件的重復驗證標簽密鑰TK,然后和CS交互判斷是否已經(jīng)有相同文件數(shù)據(jù)存儲在CS中.如果是首次上傳,則使用隨機選取的密鑰對文件加密,并利用TK生成相關(guān)的PoW驗證信息.用戶最終上傳重復驗證標簽、文件密文、文件加密密鑰密文、PoW驗證信息.如果不是首次上傳,用戶需與CS進行PoW擁有權(quán)認證.
當用戶進行數(shù)據(jù)下載時,合法用戶通過存儲的文件重復驗證標簽即可下載到數(shù)據(jù)密文,對于非法用戶,CS會拒絕其下載.CS和KS合作對文件加密密鑰的密文進行處理,以便用戶可以獲得文件加密密鑰,從而解密得到文件明文,并且用戶可以利用保存的文件Hash值驗證下載的文件是否完整.
在新的方案中,可能的威脅主要來自內(nèi)部攻擊者CS、KS以及外部攻擊者,客戶端密文去重方案應實現(xiàn)以下安全目標:
2.2.1 密鑰安全性
新方案主要涉及重復驗證標簽密鑰和文件加密密鑰.對于重復驗證標簽密鑰,要求攻擊者、KS或CS無法通過擁有權(quán)認證信息或者重復驗證標簽猜測出用戶的文件哈希值,即抗暴力字典攻擊.對于文件加密密鑰,則要求攻擊者或CS不能通過密鑰密文還原出用戶的加密密鑰.通過攻擊者A和挑戰(zhàn)者Ch的如下游戲給出方案抗暴力字典攻擊的安全定義,此時A模擬惡意服務器,而Ch模擬用戶和KS.
1)攻擊者A和Ch生成各自相應的公私鑰參數(shù)后,攻擊者可訪問如下預言機:
重復驗證標簽密鑰生成預言機OTK:A選定文件F,OTK預言機返回相應的重復驗證標簽密鑰TK.
協(xié)議交互預言機OPI:通過該預言機,Ch模擬用戶和攻擊者A交互完成對文件File的上傳或下載.
2)攻擊者A選擇選擇兩個文件K1和K2,要求A未就兩個文件訪問過OTK預言機,并發(fā)送給Ch.Ch隨機選擇b∈{0,1},計算Kb相應的重復驗證標簽密鑰TKb.
3)A可以繼續(xù)訪問OTK和OPI預言機,但要求不能就K1,K2對OTK預言機進行質(zhì)詢.
4)Ch對文件Kb與A交互執(zhí)行OPI預言機,最后A輸出b′∈{0,1},如果b=b′,則A獲勝.如果攻擊者成功的概率優(yōu)勢|Pr[b=b′]-0.5|是可忽略的,則稱方案能成功抵御暴力字典攻擊.
2.2.2 數(shù)據(jù)完整性
數(shù)據(jù)完整性也包括兩方面.一是在CS檢測到用戶待上傳數(shù)據(jù)已經(jīng)存在時,CS需要認證用戶是否擁有完整的數(shù)據(jù)文件,即用戶擁有權(quán)證明.二是在用戶下載階段,用戶需要驗證CS中存儲數(shù)據(jù)是否完整而未被破壞或修改.為了抵御外部攻擊者在沒有實際數(shù)據(jù)文件的情況下通過用戶擁有權(quán)證明,給出如下的安全定義,此時攻擊者A模擬惡意用戶,而挑戰(zhàn)者Ch模擬云服務器:
1)攻擊者A執(zhí)行多項式次數(shù)的重復驗證標簽密鑰生成預言機OTK和協(xié)議交互預言機OPI詢問.
2)攻擊者A選擇文件File,要求未就文件File訪問過OTK預言機,并發(fā)送給Ch.Ch訪問OTK預言機并計算File的PoW驗證信息.
3)A可以繼續(xù)訪問OTK和OPI預言機,但要求不能就文件File對OTK預言機進行質(zhì)詢.
4)攻擊者A和Ch就文件File執(zhí)行PoW驗證,若A能通過驗證的概率是可忽略的,則稱方案滿足上傳數(shù)據(jù)的完整性驗證.
2.2.3 數(shù)據(jù)機密性
用戶需要將數(shù)據(jù)加密后上傳到云服務器CS,這里通常采用傳統(tǒng)的對稱加密方案,如AES算法,因此認為在語義上,被加密的數(shù)據(jù)是安全的,攻擊者不能通過用戶上傳的密文獲得明文信息.
雙線性映射:設(shè)q是一個大素數(shù),G1和G2是兩個階為q的乘法群.G1到G2的雙線性映射e:G1×G1→G2滿足以下性質(zhì):
2)非退化性.對于所有的P,Q∈G1,滿足e(P,Q)≠1.
3)可計算性.對任意的P,Q∈G1,存在一個有效算法計算e(P,Q).
新方案的安全性基于如下的困難性假設(shè):
新的客戶端密文去重方案主要包括以下3個算法:系統(tǒng)初始化(System Setup),數(shù)據(jù)上傳(Data Upload)以及數(shù)據(jù)下載(Data Download).
選擇兩個階為大素數(shù)l的乘法群G1和G2,e:G1×G1→G2是雙線性映射,隨機選取g∈G1,計算V=e(g,g)∈G2,H(·):{0,1}*→G1是安全hash函數(shù),HMAC是安全的認證碼函數(shù).
KS需要生成兩個私鑰/公鑰對:
數(shù)據(jù)上傳階段,Ui與KS交互對文件哈希值進行加密生成文件重復認證標簽密鑰,并計算待上傳文件F的認證標簽發(fā)送給CS.如果發(fā)現(xiàn)標簽已經(jīng)存在則進入用戶擁有權(quán)證明階段,否則說明文件不存在用戶需上傳數(shù)據(jù)信息.具體過程如下:
生成重復驗證標簽密鑰TK:為了獲得TK,Ui協(xié)同KS執(zhí)行文獻[10]中的RSA盲簽名算法,具體過程如下:
Ui隨機選擇r·Zn,計算:
x=h·rβmodN,h=H(F)
(1)
將其發(fā)送給KS.
KS計算:
y=xdmodN
(2)
并將y返回給Ui.
Ui收到y(tǒng)之后計算:
TK=y·r-1mod N=(h·rβ)d·r-1modN=hdmod N
(3)
并驗證h=TKβmod N是否成立,如果成立輸出TK,否則輸出無效.
上傳重復驗證標簽:Ui得到TK后,計算標簽T=HMAC(TK,F),并將T發(fā)送CS.
式中,E(r)為入射光在焦平面上的光場分布,F(xiàn)i(r)為少模光纖不同模式下的模場,ds為焦平面處面元.
(4)
隨后,Ui以CK作為對稱加密算法的密鑰對文件F加密,得到密文C=Enc(CK,F),并計算T′=e(PKcs,gTK),最后將{C,T,T′,[CK],Pkui}發(fā)送給CS存儲.
用戶擁有權(quán)證明:CS檢測到標簽T存在,則進入擁有權(quán)證明階段.具體過程如下:
(5)
如果CS發(fā)現(xiàn)該值與存儲的T′相同,則認為Ui擁有完整文件,并保存擁有該文件的用戶身份信息Ui.此時Ui無需上傳任何其他信息,只需在本地存儲重復驗證標簽T以及文件hash值h即可.否則,認證失敗.
(6)
(7)
最后,KS將CK2發(fā)回給CS,此時A2=CK⊕H(e(ga,PKuj)r3)⊕H(e(gb,PKuj)r4).CS將CK2、D1以及密文C發(fā)送給用戶.用戶利用其私鑰解密得到CK:
CK=A2⊕H(e(ga,D1)xj-1)⊕H(e(gb,D2)xj-1)
(8)
用戶得到CK后,即可解密C得到明文F=Dec(CK,C).最后驗證得到的F的哈希值H(F)與本地存儲的文件哈希值是否相同,以此判斷CS是否損壞存儲文件.若相等,用戶得到F,下載結(jié)束;若不相等,說明CS損壞了用戶存儲的文件.
方案的正確性不再敘述.本節(jié)從三個角度分析了所提方案的安全性:1)密鑰安全性;2)數(shù)據(jù)完整性;3)數(shù)據(jù)機密性.
1)密鑰安全性
定理.如果DL問題在群G1中成立,那么用戶上傳到CS的密鑰是安全的.
證明:對于外部攻擊者,假設(shè)攻擊者A想要從密鑰密文[CK]中獲取文件加密密鑰CK,具體可見式(4).
由于DL問題的困難性,攻擊者A在已知gr1以及gr2的情況下,無法獲得用戶所選的隨機值r1以及r2,因此,攻擊者A在知道用戶公鑰、CS公鑰以及KS公鑰的情況下無法計算出H(e(gxi-1,ga)r1)以及H(e(gxi-1,gb)r2),因此A通過[CK]直接破解得到CK在計算上是不可行的.
對于內(nèi)部攻擊者CS以及KS,這里要求CS與KS之間不能存在合謀攻擊.對于CS,由于其擁有自身私鑰a,因此CS可以計算:H(e(gxi-1,B1)a)=H(e(gxi-1,ga)r1),但由于其無法計算出r2,在無法獲得KS的私鑰b的情況下,CS無法計算出H(e(gxi-1,gb)r2),即僅憑CS無法單獨破解出用戶私鑰.同理,上述論斷對KS也成立.故而如果DL問題在群G1中成立,那么用戶上傳到CS的密鑰是安全的.
2)數(shù)據(jù)完整性
數(shù)據(jù)完整性包括兩個方面:一是用戶擁有權(quán)證明.二是在用戶下載階段,用戶需要驗證CS中存儲數(shù)據(jù)是否完整.
文獻[14]方案中PoW直接計算:
(9)
最后,在用戶下載階段,用戶可以利用本地保存的文件哈希值H(F),驗證其與解密后得到的明文F計算的哈希值是否相等,由此可以避免CS破壞或者修改文件,從而保證CS中存儲數(shù)據(jù)的完整性.
3)數(shù)據(jù)機密性
在本文所提方案中,所有數(shù)據(jù)均加密存放在CS中.由于數(shù)據(jù)文件的加密密鑰的安全性,攻擊者無法獲得用戶的數(shù)據(jù)加密密鑰,也因此無法獲得用戶的數(shù)據(jù)明文.
考慮到云服務器近乎無限的計算能力,本節(jié)從計算成本和存儲成本兩方面分析新方案中用戶在密鑰加密、解密以及擁有權(quán)驗證過程的效率.由于本文的重復認證標簽密鑰生成與文獻[10]中一致,故在此忽略對這一部分的效率分析,其次沒有考慮對對稱加密算法的分析.
計算成本:分別用Tm,Tc表示執(zhí)行一次群上模冪以及模乘運算所需的時間.Tpar表示進行一次雙線性對運算所需的時間,而Thash表示執(zhí)行哈希運算所需的時間,N表示用戶數(shù)量.
表1 與文獻[14]擁有權(quán)認證中用戶計算成本比較
Table 1 Computational cost comparison of proof of ownership with [14]
文獻[14]所提方案新方案擁有權(quán)認證Tm+TcTm+Tc
表1列出了新方案與文獻[14]所提方案在擁有權(quán)認證上用戶的計算成本比較,可以看出,文獻[14]所提方案與新的方案具有相同的用戶計算開銷.
表2 與文獻[10]密鑰管理中用戶計算成本比較
Table 2 Computational cost comparison of key management with [10]
文獻[10]所提方案新方案密鑰加密2·Tpar+Tm+Tc+Thash2·(Thash+Tpar)密鑰解密2·Tm+Tc+2·Thash+2·Tpar2·(Thash+Tpar)
表2列出了新方案與文獻[10]在密鑰管理上用戶的計算成本比較.文獻[10]所提方案將密鑰分三份存儲,整個過程分為密鑰分發(fā)和密鑰檢索兩個階段.其密鑰分發(fā)(即密鑰加密)過程中用戶耗時2·Tpar+2·Tm+Tc+Thash,在密鑰檢索階段(即密鑰解密部分),整個過程用戶耗時Tm+Tc+2·Thash+2·Tpar. 新方案中,密鑰加密上傳過程只需第一位用戶計算即可,整個過程包括兩次哈希運算以及進行兩次雙線性對運算,耗時2·(Thash+Tpar).在用戶解密階段,每個用戶只需要進行兩次哈希運算以及兩次雙線性對運算,故用戶開銷為2·(Thash+Tpar).
存儲成本:表3顯示了與文獻[10]存儲成本的比較結(jié)果.文獻[10]中,密鑰被分為配對密鑰Pak、部分密鑰Spart、共享密鑰Sshare三部分.其中Sidx為Pak的哈希值,存放在IS(索引服務器)中.KS存儲Sidx以及Spart,CS存儲N份Spart.用戶存儲其私鑰Ssk.新方案中,用戶只需存儲其私鑰SKui,CS存儲密鑰密文[CK]以及首次上傳用戶的公鑰gxi-1即可.
表3 與文獻[10]存儲成本比較
Table 3 Storage cost comparison with [10]
文獻[10]所提方案新方案用戶SskSKuiCSSshare·N[CK],gxi-1KSSidx,Spart-ISSidx-
實現(xiàn):最后為評估新方案的實際效率,使用Java語言,調(diào)用JPBC庫[16]實現(xiàn)并測試了所提方案的性能.Win10系統(tǒng)中進行模擬實現(xiàn),處理器為Intel(R)Core(TM)i5-8300H,主頻2.30GHz,內(nèi)存為8GB.為獲得更好的準確性,分別選擇文件大小為1M、3M、5M、8M以及10M的文本文件(.txt)各20組,對方案進行了100次測試,并計算了所有測試結(jié)果的平均值.選擇AES作為對稱加密算法.除非特別指定,否則測試中的一些參數(shù)被設(shè)置為默認值:1)L(N)=1024位;2)雙線性配對參數(shù)發(fā)生器為A型;3)隨機數(shù)的長度為512位.
圖2 各階段用戶計算時間對比Fig.2 User time comparison at each stage
圖2給出了新方案與文獻[10]在密鑰管理上以及與文獻[14]在擁有權(quán)認證過程中用戶的計算成本對比.可以看出新的方案在計算效率上優(yōu)于文獻[10].同時,在擁有權(quán)認證過程中相比于文獻[14],新方案不僅提高了驗證的安全性,而且用戶的計算效率未發(fā)生改變.最后,新方案的密鑰管理與擁有權(quán)驗證的計算開銷均不受文件大小影響.
重復數(shù)據(jù)刪除有助于提高云服務器存儲的利用率,有效降低云用戶的存儲成本.在本文中,利用文獻[10]中利用盲簽名對收斂密鑰二次加密的思想以及對文獻[14]擁有權(quán)認證的改進,提出了新的客戶端密文重復數(shù)據(jù)刪除方案.該方案能有效的抵抗對文件的暴力字典攻擊,并且提供了安全有效的用戶擁有權(quán)證明以及高效的文件加密密鑰分發(fā)管理功能.分析表明,同文獻[10]所提方案相比,新的方案在重復認證標簽生成以及密鑰管理上效率更優(yōu).由于文獻[10]并沒有提出自己的擁有權(quán)證明方案,而是直接描述了現(xiàn)有的基于Merkle 哈希樹的POW算法,而此類算法在數(shù)據(jù)量過大的情況下由于Merkle 哈希樹的高度過高均存在效率低下的問題,故新方案的Pow算法相比于文獻[10]依然存在優(yōu)勢.同時,在擁有權(quán)認證過程中較之文獻[14],在相同用戶計算開銷下提高了認證的安全性.由于文獻[14]中所提密鑰管理算法存在如下安全問題:第三方服務器(授權(quán)方AP)可以在不需要用戶參與的情況下獨自完成用戶加密密鑰解密,故未與其效率進行對比.新方案需要可信第三方KS的參與,如何簡化系統(tǒng)結(jié)構(gòu),設(shè)計無需額外服務器的安全高效的客戶端密文去重方案是下一步要考慮的問題.