SecDedup: Secure data deduplication with dynamic auditing inthe cloud

Li Peng, Zheng Yan ∗, Xueqin Liang, Xixun Yu

针对问题

        现有方案存在安全缺陷,容易遭受复制伪造攻击、文件所有权欺骗攻击、文件篡改攻击等一系列攻击。此外,很少考虑和审计动态数据操作。针对上述问题,本文提出了一种基于动态审计的安全去重方案SecDedup。SecDedup采用同态认证机制,设计了一种优化存储的多功能数据标签,在支持重复数据删除和审计的同时,保证了其能够抵抗上述各种攻击。特别地,在数据标签中嵌入多集合哈希函数,实现动态数据审计。SecDedup支持批量审计,优化了多个重复数据删除审计任务的计算开销。

文章贡献

(1)设计了SecDedup,优化了标签存储开销,实现了高效的去重和审计;

(2) SecDedup是第一个能够同时抵抗伪造重复攻击、文件所有权欺骗攻击和文件篡改攻击的加密云数据去重方案;

(3)采用多重哈希函数更新动态标签,实现对重复数据删除过程中动态数据操作的审计;

(4) SecDedup采用批量审计的方式,在面对大规模审计任务时能够提供优化的性能;

问题陈述

系统模型

        数据所有者(DO): DO是拥有数据的云用户,数据所有者对其数据进行加密,并将其外包给云存储,提供索引信息,即标签。

        CSP (Cloud Service Provider):云服务存储第一个上传者上传的加密数据,并为后续上传者执行重复数据删除。此外,当委托第三方审计机构(TPA)对云存储的数据进行审计时,CSP负责生成相应的审计证明。

        第三方审计员(TPA): TPA是位于CSP和DO之间的第三方,执行DO委托的审计任务。一般情况下,TPA具备专业的数据验证知识和足够的计算资源,能够提供令人信服的审计结果。TPA代表DO,通过质疑CSP来调用审计程序。在收到来自CSP的证明后,TPA将验证数据完整性并通知审计结果。

安全模型

        CSP不能完全可信。它遵循SecDedup协议的设计。但它可能会因为损坏或无意的错误而发起文件篡改攻击,在没有用户授权的情况下故意删除或修改用户的个人数据。它还可能试图隐藏数据损坏的事实,以保持其声誉。

        DO也不能完全信任,它可能发起复制伪造攻击或文件所有权伪造攻击,从而破坏检索数据的正确性,破坏数据的机密性。

        TPA诚实但好奇,这意味着TPA在审计过程中诚实执行,但可能对DO数据的敏感信息好奇。假设TPA服务可以根据DO优先级从CSP维护的可信服务列表中选择,超出范围的选择将导致CSP的协议终止。TPA没有动机与CSP勾结,因为这可能会影响其业务并损害其声誉。此外,我们假设SecDedup通过应用现有的一些方法[4,18,28],应用了一种有效的措施来抵抗蛮力攻击。因此,抵抗这种攻击并不是我们设计的重点。

 三种攻击手段

         重复伪造攻击(Duplicate Attack, DFA):重复数据删除后,CSP中只保存一份数据副本。恶意的DO(被攻击者损坏)可能在数据上传时启动DFA,使数据的副本与相关标签不一致,随后的合法DO将无法获取原始正确的数据。

        文件所有权欺骗攻击(FOSA):在重复数据删除中,如果DO上传的机密文件的短哈希值以某种方式泄露给后续用户,则后续用户可能会声称该文件的所有权。成功的所有权欺骗后,后续用户可以从不属于自己的云中获得整个文件,这破坏了数据机密性。

        文件篡改攻击(FTA): CSP可能为了节省存储空间,忽略保存甚至故意删除属于普通DOs的很少被访问的数据,破坏数据的完整性。

标签一致性

如果没有使用概率多项式时间(PPT)算法的敌手\mathcal{A},即在后续的标签一致性博弈中具有不可忽视的优势,则该方案能够实现标签一致性。

