王明慧,曹 杰,潘 琪,邵雨琪,胡若霄
(安徽大學 計算機科學與技術(shù)學院,安徽 合肥 230601)
隨著云計算[1]時代的到來,越來越多的用戶習慣將自己的文件、圖片、視頻等數(shù)據(jù)存儲在云服務(wù)器上。然而在某些情況下用戶可能無法親自檢查外包數(shù)據(jù),此時用戶必須將檢測任務(wù)委托給一個可信的代理[2-3],代理審計的概念應(yīng)運而生[4]。這種方案允許用戶將審計任務(wù)委托給一個可信的第三方代理,當用戶無法訪問云服務(wù)時,代理可以代替用戶定期檢測云中數(shù)據(jù)的完整性。當云返回的證據(jù)無法通過驗證時,代理會采取進一步措施通知用戶,由此提高系統(tǒng)的可用性。
在現(xiàn)存的代理數(shù)據(jù)完整性審計協(xié)議中,用戶的公鑰和身份通過一個數(shù)字證書綁定。數(shù)字證書內(nèi)含有用戶的個人信息和其公鑰信息,同時還附有認證中心的簽名信息。云服務(wù)器為了確保用戶公鑰的有效性需要驗證標簽和附加的用戶公鑰證書。這種簽名與驗證會造成相當大的計算開銷。除了繁重的證書驗證之外,系統(tǒng)還存在復雜的證書管理,即證書生成、交付、撤銷、更新等問題。為了減輕證書的管理開銷,本文采用基于身份的方法[5],將用戶身份作為其公鑰。為了更進一步提高方案的標簽生成效率,本文也借鑒了線上線下簽名[6]的思想。在大多審計協(xié)議中,用戶在對文件計算標簽塊時需要承擔大量計算開銷,而本方案在標簽生成階段采取線上線下分開計算的方式分別對文件各塊計算相應(yīng)的驗證標簽。通過線下的預(yù)計算,使得用戶在上傳文件時可以更快得到數(shù)據(jù)塊標簽,提高了標簽計算的效率。
(1)私鑰生成中心是一個可信第三方,它可以對用戶進行身份認證,并根據(jù)身份為其頒發(fā)私鑰;
(2)用戶是數(shù)據(jù)擁有者,允許其將大量數(shù)據(jù)外包給云,利用云存儲服務(wù)提供的各種接口進行數(shù)據(jù)操作,并擁有簽名和出具委托書的能力;
(3)代理是受用戶委托的第三方,可向云服務(wù)器發(fā)送挑戰(zhàn)請求,并根據(jù)云服務(wù)器返回的證據(jù)檢驗外包數(shù)據(jù)的完整性;
(4)云服務(wù)器是一種擁有大量存儲和計算資源的分布式存儲系統(tǒng),可為用戶提供數(shù)據(jù)存儲服務(wù)。
圖1 系統(tǒng)模型
在該模型中,可信的私鑰生成中心PKG為用戶、云服務(wù)器、代理方發(fā)放私鑰并發(fā)布系統(tǒng)公開參數(shù)。用戶將數(shù)據(jù)外包給云,并生成委托書,用其私鑰對委托書簽名,將委托書及對應(yīng)的簽名發(fā)送給代理以及云服務(wù)器。為了檢測外包數(shù)據(jù)是否被破壞,用戶可以任意指定第三方代理發(fā)送一個隨機的挑戰(zhàn)詢問。當云服務(wù)器接收到請求后,會生成對應(yīng)的證據(jù)并轉(zhuǎn)發(fā)給代理。最后代理可以通過驗證證據(jù)的有效性判斷外包數(shù)據(jù)是否完整。如果證據(jù)有效,那么檢測的數(shù)據(jù)可能是完整的,否則已被破壞。
系統(tǒng)由四個實體組成,即私鑰生成中心、用戶、代理、云服務(wù)器,如圖1所示。
定義1 給定兩個素數(shù)q階乘法循環(huán)群G1,G2,一個雙線性映射e:(G1,G1)→G2是具有如下性質(zhì)的映射:
本方案的安全性依賴于CDH(Computational Diffie-Hellman,CDH)問題。
本節(jié)提出了一個高效的代理數(shù)據(jù)完整性檢測方案,該方案包括初始化階段、委任書生成階段、標簽生成階段和審計階段。
PKG執(zhí)行算法Steup(1λ),選擇一個隨機數(shù)作為主私鑰,并發(fā)布系統(tǒng)公開參數(shù)。用戶發(fā)送自己的身份ID給PKG,PKG執(zhí)行算法Getkey(params,x,ID)為每位用戶計算私鑰和對應(yīng)的R,并維護一個公開列表。當用戶收到返回的私鑰后,可通過執(zhí)行算法Vkey(ID,sk)驗證私鑰的合法性。
2.1.1 Steup(1λ)
(1)輸入一個安全參數(shù)λ,PKG選擇一個隨機元u∈G1
*,兩個安全的抗碰撞哈希函數(shù)H1:{0,1}*→Zq*和H2→G1*以及兩個偽隨機函數(shù)f1,f2×{1,2,…,n}→
(3)發(fā)布系統(tǒng)公開參數(shù) params={G1,G2,q,e,g,H1,H2,X,f1,f2,β,u}。
2.1.2 Getkey(params,x,ID)
(1)用戶將其身份IDi發(fā)送給PKG,PKG收到數(shù)據(jù)后隨機選擇ri∈Zq*,計算 Ri=gri和 ski=ri+xH1(IDi,Ri)mod q,并將私鑰(ski,Ri)通過秘密通道發(fā)送給用戶。
(2)PKG維護一個公開列表{(IDi,Ri)}。重復執(zhí)行該算法的(1)操作,用戶、代理和云可以得到各自的有效私鑰(sku,skp,sks)和(Ru,Rp,Rs)。
2.1.3 VKey(ID,sk)
當接收到返回的私鑰(ski,Ri)后,用戶通過驗證等式gski=RiXH1(IDi,Ri)是否成立從而驗證私鑰的有效性。如果有效,用戶接受;反之,用戶丟棄。
在該階段,客戶首先生成代理委托書w,該委托書包含委托人和代理人的身份及有效期等信息??蛻魣?zhí)行算法Wsig(sku,r,w)對該委托書簽名,得到簽名sig。之后客戶將(w,R,sig)發(fā)送給代理及云服務(wù)器。代理和云服務(wù)器收到后,通過算法Wverify(w,R,sig)驗證簽名的合法性。如果簽名合法則接受委托,否則拒絕。
2.2.1 Wsig(sku,r,w)
2.2.2 Wverify(w,R,sig)
當代理和云服務(wù)器接收到(w,R,sig)后,分別驗證gsig=R·(Ru·XH1(IDu,Ru))H1(w,R)是否成立。若等式成立,則簽名合法并接受委托,否則拒絕。
假設(shè)用戶要上傳文件F,則將文件分為n塊,通過算法MSign(sku,M)對每一個文件塊計算標簽,并輸出。用戶將所有文件塊及其塊標簽上傳到云服務(wù)器,刪除本地所有數(shù)據(jù)。
當云服務(wù)器接收到數(shù)據(jù)塊標簽對,通過執(zhí)行算法Mverify(M,Tm)驗證認證元數(shù)據(jù)的合法性,輸出1表示合法,云服務(wù)器接收數(shù)據(jù),否則拒絕。
2.3.1 MSign(sku,M)
線下階段:
(2)預(yù)計算usku,隨機選擇不同的αi∈Zq,1≤i≤β(β是可能的總文件塊數(shù)),并計算離線標簽Toffi=(H2(Wi)·uαi)sku。最后用戶將元組{(αi,Wi,Toffi)}1≤i≤β保存在本地。
線上階段:
假設(shè)用戶要上傳的文件為F=(m1,m2,…,mn),對每一個文件塊mi計算相應(yīng)的塊標簽Ti。
(1)用戶從本地恢復未使用過的元組(αi,Wi,Toffi)}1≤i≤β,計算 Δmi=mi-αi,Toni=(usku)Δmi,1≤ i≤ n。
(3)輸出(mi,Ti)。
2.3.2 Mverify(M,Tm)
在本階段,挑戰(zhàn)由代理發(fā)起,并發(fā)送給云服務(wù)器。
(1)代理執(zhí)行算法Gchal(sk)生成挑戰(zhàn),然后將挑戰(zhàn)等
數(shù)據(jù)發(fā)送給云服務(wù)器。
(2)云服務(wù)器執(zhí)行算法CVerify(chal,R,sig')驗證代理人身份與委任書是否一致。如果不一致,則拒絕,否則云服務(wù)器將執(zhí)行算法GenProof(m,chal,Tm),生成證據(jù),并發(fā)送給代理。
(3)代理執(zhí)行算法 PVerify(chal,Proof),若輸出1,則認為數(shù)據(jù)是完整的;輸出0表示數(shù)據(jù)已被破壞或刪除。2.4.1 Gchal(skp)
2.4.2 CVerify(chal,R,sig')
云 服 務(wù) 器 收 到(chal,R,sig') 后, 驗 證 等 式是否成立。若成立且代理人身份與委任書一致則進行下一步操作,若不成立,則拒絕。
2.4.3 GenProof(m,chal,Tm)
(1)云服務(wù)器對每一個 j∈[1,c],計算 ij=β(k1,j),aj=f2(k2,j)。
(3)輸出證據(jù)Proof=(m,T),并發(fā)回給代理。
2.4.4 PVerify(chal,Proof)
(2)驗證等式是否成立,如果成立,表示數(shù)據(jù)可能是完整的;反之,數(shù)據(jù)一定被破壞。
從四個方面證明方案的正確性:
(1)如果用戶是誠實的,那么任何委任書簽名(W,R,sig)都可以被代理和云服務(wù)器驗證。
證明如下:
(2)如果用戶是誠實的,那么任何文件塊標簽對(mi,Ti)都可以通過云服務(wù)器的檢查,即標簽驗證階段滿足正確性。
證明如下:
(3) 如果代理是誠實的,那么代理對挑戰(zhàn)的簽名sig'可以通過云服務(wù)器的身份驗證。
證明如下:
(4)如果代理和云服務(wù)器都是誠實的,那么云服務(wù)器返回的證據(jù)V=(m,T)可以通過代理的數(shù)據(jù)完整性驗證。
證明如下:
因此,可以得到:
本文方案的安全性證明包括兩方面:
(1)要考慮任何其他第三方不能代替代理人驗證客戶存儲云數(shù)據(jù)的完整性;
(2)要保證云服務(wù)器不能在數(shù)據(jù)損壞的情況下騙過代理人的完整性檢查。
①方案中的三方能完成云數(shù)據(jù)的完整性檢查是由于客戶、云服務(wù)器以及代理都能夠計算得到一個相等的t值:
任何其他用戶計算出相同的t值都可以破解CDH問題,而根據(jù)CDH問題的困難性可知,敵手無法得出t值。
②本文提出的協(xié)議滿足合理性,即如果存儲的數(shù)據(jù)已被破壞或刪除,則云服務(wù)器不能通過審計過程。
證明:如果攻擊者能夠攻破合理性,那么就存在一個算法B能夠破解CDH問題。算法B可以控制預(yù)言機H1,H2,令u=gy。
假設(shè)存在一個敵手A,能夠向算法B進行哈希詢問,算法B可以控制預(yù)言機H1,H2。當云服務(wù)器輸出響應(yīng){m,T}滿足下式:
則攻擊者A可能輸出響應(yīng)(m*,T*)滿足下式:
二者相除可得:
繼而可以得到:
由于Δμ=m-m*≠0,于是可得從而破解CDH問題。
本節(jié)評估本文所提方案的計算效率和通信開銷。該模擬實驗使用Windows系統(tǒng),處理器為Intel(R)CoreTMi7-6500U CPU @ 2.50 GHz (4 CPUs)~2.6 GHz,主存大小為8 GB。程序語言選用C語言,密碼算法使用基于雙線性配對的密碼學(PBC)函數(shù)庫。選擇A類型橢圓曲線,系統(tǒng)安全參數(shù)設(shè)置為160 B。選取的測試文件大小為200 MB,每一個數(shù)據(jù)都是運行5次后取的平均值。
(1)圖2展示了用戶在模擬實驗中委任書生成階段的計算開銷。模擬實驗測試了生成與驗證[2,20]個委托書所需的計算開銷。生成兩個委托書時,用戶所需的計算時間為22 ms,代理與云服務(wù)器方面驗證委托書有效性所需的計算時間為18 ms。從圖2中可以清楚看出,用戶的計算開銷與委托書生成個數(shù)成正比,且總體所需計算開銷較少。
圖2 委任書生成簽名與驗證時間
(2)數(shù)據(jù)標簽生成階段分為離線階段和在線階段。本文提出的方案采取線上線下標簽生成方式大大減輕了客戶的計算開銷,從實驗結(jié)果可以看出,大量的計算在線下完成,而在線上,用戶只需承擔n次Zp域上的減法運算、n次G1群上的冪運算和乘法運算即可。因為用戶所承擔的開銷很大程度上取決于文件塊數(shù),所以在實驗中,模擬測試的文件大小為固定的200 M,文件塊數(shù)在[1 000,10 000]區(qū)間時,數(shù)據(jù)擁有者在線上線下階段分別計算標簽塊所需時間,結(jié)果如圖3所示。當n=1 000時,用戶線下階段計算標簽塊需要17.251 s,線上階段需要4.004 s;當n=10 000時,用戶線下階段計算塊標簽需要145.270 s,線上階段需要33.750 s。從圖3可以清楚地看出,計算開銷與文件塊數(shù)成正比關(guān)系,線上計算的效率相比于線下計算要高約4倍以上。因此,模擬實驗結(jié)果證明了本文方案中使用的線上線下方式生成數(shù)據(jù)塊標簽是有效的。
圖3 線上線下標簽生成時間與塊數(shù)的關(guān)系
本節(jié)評估方案審計階段的效率。根據(jù)上述方案所提,在該階段,代理只需隨機選擇c個文件塊來驗證數(shù)據(jù)的完整性,c的范圍在[1,n]之間,無需驗證全部n塊文件塊。在模擬實驗中,為了測試不同挑戰(zhàn)塊數(shù)與審計效率的關(guān)系,固定了總數(shù)
據(jù)塊的值為5 000,c的取值范圍是[100,1 000],測試審計過程中不同挑戰(zhàn)塊數(shù)所花費的計算開銷。圖4展示了模擬實驗的測試結(jié)果,即挑戰(zhàn)塊數(shù)為[100,1 000]時審計過程所花費的計算開銷。從實驗結(jié)果可以看出,審計效率與挑戰(zhàn)塊數(shù)成正比,線性增長,增長速率并不高。由此可以看到本文所提方案不論是在云服務(wù)器生成所挑戰(zhàn)的證據(jù)階段還是第三方代理人驗證云返回的證據(jù)階段都比較高效。
在本文方案中,通信開銷主要發(fā)生在下發(fā)委托書、上傳標簽、發(fā)送挑戰(zhàn)請求和生成證據(jù)這4個階段。實驗中測試了n=2 000塊的文件,隨機選取c個挑戰(zhàn)塊產(chǎn)生的通信開銷。c的范圍為100~1 000。圖5展示了不同挑戰(zhàn)塊數(shù)下的總通信開銷。
圖4 審計階段不同挑戰(zhàn)塊數(shù)所需的時間
圖5 通信開銷
本文提出了一種云存儲中基于身份的代理驗證數(shù)據(jù)完整性方案。首先,該方案采用線上線下簽名思想使得用戶在線下階段只需要執(zhí)行輕量級計算。其次,本文方案采用基于身份的方法減少了傳統(tǒng)數(shù)據(jù)完整性審計協(xié)議過程中繁瑣的證書管理開銷。最后,當用戶被限制而無法驗證數(shù)據(jù)完整性時,方案允許用戶委托第三方代理,經(jīng)委托后代理可以定期檢測云中數(shù)據(jù)的完整性,并將結(jié)果反饋給用戶,使系統(tǒng)的可用性得到提高。