楊海濱,李瑞峰,易錚閣,鈕 可,楊曉元
(1.武警工程大學(xué) 密碼工程學(xué)院,陜西 西安 710086;2.網(wǎng)絡(luò)與信息安全武警部隊(duì)重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710086)
隨著云計(jì)算技術(shù)的發(fā)展,用戶愈加傾向?qū)?shù)據(jù)存儲至云端,以獲得更加便捷的數(shù)據(jù)管理服務(wù)。由于云服務(wù)提供商(Cloud Service Provider,CSP)集中持有海量用戶的數(shù)據(jù),對于攻擊者而言,攻擊云服務(wù)端成功后收獲較大,因此云服務(wù)端容易成為集中攻擊的目標(biāo);另一方面,不誠實(shí)的云服務(wù)提供商也可能為減少自身存儲負(fù)擔(dān),而故意刪除用戶的數(shù)據(jù),或?yàn)榫S護(hù)自身聲譽(yù),而有意隱瞞對數(shù)據(jù)完整性造成破壞的安全事故。為此,用戶可通過運(yùn)行云端數(shù)據(jù)完整性審計(jì)方案與云服務(wù)器交互,可以驗(yàn)證存儲至云端的數(shù)據(jù)是否完整,從而有效地解決此類問題。2007年,文獻(xiàn)[1]中第一次正式定義數(shù)據(jù)持有性證明(Provable Data Possession,PDP)方案。該方案選取部分?jǐn)?shù)據(jù)進(jìn)行審計(jì),最終能以一個較高的概率確認(rèn)全部數(shù)據(jù)的完整性,減少了審計(jì)者的計(jì)算和通信開銷。后續(xù)的方案大多是基于此方案進(jìn)行功能擴(kuò)展的。對于資源受限的用戶來說,云端數(shù)據(jù)完整性審計(jì)工作負(fù)擔(dān)較大,因此在實(shí)際中,由用戶作為審計(jì)者的私有審計(jì)方案并不適用。文獻(xiàn)[2]中首次引入富有經(jīng)驗(yàn)且算力較強(qiáng)的第三方審計(jì)者(Third Party Auditor,TPA),由審計(jì)者承擔(dān)部分審計(jì)開銷,實(shí)現(xiàn)低計(jì)算開銷的公開云審計(jì)。
考慮到云環(huán)境下數(shù)據(jù)存儲安全審計(jì)在支持動態(tài)操作方面的迫切需求[3],學(xué)者們提出支持?jǐn)?shù)據(jù)動態(tài)更新的云審計(jì)方案。文獻(xiàn)[4]中提出支持全動態(tài)操作的數(shù)據(jù)持有型證明方案,支持?jǐn)?shù)據(jù)塊的插入、刪除、修改等更新操作。但這種方案不支持對用戶數(shù)據(jù)的隱私保護(hù),且開銷較大。文獻(xiàn)[5]中將默克哈希樹用于數(shù)據(jù)塊標(biāo)記認(rèn)證,對現(xiàn)有的存儲模型進(jìn)行改進(jìn),便于實(shí)現(xiàn)數(shù)據(jù)動態(tài)更新,同時使用雙線性聚合簽名技術(shù)以實(shí)現(xiàn)批量審計(jì)。但該方案不適合存儲大型文件,其開銷將隨著文件增大而快速增加。文獻(xiàn)[6]中提出一種基于索引轉(zhuǎn)換器的云審計(jì)方案,利用索引轉(zhuǎn)換器可以避免數(shù)據(jù)塊的動態(tài)更新所引起的無關(guān)數(shù)據(jù)索引信息的重新計(jì)算。但在整個審計(jì)過程中需要索引轉(zhuǎn)換器反復(fù)傳遞數(shù)據(jù),通信開銷較大。文獻(xiàn)[7]中提出一種基于動態(tài)哈希表的支持動態(tài)更新的云審計(jì)方案,將審計(jì)所需元數(shù)據(jù)從云服務(wù)端轉(zhuǎn)移至審計(jì)者,降低了計(jì)算和通信開銷。文獻(xiàn)[8]中提出一種基于位置數(shù)組雙向鏈接表的云審計(jì)方案,使用全局和無塊抽樣驗(yàn)證方式,同樣可以降低計(jì)算和通信開銷。文獻(xiàn)[9]中提出一種任務(wù)外包且支持?jǐn)?shù)據(jù)動態(tài)更新的云數(shù)據(jù)完整性驗(yàn)證方案,提供日志審計(jì)機(jī)制,使用戶檢測到不誠實(shí)審計(jì)者的不端行為。但方案存在安全漏洞,審計(jì)者對相同索引的數(shù)據(jù)塊進(jìn)行多次審計(jì)后,理論上可通過求解線性無關(guān)方程組來偽造數(shù)據(jù)標(biāo)簽。文獻(xiàn)[10]中所提出的云審計(jì)方案,使用變色龍認(rèn)證樹降低數(shù)據(jù)動態(tài)更新過程中的計(jì)算成本,而且支持批量審計(jì)。
然而,文獻(xiàn)[6-10]中的方案都使用大量的冪運(yùn)算與雙線性對計(jì)算,導(dǎo)致審計(jì)效率不高?,F(xiàn)階段越來越多的資源受限的輕量級設(shè)備,如平板電腦、智能手機(jī)、智能手環(huán)等使用云服務(wù)器所提供的外包存儲服務(wù),大部分使用雙線性映射的云審計(jì)方案將雙線性配對視作一個“黑盒”來構(gòu)造密碼協(xié)議。然而實(shí)際中,雙線性配對的性質(zhì)實(shí)現(xiàn)起來并不容易,且效率不高[11],導(dǎo)致輕量級設(shè)備在與云端交互來驗(yàn)證數(shù)據(jù)的完整性時,承擔(dān)了較自身性能相比更沉重的計(jì)算負(fù)擔(dān)。文獻(xiàn)[12]提出一種無雙線性對的云數(shù)據(jù)完整性驗(yàn)證方案,計(jì)算性能優(yōu)于現(xiàn)有方案,但使用數(shù)據(jù)塊索引構(gòu)造標(biāo)簽,在進(jìn)行動態(tài)操作時效率較低。文獻(xiàn)[13]中提出的無雙線性對云審計(jì)方案同樣使用真實(shí)索引構(gòu)造標(biāo)簽,且需要維護(hù)索引轉(zhuǎn)換表或默克哈希樹,效率不高。
現(xiàn)階段云審計(jì)方案在對數(shù)據(jù)塊進(jìn)行預(yù)處理時,需要用戶計(jì)算全部數(shù)據(jù)塊所對應(yīng)的數(shù)據(jù)標(biāo)簽,并上傳至云服務(wù)提供商進(jìn)行存儲。然而在審計(jì)過程中,一般只需要使用到小部分?jǐn)?shù)據(jù)塊的標(biāo)簽來生成證據(jù),證據(jù)一旦通過驗(yàn)證,可確保審計(jì)方指定的每一數(shù)據(jù)塊都完整,同時以一個高置信的概率保證所有原始數(shù)據(jù)塊的完整性。對于100萬個4 kB大小的數(shù)據(jù)塊,假設(shè)服務(wù)方刪除或篡改了1%的數(shù)據(jù)塊,則審計(jì)方只需審計(jì)460個數(shù)據(jù)塊,就可以高于99%的置信概率[1]判斷數(shù)據(jù)的完整性。因此審計(jì)過程中大部分?jǐn)?shù)據(jù)標(biāo)簽處在閑置狀態(tài)。如果在動態(tài)更新刪除或修改數(shù)據(jù)塊較為頻繁的應(yīng)用場景下,大量標(biāo)簽被計(jì)算產(chǎn)生、存儲至云端后,并沒有被使用,就會隨著數(shù)據(jù)塊的更新而更新,造成較大計(jì)算與存儲資源的浪費(fèi)。
針對上述問題,筆者提出一種高效的無雙線性對云存儲數(shù)據(jù)審計(jì)方案。這種方案中云服務(wù)端只針對被審計(jì)數(shù)據(jù)塊生成標(biāo)簽,解決了現(xiàn)有方案中標(biāo)簽閑置的問題。與文獻(xiàn)[6-10]相比,不需執(zhí)行雙線性映射、冪指數(shù)、映射到點(diǎn)的哈希函數(shù)等大開銷運(yùn)算,審計(jì)效率較高。與文獻(xiàn)[12-13]相比,本方案對數(shù)據(jù)塊進(jìn)行動態(tài)更新時,效率更高。在產(chǎn)生挑戰(zhàn)階段,云服務(wù)端與審計(jì)者使用區(qū)塊鏈上不受任意方控制的公共參數(shù),生成挑戰(zhàn)信息,雙方不需進(jìn)行交互,降低了通信開銷,且用戶能夠得知每一次審計(jì)的時間,從而有效地避免了審計(jì)者的不誠實(shí)行為。安全性分析表明,基于橢圓曲線上離散對數(shù)問題的困難性,本方案能抵抗來自云服務(wù)端的偽造攻擊、重放攻擊,且支持針對審計(jì)者的數(shù)據(jù)隱私保護(hù)。
現(xiàn)有云審計(jì)方案系統(tǒng)模型[14]包括3個實(shí)體。用戶:云存儲服務(wù)的使用者,將自身數(shù)據(jù)存儲至云端。云服務(wù)提供商:云存儲服務(wù)的提供者,管理和存儲用戶的數(shù)據(jù)。第三方審計(jì)者:云端數(shù)據(jù)完整性的驗(yàn)證者,用戶將審計(jì)服務(wù)外包給專業(yè)的第三方審計(jì)者,以節(jié)省自身開銷。
筆者提出的審計(jì)流程如下:用戶發(fā)送數(shù)據(jù)文件至云服務(wù)端進(jìn)行存儲、管理后,可以對云端數(shù)據(jù)實(shí)施增加、刪除、修改等動態(tài)操作。用戶將審計(jì)工作外包給審計(jì)者。在需要驗(yàn)證云端數(shù)據(jù)完整性時,云服務(wù)端與審計(jì)者使用區(qū)塊鏈上的公共參數(shù)生成挑戰(zhàn)信息,此過程不需進(jìn)行交互,降低了通信開銷,且保證了挑戰(zhàn)參數(shù)的隨機(jī)性。審計(jì)者將挑戰(zhàn)參數(shù)發(fā)送給用戶后,用戶計(jì)算驗(yàn)證所需的中間參數(shù),發(fā)送給云服務(wù)端。云服務(wù)端收到來自用戶的中間參數(shù)后,利用所存儲的用戶數(shù)據(jù)文件生成數(shù)據(jù)持有性證明,發(fā)送給審計(jì)者。審計(jì)者驗(yàn)證來自云服務(wù)端的證明,將審計(jì)結(jié)果告知用戶。
區(qū)塊鏈本質(zhì)上為一個由多個節(jié)點(diǎn)共同維護(hù)、能夠系統(tǒng)運(yùn)轉(zhuǎn)的數(shù)據(jù)庫儲存系統(tǒng),是多種技術(shù)的集成,包括去中心化技術(shù)、信息加密技術(shù)、共識機(jī)制等,具有去中心化、開放性、獨(dú)立性、安全性、匿名性等特點(diǎn)[15]。
在方案中,三方實(shí)體共同選擇一條區(qū)塊鏈,區(qū)塊鏈上存在不受任何一方控制的時間戳。在生成挑戰(zhàn)階段,三方實(shí)體通過區(qū)塊鏈上的時間戳,生成同樣的挑戰(zhàn)參數(shù),達(dá)到了非交互性產(chǎn)生數(shù)據(jù)挑戰(zhàn)的目的,減少了計(jì)算、通信開銷,提高了審計(jì)效率。同時,能夠確保不受任一方控制的時間戳產(chǎn)生的挑戰(zhàn)參數(shù)完全隨機(jī),提高了方案的安全性。
Schnorr簽名算法[16]是ElGamal簽名體制的一種變形,大部分計(jì)算都可在預(yù)處理階段完成。通過離線時的簽名預(yù)處理,可以提高簽名速度。與RSA 簽名、ElGamal 簽名相比,只需較短的簽名長度就能達(dá)到同樣的安全等級。筆者將Schnorr簽名算法應(yīng)用于云存儲環(huán)境下的數(shù)據(jù)完整性驗(yàn)證方案。
Schnorr簽名算法原理:定義橢圓曲線上循環(huán)群G,待簽名數(shù)據(jù)m,私鑰x,公鑰X=x·p,哈希函數(shù)H,取g為G上的生成元。生成簽名時,簽名者選取一個隨機(jī)數(shù)k,計(jì)算R=k·g,計(jì)算S=k+H(m‖R‖X),(R,S)即為簽名。驗(yàn)證簽名時,驗(yàn)證等式S·G=R+H(m‖R‖X)·X。若等式成立,則證明簽名合法。
筆者提出的具體方案如下:
(4) VerifyProof(ij,aj,S,w,R,pk)→true/false:審計(jì)者接收來自云服務(wù)端的S與來自用戶的w后,驗(yàn)證如下等式是否成立:
(1)
若等式成立,則告知用戶數(shù)據(jù)完整性未被破壞。
當(dāng)刪除數(shù)據(jù)塊mi時,用戶將要刪除的數(shù)據(jù)塊的索引i發(fā)送給云服務(wù)端和審計(jì)者,云服務(wù)端定位并刪除數(shù)據(jù)塊mi,ki將i之后的所有索引號加1;審計(jì)者定位并刪除對應(yīng)的hi、Ri、Xi,將i之后的所有索引號加1。
當(dāng)修改數(shù)據(jù)塊mi為mj時,用戶計(jì)算hj=h(mj),Xj=hjmjg,將要修改的數(shù)據(jù)塊的索引i和修改后的數(shù)據(jù)塊mj發(fā)送給云服務(wù)端,將要刪除的數(shù)據(jù)塊的索引i和hj、Xj發(fā)送給審計(jì)方。云服務(wù)端根據(jù)i查找mi,并用mj替代。審計(jì)方根據(jù)i找到hi、Ri、Xi,使用hj,Rj,Xj將其替代。
(6) 方案正確性:
(2)
由式(2)可以看出,云服務(wù)端若正確完整地存儲數(shù)據(jù),則可通過審計(jì)者的審計(jì)。
(1) 抗偽造攻擊:如果用戶存儲至云端的數(shù)據(jù)損壞或被篡改,云服務(wù)端生成偽造的審計(jì)證明S′能夠通過審計(jì)者的審計(jì),則云服務(wù)端能解決橢圓曲線上的離散對數(shù)問題。
證明云服務(wù)端在數(shù)據(jù)不正確的情況下,生成偽造的數(shù)據(jù)持有性證明S′,定義
(3)
因?yàn)镾′是偽造的證據(jù),所以S′與S必然存在差異,即ΔS≠0。假設(shè)云服務(wù)端偽造的證明S′能夠通過審計(jì)者的審計(jì),即有
(4)
正確的證明S可以通過審計(jì)者的審計(jì),因此
(5)
由式(4)和式(5),得ΔS·g=0。因此,若云服務(wù)端能成功偽造數(shù)據(jù)塊,則可找到ΔS≠0使ΔS·g=0。橢圓曲線上的點(diǎn)構(gòu)成循環(huán)群。設(shè)橢圓曲線群G上一點(diǎn)A∈G,A=ag,a∈Zp。群G的階為p,群中元素的階整除群的階,故A的階為1或p,即A=0或pA=0。若A=0,則ΔS·g=A,即a=ΔS。若pA=0,則ΔS·g=pA,即a=ΔS/p。
得到結(jié)論:若云服務(wù)端能成功偽造數(shù)據(jù)塊,則能解決橢圓曲線上的離散對數(shù)問題。因其是困難問題,故云服務(wù)端不能偽造通過審計(jì)的假數(shù)據(jù)塊。
(6)
式(6)的計(jì)算結(jié)果為零的概率忽略不計(jì)。因此,在挑戰(zhàn)中所選擇的數(shù)據(jù)塊數(shù)量及位置不變的情況下,云服務(wù)端若刪除數(shù)據(jù)塊,則只使用以往的證明S便無法通過此次審計(jì)。本方案可抵抗重放攻擊。
(3) 隱私保護(hù):假設(shè)審計(jì)者是半誠實(shí)的,即在執(zhí)行審計(jì)的同時,也對用戶數(shù)據(jù)感到好奇。針對第三方審計(jì),本方案能夠保證用戶數(shù)據(jù)的隱私安全。在整個審計(jì)過程中,審計(jì)者有機(jī)會持有H(mi)和Xi。根據(jù)哈希函數(shù)的單向性,審計(jì)者無法根據(jù)H(mi)計(jì)算mi。因Xi=himig,根據(jù)橢圓曲線上的離散對數(shù)問題的困難性,審計(jì)者同樣無法利用Xi計(jì)算mi。在ChalGen階段,云服務(wù)端和審計(jì)者接收用戶產(chǎn)生的H(x‖R‖P),因哈希函數(shù)的單向性,也無法獲得用戶的秘密值x。
為了更加直觀地體現(xiàn)本方案的性能,首先對方案的計(jì)算開銷進(jìn)行數(shù)值分析;然后在計(jì)算開銷和動態(tài)更新開銷方面與文獻(xiàn)[6-10]中的方案進(jìn)行對比;最后利用JPBC庫,在64位Windows10操作系統(tǒng),2.5 GHz,i5CPU,4 GB內(nèi)存環(huán)境下運(yùn)行實(shí)驗(yàn)。所選取的橢圓曲線為Type A類型素?cái)?shù)階橢圓曲線。定義各項(xiàng)運(yùn)算操作,并運(yùn)行10 000次取平均值,其含義及計(jì)算開銷如表1所示。
表1 各運(yùn)算計(jì)算開銷
圖1 各方案TagGen階段運(yùn)行時間
由表2可以看出,在各階段,本方案的計(jì)算開銷均明顯小于其他方案的計(jì)算開銷。表3中|i|為索引長度,|G|為群G上元素的長度,|p|為Zp域上元素的長度,|m|是更新數(shù)據(jù)塊的長度。與其他方案相比,本方案中由云服務(wù)提供商承擔(dān)標(biāo)簽構(gòu)造的任務(wù),只需維護(hù)簡單的索引表,因此在動態(tài)更新方面更加高效。
設(shè)定扇區(qū)數(shù)目為1 000,當(dāng)各方案選取不同的數(shù)據(jù)塊數(shù)量n時,TagGen階段的計(jì)算開銷如圖1所示。
表2 計(jì)算開銷對比
表3 動態(tài)更新開銷對比
各方案選取不同的挑戰(zhàn)塊數(shù)量c時,GenProof、VerifyProof階段的計(jì)算開銷如圖2和圖3所示。
圖2 各方案GenProof階段運(yùn)行時間
圖3 各方案VerifyProof階段運(yùn)行時間
基于Schnorr簽名,筆者構(gòu)造了一種無雙線性對的高效云審計(jì)方案。該方案將構(gòu)造數(shù)據(jù)塊的任務(wù)賦予性能強(qiáng)大的云服務(wù)端,只產(chǎn)生審計(jì)需要的數(shù)據(jù)塊標(biāo)簽,且在審計(jì)過程中不需求冪或計(jì)算雙線性對,降低了用戶與云服務(wù)端的計(jì)算開銷,避免了計(jì)算資源的浪費(fèi)。在挑戰(zhàn)階段,利用區(qū)塊鏈上的時間戳生成挑戰(zhàn)參數(shù),具有非交互性;在數(shù)據(jù)動態(tài)更新方面,能夠避免因數(shù)據(jù)塊索引改變而導(dǎo)致的計(jì)算成本增加的問題。安全分析證明,該方案可以抵抗來自云服務(wù)端的偽造、重放攻擊,能夠有效地保護(hù)數(shù)據(jù)內(nèi)容和用戶秘密值;數(shù)值分析與實(shí)驗(yàn)結(jié)果表明,該方案在審計(jì)過程中的各個階段,效率均有明顯提升。