Note: Secure Deduplication with Efficient and Reliable Convergent Key Management (Dekey)

原文獻:Secure Deduplication with Efficient and Reliable Convergent Key Management算法

Dekey包含三個實體:用戶(Users),存儲雲服務提供商(S-CSP)和密鑰管理雲服務提供商(KM-CSP)安全

  • 用戶:將數據存儲到S-CSP而且稍後訪問。假設用戶只上傳S-CSP中沒有的數據,且僅上傳一次。
  • S-CSP:爲用戶存儲數據。經過數據重刪消除了冗餘數據的存儲,並保留了惟一的數據。
  • KM-CSP:爲用戶提供摘要密鑰,同時爲用戶提供最少的存儲和計算服務,方便密鑰管理。每一個摘要密鑰使用RSSS分佈在多個KM-CSP上。

基線方法

僅涉及User和S-CSP(即不須要KM-CSP)。每一個用戶都擁有本身的數據副本加密所對應的摘要密鑰,而後由獨立的主密鑰進一步加密。加密後的摘要密鑰存儲到S-CSP,而主密鑰由用戶維護。併發

系統設置

S1:初始化如下實體

  • 具備原始功能的對稱加密方案(\(KeyGen_{SE},Encrypt_{SE},Decrypt_{SE}\))和用於安全參數\(1^{\lambda}\)的用戶的主密鑰\(\kappa = KeyGen_{SE}(1^{\lambda})\);app

  • 具備原始功能的融合加密方案(\(KeyGen_{CE},Encrypt_{CE},Decrypt_{CE},TagGen_{CE}\))性能

  • 用於文件的\(PoW\)算法:\(PoW_F\)和用於塊的:\(PoW_B\)算法(Proof of Ownership,全部權證名)。加密

S2:S-CSP初始化兩種類型的存儲系統

  • 有效重複檢查的快速存儲系統
  • 用於存儲加密數據副本和加密的摘要密鑰的文件存儲系統。

文件上傳

假設用戶上傳文件F:spa

1. 執行文件級重複數據刪除

S1:用戶計算併發送F文件的標籤\(T(F) = TagGen_{CE}(F)\)到S-CSP。指針

S2:S-CSP收到\(T(F)\)後,檢查S-CSP上是否存在相同的標籤。若是存在,S-CSP向用戶回覆「文件重複」,不然回覆「沒有文件重複」。ip

S3:若是用戶收到「沒有文件重複」的響應,則跳轉到S5進行數據塊級重複數據刪除。若是響應是「文件重複」,則用戶在S-CSP上對F運行\(PoW_F\),以證實該用戶是存儲在S-CSP上的相同文件F的全部者.ci

S4:若是\(PoW_F\)經過,則S-CSP只向用戶返回F的文件指針,再也不上傳任何後續信息。若是\(PoW_F\)未經過,則S-CSP停止上傳操做。

2. 用戶執行數據塊級重複數據刪除,以消除冗餘塊。

S5:針對須要上傳的文件F,利用主密鑰\(\kappa\),用戶執行如下計算:

  • 將F分紅一組數據塊\({B_i}\)(其中\(i 1/4 1; 2; ...)\)
  • 對於每一個塊\(B_i\),計算塊標籤\(T(B_i)=TagGen_{CE}(B_i)\);
  • 將塊標籤\({T(B_i)}\)發送到S-CSP以進行數據塊重複檢查。

S6:S-CSP接收到數據塊標籤\({T(B_i)}\)後,計算獲得向量\(\sigma_B\),若是存在某個已存儲數據塊命中了\(T(B_i)\)則存儲\(\sigma_B[i] = 1\),表示數據塊已存在,反之則存儲\(\sigma_B[i] = 0\),表示數據塊不存在。而後,S-CSP將存儲\(\sigma_B\)返回給用戶。

S7:用戶接收到\(\sigma_B\)後,遍歷\(\sigma_B\),若\(\sigma_B[i] = 1\),則對數據塊\(B_i\)執行\(PoW_B\)運算以向S-CSP代表本身是該數據塊的全部者。若是認證經過,S-CSP向用戶發送數據塊\(B_i\)的指針,此時用戶再也不須要發送該數據塊。若認證不經過或\(\sigma_B[i] = 0\),則計算\(C_i = Encrypt_{CE}(K_i,B_i)\),其中摘要密鑰\(K_i=KeyGen_{CE}(B_i)\)

S8:對於全部數據塊,用戶使用主密鑰和摘要密鑰計算加密的摘要密鑰\({CK_i}\),其中\({CKi} = Encrypt_{SE}(\kappa, K_i)\)

