第三章 可用性之行為違反證明技術
第二節 POV 演算法
第三方卻又擁有過大的權力去決定使用者及雲端提供商的行為,是非常可怕的 一件事。因此本研究在此使用 offline TTP,也就是服務提供商或是使用者出現 行為異常、規避協定未在 Interval Time 內傳遞訊息等狀況,第三方才會出來做 為仲裁者。
本篇論文組織如下: 第二章介紹可用性之行為違反證明技術,其中第二節說 明POV技術上的演算法,第一點是使用傳統兩步驟POV用法,第二點改良傳統
POV儲存過多證據耗費記憶體的缺點,第三點將前面兩點證據多需要儲存的問 題全部改良,讓伺服器端也可以只存最後一則訊息仍可擁有與儲存多則訊息的 效力。第三章提提出實作成果以及實驗數據,第四章描述相關研究,在第五章 我們提及相關研究,最後於第六章提出結論。
第二節 POV 演算法
在這個章節我們會介紹可用性使用證明違約技術的方法。首先為了清楚描 述此協定,我們先解釋這個協定的符號意義。[O]pri(x)表示使用者 x 簽署在資 料物件(Data object)O 上的電子簽章,此簽章是由使用者 x 自己的私有鑰匙所簽 署,此外在中括號內,多個資料物件會以逗號隔開,表示多個物件資料被使用 者 x 簽署,如例子[O1, O2, O3]pri(x)表示資料物件 O1、O2 和 O3 被使用者 x 的 私有鑰匙所簽署。
10
壹、 Pure Chain-Hashing
先將原本的 POV 演算法套入虛擬機器可用性的研究,以下圖三-3 為 Pure Chain-Hashing 協定的流程圖:
R 1
R 2
R 3
10:00, VMID
10:01 ,VMID
10:02 ,VMID
Hash(R
1)
Hash(R
2) Hash(0)
圖 三-2 Pure Chain-Hashing 示意圖
Step 1: 虛擬機器啟動時,代理程式會在每段 Interval Time(本研究為 1 分
鐘)時傳送一個請求訊息(Qi)訊息給予 HBS,以代表虛擬機器目前開機 狀態。Qi = { CurTime, VMID, hash(Ri-1) , [ CurTime, VMID ]pri(U) },其中 Current Time(CurTime)為虛擬機器現在的時間,VMID記錄此虛擬機器的 ID,並且在訊息內保有雜湊值(Hash Value),指向上一個證據(Ri-1)。 Step 2: HBS 收到請求訊息,並且檢查剛剛傳來的 Current Time 及確認訊息細
節 Hash 的內容是否正確,防止使用者方作弊或鏈結到錯誤的訊息。
11
Step 3: HBS 確認完成後,回傳卻認訊息(Ri)。Ri ={ Qi, [ Qi ]pri(provider) }給予虛 擬機器的代理程式,證明收到且無誤,並且儲存於 HBS 中以供未來稽核使 用。
Step 4: 虛擬機器的代理程式收到確認訊息 Ri,檢查訊息內容是否正確,若正 確則將訊息保存。
若虛擬機器出現非使用者自願性服務中斷,服務提供商也承認服務出現中 斷,可不需請求第三方協助,由虛擬機器的代理程式重新啟動後,繼續完成協 定內容即可。由留下訊息之間的時間差,便可推出虛擬機器服務中斷的時間,
其中訊息中的雜湊值可保證其順序性,且皆有服務提供商及使用者間雙方的簽 章,因此不需要第三方協助即可做為服務中斷力之證據。
倘若代理程式失效或使用者想規避協定內容,在 Interval time 未發出請求 訊息給予 HBS,HBS 可通知第三方協助,由第三方檢查虛擬機器的服務狀況,
並且留下紀錄,可做為證據證明服務提供商有提供相符的可用性。
若使用者或服務提供商所傳遞的訊息內容有誤,即可馬上請求可信任第三 方做為仲裁,稽核訊息內容。
此演算法可保證其虛擬機器的可用性,但每一則傳遞的訊息皆需儲存於 HBS 中,以供未來稽核時做為證據使用,需花費較大的儲存空間,也在稽核時 需花費較大的時間,因此我們針對其虛擬機器的特性,發展出以下的演算法。
12
貳、 Simplified Chain-Hashing
為了有效解決在 Pure Chain-Hashing 需留下每一則訊息而造成過度浪費空 間的狀況,我們提出了 Simplified Chain-Hashing。在證明虛擬機器可用性的過 程中,訊息的處理比其以往證明違約技術應用於儲存空間[10]更具有邏輯及規 律性,因此我們在這裡針對其特性做了大幅度的修改。以下圖 三-3 為
Simplified Chain-Hashing 協定的流程圖:
10:00, 10:01 ,1
10:01, 10:02, 2
R1
‧VM agent keeps last attestation and each attestation after service disruption period
‧HBS keeps last attestation and attestation after each service disruption period
Unavailable Time
R5
10:02, 10:10, 3
圖 三-3 Simplified Chain-Hashing 示意圖
Step 1: 虛擬機器中的代理程式,在每 Interval Time(在本研究為 1 分鐘)會 傳送一個請求訊息(Qi)訊息給予 HBS,Qi = { LastTime, CurTime, SN,
13
VMID [LastTime, CurTime, SN, VMID ]pri(u) },Current Time(CurTime)為虛 擬機器現在的時間,Last Time(LastTime)為前一個訊息中所記錄的
Current Time, VMID為此虛擬機器的 ID。在此演算法中另外新增了循序 數列(Sequence Number,簡稱 SN),從 1 開始記錄訊息的順序與個數,每 次增加 1。
Step 2: HBS 收到請求訊息後,檢查剛剛傳來的 Current Timestamp、Last
Timestamp、VMID、SN 數值等訊息內容是否正確。並且確認無誤後,回傳 確認訊息(Ri),Ri ={ Qi, [ Qi ]pri(provider) }給予虛擬機器的代理程式,已證明 收到且內容無誤,並且儲存於 HBS 中。
Step 3: 虛擬機器的代理程式收到確認訊息 Ri,檢查訊息內容是否正確,若正 確則保存。
(a) (LastTime − CurTime) = Interval Time (b) (LastTime − CurTime) > Interval Time
圖 三-4 時間差計算
每則訊息內有含有 LastTime 及 CurTime,因此若時間差與 Interval Time 相 等(如圖 三-4 (a))則可證明在上一次訊息到這次訊息中,虛擬機器的服務正 常,可由圖 三-3 R1, R2, R4, R5看出。若時間差大於 Interval Time(如圖 三-4 (b))則可證明在上一次訊息到這次訊息中,虛擬機器的服務有發生中斷。
14
在此演算法中,另外加入了循序數列,即可不需要雜湊鏈結便能證明其順 序及不可否認性,也可藉由循序數列推算出虛擬機器的可用性。如本實驗的
Interval Time 為 1 分鐘,則 1 小時應有 60 個證據,因此最後一則證據的循序數 列應為 60;若最後一個證據的循序數列為 50,則可推算出此虛擬機器的服務可 用性為 ( 5060= 83.3% )。
加入循序數列及 LastTime 後,我們不必將所有證據留下。在 Pure
Chain-Hashing 中,每一則證據用來證明虛擬機器的狀態正常;在本演算法中,我們 只留下最後一則訊息及使用者非自主性服務中斷後的訊息。
HBS 在收到請求訊息後,可利用時間差檢查此訊息傳遞前是否服務正常,
若正常則將此訊息保留到下一則訊息送達時刪除,如 圖 三-3 中, R1是起始 訊息(SN 為 1)必須保留,以供未來計算可用性時快速算出虛擬機器的可用 性,計算公式如下:
𝑄𝑖(𝑆𝑁)
(𝑄1(Last Time) − 𝑄𝑖(Current Time))/𝑚𝑖𝑛𝑢𝑡𝑒 = Availability
其 R2訊息內可由時間差推得出服務正常,因此於 Q3到達 HBS 時,將 R2
內的 SN 及 Current Time 等數值與 R2檢查,確認訊息有按照協定內容,即可將
R2刪除,並且將 Q3簽訂為確認訊息 R3回傳給使用者端。使用者端亦只需要留 下最後一個證據,以供下一次訊息回傳時檢查訊息內容是否正確。若時間差推 出服務中斷,如圖 三-3 中之 R3,則 HBS 需儲存此訊息做為證據,以供未來在
15
稽核時,可讓提供商即使用者得知確切服務中斷的時間。
其中若使用者想竄改訊息時間或 HBS 竄改訊息內容,皆可利用 SN 的數字 及訊息中的 Last Time 檢查時推算得知,因此雖然沒使用雜湊鍊結仍可保證其證 據力足夠,即可使用立即請求第三方出來做證。
實際上,如 Amazon 公司保證其虛擬機器上的 Availability 會大於 99.95%,
因此我們只留下使用者非自主性服務中斷時間後的證據,即代表我們可以省下 一般狀況下 99.95%服務正常的證據數量,不僅大量減少需要儲存的數量,也因 為數量降低大大減少了稽核時所需花費的時間。
參、 Recursive Hashing
在前一個方法 Simplified Chain-Hashing 中,每一個非使用者自願服務中斷 後的證據 HBS 都要儲存下來。皆下來我們發展了一個新的證據儲存方法
Recursive Hashing,以期望能減少儲存證據所需要的空間。
我們所發展的演算法,利用 Hash Function 之不可逆的特性,讓服務提供商 端使用一個 List(在此我們稱為 Hash-List)記錄非使用者自願服務中斷時間,
也就是不可用時間(Unavailable time),則使用者及服務提供商均只需記錄最後 一則訊息即可具有足夠證據力做為證據。
16
‧VM agent keeps {last attestation}
‧HBS keeps {Hash-List, last attestation}
10:00, 10:11, 10:20, 5 Hash2
10:00, 10:20, 10:21, 6 Hash2
Hash-List ={(10:02, 10:10), (10:11, 10:20)}
Hash-List
last attestation
圖 三-5 Recursive Hashing
17
Step 1: 虛擬機器啟動時,代理程式在每個 Interval Time 會傳送一個請求訊息
(Qi)訊息給予 HBS,以代表虛擬機器目前服務正常,Qi = { InitialTime,
LastTime, CurTime, SN, VMID, Hash, [ InitialTime, LastTS, CurTime, SN , VMID, Hash]pri(u) }, Current Time 便為虛擬機器現在的時間,而 Last Time 為前一個訊息中所記錄的 Current Time,Initial Time 記錄此此 Recursive
Hash 的起始時間;VMID記錄此虛擬機器的 ID,最後加上 Hash 利用其不 可逆特性,讓未經過簽章的 Hash-List 也有足夠證據力。最後加上 SN 讓此 演算法仍就可保有 Simplified Hash-Chain 中,可只保留最後一則訊息並具 有不可否認性、可確認順序性及能快速粗估 Availability 的特性。
Step 2: HBS 收到請求訊息並檢查傳來的訊息內容 Current Time、Last Time、
Initial Time、VMID、Hash 是否正確。若正確則回傳確認訊息(Ri),
Ri={Qi, [Qi]pri(provider)}給予虛擬機器的代理程式,已證明收到且無誤,並將
此訊息保留。
Step 3: 虛擬機器的代理程式收到確認訊息 Ri,代理程式檢查訊息內容是否正 確,若一切無誤後將之訊息保存。
此方法與 Simplified Hash-Chain 一樣有 Last Time、Current Tim 及 SN,但 在此演算法中有多加 Initial Time 及一個 Hash Value。加上 Initial Time 後,第一 則訊息亦不須保存,只需儲存最後一則證據即可。
18
若訊息內的時間差(圖 三-4)與 Interval Time 相符,表示服務正常,則
Hash Value(Hi)保持不變;若時間差大於 Interval Time,表示有發生非使用者 自主服務中斷,則將 Hash Value 改為 Hi+1 = h( hi, CurTime, LastTime ),且
Hash-List = List append( CurTime, LastTime ),如圖 三-5 之範例,有發生兩次非 使用者自主性服務中斷,所以 Hash-List = { (10:02, 10:10), (10:11, 10:20) },並 且在第一次發生時 H1 = h( H0, (10:02, 10:10) ),第二次發生時的 Hash Value 會 改為 H2 = h( H1, (10:11, 10:20) )。
H0 (10:02, 10:10)
H1
(10:11, 10:20) H2
圖 三-6 Recursive Hash 稽核
稽核時 HBS 有責任提供 Hash-List,並且使用者可利用 Hash Value 之不可 逆的特性產生之公式圖 三-6,讓 Hash-List 擁有足夠的效力,足以證明 List 中 的資料為證確且具有證據力。
此方法改良了 Simplified Hash-Chain 方法,將原有的 SN 可快速估算虛擬機 器可用性之性質保留,並改良原方法仍需儲存使用者非自主性服務中斷之後的 證據,在此只需讓服務提供商及使用者兩方只儲存最後一則訊息,將服務中斷 時間以另一個 Hash-List 儲存於 HBS 中,大量降低儲存空間的使用,亦加快稽
此方法改良了 Simplified Hash-Chain 方法,將原有的 SN 可快速估算虛擬機 器可用性之性質保留,並改良原方法仍需儲存使用者非自主性服務中斷之後的 證據,在此只需讓服務提供商及使用者兩方只儲存最後一則訊息,將服務中斷 時間以另一個 Hash-List 儲存於 HBS 中,大量降低儲存空間的使用,亦加快稽