本發(fā)明涉及在云存儲、大數(shù)據(jù)環(huán)境下的重復(fù)密文數(shù)據(jù)檢測和刪除領(lǐng)域。
技術(shù)背景
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,大數(shù)據(jù)與海量數(shù)據(jù)已經(jīng)成為數(shù)據(jù)中心的主要業(yè)務(wù),而重復(fù)數(shù)據(jù)的刪除與壓縮是一種可以節(jié)約大量數(shù)據(jù)存儲的技術(shù)。重復(fù)數(shù)據(jù)刪除是一種壓縮技術(shù),通過識別重復(fù)內(nèi)容,進行去重,并在對應(yīng)的存儲位置留下指針來最小化數(shù)據(jù)量;這個指針通過給定大小的數(shù)據(jù)模式進行哈希創(chuàng)建。
對于租用云空間的用戶來說,大量重復(fù)數(shù)據(jù)充斥在云空間內(nèi),不僅對檢索造成麻煩,還浪費了寶貴的云資源,產(chǎn)生了額外開銷。所以本發(fā)明將重復(fù)數(shù)據(jù)刪除理論引入云存儲中,從而幫助云租戶在最大程度上利用云空間。
用戶將數(shù)據(jù)上傳到云端時,對于一些隱私或者機密數(shù)據(jù)都會選擇先進行加密,然后再上傳密文數(shù)據(jù)。而想要對密文數(shù)據(jù)進行去重的話,將面臨許多的技術(shù)難題。需要解決的首要問題是如何判斷多個密文是否來自于相同的明文,即機密數(shù)據(jù)重復(fù)性檢測問題。另外,機密數(shù)據(jù)重復(fù)性檢測方案應(yīng)提供完善的數(shù)據(jù)保密性功能,防止來自CSP內(nèi)部或外部的攻擊所造成的數(shù)據(jù)泄露。若一個具有較高最小熵的文件所包含的某些分塊的最小熵很小,則攻擊者可以通過暴力搜索攻擊獲得這些分塊。惡意用戶可以利用存儲系統(tǒng)的特性將其轉(zhuǎn)變?yōu)閮?nèi)容分發(fā)網(wǎng)絡(luò),達到濫用存儲系統(tǒng)的目的。
通過驗證文件本身而不是其摘要來進行重復(fù)性檢測,從而避免了系統(tǒng)帶來的安全風險。實現(xiàn)了對數(shù)據(jù)塊的加密保護,并同時實現(xiàn)了跨用戶文件級客戶端去重和本地數(shù)據(jù)塊級客戶端去重,可以避免對數(shù)據(jù)塊的暴力搜索攻擊。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的問題是針對云用戶在云空間中的重復(fù)數(shù)據(jù)的檢索刪除,提出了云存儲中一種加密數(shù)據(jù)的去重方法。
本發(fā)明的目的是:通過對云空間引入重復(fù)數(shù)據(jù)刪除理論以達到合理高效的利用云空間,實現(xiàn)節(jié)約資源與開銷的目的。
針對以上所述目的本發(fā)明所采用的技術(shù)方案是:在用戶上傳文件之前,對文件摘要進行哈希創(chuàng)建,生成文件標識數(shù)據(jù),然后將文件標識數(shù)據(jù)上傳到云服務(wù)商(CSP)處進行驗證,確定用戶有沒有相同文件,若是有相同文件,則進行詳細驗證,最終上傳不同的文件塊或者在已經(jīng)有相同文件存在的情況下取消上傳;若沒有相似的數(shù)據(jù)標識,則對文件進行分塊、哈希、生成驗證數(shù)據(jù),然后將文件及驗證數(shù)據(jù)一起加密得到密文數(shù)據(jù)和元數(shù)據(jù),然后對密文塊進行對比驗證,最終只上傳文件庫中沒有相同文件塊的密文數(shù)據(jù)及標簽信息。
本發(fā)明的有益效果是:能在對密文數(shù)據(jù)去重,同時還能保護數(shù)據(jù)的機密性,抵抗通過數(shù)據(jù)塊的暴力搜索攻擊而造成的文件隱私泄露,同時,執(zhí)行的是兩級數(shù)據(jù)去重,有效的減少網(wǎng)絡(luò)傳輸流量并抵抗不良云服務(wù)商的攻擊。
具體實施方式
為了使整個發(fā)明清晰明了,結(jié)合以下步驟對本發(fā)明進行具體的解釋說明:
步驟1:生成文件標識,進行初步驗證,具體的內(nèi)容如下:
用戶的文件F,在上傳之前是沒有加密的,首對文件屬性(property)包括文件類型、文件名、文件摘要等信息進行哈希,獲得文件的屬性標簽:h(FP),如果在云空間內(nèi)有相同的屬性標簽,則提示是否確定上傳,如果繼續(xù)上傳,則進入后續(xù)過程。
步驟2:文件分塊,并生成數(shù)據(jù)塊的特征集,具體的內(nèi)容如下:
依據(jù)固定打下或者變長等分塊方法,將文件F分成n個數(shù)據(jù)塊{Fi},1≤i≤n,然后計算每個數(shù)據(jù)塊的哈希值即標識:
表示文件F的第i個數(shù)據(jù)塊的特征,放入集合中。
步驟3:數(shù)據(jù)塊及標識加密。
步驟4:生成元數(shù)據(jù)和驗證標簽。
步驟5:數(shù)據(jù)驗證,更新元數(shù)據(jù)。
步驟6:數(shù)據(jù)去重。
步驟7:數(shù)據(jù)訪問,具體的內(nèi)容如下:
當用戶需要訪問云端的數(shù)據(jù)時,從CSP獲得數(shù)據(jù)F的密文CF和元數(shù)據(jù){i,h(FP),lbi,mbi},再利用存儲與本地的根密鑰和文件參數(shù)ft,fs即可生成密鑰樹,計算變換葉子節(jié)點密鑰、解密出數(shù)據(jù)密鑰以及解密數(shù)據(jù)塊,得到數(shù)據(jù)F。一、針對上述步驟3:數(shù)據(jù)塊及標識加密,提出了以下計算過程:
高度為p,具有n個葉子節(jié)點的密鑰樹,然后將葉子節(jié)點密鑰轉(zhuǎn)換為“變換葉子節(jié)點密鑰”,以其作為控制密鑰,其中:
2p-1<n≤2p
并依據(jù)安全參數(shù)λ隨機選擇一個根密鑰key0,1,利用左右派生規(guī)則fL和fR逐級計算得到樹葉節(jié)點密鑰:
ki+1,2j-1=fL(ki,j)=h(ki,j||i||(2j-1)
ki+1,2j=fR(ki,j)=h(ki,j||i||2j)
然后對葉子節(jié)點kp、i(1≤i≤n)計算變換葉子節(jié)點密鑰:
fa=h(ft||fs),表示文件屬性
然后,采用AES算法對數(shù)據(jù)塊進行加密;得到文件塊的密文數(shù)據(jù):
二、針對上述步驟4:生成元數(shù)據(jù)和驗證標簽,提出以下具體的計算過程:
首次上傳的數(shù)據(jù),數(shù)據(jù)加密后,生成元數(shù)據(jù)項表示為:
{i,h(FP),lbi,mbi}
其中,lbi表示F文件第i個數(shù)據(jù)塊的密文,mbi表示其控制密鑰在控制密鑰樹中的位置,如果上傳的文件F′的第j個數(shù)據(jù)塊,其加密后生成的標簽集在CSP檢測到與F的第i個相同時,生成元數(shù)據(jù)項為:
{j,h(F’P),lbi,mbi}
并多生成一條元數(shù)據(jù)項(i,Tj),Tj為F′的驗證標簽。
然后,將元數(shù)據(jù)項組成元數(shù)據(jù)MDF,
MDF=(h(FP),lbF,Ti,({i,h(FP),lbi,mbi})
數(shù)據(jù)塊加密完成后,User將加密結(jié)果發(fā)送給CSP,并在本地為文件F存儲h(FP),key0,1,fs,ft,n等參數(shù),計算數(shù)據(jù)塊密文、計算驗證標簽并將元數(shù)據(jù)和數(shù)據(jù)密文分別存儲到主服務(wù)器和存儲服務(wù)器。
三、針對上述步驟5:數(shù)據(jù)驗證,更新元數(shù)據(jù),提出具體的計算過程如下:
CSP以散列運算,計算個數(shù)據(jù)的驗證標簽,對數(shù)據(jù)密文中的每個密文塊Ci進行散列運算,并以該值作為驗證標簽即:
Ti=h(Ci)
令Ti=Tj,以Tj作為葉子節(jié)點,并以數(shù)據(jù)塊序號i為序,有葉子節(jié)點逐級往上生成驗證二叉樹TreeF,并以Troot,F(xiàn)作為根節(jié)點,更新文件的元數(shù)據(jù)
MD‘F=(h(FP),lbF,Troot,F(xiàn),{(i,h(FP),lbi,mbi,Ti)}),1≤i≤n
四、針對上述步驟6:數(shù)據(jù)去重,具體的計算過程如下:
CSP隨機選擇一個數(shù)c,1≤c≤n,作為需要檢測的數(shù)據(jù)塊數(shù)目,并生成一個隨機置換密鑰r,然后CSP從元數(shù)據(jù)MDF中提取lbF、Troot,F(xiàn)和(i,h(FP),lbi,mbi,Ti),并將他們連同c、r一起發(fā)送到客戶端,客戶端解密得到F的根密鑰key0,1,根據(jù)根密鑰派生得到位置為mbi的n個葉子節(jié)點密鑰kp、i,從而得到變換葉子節(jié)點密鑰
解密相應(yīng)的數(shù)據(jù)塊密鑰:
以文件F的塊數(shù)n、被挑戰(zhàn)數(shù)據(jù)塊數(shù)目c和隨機數(shù)r為偽隨機置換函數(shù)δ的輸入,得到c個數(shù)據(jù)塊序號
ij=δr(c,n)
然后對各數(shù)據(jù)塊密文Ci計算摘要值作為驗證標簽,并以Ti為葉節(jié)點、數(shù)據(jù)塊序號i為序,由葉節(jié)點逐級往上生成一棵驗證二叉樹;
比較該樹的根節(jié)點T’root,F(xiàn)與Troot,F(xiàn)是否相等,若相等則表示用戶又有文件F,并且文件F與F’是同一個文件,若不相等,則表示F與F’具有相同標識,但內(nèi)容不同,然后上傳具有不同內(nèi)容的數(shù)據(jù)塊,并且記錄下更新元數(shù)據(jù):
MD‘F=(h(FP),lbF,Troot,F(xiàn),{(i,h(FP),lbi,mbi,Ti)})。