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