主題亮點 ─ 資料去重複技術裡的安全議題

Security issues in data deduplication techniques
背景

目前最被大眾所接受的雲端服務就非雲端儲存 (cloud storage) 莫屬了。Cloud storage所提供的服務就是提供使用者 (user) 儲存空間讓user能夠備份上傳他們的資料,並且進行雲端與user所持有的不同裝置做資料同步。目前著名的cloud storage包含Bitcasa (https://www.bitcasa.com/)Dropbox (https://www.dropbox.com/)Google Drive(https://www.google.com/drive/)Microsoft One Drive (https://onedrive.live.com/)SpiderOak (https://spideroak.com/)Wuala (https://www.wuala.com/)等。這些cloud storage的一個共同特徵就是都會給予未付費使用者 (free user) 一定程度的免費儲存空間 (free space)。譬如Dropbox會給予2GBfree spaceGoogle Drive會給予15GBfree spaceFree user即可隨意使用這些free space來儲存備份資料。但是cloud storage要如何精簡且有效率地儲存user所上傳的資料則是個大問題。這是因為除了付費使用者的資料當然得妥善保存之外,現在的free user往往都會註冊多個cloud  storage的帳號來多獲取一些free space,而雖為free user的資料,但是cloud storage仍不能讓其漏失,以上種種都加重了雲端儲存營運者 (cloud storage administrator) 的儲存成本 (storage cost)

資料去重複技術的各種分類
就以data deduplication來說,雖然其背後的原理只是「不要將相同的資料重複儲存」,但是就以實際上各種應用的data deduplication實作來說,則會有不同的分類方式。在此,我們考慮一個可能會是多人使用的cloud storageDropbox,在這樣的cloud storage上面,首先,可以針對「是否對於不同user的資料來進行data deduplication」來做分類。如果只能對個別user account內的資料進行data deduplication的話,即稱之為 single user data deduplication,而若是可以把所有user account內的資料一併考慮進去,統一進行data deduplication的話,即稱之為crosse user data deduplication (或又稱global data deduplication)。根據「資料上傳者是否會得知上傳的資料已經有重複」來區分的話,將可以區分成server-sideclient-side data deduplication兩種。就以前者來說,user想上傳資料的話就直接進行上傳,而由cloud storage來決定是否儲存剛獲得上傳的資料。而以後者來說,user在實際上傳資料之前,會先計算對應於資料的deduplication tag,並且先將deduplication tag上傳至cloud storageCloud storage在經由deduplication tag的比對來確認是否已經存有對應的資料之後,會通知user是否需要再上傳資料。其中,deduplication tagfile-based data deduplication是採用完整檔案下去做如SHA256hash,而在chunk-based data deduplication時則是用各chunk下去做hash。可以知道,因為如果cloud storage已經存有對應資料了,則甚至資料不用再被重複傳輸,因此,client-side data deduplication是一個除了可以獲得storage saving之外,還可以獲得bandwidth saving的作法。

目前許多cloud storage為了節省storage cost,也為了bandwidth saving與提昇使用者滿意度,均採用cross-user chunk-based client-side data deduplication。譬如WualaDropbox就是使用chunk size固定為4MB,且hash functionSHA256cross-user chunk-based client-side data deduplication。因為chunk-based這個特性不好被畫出來且和將討論的安全議題無關,我們先以下圖來表示cross-user client-side data deduplication的運作方式。首先,在圖一(a)時,user 1想上傳F1F2兩個檔案,首先,user 1先算出並上傳h(F1)h(F2)兩個deduplication tag,這裡假設cloud storage還沒有F1F2的複本,所以cloud storage傳回兩個negative ACK (圖中以0表示) 通知user 1繼續完整上傳F1F2。接著,在圖一(b)當中,user 2想上傳F1F3兩個檔案,user 2算出並上傳h(F1)h(F3)兩個deduplication tag,因cloud storage已有F1,所以cloud storage傳回一個negative ACK 與一個positive ACK (圖中以1表示) 通知user 2只需完整上傳F3即可。這裡可以看出,雖然從user的觀點來看,deduplication tag的傳輸都是多餘的,但是卻可以藉此得知資料是否已經存在cloud storage並獲得更多的storage saving
圖一:Cross-user client-side data deduplication的運作範例

安全與隱私顧慮
2010年開始有研究指出,具有data deuplication,尤其是cross-user client-side data deduplicationcloud storage (以下簡稱deduplicated cloud storage) 雖然可以獲得storagebandwidth saving但是也多了安全與隱私上的顧慮。譬如從圖二(a)可以看出,攻擊者可以藉由上傳可能的hash 以及觀察deduplicated cloud storage所做的回應來獲知對應的檔案是否已經存在於deduplicated cloud storage內,導致檔案的隱私性被破壞。而從圖二(b)可以看出deduplicated cloud storage會被濫用而成為一種covert channel。更仔細一點地來說,譬如兩個攻擊者之間的通訊若是被監聽,而假設他們事前已經同意一個共同的檔案,則他們藉由上傳或是刪除那個共同檔案,換言之,經由deduplicated cloud storage內那個共同檔案的存在與否,則可以建立起一個low-bandwidthcovert channel來進行秘密傳輸而不被發現傳輸正在進行當中。


圖二:各種deduplicated cloud storage不一樣的安全與隱私攻擊

而從圖二 (c)可以看出deduplicated cloud storage會被濫用而成為一種CDN (Content Delivery Network)來協助檔案的分配傳送。這樣的情況最常出現在不特定的多人想要共同分享同一份大檔案。因為是大檔案,所以無法經由一般的email附件來傳送。而假設攻擊者又不想付費取得相對應的storagebandwidth資源,所以原始的資料擁有者可以先上傳想分享的資料至deduplicated cloud storage,然後將相對應的deduplication tag傳遞給其他人。此時,收到deduplication tag的人假裝他仍要上傳同一份資料,並且也給予deduplicated cloud storage那些deduplication tag。在看到相同的deduplication tag之後,deduplicated cloud storage會認為此時上傳deduplication tag的人也只是恰好擁有相同資料,而中斷資料的傳輸並讓此人獲得資料的擁有權。至此,此人即可順利下載資料,且以deduplicated cloud storage的角度來看,他只是下載自己的資料,並不算在需要付費的頻寬限制之內。這樣的攻擊並不僅只是研究人員的想像,已經有一套open sourcesoftware稱為Dropship被開發出來,可以利用Dropboxdeduplicatio技術來進行這樣的cloud storage濫用。

還有,從圖二 (d)可以看出deduplicated cloud storage上的資料也有可能被攻擊者所惡意下載。這裡是說,如果攻擊者想下載某份檔案,但恰巧只擁有檔案的deduplication tag的話,即可利用類似上述方法,攻擊者先假裝自己要上傳檔案,藉此來獲取檔案的擁有權,之後再逕行下載即可獲得本不屬於攻擊者的檔案。

解決方法
回顧我們在圖二所闡述的關於deduplicated cloud storage所遇到各種安全與隱私問題,從2010年開始,有研究人員提出Proof of Ownership (POW)的概念來解決data deduplication的安全問題。觀察到圖二的問題主要是攻擊者都利用了「上傳同樣的hash之後,deduplicated cloud storage即會不加以檢查而直接認為上傳hashuser是擁有對應的資料」的這樣弱點,POW就針對這樣關於data deduplication的弱點加以防護;POW scheme當中,一旦有user上傳了deduplicated cloud storage內已經有的deduplication tag之後,deduplicated cloud storage將會在連結對應檔案與user之前,先隨機要求user回傳檔案內的幾個bit。如果user能順利回答那幾個bit0或是1,則deduplicated cloud storage相信user真的是擁有對應資料。反之,若是user無法順利回答那幾個bit0或是1,則deduplicated cloud storage認為方才上傳deduplication taguser是攻擊者,只想騙取檔案的所有權。而有些POW則是觀察到deduplication tag的計算需要過多I/O,但是用於client-side data deduplication判別是否有無資料存在於deduplicated cloud storage中的deduplication tag其實並不需要一般如MD5或是SHA1般的繁複計算量。因此,一些 POW 各自提出一個並非cryptographic use而有collisionhash function,能大幅降低計算hash所需的時間,藉此來提升 POW scheme 的效能。
(本文由本中心游家牧教授提供)


沒有留言:

張貼留言