一種適用于備份系統的安全數據去重方法和系統的制作方法
【專利摘要】本發明公開了一種適用于備份系統的安全數據去重方法,包括:接收用戶提交的備份請求,對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊,使用哈希算法計算每個數據塊的哈希值F1來作為數據塊的加密密鑰,再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2作為該數據塊的指紋來識別重復數據塊,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E(F1)來保護數據塊的加密密鑰。將所有數據塊指紋F2等順序打包成指紋段發送傳輸到存儲服務器。本發明中所有通信過程采用安全套接層協議。本發明通過采用該安全數據去重方法,能夠保證在數據去重率不變的基礎上,防止數據丟失、篡改等存儲安全問題。
【專利說明】一種適用于備份系統的安全數據去重方法和系統
【技術領域】
[0001]本發明屬于計算機存儲領域,更具體地,涉及一種適用于備份系統的安全數據去重方法和系統。
【背景技術】
[0002]近年來,隨著計算機技術和網絡的發展普及,全球的數據信息存儲量呈爆炸式增長的趨勢。全球范圍內個人電腦、智能手機等設備的普及,和新興市場內不斷增長的互聯網訪問量,以及監控攝像機或智能電表等設備產生的數據爆增,使數字宇宙的規模在最近兩年翻了一番,達到驚人的2.8ZB。IDC預計,到2020年,數字宇宙規模將超出預期,達到40ZB。在線數字內容的增長導致了硬件、人力維護在內的存儲系統成本的增加,減少傳輸、存儲管理過程中的數據量變得極其重要。在海量的數據中存在大量的重復數據和相似數據,如同樣的文件為確保安全存儲了多份,在計算機系統通常存儲和操作同一數據的若干副本,這些冗余數據占用了大量的存儲空間。數據去重技術是一種通過大規模消除冗余數據,降低存儲成本的重要技術。簡單舉例說明:若有一個IOMB大小的文件,將其拷貝給100個用戶,需要使用IGB的存儲空間;若每周對100個用戶的數據進行備份,則每周需要額外增加IGB的存儲空間;一年之后,總共需要浪費52GB的存儲空間;而進行數據去重之后,僅需要IOMB大小的空間即可存儲。
[0003]隨著容災備份系統和數據去重技術的發展,隱私數據的丟失與篡改等存儲安全問題日漸突出,例如:對于現有的備份系統,在存儲服務過程中,存儲系統錯誤配置、管理員操作失誤、敵手通過抓包獲取等有可能將用戶的明文數據直接暴露給他人;即使敵手無法獲取明文,也可能通過破壞傳輸文件,篡改數據、暴力攻擊等方式獲取和破壞用戶和企業的重要數據。因此,如何在數據備份過程中建立一個安全的數據去重系統成為了工業界和學術界研究的熱點。
[0004]數據安全在現在存儲系統中逐漸引起企業和學術界的重視,在很大程度上,數據去重和加密在邏輯上是完全相反和矛盾的。數據去重利用了數據的相似性,相反密碼學的目標是使得密文分布更接近于理論上的隨機性。假如按照經典數據去重算法,不同用戶對于共享的數據塊加密,由于密文的隨機性將得到不同的密文,產生不同的指紋,導致數據去重的效率大大降低。假如采用不同的用戶對共享的數據塊明文計算處理得到相同的指紋,再使用不同的密鑰加密數據塊得到不同的密文,導致其他用戶無法解密。同時在數據去重技術中增加加密、身份認證等安全技術勢必會增加備份系統的負擔,降低備份系統的性能。
【發明內容】
[0005]針對現有技術的以上缺陷或改進需求,本發明提供了一種適用于備份系統的安全數據去重方法和系統,其目的在于保證在數據去重率不變的基礎上,防止數據丟失、篡改等存儲安全問題。
[0006]為實現上述目的,按照本發明的一個方面,提供了一種適用于備份系統的安全數據去重方法,包括:
[0007]—、備份階段,其包括以下步驟:
[0008](I)接收用戶提交的備份請求;
[0009](2)對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊;
[0010](3)使用哈希算法計算每個數據塊的哈希值F1來作為數據塊加密密鑰。
[0011](4)再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1);
[0012](5)將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器;
[0013](6)在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表;
[0014](7)根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程;
[0015](8)在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉步驟(12),否則轉步驟(9);
[0016](9)對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮,并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊;
[0017](10)將加密后的密文數據塊和數據塊哈希值F1的密文E (F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ;
[0018](11)根據第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回步驟(8);
[0019](12)將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E (F1)寫入到存儲服務器的文件譜中;
[0020](13)釋放內存中單鏈表的數據結構,備份過程結束;
[0021]二、恢復階段,其包括以下步驟:
[0022](14)接收用戶提交的恢復請求;具體而言,該等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。
[0023](15)從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端;
[0024](16)通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值Fl以單鏈表結構保存在內存中;
[0025](17)對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值;
[0026]( 18)根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端;
[0027]( 19)對接收到的數據塊進行解密和解壓縮處理,并寫入文件;[0028](20)釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
[0029]優選地,備份請求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時間,恢復請求包括恢復文件對象、恢復文件名、恢復路徑。
[0030]優選地,其特征在于,哈希算法采用的是SHA-1方法,經典加密算法采用的是AES算法,用戶的私有密鑰是通過Lockbox機制進行保護。
[0031]優選地,步驟(7)包括以下子步驟:
[0032](7-1)設置計數器i=l,判斷i是否大于nChunkNum。如果是則轉入步驟(8),否則轉入步驟(7-2);
[0033](7-2)對需要備份的文件的指紋段中的內容進行解析,以得到第i個數據塊的數據塊指紋F2、數據哈希值F1的密文E (Fl )、數據塊長度等信息;
[0034](7-3)在存儲服務器的指紋庫中判斷是否可查找到數據塊指紋F2,如果可查找到,則表明第i個數據塊為重復塊,以指紋F2為索引條件直接指向已存在的數據塊;反之,則表明第i個數據塊是新數據塊,根據指紋F2為索引條件設置該新數據塊在存儲服務器中的存儲位置
[0035](7-4)設置計數器i=i+l,建立新結點,將第i個數據塊是否重復的信息寫入該結點,并將單鏈表的尾指針指向該結點,并且尾指針后移一位,然后返回步驟(7-1)。
[0036]優選地,步驟(9)中數據塊哈希值F1作為加密密鑰采用PBE的加密策略對安全性進行處理,并對密鑰長度進行調整。
[0037]優選地,步驟(18)具體為,根據數據塊指紋F2讀取恢復文件對應的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數據塊對應的容器的ID,讀出容器中相應的密文數據塊,并將密文數據塊和數據塊個數nChunkNum以數據流的形式傳輸回客戶端,并發送校驗流到客戶端,
[0038]優選地,步驟(19)包括以下子步驟:
[0039](19-1)設置計數器k=0,判斷k是否大于nChunkNum,如果是轉步驟(20),否則轉步驟(19-2);
[0040](19-2)根據文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創建新文件;
[0041](19-3)調用在內存中保存的數據塊哈希值F1,以數據塊哈希值F1為數據塊解密密鑰對第k個數據塊進行解密,采用文件壓縮算法壓縮(GNUzip,簡稱gzip),并將該明文數據塊內容寫入到文件中,置k=k+l,轉步驟(19-1)。
[0042]按照本發明的另一方面,提供了一種適用于備份系統的安全數據去重系統,包括:
[0043]第一模塊,用于接收用戶提交的備份請求;
[0044]第二模塊,用于對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊;
[0045]第三模塊,用于使用哈希算法計算每個數據塊的哈希值F1 ;
[0046]第四模塊,用于再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1);[0047]第五模塊,用于將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器;
[0048]第六模塊,用于在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表;
[0049]第七模塊,用于根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程;
[0050]第八模塊,用于在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉步驟(12),否則轉步驟(9);
[0051]第九模塊,用于對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮,并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊;
[0052]第十模塊,用于將加密后的密文數據塊和數據塊哈希值F1的密文E (F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ;
[0053]第十一模塊,用于根據第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回步驟(8);
[0054]第十二模塊,用于將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E (F1)寫入到存儲服務器的文件譜中;
[0055]第十三模塊,用于釋放內存中單鏈表的數據結構,備份過程結束;
[0056]第十四模塊,用于接收用戶提交的恢復請求;具體而言,該等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。
[0057]第十五模塊,用于從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端;
[0058]第十六模塊,用于通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值F1以單鏈表結構保存在內存中;
[0059]第十七模塊,用于對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值;
[0060]第十八模塊,用于根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端;
[0061]第十九模塊,用于對接收到的數據塊進行解密和解壓縮處理,并寫入文件;
[0062]第二十模塊,用于釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
[0063]總體而言,通過本發明所構思的以上技術方案與現有技術相比,能夠取得下列有益效果:
[0064]1、本發明采用適用于備份系統的安全數據去重方法,所有的加密解密過程全部在客戶端執行,由此,能夠有效地減輕備份服務器和存儲服務器的負擔,提高多用戶并發環境下的性能。
[0065]2、本發明中數據塊和密鑰在傳輸和存儲過程中都以密文的形式存在,確保即使敵手獲取了傳輸內容也無法獲取加密密鑰和數據塊明文,傳輸過程中通信雙方需要身份驗證,有效保障了數據和密鑰的傳輸和存儲安全性,降低了數據丟失和被篡改的概率。
[0066]3、相對于先加密再去重的方式必須將所有數據塊先加密、然后發送到存儲服務器進行去重處理而言,本發明通過先進行數據去重再對新數據塊加密的方式,只需要對非重復的數據塊加密,減少了大量的加密工作,有效降低了客戶端的開銷和時間延遲。
[0067]4、本發明將數據塊加密密鑰放在存儲服務器端,即使客戶端的數據和密鑰丟失,都能保證數據正常恢復正常解密;因此,通過減少交互次數,如以文件為單位,一次或幾次完成所有的交互信息,減少鏈表的訪問次數,記錄上次訪問地址,性能會得到很大的提升。
【專利附圖】
【附圖說明】
[0068]圖1是本發明應用的備份系統的架構圖。
[0069]圖2是本發明適用于備份系統的安全數據去重方法的備份過程原理圖。
[0070]圖3是本發明適用于備份系統的安全數據去重方法的恢復過程原理圖。
[0071]圖4是本發明適用于備份系統的安全數據去重方法的備份流程圖。
[0072]圖5是本發明適用于備份系統的安全數據去重方法的恢復流程圖。
【具體實施方式】
[0073]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
[0074]本發明主要涉及到3個重要的變量:數據塊哈希值F1、數據塊指紋F2、數據塊哈希值F1的密文E(F1)15使用哈希算法計算每個數據塊的哈希值F1來作為數據塊的加密密鑰,再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2作為該數據塊的指紋來識別重復數據塊,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1)來保護數據塊的加密密鑰。
[0075]本發明適用于備份系統的安全數據去重方法的基本思路在于,在客戶端將待備份數據流分塊、求取數據塊哈希值F1之后,對數據塊哈希值F1再次求取哈希值得到F2,并且將哈希值F2作為該數據塊的指紋進行數據去重操作過程。該方法采用的是先去重后加密的策略,客戶端將所有數據塊指紋F2發送到存儲服務器的指紋庫中進行查找比對,如果存在說明是重復數據塊;如果不存在說明是新數據塊,將指紋寫入到數據庫中。所有數據塊指紋對比完畢后,將是否重復的信息記錄并發回客戶端。客戶端根據該信息,對于重復數據塊不予發送;對于新的數據塊,使用數據塊本身的哈希值F1經過處理之后作為密鑰,采用高級加密標準(Advanced Encryption Standard,簡稱AES)算法等經典加密算法對數據塊加密,將密文塊發送到存儲服務器儲存。
[0076]為了進行密鑰保護,客戶端將數據塊的哈希值F1 (即數據塊加密密鑰)使用用戶私有的對稱密鑰加密得到E (F1),將E (F1)發送到存儲服務器的文件譜中存儲,而用戶的私有密鑰通過Lockbox機制進行保護,確保密鑰的安全性。
[0077]在進行文件恢復時,客戶端首先會請求由存儲服務器將文件譜從磁盤中讀出發送回客戶端,客戶端接收文件譜,從LockBox中取出用戶的私有密鑰,對文件譜中的E (F1)解密得到數據塊加密密鑰F1暫時保存在內存中;同時對解密得到的數據塊哈希值F1再次求取哈希值得到數據塊指紋F2,將數據塊指紋F2發送到存儲服務器根據索引查找數據塊,將數據塊發送到客戶端,客戶端使用密鑰F1對密文塊解密,將數據塊明文寫入文件中,整理后恢復過程結束。
[0078]如圖1所示,使用本發明方法的備份系統,主要包含三個部分,即客戶端、備份服務器和存儲服務器。
[0079]備份服務器主要負責資源調度和元數據管理。資源調度主要是監聽備份代理和存儲服務器的各項請求,并對收到的請求完成對應的功能,主要包括驗證備份代理身份,響應備份代理的服務請求,對備份和恢復文件進行調度,協調存儲服務器與備份代理完成文件任務,存儲空間分配;元數據管理主要對用戶和存儲服務器提供的元數據進行組織和管理,如用戶名,登錄時間,用戶備份的索引信息等。
[0080]存儲服務器主要完成數據存儲和組織。主要是接收客戶端傳送的指紋,進行指紋匹配完成去重功能并返回查找信息,接收并存儲數據塊密文和文件譜信息等。如圖1所示,存儲服務器完成了密鑰的存儲和管理。
[0081]客戶端主要完成備份和恢復申請,備份數據的分塊、求哈希、求指紋和數據塊加密解密等功能。如圖1所示,客戶端與存儲服務器之間的數據通信采用安全套接層協議(Secure Socket Layer/Transport Layer Security,簡稱 SSL/TLS)。
[0082]本發明適用于備份系統的安全數據去重方法包括:
[0083]一、備份階段,如圖2和圖4所示,其包括以下步驟:
[0084](I)接收用戶提交的備份請求,該備份請求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時間等;
[0085](2)對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊;在本實施方式中,分塊采用的是基于Rabin指紋的滑動窗口分塊算法;
[0086](3)使用哈希算法計算每個數據塊的哈希值F1 ;具體而言,本發明采用的是SHA-1算法計算哈希值,該哈希值用來作為數據塊的加密密鑰;
[0087](4)再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋來識別重復數據塊,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1),從而保護數據塊加密密鑰F1 ;具體而言,哈希算法采用的是SHA-1方法,經典加密算法采用的是高級加密標準(AdvancedEncryption Standard,簡稱AES)算法,用戶的私有密鑰是通過Lockbox機制進行保護;
[0088]本步驟的優點在于,經過兩次哈希計算,能快速地獲取數據塊指紋,加快了數據去重的速度。并且通過Lockbox機制有效地保護用戶的私有密鑰。
[0089](5)將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器;具體而言,在傳輸過程中采用安全套接層協議(Secure Socket Layer/Transport LayerSecurity,簡稱SSL/TLS),客戶端與服務器數據通信包含3種流類型:指紋流,數據流和校驗流。
[0090](6)在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表;
[0091](7)根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程;本步驟包括以下子步驟:
[0092](7-1)設置計數器i=l,判斷i是否大于nChunkNum。如果是則轉入步驟(8),否則轉入步驟(7-2);
[0093](7-2)對需要備份的文件的指紋段中的內容進行解析,以得到第i個數據塊的數據塊指紋F2、數據哈希值F1的密文E (F1)、數據塊長度等信息;
[0094](7-3)在存儲服務器的指紋庫中判斷是否可查找到數據塊指紋F2,如果可查找到,則表明第i個數據塊為重復塊,以指紋F2為索引條件直接指向已存在的數據塊;反之,則表明第i個數據塊是新數據塊,根據指紋F2為索引條件設置該新數據塊在存儲服務器中的存儲位置;具體而言,本發明中提到的索引用于數據塊的存儲和查找。
[0095](7-4)設置計數器i=i+l,建立新結點,將第i個數據塊是否重復的信息寫入該結點,并將單鏈表的尾指針指向該結點,并且尾指針后移一位,然后返回步驟(7-1);
[0096](8)在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉步驟(12),否則轉步驟(9);
[0097](9)對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮(GNUzip,簡稱gzip),并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊;具體而言,數據塊哈希值F1作為加密密鑰需要采用基于口令加密(Passwordbased encryption,簡稱PBE)的加密策略對安全性進行處理,并對密鑰長度進行調整。
[0098]本步驟的優點在于,所有的加密解密過程全部在客戶端執行,由此,能夠有效地減輕備份服務器和存儲服務器的負擔。并且只對新的數據塊加密,減少了重復加密的負擔。
[0099](10)將加密后的密文數據塊和數據塊哈希值F1的密文E (F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ;具體而言,在傳輸過程中采用安全套接層協議(Secure Socket Layer/Transport Layer Security,簡稱 SSL/TLS)。
[0100]本步驟的優點在于數據和密鑰在傳輸和存儲過程中都以密文的形式存在,確保即使敵手獲取了傳輸內容也無法獲取加密密鑰和數據塊明文,傳輸過程中通信雙方需要身份驗證,有效保障了數據和密鑰的傳輸和存儲安全性,降低了數據丟失和被篡改的概率。
[0101](11)根據步驟(7-3)中指紋F2設置的第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回步驟(8);
[0102](12)將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E (F1)寫入到存儲服務器的文件譜中;具體而言,文件譜是用于數據恢復時的文件。
[0103](13)釋放內存中單鏈表的數據結構,備份過程結束;
[0104]二、恢復階段,如圖3和圖5所示,其包括以下步驟:
[0105](14)接收用戶提交的恢復請求;具體而言,該恢復請求包括恢復文件對象、恢復文件名、以及恢復路徑等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。
[0106](15)從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端;
[0107](16)通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值F1以單鏈表結構保存在內存中;
[0108](17)對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值;
[0109](18)根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端;具體而言,根據數據塊指紋F2讀取恢復文件對應的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數據塊對應的容器的ID,讀出容器中相應的密文數據塊,并將密文數據塊和數據塊個數nChunkNum以數據流的形式傳輸回客戶端,并發送校驗流到客戶端,本發明傳輸過程采用安全套接層協議(Secure Socket Layer/Transport Layer Security,簡稱SSL/TLS),相似性容器設置于存儲服務器,用于快速查找數據塊;
[0110](19)對接收到的數據塊進行解密和解壓縮處理,并寫入文件;本步驟具體包括以下子步驟:
[0111](19-1)設置計數器k=0,判斷k是否大于nChunkNum,如果是轉步驟(20),否則轉步驟(19-2)
[0112](19-2)根據文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創建新文件;
[0113](19-3)調用在內存中保存的數據塊哈希值F1,以數據塊哈希值F1為數據塊解密密鑰對第k個數據塊進行解密,采用文件壓縮算法壓縮(GNUz ip,簡稱gz ip),并將該明文數據塊內容寫入到文件中,置k=k+l,轉步驟(19-1);具體而言,數據塊哈希值F1作為加密密鑰需要采用基于口令加密(Password Based Encryption,簡稱PBE)的加密策略對安全性進行處理,并對密鑰長度進行調整。
[0114](20)釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
[0115]本發明適用于備份系統的安全數據去重系統,是應用在一種備份系統中,該備份系統包括客戶端、備份服務器和存儲服務器,該安全數據去重系統包括:
[0116]第一模塊,其設置于備份服務器中,用于接收用戶提交的備份請求;
[0117]第二模塊,其設置于客戶端中,用于對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊;
[0118]第三模塊,其設置于客戶端中,用于使用哈希算法計算每個數據塊的哈希值F1來作為數據塊的加密密鑰;
[0119]第四模塊,其設置于客戶端中,用于再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E(F0,從而保護數據塊加密密鑰F1 ;
[0120]第五模塊,其設置于客戶端中,用于將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器;
[0121]第六模塊,其設置于存儲服務器中,用于在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表;
[0122]第七模塊,其設置于存儲服務器中,用于根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程;
[0123]第八模塊,其設置于存儲服務器中,用于在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉第十二模塊,否則轉第九模塊;
[0124]第九模塊,其設置于存儲服務器中,用于對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮,并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊;
[0125]第十模塊,其設置于客戶端中,用于將加密后的密文數據塊和數據塊哈希值F1的密文E (F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ;
[0126]第十一模塊,其設置于存儲服務器中,用于根據第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回第八模塊;
[0127]第十二模塊,其設置于存儲服務器中,用于將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E (F1)寫入到存儲服務器的文件譜中;
[0128]第十三模塊,其設置于存儲服務器中,用于釋放內存中單鏈表的數據結構,備份過程結束;
[0129]第十四模塊,其設置于備份服務器中,用于接收用戶提交的恢復請求;具體而言,該等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。
[0130]第十五模塊,其設置于存儲服務器中,用于從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值Fl的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端;
[0131]第十六模塊,其設置于客戶端中,用于通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值F1以單鏈表結構保存在內存中;
[0132]第十七模塊,其設置于客戶端中,用于對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值;
[0133]第十八模塊,其設置于存儲服務器中,用于根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端;
[0134]第十九模塊,其設置于客戶端中,用于對接收到的數據塊進行解密和解壓縮處理,并與入文件;
[0135]第二十模塊,其設置于客戶端中,用于釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
[0136]本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種適用于備份系統的安全數據去重方法,其特征在于,包括: 一、備份階段,其包括以下步驟: (1)接收用戶提交的備份請求; (2)對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊; (3)使用哈希算法計算每個數據塊的哈希值F1來作為數據塊加密密鑰。 (4)再次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋來識別重復數據塊,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1),從而保護數據塊加密密鑰F1 ; (5)將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器; (6)在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表; (7)根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程; (8)在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉步驟(12),否則轉步驟(9); (9)對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮,并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊; (10)將加密后的密文數據塊和數據塊哈希值F1的密文E(F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ; (11)根據第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回步驟(8); (12)將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E(F1)寫入到存儲服務器的文件譜中; (13)釋放內存中單鏈表的數據結構,備份過程結束; 二、恢復階段,其包括以下步驟: (14)接收用戶提交的恢復請求;具體而言,該等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。 (15)從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端; (16)通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值F1以單鏈表結構保存在內存中; (17)對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值; (18)根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端; (19)對接收到的數據塊進行解密和解壓縮處理,并寫入文件; (20)釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
2.根據權利要求1所述的安全數據去重方法,其特征在于,備份請求包括需要備份的文件名、文件的路徑、文件的大小、文件的備份時間,恢復請求包括恢復文件對象、恢復文件名、恢復路徑。
3.根據權利要求1所述的安全數據去重方法,其特征在于, 哈希算法采用的是SHA-1方法; 經典加密算法采用的是AES算法; 用戶的私有密鑰是通過Lockbox機制進行保護。
4.根據權利要求1所述的安全數據去重方法,其特征在于,步驟(7)包括以下子步驟: (7-1)設置計數器i=l,判斷i是否大于nChunkNum。如果是則轉入步驟(8),否則轉入步驟(7-2); (7-2)對需要備份的文件的指紋段中的內容進行解析,以得到第i個數據塊的數據塊指紋F2、數據塊長度等信息; (7-3)在存儲服務器的指紋庫中判斷是否可查找到數據塊指紋F2,如果可查找到,則表明第i個數據塊為重復塊,以指紋F2為索引條件直接指向已存在的數據塊;反之,則表明第i個數據塊是新數據塊,根據指紋F2為索引條件設置該新數據塊在存儲服務器中的存儲位置 (7-4)設置計數器i=i+l,建立新結點,將第i個數據塊是否重復的信息寫入該結點,并將單鏈表的尾指針指向該結點,并且尾指針后移一位,然后返回步驟(7-1)。
5.根據權利要求1所述的安全數據去重方法,其特征在于,步驟(9)中數據塊哈希值F1作為加密密鑰采用PBE的加密策略對安全性進行處理,并對密鑰長度進行調整。
6.根據權利要求1所述的安全數據去重方法,其特征在于,步驟(18)具體為,根據數據塊指紋F2讀取恢復文件對應的相似性容器,遍歷文件譜中的指紋鏈表,以找到所有數據塊對應的容器的ID,讀出容器中相應的密文數據塊,并將密文數據塊和數據塊個數nChunkNum以數據流的形式傳輸回客戶端,并發送校驗流到客戶端。
7.根據權利要求1所述的安全數據去重方法,其特征在于,步驟(19)包括以下子步驟: (19-1)設置計數器k=0,判斷k是否大于nChunkNum,如果是轉步驟(20),否則轉步驟(19-2); (19-2)根據文件譜中包含的文件名、文件路徑等信息找到本地磁盤位置創建新文件;(19-3)調用在內存中保存的數據塊哈希值F1,以數據塊哈希值F1為數據塊解密密鑰對第k個數據塊進行解密,采用文件壓縮算法壓縮(GNUzip,簡稱gzip),并將該明文數據塊內容寫入到文件中,置k=k+l,轉步驟(19-1 )。
8.一種適用于備份系統的安全數據去重系統,其特征在于,包括: 第一模塊,用于接收用戶提交的備份請求; 第二模塊,用于對需要備份的每個文件進行分塊,以得到多個不同大小的數據塊; 第三模塊,用于使用哈希算法計算每個數據塊的哈希值F1 ; 第四模塊,用于再 次使用哈希算法計算每個數據塊哈希值F1的哈希值F2,并將哈希值F2作為該數據塊的指紋,并采用經典加密算法使用用戶的私鑰對數據塊的哈希值F1進行加密以得到數據哈希值F1的密文E (F1);第五模塊,用于將文件的數據塊個數nChunkNum,所有數據塊指紋F2等打包成指紋段并記錄,順序將所有指紋段以指紋流的形式發送傳輸到存儲服務器,并發送校驗流到存儲服務器; 第六模塊,用于在存儲服務器的內存中建立用于記錄該文件的數據塊是否重復的單鏈表; 第七模塊,用于根據指紋段和文件數據塊個數nChunkNum在存儲服務器端進行數據去重的操作過程; 第八模塊,用于在客戶端準備備份非重復的數據塊,設置計數器j=l,并判斷j是否大于nChunkNum,如果是則轉第十二模塊,否則轉第九模塊; 第九模塊,用于對于第j個數據塊,如果其是重復的數據塊,則不予發送;如果其是新的數據塊,采用文件壓縮算法壓縮,并以數據塊哈希值F1作為第j個數據塊的數據塊加密密鑰,并使用該數據塊加密密鑰和經典加密算法對第j個數據塊加密,得到的密文數據塊; 第十模塊,用于將加密后的密文數據塊和數據塊哈希值F1的密文E (F1)以數據流的形式發送至存儲服務器,并發送校驗流到存儲服務器,設置j=j+l ; 第十一模塊,用于根據第j個數據塊在存儲服務器中的存儲位置,保存數據塊密文,然后返回第八模塊; 第十二模塊,用于將該單鏈表發送回客戶端,并將所有數據塊的數據哈希值F1的密文E(F1)寫入到存儲服務器的文件譜中;` 第十三模塊,用于釋放內存中單鏈表的數據結構,備份過程結束; 第十四模塊,用于接收用戶提交的恢復請求;具體而言,該等信息,由備份服務器根據文件這些信息等查找到該文件指定的存儲服務器。 第十五模塊,用于從存儲服務器中查找該恢復文件對應的文件譜,將文件譜中的所有內容包括所有數據塊哈希值F1的密文E (F1)、文件名、文件路徑等信息讀出,并以指紋流的形式發送回客戶端; 第十六模塊,用于通過使用LockBox機制取出用戶的私有密鑰,并對接收到的數據塊哈希值F1的密文(E (F1))使用用戶的私有密鑰進行解密,并將解密得到的數據塊哈希值F1以單鏈表結構保存在內存中; 第十七模塊,用于對數據塊哈希值F1使用備份過程中相同的哈希算法再次求取哈希值,以得到數據塊指紋F2,并將其發送回存儲服務器;具體而言,本發明采用的是SHA-1算法計算哈希值; 第十八模塊,用于根據數據塊指紋F2找到數據塊,并將數據塊發送回客戶端; 第十九模塊,用于對接收到的數據塊進行解密和解壓縮處理,并寫入文件; 第二十模塊,用于釋放內存中保存的數據塊哈希值F1的單鏈表數據結構,恢復過程結束。
【文檔編號】H04L9/32GK103530201SQ201310301670
【公開日】2014年1月22日 申請日期:2013年7月17日 優先權日:2013年7月17日
【發明者】馮丹, 周玉坤, 夏文, 付忞, 黃方亭 申請人:華中科技大學