1)设置: 挑战者\mathcal{C}生成并发送给\mathcal{A}所有系统参数P

2)输出:\mathcal{A}输出(m,i,c).使T_i=B-TagGen(c_i), T_M=F-TagGen(M-KeyGen(\left\{m_i\right\}_{1\leq i\leq n})).如果,ConTest(T_i,c_i,T_m)=0,输出 0. 否则,如果m_i\neq Decrypt(c_i,B-KeyGen(m_i)),输出1.

将这样的敌手\mathcal{A}称为DFA对手,并定义\mathcal{A}的优势Adv_{DFA}^{\mathcal{A}}为上述博弈输出1的概率;

定义:(标签一致性)如果对于任何一个PPT DFA敌手\mathcal{A},其优势Adv_{DFA}^{\mathcal{A}}可以忽略不计,那么该方案就是DFA安全的。

PoW安全性

        为了提供针对FOSA的安全性,需要支持PoW,使DO能够向CSP证明它拥有整个文件的副本,而无需实际发送文件。我们考虑了攻击者知道文件的部分信息(有界的块数)就可以使CSP相信它拥有整个文件的可能性。如果没有PPT攻击者\mathcal{A}在以下FOSA游戏中对挑战者具有不可忽视的优势,那么一个方案据说可以实现PoW安全:

        设置:挑战者\mathcal{C}生成并发送给\mathcal{A}所有系统参数𝑃。

        挑战:\mathcal{A}向挑战者\mathcal{C}发送一个有效的源MC运行(M,Z) \leftarrow M(k),将证明查询Q和辅助信息Z发送到\mathcal{A}.

        输出:\mathcal{A}生成PoW证明P。如果PoWVerify(P ,\left\{T_i \right \}_{1\leq i\leq n },Q) 返回1;否则返回0. 将这样的对手\mathcal{A}称为FOSA对手,并定义\mathcal{A}的优势Adv_{FOSA}^{A,M}为游戏输出1的概率。

定义2。(PoW安全性)。一个方案是FOSA安全的,如果对任何PPT FOSA对手\mathcal{A},优势Adv_{FOSA}^{A,M}是可以忽略不计的。

审计安全性

        应该提供数据完整性以保护FTA的安全性。在该方案中,审计允许TPA按需验证CSP数据的完整性,并确保任何作弊的CSP不能在不完整存储数据的情况下通过TPA的挑战。通过FTA博弈给出了形式化的安全性定义,其本质是在自适应选择消息攻击[1]下标准不可伪造性的变形.

设置:挑战者C执行设置算法并获取系统参数和公共参数。C发送公共参数到\mathcal{A}

查询:在此阶段,敌手\mathcal{A}向挑战者C进行以下两个查询。

        a)\mathcal{A}可以自适应选择数据𝑚={𝑚𝑖} 1≤𝑖≤𝑛查询C执行KeyGen算法。输出文件主密钥和块密钥由C在本地保存和记录。

        b)\mathcal{A}可以自适应地选择数据𝑚={𝑚𝑖} 1≤𝑖≤𝑛, 从C请求𝑚对应的数据标签(𝑇𝑚,{𝑇𝑖} 1≤𝑖≤𝑛)。收到查询后,C查找本地保存的对应于𝑚的数据主键。如果发现,调用标签生成(TagGen)算法生成(𝑇𝑚,{𝑇𝑖}1≤𝑖≤𝑛),并将标签返回到\mathcal{A}

        c)C接收由\mathcal{A}发送的关于𝐻1、𝐻2或𝐻3的随机oracle查询。对于没有查询过的消息,C返回一个随机值;对于已查询的消息,C根据记录的历史返回相同的结果。

挑战: C生成挑战𝑄,并要求\mathcal{A}根据数据标签(T_m,\left\{ T_i\right\}_{1\leq i\leq n})为被挑战的数据块生成审计证明。

