A cloud data deduplication scheme based on certificateless proxyre-encryption

问题描述

        如何检测密文以找到相同的文件?

        本文提出了一种基于无证书代理重加密的云数据重删方案。它包含无证书代理重新加密(CL-PRE)和基于无证书签名的所有权证明(PoW-CLS)。与现有方案相比,本文采用无证书加密技术解决了密钥托管问题,避免了密钥生成中心(KGC)冒充用户解密密文的情况。

系统与威胁模型

系统模型

        CSP

                云服务器具有较大的存储空间,可以为大量用户提供存储备份服务。但是,由于客户端数量众多,重复文件的数量也在不断增加。为了提高存储效率和优化存储业务,需要使用重复数据删除技术。但是云服务器中的数据是以密文的形式存储的。相同的明文将被加密为不同的密文。它需要基于密文和所有权证明的重复数据删除。它证明只有经过身份验证的用户才能访问相同的副本

        Client

                客户端可以在服务器上注册,并且可以合法使用云服务器的所有服务。他们将数据上传到云服务器。当他们需要这些数据时,他们根据需要从云服务器检索和下载这些数据。为了提高数据的安全性,客户端会对需要上传的文件进行加密。为了使云服务器能够基于密文对相同的数据进行重复数据删除,客户端需要遵守一些云服务规则,上传加密后的文件和云服务器需要的一些信息。云服务器存储上传的数据,添加客户端的身份,并返回指向文件的指针给客户端。当文件已经被客户端上传后,客户端不需要再次上传,但需要进行所有权证明的过程。

        KGC

                这是一个诚实但好奇的KGC。KGC与客户端一起生成密钥。它对客户端的信息很好奇,可以获取主密钥。但它不能获取密钥,也不能替代公钥。攻击者可以利用其特征来获取客户端的信息。

威胁模型

                两类敌手:外部攻击者和内部攻击者。外部攻击者可以获得文件的部分信息,例如文件的哈希值、文件用于重复数据删除的标签等。攻击者使用这些信息请求将数据传输到云服务器。外部攻击者也可以从云服务器获取存储的密文文件的部分数据或数据指针或文件映射表。内部攻击者可以直接访问文件。具体攻击有以下几种:

云服务器

                这种服务器用于存储用户的数据,维护数据的完整性和可用性。然而,它对用户的隐私数据感到好奇。虽然上传的数据是密文,但仍然存在一些无法察觉的风险。

CSP

                CSP可能与外部攻击者合谋获取用户的私人数据。由于他们的管理不善或利益等原因,会给他们的系统带来一些未被发现的安全风险。

客户端

                客户端由云服务提供商设计和提供,可能存在一些无法察觉的安全风险和软件漏洞。客户端可能被后门人为设计或使用不适当的传输协议来暴露用户的数据

基于CL-PRE方案的云重复数据删除

符号解释

密钥生成

        系统参数:  设G_1为P生成的阶为素数q的循环加性群,G_2为同阶为q的循环乘性群。双线性配对为一个映射e:G_1 \times G_1\rightarrow G_2。定义四个安全哈希函数:H_1:\left \{ 0,1 \right \}^*\rightarrow Z^*_p, H_2:G_1\rightarrow Z^*_q,H_3: G_2\rightarrow \left \{ 0,1 \right \}^nH_4:\left \{ 0,1 \right \}^*\times \left \{ 0,1 \right \}^*\times G_1\times G_2\rightarrow Z^*_P。设置如下参数:g=\widehat{e}(P,P)。系统参数\left \{ G_1,G_2,g,q,\widehat{e},P,H_1,H_2,H_3,H_4 \right \}

        密钥生成:KGC随机选择主密钥s \in Z^*_q,并计算出系统的公钥P_{pub}=sP。根据客户端的身份信息,KGC计算出一个部分私钥D_{ID}= 1/(H_1(ID)+s)P,然后发送给客户端。客户端随机选择x_{ID} \in Z^*_q作为秘密值,计算自己的公钥PK_{ID}=1/(x_{ID}(H_1(ID)P+P_{pub}))和自己的私钥SK_{ID}=1/(x_{ID}+H_2(PK_{ID})).

无证书代理重加密方案

