楊小東 王秀秀 李茜茜 周 航 王彩芬
①(西北師范大學(xué)計算機(jī)科學(xué)與工程學(xué)院 蘭州 730070)
②(深圳技術(shù)大學(xué)大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院 深圳 518118)
隨著云存儲技術(shù)不斷發(fā)展成熟,云服務(wù)器可以通過互聯(lián)網(wǎng)為用戶提供高效快捷的外包存儲服務(wù)[1]。與此同時,存儲在云端的數(shù)據(jù)面臨著許多安全威脅[2],而云服務(wù)商(Cloud Service Providers,CSP)也可能為了自身利益謊稱存儲在云端的數(shù)據(jù)是完整的[3]。因此,數(shù)據(jù)完整性驗(yàn)證對云存儲安全具有重要的意義。
傳統(tǒng)的審計方案一般將審計任務(wù)外包給一個第三方審計者(Third-Party Audit,TPA)[4],采用隨機(jī)抽樣的方法,在無需下載文件的情況下便可以驗(yàn)證其完整性。審計方案按照數(shù)據(jù)的可恢復(fù)性可以分為數(shù)據(jù)持有性證明(Provable Data Possession,PDP)[5]和數(shù)據(jù)可恢復(fù)性證明(P roofs of Retrievability,POR)[6]。這些傳統(tǒng)的驗(yàn)證機(jī)制大多基于公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PK I),但是PK I中存在著復(fù)雜的證書的生成、存儲、分發(fā)和撤銷[7]等問題。為了解決傳統(tǒng)密碼體制中證書管理的問題,一些學(xué)者設(shè)計了基于身份的簽名方案[8–10]。然而在基于身份的簽名方案中,用戶簽名私鑰都由一個完全可信第三方生成,即私鑰生成中心(Private Key Generator,PKG),因此存在密鑰托管問題。相比基于PK I和身份的簽名方案,無證書簽名方案[11–13]很好地解決了證書管理和密鑰托管問題。
在以上方案中,審計任務(wù)都依賴TPA并且假定TPA完全可信。事實(shí)上,TPA可能會為了自身利益與CSP串通將錯誤的審計結(jié)果返回給用戶。因此,用戶對于審計結(jié)果的正確性無從得知。區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲、點(diǎn)對點(diǎn)傳輸、共識機(jī)制、加密算法等計算機(jī)技術(shù)的新型應(yīng)用模式,具有可追蹤、不可篡改、匿名與開放等特點(diǎn)。為解決云審計方案中過度依賴完全可信第三方審計者的問題,不少學(xué)者將區(qū)塊鏈技術(shù)應(yīng)用到審計模型中。文獻(xiàn)[14]提出了一個針對拖延審核員的無證書公開認(rèn)證方案,但是用戶端的計算開銷過高。W ang等人[15]提出了基于區(qū)塊鏈的數(shù)據(jù)完整性驗(yàn)證方案,使用一個可信的審計員代替TPA,但是方案存在密鑰和證書管理的問題。
此外,這些方案都只關(guān)注對個人數(shù)據(jù)的完整性驗(yàn)證,并未考慮數(shù)據(jù)在多個用戶之間的安全共享問題。文獻(xiàn)[16]設(shè)計了一種組共享數(shù)據(jù)的完整性驗(yàn)證方案,但是方案基于群簽名算法,計算開銷較大。密碼累加器最早由Nguyen提出[17],可用于驗(yàn)證元素在集合中的成員關(guān)系。文獻(xiàn)[18,19]將密碼累加器用作共享數(shù)據(jù)的身份驗(yàn)證,減少了組內(nèi)成員的驗(yàn)證延遲,受此啟發(fā),本文將使用密碼累加器實(shí)現(xiàn)訪問用戶授權(quán)和身份認(rèn)證。
霧節(jié)點(diǎn)(Fog Node,FN)作為物聯(lián)網(wǎng)設(shè)備與云之間的中間件,具有基礎(chǔ)的計算和存儲能力,可以滿足對數(shù)據(jù)處理和傳輸?shù)男枨蟆J褂渺F節(jié)點(diǎn)輔助云計算可以減輕云服務(wù)器的計算開銷并且提高通信效率。T ian等人[20]提出了霧云計算中的公共審計方案,方案中使用霧節(jié)點(diǎn)對存儲數(shù)據(jù)進(jìn)行預(yù)處理。在基于屬性的云端數(shù)據(jù)安全共享方案中[21,22],霧節(jié)點(diǎn)經(jīng)常以外包計算方式執(zhí)行部分解密工作從而減輕客戶端的計算開銷。
在上述研究的基礎(chǔ)上,本文設(shè)計了一個基于無證書的云端數(shù)據(jù)完整性驗(yàn)證方案,方案使用霧節(jié)點(diǎn)和智能合約代替審計端實(shí)現(xiàn)了去中心化。具體貢獻(xiàn)如下:
(1)審計模型的去中心化。使用霧節(jié)點(diǎn)和智能合約代替TPA的審計工作,從而解決了傳統(tǒng)審計方案中過度依賴可信TPA的問題。
(2)基于智能合約的公平支付。使用霧節(jié)點(diǎn)和智能合約進(jìn)行完整性驗(yàn)證,只有通過完整性驗(yàn)證,CSP才可以獲得服務(wù)報酬。
(3)基于無證書簽名的數(shù)據(jù)完整性驗(yàn)證?;跓o證書簽名體制,解決了傳統(tǒng)審計方案中復(fù)雜的密鑰托管和證書管理問題。
(4)用戶的訪問授權(quán)和身份認(rèn)證。針對多用戶共享問題,使用加密累加器對有效用戶進(jìn)行訪問授權(quán),即只有通過身份認(rèn)證的合法用戶才能使用云端數(shù)據(jù)。
定義1 C D H(C o m p u t a t i o n a l D i f f e-Hellm an)問題:已知G 是一個循環(huán)乘法群,g是G 的生成元,(g,gα,gβ)∈G3,其中α,β ∈未知,那么群上G 的CDH問題是計算gαβ ∈G。
定義2 CDH假設(shè):如果任何一個概率多項(xiàng)式時間算法 A ,能求解G 上的CDH問題的概率是可忽略,則C D H 假設(shè)是成立的,可以被定義為
本文方案基于無證書簽名體制,其安全模型包含兩類敵手,分別是不誠實(shí)的用戶和半誠實(shí)的密鑰生成中心(Key Generation Center,KGC),使用Ⅰ類敵手A1和Ⅱ類敵手A2進(jìn)行模擬。
Ⅰ類敵手A1:無法獲取系統(tǒng)主密鑰和部分密鑰,但是可以替換合法用戶公鑰和秘密值;
Ⅱ類敵手A2:可以獲得系統(tǒng)主密鑰和部分密鑰,但是不能查詢和替換合法用戶公鑰。
本文在隨機(jī)預(yù)言機(jī)模型中模擬了敵手A1、A2分別與挑戰(zhàn)者C之間的游戲Ⅰ、游戲Ⅱ。該類模型在文獻(xiàn)[1,11]已有詳細(xì)的證明,此處不再贅述。
本文設(shè)計了基于區(qū)塊鏈和霧計算的去中心化云端數(shù)據(jù)完整性驗(yàn)證方案。如圖1所示,系統(tǒng)模型包括如下角色,KGC,CSP,數(shù)據(jù)擁有者(Data Owner,DO)、數(shù)據(jù)使用者(Users)、FN和區(qū)塊鏈(B lock Chain,BC)。
圖1 系統(tǒng)模型圖
(1)KGC:負(fù)責(zé)生成系統(tǒng)主密鑰和部分密鑰。
(2)CSP:負(fù)責(zé)存儲數(shù)據(jù)并保證數(shù)據(jù)的安全性和完整性。
(3)DO:具有授權(quán)數(shù)據(jù)使用者和定期向CSP發(fā)起完整性驗(yàn)證挑戰(zhàn)的權(quán)利。
(4)Users:是DO授權(quán)的數(shù)據(jù)使用者,當(dāng)Users使用數(shù)據(jù)時,CSP需要對其權(quán)限進(jìn)行驗(yàn)證。
(5)FN:負(fù)責(zé)完整性驗(yàn)證過程中復(fù)雜的運(yùn)算以減少區(qū)塊鏈的計算開銷。
(6)BC:是一個底層不可篡改的數(shù)據(jù)庫,存儲了智能合約算法、交易和證據(jù)。本文利用以太坊區(qū)塊鏈作為底層公共區(qū)塊鏈。
本文智能合約實(shí)現(xiàn)證據(jù)存儲、完整性驗(yàn)證和公平支付。為了節(jié)約成本,智能合約的設(shè)計盡可能簡短。方案設(shè)計了3種智能合約,具體如合約1~合約3。
智能合約T 0:根據(jù)存儲需求,實(shí)現(xiàn)向區(qū)塊鏈存儲數(shù)值的功能。
智能合約T 1:保證完整性驗(yàn)證通過時,DO向CSP支付服務(wù)費(fèi)用。
智能合約T 2:實(shí)現(xiàn)數(shù)據(jù)完整性驗(yàn)證和公平支付。將霧節(jié)點(diǎn)存儲的計算值進(jìn)行驗(yàn)證,如果驗(yàn)證通過,激活智能合約T 1,支付CSP服務(wù)金額;否則,CSP將不能得到任何報酬。
4.1.1系統(tǒng)初始化
4.1.2用戶授權(quán)
假如數(shù)據(jù)使用者U s e r s 的成員數(shù)N,使用idi(i∈[1,N])表示其成員的唯一身份標(biāo)識,DO使用密碼累加器進(jìn)行授權(quán)。具體如下:
合約1 智能合約T0
合約3 智能合約T2
如果等式(1)和等式(2)成立,則該用戶為授權(quán)用戶,否則為非授權(quán)用戶。
4.1.3簽名生成
(1)文件初始化:DO將文件 F分為n塊F=f1||f2||...f n,對于fi(i∈[1,n]),隨機(jī)選取si∈,計算對稱密鑰k i=prf(s i,f i)。使用密鑰ki分別對數(shù)據(jù)塊f i進(jìn)行對稱加密得到mi=ENC(f i,k i),令M={m i}。
(2) 塊簽名:對于密文mi,DO隨機(jī)選擇計算塊標(biāo)簽?i=m iβi和塊簽名,其中ωi=H3(F,n,m i)。
(3)簽名驗(yàn)證:DO上傳密文 M、對稱密鑰{k i}、塊標(biāo)簽{?i}和 塊簽名{τi}到CSP。CSP驗(yàn)證等式(3)是否成立。
如果等式(3)成立,CSP存儲文件,否則返回一個錯誤信息。
4.2.1挑戰(zhàn)生成
(1)數(shù)據(jù)擁有者DO從集合{1,2,...,n}隨機(jī)選擇c個數(shù)生成子集Q ,并選擇一個隨機(jī)數(shù)a∈,生成挑戰(zhàn)集合c hal={a,Q}發(fā)送給CSP。
(2)數(shù)據(jù)擁有者DO部署智能合約T 0,T 1和T2到智能合約平臺。
4.2.2證據(jù)生成
當(dāng)收到來自數(shù)據(jù)擁有者的挑戰(zhàn)信息之后,CSP計算{r j}={π(a,j)|j ∈Q},從而計算響應(yīng)證據(jù)和并發(fā)送給霧節(jié)點(diǎn)。最后CSP調(diào)用智能合約T 0存儲響應(yīng)證據(jù)和R 。
4.2.3證據(jù)驗(yàn)證
(2)當(dāng) S1和S2被存儲之后,DO調(diào)用智能合約T 2驗(yàn)證S1和 S2是否相等。若驗(yàn)證通過,激活智能合約T 1支付CSP服務(wù)費(fèi)用;否則,向DO返回一個驗(yàn)證失敗的消息。
為了驗(yàn)證存儲在云端數(shù)據(jù)的完整性,智能合約驗(yàn)證S1=S2是否成立。如果對于挑戰(zhàn)chal={a,Q}和響應(yīng)證據(jù)和R ,總能返回一個正確信息,那么說明CSP完整存儲了用戶文件。等式的正確性為
問、部分密鑰詢問、秘密值詢問、H2詢問、公鑰詢問、替換公鑰詢問、和簽名詢問的次數(shù)分別是qH1,qpa,qse,qH2,qpk,qpr和qT,A1贏得游戲Ⅰ的優(yōu)勢是ε。在A1沒有停止的情況下,C與A1完整交互的概率是(1-λ)qpaqT,C輸出正確結(jié)果的概率是ε′≥ελ(1-λ)qpaqT≥ε/((qpa+qT)·2e),對應(yīng)的時間成本為t′≤t+O(qH1+qpa+qse+qH2+qpk+qpr+qT)。因此,挑戰(zhàn)者C不能以一個不可忽略的概率贏得游戲Ⅰ。證畢
引理2在CDH困難問題下,本文方案對Ⅱ類敵手A2是安全的。
證明 假設(shè)Ⅱ類敵手A2能以一個不可忽略的概率ε贏得游戲Ⅱ,則可以構(gòu)造一個挑戰(zhàn)者C以一個不可忽略的概率來解決CDH問題。
游戲Ⅱ 本文對游戲Ⅱ的設(shè)計和大多數(shù)無證書簽名方案相似。游戲Ⅱ與游戲Ⅰ的區(qū)別在于攻擊者的不同,A2知道系統(tǒng)主密鑰,但是不知道秘密值并且不能替換公鑰。游戲Ⅱ和文獻(xiàn)[11]的步驟基本相似,包括系統(tǒng)建立、H1詢 問、秘密值詢問、H2詢問、公鑰詢問、簽名詢問和偽造這幾個步驟,這里不做贅述,只對游戲Ⅱ結(jié)果進(jìn)行分析。本t′≤t+O(qH1+q se+qH2+qpk+q T)。因此,挑戰(zhàn)者C不能以一個不可忽略的概率贏得游戲Ⅱ。證畢
將本文方案與幾個現(xiàn)有研究成果進(jìn)行比較,分析方案性能的優(yōu)缺點(diǎn)。從表1可以看出,與文獻(xiàn)[11,14,15]相比,本文方案基于區(qū)塊鏈,實(shí)現(xiàn)了多用戶共享、審計去中心化、外包計算和公平支付,同時避免了密鑰和證書管理的問題。
表1 性能比較
文獻(xiàn)[11,14]和本文方案均為基于無證書的完整性驗(yàn)證方案,本節(jié)對文獻(xiàn)[11,14]和本文方案進(jìn)行計算開銷對比。實(shí)驗(yàn)計算機(jī)配備了i5-6 500的處理器、8 GB內(nèi)存和W indows 10 64位操作系統(tǒng)。基于PBC(Pairing-Based Cryptography)庫,使用C編程語言仿真模擬CSP,TPA和FN。表2給出了實(shí)驗(yàn)所涉及的一些密碼學(xué)的符號定義和運(yùn)算時間,并使用n和c分別表示文件分塊數(shù)和挑戰(zhàn)數(shù)據(jù)塊個數(shù)。如表3所示,可以看出,塊簽名生成時,這3類方案的計算開銷相差較小,可以忽略;在證據(jù)生成階段,文獻(xiàn)[11]方案的計算開銷高于本文和文獻(xiàn)[14]方案;在簽名驗(yàn)證和證據(jù)驗(yàn)證階段,相比于文獻(xiàn)[11,14]方案,本文方案計算開銷最小,具有明顯的優(yōu)勢。
表2 相關(guān)運(yùn)算時間
表3 計算開銷對比(m s)
實(shí)際環(huán)境中,本文方案完整性驗(yàn)證延遲主要包括CSP和霧節(jié)點(diǎn)的計算延遲、智能合約T 2的驗(yàn)證延遲和網(wǎng)絡(luò)往返時間。而往返時間主要依賴于網(wǎng)絡(luò)環(huán)境,因此實(shí)驗(yàn)不予考慮。實(shí)驗(yàn)中,智能合約使用Solidity語言編寫,通過以太坊測試網(wǎng)絡(luò)Rinkeby進(jìn)行部署和測試。經(jīng)測試,智能合約在Rinkeby網(wǎng)絡(luò)的交易時間大約為20 s。
在以太坊中,使用gas值的大小表示每筆交易消耗的成本,本文方案的交易包括智能合約的部署和調(diào)用。通過以太坊測試網(wǎng)絡(luò)Rinkeby,對方案中每筆交易所消耗的成本進(jìn)行了測試。如表4所示,實(shí)驗(yàn)結(jié)果表明,智能合約部署和調(diào)用都需要消耗gas值。相比于智能合約調(diào)用,將智能合約首次部署到以太坊的消耗較高,而所有g(shù)as的消耗都在可以接受的范圍之內(nèi)。
本文提出了基于無證書簽名體制的云端數(shù)據(jù)完整性驗(yàn)證方案。方案使用霧節(jié)點(diǎn)和智能合約代替第三方審計者從而實(shí)現(xiàn)去中心化,基于無證書密碼體制可以避免密鑰和證書管理問題,同時具有多用戶共享和公平支付的功能。在隨機(jī)預(yù)言機(jī)模型下證明了本文方案是安全的,能夠抵御I類和II類攻擊。性能分析表明,相比現(xiàn)有同類無證書簽名方案,本文方案具有較高的計算效率和較低的存儲成本。未來將擴(kuò)展工作,以實(shí)現(xiàn)方案支持在多云環(huán)境下的批量驗(yàn)證和數(shù)據(jù)動態(tài)操作。