基于多副本Merkle哈希树的动态数据完整性验证方法及系统

文档序号:36995765发布日期:2024-02-09 12:36阅读:20来源:国知局
基于多副本Merkle哈希树的动态数据完整性验证方法及系统

本发明属于云存储数据安全,涉及一种云存储动态数据完整性验证方法及系统,具体涉及一种基于多副本merkle哈希树的云存储动态数据完整性验证方法及系统。


背景技术:

1、云技术是一种新型的信息处理技术,它是一种以数据为中心的分布式计算模式。云计算技术是通过对用户任务进行分配,然后对每一次计算的结果进行调整和整合,最终实现任务的。所以,可以把云计算技术称作网格计算。云计算技术在为用户提供计算能力的同时,也为其提供了海量数据的存储服务。云存储其既具备了存储和管理一体化的特点,又能为用户提供随时随地使用、按需租赁等方面的服务。云存储最大的优点就是可以为用户节约大量的数据存储空间。由于云存储能够为使用者提供优质的资料储存与运算服务,因此受到使用者的普遍欢迎。

2、随着云存储的广泛使用,其安全性问题日益突出。云存储系统的安全性是一个长期存在的、被广泛关注的问题。云存储的安全性问题,主要涉及了在云中存储的数据的机密性,可用性和完整性。

3、云存储数据的安全性问题,是指存在于云计算环境下的数据,存在着被人篡改的危险。在访问数据时,如果发现数据已被更改或删除,则为时已晚,因为此时数据已不可用或不能被还原。因此,用户必须能够确认储存在服务器中的资料是否与最初的资料完全相符。即云存储供应商必须能够保证其在不是故意修改的情况下,保持其原有的数据完整性。一般情况下,客户机没有足够的存储空间,因此,客户机一般不能存储太大的数据。与此同时,对数据的远程存储也有更为特殊的性能需求,这是因为文件数据可能很大,而且还被存储在很远的地方,因此,在对文件的完整性进行认证时,并不需要用户下载整个文件数据,否则会造成难以承受的网络传输代价。

4、另外,在验证期间,如果服务器必须阅读全部文件,那么服务器的成本将会很高。在满足上述条件的同时,也有可能存在下列情况的约束,某些已存储的数据并不是静态的。即储存在一个远端的服务器中的数据是不断地按照用户的需求来进行更改(插入,修改,删除)的。而且,在完成了更新之后,用户也可以确认这些数据的完整性。为了解决该问题,研究者们提出了一种用数据持有性证明(provabledata possession,pdp)来检查存储在云端的数据的完整性的方法。


技术实现思路

1、为了解决现有数据完整性验证方案中存在的批量验证、数据动态操作效率低的问题,本发明结合pdp方法和多副本merkle哈希树数据结构,提供了提出了一种基于多副本merkle哈希树的云存储动态数据完整性验证方法及系统。

2、本发明的方法所采用的技术方案是:一种基于多副本merkle哈希树的动态数据完整性验证方法,包括以下步骤:

3、步骤1:生成密钥,客户端输出一对公私密钥对;

4、步骤2:生成数据块标签,用户端采用多副本merkle哈希树数据结构处理数据文件,构造元数据,产生数据块对应的标签;

5、步骤3:验证者生成对应挑战信息,发送挑战请求,云服务器根据请求执行证据生成算法生成应对挑战的响应信息,并将生成的响应信息发送给等待的服务端或者第三方验证者;服务端或者第三方验证者对服务端返回的响应信息的正确性进行检验,验证通过后发回给用户;

6、步骤4:数据更新及验证,数据更新之后服务器内生成更新证据;用户或者第三方验证者验证服务器返回数据的更新操作是否正确。

7、作为优选,步骤1中,随机选取一个双线性映射e:g1×g2→g,客户端生成一个秘密值以及g生成器,其中,g1、g2和g是阶为p>2k循环群,g为g1的生成元,k∈n;计算v=gα作为公钥,客户端生成一个随机签名密钥对{spk,ssk},输出{ssk,α}作为秘钥,输出{spk,v,g}作为公钥。