如图2所示:

        1) 加密:用户(ID_1)选择一个随机的数r \in Z^*_q并计算一级密文

                         C_{ID_1}=(U_1,V_1)=(M\bigoplus H_3(g^r), r(PK_{ID_1} +H_2(PK_{ID_1})(H_1(ID_1)P +P_{pub})

        2)重加密密钥生成: ID_1计算一个从ID_1ID_2的重加密密钥。

                rk_{ID_1\rightarrow ID_2}=H_3(\hat{e}(PK_{ID_2}+H_2(PK_{ID_2})(H_1(ID_2)P+P_{pub})-SK_{ID_1},r(PK_{ID_1} +H_2(PK_{ID_1})(H_1(ID_1)P+P_{pub}))\bigoplus g^{r+1})\bigoplus H_3(g^r)

        3)重加密:CSP使用 rk_{ID_1\rightarrow ID_2}计算二级密文        

                ​​​​​​​        ​​​​​​​        C_{ID_2}=(U_2,V_2)=(U_1\bigoplus rk_{ID_1\rightarrow ID_2 }, V_1)

        4)解密: 给定一级密文C_{ID_1}=(U_1,V_1)ID_1计算m=U_1\bigoplus H_3(\hat{e}(V_1,SK_{ID_1}))

                        给定二级密文 C_{ID_2}=(U_2,V_2)ID_2计算        ​​​​​​​         

        ​​​​​​​        m=U_2\bigoplus H_3(\hat{e}(V_2+SK_{SK_{ID_2}},PK_{ID_2}+H_2(PK_{ID_2})(H_1(ID_2)P+P_{pub})

无证书签名

        1)签名:

                1)签名者随机选择一个r\in Z^*_p

                2)签名者计算一个承诺t=g^r.

                3)签名者计算哈希值h=H_4(m,ID,PK_{ID},t),和一个签名S=(r+h)SK_{ID}.

                4)签名者发送消息m, 签名\sigma =(h,S),身份ID和公钥PK_{ID}给验证者。

        2)验证:

                1)给定消息m,签名\sigma =(h,S)身份ID和公钥PK_{ID},验证者计算        

        ​​​​​​​        ​​​​​​​        t'=\hat{e}(S,PK_{ID}+H_2(PK_{ID})(h_1(ID)P+P_{pub}))g^{-h}.

                        h^*=H_4(m,ID,PK_{ID},t')

                2)验证者检查等式h^*=h是否成立。如果是,签名合法。否则,签名不合法。

加密去重方案

        首先给出总体架构图如图三所示:

初始化

                1. 文件分块:M:(m_1,m_2,...,m_n),分别计算文件块的指纹h_i=H_1(m_i)

                2. 计算密文:c_i=Enc(h_i,m_i)。   T_{M_1}=H_1(M), T_{M_2}=H_1(c_1||c_2||...||c_n)  然后,文件M的标签为T_M=(T_{M_1}||T_{M_2})   T_{M_2}用于完整性验证。 文件块的标签为T_{c_i}=H_1(c_i).

                3. 一级密文C_i=EncPr(h_i||c_i),根据无证书的代理重加密计算而来。

                4. 客户端设置数据块映射表映射为文件指针,它指向第一个密文。客户端将数据块的签名设置为无证书方案: \sigma _i=(h_i,S_i) , h_i=H_4(c_i,ID_i, PK_{ID_i},t), S_i=(r+h)SK_{ID_i}

                5. 对于文件M ,数据块映射表Maps采用无证代理重加密方案进行加密C_M=EncProxy(Maps).然后,CSP存储(T_M||C_M||C_1||C_2||...||C_n)和客户端的信息ID,他的公钥PK_{ID}以及(T_{C_i}||C_i||\sigma _i)

