原文献: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})\);

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

  • 用于文件的\(PoW\)算法:\(PoW_F\)和用于块的:\(PoW_B\)算法(Proof of Ownership,所有权证名)。

S2:S-CSP初始化两种类型的存储系统

  • 有效重复检查的快速存储系统
  • 用于存储加密数据副本和加密的摘要密钥的文件存储系统。

文件上传

假设用户上传文件F:

1. 执行文件级重复数据删除

S1:用户计算并发送F文件的标签\(T(F) = TagGen_{CE}(F)\)到S-CSP。

S2:S-CSP收到\(T(F)\)后,检查S-CSP上是否存在相同的标签。如果存在,S-CSP向用户回复“文件重复”,否则回复“没有文件重复”。

S3:如果用户收到“没有文件重复”的响应,则跳转到S5进行数据块级重复数据删除。如果响应是“文件重复”,则用户在S-CSP上对F运行\(PoW_F\),以证明该用户是存储在S-CSP上的相同文件F的所有者.

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。

Note: Secure Deduplication with Efficient and Reliable Convergent Key Management (Dekey)的更多相关文章

  1. 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux

    感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得, ...

  2. GA-H61M-DS2 BIOS SETTING

    Boot Option #1,UEFI:Sandisk SDSSDHP128G Boot Option #2, Boot Option #3, Boot Option #4, Bootup Numbe ...

  3. SharePoint在管理中心创建Secure Store

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/35780063 SharePoint在管理中心 ...

  4. Secure CRT注册码

    secure CRT 把记忆的东西放在这就行了,:)   SecureCRT 5.2.2的注册码 Name:          Apollo InteractiveCompany:    Apollo ...

  5. A Study of WebRTC Security

    转自:http://webrtc-security.github.io/ A Study of WebRTC Security Abstract Web Real-Time Communication ...

  6. 网络-05-端口号-F5-负载均衡设-linux端口详解大全--TCP注册端口号大全备

    [root@test1:Standby] config # [root@test1:Standby] config # [root@test1:Standby] config # [root@test ...

  7. CentOS 7 服务端口表

    # Note that it is presently the policy of IANA to assign a single well-known# port number for both T ...

  8. C++ Core Guidelines

    C++ Core Guidelines September 9, 2015 Editors: Bjarne Stroustrup Herb Sutter This document is a very ...

  9. OPENVPN2.3配置文档官方说明

    openvpn Section: Maintenance Commands (8)Index NAME openvpn - secure IP tunnel daemon. SYNOPSIS open ...

随机推荐

  1. redis实现session共享,哨兵

    一.Redis介绍 1.redis是key-value的存储系统,属于非关系型数据库 2.特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会 ...

  2. CentOS安装wireshark

    yum install wireshark-gnome yum install libpcap

  3. Java企业微信开发_03_自定义菜单

    一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 这里需要格外注意的是,企业微信中请求包的数据是Json字符串格式的,而不是xml格式.关于json序列 ...

  4. hibernate复习第(4)天

    1.hibernate的映射类型.hbm.xml中property中的type属性.这个type属性是表示持久化类中的属性对应数据库中的什么数据类型,用来构建一种映射type的可选值:hibernat ...

  5. AngularJS-指令command

    directive: 匹配模式restrict:'AEMC'默认为A template templateUrl templateCache:把模板缓存起来,共多个指令使用 var myModule = ...

  6. Struts2 - 文件的上传和下载

    1.  前言 这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 2.  具体内容 回到顶部 2.1Struts2文件上传 2.1.1单 ...

  7. 【leetcode刷题笔记】Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  8. ACM学习历程—UESTC 1219 Ba Gua Zhen(dfs && 独立回路 && xor高斯消元)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1219 题目大意是给了一张图,然后要求一个点通过路径回到这个点,使得xor和最大. 这是CCPC南阳站的一道题 ...

  9. Linux编程之错误代码

    头文件/usr/include/asm-generic/errno-base.h定义错误码: #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERI ...

  10. BZOJ1012:[JSOI2008]最大数

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...