Forge:在收到C的挑战后,\mathcal{A}生成审计证明(审计证明)。如果AudVerify(\theta ,\left\{\sigma _j\right\}_{1\leq i \leq n}, Q,\left\{T_i\right\}_{(i,v_i)\in Q},H_1(c_i)_{(i,v_i)\in Q},T_m)返回1,C输出1,否则,输出0.

将这样的对手\mathcal{A}称为FTA对手,并将Adv_{FTA}^{\mathcal{A}}的优势定义为:作为游戏输出1的概率

定义3。(审计安全性)。一个方案是FTA安全的,如果任何PPT FTA对手不拥有所有的挑战数据块(例如,删除/修改一个或多个块),其优势Adv_{FTA}^{\mathcal{A}}是可以忽略不计的。

设计目标

功能

SecDedup支持加密数据去重。此外,该方案还应支持对动态数据的公共审计,例如借助TPA支持添加、删除等块级更新操作。

安全性

SecDedup应该实现安全模型下的安全性。

效率

SecDedup需要在计算、通信和存储开销方面达到较高的效率。设计的标签应同时支持重复数据删除和审计,以降低标签带来的存储开销。对于大量文件的处理,审计应该支持批处理操作,最小化计算和通信开销。

算法公式

此方案的算法设计如下:

初始化:Setup(1^k)\rightarrow params:由CSP运行的概率算法将安全参数𝑘作为输入,并输出公共参数𝑝𝑎𝑟𝑎𝑚𝑠。

密钥生成:KeyGen(𝑚)→(𝑘𝑚,{𝑘𝑖}):DO运行的概率算法将数据𝑚作为输入,并输出文件主密钥和一组分组加密密钥(𝑘𝑚,{𝑘𝑖})。

加密算法:Encrypt(𝑚𝑖,𝑘𝑖)→𝑐𝑖:DO运行的概率算法将数据块𝑚𝑖和块密钥𝑘𝑖作为输入,输出密文𝑐i.

解密算法:Decrypt(𝑐𝑖,𝑘𝑖)→𝑚𝑖:DO运行的确定性算法将密文𝑐𝑖和块密钥𝑘𝑖作为输入,输出数据块𝑚𝑖。

标签生成算法:TagGen(𝑘𝑚,𝑐𝑖)→(𝑇𝑚,{𝑇𝑖}):DO运行的确定性算法将文件主密钥𝑘𝑚和密文𝑐𝑖作为输入,并输出文件标记和一组块标记(𝑇𝑚,{𝑇𝑖})。

Eqtest(𝑇𝑖,𝑇'𝑖,𝑇𝑚,𝑇'𝑚):确定性算法由一个CSP作为输入文件标签(𝑇𝑚,𝑇'𝑚)以及块标记(𝑇𝑖,𝑇'𝑖),输出1(重复块)或0(没存储的块)。

ConTest(𝑇𝑖,𝑐𝑖,𝑇𝑚):由CSP运行的确定性算法将文件标记𝑇𝑚和块标记𝑇𝑖作为输入,并输出1(一致)或0(不一致)。

PoWProof(𝑘𝑚,𝑐,𝑄)→𝑝:由DO运行的确定性算法以文件主密钥𝑘𝑚、密文𝑐和随机挑战𝑄作为输入,输出PoW证明。

PoWVerify(𝑝,{𝑇𝑖},𝑄):由CSP运行的确定性算法将PoW证明𝑝、一组块标签{𝑇𝑖}以及随机挑战𝑄作为输入,并输出1 (true)或0 (false)。

AudProof(𝑐,{𝑇𝑖},𝑄)→(𝜃,{𝜎𝑗}):CSP运行的确定性算法以密文𝑐、一组块标签{𝑇𝑖}和随机挑战𝑄作为输入,输出完整性审计证明(𝜃,{𝜎𝑗})。

