logo好方法网

一种基于区块链的数据完整性快速检验方法


技术摘要:
本发明属于数据安全技术领域,为一种基于区块链的数据完整性快速检验方法,包括:根据系统公开参数生成各个节点私钥;客户端将文件m传输给服务器;客户端和服务分别计算文件m的客户端第一哈希值h与服务器第一哈希值h';客户端和服务器分别对自己计算的哈希值进行签名,  全部
背景技术:
近几年,随着云计算的快速发展和IT设备计算量的增加,许多用户由于本地存储 资源有限而将数据存储在远程云服务器中。将数据存储在远程云服务器中能够减少了用户 本地存储的压力和降低了管理方面的难度;相比用户本地存储,云服务器存储可以提供高 效性和可扩展性;用户可以在任何时候、任何地方访问其数据。虽然云存储给予了用户很多 便利,但是不能确定云服务器存储的数据是否是可信的,即客户端无法确定服务器在自身 蓄意攻击的情况下云服务器仍然能够正确存储客户端的数据。例如:服务器会删除用户的 不常用的数据来减少其存储空间,从而把空闲下来的这些存储空间卖给其他用户。所以为 了用户能放心使用云存储服务,必须要使用户能够通过某种途径来验证数据是否还完整地 保存在云服务器中。 为了解决这一问题,一些专家们引入了远程数据完整性检测RIC的概念,即检测一 些不可信的云服务器是否能够避免删除和篡改数据而正确地保存数据。RIC可以分为两类: 数据持有方案(PDP)和可恢复证明方案(POR)。Ateniese等人在文献“Provable  data  possession  at  untrusted  stores”中,提出了使用基于大数难分解的困难问题和KEA1-r 来构造了一个检验数据完整性的方案。Shacham等人在文献“Compact  Proofs  of  Retrievability”中,提出了使用双线性配对来构造数据完整性检验方案。所以现有的PDP 方案可分为两类。但是在效率方面,第一类方案由于使用指数运算来生成同态标签,导致大 幅降低整个方案的效率;第二类方案中也是同样的问题。虽然后来的专家们把目光放在了 hash上,这在一定程度上大大加快了整个方案的效率,但还是逃脱不了需要用到标签的弊 端,例如邹静等人在文献“基于Hash聚合动态数据持有性方案安全性分析”中,使用了hash 聚合以及认证标签;李超零等人在文献“基于同态hash的数据多副本持有性证明方案”中使 用了同态hash和认证标签,都摆脱不了需要使用标签的情况。 以上现有的技术中其数据完整性检验效率低;且存储在云服务器中的外源数据文 件是非常大,而用户为了检查所存储的数据的完整性而下载所有数据会极大的消耗用户的 存储空间和网络的带宽。
技术实现要素:
为解决以上现有技术问题,本发明提供了一种基于区块链的数据完整性快速检验 方法,包括根据系统公开参数生成客户端节点私钥和服务器节点私钥;客户端将文件m传输 给服务器;客户端计算文件m的客户端第一哈希值h,服务器计算文件m的服务器第一哈希值 h';客户端和服务器根据各自的私钥分别对自己计算的哈希值进行签名,并将签名的哈希 值上传区块链中;区块链根据两个哈希值判断文件m是否完整;若不完整,则检验终止;若完 4 CN 111597590 A 说 明 书 2/5 页 整,采用佩德森Pederson验证存储在客户端的数据和传输给服务器的数据是否一致,若数 据一致则表示存储在服务器上的数据完整,若不一致,则表示存储在服务器上的数据不完 整。 优选的,所述系统公开参数包括:params={p,G,g ,h,f ,H},其中,p表示素数,G表 示阶为素数p的乘法循环群,g表示乘法循环群第一生成元,h表示乘法循环群第二生成单 元,f表示随机数函数,H表示哈希函数。 优选的,根据公开参数生成客户端节点私钥和服务器节点私钥的过程包括:客户 端节点和服务器节点分别调用随机函数f,客户端节点和服务器节点分别得到一个随机数, 将得到的随机数作为各自节点的私钥;随机函数f的表达式为: 优选的,所述区块链根据两个哈希值判断文件m是否完整包括:客户端将计算得到 的客户端第一哈希值h和文件m存储在客户端本地;服务器将服务器第一哈希值h'和文件m 一同存储在服务器本地;将用户端的签名和服务器的签名分别上传至区块链中;区块链中 的任意节点对这两个签名进行验证,并判断两个签名中的哈希值是否一样,若不一样,则终 止数据完整性校验,若一样,则进行数据检验过程。 优选的,哈希函数的表达式为: 根据哈希函数表达式计算出文件m 的哈希值h。 优选的,对哈希值进行签名的过程包括:采用椭圆曲线数字签名算法ECDSA对哈希 值进行签名; 步骤1:在区间[1,n]中选择一个随机整数k; 步骤2:计算椭圆曲线上的一个点(x1,y1)=kG;则取r≡x1  mod  n,若r=0,则重新 选择随机数k; 步骤3:计算s=k^-1·(h(m) dr)mod  n; 步骤4:若s=0,则重新选择随机数k;否则(r,s)为哈希值的签名。 优选的,采用佩德森Pederson验证存储在客户端的数据和传输给服务器的数据是 否一致包括:客户端随机从客户端本地列表中选择一个第一随机值ri以及ri对应的客户端 第i个哈希值hi做Pederson承诺;根据Pederson承诺公式、第一随机值ri以及对应的客户端 第i个哈希值hi计算出承诺值Ci,并将承诺值Ci和选择的第一随机值ri上传到区块链中;客 户端向服务器发出挑战,即将选择的第一随机值ri发送给服务器;服务器接收到ri,用存储 在本地的文件m与ri合并,将合并后的文件做哈希运算,得到服务器第i个哈希值hi′,将hi′ 返回给客户端和上传至区块链;客户端接收到服务器第i个哈希值hi′,打开客户端的 Pederson承诺,得到第二随机值ri′,验证上传到区块链上的第一随机值ri与打开Pederson 承诺后的第二随机值ri′是否一致,若不一致,则存储的数据不完整,若一致,则验证服务器 返回的服务器第i个哈希值hi′和客户端第i个哈希值hi是否一样,若不一样,则服务器中的 数据不完整,若一样,服务器中的数据完整。 优选的,客户端本地列表生成过程包括:客户端随机选择n个随机值并依次和文件 m合并,得到n个文件;将n个合并后的文件依次作哈希运算,得到n个哈希值hn;将n个哈希值 h存储在本地;将n个随机值与每个随机值对应的哈希值hn建立成表并存储在客户端本地。 5 CN 111597590 A 说 明 书 3/5 页 优选的,根据Pederson承诺公式计算出承诺值的公式为: C(x,r)=g^x·h^r 优选的,验证返回的哈希值hi′与客户端打开承诺后的哈希值hi是否一致时,验证 过程在区块链上进行。 本发明结合了区块链网络,将存储功能和检验功能分割开,且在区块链中流动的 数据仅仅是在检验过程中生成的数据,这些数据可以被区块链中的任意节点查看和验证, 保证了文件检验的安全性;本发明通过让客户端事先在本地建表来给用户预定了有限次的 检验操作,而且可以根据用户的实际使用情况来设定检验次数的大小,如果次数使用完之 后,再重新建表即可,完美契合现实需求。 附图说明 图1为本发明所述基于区块链的数据完整性快速检验方法使用的系统模型图; 图2为本发明所述基于区块链的数据完整性快速检验方法的流程框图; 图3为系统初始化流程框图; 图4为数据存储阶段流程框图; 图5为准备阶段流程框图; 图6为证明阶段流程框图。
下载此资料需消耗2积分,
分享到:
收藏