一种基于区块链的数据完整性审计方法和系统技术方案

技术编号:22167773 阅读:172 留言:0更新日期:2019-09-21 10:57
本发明专利技术公开了一种基于区块链的数据完整性审计方法,包括:客户端向区块链平台发送审计请求;区块链平台在收到来自客户端的审计请求后产生p个不重复的随机数,使用所有p个随机数{s1,s2,…sp}作为索引号,分别获取存储在区块链平台的映射数组中对应位置的块号v,所有块号组成挑战数组,将挑战数组封装在审计挑战请求中,并将审计挑战请求发送到服务端,服务端对来自区块链平台的审计挑战请求进行解析,从而得到挑战数组,对该挑战数组进行遍历,以得到其中每个元素j对应的分块mj和标签σj,根据双线性运算算法对元素j、分块mi、以及标签σi进行运算。本发明专利技术是使用区块链平台作为审计第三方,提高了数据完整性审计时的安全性。

A Data Integrity Audit Method and System Based on Block Chain

【技术实现步骤摘要】
一种基于区块链的数据完整性审计方法和系统
本专利技术属于计算机安全领域,更具体地,涉及一种基于区块链的数据完整性审计方法和系统。
技术介绍
云存储是在云计算的基础上发展出来的一种在线存储,其拥有诸多优点,例如能够减轻本地存储负担、网络备份、成本较低等,因此越来越多的用户和企业选择将数据存储在云存储中。然而,云存储在给用户提供便捷服务的同时也面临着许多新的安全挑战,主要体现在用户不能参与对数据访问的决策,并且对文件是否如实地存储在云存储提供商(CloudStorageprovider,简称CSP)是存疑的,因此需要对用户存储在云端的数据进行审计(Audit),其主要目标是,在不获取原始数据的情况下确认服务端存储有用户数据。目前主流的审计方案大多是基于数据持有性证明(Provabledataprocession,简称PDP)方法来实现,其中根据审计发起方的不同和文件索引结构的不同有不同的审计方法,目前比较常见的是基于可信第三方的审计方法,例如使用默克尔树作为索引结构的默克尔哈希树-数据持有性证明(MerkleHashTree-PDP,简称MHT-PDP)方法,该方法通过将文件分块,然后使用默克尔树存储文件分块的索引结构,最后使用可信第三方来发起审计请求并进行验证的方式实现数据审计操作。然而,上述基于可信第三方的审计方法存在一些不可忽略的技术问题:在真实网络环境中,审计第三方可能被网络攻击者胁迫,或与CSP共谋,从而导致审计第三方最终出具的审计结果不可靠,并进一步影响用户数据验证结果的准确性。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于区块链的数据完整性审计方法,其目的在于,通过使用区块链在不可信环境中仍能以可信的方式工作的特性,解决上述现有的方法中存在的由于审计第三方不可信导致的审计结果不可靠、进而影响用户数据验证结果准确性的技术问题。为实现上述目的,按照本专利技术的一个方面,提供了一种基于区块链的数据完整性审计方法,其是应用在包括客户端、服务端、以及区块链平台的云环境中,所述数据完整性审计方法包括以下步骤:(1)客户端向区块链平台发送审计请求;(2)区块链平台在收到来自客户端的审计请求后产生p个不重复的随机数,使用所有p个随机数{s1,s2,…sp}作为索引号,分别获取存储在区块链平台的映射数组中对应位置的块号v,所有块号组成挑战数组chal={v1,v2,…vp},将挑战数组chal封装在审计挑战请求中,并将审计挑战请求发送到服务端,其中随机数集合中的每个随机数均小于映射数组的大小n。(3)服务端对来自区块链平台的审计挑战请求进行解析,从而得到挑战数组chal,对该挑战数组chal进行遍历,以得到其中每个元素j对应的分块mj和标签σj,根据双线性运算算法对元素j、分块mi、以及标签σi进行运算,以产生审计结果μ和β,并将审计结果μ和β、挑战数组chal、分块mi的哈希值h(mi)发送到区块链平台,其中j∈[v1,v2,…vp];(4)区块链平台根据来自服务端的审计结果μ和β、挑战数组chal、哈希值h(mi)判断审计是否成功,并将审计的最终结果通知客户端。优选地,审计请求中存储有待审计文件的文件ID。优选地,步骤(2)中产生的随机数p的取值是取决于审计请求对应的数据块挑中损坏数据块的概率Px、数据块的总数f、以及损坏数据块的数量x。优选地,步骤(2)中的映射数组是通过以下步骤生成:(2-1)客户端接收用户输入的随机数α,并调用封装了双线性运算功能的Java类库接口生成随机元素g;(2-2)客户端根据随机数α和随机元素g并使用双线性运算算法生成用户公钥w;(2-3)客户端生成新的随机数u,将待审计文件根据分块大小平均分成n个分块,其初始状态下的块号为1,2,3,…,n,根据双线性运算算法、并利用私钥α和随机数u对每个分块进行处理,以得到每个分块的标签,将所有分块及其标签上传到服务端,将随机元素g、随机数u、用户公钥w、分块的数量n上传到区块链平台;(2-4)区块链平台根据接收到的分块的数量n产生大小为n的映射数组,并调用存储接口将映射数组、该映射数组中块号的最大值max、随机元素g、随机数u、用户公钥w保存在区块链平台中;优选地,第i个分块的标签其中i表示序号,且i∈[1,n],mi表示第i个分块,h(·)表示密码学hash函数,Cover(·)表示{0,1}*→G的一个映射函数,H(·)表示{0,1}*→Zr的映射函数,G表示阶数为p的乘法循环群,优选地,当区块链平台接收到来自于客户端的文件分块更新请求时,对其进行解析,从而获取更新操作的类型、更新操作的位置、以及更新操作的文件ID;当更新操作是插入操作时,在映射数组中该更新操作的位置处插入块号max+1,并将max更新为max+1;当更新操作是删除操作时,则删除映射数组中该更新操作的位置处的块号;当更新操作是替换操作时,则将映射数组中该更新操作的位置处的块号替换为max+1,并将max更新为max+1。优选地,步骤(3)中的审计结果是通过以下公式进行计算:优选地,步骤(4)中判断审计是否成功,并将审计的最终结果通知客户端,具体是判断是否有等式成立,如果成立则向客户端输出审计成功的通知,否则向客户端输出审计失败的通知。按照本专利技术的另一方面,提供了一种基于区块链的数据完整性审计系统,其是应用在包括客户端、服务端、以及区块链平台的云环境中,所述数据完整性审计系统包括:第一模块,其设置于客户端中,用于向区块链平台发送审计请求;第二模块,其设置于区块链平台中,用于在收到来自客户端的审计请求后产生p个不重复的随机数,使用所有p个随机数{s1,s2,…sp}作为索引号,分别获取存储在区块链平台的映射数组中对应位置的块号v,所有块号组成挑战数组chal={v1,v2,…vp},将挑战数组chal封装在审计挑战请求中,并将审计挑战请求发送到服务端,其中随机数集合中的每个随机数均小于映射数组的大小n。第三模块,其设置于服务端中,用于对来自区块链平台的审计挑战请求进行解析,从而得到挑战数组chal,对该挑战数组chal进行遍历,以得到其中每个元素j对应的分块mj和标签σj,根据双线性运算算法对元素j、分块mi、以及标签σi进行运算,以产生审计结果μ和β,并将审计结果μ和β、挑战数组chal、分块mi的哈希值h(mi)发送到区块链平台,其中j∈[v1,v2,…vp];第四模块,其设置于区块链平台中,用于根据来自服务端的审计结果μ和β、挑战数组chal、哈希值h(mi)判断审计是否成功,并将审计的最终结果通知客户端。优选地,第二模块中的映射数组是通过子模块生成:第一子模块,其设置于客户端中,用于接收用户输入的随机数α,并调用封装了双线性运算功能的Java类库接口生成随机元素g;第二子模块,其设置于客户端中,用于根据随机数α和随机元素g并使用双线性运算算法生成用户公钥w;第三子模块,其设置于客户端中,用于生成新的随机数u,将待审计文件根据分块大小平均分成n个分块,其初始状态下的块号为1,2,3,…,n,根据双线性运算算法、并利用私钥α和随机数u对每个分块进行处理,以得到每个分块的标签,将所有分块及其标签上传到服务端,将随机元素g、随机数u、用户公钥w本文档来自技高网...

