一种基于平衡的梅肯哈希树的动态云数据完整性验证方法

文档序号:9376175阅读:328来源:国知局
一种基于平衡的梅肯哈希树的动态云数据完整性验证方法
【技术领域】
[0001] 本发明属于云存储技术领域,涉及一种动态数据和数据完整性验证方法,具体涉 及一种基于平衡的梅肯哈希树的动态云数据完整性验证方法。
【背景技术】
[0002] 云服务器提供商(CSP)提供的储存即服务是一种允许组织机构将重要数据存在 远程服务器上的服务。
[0003] 得益于云计算,用户可以将数据远端存储在云上,并且从一个可配置的共享计算 资源中享受优质服务和应用。但事实上,用户确实失去了外包数据的实质占有,这使得云计 算中数据完整性验证成为挑战,尤其在用户计算能力有限的环境下。因此,让数据允许被公 开审计就显得尤为重要。所以用户可以让第三方审计TPA去审核数据的完整性。TPA需满 足以下两个条件:
[0004] (I)TPA可以在不访问本地数据的前提下审计数据完整性,同时又不能给用户造成 在线的压力;
[0005] (2) TPA不能给数据保密性带来缺陷。
[0006] 云计算被预测为未来IT企业的主架构。它把数据和应用集中在大数据中心,即使 数据的管理者不能被完全信任,以至于产生了很多安全问题。因此引入第三方审计TPA代 替客户端完成对存储在云端的数据进行完整性验证。第三方审计TPA的引入使得客户端用 可接受的规模完成了数据完整性的验证。由于云端的服务并没有限制备份数据,所以动态 数据的实现对实用性方面有极大促进。为了高效实现数据动态,引入梅肯哈希树(Merkle Hash Tree)对分块进行完整性验证。
[0007] 考虑实际情况,用户多数情况下会在文件尾追加信息。而已有的插入方法没有考 虑到Merkle Hash Tree的平衡性,因此会造成树型结构退化成线性结构,降低动态修改的 时间效率。

【发明内容】

