1. 程式人生 > >雲端儲存中的資料完整性校驗——綜述

雲端儲存中的資料完整性校驗——綜述

問題的提出

雲端儲存就是將儲存資源放到雲上供人存取的一種新興方案。使用者可以在任何時間、任何地方,透過任何可連網的裝置連線到雲上方便地存取資料。大量的使用者資料都是放在雲伺服器上,對資料的安全性保障是提高雲服務商服務質量及使用者願意享受雲端儲存服務的前提和保障。

在雲計算出現以前,使用者的資料通常儲存在本地。如果使用者想確定自己的資料是否完整,最簡單的方法是親自檢視一下資料,就可以知道資料是否完整。如果資料量很大,可以採用雜湊的方式通過比較資料標籤的檢查資料的完整性。

在雲環境下,使用者資料儲存在雲端。使用者為了知道儲存在雲端的資料是否完整,可以將存在雲端的資料下載下來,然後自己檢視,但是這種方式浪費了大量的網路傳輸資源,大大的削減的雲服務帶來的優勢。特別是,使用者存放在雲端的資料量很大時,這種方式更加的不切實際。

另外,從使用者的角度來說雲服務商不可信。因為雲服務提供商可能出於自己的利益考慮,即使使用者資料出現完整性錯誤,他也不及時的通知使用者,以免降低自己的信用度;從服務商的角度來講,使用者也不可信。因為使用者可能偽造資料完整性錯誤來企圖要求雲服務提供商的賠償。所以,需要一個雙方都認可的第三方來擔任這個校驗者來擔當校驗任務,以避免產生分歧。所以設計一種安全有效的校驗演算法就十分的必要。


資料分塊

雲端儲存中的檔案通常是以“大塊”(64M)的形式進行儲存的,這樣可以有效的提高I/O效率同時降低主節點伺服器的元資料量,提高查詢效率;而使用者的資料檔案在上傳到雲伺服器之前,需要對檔案進行預處理,生成有效的校驗標籤等資訊,出於對標籤生成的效率和對有效支援資料的動態更新的考慮,通常也會對檔案進行分塊,這個分塊可以看作是邏輯上的分塊,且沒有固定的標準,不過遠遠小於雲端儲存中的“大塊"。

設計目標

公開校驗:任何人(資料所有者和校驗者)都可以驗證資料的完整性,解繫結和無狀態性是公開校驗的基本特徵;

       解繫結:任何一方都不存在繫結關係,可擴充套件,且各司其職。   

     無狀態性:校驗者在校驗期間不需要維持和更新狀態資訊。

無塊校驗:校驗者不需要獲得實際資料塊內容,就可以完成資料校驗,安全且高效;

動態資料更新:有效的支援塊級別(或更細粒度)的資料更新操作同時不降低校驗的效率;

批量校驗:雲伺服器同時執行多個校驗任務,提高校驗效率;

支援混合雲:驗證方案在多個雲服務商或混合雲的環境下實現有效的資料完整性校驗要求;

不可仿製:除了資料擁有者,其他人不能生成有效校驗元資訊(簽名);

身份隱私:資料校驗過程中不能分揭漏使用者身分;

資料隱私:除了資料擁有者,其他人不能瞭解到資料的內容。

校驗演算法框架

1.鍵生成演算法KeyGen:資料所有者生成初始金鑰對及一些初始化的引數設定;

2.校驗標籤生成演算法TagGen:資料所有者

生成不可偽造標籤或簽名;

3.校驗挑戰Challenge:通常由校驗者發出校驗挑戰(校驗的資料塊、隨機值);

4.資料完整性證據生成演算法ProofGen:雲伺服器根據校驗請求生成證明資料完整性的證據;

5.檢驗資料完整性演算法CheckProof:校驗者根據其所擁有的資訊(公開可獲得的資訊及雲伺服器發來的證據)檢查資料是否完整。

校驗模型

1.私有校驗

                                      Private verification model