【技术保护点】
1.一种基于区块链的数据完整性审计方法,其是应用在包括客户端、服务端、以及区块链平台的云环境中,其特征在于,所述数据完整性审计方法包括以下步骤:(1)客户端向区块链平台发送审计请求;(2)区块链平台在收到来自客户端的审计请求后产生p个不重复的随机数,使用所有p个随机数{s1,s2,…sp}作为索引号,分别获取存储在区块链平台的映射数组中对应位置的块号v,所有块号组成挑战数组chal={v1,v2,…vp},将挑战数组chal封装在审计挑战请求中,并将审计挑战请求发送到服务端,其中随机数集合中的每个随机数均小于映射数组的大小n。(3)服务端对来自区块链平台的审计挑战请求进行解析,从而得到挑战数组chal,对该挑战数组chal进行遍历,以得到其中每个元素j对应的分块mj和标签σj,根据双线性运算算法对元素j、分块mi、以及标签σi进行运算,以产生审计结果μ和β,并将审计结果μ和β、挑战数组chal、分块mi的哈希值h(mi)发送到区块链平台,其中j∈[v1,v2,…vp];(4)区块链平台根据来自服务端的审计结果μ和β、挑战数组chal、哈希值h(mi)判断审计是否成功,并将审计的最终结果通知客户端。...

