第二章 背景知識
2.3 Secure Decentralized Erasure Code
1 ( ) (
#
E F
2 q
q 。Embedding degree k 是 2,因此
G
T 是F
q2的一個 子群。且級數(order) r 為一個質數也是q
1的一個因數。設定
q
1 r h
,且為了提高效率,刻意讓 r 是一個 Solinas 質 數,r 必頇符合2a
2b
1,其中a b
0,且這裡的 r 就是我們G
1、G
2以及G
T 以的級數(order)。[7]以下是實作上系統參數設定的一個範例:
圖 2.3
2.3 Secure Decentralized Erasure Code
本節介紹我們實作基礎的主要協定,出至 2010 年的 Secure Decentralized Erasure code[9],接下來我們會用簡短地描述如何用 Erasure Code 來進行資料的儲存和取回。首先我們會對資料進行切割,
切割的大小取至於我們所選擇橢圓曲線中級數(order)的 bits 長度,因 為我們實作中選擇的橢圓曲線級數為 106 bits,因此我們每一個區塊
14
(block)都為 106 bits,假設我們現在的資料切割成 K 個區塊,而每一 個區塊我們都會先將自己所選擇檔案的名字對應到橢圓曲線上的一 個點 h,然後由我們自己所選擇的一個數 r 做純量乘法的運算,其結 果為 h’,然後再跟系統所選擇的公鑰(public key)一起做 paring 的運算,
將運算過後的結果分散傳給 v 個儲存伺服器(storage server),當一個 儲存伺服器收到兩個同樣檔名而不同區塊的加密,將可以再進行線性 組合(linear combination)的加密程序,讓多個區塊組合成一個區塊。
當使用者要取回檔案時,對 m 個金鑰伺服器(key server)發出下載請求,
而每一個金鑰伺服器又會對 u 個儲存伺服器發出下載檔案的請求,而 金鑰伺服器首先會跟其他的金鑰伺服器做金鑰的交換,當收集到一定 數量的金鑰後,就可以解密出共同的私鑰(secret key),當金鑰伺服器 從儲存伺服器下載的檔案可以透過私鑰進行部分解密,而每一個部分 解密的資料都是一個線性組合的方程式,所以當使用者收到 k 個線性 獨立(Linear independence)的方程式,將可以把我們的資料解密出來。
而以上所敘述的架構(見圖),大致上分為四大部分,詳述如下:
15
圖 2.4[9]
系統設定:
在還沒進入加解密的過程中,整個系統在運行時,就會先執行一 些系統參數,而這些系統參數是這環境中所有角色都知道的,首先會 挑一種合適類型的橢圓曲線方程式,且橢圓曲線方程式中的一些參數 設定也是公開的,因此可以知道的是整個橢圓曲線的加法群 G1以及 是基礎於大小為 q 的有限體之橢圓曲線 GF(q),且會挑一個較為合適 的 pairing 運算以及系統所產生出的生成元素(generator)
g
。因此整 個系統輸出的系統參數為 1~
, , G
e g
。使用者設定:
當使用者擁有了系統參數 1
~
, , G
e
g
後,可以產生一對金鑰,分別為 公鑰(Public key)及密鑰(Secret key),而密鑰裡包含了一個使用者所選16
17
再將系統的生成元素
g
以及使用者所挑的參數 r 做g
r運算,將運算 出來的g
r、h、C
i都傳至遠端儲存伺服器上。2.3.2 Encode
我 們 的 系 統 架 構 符 合 Homomorphism 的 特 性 , 使 得
2
1 ( )
)
(
m
1 aE n c m
2 aE n c
等於Enc
(m
1a1 m
2a2),儲存伺服器先將收到的密 文跟伺服器自己選的係數做指數次方的運算,當同一位使用者把檔案 分割成 k 個區塊時,我們的伺服器也選取 k 個係數,以對應每一個區 塊所組成的方程式。2.3.3 PartialDec
主要是透過 key server 將資料做 Partial Decode 的動作,讓有心人 即使破解了少部分的 key server 也無法將資料萃取出來,因為這邊我 們用了 Threshold 的 SK 以及線性組合這兩道關卡保護資料。
首先先介紹如何將 Threshold 的
SK
(secret key)解密回來,Client 會先對所有的 key server 發出 download 的 request,接著每個 key server 會對 u 個 storage server 下載檔案,當我們收集到足夠 key server 我們 就可以將SK
i解密回SK
,其中SK
i為 f(i)=SK
+b1i+b2i2+…+bnit-1,透過 Lagrange interpolation 運算解回SK
。18
19