潘洪志 殷西祥 芮坤坤 何 軍
(安徽商貿職業技術學院信息與人工智能學院 安徽蕪湖 241002)
(asdphz2015@163.com)
隨著計算能力和通信技術的飛速發展,產生了大量的數據.這些海量數據需要更強大的計算資源和更大的存儲空間.在過去的幾年里,云計算已經滿足了應用需求,并且發展非常迅速.事實上,用戶需要將數據處理作為服務,例如存儲、計算和數據安全.通過使用云計算環境,用戶的存儲和計算壓力得到緩解.因此,越來越多的用戶希望通過云計算環境來存儲和處理自己的數據.在公共云計算環境中,用戶將大量數據存儲在遠程公共云服務器上.因為存儲的數據不在用戶的控制之下,所以它需要數據機密性、完整性和可用性等安全服務.數據完整性測試是證明用戶數據完好無損的有效方法[1-5].
數據完整性審計方案目前主要使用數據持有性證明機制(provable data possession, PDP)或數據可恢復證明機制(proof of retrievability, PoR)協議進行完整性檢測.Ateniese等人[6]在2007年提出的可證明數據保持協議(PDP),它利用基于RSA的同態校驗算法對標簽進行數據校驗,然而PDP協議為了減少通信開銷,不檢測所有數據,而是采用采樣檢測方法.后來,Erway等人[7]在PDP的基礎上設計了一種支持動態校驗的數據完整性檢測方案PDP.Juels等人[8]提出PoR協議.PoR協議可以驗證云中的數據是否完整,還可以恢復損壞的數據.但是PoR協議并不支持動態更新數據,并且檢測數據的數量受到了限制,恢復效率不高.
本文利用網絡編碼的思想,設計了一種基于線性編碼的數據完整性審計方案(the cloud data integrity detection scheme based on linear network coding, DISLC).DISLC可以反復驗證用戶數據的完整性,并對數據進行動態操作.本文首先分析了線性編碼的基本思想,系統地描述了數據的線性編碼方法,然后詳細闡述了數據完整性驗證的過程,最后給出了結論并簡要討論了未來的研究工作.
同態標簽允許驗證者在不擁有所有數據文件的場景下驗證所有數據文件的完整性.同態標簽具有以下特征:

1) 只有具有密鑰的用戶才能計算合法的同態標記.


網絡編碼是網絡信息處理的一種重要方法.通過將網絡節點中的傳輸信息進行編碼,以實現節點間數據的同步、糾錯和恢復.

根據矩陣的特點,如果1組碼中存在小于n-k塊的數據錯誤,則剩余的矩陣行數必須大于或等于k,并且矩陣中的任意k行都是線性無關的,因此可以通過求解聯立方程組對其進行解碼,得到原始數據.
DISLC方案由3個實體組成:用戶(user)、云服務商(cloud service provider, CSP)和可信第三方(trust third party auditor, TTPA).可信第三方是受用戶委托管理和檢測云端數據的可信第三方審核員.首先,用戶將數據初始化,并與云服務商和可信第三方協商密鑰.在質詢響應階段,用戶無需在線,驗證工作都委托服務商和可信第三方完成.當可信第三方驗證數據安全時,它向云服務商發送質詢消息chal.云服務商接收到質詢后,根據云中存儲的數據生成證據P并返回給可信第三方,然后可信第三方對返回的證據進行驗證,其流程如圖1所示:

圖1 驗證模型
整個協議包含的算法如下.
GenKey(·):由用戶執行,輸入安全參數,輸出sk和pk.
Encode(·):由用戶執行,使用函數對文件進行編碼.
Dncode(·):由CSP執行,使用函數對文件進行解碼.
Verify(·):由TTPA執行,輸入證據P.
Update(·):由用戶執行,實現數據動態操作.
Redistribute(·):由用戶執行,此函數實現了損壞數據的修復功能.
本文提出的DISLC方案分為3個階段:初始化階段、完整性驗證階段和數據恢復階段.
Step1. 初始化階段:由GenKey(·),Encode(·),TagGen(·)3個算法組成.
算法1.KeyGen.
輸出:公鑰pk和私鑰sk.
① 任取p,q為大素數,計算N=pq,φ(N)=(p-1)(q-1);
② 隨機選擇整數e<φ(N),滿足gcb(e,φ(N))=1 ,整數d滿足d=e-1(modφ(N)),α,α←{0,1}k1;
③ 生成私鑰sk(φ(N),d,α) 和公開密鑰pk(N,e,g) .
算法2.Encode.
輸入:源文件F和保鮮因子τ;
輸出:編碼后的數據矩陣Mτ.
① 將文件F劃分為t個文件分段,每個文件分段劃分為t′個數據塊,于是得到源數據矩陣M;
② 對數據矩陣M的數據進行編碼,將數據矩陣從一個t′×t的矩陣擴展成為一個n′×t的數據矩陣Mτ.
算法3.TagGen.
輸入: 數據矩陣M和保鮮因子τ;
輸出:文件塊標簽矩陣Tτ.
① 第i塊數據塊Qi=H(α×i);
② 數據塊Mi的同態驗證標識:
Ti=gd×Qi+MimodN.
Step2. 完整性驗證階段:
算法4.GenProof.
輸出:Y=(T,B).
① 隨機數s,num為驗證的數據塊數目, (ij,cj)是數據塊的塊號和系數,計算cj=fk1(j),ij=πk1(j),f和π分別是偽隨機函數和偽隨機置換函數;
② 生成chal=(gs,num,{(ij,cj)},1≤j≤c),gs=gsmodN;

算法5.VerProof.
輸入:T,B;
輸出:{0,1}.
① 計算ij=πk1(j);
② 計算Qij=H(α×i);
③ 計算cj=fk1(j);


Step3. 數據恢復階段:
客戶端告知CSP檢測被破壞的數據是否超過1個閾值,若超過,則進行數據修復.設CSP內部編碼的容錯率上限是λcsp,只要數據塊錯誤率低于容錯率上限,就可以認為服務器數據是完整的.TTPA經過num次挑戰響應過程能得到挑戰失敗的概率為λfail,當λfail≥λcri時,用戶調用解碼函數進行數據解碼.

證明. 在實際中,數據文件會被劃分為n′×t塊數據塊,假設所有數據塊都是安全的.

證畢.
3.4.1 偽造攻擊


3.4.2 重放攻擊
情景2.驗證者提出對指定的云中數據m1,m2進行驗證.


本實驗將數據F分為1萬個數據塊,分別用5%,10%,15%冗余度的編碼率,得到的誤碼率如圖2所示.
DISLC方案不僅支持第三方安全認證并且能夠對數據進行動態更新操作.DISLC方案在云端的運算的時間復雜度為O(1),我們將PDP,DPDP,POR從云中運算時間復雜度、第三方計算時間復雜度、通信復雜度、是否支持動態和可恢復性方面進行了對比,對比結果如表1所示:

表1 各方案性能對比

圖2 誤碼率與冗余度之間的關系
本文通過將網絡編碼的思想運用到數據安全性驗證當中,設計了一種基于線性編碼的數據完整性審計方案,該方案對用戶數據的完整性多次提出驗證,最后通過驗證得出該方案不僅能檢測數據的完整性,而且實現了數據的動態操作.最后在運行效率方面也有一定的改善.