S9:用戶將全部S-CSP沒有的且加密後的數據塊\({B_i}^{'}\)\(\sigma_B[i] = 0\)、全部的摘要密鑰\(\{CK_i\}\)\(T(F)\)發送到S-CSP,而後將之存儲。

文件下載

假設用戶想要下載文件F,首先向S-CSP發送請求和文件名,而後執行如下步驟:

S1:收到請求和文件名後,S-CSP將檢查用戶是否有資格下載F。若是沒有資格,S-CSP會向用戶發回停止信號以指示下載失敗。如有則S-CSP將相應的密文\(\{C_i\}\)和加密的摘要密鑰\(\{CK_i\}\)返回給用戶。

S2:用戶從S-CSP接收到加密數據後,首先使用其主密鑰來恢復每一個摘要密鑰\(K_i=Decrypt_{SE}(\kappa,CK_i)\)。而後使用\(K_i\)來恢復原始塊\(B_i=Decrypt_{CE}(K_i,C_i)\)。最後,用戶能夠得到原始文件\(F=\{B_i\}\)

限制

基線方法有兩個主要問題:

  • 密鑰管理中巨大的存儲開銷。特別地,每一個用戶必須將摘要密鑰與他擁有的每一個數據副本相關聯,而且用他本身的主密鑰加密全部的摘要密鑰。因爲不一樣用戶使用不一樣的主密鑰,不一樣用戶加密的摘要密鑰(即CKi)互不相同。所以,摘要密鑰的數量隨着存儲的惟一數據副本的數量和用戶的數量而線性增長,致使了大量的存儲開銷。
  • 主密鑰可能出現單點錯誤,須要由用戶可靠地維護。

Dekey

Dekey經過在摘要密鑰中實現重複數據刪除並將摘要密鑰分發到多個KM-CSP,以有效可靠地維護會摘要密鑰。

Dekey在原始摘要密鑰上構建祕密份額,並將這些份額分發到多個KM-CSP。若是多個用戶共享相同的數據塊,則能夠訪問相同的摘要密鑰。這樣顯着減小摘要密鑰的存儲開銷。同時,這種方法提供容錯性能,即便KM-CSP中的的部分字集發生錯誤也可進行正常訪問。

系統設置

Dekey中的系統設置階段相似於基線方法中的系統設置階段,但涉及到一個額外的步驟:初始化KM-CSP中的密鑰存儲。假設KM-CSP的數量是n。

S1:在輸入安全參數\(1^{\lambda}\)時,用戶初始化收斂加密方案、\(POW_F\)\(POW_B\)

S2:S-CSP初始化快速存儲系統和文件存儲系統。

S3:每一個KM-CSP初始化用於數據塊標籤\(T(B_i)\)的快速存儲系統和用於保存摘要密鑰份額的輕量級存儲系統。

文件上傳

設要上傳文件F,用戶和S-CSP執行文件級和數據塊級重複數據刪除。文件級的刪除操做與基線方法相同。若是S-CSP找到文件副本,用戶運行\(POW_F\)向S-CSP證實文件全部權,而後跳過數據塊級重複檢查並跳轉到密鑰分發階段。若是文件不重複,則將執行數據塊級重複數據刪除(與基線方案的S5-S7相同)。最後,S-CSP存儲具備密文\(C_i\)\(\sigma_B[i]=0\),並將相應數據塊的指針返回給用戶進行本地存儲。

在文件級和塊級重複檢查以後,執行一個稱爲密​​鑰分發的附加級。與基線方法相反,該階段使Dekey不依賴於每一個用戶保留各自主密鑰,而是在多個KM-CSP之間共享全部摘要密鑰。若是在S-CSP上找到文件副本,則用戶使用第\(j\)個KM-CSP運行\(POW_{F,j}\)來計算文件標籤\(T_j(F)=TagGen_{CE}(F,j)\)證實文件全部權。若是驗證經過,則存儲在第j個KM-CSP上的關於F的分享密鑰將被返回給用戶。

若是沒有找到文件副本,將執行如下步驟:

S1:在輸入文件\(F=\{B_i\}\)上,對於每一個塊\(B_i\),用戶計算併發送塊標籤\(T(B_i)=TagGen_{CE}(B_i)\)到每一個KM-CSP。同時計算文件標籤\(T_j(F)=TagGen_{CE}(F,j)\)併發送到第j個KM-CSP,其中\(1\leqslant j\leqslant n\)

S2:對於每一個接收的\(T(B_i)\),第j個KM-CSP檢查是否存儲了另外一個相同的標籤.若是是,則在用戶和第j個KM-CSP之間經過\(T_j(B_i)=TagGen_{CE}(B_i,j)\)對數據塊執行\(POW_{B,j}\)。若是認證經過,第j個KM-CSP將爲用戶返回爲摘摘要密鑰\(K_i\)存儲的祕密份額。不然它會保留\(T(B_i)\),併發回一個信號,要求該摘要密鑰上的祕密共享。

S3:收到KM-CSP返回的數據塊\(B_i\)的結果,若是是有效指針,則用戶在本地存儲,若無效則用戶經過\((n,k,r)-RSSS\)來運行\(Share(K_i)\)計算出\(K_{i1},K_{i2} \cdots K_{ik}\),而後用戶經過安全信道發送分享密鑰\(K_{ij}\)\(T_j(B_i)=TagGen_{CE}(B_i,j)\)到第j個KM-CSP,(\(j=1,2,\cdots,n\))

S4:在接收到\(K_{ij}\)\(T_j(B_i)\)時,第j個KM-CSP存儲它們並將\(K_{ij}\)的指針發送給用戶以備未來訪問。

文件下載

要下載文件F,用戶首先按照基線方案中所述從S-CSP下載加密的數據塊\(\{C_i\}\)。而後經過恢復摘要密鑰來解密這些加密的數據塊。

用戶向n個KM-CSP中的k個發送關於文件F的全部數據塊密鑰的指針,獲取每一個數據塊\(B_i\)的共享密鑰\(K_{ij}\)。在收集全部共享以後,用戶經過\(K_i = Recover(\{K_{ij}\})\)重建數據塊\(B_i\)的摘要密鑰。最後,經過\(\{C_i\}\)\(\{K_i\}\)計算得到原始文件F。

相關文章
相關標籤/搜索