AudVerify(𝜃, {𝜎𝑗},𝑄,{𝑇𝑖},{𝐻1(𝑐𝑖)},𝑇𝑚):确定性算法由一个TPA作为输入审计证据(𝜃,{𝜎𝑗}),随机挑战𝑄,一组块标记{𝑇𝑖},一组块散列{𝐻1(𝑐𝑖)}以及文件标签𝑇𝑚,和输出1(真正的)或0(假)

预备知识

多集哈希函数

        设𝐺是一个难以求解离散对数问题的乘群,将𝐻∶{0,1}∗→𝐺定义为一个将字符串映射到组𝐺中的元素的密码学散列函数。对于一组输入𝑚={𝑚𝑖} 1≤𝑖≤𝑛的数据块,乘性增量哈希函数定义为:

MHash(\left\{m_i\right\}_{1\leq i \leq n})=\prod \limits_{i=1}^nH(i^*|m_i)这里i^*是块索引𝑖的二进制表示.

更新操作(添加或删除操作)可以通过相乘组元素或其乘法逆来执行。我们给出多重哈希函数的定义如下:

其中+𝐻和-𝐻分别是添加操作和删除操作,i^*_x是数据𝑥的索引,\left ( \cdot \right )^{-1}表示群的逆元操作。

基于bls的同态可验证验证器

请参看引用【2】。

SecDedup设计

设计概述

        一个关键挑战是克服封装数据文件以允许重复数据删除和保护的加密方案和标签生成方法的多样性。为了抵制FTA,我们采用挑战-响应的思想,要求TPA正确响应一个有挑战性的指数-系数对,通过验证生成的证明来审计文件和标签。为此,使用BLS-HVA生成包含整个文件信息的块级标签,从而实现批量审计。同时启用块级重复数据删除和审计是另一个挑战。本文还提出了一种基于块标签和文件标签的文件相等性判定算法,利用双线性对的性质实现了对块文件和文件标签的相等性判定,大大减少了标签存储空间。为了克服DFA,我们要求文件块与文件标记和块标记一致,以避免后续对原始文件的错误检索。利用双线性对的性质,提出了一种能够中止任何不一致三元组的验证算法。对于FTA的抵抗,验证算法要求对被质疑的区块生成聚合证明。在处理数据文件的动态操作(如重复数据删除中的添加或删除)时,需要更新文件密钥和标签,以维护后续操作的正确性。

算法设计

Setup(1^k):它将安全参数1^k作为输入,并输出一个公共参数

params = e, G_1, G_2,q,g,g_1, g_2,\cdot \cdot \cdot, g_s,H_1,H_2,H_3

G_1,G_2是素数阶为𝑞的两个循环乘群,e:G_1 \times G_1\rightarrow G_2表示一个双线性映射。g,g_1, g_2,\cdot \cdot \cdot, g_s是是s+1个随机元素。H_1: \left\{0 , 1\right\}^* \rightarrow G_1, H_2 : G_1\rightarrow Z^*_q, H_3: \left\{0, 1\right\}^* \rightarrow \left\{0, 1\right\}^k是三种抗碰撞的散列函数,MHash:\left \{ \left \{ 0,1 \right \}^* \right \}\rightarrow G_1是一种抗碰撞的多集散列函数,它支持快速更新散列结果而无需重新计算整个输入。

