潘洪志 殷西祥 芮坤坤 何 軍
(安徽商貿(mào)職業(yè)技術(shù)學(xué)院信息與人工智能學(xué)院 安徽蕪湖 241002)
(asdphz2015@163.com)
隨著計(jì)算能力和通信技術(shù)的飛速發(fā)展,產(chǎn)生了大量的數(shù)據(jù).這些海量數(shù)據(jù)需要更強(qiáng)大的計(jì)算資源和更大的存儲空間.在過去的幾年里,云計(jì)算已經(jīng)滿足了應(yīng)用需求,并且發(fā)展非常迅速.事實(shí)上,用戶需要將數(shù)據(jù)處理作為服務(wù),例如存儲、計(jì)算和數(shù)據(jù)安全.通過使用云計(jì)算環(huán)境,用戶的存儲和計(jì)算壓力得到緩解.因此,越來越多的用戶希望通過云計(jì)算環(huán)境來存儲和處理自己的數(shù)據(jù).在公共云計(jì)算環(huán)境中,用戶將大量數(shù)據(jù)存儲在遠(yuǎn)程公共云服務(wù)器上.因?yàn)榇鎯Φ臄?shù)據(jù)不在用戶的控制之下,所以它需要數(shù)據(jù)機(jī)密性、完整性和可用性等安全服務(wù).數(shù)據(jù)完整性測試是證明用戶數(shù)據(jù)完好無損的有效方法[1-5].
數(shù)據(jù)完整性審計(jì)方案目前主要使用數(shù)據(jù)持有性證明機(jī)制(provable data possession, PDP)或數(shù)據(jù)可恢復(fù)證明機(jī)制(proof of retrievability, PoR)協(xié)議進(jìn)行完整性檢測.Ateniese等人[6]在2007年提出的可證明數(shù)據(jù)保持協(xié)議(PDP),它利用基于RSA的同態(tài)校驗(yàn)算法對標(biāo)簽進(jìn)行數(shù)據(jù)校驗(yàn),然而PDP協(xié)議為了減少通信開銷,不檢測所有數(shù)據(jù),而是采用采樣檢測方法.后來,Erway等人[7]在PDP的基礎(chǔ)上設(shè)計(jì)了一種支持動態(tài)校驗(yàn)的數(shù)據(jù)完整性檢測方案PDP.Juels等人[8]提出PoR協(xié)議.PoR協(xié)議可以驗(yàn)證云中的數(shù)據(jù)是否完整,還可以恢復(fù)損壞的數(shù)據(jù).但是PoR協(xié)議并不支持動態(tài)更新數(shù)據(jù),并且檢測數(shù)據(jù)的數(shù)量受到了限制,恢復(fù)效率不高.
本文利用網(wǎng)絡(luò)編碼的思想,設(shè)計(jì)了一種基于線性編碼的數(shù)據(jù)完整性審計(jì)方案(the cloud data integrity detection scheme based on linear network coding, DISLC).DISLC可以反復(fù)驗(yàn)證用戶數(shù)據(jù)的完整性,并對數(shù)據(jù)進(jìn)行動態(tài)操作.本文首先分析了線性編碼的基本思想,系統(tǒng)地描述了數(shù)據(jù)的線性編碼方法,然后詳細(xì)闡述了數(shù)據(jù)完整性驗(yàn)證的過程,最后給出了結(jié)論并簡要討論了未來的研究工作.
同態(tài)標(biāo)簽允許驗(yàn)證者在不擁有所有數(shù)據(jù)文件的場景下驗(yàn)證所有數(shù)據(jù)文件的完整性.同態(tài)標(biāo)簽具有以下特征:
1) 只有具有密鑰的用戶才能計(jì)算合法的同態(tài)標(biāo)記.
網(wǎng)絡(luò)編碼是網(wǎng)絡(luò)信息處理的一種重要方法.通過將網(wǎng)絡(luò)節(jié)點(diǎn)中的傳輸信息進(jìn)行編碼,以實(shí)現(xiàn)節(jié)點(diǎn)間數(shù)據(jù)的同步、糾錯和恢復(fù).
根據(jù)矩陣的特點(diǎn),如果1組碼中存在小于n-k塊的數(shù)據(jù)錯誤,則剩余的矩陣行數(shù)必須大于或等于k,并且矩陣中的任意k行都是線性無關(guān)的,因此可以通過求解聯(lián)立方程組對其進(jìn)行解碼,得到原始數(shù)據(jù).
DISLC方案由3個實(shí)體組成:用戶(user)、云服務(wù)商(cloud service provider, CSP)和可信第三方(trust third party auditor, TTPA).可信第三方是受用戶委托管理和檢測云端數(shù)據(jù)的可信第三方審核員.首先,用戶將數(shù)據(jù)初始化,并與云服務(wù)商和可信第三方協(xié)商密鑰.在質(zhì)詢響應(yīng)階段,用戶無需在線,驗(yàn)證工作都委托服務(wù)商和可信第三方完成.當(dāng)可信第三方驗(yàn)證數(shù)據(jù)安全時,它向云服務(wù)商發(fā)送質(zhì)詢消息chal.云服務(wù)商接收到質(zhì)詢后,根據(jù)云中存儲的數(shù)據(jù)生成證據(jù)P并返回給可信第三方,然后可信第三方對返回的證據(jù)進(jìn)行驗(yàn)證,其流程如圖1所示:
圖1 驗(yàn)證模型
整個協(xié)議包含的算法如下.
GenKey(·):由用戶執(zhí)行,輸入安全參數(shù),輸出sk和pk.
Encode(·):由用戶執(zhí)行,使用函數(shù)對文件進(jìn)行編碼.
Dncode(·):由CSP執(zhí)行,使用函數(shù)對文件進(jìn)行解碼.
Verify(·):由TTPA執(zhí)行,輸入證據(jù)P.
Update(·):由用戶執(zhí)行,實(shí)現(xiàn)數(shù)據(jù)動態(tài)操作.
Redistribute(·):由用戶執(zhí)行,此函數(shù)實(shí)現(xiàn)了損壞數(shù)據(jù)的修復(fù)功能.
本文提出的DISLC方案分為3個階段:初始化階段、完整性驗(yàn)證階段和數(shù)據(jù)恢復(fù)階段.
Step1. 初始化階段:由GenKey(·),Encode(·),TagGen(·)3個算法組成.
算法1.KeyGen.
輸出:公鑰pk和私鑰sk.
① 任取p,q為大素數(shù),計(jì)算N=pq,φ(N)=(p-1)(q-1);
② 隨機(jī)選擇整數(shù)e<φ(N),滿足gcb(e,φ(N))=1 ,整數(shù)d滿足d=e-1(modφ(N)),α,α←{0,1}k1;
③ 生成私鑰sk(φ(N),d,α) 和公開密鑰pk(N,e,g) .
算法2.Encode.
輸入:源文件F和保鮮因子τ;
輸出:編碼后的數(shù)據(jù)矩陣Mτ.
① 將文件F劃分為t個文件分段,每個文件分段劃分為t′個數(shù)據(jù)塊,于是得到源數(shù)據(jù)矩陣M;
② 對數(shù)據(jù)矩陣M的數(shù)據(jù)進(jìn)行編碼,將數(shù)據(jù)矩陣從一個t′×t的矩陣擴(kuò)展成為一個n′×t的數(shù)據(jù)矩陣Mτ.
算法3.TagGen.
輸入: 數(shù)據(jù)矩陣M和保鮮因子τ;
輸出:文件塊標(biāo)簽矩陣Tτ.
① 第i塊數(shù)據(jù)塊Qi=H(α×i);
② 數(shù)據(jù)塊Mi的同態(tài)驗(yàn)證標(biāo)識:
Ti=gd×Qi+MimodN.
Step2. 完整性驗(yàn)證階段:
算法4.GenProof.
輸出:Y=(T,B).
① 隨機(jī)數(shù)s,num為驗(yàn)證的數(shù)據(jù)塊數(shù)目, (ij,cj)是數(shù)據(jù)塊的塊號和系數(shù),計(jì)算cj=fk1(j),ij=πk1(j),f和π分別是偽隨機(jī)函數(shù)和偽隨機(jī)置換函數(shù);
② 生成chal=(gs,num,{(ij,cj)},1≤j≤c),gs=gsmodN;
算法5.VerProof.
輸入:T,B;
輸出:{0,1}.
① 計(jì)算ij=πk1(j);
② 計(jì)算Qij=H(α×i);
③ 計(jì)算cj=fk1(j);
Step3. 數(shù)據(jù)恢復(fù)階段:
客戶端告知CSP檢測被破壞的數(shù)據(jù)是否超過1個閾值,若超過,則進(jìn)行數(shù)據(jù)修復(fù).設(shè)CSP內(nèi)部編碼的容錯率上限是λcsp,只要數(shù)據(jù)塊錯誤率低于容錯率上限,就可以認(rèn)為服務(wù)器數(shù)據(jù)是完整的.TTPA經(jīng)過num次挑戰(zhàn)響應(yīng)過程能得到挑戰(zhàn)失敗的概率為λfail,當(dāng)λfail≥λcri時,用戶調(diào)用解碼函數(shù)進(jìn)行數(shù)據(jù)解碼.
證明. 在實(shí)際中,數(shù)據(jù)文件會被劃分為n′×t塊數(shù)據(jù)塊,假設(shè)所有數(shù)據(jù)塊都是安全的.
證畢.
3.4.1 偽造攻擊
3.4.2 重放攻擊
情景2.驗(yàn)證者提出對指定的云中數(shù)據(jù)m1,m2進(jìn)行驗(yàn)證.
本實(shí)驗(yàn)將數(shù)據(jù)F分為1萬個數(shù)據(jù)塊,分別用5%,10%,15%冗余度的編碼率,得到的誤碼率如圖2所示.
DISLC方案不僅支持第三方安全認(rèn)證并且能夠?qū)?shù)據(jù)進(jìn)行動態(tài)更新操作.DISLC方案在云端的運(yùn)算的時間復(fù)雜度為O(1),我們將PDP,DPDP,POR從云中運(yùn)算時間復(fù)雜度、第三方計(jì)算時間復(fù)雜度、通信復(fù)雜度、是否支持動態(tài)和可恢復(fù)性方面進(jìn)行了對比,對比結(jié)果如表1所示:
表1 各方案性能對比
圖2 誤碼率與冗余度之間的關(guān)系
本文通過將網(wǎng)絡(luò)編碼的思想運(yùn)用到數(shù)據(jù)安全性驗(yàn)證當(dāng)中,設(shè)計(jì)了一種基于線性編碼的數(shù)據(jù)完整性審計(jì)方案,該方案對用戶數(shù)據(jù)的完整性多次提出驗(yàn)證,最后通過驗(yàn)證得出該方案不僅能檢測數(shù)據(jù)的完整性,而且實(shí)現(xiàn)了數(shù)據(jù)的動態(tài)操作.最后在運(yùn)行效率方面也有一定的改善.