崔圓佑,王緒安,郎 訊,涂 正,蘇昀暄
(1.武警工程大學 密碼工程學院,陜西 西安 710000;2.武警安徽總隊,安徽 合肥 230000;3.武警貴州總隊,貴州 貴陽 550000)
近年來信息時代迎來了云計算、云存儲和物聯(lián)網等新科技。物聯(lián)網將所有的信息實體連接到互聯(lián)網上,包括計算機、可穿戴智能設備、傳感器等。云計算需要強大的存儲能力,一方面是為用戶提供強大的計算能力[1],另一方面用戶為了使用方便也更愿意將數(shù)據存儲在云端。云存儲與云計算緊密相連,同時前者是后者提供的最主要的服務之一。雖然云存儲具有數(shù)據管理高效、存儲空間擴展便利、成本較低和使用方便等優(yōu)點,但是云存儲器也因為其開放性和存儲數(shù)據的高價值,使之成為惡意攻擊的重點。同時云服務提供商也可能出于節(jié)約存儲空間和竊取用戶秘密的目的,破壞、刪除或者修改用戶存儲的數(shù)據。因此用戶必須審核存儲在云端的數(shù)據,保證云端數(shù)據的完整性不被破壞。
數(shù)據完整性審計[2-3]是指用戶在上傳原始數(shù)據后,在不直接訪問全部原始數(shù)據的情況下,通過某項協(xié)議達到對云端數(shù)據完整性驗證的目的。數(shù)據完整性審計的思想是首先由云存儲服務提供商通過計算用戶上傳的原始數(shù)據產生一個能夠證明數(shù)據完整性的簽名或者證據,然后返回給用戶。驗證前用戶首先對原始數(shù)據進行處理和計算,得出一些特征信息并存儲在本地,然后驗證時則根據申請驗證前存儲的一些信息,來對要求云端返回證據的正確性進行驗證,從而確保數(shù)據完整性不被破壞。依據是能否修復出錯數(shù)據文件,經典地分為數(shù)據持有性證明機制(Provable Data Possession,PDP)和數(shù)據可恢復性機制(Proofs Of Retrievability,POR)。2001年由BONEH等[4]提出了BLS簽名機制,這是一種對數(shù)據完整性驗證的次數(shù)沒有限制且能夠支持公開驗證的短消息簽名機制。在這個PDP機制中,利用BLS簽名替代Ateniese方案中的RSA簽名。2004年,為了解決審計次數(shù)受限的問題,DESWARTE等[2]利用具有同態(tài)特性RSA簽名算法(am)r=amr=(ar)mmodN,提出了基于RSA簽名的PDP驗證機制。但是引入RSA算法依然無法解決計算開銷過大的難題。因此,2006年,FILHO等[5]在此基礎上引入了歐拉函數(shù)φ(n)來降低計算量,提高傳輸速度。2007年與2011年,ATENIESE等[6-7]對此進行改進。此方案通過引入數(shù)據文件分塊技術和同態(tài)認證標簽成功降低了計算規(guī)模,并把多個數(shù)據塊的值通過計算聚合為一個值。而且采用抽樣的策略,通過概率性證據而不是絕對性證據對云端數(shù)據進行數(shù)據完整性檢測,進一步降低了計算的開銷。2011年,WANG等[8]提出了一種基于BLS同態(tài)簽名和RS糾錯碼的方案,用以實現(xiàn)可證明的數(shù)據持有性證明PDP。該驗證方案使用默克爾哈希樹(Merkle Hash Tree,MHT)和 BLS保證存儲的數(shù)據塊的正確性,支持數(shù)據的公共驗證和動態(tài)更新。此外,2008年,CURTMOLA等[9]提出了新的數(shù)據持有性驗證機制(MR-PDP),用以實現(xiàn)支持多副本的數(shù)據完整性證明。在提高數(shù)據安全性的同時,降低了對多個副本逐一進行驗證的開銷之和。2016年,李勇等[10]利用多分支路徑樹(Large Branching Tree,LBT)來存儲處理數(shù)據塊,從而構造了新的數(shù)據完整性驗證方式(LBT-PDP),用以取代之前的跳表。2019年,ZHU等[11]設計了一種基于ZSS短簽名的,可用于審計云物聯(lián)網數(shù)據的方案,從而降低開銷。2020年,毛向杰等[12]設計了一種云數(shù)據完整性混合驗證方案。為實現(xiàn)高效驗證,該方案中靜態(tài)驗證使用基于BLS簽名的驗證方式,動態(tài)驗證使用基于多分支路徑的驗證方式。2020年,楊小東等[13]提出了一種基于秘密共享技術和多分支路徑樹的多用戶多副本云端數(shù)據公開審計方案。為了滿足用戶安全撤銷的需求,該方案引入了重簽名算法。此外,2020年,咸鶴群等[14]提出了一種無需第三方審計者(Third Party Auditor,TPA)在線參與的云存儲數(shù)據刪重方案,確保在進行流行度調查時不泄露明文信息。2022年,楊海濱等[15]設計了一種無雙線性對的云審計方案,通過Schnorr算法和區(qū)塊鏈技術只生成被審計數(shù)據的標簽,從而降低開銷。
然而文獻[11]的方案中存在一些瑕疵,還不夠嚴謹。主要是在證據生成過程中,生成的部分證據無法進行運算,不滿足加法循環(huán)群的運算法則。文中在原數(shù)據驗證協(xié)議的基礎上進行了一些調整,彌補了原方案中的不足。通過分析該方案的安全性,證明了文中對ZHU等原方案的優(yōu)化和改進是有效的。
ZHU等方案的系統(tǒng)模型如圖1所示,共有3個實體組成: 用戶、云服務提供商(Cloud Service Provider,CSP)和第三方審計者(Third Party Auditor,TPA),也就是User/Client、CSP和TPA。具體的應用場景包括物聯(lián)網、醫(yī)療系統(tǒng)、電力系統(tǒng)或者其他工業(yè)系統(tǒng)等。醫(yī)療系統(tǒng)中可以傳輸相關醫(yī)療數(shù)據,電力系統(tǒng)中可以傳輸相關用戶信息,物聯(lián)網中可以依托傳感器等收集和傳遞相關信息。
(1) 用戶(User/Client):主要包括對數(shù)據有存儲需求的用戶和對數(shù)據進行收集的設備。以物聯(lián)網為例,網絡控制中心將傳感器收集到的用戶數(shù)據存儲在CSP提供的云存儲服務器上,用戶可以與云存儲服務器建立通信。此外,TPA受用戶委托審計云端存儲數(shù)據的完整性。
(2) 云服務提供商:提供的業(yè)務包括數(shù)據的存儲和計算。
圖1 基于物聯(lián)網的云審計系統(tǒng)模型
(3) 第三方審計者:具有專業(yè)能力的、獨立可信第三方。它不知道所存儲的具體的數(shù)據。在獲得用戶審計授權后,它向存儲用戶數(shù)據的云服務器發(fā)起驗證申請。
工作流程如下:
① KeyGen(k)→(pk,sk):輸入安全參數(shù)k,輸出用戶的的公鑰pk和私鑰sk。
② SigGen(sk,m)→σ:輸入一個文件m和私鑰sk,輸出數(shù)據塊的簽名集σ。
③ GenProof(m,σ,chal)→pf:將一個文件m、一個簽名集合σ和生成的挑戰(zhàn)信息chal作為輸入,輸出由挑戰(zhàn)信息chal指定的數(shù)據塊的占有證明pf。
④ VerifyProof(chal,pf)→{TRUE,FALSE}:將一條挑戰(zhàn)信息chal和一條完整性證明pf作為輸入,輸出結果為真(TRUE)或為假(FALSE)。
具體結構如下:
(2) SigGen(sk,m)→σ:簽名時,用戶計算出對應的數(shù)據塊的簽名σ。文件m被分割為數(shù)據塊{m1,m2,…,mn},mi是其中任意一個數(shù)據塊,其對應的簽名為σi。
令簽名:
(1)
則文件m的簽名為σ={σ1,σ2,…,σn}。用戶將文件m和簽名σ打包為{m,σ}發(fā)送給CSP,將簽名σ發(fā)送給TPA,將本地保存的文件m刪除。
首先TPA生成挑戰(zhàn)信息,然后發(fā)送給CSP。TPA從集合{1,2,…,n}選擇c個元素組成新的集合I={s1,s2,…,sc},其中1≤s1≤…≤sc≤n。對于任意i∈I,首先TPA生成一個偽隨機數(shù)vi=φ(kO,i),然后發(fā)送一個挑戰(zhàn)信息chal={(i,vi)}s1≤i≤sc給CSP。
(3) GenProof(m,σ,chal)→pf:在CSP收到TPA的挑戰(zhàn)信息chal和受挑戰(zhàn)的數(shù)據塊的簽名{σi}s1≤i≤sc后,計算:
(2)
(3)
(4)
最后,CSP將證據pf={R,μ,η}發(fā)送給TPA。
(4) VerifyProof(chal,Pf)→{TRUE,FALSE}:在這個階段,TPA在收到證據pf后,對相應的簽名{σi}s1≤i≤sc進行驗證。通過對下面的等式進行驗證,判斷被第三方審計挑戰(zhàn)的數(shù)據塊是否被正確地持有:
e(η,P)·e(μ+R,P)=e(P,P) 。
(5)
(1) 根據循環(huán)群的定義,若一個群G的每一個元都是G的某一個固定元a的乘方,則稱G為循環(huán)群,記作G=(a)={am|m∈Z},此時稱a為群G的一個生成元。 簡單地理解,就是循環(huán)群內的運算,如加法或者乘法,是以生成元的整數(shù)冪次(整數(shù)倍)的運算。 假設G的代數(shù)運算用加號表示時,有G= (a)={am|m∈Z}。
(2) 根據橢圓曲線運算特點,假定P點為(a1,b1),Q點為(a2,b2),P+Q為(a3,b3)。因此當在進行形如2P,3P,…,NP的計算時,這個不是單純的2×P乘法這么簡單,而是要進行如P+Q的運算,如2P=P+P,3P=P+2P等。
(1) 根據ZSS短簽名所基于雙線性映射的雙線性特征,e(k1P+k2P,P)=e(k1P,P)·e(k2P,P),可知要使TPA證據驗證時等式e(η,P)·e(μ+R,P)=e(P,P)成立,只需要滿足e(η+(μ+R),P)=e(P,P),即Y=xP。 而要使等式η+(μ+R)=P成立,顯然是容易的,例如攻擊者可以偽造證據pf′={R′,μ′,η′},令η′=3P,μ′=-P,R′=-P。
攻擊者可以是惡意的CSP,通過偽造證據pf={R,μ,η},欺騙TPA進行完整性審計,實現(xiàn)篡改云存儲服務器中的數(shù)據,甚至不需要存儲任何數(shù)據,從而節(jié)約存儲空間。 某未知攻擊者也可以截獲用戶上傳的數(shù)據后,將錯誤的數(shù)據上傳給云服務器,而在TPA進行審計時,直接冒充CSP回復證據。
(2) 原方案無法抵御重放攻擊。 假設某次審計生成的挑戰(zhàn)為chal1,第2次審計生成的挑戰(zhàn)為chal2,則CSP兩次生成的證據分別為pf1={R1,μ1,η1}和pf2={R2,μ2,η2}。
TPA第1次發(fā)出挑戰(zhàn)時,CSP生成的證據pf1能夠通過等式e(η,P)·e(μ+R,P)=e(P,P)的驗證。此時CSP保存第1次審計時的證據pf1。 在TPA第2次發(fā)出挑戰(zhàn)時,惡意CSP可以將存儲的數(shù)據直接刪除或篡改的情況下,直接返回第1次的證據pf1同樣能通過驗證。 因為pf1已經證明是正確的,同時在e(η,P)·e(μ+R,P)=e(P,P)中,3個變量η,R,μ均為已知。所以惡意CSP可以利用pf1應對所有TPA的審計。
文中針對原方案中暴露出的運算正確性問題提出了優(yōu)化方案,主要是改進優(yōu)化了證據pf中的η的生成算法。
(2) SigGen(sk,m)→σ:簽名時,用戶計算出對應的數(shù)據塊的簽名σ。 文件m被分割為數(shù)據塊{m1,m2,…,mn},mi是其中任意一個數(shù)據塊,其對應的簽名為σi,與原方案的式(1)相同。
因此,文件m的簽名為σ={σ1,σ2,…,σn}。 用戶將文件m和簽名σ打包為{m,σ}發(fā)送給CSP,將簽名σ發(fā)送給TPA,將本地保存的文件m刪除。
首先TPA生成挑戰(zhàn)信息,然后發(fā)送給CSP。 TPA從集合{1,2,…,n}選擇c個元素組成新的集合I={s1,s2,…,sc},其中1≤s1≤…≤sc≤n。 對于任意i∈I,首先TPA生成一個偽隨機數(shù)vi=φ(kO,i),然后發(fā)送一個挑戰(zhàn)信息chal={(i,vi)}s1≤i≤sc給CSP。
(3) GenProof(m,σ,chal)→pf:在CSP收到TPA的挑戰(zhàn)信息chal和受挑戰(zhàn)的數(shù)據塊的簽名{σi}s1≤i≤sc后計算:R、μ和η。 其中R和μ與原方案的式(2)和式(3)相同,η的計算公式為
(6)
最后,CSP只將證據pf*={μ,η}發(fā)送給TPA。
(4) VerifyProof(chal,Pf)→{TRUE,FALSE}:在這個階段TPA在收到證據pf*={μ,η}后,通過之前發(fā)送給CSP的挑戰(zhàn)信息chal={(i,vi)}s1≤i≤sc和公鑰Y=xP,計算出:
(7)
通過對下面的等式進行驗證,判斷被可信第三方挑戰(zhàn)的數(shù)據塊是否被正確地持有:
e(μ+R*,η)=e(P,P)H(R*)+H(μ)。
(8)
定理1在優(yōu)化改進的云審計方案中,假如TPA和CSP可以互相正確應答相關信息,且能完成完整性審計,則證明方案正確。
證明:根據改進的方案,在驗證階段,如果TPA與CSP互相傳遞的信息無誤,那么CSP提供給TPA的證據pf={R,μ,η}也是正確的;如果TPA驗證時能夠通過下面的等式,則表明改進的方案是正確的,即
e(P,P)H(R)+H(μ)=
e(P,P)H(R*)+H(μ)。
證明:為了實現(xiàn)用戶外包數(shù)據的完整性審計,用戶首先計算外包數(shù)據的數(shù)據塊標簽,然后發(fā)送給TPA:
同時,TPA能夠自行獲取用戶的公鑰Y=xP。
定理3TPA無法通過 CSP 提供的證據pf={μ,η},來恢復用戶的數(shù)據。
證明:假設在隨機預言機模型下,存在一個模擬器Γ能夠在沒有獲得用戶隱私數(shù)據的前提下生成正確的回復。假定TPA為敵手A1,此時A1通過構建模擬器Γ來模擬TPA的輸入和輸出,模擬器Γ擁有公鑰pk和簽名σ等公開的信息。
攻擊者A1輸入集合I={s1,s2,…,sc}和證據pf*={μ,η},輸出結果TRUE或者FLASE。 構造的模擬器將執(zhí)行以下操作:
(1) 模擬器Γ選擇隨機數(shù)i∈Zq且i∈{1,2,…,n}。
(2) 模擬器Γ從集合{1,2,…,n}中選擇c個元素組成新的集合I={s1,s2,…,sc}。
(3) 模擬器Γ生成一個挑戰(zhàn)信息chal={(i,vi)}s1≤i≤sc給CSP。
(4) 此時攻擊者A1得到CSP返回給TPA的證據pf*={μ,η}。
定理4不存在一個概率多項式時間(Probabilistic Polynomial-Time,PPT)的攻擊者A能夠使用算法P偽造出證明pf′,并通過完整性驗證。
證明:假設存在一個攻擊者A,可以偽造簽名并騙過TPA審計。此時攻擊者A生成相應的證據pf′={μ′,η′}能夠使等式e(μ′+R*,η′)=e(P,P)H(R*)+H(μ′)成立。
定理5改進方案能夠抵御前文給出的第1種攻擊。
證明:改進的方案中TPA進行驗證的等式為
e(μ+R*,η)=e(P,P)H(R*)+H(μ)。
通過在等號右側進行H(R*)+H(μ)次冪運算,避免出現(xiàn)驗證等式e(μ+R,η)=e(P,P)的情況。若等號右側未進行H(R)+H(μ)次冪運算,則偽造證據僅需滿足:
(9)
而通過在等號右側進行H(R*)+H(μ)次冪運算,為使等式e(μ+R*,η)=e(P,P)H(R*)+H(μ)成立,即令e(μ+R*,η)=e(P,(H(R*)+H(μ))P),則需要滿足:
(10)
此時P、μ+R和η均在橢圓曲線上,且μ、R和η均未知,尋找a,b,μ,R,η滿足等式(9)是困難的,因此構造滿足條件的證據pf*={μ,η}和R*是困難的,且R*在TPA上,無法偽造。定理5證畢。
定理6新方案能夠抵御重放攻擊。
文中分析對比了新方案與原方案中的計算開銷。為了更好地對比兩者之間的性能差異,首先分別對兩個方案中用戶、CSP和TPA的計算開銷進行分析,然后進行對比,得出變化量。計算符號含義如表1所示。
表1 計算符號含義
從表2可以看出,文中改進方案的標簽的計算開銷與原方案相同。 同時發(fā)現(xiàn),一方面在新方案中CSP針對TPA的挑戰(zhàn),生成證據的計算開銷有所增加,生成證據的時間變化量與審計的數(shù)據塊量呈線性關系;另一方面,新方案中TPA進行完整性驗證的計算開銷的變化量,不隨審計數(shù)據塊數(shù)量的變化而變化。 最后新方案整體的計算開銷變化不大,而且比原方案提供了更好的計算準確性。此外在通信開銷上原方案CSP上傳的證據為pf={R,μ,η},新方案為pf*={μ,η},節(jié)約了通信開銷。
表2 計算開銷對比
筆者發(fā)現(xiàn)ZHU等的方案雖然運算效率較高,但是在驗證過程中存在計算方面的問題,這意味著該方案在實際運行中會存在諸多問題。針對存在的問題,文中在原方案的基礎上進行優(yōu)化,提出改進方案,對安全性進行驗證,同時改進的方案較大地壓縮了ZHU方案的計算開銷。希望在未來的安全云存儲方案設計中,相關研究人員能夠避免出現(xiàn)相關數(shù)學運算上的問題,提高審計方案的正確性。
文中改進方案是基于ZSS方案的,與基于RSA的方案不同,相比文中方案具有更低的計算開銷,但是在面對未來日益復雜的用戶需求,后期要從以下兩點進行改進:
(1) 文中方案沒有考慮云存儲文件的備份。如果云存儲器遭受物理或者網絡破壞,數(shù)據將受到威脅。下一步工作將融入多副本方案,改進數(shù)據存儲的安全性。
(2) 文中方案目前不支持動態(tài)驗證。下一步將結合MHT或者在多副本方案下結合MHT,改進出支持數(shù)據動態(tài)操作的數(shù)據完整性驗證方案。