【技术特征摘要】
1.一种基于区块链的数据完整性审计方法,其是应用在包括客户端、服务端、以及区块链平台的云环境中,其特征在于,所述数据完整性审计方法包括以下步骤:(1)客户端向区块链平台发送审计请求;(2)区块链平台在收到来自客户端的审计请求后产生p个不重复的随机数,使用所有p个随机数{s1,s2,…sp}作为索引号,分别获取存储在区块链平台的映射数组中对应位置的块号v,所有块号组成挑战数组chal={v1,v2,…vp},将挑战数组chal封装在审计挑战请求中,并将审计挑战请求发送到服务端,其中随机数集合中的每个随机数均小于映射数组的大小n。(3)服务端对来自区块链平台的审计挑战请求进行解析,从而得到挑战数组chal,对该挑战数组chal进行遍历,以得到其中每个元素j对应的分块mj和标签σj,根据双线性运算算法对元素j、分块mi、以及标签σi进行运算,以产生审计结果μ和β,并将审计结果μ和β、挑战数组chal、分块mi的哈希值h(mi)发送到区块链平台,其中j∈[v1,v2,…vp];(4)区块链平台根据来自服务端的审计结果μ和β、挑战数组chal、哈希值h(mi)判断审计是否成功,并将审计的最终结果通知客户端。2.根据权利要求1所述的数据完整性审计方法,其特征在于,审计请求中存储有待审计文件的文件ID。3.根据权利要求1所述的数据完整性审计方法,其特征在于,步骤(2)中产生的随机数个数p的取值是取决于审计请求对应的数据块挑中损坏数据块的概率Px、数据块的总数f、以及损坏数据块的数量x。4.根据权利要求1所述的数据完整性审计方法,其特征在于,步骤(2)中的映射数组是通过以下步骤生成:(2-1)客户端接收用户输入的随机数α,并调用封装了双线性运算功能的Java类库接口生成随机元素g;(2-2)客户端根据随机数α和随机元素g并使用双线性运算算法生成用户公钥w;(2-3)客户端生成新的随机数u,将待审计文件根据分块大小平均分成n个分块,其初始状态下的块号为1,2,3,…,n,根据双线性运算算法、并利用私钥α和随机数u对每个分块进行处理,以得到每个分块的标签,将所有分块及其标签上传到服务端,将随机元素g、随机数u、用户公钥w、分块的数量n上传到区块链平台;(2-4)区块链平台根据接收到的分块的数量n产生大小为n的映射数组,并调用存储接口将映射数组、该映射数组中块号的最大值max、随机元素g、随机数u、用户公钥w保存在区块链平台中。5.根据权利要求4所述的数据完整性审计方法,其特征在于,第i个分块的标签其中i表示序号,且i∈[1,n],mi表示第i个分块,h(·)表示密码学hash函数,Cover(·)表示{0,1}*→G的一个映射函数,H(·)表示{0,1}*→Zr的映射函数,G表示阶数为p的乘法循环群。6.根据权利要求4所述的数据完整性审计方法,其特征在于,当区块链平台接收到来自于客户端的文件分块更新请求时,对其进行解析,从而获取更新操作的类型、更新操作的位置、以及更新操作的文...

【专利技术属性】
技术研发人员:李春花周可胡家琦张洲
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1