密钥生成算法KeyGen(m): 给定一个数据文件𝑚,该算法首先将𝑚分为𝑛 fix-sized块(例如,4 kB){𝑚1、𝑚2⋯,𝑚𝑛}和计算每个块的加密密钥𝑘𝑖 (𝑖= 1,2⋯𝑛)和数据文件的主密钥𝑘𝑚如下:

        B-KeyGen(𝑚𝑖):采取𝑚𝑖作为输入,输出𝑘𝑖=𝐻3(𝑚𝑖)∈{0,1}𝑘。

        M-KeyGen({𝑚𝑖}1≤𝑖≤𝑛):采取{𝑚𝑖}1≤𝑖≤𝑛作为输入,输出𝑘𝑚=𝑀𝐻𝑎𝑠ℎ({𝑚𝑖} ∈𝐺1 1≤𝑖≤𝑛);

        Encrypt(𝑚𝑖,𝑘𝑖):给定一个数据块𝑚𝑖和一个相关的块密钥𝑘𝑖作为输入,输出𝑐𝑖=𝐸𝑛𝑐(𝑘𝑖, 𝑚𝑖),其中𝐸𝑛𝑐是一个对称加密算法(例如AES)。

        Decrypt(𝑐𝑖,𝑘𝑖):给定块密文𝑐𝑖和对应的块密钥𝑘𝑖作为输入,输出𝑚𝑖=𝐷𝑒𝑐(𝑘𝑖, 𝑚𝑖),其中𝐷𝑒𝑐是对应于𝐸𝑛𝑐的对称解密算法

方案介绍

初始化阶段:生成系统参数params = e, G_1, G_2,q,g,g_1, g_2,\cdot \cdot \cdot, g_s,H_1,H_2,H_3并进行公开给CSP,TPA,DOs.

去重阶段:如图2所示:

Set: 块大小4KB,𝑘𝑖 = 𝐻3(𝑚𝑖)  1≤𝑖≤n  .文件主密钥 𝑘𝑚 = 𝑀𝐻𝑎𝑠ℎ({𝑚𝑖}1≤𝑖≤𝑛) 解密数据块得到密文Ci.     DO𝑢运行TagGen(𝑘𝑚,𝑐𝑖)以获得文件标记𝑇𝑚和一些块标记𝑇𝑖,其中𝑖= 1,2,⋯,𝑛。𝑇𝑖是block i 的BLS-HVA值。

2.4执行ConTest(𝑇𝑖, 𝑐𝑖, 𝑇𝑚)。如果满足e(T_i,g)=e(H_1(c_i)\prod \limits_{i=1}^n g_j^{c_{i,j}},T_m ).一致性测试的任何失败都会导致协议终止。否则,所有块都被认为是合法的,并存储其相关的标记。将数据的存储链接𝑚发送到𝑢,用于文件检索。对于启用细粒度重复数据删除,CSP通过执行EqTest(𝑇𝑖, 𝑇 ′ 𝑖 , 𝑇𝑚, 𝑇 ′ 𝑚)在块级进行重复检查,如果满足e(T_i,T_i ^{'})=e(T_i^{'},T_i ).则通过验证。

3.1: 𝑄 = {(𝑖, 𝑣𝑖)}1≤𝑖≤𝑛,𝑢 执行PoWProof(𝑘𝑚, 𝑐,𝑄) 生成证明 𝑝。验证过程中,CSP调用PoWVerify(𝑝,{𝑇𝑖}1≤𝑖≤𝑛,𝑄)来判断收到的证明𝑝是否有效({𝑇𝑖}1≤𝑖≤𝑛),并进行挑战查询,如下所示

Ppow=\prod \limits_{(i,v_i)\in Q} T_I^{v_i} ).PoW验证的任何失败都会导致协议终止。否则,𝑢被视为合格的数据持有者,并将数据𝑚的存储链接发送到𝑢。值得注意的是,𝑢应该发送所有块标记{𝑇𝑖}(𝑖,𝑣𝑖)∈𝑄,散列的密文块𝐻1(𝑐𝑖)(𝑖,𝑣𝑖)∈𝑄和文件标签𝑇𝑚.给TPA用于以后数据完整性审计。

审计阶段

剩下的批次审计与之类似不在赘述,有兴趣的可以参看置顶的原文链接。

【1】Mihir Bellare, Phillip Rogaway, Introduction to modern cryptography, in: UCSD CSE, vol. 207, 2005, p. 207.

【2】Hovav Shacham, Brent Waters, Compact proofs of retrievability, in: International Conference on the Theory and Application of Cryptology and Information Security, Springer, 2008, pp. 90–107.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值