8、作为优选,步骤2中所述多副本merkle哈希树数据结构,原始文件f={m1,m2,...,mn}的第j个副本表示为副本块bi,j能从mi转换而来,且这种转化是可逆的;其中,c为原始文件f的副本数量,各个副本彼此不同,每一个副本被独立处理和拥有自己的认证器;

9、存储在非叶子节点p中的值是由其子节点的哈希值和其他两个指数l(p)和r(p)计算,其中,l(p)为节点v的层数,r(p)为从节点v可达到树底层的最大节点数;叶子节点的层数是按照自上而下的顺序定义;存储在叶子节点中的数值为h(1||l(bi,j)||h(bi,j),存储在非叶子节点中的数值为h(r(p)||l(p)||hleft||hright),其中hleft和hright分别表示存储在左子节点和右子节点中的数值;

10、原始文件f的所有副本组成为一个子树rst,子树rst的根表示为hi,用ωi来表示hi的辅助身份验证信息aai,定义ωi为{h,l,q,d}的元组,h为该节点上存储的哈希值,l为该节点的层数级别,q表示该节点具有的叶子节点的最大数量,d表示一个布尔值;定义基于{mi}的副本子树ti中所有中间节点的元组集合γi为{h,l,q,t};t表示一个布尔值,t值的含义代表了节点的位置,是在验证路径左边或者右边。

11、作为优选,步骤2的具体实现包括以下子步骤:

12、步骤2.1:从第一个原始文件f={m1,m2,...,mn}开始,将其第j个副本表示为副本块bi,j能从mi转换而来,而且这种转化是可逆的;其中,c为原始文件f的副本数量,各个副本彼此不同;

13、步骤2.2:基于多副本merkle哈希树构建副本块bi,j,计算出根节点t的哈希值r和带有ssk的数字签名sig;

14、步骤2.3:客户端选择一个随机元素g1→u,客户端根据私钥α计算每个副本块bi,j的标签其中,h(m)为消息m的哈希值;

15、步骤2.4:输出{bi,j,σi,j,sig}并将其上传至云服务器端。

16、作为优选,步骤3的具体实现包括以下子步骤:

17、步骤3.1:验证者tpa生成对应挑战信息{siga∪th,vi,j},其中,siga∪th代表的是授权,vi,j是为了对信息进行验证所需要选中的随机指数集,

18、步骤3.2:云服务器端验证siga∪th,然后计算出每个副本的和μj=∑jvi,jbi,j值,然后在验证者tpa中重新再现结果{μj,σj,{h(bi,j),h(bi,j),ωi}i∈i′sig};其中,h(bi,j)是副本块bi,j的hash值,h(bi,j)=h(1||l(bi,j)||h(bi,j));验证阶段,验证者tpa会抽取c个需要进行验证的文件块来进行验证,文件块集合定义为i′={s1,s2,…,sc};

19、步骤3.3:计算r值并对每一个选择的块的{h(bi,j),ωi}进行验证,通过h(bi,j)=h(1||l(bi,j)||h(bi,j))去验证其真实性;如果验证通过,验证者tpa将认证验证的是真实的,那么它将通过验证作为优选,步骤4中,为验证更新,用户端首先解析pupdate的语义pupdate={{h(bi,j)},ωi,r′,sig},让ωi中的元组π成为每个节点nk中的(fk,lk,qk,dk),其层级的递减顺序为l1=l(hi),...,lπ-1=2,lπ=1;其中,r′是服务器端根据客户端的更新请求对存储数据进行更新后,根据更新后的默克尔哈希树生成的根;fk为ωi中的第k个元组,lk是节点的层数,qk是等级值,dk表示该节点是左子节点还是右子节点;

20、验证1:用户端为验证路径上的节点nk,k=1,...,π,迭代计算出元组(λk,ηk,ξk,ζk),其中,(λk,ηk,ξk,ζk)是一个用于验证变量的元组,对于每个成功的验证,经过ωi和r的迭代运算,将成为总的文件块数;

21、如果dk=1:λk=qk-1+λk-1,ηk=h(λk||lk||fk||ηk-1),则ξk=ξk-1+qk和ζk=ζk-1;

22、如果dk=0:λk=qk-1+λk-1,ηk=h(λk||lk||fk||ηk-1),则ξk=ξk-1和ζk=ζk-1+qk;

23、且满足η0=h(bi,j),λ1=1,ζ0=0,ζ0=0时,{λπ,ηπ,ξπ,ζπ}被证明存在,用户端将同时验证r=ηπ、当ξπ=i-1时ζπ=n-i是否同时成立,如果该三个值通过了验证,ωi的真实性和它的索引将被确认;

24、验证2:对于删除操作,用户端必须验证h(bi,j),其rst的根被存储为h(bi,j),h(b3,j)和h(b4,j)表示同一层级的数据,唯一的区别是l(b3,j)=l(b4,j)-1;其中,一个文件块的所有副本组成为一个子树,称之为rst;

25、对于单块删除,是指删除指定的块,并将后面的所有块向前移动一个块;假设服务器收到删除块mi的更新请求,它将从其存储空间中删除mi,删除mht中的叶节点mi,并生成新的根元数据rnew,验证阶段若rnew=r′则验证通过,返回成功;

26、验证3:对于插入操作,在数据文件f的某些指定位置后插入新的块;假设客户端想要在第i个块后面插入块m1;首先,基于m1,客户端生成一个相应的标签σ1=(h(m1)·um1)α;其中,u是客户端选择的一个随机生成元u←g1;然后,创建一个更新请求消息update=(i,i,m1,σ1),将这个消息发送到服务器,i表示插入操作;收到请求后服务器运行execupdate(f,φ,update);其中,φ表示标签集φ={σi};

27、验证4:在rst的结构下,用户将用h和h(bi,j)计算出带有ωi的哈希值并与之前做出对比;

28、在从服务器接收到插入操作的证明后,客户端首先使用{ωi,h(mi)}生成一个根rnew,将rnew与,r′进行比较,如果相等则验证通过。

29、若上述4个验证结束都没有出现异常,则证明服务器端对于所有副本结构的数据更新都如实地完成,没有出现问题,用户将更新总块数n和σi,j并存储在服务器上。

30、作为优选,步骤4中,一次性对给定标记集的所有副本块进行验证;具体实现过程为:第三方审计tpa生成挑战信息{siga∪th,i,ci,j},并将其发送;云服务器端验证siga∪th,然后计算出每个副本的和μj=∑jvi,jbi,j值,然后在第三方验证者tpa中重新再现结果{μj,σj,{h(bi,j),h(bi,j),ωi}i∈i′sig};第三方验证者tpa计算r值并对每一个选择的块的{h(bi,j),ωi}进行验证,通过h(bi,j)=h(1||l(bi,j)||h(bi,j))去验证其真实性;如果验证通过,tpa将认证验证的是真实的,那么它将通过验证若上述等式皆成立,则输出“接受”,否则输出“拒绝”。

31、本发明的系统所采用的技术方案是:一种基于多副本merkle哈希树的动态数据完整性验证系统,包括以下模块:

32、密钥生成模块,用于生成密钥,客户端输出一对公私密钥对;

33、数据块标签生成模块,用于生成数据块标签,用户端采用多副本merkle哈希树数据结构处理数据文件,构造元数据,产生数据块对应的标签;

34、证据生成及验证模块,用于验证者生成对应挑战信息,发送挑战请求,云服务器根据请求执行证据生成算法生成应对挑战的正确信息,并将生成的正确信息发送给等待的服务端或者第三方验证者;服务端或者第三方验证者对服务端返回的证据的正确性进行检验,验证通过后发回给用户;

35、更新执行及验证模块,用于数据更新之后服务器内生成更新证据;用户或者第三方验证者验证服务器返回数据的更新操作是否正确。

36、相对于现有技术,本发明的有益效果是:解决了当前的数据完整性验证方案批量验证、数据动态操作效率低、质量差等方面的问题。从安全角度来看,本方案面对可能不诚实的云服务商能保证其正确性和安全性。从功能上能够基于动态数据持有性验证原理较好地实现云端动态数据插入、修改、删除、查询等操作过程中对数据完整性验证的需求。从性能上来看,本方案在存储开销、计算开销和通信开销中具有明显的优势。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1