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。

相关文章
相关标签/搜索