• 沒有找到結果。

第二章 即時稽核結構架構

第一節 Merkle Tree

第二章 即時稽核結構架構

在這個章節中會呈現當用戶使用雲端服務時,用戶如何在雲端平台中運作安 全性的檢驗,並且將檢驗結果的證據存放在一個安全的裝置,提供用戶下次使用 時能夠稽核當下的雲端平台是否安全。

在第一章第二節中所提到的情境,我們有一個直覺方法可以解決安全性問題,

並且還能減少使用者在儲存 Hash 值的負擔,就是將雲端平台中的函式庫資料夾 建立成一個 Merkle tree,而用戶只需要保存這個 Merkle tree 的 Root hash,因為 size 小,這麼一來我們就不用擔心 Hash 值因為 VM 中毒而被偷改。以我們論文中的 計算 Hash 方式,java.security.MessageDigest 中的 SHA-256 演算法來說,用戶也 只需要一個來保存一個 32Bytes 的 Hash 值,在自然人憑證日趨普及的現代,用戶 甚至可以藉由一個晶片卡來保存這樣的一個 Hash 值。接下來我們將介紹 Merkle Tree 以及其運作方式。

第一節 Merkle Tree

在這一節當中,首先我們先介紹一個直覺地解法。當一個用戶開啟使用雲端 服務後,用戶計算其作業系統中函式庫每個檔案以及資料夾(例如圖 1)的 Hash 值 並記錄下來,如圖 2 所示,以 Hash Tree 的架構,從樹的底層的葉節點,將檔案 以及資料夾一層一層計算上來,例如 h(d3)=h(h(f2),h(d6),h(f3))。而最後頂端之

Hash 值稱之為 Root Hash。因為密碼學加密函數的特性,倘若有修改過其中一個 節點的值,那麼就會得出不同的 Root Hash,所以我們可以用 Root Hash 來驗證整 個函式庫的完整性。我們將整個函式庫資料夾的架構記錄起來,稱之為 Merkle

Tree,這樣的結構儲存在雲端 VM 中,用戶則保存 Root Hash。而用戶每次更新 函式庫時,再將雲端 VM 上的所有檔案及資料夾重新做一次計算,得出新的 Root

Hash 以後,再將其 Root Hash 保存。在下次使用雲端 VM 執行程式時,再重新將 雲端中的檔案計算 Root Hash 與用戶所保存的 Root Hash 做比對,若是相同,即 可驗證雲端 VM 上的函式庫沒有被更動過。

d2 d3

d6

d4

d5 f2 f3

f1 f4

f6 f7

f5

d1

:資料夾d1~d7 :檔案f1~f7

圖 1:資料夾

8

: 資料夾的Hash值

H(f5) H(f6) H(f7)

Root Hash = H(d1)

H(d2) H(d3) H(d4)

H(d5) H(d6)

H(f1) H(f2) H(f3) H(f4)

: 檔案的Hash值

圖 2:資料夾的 Merkle Tree

然而這樣的作法速度非常慢,當檔案數量以及資料夾層數非常多的時候,所 需要計算的 Merkle Tree 也會越來越大,花費的時間也就越來越龐大。

為了改善 Merkle Tree 在計算時間上的負擔,我們使用本實驗室以前的研究成 果,partail Merkle Tree(pMT),只需計算部分的 Merkle Tree。想像一種真實的情 況,如圖 1,這是一名用戶的雲端 VM 的函式庫,並且將 Merkle Tree 儲存在 VM 中以做為驗證(圖 2)。今天這名用戶可能會在這個月內因為工作只需要使用到 d2 資料夾下面的檔案,假設 d3 下面的檔案以及資料夾數目非常可觀,而使用者在 這次使用時並不會用到那個資料夾的話,其實在 Merkle Tree 中,如圖 3 所示,

只需紀錄 d3 的 Hash 值,而不需要將 d3 下的整個結構重新作一次計算,這麼一 來,在計算 Merkle Tree 的時間就可以節省許多。

:資料夾的Hash值 :以下忽略的資料夾

Root Hash = H(d1)

H(d2)

H(d3)

H(d4)

H(d5)

H(f1)

H(f5)

:檔案的Hash值

圖 3:Partial Merkle tree

但是這樣的結果依然存在個問題,如果我們所需要的檔案的資料的同一層檔 案數量非常多的時候,如,我們仍然必須花很多時間在串連這些 Hash 值上,所 圖 4 以我們使用 FBHTree 來儲存函式庫的這些 Hash 值,以達到更快速的稽核。

:資料夾的Hash值 :檔案的Hash值

:以下省略的資料夾Hash值

H(f5)

圖 4:同一層資料夾中有很多資料夾需要串連

10

在介紹 FBHTree 之前,先介紹我們所提出的即時稽核架構。在我們的即時稽 核架構中,我們會在雲端 VM 中架設一個代理伺服器(Agent),來幫助用戶維護 FBHTree 及傳遞 Root Hash 給用戶,來讓用戶可以在下一次使用雲端 VM 時可以 用 Root Hash 來對雲端 VM 做稽核,如圖 5。

當用戶在雲端 VM 上首次開啟時,Agent 先將其函式庫中的檔案的 Hash 值都 儲存成一個 FBHTree,而 FBHTree 儲存在 VM 當中,Agent 將 Root Hash 傳遞給 用戶。在下次用戶要執行程式之前,用戶必須先將手上的 Root Hash 交給 Agent,

Agent 在利用這個 Root Hash 以及 Slice 來對 VM 中的檔案做一次完整性稽核。接 下來下一節我們將介紹 FBHTree 的結構。

Agent Virtual Machine

FBHTree

Device User

Root Hash

圖 5: 即時稽核架構

User

Device

相關文件