• 沒有找到結果。

第三章 證明違約協定應用於雲端資料庫

第二節 產生的困難

證明違約協定應用於雲端儲存系統時,服務提供者根據檔案目錄的結構模 擬建構出一棵 Merkle Tree 記錄一個時代開始時檔案系統的狀態[16],如圖 三-2B 的雜湊樹是由圖 三-2A 的檔案結構組成,每個檔案都是一個雜湊值,資 料夾的雜湊值由其下所有的檔案或資料夾雜湊值組成,稽核時服務提供者將

Merkle Tree 與這個時代所有的證據交由稽核者,稽核者確認證據沒被竄改後依 照每個證據內的動作 OPi更新 Merkle Tree 的雜湊值,在雲端儲存系統上 OPi內 容記錄此次操作的必要資料,包括檔案寫入、檔案讀取、檔案雜湊值和檔案路 徑等等,所以稽核時可以輕易更新或讀回每個動作的目標檔案雜湊值。

圖 三-2 證明違約協定應用於雲端儲存系統[16]檔案目錄的雜湊樹 證明違約協定應用於雲端資料庫服務提供者是根據資料庫下的表結構模擬 建構出一棵 Merkle Tree 記錄一個時代開始時資料庫系統的狀態,與雲端儲存系 統不同的是證據中動作的內容,在雲端資料庫系統中每個動作 OPi 的內容包含 使用的資料庫、SQL 的語法、與 SQL 語法有關的資料表、執行 SQL 語法 Insert 或 Update 的檔案雜湊值,我們預期執行稽核時稽核者透過服務提供者得到這個 時代開始時的 Merkle Tree,並將它匯入自已的本地資料庫中接著重新執行這個 時代所有的 SQL 指令,最後從 Merkle Tree 底部向上推得的根結點雜湊值即代表 目前雲端資料庫系統的最新狀態。

圖 三-3 是根據證明違約協定如果將每筆資料取雜湊值,並按照資料庫結構 建立出來的 Merkle Tree 根節點代表的就是整個資料庫,樹的第二層代表的是該

資料庫有含哪些表,第三層儲存的是每筆資料的雜湊值,很明顯地如果將每筆 資料都取雜湊會造成每筆資料的欄位值無法被辨識這個嚴重的缺點,舉例來說 假如 OP1的操作內容記錄 SQL 指令為”Select * FROM Table1 WHERE ID = 1”,

稽核者將無法執行這則 SQL 指令更新 Merkle Tree,因為 Table1 下的每筆資料皆 已取雜湊無法辨識 WHERE 條件欄位 ID 值為 1。

TableB TableA

MyDB

Row1

……

Hash(Data):

Row2 Row1 Row2 RowN

Row

圖 三-3 雲端資料庫系統依照證明違約協定建立的 Merkle Tree 因為雲端儲存系統與雲端資料庫執行的操作不一樣所以無法直接套用證明 違約協定,雲端儲存系統上執行的動作只有兩種讀取檔案或是新增檔案,藉由

OPi內的檔案路徑就能更新或讀取 Merkle Tree 中檔案的雜湊值,雲端資料庫系 統上執行的動作是 SQL 指令,SQL 指令可能含有條件式像是大於、小於、比較 運算等等,依照證明違約協定 Merkle Tree 中的值都是以雜湊值儲存,那稽核時 就無法執行這些條件運算,下一節將探討如何改良 Merkle Tree 以應用在雲端資 料庫系統上。

相關文件