第一節 模數運算
在數學中,群(Group)是由一個集合以及一個二元運算所組成。一個群必 須符合封閉性、結合律、單位元素、以及集合中所有元素都具有反元素等條件[
註:Joseph A. Gallian “Contemporary Abstract Algebra”8th Edition ]。給定兩個整數 a、b,若這兩個整數除以正整數 m 所得到的餘數相等,則稱 a,b 對於模 m 同餘
,記作 a b (mod m)。
即若 P 為質數,hi (0i<n)為 n 個整數, hi< P 且 hi 與 P 互質,且 X 和此 n 個整數的乘積同餘於 P,如下:
X h1h2h3…hk-1hkhk+1…hn-1 (mod P)
在此群中,以下的特性一定成立:
Xhn h1h2h3…hk-1hkhk+1…hn-1hn (mod P)
Xhk-1 h1h2h3…hk-1hk+1…hn-2hn-1 (mod P)
以下舉例:若 P 為 37,且 X 316212938 (mod 37),以下可以計算 出 X 可能的值:(1) 316212938 = 1110816;(2) 1110816 MOD 37 = 2。
所以 X 可以為 2。
我們看範例,X13 31621293813 (mod 37),檢驗看看: (1)
31621293813 = 14440608、14440608 MOD 37 = 26;(2) X13 MOD 37 = 213 MOD 37 = 26。
再一個範例,X29-1 31621293829-1 (mod 37),如下檢驗:(1
) 31621293829-1 MOD 37 = 3162138 MOD 37 =9;(2) X29-1 MOD 37= 2 29-1 MOD 37 =2 23 MOD 37=9。
第二節 Aggregate Hash
藉由上述的特性,我們可以加以運用實作雲端 Auditing 及 POV 機制。若有 n 個物件存在雲端系統,分別為 O0、O1、…、Ok、…、On-1,我們假定這些物 件內都帶有此物件 hash value 及使用者對此物件 hash value 的電子簽章,這只有 使用者能夠產出。其中,h0 = hash(O0)、h1 = hash(O1) 、h2 = hash(O2)
、…、hn-1 = hash(On-1)。令 X h0h1h2…hn-1 (mod P),我們稱 X 所 有可能值的最小整數,為這 n 個物件的 aggregate hash。要計算出 aggregate hash 很容易,及將這些 hash values 相乘,所得乘積和 P 相除求其餘數,即 aggregate hash AH= h0h1h2…hn-1 MOD P。則每次新增一物件 Oi,hi=hash(Oi),
新的 aggregate hash AH表示 n+1 個物件,AH = AHhi MOD P。若由這 n 個物 件移除一個物件,新的 aggregate hash AH表示 n-1 個物件,AH = AHhj-1 MOD P。使用者和雲端系統對於儲存於系統物件的互相以電子簽章同意最後的 Aggregate hash,即建立了這些儲存物件的電子證據。
使用者在新增、編刪物件後可以自行運算得出新的 aggregate hash, 雲端系 統也可以得到相同的 aggregate hash。但是在讀取(或下載)物件時,雲端系統 必須將所有物件的 hash values 及使用者的簽章傳送給使用者,使用者先核對這 些簽章是否正確,然後將所有的 hash values 相乘,所得乘積和 P 相除求其餘數
hash values 都是正確的。雲端系統無法欺瞞使用者,因為他無法假造使用者的 電子簽章,所以也不可能產生一些 hash values 讓其 aggregate hash 和使用者手上 的 aggregate hash 相同。
但是很明顯的這樣的方法沒有效率,因為每次使用者要讀取(或下載)單 一物件時,雲端系統都必須將所有物件的 hash values 及使用者的簽章傳送給使 用者,如果物件數目十分大時,效率回十分差,比如雲端儲存系統一個帳戶可 以有數萬個檔案,雲端資料庫系統一個 table 可以有百萬個 rows。
解決的方法是建立一個協定將物件的 hash values 分群,同一群的物件將他 們的 aggregate hash 存在一個固定的位置。見圖 9,我們將物件分為 k 組,每一 組都有自己的 aggregate hash,分別為 AH0、AH1、…、AHk-1。分組的方法可 以將物件的 hash values 除以 k 取餘數。舉例而言,n 個物件中,O0、O1、…、
Ok、…、On-1,其中,h0 = hash(O0)、h1 = hash(O1) 、h2 = hash(O2)
、…、hn-1 = hash(On-1)。若 hi MOD k = 2,則 hi 分在 AH2 那一組。以此例 而言,若分在第 j 組的有 q 個物件,Oj1、Oj2、…、Ojq。則協定規定,
AHj=hj1hj2…hjq。若 AH 為此 n 個物件的 aggregate hash,則可以證明 AH = AH0AH1…AHk-1 MOD k。因為每個物件的 hash value 都分配到某一組,所 以 AH0AH1…AHk-1 MOD k = h1h2h3…hk-1hkhk+1…hn-1 MOD k
= AH,即得證。
AH0 AH1 AH2 AHj=hj1 hj2… hjqMOD P AHk-3 AHk-2 AHk-1
圖 9 Aggregate hash 分群
在使用者的裝置中,只要儲存 k 個 hash values,AH0、AH1、…、AHk-1,
及 aggregate hash。雲端系統除了要儲存此 k 個 hash values 及 aggregate hash,還 要記錄每組有哪些物件的 hash values。舉例,若使用者要自雲端讀取物件 Oj2,
他先算出此物件的 hash values 存在第 j 組,根據協定雲端系統要傳遞 q 個物件的 hash values,hj1、hj2、…、hjq 及 Oj2,給使用者。使用者算出 hj1hj2…hjq
,並比對是否等於自己儲存的 AHj,若相等則進一步檢查 Oj2 內的 tag 及簽章及 其 hash value 就可以確認是否雲端系統回傳正確的物件。如果通不過稽核,持有 的 AH 可以成為 POV 的電子證據。