專利名稱:基于Reed-Solomon碼的P2P存儲系統(tǒng)編碼方法
技術(shù)領(lǐng)域:
本發(fā)明屬于點對點網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種適用于點對點存儲系統(tǒng)中的數(shù)據(jù)編碼 方法,能夠保證高的數(shù)據(jù)安全性和可靠性,同時又有較小的計算開銷。
背景技術(shù):
點對點(P2P)存儲系統(tǒng)是一種基于點對點網(wǎng)絡(luò)的分布式文件存儲系統(tǒng),用戶通過網(wǎng)絡(luò) 把數(shù)據(jù)存儲到其他的用戶節(jié)點上,而非本地硬盤上。每個節(jié)點的地位是對等的, 一個節(jié)點 既是使用系統(tǒng)存取文件的客戶,同時也是系統(tǒng)中提供存儲空間資源的服務(wù)器。從而通過收 集利用用戶閑散資源,構(gòu)建大規(guī)模的存儲系統(tǒng)。最近幾年,國際上不斷出現(xiàn)許多點對點存 儲系統(tǒng),如
[CFS] [PAST] [FAESITE]等。
在P2P存儲系統(tǒng)中,用戶的數(shù)據(jù)是存儲在其他不可信的用戶磁盤上,并且系統(tǒng)中的用 戶可能隨時離開系統(tǒng)。這對于在P2P存儲系統(tǒng)中,如何保證用戶的數(shù)據(jù)安全性和可靠性帶 來了極大的挑戰(zhàn)。
為了解決上面的問題,現(xiàn)有的系統(tǒng)
[CFS] [PAST] [FAESITE]主要采用以 下方法先采用傳統(tǒng)的加密算法(DES、 AES)來對用戶的數(shù)據(jù)加密,從而保證用戶數(shù)據(jù)的私 密性;然后,再對加密后的數(shù)據(jù)采用副本或者糾刪碼(Erasure Code)的方式做冗余。然而, 這種方法在P2P存儲系統(tǒng)中是有很大缺陷的。P2P存儲系統(tǒng)與傳統(tǒng)的客戶/服務(wù)器存儲系 統(tǒng)不同的是用戶的數(shù)據(jù)存儲在其他用戶的機器上,而不是存儲在有集中管理的服務(wù)器上。 因此,現(xiàn)有的P2P存儲系統(tǒng)單靠數(shù)據(jù)加密來保證用戶數(shù)據(jù)的安全性會帶來下面兩個問題
(1)由于數(shù)據(jù)是長期存儲在他人的機器上,如果密鑰丟失或者傳統(tǒng)的加密算法被發(fā)現(xiàn)存 在弱點,攻擊者就能夠通過存儲在他們機器上的數(shù)據(jù)發(fā)現(xiàn)其他用戶的私密數(shù)據(jù)。(2)即使 一個用戶發(fā)現(xiàn)自己的數(shù)據(jù)受到安全威脅(如泄露了密鑰或加密算法強度被發(fā)現(xiàn)不足),他也 無法完全刪除存儲在攻擊者機器上的數(shù)據(jù)來最小化自己的損失。那么, 一旦加密的數(shù)據(jù)存 儲在系統(tǒng)中,用戶在各種安全威脅下處于被動的地位。這些問題成為阻礙P2P存儲應(yīng)用的 巨大障礙。
Reed-Soloraon碼是一種冗余編碼,它先把一個文件切分成m個數(shù)據(jù)碎片,然后經(jīng)過算 法得到rXm個碎片,其中r是冗余度(r〉1)。在得到的rXm個碎片中,任意m個碎片都 可以用來恢復(fù)原來的文件。它的原理如下m個原始碎片可以被看作是一個向量,用D-W,Z)2,…,Q,)表示,Di表示第i個數(shù)據(jù)碎片。
編碼函數(shù)Enc把這m個碎片編碼成n(n=r Xm)個碎片,
£"c(Z)) = £, £ = (£p£2, ...,£,,).
Reed-Solomon碼的實現(xiàn)是通過構(gòu)造一個mXn的矩陣G,稱為生成矩陣,編碼函數(shù)可以 表示成矩陣乘法
解碼函數(shù)也可以描述成矩陣乘法,其中£'是編碼后的n個碎片組成的向量E中任意的m個 碎片組成的向量,矩陣D是生成矩陣G的一個mXm子矩陣,其包含G中f'所含信息塊編 號對應(yīng)的m個列。矩陣D的逆矩陣D—'稱為解密矩陣。解密過程可以表示為
= £'£)-'
在Reed-Solomon碼中矩陣G是固定的,G=(I」R(ni)x ) , 1 是一個mXm單位矩陣,R( —m) ^是(n-m)Xm的范德蒙或柯西矩陣。因此,任意用戶獲得m個碎片都可以解碼出源文件。 但在這種編碼方法中,由于沒有對原始碎片編碼,用戶可以看到存到本地機器上其他用戶 的原始碎片,因此這種編碼不保護用戶數(shù)據(jù)的私密性。
發(fā)明內(nèi)容
為了解決P2P存儲系統(tǒng)中的上述的問題,本發(fā)明提供了一種新穎的安全冗余編碼方案 SEC(Secure Erasure Code) 。 SEC具有的復(fù)合的多層加密強度,比傳統(tǒng)加密算法更好地保 障了數(shù)據(jù)的安全性,同時能夠?qū)?shù)據(jù)作冗余,保障數(shù)據(jù)可靠性。
本發(fā)明是一種基于Reed-Solomon碼的編碼方案,改進之處是通過用戶給定的密碼來 構(gòu)造矩陣G,使得在不知道用戶密碼的情況下,猜測矩陣G的復(fù)雜度近似于猜測用戶密碼的 復(fù)雜度,并利用點對點網(wǎng)絡(luò)的特點,通過碎片不相關(guān)命名分發(fā),使數(shù)據(jù)有高的安全性。
本發(fā)明是這樣實現(xiàn)的,包括以下步驟
加密過程,如圖1所示
為了把源數(shù)據(jù)從m個碎片編碼到n (n=rXm)個碎片,我們需要產(chǎn)生一個m行n列的一 個產(chǎn)生矩陣G。這個矩陣G必須滿足的性質(zhì)是它的不包含任意(m-1) X (m-1)的線性 相關(guān)子矩陣??挛骶仃囀菨M足這種矩陣的一種。構(gòu)造柯西矩陣只需要產(chǎn)生兩個向量X (m 個元素),Y (n個元素).并且向量中的元素兩兩不等。
1) 根據(jù)用戶輸入的密鑰key和用戶要求的冗余度r,產(chǎn)生加密矩陣G。
2) 通過矩陣G把原始數(shù)據(jù)編碼成rXm個加密數(shù)據(jù)碎片。
3)對碎片命名,使不同的碎片具有獨立的名字,分發(fā)到點對點存儲系統(tǒng)中,這樣做的 目的是減少碎片的聯(lián)系性,使惡意的用戶得到其他用戶的一個碎片后,很難在點對 點網(wǎng)絡(luò)中找到該用戶其他的相關(guān)碎片。
解密過程,如圖2所示
1) 當(dāng)用戶要想讀取自己的數(shù)據(jù),重新生成數(shù)據(jù)碎片的名字,根據(jù)碎片名從點對點存 儲系統(tǒng)收集m個碎片。
2) 根據(jù)密鑰key構(gòu)造出與加密矩陣對應(yīng)的解密矩陣D-',就可以解密得到原數(shù)據(jù)。 本發(fā)明的技術(shù)效果是
1) 本發(fā)明是一套針對P2P存儲系統(tǒng)的完整的編碼方案,它結(jié)合了P2P存儲系統(tǒng)的特征 和底層協(xié)議,能夠同時保證數(shù)據(jù)的安全性和可靠性,解決了現(xiàn)有技術(shù)方案在P2P存 儲系統(tǒng)應(yīng)用屮的不足,而一般意義上的Reed-Solomon碼只是一種冗余碼。
2) 為了保證數(shù)據(jù)的安全性,本發(fā)明使用用戶給定的密碼來隨機生成構(gòu)造矩陣G的方法, 實現(xiàn)了對數(shù)據(jù)的加密。 一般意義上的Reed-Solomon碼中矩陣G是固定的,不具有 加密的性質(zhì)。
3) 本發(fā)明結(jié)合了 P2P存儲系統(tǒng)底層的數(shù)據(jù)分發(fā)協(xié)議,對數(shù)據(jù)采用了不相關(guān)命名分發(fā), 隱藏了數(shù)據(jù)的關(guān)聯(lián)性,使攻擊者無法找出一個數(shù)據(jù)碎片的其他關(guān)聯(lián)數(shù)據(jù)碎片,從而 無法解密原數(shù)據(jù)。
圖1是加密數(shù)據(jù)過程的流程圖; 圖2是解密數(shù)據(jù)過程的流程圖; 圖3是構(gòu)造加密矩陣過程的流程圖4表示本發(fā)明的分布式安全評測結(jié)果,表示需要猜測的次數(shù)隨N、 m變化的圖,縱軸
為所需猜測次數(shù)10g2后的值;
圖5表示在用戶密鑰長度為128、 192、 256比特時,SEC和AES的速度比較結(jié)果。
具體實施例方式
以下結(jié)合附圖,通過具體實施例更詳細地描述本發(fā)明,但該實施例不應(yīng)理解為對本發(fā) 明的限制。
1.產(chǎn)生加密矩陣G
1)伽羅瓦域
為了避免運算后的結(jié)果超出計算機能夠表示的范圍,我們所有的運算都是定義在伽羅
瓦域上的,伽羅瓦域上的加、減、乘、除都是封閉的,一個有2'個元素的伽羅瓦域示為GF(2')。
2)柯西矩陣
為了能夠使冗余后的rXm個碎片中任意m個碎片就能夠解碼出原數(shù)據(jù),就必須要求矩 陣G的任意m行構(gòu)成的子矩陣線性無關(guān)??挛骶仃嚌M足這個性質(zhì),下面給出柯西矩陣定義:
",K,xJ和"'K,;U是伽羅瓦域GfY2。.上兩個元素集合,它們滿足下面幾條約束
<formula>formula see original document page 7</formula>
則矩陣
<formula>formula see original document page 7</formula>
稱為是伽羅瓦域GF(2L).上的柯西矩陣。 3)矩陣G的構(gòu)造
構(gòu)造矩陣G,根據(jù)柯西矩陣的定義,關(guān)鍵是構(gòu)造"乂,&}和",K,W序列。我們根據(jù)
用戶輸入的密鑰來構(gòu)造。這里,我們要求密鑰的長度lw;是m+n (這里n是最終得到的碎 片數(shù))的整數(shù)倍,也即<formula>formula see original document page 7</formula>這時,密鑰key就可以被切分成m+n個元素。 如圖3所示,加密矩陣G的構(gòu)造過程如下
A. 將密鑰key等分地切分成m+n個元素,每個元素是長為L的字符串,然后按二進 制轉(zhuǎn)換為十進制,把每個切分的字符轉(zhuǎn)換為域里的元素。例如b3,—個長為12 比特位的key: 100101001111切分成4個元素,則切分方法為100U00|000| 111。 得到的4個字符串元素為[100, 100, 000, 111],轉(zhuǎn)換為域里的元素為[4,4,0,7].
B. 切分后的m+n個元素可能有元素相等,為了滿足柯西矩陣的要求,我們把相等的 數(shù)隨機映射到域里其他的元素,隨機映射通過偽隨機算法實現(xiàn)。即當(dāng)切分后的序 列E[l,…,m+n]有元素相等時,把重復(fù)的元素作為種子,不斷隨機地產(chǎn)生域里的 數(shù)來替換重復(fù)的數(shù),直到?jīng)]有重復(fù)元素為止。算法的偽代碼描述如下-vector E一m+n elements; for i一lto(m+n)
if (there exits prior element E[j]) && (E[i] = = E[j])
setSeed (E[i]);
do
E[i]—Random(2L - 1); until no prior element equals E[i]; 例如步驟A中切分后得到的序列[4,4,0,7],有兩個元素都為4,則把4設(shè)為偽隨 機函數(shù)的種子,產(chǎn)生一個隨機數(shù),比如6,則域為[4, 6, 0, 7]。如果產(chǎn)生的隨機數(shù) 和序列中的某個元素相同,則繼續(xù)產(chǎn)生一個隨機數(shù),直到不等為止。 C.根據(jù)下面的柯西矩陣的構(gòu)造規(guī)則,來構(gòu)造加密矩陣G。
本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,本實施例中采用柯西矩陣是為了滿足線性不相關(guān)的條 件。因此,除柯西矩陣以外的其他能夠滿足線性不相關(guān)的矩陣,例如范德蒙矩陣也能夠?qū)?現(xiàn)本發(fā)明的目的。
2.數(shù)據(jù)片加密
數(shù)據(jù)的加密過程與一般意義上的Reed-Solomon碼加密過程相同,利用矩陣乘法把m 個數(shù)據(jù)片加密成rXm個加密數(shù)據(jù)片
<formula>formula see original document page 8</formula>
3.數(shù)據(jù)片命名
為了保證整個數(shù)據(jù)的安全和可靠性,我們把每個碎片都分別獨立存儲到一個用戶機器 上,這樣假如攻擊者獲得不到足夠的碎片,就不能看到原數(shù)據(jù)的任何信息。在點對點存儲
系統(tǒng)中,數(shù)據(jù)的存儲通常是根據(jù)文件名來存儲的。以下說明根據(jù)文件名存儲數(shù)據(jù)的過程
點對點存儲系統(tǒng)中,每一個節(jié)點都用一個唯一的編號(nodeld)來標(biāo)識。當(dāng)一個用戶存 儲文件時,首先通過單向散列函數(shù)(如MD5、 SHA1)對文件名作哈希,得到一個文件的鍵值, 不同的文件名會得到不同的鍵值。然后,把文件存儲到滿足節(jié)點編號nodeld等于鍵值的 節(jié)點上,即nodeld = Hash(file name)。如果沒有這樣的節(jié)點,就把文件存儲到節(jié)點編 號與鍵值相差最小的節(jié)點上。
那么為了不使攻擊者輕易獲得數(shù)據(jù),我們就必須為數(shù)據(jù)的不同碎片命名不同的名字, 并且名字間盡量不存在相關(guān)性,也就是說,攻擊者不會通過一個碎片的名字就輕易地猜出 其他碎片的名字。
我們使用單向散列函數(shù)H(如MD5或者SHA1)來隱藏原數(shù)據(jù)任意兩個碎片之間的聯(lián) 系。這里我們利用SHA1。此外,我們需要一個字符串V和一個密鑰k、.字符串V可以是 原數(shù)據(jù)的某些屬性,如原數(shù)據(jù)的路徑,"可以是產(chǎn)生加密矩陣的密鑰key,但為了安全性, 通常不建議用相同的密鑰,建議用戶指定的其他的命名密鑰。第i個碎片的文件名f,產(chǎn)生 的方法如下i=l, 2,…'n (ll是連接符):
每個碎片命名后存儲在一個獨立的點上。當(dāng)攻擊者獲得一個碎片后,由于他無法知道 用戶命名碎片時的字符串V和密鑰k、,他就無法猜到其他碎片的名字,因此無法知道該數(shù) 據(jù)的其他碎片存在哪個節(jié)點上,因此也就無法收集到足夠多的碎片來解密原數(shù)據(jù)。
4.數(shù)據(jù)片解密
1) 收集碎片
當(dāng)用戶希望從點對點存儲系統(tǒng)讀取數(shù)據(jù)時,首先根據(jù)自己命名數(shù)據(jù)時的字符串V和密 鑰fe,得到每個碎片的名字,并對碎片名字作哈希得到數(shù)據(jù)碎片的鍵值,然后根據(jù)鍵值找 到存放數(shù)據(jù)的節(jié)點,從而收集到至少m個碎片,E,,,^^..,^^
2) 根據(jù)碎片和密鑰key生成解密矩陣
用戶根據(jù)自己的密鑰key,構(gòu)造矩陣G,從而得到由......厶行組成的子矩陣D, D是
一個m行m列的方陣,并且根據(jù)柯西矩陣的性質(zhì),D也是一個柯西矩陣,因此我們可以直 接用以下公式求解可以矩陣的逆
<formula>formula see original document page 9</formula>
<formula>formula see original document page 10</formula>"-^',刀表示矩陣D的逆矩陣D—1的第i行、第j列的元素,那么
<formula>formula see original document page 10</formula>
D—'就是我們所要構(gòu)造的解密矩陣。 3)解密獲得原數(shù)據(jù)
獲得解密矩陣D—1后,原數(shù)據(jù)就可以通過解密矩陣與加密數(shù)據(jù)片組成的向量E相乘得到, 解密方法如下<formula>formula see original document page 10</formula>
與其他加密方法不同,SEC算法提供三層的安全性。在點對點存儲系統(tǒng)中,攻擊者可 能會査看存儲到本地的碎片,期望看到數(shù)據(jù)的部分信息,或者在P2P存儲系統(tǒng)中,收集該 數(shù)據(jù)的足夠多的碎片,來解密出原數(shù)據(jù)。下面我們從三層的安全上來分析用戶數(shù)據(jù)的安全 性,并說明SEC方案為什么能夠解決現(xiàn)有技術(shù)方案不能解決的問題。
安全性分析
第l層.碎片級的安全
原數(shù)據(jù)片通過加密矩陣加密后,每個碎片都是加密的,攻擊者看不到用戶原數(shù)據(jù)的任
何信息,并且從加密矩陣的性質(zhì)和解密的過程可以看出,攻擊者如果不能收集到至少m個 碎片,他就無法解密出任何一個碎片的信息。因此,在攻擊者沒有獲得m個碎片以前,碎 片是理論上安全的,也就是說在理論上是不可破解,即使有無限的計算能力。
第2層.碎片的分散安全性
攻擊者為了能夠收集到m個碎片去解密用戶的加密碎片, 一種方法是猜測用戶命名時 所用的字符串V和密鑰Key,如果V和Key共^v.比特長,那么這種方法需要猜測2AA/次。
另一種方法是攻擊者在點對點存儲系統(tǒng)中遍歷所有碎片來猜測所需的數(shù)據(jù)片,這種方法需
要的猜測次數(shù)為e(iV'W),其中,N為存儲系統(tǒng)中碎片的個數(shù),r為用戶要求的冗余度, C(/-*w,m)
這種方法的猜測次數(shù)隨著N和m的增大而增大。圖4給出了需要猜測的次數(shù)隨N、 m變化 的圖,縱軸為所需猜測次數(shù)1og2后的值。第2層的安全強度是兩種攻擊方法所需猜測次 數(shù)的最小值,即
min{——^-^",2'、}
從圖4中可以看到,當(dāng)N很大時,碎片分散的安全性已經(jīng)非常高。 第3層.加密矩陣的安全
即使攻擊者能夠收集到m個碎片,他要想解密數(shù)據(jù),根據(jù)解密方法,還必須知道解密 矩陣D。這就要猜測生成解密矩陣D—'的2m個數(shù)以及他們的所有可能排列,r是冗余度。猜 測的復(fù)雜度為
<formula>formula see original document page 11</formula> 當(dāng)L》m時,P(2、 2m)就近似于2W'"。如果冗余度為一,即Fl,那么LX2m就是用戶 key的長度。也就是,加密矩陣的安全度近似于標(biāo)準加密算法(如AES、 DES)的安全度。
經(jīng)過上面的分析,我們看到SEC具有三層的安全保證,對于蠻力攻擊, 一個攻擊者需 要試的次數(shù)為
<formula>formula see original document page 11</formula>
經(jīng)過上面的分析我們可以看出,這個次數(shù)是非常巨大的。其強度也是傳統(tǒng)加密算法所無 法比擬的。
對傳統(tǒng)方法中存在的問題解決
(1) 如果攻擊者想窺探存儲他機器上的數(shù)據(jù)碎片,由于SEC方案的第1層安全保證了 碎片個數(shù)低于閾值(m)時,任意碎片都是理論上安全的,即無法通過計算來解出。因此, 當(dāng)攻擊者只有本地的數(shù)據(jù)時,即使獲得密鑰也是無法窺探到原數(shù)據(jù)的任何一點信息。為了 能夠窺探數(shù)據(jù),攻擊者必須到系統(tǒng)中收集到至少m個碎片,然而,SEC的第2層安全使攻 擊者在P2P存儲系統(tǒng)中收集到關(guān)聯(lián)的m個碎片是不可行的。
(2) 在SEC方案下,如果用戶發(fā)現(xiàn)自己的數(shù)據(jù)受到威脅,可以采取主動措施。他可以
刪除非攻擊者的機器上關(guān)聯(lián)的數(shù)據(jù)碎片,使一個文件在系統(tǒng)中數(shù)據(jù)碎片數(shù)目低于閾值。這
樣,即使攻擊者永久保留了部分數(shù)據(jù),也是無法窺探到原數(shù)據(jù)的任何信息,因為此時,由 SEC的第1層安全性可知,這個數(shù)據(jù)是理論上安全的。
性能分析
我們分別用SEC和現(xiàn)在標(biāo)準的加密算法AES(JAVA中標(biāo)準實現(xiàn))來加密一個100M的數(shù)據(jù) 文件,然后分別在用戶密鑰長度為128、 192、 256比特時,比較SEC和AES的速度,結(jié)果 如圖5所示,從圖可以看出,SEC的加密速度都要在三種情況下都具有較高的效率。
以上是本發(fā)明方法步驟以及方法安全性和性能分析,可以看到,通過結(jié)合點對點存儲 系統(tǒng)的特點,我們提出的安全冗余編碼方案極大提高了數(shù)據(jù)的安全性,可靠性,并比現(xiàn)在 使用的標(biāo)準加密算法具有更高的性能。
權(quán)利要求
1.一種點對點存儲系統(tǒng)編碼方法,包括下列加密步驟(1)根據(jù)用戶輸入的密鑰key和用戶要求的冗余度r,產(chǎn)生加密矩陣G;(2)通過矩陣G把原始數(shù)據(jù)編碼成r×m個加密數(shù)據(jù)碎片;(3)對碎片命名,使不同的碎片具有獨立的名字,分發(fā)到點對點存儲系統(tǒng)中。
2. 如權(quán)利要求1所述的點對點存儲系統(tǒng)編碼方法,其特征在于,所述產(chǎn)生加密 矩陣的具體方法是-(11) 將密鑰key等分地切分成m+n個元素,每個元素是長為L的字符串,然 后按二進制轉(zhuǎn)換為十進制,把每個切分的字符轉(zhuǎn)換為伽羅瓦域里的元素,其中n是 最終得到的碎片數(shù)(12) 如果切分后的m+n個元素中有相等的元素,則把相等的數(shù)隨機映射到伽 羅瓦域里其他的元素,直到?jīng)]有重復(fù)元素為止,隨機映射通過偽隨機算法實現(xiàn);(13) 根據(jù)下面構(gòu)造規(guī)則,來構(gòu)造加密矩陣G:<formula>complex formula see original document page 2</formula>其中,向量x對應(yīng)m, y對應(yīng)n。
3. 如權(quán)利要求1所述的點對點存儲系統(tǒng)編碼方法,其特征在于,所述步驟(2) 是采用Reed-Solomon碼編碼方法,利用矩陣乘法把m個數(shù)據(jù)片加密成r Xm個加密 數(shù)據(jù)片。
4. 如權(quán)利要求1所述的點對點存儲系統(tǒng)編碼方法,其特征在于,所述歩驟(3) 中對文件命名的步驟包括首先通過單向散列函數(shù)對文件名作哈希,得到一個文件 的鍵值,然后把文件存儲到滿足節(jié)點編號nodeld等于鍵值的節(jié)點上,如果沒有這 樣的節(jié)點,就把文件存儲到節(jié)點編號與鍵值相差最小的節(jié)點上。
5. 如權(quán)利要求4所述的點對點存儲系統(tǒng)編碼方法,其特征在于,所述的文件名 的產(chǎn)生方式為-<formula>complex formula see original document page 2</formula>其中,fi是文件名,v是代表原數(shù)據(jù)的某些屬性的字符串,k、是命名密鑰,由用戶指定。
6. —種與權(quán)利要求1一5對應(yīng)的數(shù)據(jù)解密方法,包括下列解密步驟- (4) 當(dāng)用戶要想讀取自己的數(shù)據(jù),重新生成數(shù)據(jù)碎片的名字,根據(jù)碎片名從點 對點存儲系統(tǒng)收集m個碎片;(5) 根據(jù)密鑰key構(gòu)造出解密矩陣D—',就可以解密得到原數(shù)據(jù),其中,D是產(chǎn) 生矩陣G的一個子矩陣。
7. 如權(quán)利要求6的解密方法,其特征在于,所述的步驟(4)包括用戶根據(jù) 自己命名數(shù)據(jù)時的代表原數(shù)據(jù)屬性的字符串V和命名密鑰k ,得到每個碎片的名 字,并對碎片名字作哈希得到數(shù)據(jù)碎片的鍵值,然后根據(jù)鍵值找到存放數(shù)據(jù)的節(jié)點, 從而收集到至少m個碎片。
8. 如權(quán)利要求6的解密方法,其特征在于,所述的解密矩陣D對應(yīng)于用戶收集到 的碎片集合,如果ffl戶收集到的m個碎片編號為(i,,b,...U,那么由矩P車G的第i,,i2,.,.im列組成 的m行m列的亍矩陣就是D。
全文摘要
一種基于點對點存儲系統(tǒng)編碼方法,包括下列加密步驟1)根據(jù)用戶輸入的密鑰key和用戶要求的冗余度r,產(chǎn)生加密矩陣G;2)通過矩陣G把原始數(shù)據(jù)編碼成r×m個加密數(shù)據(jù)碎片;3)對碎片命名,使不同的碎片具有獨立的名字,分發(fā)到點對點存儲系統(tǒng)中;和下列解密步驟4)當(dāng)用戶要想讀取自己的數(shù)據(jù),重新生成數(shù)據(jù)碎片的名字,根據(jù)碎片名從點對點存儲系統(tǒng)收集m個碎片;5)根據(jù)密鑰key構(gòu)造出與加密矩陣G相對應(yīng)的解密矩陣D<sup>-1</sup>,就可以解密得到原數(shù)據(jù)。本發(fā)明結(jié)合了P2P存儲系統(tǒng)的特征和底層協(xié)議,能夠同時保證數(shù)據(jù)的安全性和可靠性,解決了現(xiàn)有技術(shù)方案在P2P存儲系統(tǒng)應(yīng)用中的不足。
文檔編號H04L9/30GK101192924SQ20061014531
公開日2008年6月4日 申請日期2006年11月24日 優(yōu)先權(quán)日2006年11月24日
發(fā)明者代亞非, 智 楊, 敬 田 申請人:北京大學(xué)