資料擁有者首先將資料和生成的校驗元資訊存放到雲伺服器中,當需要驗證資料完整性時,資料所有者向雲端發起一個“校驗挑戰”,然後雲端返回一個“校驗證據”,資料所有者通過檢查雲伺服器返回來的“校驗證據”就可以知道存放在雲端的資料是否完整。(在考慮資料機密性的情況下,可以將資料加密後再傳輸)

此方案的主要缺點:1.資料所有者需要維護的資訊及計算量比較大;2.當資料出現損壞時容易產生分歧。


2.委託校驗

委託校驗中需要一個雙方都可信的第三方來幫助校驗。第三方校驗者在儲存使用者公鑰及校驗的公共引數以便進行校驗方面是可信的,它也有可能會竊取使用者的資料,所以要保證校驗過程資料的機密性;

                                               Delegate Verification model

此模型中:資料所有者首先將資料存放到雲伺服器,然後將生成的資料校驗元資訊存放到第三方,並由第三方完成校驗任務,最終第三方將校驗報告發送給資料所有者。

這種校驗模型比較適合靜態資料情況。

主要缺點:資料擁有者與第三方校驗者繫結(因校驗元資料由第三方維護),擴充套件性不好。且當用戶資料發生變化,即需要生成新的校驗元資訊時,校驗者要維護最新的校驗元資訊,這種狀態資訊的維護很難,而且當TPA有多個伺服器時更難維護。所以它不支援公開校驗。


3.公開校驗

                                  Public Verifcation model 

資料擁有者首先將資料及校驗元資訊儲存到雲伺服器,任何一個校驗者都可以向雲端發起校驗請求來驗證資料的完整性。

此種模型相比前兩種模型,更具彈性和可擴充套件性。因為校驗者與資料擁有者解繫結,且校驗者不需要維護校驗元資訊,即不需要維護狀態資訊,有效地 實現了公開校驗。

4.其他擴充套件模型

基於授權的公開校驗模型:第三方校驗者必須是經過資料所有者認證過的,否則雲伺服器對其發起的校驗請求不予理睬。

(所謂的公開校驗就是要保證無狀態和解繫結,但這裡資料擁有者和校驗者通過授權繫結,相比委託校驗模型有所進步,但是否為真正意義上的公開校驗?)

具體文章參見:

基於共享資料的完整性校驗校驗模型:這裡考慮了一份資料為一組使用者所有,即為多個人共享,此種條件下既要保證資料校驗的有效性又要保證共享組中資料身份的隱私。

具體文章參見:

基於混合雲或多雲的資料校驗模型:此模型考慮到資料提供者可能會將資料存放到多個雲服務提供商提供的雲端儲存環境中,同時一部分資料可能存放在私有云,而另一部分資料存放在公有云中,此種條件下既要保證資料校驗的有效性,又要保證校驗者對資料儲存的透明性。

具體文章參見:

常用校驗方法

1.基於RSA簽名

2.基於雜湊樹MHT(關於此結構的詳解可以參考:Merkle Tree)

                      基本雜湊樹結構MHT

葉子節點為資料塊對應的雜湊值,這些雜湊值生成一個根節點雜湊值R。如果資料完整,那麼R的值一定保持不變。所以可以通過比較R的值就可以知道資料是否完整。

                          基於排名的雜湊樹結構R-MHT

此方案是基本的MHT的變形,可以有效的支援不同粒度的資料更新。

3.基於雙線性對的BLS簽名

                    (數學符號編輯起來有點麻煩,給大家帶來的審美疲勞還請多多諒解!)

這裡涉及了較多的數學知識,如群運算、域運算、橢圓曲線加密等。

考慮的因素

效率:儲存消耗、計算量、資料傳輸;

安全性:校驗元資訊不可仿製,使用者資料的隱私性等;

可擴充套件性/彈性:不同的資料型別,不同的雲服務商,校驗方案是否合適;類似雲服務的按需使用(彈性定價),將資料校驗做為一種服務;