雲端儲存 (Cloud Storage) 是一種藉由網路來存取的線上儲存系統,資料皆儲 存於雲端的服務提供者所管理的虛擬化存放集區 (Virtualized Storage Pools)。服務 提供者操控巨大的資料中心,使用者若想將資料放在這些資料中心,就需要向服 務提供者購買或租賃儲存的容量。一些著名的雲端儲存系統有:Google Drive [1]、
Dropbox [2]、 OneDrive [3]、 iCloud [4]、 SugerSync [5]以及 Box [6]。
安全性 (Security) 和可靠性 (Reliability) 是雲端儲存的兩大主要考量。客戶 端常不會信任將他們的資料交給其他公司。最基礎的安全性的功能有:身分驗證
(Authentication) 、資訊的私密性 (Confidentiality)、完整性 (Integrity) 和不可否認 性 (Nonrepudiation),其中前三項由使用密碼學的雲端儲存系統就可以簡單的實作 出來 [7]。因為密碼學演算法的保護,使用密碼學的雲端儲存系統擁有私密性;
每一個儲存在雲端儲存系統的檔案都可以對應到一個由使用者的私鑰建立的數 位簽章,這樣就能確認資料的完整性。然而,使用者仍然無法保證他的檔案不會 遺失或是否從雲端儲存系統收到的檔案不是最新的版本。試想下列的情況:因為 某種內部的錯誤或是惡意的安全性攻擊,使用者儲存於雲端儲存系統的一些資料
遭到損毀或刪除,服務提供者很有可能會利用之前備份的舊版本的檔案以及對應 的數位簽章回復檔案,便可以否認使用者最新版本的資料遺失。這樣的情況便稱 為回捲攻擊 (Roll-back Attack) [8],可以明顯的看出否認性這個問題存在於使用者
和服務提供者之間。
有些系統考量雲端儲存系統本身就是不可信任的,因此提供一些方法來偵測 有沒有違反完整性、寫入的順序性 (Write Serializability) 以及讀取的新鮮性
(Read Freshness),且不需要備份資料或是依賴信任的第三方 [9] [10] [11]。他們的 方法讓客戶端可以偵測出是否有來自任何有害的伺服器操作或惡意的使用者,企 圖做未經驗證的檔案存取。他們需要保存檔案的雜湊樹或是檔案的版本編號以偵 測是否有發生違反的動作。一般來說,這些方法只能拿來偵測違反動作的發生,
他們無法提供正式的證據給第三方來證明服務提供者曾發生違反的動作。
一個雲端儲存系統應有責任提供一些特性,如:完整性、寫入的順序性以及 讀取的新鮮性。然而,現今沒有任何的雲端儲存系統提供者在他們的服務層級協 議 (Service Level Agreement;SLAs) 中保證那些特性。譬如 Amazon S3 [12] 和
Azure [13] 的 SLAs 中保證他們每月可提供 99.9% 的可用性 (Availability)。如 果可用性降至 99.9% 以下,消費者就會有資格獲得賠償。然而,消費者無法在 可用性以外的特性違反時獲得賠償。譬如說,如果檔案遭到損毀或遺失,使用者 通常沒有任何明確的證據可以證明。因為消費者無法對遺失資料的風險做出明智
的決定,他們能做的就是希望這樣的服務可以減少。
如果我們要在一個 SLA 中對更多的特性提供保證,我們需要一個實用的方 法:當使用者做出錯誤的指控時,服務提供者可以證明自己是無辜的;當服務提 供者違反了一些指定的特性,使用者可以拿來證明服務提供者的錯誤 [7]。一旦
雙方的不可否認性構築於這個方法上,使用者和服務提供者可以制定一個 SLA , 讓服務的價格由不同等級的安全需求決定。服務提供者保證若使用者能證明資料 的安全性喪失或者被竄改時,將提供雙方約定的賠償金。
POV 這個技術能夠讓使用者或服務提供者提供一個精確的證據,來證明違 反特性的情況發生;或是讓服務提供者證明自己是無辜的 [14]。POV 這個技術 由三個元組 (Tuples) 組成:第一,他需要定義一組特性,服務提供者提供服務給 使用者時必須不能違反這組特性。第二,證據必須是基於密碼學的證據,使用簽 章將使用者和他們發出的請求和服務提供者全部結合在一起。第三,稽核能夠藉 由收集密碼學的證據來實現,證明特性是否違反。稽核可以偵測出服務提供者是 否違反了特性,或是服務提供者可以證明自己是否受到使用者錯誤的指控,也就 是說,使用具有 POV 服務的使用者無法栽贓給服務提供者。假若一個違反的事 件發生,客戶端和服務提供者可以利用密碼學的證據決定誰要來負責。並且,雙 方若有爭議發生,他們可以呈現證據給一個第三方 (如仲裁人或法官) 。POV 這 個技術完全滿足一個具負責任的雲端系統的需要。
研究將 POV 技術使用在雲端系統的是從基於 epoch 的技術開始的 [15]
[16]。當一個 epoch 開始的時候,使用者和服務提供者之間交換的密碼學的證據 就會累積起來。接下來,隔了一段時間之後,累積的密碼學的證據就拿來執行稽 核。在這篇論文中 [16],他採用文件目錄的雜湊樹和累積的密碼學的證據來實行 稽核的技術。通過稽核就可以證明在這個 epoch 期間內,沒有任何的檔案操作動
作違反了服務的特性。在稽核結束後,累積的證據便可以捨棄,並開始一個新的
epoch。一個 epoch 可能是幾個小時或者是幾天,藉由設備的效能或是通訊的頻 寬等等原因所決定。
既然基於 epoch 的技術是可行的已經被論證,目前的問題就是只能在一個
epoch 結束時才偵測出特性的違反。考量以下情況:若儲存於雲端儲存系統中的 是一個公司要簽署的重要文件,使用到錯誤的版本可能會造成巨大的損失。基於
epoch 的 POV 技術只能在 epoch 結束的時候才能偵測出特性的違反,而不能在 每次下載檔案的時候偵測。因為有這樣的情況,驅使我們開發一種即時的 POV 技術,在每次的檔案操作當下都可以執行稽核。
在這之前本論文指導教授黃冠寰博士的一份研究提出了一個可以在每次檔 案操作時執行稽核的即時的 POV 技術 [14],他提出了一個密碼學負責的協定,
利用四步驟的握手協議 [16]來收集密碼學的證據。為了滿足即時的稽核的需求,
下載的檔案的雜湊值應該暫存於客戶端的設備中。暫存於客戶端設備中的檔案的 雜湊值會藉由儲存於服務提供者那裡累積的證據來同步,客戶端就可以捨去交換 檔案的雜湊值的麻煩。比起儲存所有檔案的雜湊值,我們設計了只要儲存部份的
雜湊樹於客戶端的設備,如此便能節省記憶體的需求以及初始化的時間。然而,
收集密碼學的證據的負擔、同步雜湊值的負擔、以及儲存雜湊樹於多個客戶端設 備的負擔仍然無法避免。相較於沒有使用即時的 POV 技術的檔案操作,小檔案
(1~100kB)和大檔案(5~10MB)平均分別需要 70~100 倍以及 8~10 倍的時間來完成
一個檔案寫入的操作。這驅使我們開發一個更有效率的方法。
在本論文中,我們提出一個投票的方法讓客戶端的設備不需要保留任何的檔 案的雜湊值。利用多個獨立的服務提供者,使用者每一次的操作都向所有服務提 供者發送請求指令,收集所有服務提供者的回傳資料後經比對能夠及時的確認資 料的完整性,而回傳資料上的簽章及密碼學的證據能夠達到 POV 的效果,當發 生問題時使用者和服務提供者雙方能夠以保留的證據稽核確認發生錯誤的是哪 一方。我們提出的方法不僅不用耗費大量時間同步,又能同時擁有多份的備份。
這篇論文的組織如下:在第二章我們介紹雲端儲存的即時稽核協定,包含之 前的做法以及本論文提出的新的方法。第三章討論一個雲端儲存系統可能會遭遇 的攻擊以及我們提出的方法如何解決此問題。第四章呈現各種檔案操作、各種檔 案大小和不同數量的伺服器等等動作與之前的方法所做的實驗數據比較。第五章 為之前相關的研究。最後第六章為結論以及未來展望。