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