块数据所有权证明

                1.生成挑战: 当CSP接收到客户端的块标签T_{c_i}时,CSP检测该块标签是否存在。如果存在,CSP生成块挑战信息challenge=\left \{ {ID_i||S_i||a_i||PK_{ID_i}} \right \}  ,a_i=g^{-h_i}   S_i是签名。发送给用户挑战。

                2. 挑战应答:计算t'=\hat{e}(S_i,PK_{ID_i}+H_2(PK_{ID_i})(H_1(ID_i)P+P_{pub}))a_{i}. 计算h^*=H_4(c_i',ID_i,PK_{ID_i},t')    这里c_i'由客户端生成。发送h*给CSP。

                3. 所有权证明:CSP收到h*后与h_i比较,如果满足,客户端可能不需要上传此块,CSP向客户端发送一个块指针;否则,CSP向客户端发送错误信息。

                4. 上传新块:CSP接收到客户端的块标签T_{c_i}后,检测该块标签是否存在。如果不存在,CSP将向客户端发送一个上传的请求。

                        •客户端初始化数据块,上传所有块密文C_i、块签名\sigma _i和块标签T_{c_i}

                        •CSP存储所有块密文,将客户端身份信息添加到数据库中,并向客户端发送一个块数据指针。

文件所有权证明

                1. 生成文件质询: 当CSP接收到客户端的文件标签T_M时,CSP检测文件标签是否存在。如果存在, CSP向客户端生成文件挑战信息,生成步骤如下:

                       1) CSP将文件分成m个固定大小的块,然后生成x个从1到m的随机数. R={r_1,r_2,...,r_x} \forall r_i,r_j\in R(i\neq j),r_i\neq r_j.

                        2) CSP选择一个随机数X_i \in Z^*_q ,\forall i\in R组合成挑战信息challenge=\left \{ i||X_i||ID_i||a_i||S_i||PK_{ID} \right \}_{\left \{ i\in R \right \}},发送给用户。

                 2. 对挑战的响应: 客户端收到挑战后,进行计算t'=\hat{e}(S_i,PK_{ID_i}+H_2(PK_{ID_i})(H_1(ID_i)P+P_{pub}))a_{i}h^*=H_4(c_i',ID_i,PK_{ID_i},t'), Proofs=\sum h^*X_i.发送给CSP。

                3. 所有权证明:当CSP接收到客户端的响应证明时,CSP需要检测响应证明是否为真。下面的步骤是验证过程

                        1)CSP验证Proofs=\sum h_i X_i,如果满意,客户端不需要上传的文件。

                        2)  CSP将客户端的身份信息存储到数据库中,并向客户端发送一个文件指针。如果不满足,CSP将向客户端发送错误信息

                4. 上传新文件:当CSP接收到客户端的文件标签T_M时。CSP检测文件标签是否存在。如果不存在,CSP将向客户端发送一个上传请求。客户端需要计算一些信息,计算过程如下:

                        1) A客户端初始化文件并发送给CSP这些信息:(T_M||C_M||C_1||C_2||...||C_n)身份信息ID_i,所有区块标签和签名(T_{c_i}||C_i||\sigma _i)

                        2) CSP存储从客户端上传的所有信息。

解密

        如果客户端希望从CSP下载文件M,则需要完成以下步骤:

        (1)客户端将文件M的标签T_M及其身份信息ID发送给CSP。

        (2) CSP接收到文件标签和身份信息后,需要检测文件标签和身份信息是否正确。如果是真的,那么客户端就会通过所有权证明。CSP设置时钟t,使用re-key将文件M的一级密文C_M转换为二级密文C_M'。CSP将第二层密文发送到客户端。如果为false, CSP将向客户端发送错误信息。在验证过程中,CSP需要额外发送c '给用户。

        (3)客户端接收到第二层密文后,对密文进行解密,得到区块映射。客户端需要在时间t期间使用map从CSP下载所有块二级密文。客户端使用其私钥解密第二级密文。然后客户端得到一个收敛的密文和一个收敛的密钥,计算出T_{M_2} =H_1(c_1||c_2||...||c_n).并验证其为真。如果为真,客户端使用收敛密钥对收敛密文进行解密,通过对称加密得到明文。如果为false,则表明CSP向客户端发送了不完整的密文。

        (4)如果客户端未能在时间t内完成以上步骤,CSP将提示超时错误,并且可能不响应客户端的下载请求。客户端下载M需要重复步骤(1)到(3)。

总结:

        本文的方案采用无证书的方式,避免了证书管理和密钥托管的问题。该方案还使用所有权证明对所有客户端进行验证,避免了暴力字典攻击,提高了密钥的安全性。

缺陷:为了共享数据,我们需要计算重新加密密钥并存储在云中。

优势:文中给出了详细的安全性证明,据我所知,这是为数不多在去重领域安全性分析较为完善的文献。

  • 35
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值