一種基于糾刪碼的數(shù)據(jù)安全刪除方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于糾刪碼的數(shù)據(jù)安全刪除方法,包括:將源數(shù)據(jù)均分為k個相同大小的數(shù)據(jù)塊,標識為D0、D1、…、Dk-1,選擇一個隨機數(shù)或偽隨機數(shù)nonce,使用密鑰Key對其進行加密,以得到一個與數(shù)據(jù)塊D0相同大小的塊,利用得到的塊對D0、D1、…、Dk-1進行按位異或,以得到新的數(shù)據(jù)塊C0、C1、…、Ck-1,將隨機數(shù)或偽隨機數(shù)nonce均分為k份,并將其分別附加到數(shù)據(jù)塊C0、C1、…、Ck-1末尾,以得到數(shù)據(jù)塊C0’、C1’、…、Ck-1’,采用系統(tǒng)糾刪碼算法對k個數(shù)據(jù)塊C0’、C1’、…、Ck-1’進行編碼計算,以得到r個校驗塊P0、P1、…、Pr-1。本發(fā)明能夠解決現(xiàn)有方法中由于重復覆蓋寫引起的高寫開銷和對磁盤造成的損傷,以及采用數(shù)據(jù)副本方式以增強數(shù)據(jù)可用性時增加覆蓋寫開銷的技術問題。
【專利說明】一種基于糾刪碼的數(shù)據(jù)安全刪除方法和系統(tǒng)
【技術領域】
[0001]本發(fā)明屬于數(shù)據(jù)存儲領域,更具體地,涉及一種基于糾刪碼的數(shù)據(jù)安全刪除方法和系統(tǒng)。
【背景技術】
[0002]由于磁盤的存儲空間有限,為了存儲新數(shù)據(jù),需要將無用的數(shù)據(jù)刪除。但是,用戶刪除數(shù)據(jù)時其實并沒有真正的將數(shù)據(jù)從磁盤上刪除,只是將文件的索引刪除而已,此類刪除的數(shù)據(jù)容易被恢復。如果所刪除數(shù)據(jù)是機密數(shù)據(jù),那么這種刪除方法就無法保障數(shù)據(jù)的安全性,因此進行數(shù)據(jù)安全刪除是必要的。數(shù)據(jù)安全刪除通常利用覆蓋原理來實現(xiàn)的一一使用預先定義的格式(如無意義、無規(guī)律的信息)去覆蓋磁盤上原先存儲的數(shù)據(jù)。由于硬盤上的數(shù)據(jù)都是以二進制的“ 1 ”和“0”形式存儲的,進行覆蓋后也就無法知道原本的數(shù)據(jù)是“ 1 ”還是“0” 了。鑒于磁記錄介質的磁化翻轉工作原理,只成功覆蓋一次是無法確保數(shù)據(jù)是不可恢復的,要達到較高的安全性,必須將全部要刪除的數(shù)據(jù)成功地覆蓋多次,重復的覆蓋寫不僅會引起很大的寫開銷,而且也將對磁盤造成一定的損傷。此外,由于數(shù)據(jù)蘊含重要經(jīng)濟價值,除了數(shù)據(jù)機密性外,還需要保障其可用性,通常采用數(shù)據(jù)副本方式來增強可用性,然而,在三副本情況下,由于存儲開銷變?yōu)橹暗娜?,上述?shù)據(jù)安全刪除方案所需覆蓋寫開銷也相應會翻三倍。
【發(fā)明內(nèi)容】
[0003]針對現(xiàn)有技術的以上缺陷或改進需求,本發(fā)明提供了一種基于糾刪碼的數(shù)據(jù)安全刪除方法,其目的在于,解決現(xiàn)有方法中存在的由于重復覆蓋寫引起的高寫開銷和對磁盤造成的一定損傷,以及采用數(shù)據(jù)副本方式以增強數(shù)據(jù)可用性時進一步增加覆蓋寫開銷的技術問題。
[0004]為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于糾刪碼的數(shù)據(jù)安全刪除方法,包括以下步驟:
[0005](1)將源數(shù)據(jù)均分為匕個相同大小的數(shù)據(jù)塊,標識為隊為、…、,其中匕為大于1的正整數(shù);
[0006](2)選擇一個隨機數(shù)或偽隨機數(shù)1101106,使用密鑰1(67對其進行加密,以得到一個與數(shù)據(jù)塊0。相同大小的塊;
[0007](3)利用步驟⑵得到的塊對隊為、…、行按位異或,以得到新的數(shù)據(jù)塊(^。、。…、“
[0008](4)將隨機數(shù)或偽隨機數(shù)11011⑶均分為&份,并將其分別附加到數(shù)據(jù)塊0^1、…、 末尾,以得到數(shù)據(jù)塊0。’、¢:/、…、;
[0009](5)采用系統(tǒng)糾刪碼算法對乂個數(shù)據(jù)塊0/、(:/、…、進行編碼計算,以得到I'個校驗塊?。、?丨、…、已-丨,其中I'為大于0的正整數(shù),系統(tǒng)糾刪碼算法采用066(1-3010111011編碼;
[0010](6)將步驟⑷得到的&個數(shù)據(jù)塊0/4’、…、和I'個校驗塊?。、?:、^分別存儲在磁盤的匕!"個存儲節(jié)點上;
[0011](7)在刪除數(shù)據(jù)時,從&+1'個存儲節(jié)點中選擇任意1+1個節(jié)點,刪除&+1'個塊10。’、0/,…、0^’、?。、?:、…、?』中與!'+1個節(jié)點對應的任意!'+1個塊。
[0012]按照本發(fā)明的另一方面,提供了一種基于糾刪碼的數(shù)據(jù)安全刪除系統(tǒng),包括:
[0013]第一模塊,用于將源數(shù)據(jù)均分為匕個相同大小的數(shù)據(jù)塊,標識為0?!弧薄?、,其中匕為大于1的正整數(shù);
[0014]第二模塊,用于選擇一個隨機數(shù)或偽隨機數(shù)!
以得到一個與數(shù)據(jù)塊0。相同大小的塊;
[0015]第三模塊,用于利用第二模塊得到的塊對0。、!^、…、行按位異或,以得到新的數(shù)據(jù)塊(^、(^、…、0^;
[0016]第四模塊,用于將隨機數(shù)或偽隨機數(shù)!10?。、蔷譃?amp;份,并將其分別附加到數(shù)據(jù)塊“、…、(^末尾,以得到數(shù)據(jù)塊0?!?、(:/、…、、’;
[0017]第五模塊,用于采用系統(tǒng)糾刪碼算法對匕個數(shù)據(jù)塊0/4’、…、進行編碼計算,以得到I個校驗塊?。、?”…、?~,其中I為大于0的正整數(shù);
[0018]第六模塊,用于將第四模塊得到的&個數(shù)據(jù)塊0/ 乂’、…、和『個校驗塊?。、IV…、分別存儲在磁盤的匕!"個存儲節(jié)點上;
[0019]第七模塊,用于在刪除數(shù)據(jù)時,從匕1~個存儲節(jié)點中選擇任意1+1個節(jié)點,刪除個塊100,、。,、…、0^’、?。、??!??』中與!'+1個節(jié)點對應的任意!'+1個塊。
[0020]總體而言,通過本發(fā)明所構思的以上技術方案與現(xiàn)有技術相比,能夠取得下列有益效果:
[0021]1、本發(fā)明解決了現(xiàn)有方法中存在的高覆蓋寫開銷的問題,由于采用了系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼以保障數(shù)據(jù)的可用性,如步驟(5),與數(shù)據(jù)副本方式相比,有效減小了數(shù)據(jù)的存儲開銷,從而減少了刪除數(shù)據(jù)時的覆蓋寫開銷,另一方面,利用糾刪碼的特性,數(shù)據(jù)的安全刪除不再需要對整個數(shù)據(jù)進行覆蓋,只需徹底刪除部分數(shù)據(jù)塊,如步驟(7),有效地減小了覆蓋的數(shù)據(jù)量,進一步減少了覆蓋寫開銷,同時也降低了頻繁寫磁盤對磁盤造成的損傷;
[0022]2、本發(fā)明解決了現(xiàn)有方法中為保障數(shù)據(jù)可用性引起的高存儲開銷的問題,步驟(5)中采用系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼,當存儲節(jié)點發(fā)生故障時,根據(jù)糾刪碼的特性,只要磁盤中還存在足夠量的編碼塊,便可恢復原始數(shù)據(jù),與數(shù)據(jù)副本的方式相比,有效減小了存儲開銷,同時保證了數(shù)據(jù)的高可用性;
[0023]3、本發(fā)明保障了數(shù)據(jù)的高安全性,步驟⑶和步驟⑷中對原始數(shù)據(jù)進行運算和拼接,以及步驟(5)中采用系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼,刪除部分編碼塊,就能保證數(shù)據(jù)是無法被恢復的,還能防止數(shù)據(jù)被竊密。又由于采用了步驟(2),即使在密鑰匕7被竊取的情況下,也能保證數(shù)據(jù)的安全性;
[0024]4、在本發(fā)明中,對數(shù)據(jù)進行讀丨寫時所需的開銷較低,對原始數(shù)據(jù)塊正常讀寫時,只需要進行基本的異或運算,即使需要讀寫的原始數(shù)據(jù)塊為失效狀態(tài)時,除了基本的異或運算之外,只需要采用系統(tǒng)糾刪碼對未失效的編碼塊進行解碼。
【專利附圖】
【附圖說明】
[0025]圖1為系統(tǒng)碼的編碼過程。
[0026]圖2為本發(fā)明基于糾刪碼的數(shù)據(jù)安全刪除方法的流程圖。
[0027]圖3為本發(fā)明基于糾刪碼的數(shù)據(jù)安全刪除方法的示意圖。
[0028]圖4為存儲節(jié)點中信息塊的分布示意圖。
【具體實施方式】
[0029]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
[0030]以下首先就本發(fā)明的技術術語進行解釋和說明:
[0031]加密、解密:把直接的文字或可直接理解的信息按某種算法進行處理,使其成為不可直接理解的信息,從而保護我們的信息,這過程就叫加密,該過程的逆過程為解密;
[0032]密鑰:一種參數(shù),是在加密或者解密過程中輸入的數(shù)據(jù)。
[0033]按位異或:異或是一個數(shù)學運算符,數(shù)學符號為“0”,計算機符號為“乂01?”,其運算法則相當于不帶進位的二進制加法,二進制下用1表示真,0表示假,異或的運算法則為:0 0 0 = 0,100=1,001 = 1,101 = 0(同為0,異為1)。按位異或則是兩個二進制數(shù)對應的二進位異或,舉實例說明:若X是二進制數(shù)0101,7是二進制數(shù)1011,則X 0 7 =11100
[0034]系統(tǒng)糾刪碼算法:把原始數(shù)據(jù)分為&個數(shù)據(jù)塊并進行編碼,得到=(010個數(shù)據(jù)塊的數(shù)據(jù),若擁有任意&個數(shù)據(jù)塊,則運用適當?shù)淖g碼方法就可恢復原始數(shù)據(jù),稱這種碼為01,10糾刪碼。當II個數(shù)據(jù)塊中前&個數(shù)據(jù)塊與原始數(shù)據(jù)塊相同時,糾刪碼可稱為系統(tǒng)糾刪碼,簡稱為系統(tǒng)碼。圖1為系統(tǒng)碼運用矩陣進行的編碼過程,其中分布矩陣的前亍可形成單位矩陣,0/4/、…、¢:,-/為源數(shù)據(jù)均分得到的&個數(shù)據(jù)塊,把&個數(shù)據(jù)塊組成有匕個元素的列向量I利用% = ?得到有個元素的列向量?,?的前&個元素可組成0,后V = 11)個元素對應為I'個校驗塊?。、?丨、…、卩廣廣
[0035]圖2為基于糾刪碼的數(shù)據(jù)安全刪除方法的流程圖,如圖2所示,包括以下步驟:
[0036](1)將源數(shù)據(jù)均分為&個相同大小的數(shù)據(jù)塊,標識為0。、!^、…、,其中&為大于1的正整數(shù)。例如,如圖3所示,0。、0^ 02、03為原始數(shù)據(jù)被均分得到的4個相同大小數(shù)據(jù)塊;
[0037](2)選擇一個隨機數(shù)或偽隨機數(shù)1101106,使用密鑰1(67對其進行加密,以得到一個與數(shù)據(jù)塊0。相同大小的塊。例如,如圖3所示,使用密鑰1(67對1101^6進行加密,得到一個與數(shù)據(jù)塊0。相同大小的塊;
[0038](3)利用步驟⑵得到的塊對隊為、…、行按位異或,以得到新的數(shù)據(jù)塊(^。、
1、…、0^0例如,如圖3所示,步驟⑵得到的塊對0。、0^ 02、03進行按位異或,得到(^。、
[0039](4)將隨機數(shù)或偽隨機數(shù)11011⑶均分為&份,并將其分別附加到數(shù)據(jù)塊0^1、…、0^末尾,以得到數(shù)據(jù)塊〇?!?、¢:/、…、0,-/0例如,如圖3所示,將1101106分為4份,在此標識為已、6、。、山將已、6、。、(1分別添加到0。、0^02? 4的末尾,得到0?!?/, 02\03?;
[0040](5)采用系統(tǒng)糾刪碼算法對乂個數(shù)據(jù)塊0/ ,0/,…、進行編碼計算,以得到I'個校驗塊?。、已、…、,其中I為大于0的正整數(shù)。例如,如圖3所示,對、02’、〇3’進行系統(tǒng)碼計算,得到校驗塊,在圖3中,只生成2個校驗塊?。、?工。另外,具體而言,本發(fā)明中系統(tǒng)糾刪碼算法可米用066(1-3010111011編碼;
[0041](6)將步驟⑷得到的&個數(shù)據(jù)塊0/4’、…、和I'個校驗塊?。、?:、^分別存儲在磁盤的個存儲節(jié)點上。如圖4所示,其中0/乂’、’為&個數(shù)據(jù)塊,
…、匕-工為I個檢驗塊,這匕!'個編碼塊存儲在磁盤的&+1'個存儲節(jié)點上;
[0042](7)在刪除數(shù)據(jù)時,從&+1'個存儲節(jié)點中選擇任意1+1個節(jié)點,刪除&+1'個塊10?!?、0/,…、0^’、?。、?”中與1+1個節(jié)點對應的任意1+1個塊。例如,如圖3所示,刪除6個編碼塊10?!?、(:/、02’、、?。、?」中的3個塊,這3個塊為03、?0、?10
[0043]當完成數(shù)據(jù)刪除操作時,幸存塊個數(shù)為卜1。根據(jù)糾刪碼的編碼特性,1^-1個塊不足以恢復出編碼前的&個數(shù)據(jù)塊0/、(^’、…、,這意味著無法獲得正確的110%6,那么即使密鑰1(67被竊取,也無法解密得到原始數(shù)據(jù)塊0。、IV…、IV”由此達到了數(shù)據(jù)安全刪除的目的。例如,如圖3所示,刪除塊03、?。、?工后,幸存塊的個數(shù)為3,根據(jù)糾刪碼的特性,
3個編碼塊無法恢復出數(shù)據(jù)塊0/、(:/、(:/、(:/,那么也就無法解密得到原始數(shù)據(jù)0。、0” 02、03,此夕卜,由于無法獲得正確的11011(36,即使1(67被竊取,也無法解密出
[0044]本發(fā)明還公開了一種基于糾刪碼的數(shù)據(jù)安全刪除系統(tǒng),包括:
[0045]第一模塊,用于將源數(shù)據(jù)均分為匕個相同大小的數(shù)據(jù)塊,標識為0?!弧薄?,其中匕為大于1的正整數(shù);
[0046]第二模塊,用于選擇一個隨機數(shù)或偽隨機數(shù)!
以得到一個與數(shù)據(jù)塊0。相同大小的塊;
[0047]第三模塊,用于利用第二模塊得到的塊對0。、!^、…、行按位異或,以得到新的數(shù)據(jù)塊(^、(^、…、0^;
[0048]第四模塊,用于將隨機數(shù)或偽隨機數(shù)!10?。、蔷譃?amp;份,并將其分別附加到數(shù)據(jù)塊“、…、(^末尾,以得到數(shù)據(jù)塊0。’、(:/、…、、’;
[0049]第五模塊,用于采用系統(tǒng)糾刪碼算法對匕個數(shù)據(jù)塊0/4’、…、進行編碼計算,以得到I個校驗塊?。、?”…、?~,其中I為大于0的正整數(shù);
[0050]第六模塊,用于將第四模塊得到的&個數(shù)據(jù)塊0/ 乂’、…、和『個校驗塊?。、IV…、分別存儲在磁盤的匕!"個存儲節(jié)點上;
[0051〕 第七模塊,用于在刪除數(shù)據(jù)時,從匕1~個存儲節(jié)點中選擇任意1^+1個節(jié)點,刪除個塊100,、。,、…、0^’、?。、?。…、?』中與!'+1個節(jié)點對應的任意!'+1個塊。
[0052]總而言之,本發(fā)明具有以下優(yōu)點:
[0053]1、本發(fā)明解決了現(xiàn)有方法中存在的高覆蓋寫開銷的問題,由于采用了系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼以保障數(shù)據(jù)的可用性,如步驟(5),與數(shù)據(jù)副本方式相比,有效減小了數(shù)據(jù)的存儲開銷,從而減少了刪除數(shù)據(jù)時的覆蓋寫開銷,另一方面,利用糾刪碼的特性,數(shù)據(jù)的安全刪除不再需要對整個數(shù)據(jù)進行覆蓋,只需徹底刪除部分數(shù)據(jù)塊,如步驟(7),有效地減小了覆蓋的數(shù)據(jù)量,進一步減少了覆蓋寫開銷,同時也降低了頻繁寫磁盤對磁盤造成的損傷;
[0054]2、本發(fā)明解決了現(xiàn)有方法中為保障數(shù)據(jù)可用性引起的高存儲開銷的問題,步驟
(5)中采用系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼,當存儲節(jié)點發(fā)生故障時,根據(jù)糾刪碼的特性,只要磁盤中還存在足夠量的編碼塊,便可恢復原始數(shù)據(jù),與數(shù)據(jù)副本的方式相比,有效減小了存儲開銷,同時保證了數(shù)據(jù)的高可用性;
[0055]3、本發(fā)明保障了數(shù)據(jù)的高安全性,步驟(3)和步驟(4)中對原始數(shù)據(jù)進行運算和拼接,以及步驟(5)中采用系統(tǒng)糾刪碼對數(shù)據(jù)塊進行編碼,刪除部分編碼塊,就能保證數(shù)據(jù)是無法被恢復的,還能防止數(shù)據(jù)被竊密。又由于采用了步驟(2),即使在密鑰匕7被竊取的情況下,也能保證數(shù)據(jù)的安全性;
[0056]4、在本發(fā)明中,對數(shù)據(jù)進行讀丨寫時所需的開銷較低,對原始數(shù)據(jù)塊正常讀寫時,只需要進行基本的異或運算,即使需要讀寫的原始數(shù)據(jù)塊為失效狀態(tài)時,除了基本的異或運算之外,只需要采用系統(tǒng)糾刪碼對未失效的編碼塊進行解碼。
[0057]本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【權利要求】
1.一種基于糾刪碼的數(shù)據(jù)安全刪除方法,其特征在于,包括以下步驟: (1)將源數(shù)據(jù)均分為k個相同大小的數(shù)據(jù)塊,標識為DpDp…、Dlri,其中k為大于I的正整數(shù); (2)選擇一個隨機數(shù)或偽隨機數(shù)nonce,使用密鑰Key對其進行加密,以得到一個與數(shù)據(jù)塊Dtl相同大小的塊; (3)利用步驟(2)得到的塊對%、D1,…、0,_1進行按位異或,以得到新的數(shù)據(jù)塊CrC1'...、Ck_1; (4)將隨機數(shù)或偽隨機數(shù)nonce均分為k份,并將其分別附加到數(shù)據(jù)塊Q、C1,…、Clrl末尾,以得到數(shù)據(jù)塊(V、C/、...、(;_/; (5)采用系統(tǒng)糾刪碼算法對k個數(shù)據(jù)塊(V、C/、…、Clri’進行編碼計算,以得到r個校驗塊Ρο'Ρρ…、Pu。其中,r為大于O的正整數(shù),其中系統(tǒng)糾刪碼算法采用Reed-Solomon編碼; (6)將步驟(4)得到的k個數(shù)據(jù)塊C。’、C/、...、(;_/和r個校驗塊P。、P1,…、Pr_^別存儲在磁盤的k+r個存儲節(jié)點上; (7)在刪除數(shù)據(jù)時,從k+r個存儲節(jié)點中選擇任意r+Ι個節(jié)點,刪除k+r個塊{C。’、C/、…、CkV、P。、Pp…、U中與r+Ι個節(jié)點對應的任意r+Ι個塊。
2.一種基于糾刪碼的數(shù)據(jù)安全刪除系統(tǒng),其特征在于,包括: 第一模塊,用于將源數(shù)據(jù)均分為k個相同大小的數(shù)據(jù)塊,標識為DpDp…、Dlri,其中k為大于I的正整數(shù); 第二模塊,用于選擇一個隨機數(shù)或偽隨機數(shù)nonce,使用密鑰Key對其進行加密,以得到一個與數(shù)據(jù)塊Dtl相同大小的塊; 第三模塊,用于利用第二模塊得到的塊對DrDp…、0,_1進行按位異或,以得到新的數(shù)據(jù)塊 C。、Q、…、Ck_1; 第四模塊,用于將隨機數(shù)或偽隨機數(shù)nonce均分為k份,并將其分別附加到數(shù)據(jù)塊Q、C1,…、Clri末尾,以得到數(shù)據(jù)塊C。’、C/、…、Ck-/; 第五模塊,用于采用系統(tǒng)糾刪碼算法對k個數(shù)據(jù)塊(V、c/、…、CkV進行編碼計算,以得到r個校驗塊Pc^ Pp…、Prt,其中r為大于O的正整數(shù); 第六模塊,用于將第四模塊得到的k個數(shù)據(jù)塊Q/、C/、...、(;_/和r個校驗塊匕、Po…、Prt分別存儲在磁盤的k+r個存儲節(jié)點上; 第七模塊,用于在刪除數(shù)據(jù)時,從k+r個存儲節(jié)點中選擇任意r+Ι個節(jié)點,刪除k+r個ik {C0\C1\…、Clri’、P。、Pp -,PrtI中與r+Ι個節(jié)點對應的任意r+Ι個塊。
【文檔編號】G06F3/06GK104484126SQ201410640456
【公開日】2015年4月1日 申請日期:2014年11月13日 優(yōu)先權日:2014年11月13日
【發(fā)明者】黃建忠, 曹強, 謝長生, 王艷群, 蔡穎 申請人:華中科技大學