摘 要:云存儲憑借其高擴展性、低成本等優點得到大眾青睞,但確保云數據完整性成為亟待解決的安全挑戰。為解決基于TPA的公共審計方案中存在的安全和效率問題,有學者提出了基于區塊鏈的公共審計方案,但數據擁有者的審計負擔較大,都是靜態審計,且不支持錯誤數據定位操作。基于此,提出了基于改進的區塊鏈云數據動態審計機制,通過將部分審計工作委托給共識代表以減輕數據擁有者審計開銷,設計帶權多層次MHT結構以支持數據的動態操作,審計失敗時幫助定位到錯誤數據。理論分析和實驗結果表明,與現有方案相比,提出方案更安全可靠、動態審計效率更高,數據擁有者的計算和通信開銷更少。
關鍵詞:云存儲; 區塊鏈; 公共審計; 動態操作; 錯誤數據
中圖分類號:TP391 文獻標志碼:A
文章編號:1001-3695(2023)03-003-0659-08
doi: 10.19734/j.issn.1001-3695.2022.08.0358
Research on dynamic audit mechanism of cloud data based on improved blockchain
Guo Caicai1,2, Jin Yu1,2
(1.College of Computer Science amp; Technology, Wuhan University of Science amp; Technology, Wuhan 430065, China; 2.Hubei Province Key Laboratory of Intelligent Information Processing amp; Real-time Industrial System, Wuhan 430065, China)
Abstract:People prefer to use cloud storage due to its advantages of high scalability and low cost, but ensuring the integrity of cloud data has become a security challenge that needs to be solved immediately. In order to solve the security and efficiency problems of the TPA-based public audit schemes, some scholars proposed blockchain-based public audit schemes which not only increased the audit burden of data owners, but were static and did not support wrong data location operations. Therefore, this paper proposed a public audit scheme based on improved blockchain which supported dynamic data operations. The paper reduced the audit overheads of data owners by outsourcing part of the audit work to the consensus representative, designed a multi-level MHT with weights to support dynamic operations, and helped to locate the wrong data when the audit failed. Theoretical analysis and experimental evaluation show that compared with the existing schemes, the proposed scheme achieves desirable security, higher dynamic audit efficiency, less computation and communication overheads for data owners.
Key words:cloud storage; blockchain; public audit; dynamic operation; wrong data
云存儲是一個由網絡設備、應用軟件和客戶端等多個部分組成,以存儲和管理數據為核心的云計算系統。然而,數據擁有者(data owner,DO)對存放在云端的數據不具有絕對支配權,一些惡意云服務提供商(cloud server provider,CSP)可能會刪除不經常訪問的數據,在丟失數據后竄改或偽造DO數據等。為解決DO和CSP之間的信任問題,遠程數據審計應運而生,其中基于第三方審計者(third party auditor,TPA)的公共審計方案最具代表性。但這類方案均有如下缺點:a)單點失效。一旦TPA失效,則整個審計系統癱瘓。b)性能缺陷。隨著數據規模增大,審計開銷會增大。c)安全威脅。TPA可能與CSP共謀竄改審計證明,或從審計證明中還原DO數據。
由于區塊鏈[1]具有去中心化、不可竄改、可追溯等特點,有學者提出基于區塊鏈的公共審計方案,在不引入TPA的情況下解決了TPA審計方案中的缺點,并結合區塊鏈相關技術實現公共審計,但這類方案存在如下缺點:a)其審計驗證工作均交由DO完成,加重了DO的審計負擔;b)不支持數據的動態操作功能;c)在審計失敗時也未考慮錯誤數據定位的功能。針對此,本文提出一種基于改進的區塊鏈支持數據動態操作的公共審計方案。為解決上述問題,本文工作如下:a)將生成審計挑戰和驗證審計結果的工作委托給共識代表以減輕DO的審計負擔;b)設計帶權多層次MHT結構以支持數據的動態操作并加快動態操作效率;c)在審計失敗時,根據審計證明和完整性驗證公式依次檢查相關數據以實現錯誤數據定位功能。
1 相關工作
為防止半可信TPA竊取DO數據隱私,2010年,Wang等人[2]提出了一種保護DO數據隱私的公共審計方案,利用隨機掩碼技術隱藏審計證明中的數據信息防止TPA竊取數據內容。為提高審計效率,2013年,Wang等人[3]提出一個保護隱私的支持批量審計的公共審計方案,利用基于線性同態認證的公鑰技術和隨機掩碼技術保護數據隱私,TPA同時處理不同DO的多個審計任務實現批量審計功能。為了在批量審計失敗時追責相關責任方,2015年,Shin等人[4]提出一個支持批量審計和僅能定位錯誤數據所屬服務器的公共審計方案。2019年,龐曉瓊等人[5]提出的公共審計方案利用默克爾哈希樹(Merkle hash tree,MHT)構造數據定位標簽,在批量審計失敗后幫助TPA同時定位錯誤數據的所屬DO和服務器。由于TPA可能與CSP串通偽造審計證明,為抵御TPA和CSP的共謀攻擊,2019年,Xue等人[6]提出了基于身份認證的公共審計方案,利用難以預測的隨機數nonce構造挑戰消息,從而避免TPA和CSP的共謀攻擊和偽造攻擊以保護數據安全,但DO需要對審計結果進行二次驗證,可擴展性差。同年,Xu等人[7]提出的公共審計方案通過引入審計認證器定期更新DO密鑰,降低CSP攻擊DO數據的概率,但多次更換密鑰使得系統的維護成本增大。2020年,Miao等人[8]提出了一種基于區塊鏈的公共審計方案,其挑戰消息由隨機數nonce和TPA指定的隨機數共同構成以防止共謀攻擊,通過將審計結果記錄到區塊鏈上實現審計行為的可追溯。為解決單一TPA的單點失效問題,2022年,Chen等人[9]提出了基于區塊鏈的第三方審計委員會,通過隨機推舉TPA代表以代替單一TPA參與審計抵御共謀攻擊。
上述方案[2~9]均不支持數據的動態操作,為解決這一問題,Wang等人[10]最先于2011年提出一種支持數據全動態操作的公共審計機制,該機制利用MHT結構確保數據在位置上的正確性,通過對比CSP和TPA所持有的MHT根節點哈希值判斷數據是否被正確存儲。此后很多支持數據動態操作的公共審計方案都在文獻[10]的基礎上對MHT進行改進。如2015年,秦志光等人[11]提出基于MHT的分層次索引結構的審計方案,該方案使MHT的每個葉節點對應存儲多個數據塊的向量,實現數據細粒度的動態操作。Sun等人[12]提出了支持數據動態操作與動態可擴展公共審計方案,通過結合trapdoor哈希函數和BLS簽名技術實現在進行數據動態操作時不用更新MHT所有的節點信息,對于有序的插入操作能自適應擴展MHT結構。但對于大量無序的插入和刪除操作,其改進的MHT結構會變形進而影響后續的動態操作效率。除MHT及其改進方案外,學術界還提出了其他的數據結構來實現公共審計環境下的動態操作。文獻[13,14]先后提出基于多分支路徑樹的數據完整性驗證機制,通過擴展樹結構讓每個節點對應多個孩子節點以穩定樹結構。文獻[15,16]引入了分治表(也稱動態索引表)將數據塊的索引信息和抽象數據信息等存儲于同一個二維表,在進行插入或刪除操作時,索引值等信息需重新計算,這會大幅降低動態操作效率。因此徐洋等人[17]提出對分治表分塊來降低計算開銷,韓靜等人[18]提出在分治表中加入虛擬索引來確保所有數據按照正確的順序進行排列。2022年,Mishra等人[19]將斐波那契樹和循環雙鏈表結合存儲外包數據,并由TPA維護索引哈希表以加快TPA的審計驗證效率,但CSP需存儲所有動態操作更新前后的數據以追溯數據變化,增加了系統的數據冗余度。
上述工作[2~19]都引入了半可信TPA參與審計驗證,盡管文獻[2,3]采取了保護數據安全的措施,但不能完全解決TPA存在的單點失效、性能缺陷和安全威脅問題。
區塊鏈是由中本聰于2008年提出的分布式分類賬技術,作為一種去中心化、不可竄改、可追溯的分布式賬本技術,在沒有第三方機構的參與下,實現了去中心化、分布式的信任建立機制,保證了數據在基于驗證基礎上的可信性[20]。根據區塊鏈的優點,有學者將區塊鏈相關技術應用于公共審計以彌補基于TPA公共審計方案的缺點。2017年,Yang等人[21]提出一種基于區塊鏈的可公開驗證的云數據刪除方案,在不依賴TPA的情況下,無論CSP進行何種惡意操作,DO或其他實體都可驗證數據刪除返回的結果,但該方案僅討論了數據刪除操作。2020年,Yang等人[22]提出的基于區塊鏈的公共審計方案利用區塊隨機數nonce來構建挑戰信息,通過引入動態哈希表和修改記錄表,實現DO多副本數據的動態更新和身份追蹤。同年,Yuan等人[23]提出在不依賴TPA的情況下進行數據完整性審計,利用智能合約懲罰CSP不誠實的行為,對數據受損的DO進行補償,該方案僅支持對冗余數據的刪除操作。
上述方案[21~23]結合區塊鏈的相關技術加強公開審計的安全性,由于未引入TPA,審計證明的驗證工作均交由DO完成,且均不支持數據的全動態操作,在審計失敗時也未考慮錯誤數據定位的功能。為解決上述問題,本文提出一種基于改進區塊鏈的支持數據動態操作的公共審計方案,本文的主要工作如下:
a)利用DPoS共識機制選舉出共識代表代替DO進行審計驗證,降低DO計算開銷和通信開銷。
b)改進傳統MHT結構以支持數據的動態操作,加快動態操作效率。
c)將審計相關信息記錄到改進的區塊鏈結構中,實現了審計過程的公開性、可信性、不可竄改性、可追溯性。
d)實現錯誤數據定位功能,審計失敗時告知DO問題數據所屬服務器和具體問題數據,避免更多損失。
2 預備知識
2.1 雙線性對
3 定義與模型
3.1 系統模型與設計目標
基于改進的區塊鏈云數據動態審計方案包含數據擁有者(DO)、共識代表(consensus representative,CR)、云服務提供商(CSP)三類實體。
a)數據擁有者。由于有限的計算、通信和存儲資源,需要將數據存儲到云服務器中,在審計時向CR發起審計和動態操作請求。
b)共識代表。其是當前區塊生產輪次對應的區塊生產者,具有較多的存儲和計算資源,主要負責處理和傳遞DO的請求,存儲并維護含有審計相關信息的區塊鏈,驗證審計證明并將結果返回給DO。
c)云服務提供商。具備大量的存儲空間和計算能力,負責存儲DO數據并響應CR的動態操作請求與審計挑戰。
公共審計系統模型如圖1所示,①表示DO將數據進行加密處理后傳輸給CR,且可以隨時通過CR向CSP發起審計請求。②表示CR在為DO進行計算數據標簽等操作后向CSP發起挑戰,包括數據存儲挑戰、動態操作挑戰和審計挑戰。CSP在收到挑戰后需根據挑戰內容計算相應的證明消息,然后通過③將證明消息返回給CR進行驗證,CR驗證通過后將審計結果等信息記錄在新區塊中,刪除暫存的DO數據。隨后通過④向DO返回審計結果。DO驗證CR返回的審計結果,若審計成功,則可刪除本地數據,否則認為DO數據沒有完整存儲在CSP上。
支持數據動態操作和錯誤數據定位的公共審計方案,應滿足以下要求:
a)支持數據動態操作。允許DO向CSP中存儲的數據進行插入、修改和刪除的操作,而不影響已存儲數據的完整性。
b)支持錯誤數據定位。在審計失敗后,CR可以幫助找出錯誤數據所屬DO和CSP,并定位到具體的出錯數據。
c)公開審計性。允許CR驗證存儲在云服務器上DO數據的完整性,在區塊鏈上存儲相關審計信息以供其他實體公開查驗審計結果。
d)存儲完整性。確保CSP只有真實存儲DO的完整數據才能通過CR的審計驗證。
3.2 威脅模型
本文方案不僅要確認DO云端數據的完整性與安全性,還要防止CSP存在不誠實行為,此外,還要滿足DO的動態更新云端數據的請求,所以本文主要考慮以下五種攻擊類型:
a)替換攻擊。CSP試圖使用其他未損壞的數據塊和標簽組合替換被挑戰的數據塊和標簽來通過審計。
b)偽造攻擊。CSP為了自身利益或為了保全自身名譽而偽造審計證明欺騙共識代表。
c)重放攻擊。CSP無須查詢存儲數據,通過保存以前通過驗證的證明來應對當前挑戰,或者CR重放已經存在的有效審計結果以欺騙DO。
d)刪除攻擊。CSP刪除一部分數據,或因不可抗因素導致云數據丟失或損壞,為通過審計用預先計算的“數據塊—標簽”欺騙審計者。
e)共謀攻擊。CSP與CR串通更改挑戰信息和審計證明,導致其他驗證者作出錯誤判斷。
4 本文方案
4.1 帶權多層次MHT
傳統MHT是一種完全二叉樹,每個葉節點存儲數據對應的哈希值,非葉節點存儲其左右孩子拼接后的哈希值,根節點哈希值是快速驗證數據完整性的依據。但傳統MHT葉節點只能存儲單個數據的哈希值,一旦數據量增大,在應對DO的增刪改操作時,會使得樹結構變得更加復雜。如圖2所示,在刪除數據m1、插入數據m5~m8共五次動態操作后,傳統MHT結構已變形,不僅降低了葉節點到根節點hash值更新效率,還降低了后續數據的查找效率,因而無法應對大量動態操作請求。
為解決傳統MHT存在的缺陷,提出了一種改進的MHT結構用于加快數據動態操作。如圖3所示,每個節點結構為(rx,H(x)),其中每個葉節點都對應一條含有數據信息的單鏈表,rx為權值,表示通過該節點所能訪問到的所有文件數量,H(x)為數據的hash值,表示該節點對應數據的hash值。以葉節點E和非葉節點B為例,葉節點E對應的單鏈表為FU1,對應有三個文件信息,其中rFU1=3,H(FU1)=H(H(F1)‖H(F2)‖H(F3)),非葉節點B權值rb為其兩個孩子節點所能訪問到的所有文件個數,即rb=rFU1+rFU2=6,其中“‖”表示連接操作。由于hash函數具有單向性,故審計者只需獲取根節點hash值就能驗證所有文件存儲正確性。底層每個鏈表節點存儲哈希值H(Fi),分區標識符pni,數據標簽sigi,時間戳tsi。其中H(Fi)是將DO需上傳的數據進行哈希運算后得到的,由于哈希運算的單向性和不可逆性,原數據任何改變都會使對應的哈希值產生變化,H(Fi)用于幫助驗證數據完整性;分區標識符用于在進行動態操作時幫助提高查找效率;數據標簽由共識節點計算,用于參與審計證明的計算并幫助審計證明的驗證;時間戳則記錄數據被處理的時間,幫助CSP確認數據初始化階段過程中數據傳輸無誤。
本節介紹的帶權多層次MHT以鏈表的形式存儲多個數據信息,插入、刪除和更新數據是對底層鏈表進行操作,樹結構和葉節點輔助路徑長度不變,且每個節點另設權值表示通過該節點能訪問到的數據總量,用于幫助查找數據。此外,傳統區塊鏈是基于傳統MHT結構保障了數據的不可竄改性,因此本節所提方案不僅能與區塊鏈結構結合,還能規避傳統MHT在數據動態操作時存在的樹結構不穩定、數據查找效率低和輔助路徑過長的缺點,相較于其他方案能在同等時間內支持更多動態數據操作次數,提升了數據的動態操作效率,適用于各種數據量的場景。
4.2 審計區塊鏈
所有引入TPA的審計方案都存在單點失效、性能瓶頸和安全威脅的缺點,為解決上述問題,本節提出的審計區塊鏈利用區塊鏈的共識機制推選出可信的共識節點以代替半可信TPA參與審計,這些節點具備強大算力且存在多個,輪流響應DO的審計請求,單個節點因性能缺陷或其他問題無法參與審計時都由下個節點接替審計任務,所以不存在單點失效和性能瓶頸缺點。此外,CSP難以同時串通多個共識節點修改審計證明,為實現數據的不可竄改性和可追溯性,結合提出的帶權多層次MHT結構,本節提出對傳統區塊結構改進后的審計區塊鏈,其整體結構不變。主要功能是記錄審計過程的參與者和審計結果等相關信息;供其他實體查詢審計信息;幫助CR完成對上一區塊的確定以達成共識;審計失敗時進行追責。在不暴露DO數據隱私的情況下,實現審計過程的公開、可靠和可追溯。
每個區塊由區塊頭和區塊體組成,如圖4所示,斜體內容是對傳統區塊鏈進行改進的部分。其中區塊體存放帶權多層次MHT節點信息,區塊頭存放父區塊哈希(PreBlockHash)用于指向上一個區塊哈希地址,實現區塊鏈式結構;時間戳(TimeStamp)用于標識當前區塊的出塊時間;DO標識符(UserIdentifier)標識該區塊對應數據所屬DO,幫助查詢目標用戶DO的相關信息;操作類型(OperationType)標識當前區塊涉及的具體審計操作,再次驗證審計信息時與父區塊對比幫助快速獲取改變的數據信息;Merkle根(MerkleRoot)存儲該塊對應所有數據的哈希值,保證該塊對應數據信息的完整性;簽名(Signature)存儲生成該塊的共識節點簽名,用于在當前區塊不能通過下一出塊者驗證時追責;挑戰請求(ChallengeRequest)和審計證明(AuditProof)共同幫助后續的再次審計,且存儲當次審計參與者地址以供后續追責,詳細介紹如表1所示。
所有實體都可對區塊鏈數據進行查詢,但只能由CR節點進行更新和維護,實現了審計結果的公開透明。
4.3 審計協議
公有審計協議分為初始化和審計兩個階段。初始化階段負責將DO數據處理好后上傳至CSP,并根據這些數據生成區塊,審計階段負責對CSP進行遠程數據審計。
4.3.1 初始化階段
設G和GT是具有相同素數階p的兩個乘法循環群,g1、g2是群G的兩個生成元,滿足雙線性e:G×G→GT,α∈Zp為隨機數,H:{0,1}→G為安全的單向哈希函數。sigskx(Message)=BLS_Sig(skx,Message)為用私鑰skx生成的BLS簽名。
1)KeyGen(1λ)→(sk,pk) DO選擇隨機數α∈Zp,設置私鑰sk=α,并計算公鑰pk=gsk1。CR選擇密鑰對(gsk,gpk),其中gpk=ggsk2,CSP選擇其密鑰對為(csk,cpk)。DO將數據處理F=(F1,…,Fi,…,Fn),i∈[1,n],并發送消息ReqToCRstore={store,tsstore,F,H(F),sigDO=sigsk(H(F))}給CR,其中store為操作類型,tsstore為當前消息生成的時間戳,H(F)=H(H(F1)‖…‖H(Fn))。
2)TagGen(F,gsk)→(RM) CR收到ReqToCRstore后先驗證sigDO和H(F)的正確性,然后根據F初始數據數量進行分區為pn={pn1,…,pnk},k∈[1,n],MHT葉節點數量與k值對應。CR為每個數據Fi計算相關信息:哈希值H(Fi),分區標識符pni,時間戳tsi,數據標簽sigi,其中sigi=(H(pni‖tsi)·gFi2)gsk,標簽集合sig={sigi},i∈[1,n],相關信息集合RMi={H(Fi),pni,tsi,sigi}。
以圖3中葉節點E為例,CR根據分區標識符pn1依序計算相同分區數據的總哈希值H(FU1)=H(H(H(F1)‖H(F2))‖H(F3))作為對應葉節點哈希值,并計算該分區中所有數據個數rFU1作為對應葉節點權值,以此為例生成MHT葉節點(rx,H(x)),構建完整的MHT結構。
3)Challenge(F,RM)→(ReqToCSPstore) 由CR向CSP發起存儲挑戰ReqToCSPstore={store,tsstore,IDCR,IDCSP,F,H(F),RM,sigDO,sigCR},其中RM={RMi},簽名sigCR=siggsk(H(F)‖RM)。
4)Proof(ReqToCSPstore)→(ResToCRstore) CSP收到挑戰消息ReqToCSPstore后先通過sigDO和sigCR驗證H(F)的正確性,再通過H(F)驗證F是否正確,驗證成功后存儲F和RM。根據每個數據對應的H(Fi)和pni構建MHT,最后CSP向CR返回證明消息ReqToCRstore={tsstore,IDCR,IDCSP,Root,sigCSP},其中sigCSP=sigcsk(Root)。
5)Verify(ReqToCRstore)→(0,1) CR收到證明消息ReqToCRstore后驗證sigCSP,對比自身計算的Root和CSP返回的Root是否一致,若一致則說明CSP正確完整存儲了DO數據。CR生成區塊后向DO返回存儲證明消息ResToDOstore={tsstore,IDCR,1,Root,sigCR=siggsk(1‖Root)},DO驗證sigCR成功且返回消息為1,則表明CSP正確存儲F,DO可以刪除本地數據。
4.3.2 審計階段
此階段由DO發起審計請求,CR向CSP發起審計挑戰并驗證審計證明,最后CR向DO返回審計結果。
1)Challenge(pni,H(Fi),ri)→(ReqToCSPaudit) DO向CR發送審計請求ReqToCRaudit={audit},CR從{F1,…,Fn}中隨機選t,t∈[1,n]個文件進行抽樣審計,且需要計算t個隨機系數r1,…,ri,…,rt,其中ri=f(ti),f()是偽隨機函數。令samplei={pni,H(Fi),ri},其中pni與H(Fi)從最新區塊中獲取,隨后構造審計挑戰ReqToCSPaudit={audit,tsaudit,IDCR,IDCSP,sample,sigCR}發送給CSP,其中sigCR=siggsk(sample),sample={samplei}。
2)Proof(ReqToCSPaudit)→(ResToCRaudit) CSP根據ReqToCSPaudit先驗證sigCR,根據sample中的pni與H(Fi)找到對應文件,由于CSP為每個文件存儲了對應的信息RMi={H(Fi),pni,tsi,sigi},據此計算SP=∏ti=1sigrii,DP=∑ti=1 Fi·ri,此外,還需為存儲的所有數據構造MHT并計算根節點Root,最后生成審計證明Res-ToCSPaudit={tsaudit,IDCR,IDCSP,SP,DP,Root,{Fi·ri},sigCSP}發送給CR,其中sigCSP=sigcsk(SP‖DP‖Root‖{Fi·ri}),{Fi·ri}CSP為每個數據計算的證明參數,用于幫助在審計失敗時定位錯誤數據位置。
3)Verify(ResToCRaudit)→(0,1) CR收到ResToCRaudit后驗證sigCSP的正確性,通過查詢最新區塊Root值與CSP返回的Root值驗證兩者一致性,驗證e(SP,g2)?=e(∏ti=1H(pni‖tsi)ri,gpk)·e(gDP2,gpk),上述驗證均通過時表明CSP正確且完整存儲了DO數據,CR生成區塊。隨后CR向DO返回存儲證明消息ReqToDOaudit={tsaudit,IDCR,1,Root,sigCR=siggsk(1‖Root)},DO驗證sigCR成功且返回消息為1,表明CSP正確存儲DO數據。
4.4 動態操作
4.4.1 插入
插入操作類似于審計協議的初始化階段,此小節僅進行簡單介紹。DO將待插入的數據(m個)初步處理為F′=(Fn+1,…,Fn+j,…,Fn+m),j∈[1,m],隨后向CR發送請求消息ReqToCRinsert={insert,tsinsert,F′,H(F′),sigDO=sigsk(H(F′))},CR驗證其正確性并為F′選擇分區、生成數據標簽,由于數據之間沒有邏輯關聯,本文方案默認將數據Fn+j插入到數據量最少的分區。CR計算出RM′n+j={H(Fn+j),pnn+j,tsn+j,sign+j}并向CSP發起挑戰ReqToCSPinsert={insert,tsinsert,IDCR,IDCSP,F′,H(F′),RM′,sigDO,sigCR},sigCR=siggsk(H(F′)‖RM′),RM′={RM′n+j}。CSP收到ReqToCSPinsert后進行驗證,依據RM′中的pnn+j將Fn+j存儲到合適位置,以上操作完成后CSP構建MHT計算根節點,生成證明ResToCRinsert={tsinsert,IDCR,IDCSP,Root,sigCSP},sigCSP=sigcsk(Root)。CR收到后對其進行驗證,通過后生成新區塊,隨后CR向DO返回響應消息。
4.4.2 修改
DO共有m個數據{Fi,…,Fi+m}需修改為F=(Fi,…,Fi+m),DO查詢區塊鏈后獲取F位置信息locatei={pni,H(Fi)},發送請求ReqToCRmodify={modify,tsmodify,F,H(F),locate,sigDO}給CR,其中sigDO=sigsk(H(F)‖locate),locate={locatei}。CR驗證消息成功后為F計算相關信息RMi={H(Fi),pni,tsi,sigi},生成挑戰信息ReqToCSPmodify={modify,tsmodify,IDCR,IDCSP,F,H(F),locate,RM,sigDO,sigCR}發送給CSP,其中sigCR=siggsk(H(F)‖locate‖RM),RM={RMi}。
CSP收到ReqToCSPmodify驗證其正確性,然后根據locate找到對應數據,用F代替原有文件,用RM代替對應RM中的內容,上述操作完成后CSP需要依據更新后的數據構建MHT并計算根節點哈希值,然后生成證明消息ReToCRmodify={tsmodify,IDCR,IDCSP,Root,sigCSP}發送給CR,其中sigCSP=sigcsk(Root)。CR收到證明后進行驗證,成功后生成新區塊,隨后CR向DO返回響應消息。
4.4.3 刪除
DO查詢區塊鏈取出待刪除數據的相關信息locatei={pni,H(Fi)},隨后向CR生成請求消息ReqToCRdelete={delete,tsdelete,locate,sigDO}發送給CR,其中sigDO=sigsk(locate),locate={locatei}。CR接收ReqToCRdelete后對其進行驗證,驗證成功后向CSP發起挑戰信息ReqToCSPdelete={delete,tsdelete,IDCR,IDCSP,locate,sigDO,sigCR},其中sigCR=siggsk(locate)。
CSP收到ReqToCSPdelete先驗證其正確性,然后根據locate找到并刪除對應Fi和RMi,上述操作完成后CSP需依據刪除后的數據構建MHT計算根節點哈希值,然后生成證明ResToCRdelete={tsdelete,IDCR,IDCSP,Root,sigCSP}發送給CR,其中sigCSP=sigcsk(Root)。CR收到證明后對其進行驗證,成功后生成新區塊,隨后CR向DO返回響應消息。
4.5 錯誤數據定位
本文方案支持CSP在審計證明驗證失敗時向DO返回問題數據的相關信息,具體審計過程同4.3.2節內容一致。當審計證明驗證失敗時,需要CR根據{Fi·ri}依次驗證e(sigrii,g2)?=e(H(pni‖tsi)ri,gpk)·e(gFi·ri2,gpk),該式證明過程與6.1節類似,不再證明。當代入上式的Fi·ri不滿足驗證公式時,說明數據Fi出現問題,CR需向DO返回消息ResToDOaudit={tsaudit,IDCR,IDCSP,0,RMi,sigCR},其中sigCR=siggsk(IDCSP‖0‖RMi),DO先驗證sigCR正確性,0表示審計失敗,問題數據由IDCSP存儲,然后根據RMi中的pni和H(Fi)查詢最新區塊找到對應分區中的數據以實現錯誤數據的精確定位。
5 正確性分析和安全性分析
5.1 正確性分析
審計階段數據完整性驗證公式為e(SP,g2)?=e(∏ti=1H(pni‖tsi)ri,gpk)·e(gDP2,gpk),SP=∏ti=1sigrii,DP=∑ti=1Fi·ri。其證明過程如下:
5.2 安全性分析
本節先用理論證明本文方案如何抵御五種攻擊,在下文的分析過程中,除了五種攻擊提到的實體外,其他實體完全可信且遵守審計規則,CSP和CR不會互相污蔑。
定理1 CSP用其他正確存儲的數據塊和標簽生成的審計證明無法通過驗證。
證明 假設數據Fi損壞,存在一個完整存儲的數據為Fj,數據簽名為sigj=(H(pnj‖tsj)·gFj2)gsk,相關參數可從區塊鏈中獲取,CSP為通過審計,令sigi=sigβj,β∈Zp,則有
若要使式(1)成立,需使得式(2)(3)成立。
當η取1,且SP=SP·ggsk·∑ti=1βi·ri2時,對于偽造數據Bi,才有5.1節審計階段驗證公式成立,但CSP無法獲取CR的私鑰gsk,所以無法計算出SP作為審計證明,故CSP偽造的審計證明無法通過審計。
定理3 CSP無法提交以前的審計證明通過驗證。
證明 一般情況下兩次抽樣審計CR選取的sample一定不同,為證明本文足以抵御重放攻擊,假設前后兩次抽樣審計選取Fi和ri相同,僅選取的文件數量不同,以證明CSP無法通
定理5 CSP與CR合謀修改的審計證明無法通過其他節點驗證。
證明 本文方案用共識機制推選出CR參與審計過程,每次參與出塊的CR不一定相同,出塊順序也不一定相同,具有不可預測性。假設CSP和當前輪出塊的CR串通,盡管能通過當前CR的審計,但當前區塊需存儲審計相關信息AuditProof和ChallengeRequest,偽造相關審計信息無法通過下個CR的驗證,該CR將會被追責。此外,CSP每次只與一個CR對接,無法預知后續CR順序,因此難以同時串通其他節點進行共謀攻擊。當前CR為了不被下一個出塊的CR舉報,必須要誠實地進行審計驗證。由定理1~4可知,無論CSP因為何種原因更改、刪除或偽造數據,都無法構建能成功通過驗證的審計證明。因此本文方案也能抵御CSP與CR的共謀攻擊。
在進行數據插入、修改與刪除時,CSP為新上傳的數據計算hash值或刪除對應數據,由于hash函數的單向性,CSP需誠實地構造MHT以返回含有Root值的審計證明。在數據動態操作過程中,CSP為減少計算開銷可能查詢區塊鏈或自身存儲的RM來計算可以通過驗證的Root,但若不正確存儲DO上傳的原始數據,在面對不定期的抽樣審計挑戰時,CSP也無法通過驗證。通過上述分析可知本文方案能抵御所有五種攻擊類型,足以應對可能存在的所有安全威脅。
由于基于區塊鏈的公共審計方案均不支持數據動態操作,所以選用基于TPA且支持數據動態操作文獻[12,18,19]與本文方案進行比較。目前公共動態審計方案為減輕DO審計負擔,均將審計證明轉交其他實體TPA驗證,此過程中存在CSP和TPA共謀造假審計結果的行為。由于現有方案無法完全保證CSP端存儲數據的完整性和正確性,本文方案旨在抵御替換、偽造和刪除攻擊的同時抵御共謀攻擊和重放攻擊,增強審計驗證機制安全性。從表2可知,由于文獻[12,18,19]均引入半可信TPA,盡管通過盲化審計證明防止TPA竊取數據隱私,但無法同時抵御上述五種攻擊,仍存在安全隱患。
文獻[12]通過返回隨機抽樣數據塊實現抵御替換攻擊、偽造攻擊、重放攻擊與刪除攻擊,但該方案未考慮共謀攻擊。文獻[18]證明了CSP在未存儲正確數據時無法通過TPA的審計,但未討論如何應對重放攻擊與共謀攻擊。文獻[19]中TPA用索引哈希表存儲所有數據的審計信息,該方案在TPA完全誠實的情況下能抵御替換、偽造、重放和刪除攻擊,但無法抵御共謀攻擊。相比于文獻[12,18,19],本文方案利用共識機制選舉出可信的共識代表代替半可信TPA參與審計從而解決了共謀攻擊,在不返回云數據的情況下改進審計方案解決了審計過程中可能遇到的所有不誠實的實體行為。
6 性能分析
本章先比較分析本文方案與文獻[12,18,19]在上傳數據后進行審計驗證所產生的通信開銷與計算開銷,然后比較分析了在增、刪、改這三個動態數據操作階段的時間開銷。因為在支持數據動態操作的公共審計方案中,文獻[12]的審計協議采用了基于傳統MHT的數據結構,文獻[18]采用引入虛擬索引的索引表,文獻[19]采用與循環雙鏈表結合斐波那契樹結構,這三個方案是類似方案中較有代表性的,所以上述三個方案與本文方案進行分析比較。最后分析了錯誤數據定位功能的時間開銷與定位效率。
6.1 通信開銷與計算開銷
表3介紹了通信開銷與計算開銷分析過程中需使用的符號及其含義。
三個方案的審計過程均由DO發起,TPA或CR、CSP參與。其中文獻[12,18]需要DO在上傳數據前為其生成認證標簽,計算索引值或輔助路徑等相關信息,單個DO算力有限,在需要保護數據隱私的情況下無法提升處理數據的速度。文獻[19]需要DO額外為所有數據構建斐波那契樹。而本文方案僅需DO額外為所有數據進行單次hash運算并生成單個簽名。從表4可以看出本文方案系統總體的計算開銷比文獻[12,19]低,比文獻[18]略有增加,但DO的計算開銷最小,且CSP與CR相對較大的計算開銷可由兩者強大算力來彌補,因而本文方案更適用于DO沒有充足計算資源的審計場景。
在通信開銷方面,文獻[12]的審計協議需要DO額外為每個數據上傳輔助路徑和認證標簽,在審計驗證階段還需CSP向DO返回被挑戰的原始數據,文獻[18,19]需要DO額外為每個數據上傳認證標簽,而本文方案由于引入共識節點對數據代為處理,DO僅需上傳數據和請求消息即可。從表5可以計算出本文方案系統總體的通信開銷比文獻[12]低,比文獻[18,19]略有增加,但本文方案大幅降低了DO的通信開銷,對于DO通信資源有限的場景,本文方案具有一定優勢。
6.2 實驗結果
6.2.1 基于Jxta模擬的區塊鏈網絡
a)硬件環境。CPU:Intel Core i7 2.60 GHz,RAM:16.00 GB。
b)軟件環境。操作系統:64位Windows 10;開發軟件:IntelliJ IDEA;編程語言:Java;編程工具:JDK 1.8.0, Jxta 2.4,Jxta CMS 2.4.1,JPBC 2.0.0。
為分析本文提出的云數據審計方案,保證實驗結果的隨機性,本文使用隨機生成數據作為動態操作的輸入,通過Jxta技術構建DO與CSP之間的通信并搭建系統模型,并使用Java語言編程實現方案的基本功能。
實驗1 規定DO最初在CSP上存儲了5 000個文件,對CSP中的數據分別進行10 000次的插入、修改及刪除操作,統計每種操作不同操作次數下的平均時間開銷作為最終實驗結果進行分析,具體實驗結果如圖5~8所示。
從實驗結果來看,本文方案和文獻[18]在數據插入操作的平均時間開銷增幅較小,文獻[12,19]平均時間開銷隨插入數據量的增大而增大,原因在于本文提出的審計協議采用的是具有穩定樹高的帶權多層MHT數據結構,插入數據相當于對底層單鏈表進行插入,再從葉節點更新哈希值和權值到根節點即可。文獻[18]通過引入二維索引表來支持數據的動態操作,向索引表插入數據時需要移動后續所有節點信息,由于插入的數據量不多,所以平均時間耗費這方面增幅不大。相比來說,文獻[12]的審計數據結構依托于傳統MHT結構,在構造初始樹結構時的時間耗費就比其他方案多,且隨著大量數據的插入,該方案的樹結構將會嚴重失衡,在插入數據時影響查找效率,進而影響插入效率。文獻[19]將每個數據存儲為循環雙鏈表的節點,數據狀態每變化一次都會使舊數據下沉作為斐波那契樹的分支節點,新數據代替舊數據存儲在循環雙鏈表中以此實現數據追溯功能,由于該方案會存儲每一個更改的數據,插入多次數據后會影響后續的數據的查找效率。
在修改數據實驗中,為體現本文方案的優勢,采用進行了10 000次插入操作后的數據進行數據修改操作。在經過萬次插入操作后的本文方案MHT樹結構依然穩健,在進行數據查找時只需先找出數據對應分區和待修改數據即可,而文獻[12]采用的MHT結構紊亂,增大了數據查找難度,因而時間開銷較大。文獻[18]采用的是索引表結構,數據量不大,因此時間開銷和本文方案差距不大。文獻[19]在修改數據時,需重新更新斐波那契樹結構,因此整體的時間開銷是最大的。由于單次的修改操作流程都是一樣的,所以三個方案的平均時間開銷曲線均較為平緩。
在刪除數據實驗中,同上述的修改操作實驗一樣,采用進行了10 000次插入操作后的數據進行數據刪除操作。由于本文方案和三個對比方案采用的數據結構不同而影響了數據查找效率,但隨著整體數據量的減少,平均時間開銷均呈現下降趨勢。
為貼近實際情況,規定DO已存儲10 000條數據,隨機執行相同次數的增、刪、改、審計這四項操作,取每千次操作下的平均時間開銷研究實際情況中DO所需耗費的審計時間開銷。從圖8可知,對于DO不同的操作請求,文獻[12]時間開銷最大,文獻[18]的時間開銷排在其次,依賴于提出多層次帶權MHT的審計數據結構,本文方案響應DO單次請求的處理時間在30~45 ms,千次請求處理時間在3~5 s,時間開銷是可接受的。因此在實際情況中對于DO的不定期不定量不定操作的需求,相較于其他方案,本文方案能降低時間開銷,較為高效地應對各種情況,增強了實用性。
實驗2 規定當CSP返回的審計證明驗證失敗后需要進行錯誤數據定位操作,如圖9所示。規定待審計數據量為10 000,30 000,50 000,在隨機插入10~50個錯誤數據后進行單次審計,由于本文采取抽樣審計方案,為減小抽樣誤差,在每種情況下又分別進行100次審計取平均值。此外,在上述實驗基礎上記錄了計算所有錯誤數據所需的平均審計次數。
從實驗結果可以看出,隨著錯誤數據量的增加,審計時間開銷并不會大幅增加,因為在相同數據規模下,審計失敗則需對所有被挑戰的數據進行驗證。隨著錯誤數據量的增大,單次抽樣審計有更大概率檢測出錯誤數據并進行錯誤數據定位,但抽樣審計無法保證能一次性找到所有錯誤數據,因此本實驗還記錄了計算出所有錯誤數據所需的審計次數。表6給出了在含有不同個數錯誤數據的情況下,平均每次審計能找到的錯誤數據個數,可從表中看出針對不同數據量,在含有10個以上的錯誤數據時,CSP一定不能通過審計驗證,DO可以及時獲知CSP有沒有誠實地存儲數據,當錯誤數據小于10個時,CSP也無法保證每次都能通過審計,因此本文提出的審計方案是安全的。
6.2.2 基于以太坊私有鏈網絡
a)硬件環境。CPU:Intel Core i7 2.60 GHz,RAM:16.00 GB。
b)軟件環境。操作系統:64位Windows 10;以太坊私有鏈環境配置:npm v8.5.2、Node.js v17.7.2、Truffle v5.5.16、Ganache v6.12.2;加密實現:JPBC v2.0.0、哈希函數采用SHA3-keccak256;開發軟件:IntelliJ IDEA;編程語言:Java、JavaScript;編程工具:Web3.js v1.7.5、JDK v1.8.0。
搭建好以太坊私有鏈環境后,利用JPBC計算數字簽名并實現雙線性對計算等加密操作,利用SHA3-keccak256計算哈希值構建帶權多層次MHT,用Java實現基本功能,用Web3.js與私有鏈進行交互。
實驗3 在搭建好的以太坊私有鏈環境下,Ganache會默認分配10個以太坊賬戶,各取5個作為DO賬戶和CSP賬戶,在1 000~10 000條數據下分別進行抽樣審計,并在不同數據量下取總數據量的10%分別進行插入、修改和刪除操作,統計這四種操作的時間開銷,結果如圖10所示。
由圖10可知,以太坊私有鏈網絡相比于Jxta模擬的區塊鏈網絡,由于取總數據量的10%進行動態操作,數據操作量會隨著總數據量的增加而增加,所以導致其審計操作和增刪改操作的時間開銷均有所增加。由于以太坊是個成熟的區塊鏈平臺,賬戶之間以交易的形式傳遞數據信息,相比于Jxta模擬的區塊鏈網絡要更為復雜,所以會增加一定的時間開銷。隨著總數據量的增加,審計操作的時間開銷整體呈上升趨勢。
7 結束語
本文針對當前云數據公有審計方案中存在的安全、效率問題,提出一種基于改進的區塊鏈數據動態操作的公有審計方案。利用區塊鏈技術和共識機制增強審計方案安全性,在降低DO計算與通信開銷的情況下,還支持錯誤數據定位功能。但本文方案沒有研究審計失敗后具體追責問題,即不誠實的審計行為必須受到懲罰,誠實的行為必須獲得獎勵,這樣才能正向激勵所有實體努力維護系統安全。此外,本文沒有考慮恢復錯誤數據功能,由于DO數據沒有備份,數據一旦出現問題對DO而言損失是不可逆的。在后續工作中,將繼續對本文方案中存在的不足之處進行改進。
參考文獻:
[1]邵奇峰, 張召, 朱燕超,等. 企業級區塊鏈技術綜述[J]. 軟件學報, 2019, 30 (9): 2571-2592. (Shao Qifeng, Zhang Zhao, Zhu Yanchao, et al. Survey of enterprise blockchains[J]. Journal of Software, 2019, 30(9): 2571-2592.)
[2]Wang Cong, Wang Qian, Ren Kui, et al. Privacy-preserving public auditing for data storage security in cloud computing[C]//Proc of IEEE INFOCOM.Piscataway,NJ:IEEE Press, 2010: 1-9.
[3]Wang Cong, Sherman C S M, Wang Qian, et al. Privacy-preserving public auditing for secure cloud storage[J]. IEEE Trans on Computers, 2013,62(2):362-375.
[4]Shin S, Kim S, Kwon T. Identification of corrupted cloud storage in batch auditing for multi-cloud environments[C]//Proc of International Conference on Information and Communication Technology. Berlin: Springer, 2015: 221-225.
[5]龐曉瓊, 王田琪, 陳文俊, 等. 一個支持錯誤定位的批處理數據擁有性證明方案[J]. 軟件學報, 2019,30(2): 362-380. (Pang Xiaoqiong, Wang Tianqi, Chen Wenjun, et al. Batch provable data possession scheme with error locating[J]. Journal of Software, 2019,30(2): 362-380.)
[6]Xue Jingting, Xu Chunxiang, Zhao Jining, et al. Identity-based public auditing for cloud storage systems against malicious auditors via blockchain[J]. Science China: Information Sciences, 2019, 62(3): 41-56.
[7]Xu Yan, Sun Song, Cui Jie, et al. Intrusion-resilient public cloud auditing scheme with authenticator update[J]. Information Sciences: an International Journal, 2019,512(C): 616-628.
[8]Miao Ying, Huang Qiong, Xiao Meiyan, et al. Decentralized and privacy-preserving public auditing for cloud storage based on blockchain[J]. IEEE Access, 2020,8: 139813-139826.
[9]Chen Lanxiang, Fu Qingxiao, Mu Yi, et al. Blockchain-based random auditor committee for integrity verification[J]. Future Generation Computer Systems, 2022,131: 183-193.
[10]Wang Qian, Wang Cong, Ren Kui, et al. Enabling public auditability and data dynamics for storage security in cloud computing[J]. IEEE Trans on Parallel and Distributed Systems, 2011,22(5): 847-859.
[11]秦志光, 王士雨, 趙洋, 等. 云存儲服務的動態數據完整性審計方案[J]. 計算機研究與發展, 2015, 52(10): 2192-2199. (Qin Zhiguang, Wang Shiyu, Zhao Yang, et al. An auditing protocol for data storage in cloud computing with data dynamics[J]. Journal of Computer Research and Development, 2015,52(10): 2192-2199.)
[12]Sun Yi, Liu Qian, Chen Xingyuan, et al. An adaptive authenticated data structure with privacy-preserving for big data stream in cloud[J]. IEEE Trans on Information Forensics and Security, 2020,15: 3295-3310.
[13]李勇, 姚戈, 雷麗楠, 等. 基于多分支路徑樹的云存儲數據完整性驗證機制[J]. 清華大學學報: 自然科學版, 2016, 56(5): 504-510. (Li Yong, Yao Ge, Lei Linan, et al. LBT-based cloud data integrity verification scheme[J]. Journal of Tsinghua University: Science and Technology, 2016, 56(5): 504-510.)
[14]謝四江, 賈倍, 王鶴, 等. 基于多分支路徑樹的云存儲大數據完整性證明機制[J]. 計算機科學, 2019,46(3): 188-196. (Xie Sijiang, Jia Bei, Wang He, et al. Cloud big data integrity verification scheme based on multi-branch tree[J]. Computer Science, 2019,46(3): 188-196.)
[15]Zhu Yan, Ahn G, Hu Hongxin, et al. Dynamic audit services for outsourced storages in clouds[J]. IEEE Trans on Services Computing, 2013,6(2): 227-238.
[16]Yang Kan, Jia Xiaohua. An efficient and secure dynamic auditing protocol for data storage in cloud computing[J]. IEEE Trans on Parallel and Distributed Systems, 2013,24(9): 1717-1726.
[17]徐洋, 朱丹, 張煥國, 等. 云環境下基于代數簽名持有性審計的大數據安全存儲方案[J]. 計算機科學, 2016, 43(10): 172-176. (Xu Yang, Zhu Dan, Zhang Huanguo, et al. Big data storage security scheme based on algebraic signature possession audit in cloud environment[J]. Computer Science, 2016,43(10): 172-176.)
[18]韓靜, 李艷平, 禹勇, 等. 用戶可動態撤銷及數據可實時更新的云審計方案[J]. 軟件學報, 2020, 31(2): 578-596. (Han Jing, Li Yanping, Yu Yong, et al. Cloud auditing scheme with dynamic revocation of users and real-time updates of data[J]. Journal of Software, 2020, 31(2): 578-596.)
[19]Mishra R, Ramesh D, Edla D R, et al. Fibonacci tree structure based privacy preserving public auditing for IoT enabled data in cloud environment[J]. Computers and Electrical Engineering, 2022,100:article ID 107890.
[20]于戈, 聶鐵錚, 李曉華, 等. 區塊鏈系統中的分布式數據管理技術——挑戰與展望[J]. 計算機學報, 2021, 44(1): 28-54. (Yu Ge, Nie Tiezheng, Li Xiaohua, et al. The challenge and prospect of distributed data management techniques in blockchain systems[J]. Journal of Computers, 2021, 44(1): 28-54.)
[21]Yang Changsong, Chen Xiaofeng, Xiang Yang. Blockchain-based publicly verifiable data deletion scheme for cloud storage[J]. Journal of Network and Computer Applications, 2018,103: 185-193.
[22]Yang Xiaodong, Pei Xizhen, Wang Meiding, et al. Multi-replica and multi-cloud data public audit scheme based on blockchain[J]. IEEE Access, 2020,8: 144809-144822.
[23]Yuan Haoran,Chen Xiaofeng,Wang Jianfeng,et al. Blockchain-based public auditing and secure deduplication with fair arbitration[J]. Information Sciences, 2020,541: 409-425.
[24]Huang Yan, Su Zhaofeng, Zhang Fangguo, et al. Quantum algorithm for solving hyperelliptic curve discrete logarithm problem[J]. Quantum Information Processing, 2020,19(3): 120-126.
收稿日期:2022-08-02;修回日期:2022-09-28 基金項目:國家自然科學基金資助項目(61802286)
作者簡介:郭彩彩(1997-),女(通信作者),湖北荊州人,碩士研究生,主要研究方向為云存儲、區塊鏈(guocaicai23@163.com);金瑜(1973-),女,湖北武漢人,副教授,碩導,博士,主要研究方向為云計算、對等計算等分布式計算、信任模型、網絡安全等.