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