国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法和系統(tǒng)的制作方法

      文檔序號(hào):8002457閱讀:364來源:國(guó)知局
      一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法和系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法,包括:接收用戶提交的備份請(qǐng)求,對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊,使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1來作為數(shù)據(jù)塊的加密密鑰,再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2作為該數(shù)據(jù)塊的指紋來識(shí)別重復(fù)數(shù)據(jù)塊,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E(F1)來保護(hù)數(shù)據(jù)塊的加密密鑰。將所有數(shù)據(jù)塊指紋F2等順序打包成指紋段發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器。本發(fā)明中所有通信過程采用安全套接層協(xié)議。本發(fā)明通過采用該安全數(shù)據(jù)去重方法,能夠保證在數(shù)據(jù)去重率不變的基礎(chǔ)上,防止數(shù)據(jù)丟失、篡改等存儲(chǔ)安全問題。
      【專利說明】一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法和系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)領(lǐng)域,更具體地,涉及一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法和系統(tǒng)。
      【背景技術(shù)】
      [0002]近年來,隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)的發(fā)展普及,全球的數(shù)據(jù)信息存儲(chǔ)量呈爆炸式增長(zhǎng)的趨勢(shì)。全球范圍內(nèi)個(gè)人電腦、智能手機(jī)等設(shè)備的普及,和新興市場(chǎng)內(nèi)不斷增長(zhǎng)的互聯(lián)網(wǎng)訪問量,以及監(jiān)控?cái)z像機(jī)或智能電表等設(shè)備產(chǎn)生的數(shù)據(jù)爆增,使數(shù)字宇宙的規(guī)模在最近兩年翻了一番,達(dá)到驚人的2.8ZB。IDC預(yù)計(jì),到2020年,數(shù)字宇宙規(guī)模將超出預(yù)期,達(dá)到40ZB。在線數(shù)字內(nèi)容的增長(zhǎng)導(dǎo)致了硬件、人力維護(hù)在內(nèi)的存儲(chǔ)系統(tǒng)成本的增加,減少傳輸、存儲(chǔ)管理過程中的數(shù)據(jù)量變得極其重要。在海量的數(shù)據(jù)中存在大量的重復(fù)數(shù)據(jù)和相似數(shù)據(jù),如同樣的文件為確保安全存儲(chǔ)了多份,在計(jì)算機(jī)系統(tǒng)通常存儲(chǔ)和操作同一數(shù)據(jù)的若干副本,這些冗余數(shù)據(jù)占用了大量的存儲(chǔ)空間。數(shù)據(jù)去重技術(shù)是一種通過大規(guī)模消除冗余數(shù)據(jù),降低存儲(chǔ)成本的重要技術(shù)。簡(jiǎn)單舉例說明:若有一個(gè)IOMB大小的文件,將其拷貝給100個(gè)用戶,需要使用IGB的存儲(chǔ)空間;若每周對(duì)100個(gè)用戶的數(shù)據(jù)進(jìn)行備份,則每周需要額外增加IGB的存儲(chǔ)空間;一年之后,總共需要浪費(fèi)52GB的存儲(chǔ)空間;而進(jìn)行數(shù)據(jù)去重之后,僅需要IOMB大小的空間即可存儲(chǔ)。
      [0003]隨著容災(zāi)備份系統(tǒng)和數(shù)據(jù)去重技術(shù)的發(fā)展,隱私數(shù)據(jù)的丟失與篡改等存儲(chǔ)安全問題日漸突出,例如:對(duì)于現(xiàn)有的備份系統(tǒng),在存儲(chǔ)服務(wù)過程中,存儲(chǔ)系統(tǒng)錯(cuò)誤配置、管理員操作失誤、敵手通過抓包獲取等有可能將用戶的明文數(shù)據(jù)直接暴露給他人;即使敵手無(wú)法獲取明文,也可能通過破壞傳輸文件,篡改數(shù)據(jù)、暴力攻擊等方式獲取和破壞用戶和企業(yè)的重要數(shù)據(jù)。因此,如何在數(shù)據(jù)備份過程中建立一個(gè)安全的數(shù)據(jù)去重系統(tǒng)成為了工業(yè)界和學(xué)術(shù)界研究的熱點(diǎn)。
      [0004]數(shù)據(jù)安全在現(xiàn)在存儲(chǔ)系統(tǒng)中逐漸引起企業(yè)和學(xué)術(shù)界的重視,在很大程度上,數(shù)據(jù)去重和加密在邏輯上是完全相反和矛盾的。數(shù)據(jù)去重利用了數(shù)據(jù)的相似性,相反密碼學(xué)的目標(biāo)是使得密文分布更接近于理論上的隨機(jī)性。假如按照經(jīng)典數(shù)據(jù)去重算法,不同用戶對(duì)于共享的數(shù)據(jù)塊加密,由于密文的隨機(jī)性將得到不同的密文,產(chǎn)生不同的指紋,導(dǎo)致數(shù)據(jù)去重的效率大大降低。假如采用不同的用戶對(duì)共享的數(shù)據(jù)塊明文計(jì)算處理得到相同的指紋,再使用不同的密鑰加密數(shù)據(jù)塊得到不同的密文,導(dǎo)致其他用戶無(wú)法解密。同時(shí)在數(shù)據(jù)去重技術(shù)中增加加密、身份認(rèn)證等安全技術(shù)勢(shì)必會(huì)增加備份系統(tǒng)的負(fù)擔(dān),降低備份系統(tǒng)的性能。

      【發(fā)明內(nèi)容】

      [0005]針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法和系統(tǒng),其目的在于保證在數(shù)據(jù)去重率不變的基礎(chǔ)上,防止數(shù)據(jù)丟失、篡改等存儲(chǔ)安全問題。
      [0006]為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法,包括:
      [0007]—、備份階段,其包括以下步驟:
      [0008](I)接收用戶提交的備份請(qǐng)求;
      [0009](2)對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊;
      [0010](3)使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1來作為數(shù)據(jù)塊加密密鑰。
      [0011](4)再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1);
      [0012](5)將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器;
      [0013](6)在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表;
      [0014](7)根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程;
      [0015](8)在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)步驟(12),否則轉(zhuǎn)步驟(9);
      [0016](9)對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮,并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊;
      [0017](10)將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E (F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ;
      [0018](11)根據(jù)第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回步驟(8);
      [0019](12)將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E (F1)寫入到存儲(chǔ)服務(wù)器的文件譜中;
      [0020](13)釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束;
      [0021]二、恢復(fù)階段,其包括以下步驟:
      [0022](14)接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。
      [0023](15)從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端;
      [0024](16)通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值Fl以單鏈表結(jié)構(gòu)保存在內(nèi)存中;
      [0025](17)對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值;
      [0026]( 18)根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端;
      [0027]( 19)對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并寫入文件;[0028](20)釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      [0029]優(yōu)選地,備份請(qǐng)求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時(shí)間,恢復(fù)請(qǐng)求包括恢復(fù)文件對(duì)象、恢復(fù)文件名、恢復(fù)路徑。
      [0030]優(yōu)選地,其特征在于,哈希算法采用的是SHA-1方法,經(jīng)典加密算法采用的是AES算法,用戶的私有密鑰是通過Lockbox機(jī)制進(jìn)行保護(hù)。
      [0031]優(yōu)選地,步驟(7)包括以下子步驟:
      [0032](7-1)設(shè)置計(jì)數(shù)器i=l,判斷i是否大于nChunkNum。如果是則轉(zhuǎn)入步驟(8),否則轉(zhuǎn)入步驟(7-2);
      [0033](7-2)對(duì)需要備份的文件的指紋段中的內(nèi)容進(jìn)行解析,以得到第i個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋F2、數(shù)據(jù)哈希值F1的密文E (Fl )、數(shù)據(jù)塊長(zhǎng)度等信息;
      [0034](7-3)在存儲(chǔ)服務(wù)器的指紋庫(kù)中判斷是否可查找到數(shù)據(jù)塊指紋F2,如果可查找到,則表明第i個(gè)數(shù)據(jù)塊為重復(fù)塊,以指紋F2為索引條件直接指向已存在的數(shù)據(jù)塊;反之,則表明第i個(gè)數(shù)據(jù)塊是新數(shù)據(jù)塊,根據(jù)指紋F2為索引條件設(shè)置該新數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置
      [0035](7-4)設(shè)置計(jì)數(shù)器i=i+l,建立新結(jié)點(diǎn),將第i個(gè)數(shù)據(jù)塊是否重復(fù)的信息寫入該結(jié)點(diǎn),并將單鏈表的尾指針指向該結(jié)點(diǎn),并且尾指針后移一位,然后返回步驟(7-1)。
      [0036]優(yōu)選地,步驟(9)中數(shù)據(jù)塊哈希值F1作為加密密鑰采用PBE的加密策略對(duì)安全性進(jìn)行處理,并對(duì)密鑰長(zhǎng)度進(jìn)行調(diào)整。
      [0037]優(yōu)選地,步驟(18)具體為,根據(jù)數(shù)據(jù)塊指紋F2讀取恢復(fù)文件對(duì)應(yīng)的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數(shù)據(jù)塊對(duì)應(yīng)的容器的ID,讀出容器中相應(yīng)的密文數(shù)據(jù)塊,并將密文數(shù)據(jù)塊和數(shù)據(jù)塊個(gè)數(shù)nChunkNum以數(shù)據(jù)流的形式傳輸回客戶端,并發(fā)送校驗(yàn)流到客戶端,
      [0038]優(yōu)選地,步驟(19)包括以下子步驟:
      [0039](19-1)設(shè)置計(jì)數(shù)器k=0,判斷k是否大于nChunkNum,如果是轉(zhuǎn)步驟(20),否則轉(zhuǎn)步驟(19-2);
      [0040](19-2)根據(jù)文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創(chuàng)建新文件;
      [0041](19-3)調(diào)用在內(nèi)存中保存的數(shù)據(jù)塊哈希值F1,以數(shù)據(jù)塊哈希值F1為數(shù)據(jù)塊解密密鑰對(duì)第k個(gè)數(shù)據(jù)塊進(jìn)行解密,采用文件壓縮算法壓縮(GNUzip,簡(jiǎn)稱gzip),并將該明文數(shù)據(jù)塊內(nèi)容寫入到文件中,置k=k+l,轉(zhuǎn)步驟(19-1)。
      [0042]按照本發(fā)明的另一方面,提供了一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重系統(tǒng),包括:
      [0043]第一模塊,用于接收用戶提交的備份請(qǐng)求;
      [0044]第二模塊,用于對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊;
      [0045]第三模塊,用于使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1 ;
      [0046]第四模塊,用于再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1);[0047]第五模塊,用于將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器;
      [0048]第六模塊,用于在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表;
      [0049]第七模塊,用于根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程;
      [0050]第八模塊,用于在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)步驟(12),否則轉(zhuǎn)步驟(9);
      [0051]第九模塊,用于對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮,并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊;
      [0052]第十模塊,用于將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E (F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ;
      [0053]第十一模塊,用于根據(jù)第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回步驟(8);
      [0054]第十二模塊,用于將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E (F1)寫入到存儲(chǔ)服務(wù)器的文件譜中;
      [0055]第十三模塊,用于釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束;
      [0056]第十四模塊,用于接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。
      [0057]第十五模塊,用于從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端;
      [0058]第十六模塊,用于通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值F1以單鏈表結(jié)構(gòu)保存在內(nèi)存中;
      [0059]第十七模塊,用于對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值;
      [0060]第十八模塊,用于根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端;
      [0061]第十九模塊,用于對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并寫入文件;
      [0062]第二十模塊,用于釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      [0063]總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
      [0064]1、本發(fā)明采用適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法,所有的加密解密過程全部在客戶端執(zhí)行,由此,能夠有效地減輕備份服務(wù)器和存儲(chǔ)服務(wù)器的負(fù)擔(dān),提高多用戶并發(fā)環(huán)境下的性能。
      [0065]2、本發(fā)明中數(shù)據(jù)塊和密鑰在傳輸和存儲(chǔ)過程中都以密文的形式存在,確保即使敵手獲取了傳輸內(nèi)容也無(wú)法獲取加密密鑰和數(shù)據(jù)塊明文,傳輸過程中通信雙方需要身份驗(yàn)證,有效保障了數(shù)據(jù)和密鑰的傳輸和存儲(chǔ)安全性,降低了數(shù)據(jù)丟失和被篡改的概率。
      [0066]3、相對(duì)于先加密再去重的方式必須將所有數(shù)據(jù)塊先加密、然后發(fā)送到存儲(chǔ)服務(wù)器進(jìn)行去重處理而言,本發(fā)明通過先進(jìn)行數(shù)據(jù)去重再對(duì)新數(shù)據(jù)塊加密的方式,只需要對(duì)非重復(fù)的數(shù)據(jù)塊加密,減少了大量的加密工作,有效降低了客戶端的開銷和時(shí)間延遲。
      [0067]4、本發(fā)明將數(shù)據(jù)塊加密密鑰放在存儲(chǔ)服務(wù)器端,即使客戶端的數(shù)據(jù)和密鑰丟失,都能保證數(shù)據(jù)正?;謴?fù)正常解密;因此,通過減少交互次數(shù),如以文件為單位,一次或幾次完成所有的交互信息,減少鏈表的訪問次數(shù),記錄上次訪問地址,性能會(huì)得到很大的提升。
      【專利附圖】

      【附圖說明】
      [0068]圖1是本發(fā)明應(yīng)用的備份系統(tǒng)的架構(gòu)圖。
      [0069]圖2是本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法的備份過程原理圖。
      [0070]圖3是本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法的恢復(fù)過程原理圖。
      [0071]圖4是本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法的備份流程圖。
      [0072]圖5是本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法的恢復(fù)流程圖。
      【具體實(shí)施方式】
      [0073]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
      [0074]本發(fā)明主要涉及到3個(gè)重要的變量:數(shù)據(jù)塊哈希值F1、數(shù)據(jù)塊指紋F2、數(shù)據(jù)塊哈希值F1的密文E(F1)15使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1來作為數(shù)據(jù)塊的加密密鑰,再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2作為該數(shù)據(jù)塊的指紋來識(shí)別重復(fù)數(shù)據(jù)塊,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1)來保護(hù)數(shù)據(jù)塊的加密密鑰。
      [0075]本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法的基本思路在于,在客戶端將待備份數(shù)據(jù)流分塊、求取數(shù)據(jù)塊哈希值F1之后,對(duì)數(shù)據(jù)塊哈希值F1再次求取哈希值得到F2,并且將哈希值F2作為該數(shù)據(jù)塊的指紋進(jìn)行數(shù)據(jù)去重操作過程。該方法采用的是先去重后加密的策略,客戶端將所有數(shù)據(jù)塊指紋F2發(fā)送到存儲(chǔ)服務(wù)器的指紋庫(kù)中進(jìn)行查找比對(duì),如果存在說明是重復(fù)數(shù)據(jù)塊;如果不存在說明是新數(shù)據(jù)塊,將指紋寫入到數(shù)據(jù)庫(kù)中。所有數(shù)據(jù)塊指紋對(duì)比完畢后,將是否重復(fù)的信息記錄并發(fā)回客戶端??蛻舳烁鶕?jù)該信息,對(duì)于重復(fù)數(shù)據(jù)塊不予發(fā)送;對(duì)于新的數(shù)據(jù)塊,使用數(shù)據(jù)塊本身的哈希值F1經(jīng)過處理之后作為密鑰,采用高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,簡(jiǎn)稱AES)算法等經(jīng)典加密算法對(duì)數(shù)據(jù)塊加密,將密文塊發(fā)送到存儲(chǔ)服務(wù)器儲(chǔ)存。
      [0076]為了進(jìn)行密鑰保護(hù),客戶端將數(shù)據(jù)塊的哈希值F1 (即數(shù)據(jù)塊加密密鑰)使用用戶私有的對(duì)稱密鑰加密得到E (F1),將E (F1)發(fā)送到存儲(chǔ)服務(wù)器的文件譜中存儲(chǔ),而用戶的私有密鑰通過Lockbox機(jī)制進(jìn)行保護(hù),確保密鑰的安全性。
      [0077]在進(jìn)行文件恢復(fù)時(shí),客戶端首先會(huì)請(qǐng)求由存儲(chǔ)服務(wù)器將文件譜從磁盤中讀出發(fā)送回客戶端,客戶端接收文件譜,從LockBox中取出用戶的私有密鑰,對(duì)文件譜中的E (F1)解密得到數(shù)據(jù)塊加密密鑰F1暫時(shí)保存在內(nèi)存中;同時(shí)對(duì)解密得到的數(shù)據(jù)塊哈希值F1再次求取哈希值得到數(shù)據(jù)塊指紋F2,將數(shù)據(jù)塊指紋F2發(fā)送到存儲(chǔ)服務(wù)器根據(jù)索引查找數(shù)據(jù)塊,將數(shù)據(jù)塊發(fā)送到客戶端,客戶端使用密鑰F1對(duì)密文塊解密,將數(shù)據(jù)塊明文寫入文件中,整理后恢復(fù)過程結(jié)束。
      [0078]如圖1所示,使用本發(fā)明方法的備份系統(tǒng),主要包含三個(gè)部分,即客戶端、備份服務(wù)器和存儲(chǔ)服務(wù)器。
      [0079]備份服務(wù)器主要負(fù)責(zé)資源調(diào)度和元數(shù)據(jù)管理。資源調(diào)度主要是監(jiān)聽備份代理和存儲(chǔ)服務(wù)器的各項(xiàng)請(qǐng)求,并對(duì)收到的請(qǐng)求完成對(duì)應(yīng)的功能,主要包括驗(yàn)證備份代理身份,響應(yīng)備份代理的服務(wù)請(qǐng)求,對(duì)備份和恢復(fù)文件進(jìn)行調(diào)度,協(xié)調(diào)存儲(chǔ)服務(wù)器與備份代理完成文件任務(wù),存儲(chǔ)空間分配;元數(shù)據(jù)管理主要對(duì)用戶和存儲(chǔ)服務(wù)器提供的元數(shù)據(jù)進(jìn)行組織和管理,如用戶名,登錄時(shí)間,用戶備份的索引信息等。
      [0080]存儲(chǔ)服務(wù)器主要完成數(shù)據(jù)存儲(chǔ)和組織。主要是接收客戶端傳送的指紋,進(jìn)行指紋匹配完成去重功能并返回查找信息,接收并存儲(chǔ)數(shù)據(jù)塊密文和文件譜信息等。如圖1所示,存儲(chǔ)服務(wù)器完成了密鑰的存儲(chǔ)和管理。
      [0081]客戶端主要完成備份和恢復(fù)申請(qǐng),備份數(shù)據(jù)的分塊、求哈希、求指紋和數(shù)據(jù)塊加密解密等功能。如圖1所示,客戶端與存儲(chǔ)服務(wù)器之間的數(shù)據(jù)通信采用安全套接層協(xié)議(Secure Socket Layer/Transport Layer Security,簡(jiǎn)稱 SSL/TLS)。
      [0082]本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法包括:
      [0083]一、備份階段,如圖2和圖4所示,其包括以下步驟:
      [0084](I)接收用戶提交的備份請(qǐng)求,該備份請(qǐng)求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時(shí)間等;
      [0085](2)對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊;在本實(shí)施方式中,分塊采用的是基于Rabin指紋的滑動(dòng)窗口分塊算法;
      [0086](3)使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1 ;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值,該哈希值用來作為數(shù)據(jù)塊的加密密鑰;
      [0087](4)再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋來識(shí)別重復(fù)數(shù)據(jù)塊,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1),從而保護(hù)數(shù)據(jù)塊加密密鑰F1 ;具體而言,哈希算法采用的是SHA-1方法,經(jīng)典加密算法采用的是高級(jí)加密標(biāo)準(zhǔn)(AdvancedEncryption Standard,簡(jiǎn)稱AES)算法,用戶的私有密鑰是通過Lockbox機(jī)制進(jìn)行保護(hù);
      [0088]本步驟的優(yōu)點(diǎn)在于,經(jīng)過兩次哈希計(jì)算,能快速地獲取數(shù)據(jù)塊指紋,加快了數(shù)據(jù)去重的速度。并且通過Lockbox機(jī)制有效地保護(hù)用戶的私有密鑰。
      [0089](5)將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器;具體而言,在傳輸過程中采用安全套接層協(xié)議(Secure Socket Layer/Transport LayerSecurity,簡(jiǎn)稱SSL/TLS),客戶端與服務(wù)器數(shù)據(jù)通信包含3種流類型:指紋流,數(shù)據(jù)流和校驗(yàn)流。
      [0090](6)在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表;
      [0091](7)根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程;本步驟包括以下子步驟:
      [0092](7-1)設(shè)置計(jì)數(shù)器i=l,判斷i是否大于nChunkNum。如果是則轉(zhuǎn)入步驟(8),否則轉(zhuǎn)入步驟(7-2);
      [0093](7-2)對(duì)需要備份的文件的指紋段中的內(nèi)容進(jìn)行解析,以得到第i個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋F2、數(shù)據(jù)哈希值F1的密文E (F1)、數(shù)據(jù)塊長(zhǎng)度等信息;
      [0094](7-3)在存儲(chǔ)服務(wù)器的指紋庫(kù)中判斷是否可查找到數(shù)據(jù)塊指紋F2,如果可查找到,則表明第i個(gè)數(shù)據(jù)塊為重復(fù)塊,以指紋F2為索引條件直接指向已存在的數(shù)據(jù)塊;反之,則表明第i個(gè)數(shù)據(jù)塊是新數(shù)據(jù)塊,根據(jù)指紋F2為索引條件設(shè)置該新數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置;具體而言,本發(fā)明中提到的索引用于數(shù)據(jù)塊的存儲(chǔ)和查找。
      [0095](7-4)設(shè)置計(jì)數(shù)器i=i+l,建立新結(jié)點(diǎn),將第i個(gè)數(shù)據(jù)塊是否重復(fù)的信息寫入該結(jié)點(diǎn),并將單鏈表的尾指針指向該結(jié)點(diǎn),并且尾指針后移一位,然后返回步驟(7-1);
      [0096](8)在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)步驟(12),否則轉(zhuǎn)步驟(9);
      [0097](9)對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮(GNUzip,簡(jiǎn)稱gzip),并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊;具體而言,數(shù)據(jù)塊哈希值F1作為加密密鑰需要采用基于口令加密(Passwordbased encryption,簡(jiǎn)稱PBE)的加密策略對(duì)安全性進(jìn)行處理,并對(duì)密鑰長(zhǎng)度進(jìn)行調(diào)整。
      [0098]本步驟的優(yōu)點(diǎn)在于,所有的加密解密過程全部在客戶端執(zhí)行,由此,能夠有效地減輕備份服務(wù)器和存儲(chǔ)服務(wù)器的負(fù)擔(dān)。并且只對(duì)新的數(shù)據(jù)塊加密,減少了重復(fù)加密的負(fù)擔(dān)。
      [0099](10)將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E (F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ;具體而言,在傳輸過程中采用安全套接層協(xié)議(Secure Socket Layer/Transport Layer Security,簡(jiǎn)稱 SSL/TLS)。
      [0100]本步驟的優(yōu)點(diǎn)在于數(shù)據(jù)和密鑰在傳輸和存儲(chǔ)過程中都以密文的形式存在,確保即使敵手獲取了傳輸內(nèi)容也無(wú)法獲取加密密鑰和數(shù)據(jù)塊明文,傳輸過程中通信雙方需要身份驗(yàn)證,有效保障了數(shù)據(jù)和密鑰的傳輸和存儲(chǔ)安全性,降低了數(shù)據(jù)丟失和被篡改的概率。
      [0101](11)根據(jù)步驟(7-3)中指紋F2設(shè)置的第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回步驟(8);
      [0102](12)將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E (F1)寫入到存儲(chǔ)服務(wù)器的文件譜中;具體而言,文件譜是用于數(shù)據(jù)恢復(fù)時(shí)的文件。
      [0103](13)釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束;
      [0104]二、恢復(fù)階段,如圖3和圖5所示,其包括以下步驟:
      [0105](14)接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該恢復(fù)請(qǐng)求包括恢復(fù)文件對(duì)象、恢復(fù)文件名、以及恢復(fù)路徑等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。
      [0106](15)從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端;
      [0107](16)通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值F1以單鏈表結(jié)構(gòu)保存在內(nèi)存中;
      [0108](17)對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值;
      [0109](18)根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端;具體而言,根據(jù)數(shù)據(jù)塊指紋F2讀取恢復(fù)文件對(duì)應(yīng)的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數(shù)據(jù)塊對(duì)應(yīng)的容器的ID,讀出容器中相應(yīng)的密文數(shù)據(jù)塊,并將密文數(shù)據(jù)塊和數(shù)據(jù)塊個(gè)數(shù)nChunkNum以數(shù)據(jù)流的形式傳輸回客戶端,并發(fā)送校驗(yàn)流到客戶端,本發(fā)明傳輸過程采用安全套接層協(xié)議(Secure Socket Layer/Transport Layer Security,簡(jiǎn)稱SSL/TLS),相似性容器設(shè)置于存儲(chǔ)服務(wù)器,用于快速查找數(shù)據(jù)塊;
      [0110](19)對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并寫入文件;本步驟具體包括以下子步驟:
      [0111](19-1)設(shè)置計(jì)數(shù)器k=0,判斷k是否大于nChunkNum,如果是轉(zhuǎn)步驟(20),否則轉(zhuǎn)步驟(19-2)
      [0112](19-2)根據(jù)文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創(chuàng)建新文件;
      [0113](19-3)調(diào)用在內(nèi)存中保存的數(shù)據(jù)塊哈希值F1,以數(shù)據(jù)塊哈希值F1為數(shù)據(jù)塊解密密鑰對(duì)第k個(gè)數(shù)據(jù)塊進(jìn)行解密,采用文件壓縮算法壓縮(GNUz ip,簡(jiǎn)稱gz ip),并將該明文數(shù)據(jù)塊內(nèi)容寫入到文件中,置k=k+l,轉(zhuǎn)步驟(19-1);具體而言,數(shù)據(jù)塊哈希值F1作為加密密鑰需要采用基于口令加密(Password Based Encryption,簡(jiǎn)稱PBE)的加密策略對(duì)安全性進(jìn)行處理,并對(duì)密鑰長(zhǎng)度進(jìn)行調(diào)整。
      [0114](20)釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      [0115]本發(fā)明適用于備份系統(tǒng)的安全數(shù)據(jù)去重系統(tǒng),是應(yīng)用在一種備份系統(tǒng)中,該備份系統(tǒng)包括客戶端、備份服務(wù)器和存儲(chǔ)服務(wù)器,該安全數(shù)據(jù)去重系統(tǒng)包括:
      [0116]第一模塊,其設(shè)置于備份服務(wù)器中,用于接收用戶提交的備份請(qǐng)求;
      [0117]第二模塊,其設(shè)置于客戶端中,用于對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊;
      [0118]第三模塊,其設(shè)置于客戶端中,用于使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1來作為數(shù)據(jù)塊的加密密鑰;
      [0119]第四模塊,其設(shè)置于客戶端中,用于再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E(F0,從而保護(hù)數(shù)據(jù)塊加密密鑰F1 ;
      [0120]第五模塊,其設(shè)置于客戶端中,用于將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器;
      [0121]第六模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表;
      [0122]第七模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程;
      [0123]第八模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)第十二模塊,否則轉(zhuǎn)第九模塊;
      [0124]第九模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮,并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊;
      [0125]第十模塊,其設(shè)置于客戶端中,用于將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E (F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ;
      [0126]第十一模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于根據(jù)第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回第八模塊;
      [0127]第十二模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E (F1)寫入到存儲(chǔ)服務(wù)器的文件譜中;
      [0128]第十三模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束;
      [0129]第十四模塊,其設(shè)置于備份服務(wù)器中,用于接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。
      [0130]第十五模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值Fl的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端;
      [0131]第十六模塊,其設(shè)置于客戶端中,用于通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值F1以單鏈表結(jié)構(gòu)保存在內(nèi)存中;
      [0132]第十七模塊,其設(shè)置于客戶端中,用于對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值;
      [0133]第十八模塊,其設(shè)置于存儲(chǔ)服務(wù)器中,用于根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端;
      [0134]第十九模塊,其設(shè)置于客戶端中,用于對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并與入文件;
      [0135]第二十模塊,其設(shè)置于客戶端中,用于釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      [0136]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重方法,其特征在于,包括: 一、備份階段,其包括以下步驟: (1)接收用戶提交的備份請(qǐng)求; (2)對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊; (3)使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1來作為數(shù)據(jù)塊加密密鑰。 (4)再次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋來識(shí)別重復(fù)數(shù)據(jù)塊,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1),從而保護(hù)數(shù)據(jù)塊加密密鑰F1 ; (5)將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器; (6)在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表; (7)根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程; (8)在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)步驟(12),否則轉(zhuǎn)步驟(9); (9)對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮,并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊; (10)將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E(F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ; (11)根據(jù)第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回步驟(8); (12)將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E(F1)寫入到存儲(chǔ)服務(wù)器的文件譜中; (13)釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束; 二、恢復(fù)階段,其包括以下步驟: (14)接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。 (15)從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端; (16)通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值F1以單鏈表結(jié)構(gòu)保存在內(nèi)存中; (17)對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值; (18)根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端; (19)對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并寫入文件; (20)釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      2.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于,備份請(qǐng)求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時(shí)間,恢復(fù)請(qǐng)求包括恢復(fù)文件對(duì)象、恢復(fù)文件名、恢復(fù)路徑。
      3.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于, 哈希算法采用的是SHA-1方法; 經(jīng)典加密算法采用的是AES算法; 用戶的私有密鑰是通過Lockbox機(jī)制進(jìn)行保護(hù)。
      4.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于,步驟(7)包括以下子步驟: (7-1)設(shè)置計(jì)數(shù)器i=l,判斷i是否大于nChunkNum。如果是則轉(zhuǎn)入步驟(8),否則轉(zhuǎn)入步驟(7-2); (7-2)對(duì)需要備份的文件的指紋段中的內(nèi)容進(jìn)行解析,以得到第i個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋F2、數(shù)據(jù)塊長(zhǎng)度等信息; (7-3)在存儲(chǔ)服務(wù)器的指紋庫(kù)中判斷是否可查找到數(shù)據(jù)塊指紋F2,如果可查找到,則表明第i個(gè)數(shù)據(jù)塊為重復(fù)塊,以指紋F2為索引條件直接指向已存在的數(shù)據(jù)塊;反之,則表明第i個(gè)數(shù)據(jù)塊是新數(shù)據(jù)塊,根據(jù)指紋F2為索引條件設(shè)置該新數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置 (7-4)設(shè)置計(jì)數(shù)器i=i+l,建立新結(jié)點(diǎn),將第i個(gè)數(shù)據(jù)塊是否重復(fù)的信息寫入該結(jié)點(diǎn),并將單鏈表的尾指針指向該結(jié)點(diǎn),并且尾指針后移一位,然后返回步驟(7-1)。
      5.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于,步驟(9)中數(shù)據(jù)塊哈希值F1作為加密密鑰采用PBE的加密策略對(duì)安全性進(jìn)行處理,并對(duì)密鑰長(zhǎng)度進(jìn)行調(diào)整。
      6.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于,步驟(18)具體為,根據(jù)數(shù)據(jù)塊指紋F2讀取恢復(fù)文件對(duì)應(yīng)的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數(shù)據(jù)塊對(duì)應(yīng)的容器的ID,讀出容器中相應(yīng)的密文數(shù)據(jù)塊,并將密文數(shù)據(jù)塊和數(shù)據(jù)塊個(gè)數(shù)nChunkNum以數(shù)據(jù)流的形式傳輸回客戶端,并發(fā)送校驗(yàn)流到客戶端。
      7.根據(jù)權(quán)利要求1所述的安全數(shù)據(jù)去重方法,其特征在于,步驟(19)包括以下子步驟: (19-1)設(shè)置計(jì)數(shù)器k=0,判斷k是否大于nChunkNum,如果是轉(zhuǎn)步驟(20),否則轉(zhuǎn)步驟(19-2); (19-2)根據(jù)文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創(chuàng)建新文件;(19-3)調(diào)用在內(nèi)存中保存的數(shù)據(jù)塊哈希值F1,以數(shù)據(jù)塊哈希值F1為數(shù)據(jù)塊解密密鑰對(duì)第k個(gè)數(shù)據(jù)塊進(jìn)行解密,采用文件壓縮算法壓縮(GNUzip,簡(jiǎn)稱gzip),并將該明文數(shù)據(jù)塊內(nèi)容寫入到文件中,置k=k+l,轉(zhuǎn)步驟(19-1 )。
      8.一種適用于備份系統(tǒng)的安全數(shù)據(jù)去重系統(tǒng),其特征在于,包括: 第一模塊,用于接收用戶提交的備份請(qǐng)求; 第二模塊,用于對(duì)需要備份的每個(gè)文件進(jìn)行分塊,以得到多個(gè)不同大小的數(shù)據(jù)塊; 第三模塊,用于使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊的哈希值F1 ; 第四模塊,用于再 次使用哈希算法計(jì)算每個(gè)數(shù)據(jù)塊哈希值F1的哈希值F2,并將哈希值F2作為該數(shù)據(jù)塊的指紋,并采用經(jīng)典加密算法使用用戶的私鑰對(duì)數(shù)據(jù)塊的哈希值F1進(jìn)行加密以得到數(shù)據(jù)哈希值F1的密文E (F1);第五模塊,用于將文件的數(shù)據(jù)塊個(gè)數(shù)nChunkNum,所有數(shù)據(jù)塊指紋F2等打包成指紋段并記錄,順序?qū)⑺兄讣y段以指紋流的形式發(fā)送傳輸?shù)酱鎯?chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器; 第六模塊,用于在存儲(chǔ)服務(wù)器的內(nèi)存中建立用于記錄該文件的數(shù)據(jù)塊是否重復(fù)的單鏈表; 第七模塊,用于根據(jù)指紋段和文件數(shù)據(jù)塊個(gè)數(shù)nChunkNum在存儲(chǔ)服務(wù)器端進(jìn)行數(shù)據(jù)去重的操作過程; 第八模塊,用于在客戶端準(zhǔn)備備份非重復(fù)的數(shù)據(jù)塊,設(shè)置計(jì)數(shù)器j=l,并判斷j是否大于nChunkNum,如果是則轉(zhuǎn)第十二模塊,否則轉(zhuǎn)第九模塊; 第九模塊,用于對(duì)于第j個(gè)數(shù)據(jù)塊,如果其是重復(fù)的數(shù)據(jù)塊,則不予發(fā)送;如果其是新的數(shù)據(jù)塊,采用文件壓縮算法壓縮,并以數(shù)據(jù)塊哈希值F1作為第j個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊加密密鑰,并使用該數(shù)據(jù)塊加密密鑰和經(jīng)典加密算法對(duì)第j個(gè)數(shù)據(jù)塊加密,得到的密文數(shù)據(jù)塊; 第十模塊,用于將加密后的密文數(shù)據(jù)塊和數(shù)據(jù)塊哈希值F1的密文E (F1)以數(shù)據(jù)流的形式發(fā)送至存儲(chǔ)服務(wù)器,并發(fā)送校驗(yàn)流到存儲(chǔ)服務(wù)器,設(shè)置j=j+l ; 第十一模塊,用于根據(jù)第j個(gè)數(shù)據(jù)塊在存儲(chǔ)服務(wù)器中的存儲(chǔ)位置,保存數(shù)據(jù)塊密文,然后返回第八模塊; 第十二模塊,用于將該單鏈表發(fā)送回客戶端,并將所有數(shù)據(jù)塊的數(shù)據(jù)哈希值F1的密文E(F1)寫入到存儲(chǔ)服務(wù)器的文件譜中;` 第十三模塊,用于釋放內(nèi)存中單鏈表的數(shù)據(jù)結(jié)構(gòu),備份過程結(jié)束; 第十四模塊,用于接收用戶提交的恢復(fù)請(qǐng)求;具體而言,該等信息,由備份服務(wù)器根據(jù)文件這些信息等查找到該文件指定的存儲(chǔ)服務(wù)器。 第十五模塊,用于從存儲(chǔ)服務(wù)器中查找該恢復(fù)文件對(duì)應(yīng)的文件譜,將文件譜中的所有內(nèi)容包括所有數(shù)據(jù)塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發(fā)送回客戶端; 第十六模塊,用于通過使用LockBox機(jī)制取出用戶的私有密鑰,并對(duì)接收到的數(shù)據(jù)塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進(jìn)行解密,并將解密得到的數(shù)據(jù)塊哈希值F1以單鏈表結(jié)構(gòu)保存在內(nèi)存中; 第十七模塊,用于對(duì)數(shù)據(jù)塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數(shù)據(jù)塊指紋F2,并將其發(fā)送回存儲(chǔ)服務(wù)器;具體而言,本發(fā)明采用的是SHA-1算法計(jì)算哈希值; 第十八模塊,用于根據(jù)數(shù)據(jù)塊指紋F2找到數(shù)據(jù)塊,并將數(shù)據(jù)塊發(fā)送回客戶端; 第十九模塊,用于對(duì)接收到的數(shù)據(jù)塊進(jìn)行解密和解壓縮處理,并寫入文件; 第二十模塊,用于釋放內(nèi)存中保存的數(shù)據(jù)塊哈希值F1的單鏈表數(shù)據(jù)結(jié)構(gòu),恢復(fù)過程結(jié)束。
      【文檔編號(hào)】H04L9/32GK103530201SQ201310301670
      【公開日】2014年1月22日 申請(qǐng)日期:2013年7月17日 優(yōu)先權(quán)日:2013年7月17日
      【發(fā)明者】馮丹, 周玉坤, 夏文, 付忞, 黃方亭 申請(qǐng)人:華中科技大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1