劉璐玲
摘 要: 提出支持數(shù)據(jù)去重的數(shù)據(jù)持有性證明方案,該方案改進了原有數(shù)據(jù)去重中利用MD5值冒領(lǐng)原數(shù)據(jù)使用權(quán)的安全問題,并且引入可信第三方對不同文件的驗證密鑰進行管理,避免了文件標簽的重復(fù)計算,同時利用額外的本地存儲減少了時間消耗和通信代價。針對文件級云存儲,設(shè)計了基于索引的動態(tài)數(shù)據(jù)持有性證明方案,并且針對之前方案中存在文件I/O對驗證時間的影響,采用B+樹多級索引對文件做查詢優(yōu)化。實驗結(jié)果表明,該方案與傳統(tǒng)方案相比,針對數(shù)據(jù)去重場景大幅度地減少了存儲開銷,降低了文件級的更新操作時間復(fù)雜度。
關(guān)鍵詞: 數(shù)據(jù)持有性證明; 數(shù)據(jù)去重; 云存儲; 索引
中圖分類號: TN915.08?34; TP311.17 文獻標識碼: A 文章編號: 1004?373X(2017)09?0096?03
Abstract: A provable data possession scheme supporting data deduplication is proposed. The scheme has improved the security issue that the MD5 value in the original data deduplication is used to falsely claim the use right of the original data. A trusted third party is introduced into the scheme to manage the verification secret key of different documents to avoid the repeated calculation of the file label. The additional local storage is adopted to reduce the time consumption and communication cost. For the file?level cloud storage, a dynamic provable data possession scheme based on index was designed. According to the influence of the file I/O existing in the previous schemes on verification time, the B+ tree multi?level index is used to perform the query optimization for the file. The experimental results show that, in comparison with the traditional schemes, the proposed scheme has reduced the storage cost for data deduplication greatly, and lowered the time complexity of the file?level update operation.
Keywords: provable data possession; data deduplication; cloud storage; index
0 引 言
隨著信息技術(shù)的發(fā)展,越來越多的企業(yè)或者用戶選擇在云存儲服務(wù)提供商的服務(wù)器中存儲數(shù)據(jù),但是被存儲數(shù)據(jù)的安全性和完整性在一定程度上不能得到很好的保障。雖然云存儲服務(wù)提供商會有相應(yīng)的技術(shù)來備份和恢復(fù)用戶鎖存的數(shù)據(jù),但是一部分用戶的數(shù)據(jù)依然會因為一些惡意篡改或者物理損壞等因素而造成變更甚至丟失。雖然數(shù)據(jù)能夠帶來的價值均會被大型企業(yè)關(guān)注,但政府卻沒有出臺管轄數(shù)據(jù)安全問題的相關(guān)法律法規(guī),所以,用戶和服務(wù)商遇到最大的問題之一就是用戶的數(shù)據(jù)出現(xiàn)問題[1]。提供云存儲服務(wù)的供應(yīng)商在提供云存儲服務(wù)的過程中,需要為用戶提供隨時查驗數(shù)據(jù)完整性服務(wù),一旦檢測到數(shù)據(jù)方面的錯誤時,能夠在第一時間對數(shù)據(jù)進行恢復(fù)和保存,只有實現(xiàn)了這一功能,用戶才能將云存儲服務(wù)使用的更加安心[2]。
1 可支持數(shù)據(jù)去重數(shù)據(jù)持有性證明方案
1.1 初始化模塊
如果用戶是首次登錄數(shù)據(jù)客戶端,那么首先需要注冊賬號,賬號里包含了惟一的用戶名、ID以及口令,與此同時,這個賬號中所有的信息也將同時被云服務(wù)商以及可信第三方擁有。
此時,驗證文件所用的密鑰將在本地客戶端通過計算生成,具體步驟為:尋找大素數(shù)當且同時滿足這一條件,生成元需要在正整數(shù)循環(huán)子群的范疇里尋找,再尋找出大于安全參數(shù)的大素數(shù)以及大素數(shù)使得大素數(shù)和大素數(shù)滿足之后一個位的二進制數(shù)將由系統(tǒng)隨機生成。其中,使得私鑰sk用來體現(xiàn),公鑰pk用來體現(xiàn)。上述步驟與傳統(tǒng)PDP方案相同。
在生成了公鑰與私鑰之后,需要輸入pw這個新口令,用AES對私鑰加密之后再進行存儲,之后將公鑰公開存儲在數(shù)據(jù)庫中[3]。Android平臺上的sqlite是實現(xiàn)上述步驟時所采用的數(shù)據(jù)庫。
1.2 數(shù)據(jù)去重模塊
針對需求,本文設(shè)計了以下方案:
(1) 用戶需要上傳文件客戶端首先計算該文件的MD5值[4]計算完成后將結(jié)果向云服務(wù)端發(fā)送,云服務(wù)端對接收到的的驗證過程如下:
if (searchHash(HashTable,m) == true):
sendClient(randomKey, FID);
else requestFileTag();
在服務(wù)器查找哈希表的過程中,如果能驗證的存在,系統(tǒng)在返回客戶端之后會生成一個隨機的randomKey密鑰,密鑰生成完成系統(tǒng)將繼續(xù)運行步驟(2);但是如果不能驗證到的存在,則系統(tǒng)會請求客戶端上傳文件標簽和相應(yīng)文件。
(2) 當服務(wù)端在運行過程中發(fā)現(xiàn)了的存在,則系統(tǒng)返回客戶端之后生成一個文件序號FID和隨機的密鑰,客戶端通過對該文件值以及FID的計算,將結(jié)果向云服務(wù)端發(fā)送,云服務(wù)端對接收到的二次驗證過程如下:
F=getFile(FID);
temp = MAC(F, randomKey);
if (m′== temp):
addFileUser(FID,user);
sendThirdParty(FID);
else requestFileTag();
在云服務(wù)端進行二次驗證時,若MAC值和第一次計算的結(jié)果一致,服務(wù)端把FID發(fā)送給可信第三方,可信第三方在接收到FID之后把驗證密鑰發(fā)送給客戶端。如果MAC值在兩次計算中結(jié)果不同,則系統(tǒng)發(fā)送請求給客戶端,命令客戶端將文件標簽以及相應(yīng)文件繼續(xù)上傳。
1.3 數(shù)據(jù)上傳模塊
文件預(yù)處理模塊原理如圖1所示。
在完成數(shù)據(jù)去重之后,需要從兩方面考慮問題:第一種情況,若驗證到文件在云服務(wù)端已經(jīng)存在,則可信第三方會向用戶提供影響文件的驗證密鑰;第二種情況,若在云客戶端驗證不到該文件的存在,則云客戶端會將即將上傳的文件的FID發(fā)送回客戶端,客戶端再根據(jù)FID計算標簽TF。
1.4 完整性驗證模塊
用戶需要通過對文件發(fā)送挑戰(zhàn)、計算證明、驗證證明三個步驟來驗證單文件的數(shù)據(jù)。
(1) 發(fā)送挑戰(zhàn)
在進行驗證之前,提前與服務(wù)端尋找出偽隨機文件,問卷之后對置換函數(shù)進行定義:之后再尋找出偽隨機函數(shù)進行定義[5]:首先,兩個位隨機二進制數(shù)被系統(tǒng)隨機生成;其次,隨機數(shù)被系統(tǒng)生成;最后,將數(shù)據(jù)塊總數(shù)以及的計算結(jié)果發(fā)送給服務(wù)端。
(2) 計算證明
在將的二進制串轉(zhuǎn)換為用所表示的另一個二進制串的過程中,可以根據(jù)情況運用偽隨機置換函數(shù)結(jié)果用表示。用表示通過偽隨機函數(shù)生成的系數(shù)。
然后生成證明和與都擁有1 024位數(shù),在實際操作過程中,偽隨機置換函數(shù)用AES表示,偽隨機函數(shù)用HMAC進行表示,函數(shù)用SHA1進行表示,同時,需要將云服務(wù)器端和客戶端函數(shù)的一致性進行約定。
(3) 驗證證明
驗證證明的過程同計算證明基本相同,在的每一個數(shù)字中,二進制串將運用偽隨機置換函數(shù)來計算,系數(shù)運用偽隨機函數(shù)來計算。與此同時,計算并且使如果則說明該單文件完整性驗證成功;若不相等,則失敗。
2 基于索引的動態(tài)數(shù)據(jù)持有性證明系統(tǒng)模型
2.1 初始化模塊
通過RSA的密鑰生成來設(shè)計初始化模塊,之后再在本地數(shù)據(jù)庫中通過用戶的口令加密存儲。在設(shè)計本模塊的過程中,要盡量滿足簡便操作的原則,還要盡可能使方案的安全性有所保障。
2.2 數(shù)據(jù)上傳模塊
在客戶端計算文件標簽的過程中,數(shù)據(jù)上傳模塊可參考完整性驗證方案,在將文件以及相關(guān)數(shù)據(jù)上傳服務(wù)端之后,服務(wù)端需要根據(jù)文件的標簽構(gòu)建B+的樹索引。在驗證源碼PDP之前,發(fā)現(xiàn)當文件逐漸增大時,服務(wù)端生成證明所消耗的時間一方面運用在了指數(shù)運算上,而更大一部分則運用在了文件塊I/O上[6]。
2.3 完整性挑戰(zhàn)模塊
驗證模式分為全盤驗證和單文件驗證兩種,驗證模式不同,則系統(tǒng)發(fā)送的挑戰(zhàn)也各不相同[7]。如果是全盤性的驗證模式,那么需要挑選隨機文件,在文件中選取數(shù)據(jù)塊,整個過程一共需要工作460次。但是在單文件驗證模式中,則將密鑰挑戰(zhàn)中隨機的文件塊進行發(fā)送。同臺驗證標簽仍然是本方案的驗證依據(jù)。
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 系統(tǒng)架構(gòu)
(1) 系統(tǒng)客戶端
系統(tǒng)的客戶端中包含了用戶與文件管理、可視化驗證與完整性驗證等,其結(jié)構(gòu)設(shè)計見圖2。客戶端中用戶管理業(yè)務(wù)通過用戶管理模塊進行實現(xiàn),主要包含用戶登錄邏輯以及用戶注冊兩項業(yè)務(wù)。文件管理模塊實現(xiàn)了與云存儲中文件存儲相關(guān)的所有業(yè)務(wù)邏輯。客戶端界面的可視化通過可視化模塊進行實現(xiàn),同時,該模塊支持用戶對文件的讀寫和管理操作在客戶端進行,能夠給予用戶更好的實用體現(xiàn)。利用客戶端驗證文件完整性,能夠提升業(yè)務(wù)邏輯條理性,進而有效完成驗證模塊。
(2) 系統(tǒng)服務(wù)端
服務(wù)端的系統(tǒng)主要包含用戶管理、存儲管理、索引以及完整性驗證模塊,安全云存儲服務(wù)端平臺結(jié)構(gòu)圖如圖3所示。
3.2 測試與結(jié)果分析
3.2.1 測試方案
系統(tǒng)詳細功能測試包括文件上傳測試、文件更新測試、文件刪除測試三方面的內(nèi)容。在文件上傳到服務(wù)期之后,用戶可以發(fā)出文件指令,云服務(wù)器能夠?qū)⑽募蟼髦猎拼鎯ζ?,url?tag地址表項在標簽哈希表中進行補充新增[8],這一操作實現(xiàn)了在對文件完整性驗證的過程中查找文件中tag鏈表,提升查找的準確性,提升文件的驗證有效性。對于云存儲中需要刪除的部分文件,需要重視文件的刪除測試,利用文件刪除測試實現(xiàn)具體的功能測試。
系統(tǒng)運行效率測試包括文件上傳效率測試、更新效率、刪除效率等測試。
3.2.2 測試結(jié)果分析
(1) 數(shù)據(jù)更新時間
假設(shè)文件塊大小均為4 Kb,且通信的代價相同,本文方案和DPDP中的搜索添加刪除三項操作時間的結(jié)果對比如表1所示。
(2) 證明效率測試
當存儲文件所占內(nèi)存為10 GB時,DPDP,F(xiàn)lex?DPDP的驗證速度均比UT?DPDP慢了2.5倍。在驗證過程中發(fā)現(xiàn)Flex?DPDP與DPDP驗證速度和文件線性大小之間具有非常密切的關(guān)聯(lián),UT?DPDP的驗證速度是固定的,隨著文件占用內(nèi)存率不斷增加而愈發(fā)明顯。
(3) 文件上傳、更改、刪除操作效率測試
本文方案在文件塊數(shù)量很大這一情況下,在文件上傳、更新、刪除等方面的優(yōu)越性表現(xiàn)顯著,因此,針對理論時間復(fù)雜度來說,這三項操作都是但是變量是DPDP理論時間復(fù)雜度。
4 結(jié) 語
本文提出可支持數(shù)據(jù)去重的數(shù)據(jù)持有性證明方案和基于索引支持動態(tài)數(shù)據(jù)持有性證明的文件級云存儲模型??芍С值臄?shù)據(jù)去重數(shù)據(jù)持有性方案在一定程度上更新了數(shù)據(jù)自身去重環(huán)境下能夠進行壓縮,但是無法壓縮完整性驗證所需要的文件標簽這一問題;基于索引支持動態(tài)數(shù)據(jù)持有性證明的文件級云存儲模型設(shè)計并實現(xiàn)了一種新型的數(shù)據(jù)持有性證明技術(shù),主要解決了動態(tài)驗證中數(shù)據(jù)更新操作時間復(fù)雜度高且更新量龐大的問題。和同類其他方案相比,本文所提出的方案針對理論時間復(fù)雜度這一指標來說,三項操作都是滿足了用戶實際需求。
參考文獻
[1] 劉雪瓊,武剛,鄧厚平.Web信息整合中的數(shù)據(jù)去重方法[J].計算機應(yīng)用,2013,33(9):2493?2496.
[2] 張曉,秦志光,羅亞東,等.一種低代價的云計算存儲權(quán)限管理機制[J].西南師范大學(xué)學(xué)報(自然科學(xué)版),2015(7):33?40.
[3] WU J, PING L, GE X, et al. Cloud storage as the infrastructure of cloud computing [C]// Proceedings of 2010 IEEE International Conference on Intelligent Computing and Cognitive Informatics. [S.l.]: IEEE, 2010: 380?383.
[4] HE Q, LI Z, ZHANG X. Data deduplication techniques [C]// Proceedings of 2010 IEEE International Conference on Future Information Technology and Management Engineering. [S.l.]: IEEE, 2010: 430?433.
[5] 馮泓淵,趙逢禹.云存儲服務(wù)中支持動態(tài)數(shù)據(jù)完整性檢測研究[J].小型微型計算機系統(tǒng),2014,35(2):239?243.
[6] CHEN B, CURTMOLA R. Robust dynamic provable data possession [C]// Proceedings of 2012 the 32nd IEEE International Conference on Distributed Computing Systems Workshops. Macau, China: IEEE, 2012: 515?525.
[7] 周相兵,馬洪江,苗放.云計算環(huán)境下的一種基于Hbase的ORM設(shè)計實現(xiàn)[J].西南師范大學(xué)學(xué)報(自然科學(xué)版),2013,38(8):130?135.
[8] ZHU Y, AHN G J, HU H, et al. Dynamic audit services for outsourced storages in clouds [J]. IEEE transactions on services computing, 2013, 6(2): 227?238.