[0008] 本发明基于【背景技术】的研究成果,并利用平衡二叉树结构,实现了动态数据完整 性验证。
[0009] 本发明所采用的技术方案是:一种基于平衡的梅肯哈希树的动态云数据完整性验 证方法,其特征在于,包括以下步骤:
[0010] 步骤1 :定义双线性映射e:GXG = GT,其中G是一个Diffie-Hellman群,Gt是另 一个素阶数乘法循环群,定义g是G的生成元;
[0011] 步骤2:客户端选取随机值a -Zp,Zp为素数,计算v - ga,并定义密钥Sk= α, 公钥pk = V ;
[0012] 步骤3 :针对每一个文件,客户端对文件F进行分块F = (nv m2, . . .,nv mn),选取 u - G,对每一个分块计算签名(67, ;)· i/M y,然后客户端基于梅肯哈希树构造 根节点R并计算R的签名Sigsk(H(R)) - (H(R))α,其中叶子节点是文件分块的哈希,然后 将F、{ σ J、SigskOl(R))发送给服务器;
[0013] 步骤4 :当客户端请求第三方审计TPA进行数据完整性验证时,第三方审计TPA选 取随机C个分块(S1, S2. .. SJ,并对每个分块选取随机值Vl- Z ρ,之后第三方审计TPA向服 务器发出申请,并发送分块随机值的集合IvJ和C个分块下标的集合{S};
[0014] 步骤5 :服务器收到第三方审计TPA的申请之后,分别计算如下内容:
[0015]
[0016] ·
[0017] 然后将{ μ,O,H(HI1),{ σ J }和C个叶子节点到根节点路径上的所有兄弟节点信 息发送给第三方审计TPA ;
[0018] 步骤6 :第三方审计TPA依据收到信息重新构造梅肯哈希树根节点R,之后验证:
[0019] e (SigskH(R),g) = e (H(R),ga);
[0020]
[0021] 若发现上述两个等式如果有任意一个不满足,则返回false表明数据被篡改,否 则返回true表明验证通过。
[0022] 作为优选,步骤3中所述的将文件F进行分块F = (ηνην . . .,ηνπιη)后发送给服 务器后,对存储在服务器中的文件某一个分块进行修改、添加一个分块或者删除一个分块, 需要更新服务器上的相应的签名信息,对数据进行动态更新。
[0023] 作为优选,所述的对分块进行修改,其具体实现过程是用户选择第k个分块,将其 内容由C修改为C*,则该分块的哈希值由H(C)变为H(O),然后更新梅肯哈希树并生成新 的根节点,最后交给客户端签名后存储。
[0024] 作为优选,所述的添加一个分块,假设用户要在第k分块后插入一个分块,假设第 k分块对应的叶子节点为K,则分以下四种情况处理;
[0025] 情况一 :LL型旋转;
[0026] 若节点X的左儿子深度减去右儿子深度大于1时,即出现L型不平衡状态,X为不 平衡节点;再对于X的左儿子来说,若其左儿子深度大于右儿子深度,则为LL型不平衡状 态;
[0027] 旋转方式为:X的左儿子的父亲改为X的父亲,X变为X的左儿子的右儿子,X左儿 子的右儿子变为X的左儿子;
[0028] 情况二:LR型旋转;
[0029] 若对于X出现L型不平衡状态,但是对于X的左儿子,其右儿子的深度大于左儿 子,则出现LR型不平衡状态;
[0030] 旋转方式为:先经过一次旋转使之变为LL型不平衡,再利用LL型旋转使之平衡;
[0031] 情况三:RR型旋转;
[0032] 若节点X的左儿子深度减去右儿子深度小于-1时,即出现R型不平衡状态,X为 不平衡节点;在对于X的右儿子来说,若其右儿子深度大于左儿子深度,则为RR型不平衡状 态;
[0033] 旋转方式为:X的右儿子的父亲改为X的父亲,X变为X的右儿子的左儿子,X右儿 子的左儿子变为X的右儿子;
[0034] 情况四:RL型旋转;
[0035] 若对于X出现R型不平衡状态,但是对于X的右儿子,其左儿子的深度大于右儿 子,则出现RL型不平衡状态;
[0036] 旋转方式为:先经过一次旋转使之变为RR型不平衡,再利用RR型旋转使之平衡;
[0037] 以上四种旋转方法均不会改变梅肯哈希树的叶子节点顺序。
[0038] 作为优选,所述的删除一个分块,其具体实现过程是用户选择第k个分块,假设第 k个分块对应的叶子节点为K,删除K之后将K的父亲节点用K的兄弟节点代替,继而删除 K的兄弟节点;完成删除操作之后,会出现添加一个分块操作中出现的不平衡现象,按照处 理添加一个分块操作中出现的不平衡现象的方法处理此处的不平衡现象。
[0039] 本发明的有益效果:通过对上传的文件进行分块,实现对文件的动态修改;通过 对每一个分块文件进行签名作为叶子结点建立梅肯哈希树,实现对文件的动态审计;为了 提高动态审计的时间效率,引入平衡二叉树的概念,通过部分结构的旋转避免梅肯哈希树 的退化。
【附图说明】
[0040] 图1 :为本发明实施例的流程图;
[0041] 图2 :为本发明实施例的在文件尾部反复追加分块效果图;
[0042] 图3 :为本发明实施例的添加一个分块的LL型旋转效果图;
[0043] 图4 :为本发明实施例的添加一个分块的LR型旋转效果图;
[0044] 图5 :为本发明实施例的添加一个分块的RR型旋转效果图;
[0045] 图6 :为本发明实施例的添加一个分块的RL型旋转效果图。 具体实施方案
[0046] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发 明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不 用于限定本发明。
[0047] 请见图1,本发明提供的一种基于平衡的梅肯哈希树的动态云数据完整性验证方 法,包括以下步骤:
[0048] 步骤1 :定义双线性映射e:GXG = GT,其中G是一个Diffie-Hellman群,Gt是另 一个素阶数乘法循环群,定义g是G的生成元;
[0049] 步骤2 :客户端选取随机值α - Zp,Zp为素数,计算V - g a,并定义密钥sk = α, 公钥pk = V ;
[0050] 步骤3 :针对每一个文件,客户端对文件F进行分块F = (nv m2, . . .,nv mn),选取 u -G,对每一个分块计算签名σ, ,.然后客户端基于梅肯哈希树构造 根节点R并计算R的签名sigsk(H(R)) - (H(R)) °,其中叶子节点是文件分块的哈希,然后 将F、{ σ J、SigskOl(R))发送给服务器;
[0051 ] 步骤4 :当客户端请求第三方审计TPA进行数据完整性验证时,第三方审计TPA选 取随机C个分块(S1, S2. .. SJ,并对每个分块选取随机值Vl- Z ρ,之后第三方审计TPA向服 务器发出申请,并发送分块随机值的集合IvJ和C个分块下标的集合{S};在分块损坏比例 为t的情况下,审计的正确率为l-(l-tr,当t = 1%时,当c = 459的情况下,其具有99% 的准确率。
[0052] 步骤5 :服务器收到第三方审计TPA的申请之后,分别计算如下内容:
[0053]
[0054] .
[0055] 然后将{ μ,〇,H(Hi1),{ σ
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1