第一節 雲端運算
雲端運算(Cloud Computing),依據 NIST(National Institute of Standards and
Technology,美國國家技術標準局)所定義的內容,雲端服務架構可依服務類型指 標劃分為軟體即服務(Software as a Service,簡稱 SaaS)、平台即服務(Platform as
a Service,簡稱 PaaS)、基礎建設即服務(Infrastructure as a Service,簡稱 IaaS)
三大層次。IaaS 提供基礎運算的資源給予使用者,如處理器、儲存容量、網路等 基礎的運算資源,且能自行控制作業系統等底層的功能,但不需自行購買硬體即 建置基礎設施,如:Amazon EC2[1]等;PaaS 提供使用者運作應用程式的環境,
使用程式語言或程式庫等服務,但並不需要掌控作業系統及硬體端,介於 IaaS 和
SaaS 之間,如:Goole App Engine[2]、Amazon Web Service[3];SaaS 是軟體的集 合,這些應用架構於 IaaS 提供的資源以及 PaaS 提供的環境之上,並透過網路交 付給用戶,如:Gmail[4]、Youtube[5]。
第二節 虛擬機器
虛擬機器(Virtual Machine,以下簡稱 VM)是一種通過軟體模擬且具有完整 硬體系統功能、運行在一個隔離環境中的完整計算機系統,虛擬機器分為兩大類,
系統虛擬機器以及程式虛擬機器。程式虛擬機器,如:Java 虛擬機(JVM[6]),
只能執行單一程式。相反的,系統虛擬機器,如:VirtualBox[7]提供一個可以執
2
行完整作業系統的完整系統平台。虛擬機器的一個本質特點是執行在虛擬機器上 的軟體被局限在虛擬機器提供的資源裡。在本篇論文中將針對系統虛擬機器作探 討。
雲端日漸普及,許多雲端服務提供商開始提供 VM 的租借服務。在現今,很 多人都會選擇在雲端上租用 VM 來做為軟體開發或者提供網站服務。然而,雲端 服務提供商在提供 VM 服務的時候,並不全然安全,VM 依然有可能會因為雲端 服務提供商的不當保存導致損毀,甚至 VM 遭受植入惡意程式,儘管有些雲端服 務提供商聲稱他們的服務可以達到安全的防禦,但是我們並不能知道他們是否真 的有將我們的 VM 安全的隔離防護。我們考慮到以下情境發生,用戶 Alice 到雲 端上租借 VM 來使用,雲端平台有可能在 Alice 暫停使用 VM 時將其 VM 關閉,
在 Alice 下次開機使用時在將其映像檔重新載入,然而 Alice 並不知道雲端服務提 供商是否有安全的將 VM 關閉並且保存,也就是說,Alice 不知道她的映像檔是 否在關閉的期間因為雲端服務提供商沒有安全保存而被病毒感染、甚至遭受駭客 訪問植入惡意程式。
第三節 證明違約協定以及即時稽核
證明違約協定[8](Proof of Violation,以下簡稱 POV)提供了服務提供者與 用戶之間的不可否認性,當有問題產生時能證明服務提供者是無辜的以及讓用戶 證明自己沒有過失的方法,而證明雙方有沒有過失又稱作稽核(Auditing)。只要達
到不可否認性,用戶和服務提供者之間可以建立一個商業合約,這個合約會依照 用戶想要的安全層級來定價;如果服務提供者管理的資料有被竊取或竄改,則需 給付用戶一些合約中簽訂的賠償金。然而稽核需要有根據,我們稱之為證據
(Attestation) , 這個 證 據都是 經過 雙方簽 證 過的訊 息 (Signed Messages) 。 稽核 (Auditing)可分為時期(Epoch-based Auditing)以及即時稽核(Real-time Auditing)。其 中時期稽核為用戶可以在設定的期限,去做稽核與服務商更新最新狀態,這個方 法可以減少雲端服務提供商產生證據運算的時間。因為我們必須在每次執行應用 程式前都要檢查一次,才能確保雲端平台安全無慮,所以時期稽核並不能達到我 們所要的需求。
在 PaaS 當中,因為雲端方必須維護我們的資源,且用戶沒有權限可以更改 雲端上的資源,所以在 PaaS 當中就可以加入 POV 的機制,能夠確保用戶的權益 不受損,然而,在 IaaS 當中,我們並不能夠做到 POV 的機制,因為用戶可以全 權的使用 VM,VM 內部並不是雲端方面維護的,且當 VM 被關閉的時候,雲端 服務提供商可以將責任推卸給網路問題,用戶也因為 VM 被突然關閉而沒有辦法 掌握到證據,所以在 IaaS 當中要達到 POV 是非常困難的。
在本篇論文中,我們將探討在 IaaS 當中,如何在 VM 中達到快速的完整性稽 核。考慮到用戶在 VM 當中開發軟體時,如果不能夠達到即時稽核的話,那麼用 戶就只能在 VM 發生錯誤時才能得知 VM 遭受惡意竄改甚至病毒感染,所以必須 要在程式執行前就確保用戶的 VM 是安全的執行環境,才能保障用戶的 VM 不會
4
有重大災害,因此即時稽核在雲端平台上是非常重要的一個機制。
第四節 目標
我們的目標是希望用戶在雲端 VM 上使用服務時,能夠在每一次執行程式前,
都能先將程式所需要用到的靜態檔案做過一次完整性稽核,確認執行的程式需要 用到的靜態檔案並未被篡改,以防範用戶的 VM 發生重大錯誤,例如:個人資料 外洩,開發軟體資料損毀。
在每次執行程式時,程式都會呼叫函式庫,如果說我們的函式庫有被植入惡 意程式碼,就有可能會執行惡意指令,例如:開啟遠端連線給惡意使用者訪問,
傳送個人敏感資料給駭客。所以我們必須在執行程式之前就對函式庫的完整性做 好一次確認,才能確保用戶在 VM 上的重要資料安全無慮。在本篇論文中我們將 針對函式庫來做為實驗的範例。我們使用本實驗室研究成果 FBHTree[9]來加快對 檔案做稽核時間,我們將會在下一章介紹相關細節,在第三章相關的實驗數據結 果可以呈現檢查所需要的時間,來證明這個機制的可行性以及優點。
第五節 過往的作法
過去 Mishra Umakant[10]曾提出了一個在非雲端環境中簡單的解決方法,稱
為 Integrity checking。我們可以把函式庫當中所有檔案的 Hash 值全部記錄下來放 置在一個安全的地方,而用戶在每次要執行程式前,將這些保存的 Hash 值跟在 VM 中的函式庫檔案 Hash 值作比對,這樣就能夠知道執行的程式是否有遭受不當 篡改。
保存這些 Hash 值會有額外的成本負擔,為了減少用戶在儲存這些 Hash 值的 負擔以及減少用戶在傳輸這些 Hash 值的時間,我們假設將這些 Hash 值存放在用
戶的雲端 VM 當中,這樣做會有個問題,我們無法確保雲端 VM 是否因為中毒而 病毒程式將我們存放在 VM 上的 Hash 值偷偷更改過,也就是說雲端 VM 上保存 的 Hash 值有可能被改成中毒檔案的 Hash 值,導致用戶在下次使用時不知道自己 現行版本的檔案已經中毒,執行程式進而影響雲端 VM 發生錯誤。所以我們不能 將這些檔案的 Hash 值保存在 VM 中,如果說函式庫檔案有 100 萬個,那麼就需 要保存 100 萬個檔案 Hash 值,這對用戶會是個負擔,我們提出一個方法可以大 幅減少用戶的負擔。
第六節 論文大鋼
在本篇論文中,首先第二章將介紹我們第二節提到的情境的直覺解法,並且 說明直覺解法的缺點,接著會介紹我們所提出的即時稽核架構,講解我們如何利 用 FBHTree 的方法來減少運算時間以及負擔,以及 FBHTree 是如何達到快速的 稽核。第三章相關實驗結果呈現我們的方法以及以往的直覺解決方法的比較結果,
證明我們所提出的方法減少了許多負擔,也達到更快速的結果。第四章為相關研 究,而第五章為本篇論文的結論。
6