一种基于区块链的云数据持有性验证方法及系统与流程

文档序号:20580720发布日期:2020-04-29 01:27阅读:150来源:国知局
一种基于区块链的云数据持有性验证方法及系统与流程

本发明涉及信息安全领域,尤其涉及一种基于区块链的云数据持有性验证方法及系统。



背景技术:

目前,云计算和透明计算等网络技术的发展带来了经济灵活的网络存储服务方案。它允许用户将大量本地数据以极低的成本外包给远程存储服务器,并能够提供几乎无限的存储容量。然而,网络存储服务也存在着一些缺点,例如数据可能会因为服务器硬件或软件的损坏造成丢失,或者服务商会因为一些利益原因故意不保存或者丢弃用户的一些数据。因此,如何解决这种问题至关重要。

学术界和工业界为解决这个问题已经做了大量的努力,远程数据审计技术就是他们取得的巨大成就之一,用户可以通过该技术确信他们的数据是由网络存储服务提供商正确维护的。传统的远程数据审计方案可以分为用户驱动的(user-actuated)和基于第三方审计机构(thirdpartyauditor,tpa)的。然而,用户驱动的方法仅为用户自己实现了可验证的数据完整性验证,而没有提供任何解决争议的方法。基于第三方审计机构的方法则过于中心化,与网络存储服务的普遍分散不相匹配,而且这种方法还会受到单点故障、性能限制等问题的困扰。



技术实现要素:

本发明要解决的技术问题在于:针对现有技术存在的技术问题,本发明提供一种可靠、安全的一种基于区块链的云数据持有性验证方法及系统。

为解决上述技术问题,本发明提出的技术方案为:一种基于区块链的云数据持有性验证方法,区块链包括数据持有者us、存储服务提供商c;数据存储过程包括:

ss1.数据持有者us将需要存储的待存数据块通过非区块链通道发送给存储服务提供商c;

ss2.所述数据持有者us和所述存储服务提供商c分别以预设的第一参数为哈希参数,对所述待存数据块按照预设的哈希算法计算得到的散列值,分别记为第一散列值和第二散列值;

ss3.所述存储服务提供商c通过所述区块链通道对所述第一散列值和所述第二散列值进行一致性验证,一致时存储所述待存数据块,并将所述待存数据块的散列值发布到区块链。

进一步地,区块链还包括验证者ur;还包括数据验证过程,具体包括:

sr1.所述验证者ur生成随机数r,根据随机数r生成验证参数chal;并通过区块链通道将验证参数chal发送至存储服务提供商c;验证者ur从区块链中获取待验证数据块的散列值;所述验证参数chal是以所述第一参数为哈希参数,对所述随机数按照所述哈希算法计算得到的散列值;

sr2.所述验证者ur计算第三散列值,所述第三散列值是以所述待验证数据块的散列值为哈希参数,对所述随机数按照所述哈希算法计算得到的散列值;所述存储服务提供商c计算第四散列值,所述第四散列值是以所述验证参数chal为哈希参数,对所述待验证数据块按照所述哈希算法计算得到的散列值;

sr3.通过所述区块链通道对所述第三散列值和所述第四散列值的一致性进行验证,一致时判定所述待验证数据块正确,否则判定所述待验证数据块错误。

进一步地,在所述步骤sr3中,判定所述待验证数据块错误时,还包括仲裁步骤:

所述区块链中还包括仲裁节点an;

sr4.所述验证者ur通过所述区块链通道将所述随机数r发送至所述仲裁节点an;

sr5.所述仲裁节点an计算第五散列值,所述第五散列值是以所述第一参数为哈希参数,对所述随机数r按照所述哈希算法计算得到的散列值;判断所述第五散列值与所述验证参数chal是否一致,不一致则判断所述验证者ur计算有误,一致则跳转至sr6;

sr6.所述仲裁节点an计算第六散列值,所述第六散列值是以所述待验证数据块的散列值为哈希参数,对所述随机数r按照所述哈希算法计算得到的散列值;判断所述第六散列值是否与所述第四散列值一致,一致则判断所述验证者ur计算有误,否则判断存储服务提供商c存在过失。

进一步地,所述哈希算法如式(1.1)所示:

y=xm(modn)(1.1)

式(1.1)中,y为计算得到的散列值,x为哈希参数,m为需要计算散列值的输入参数,n为哈希算法中预设的取余参数;

所述取余参数可表征为2个不相等的质数的乘积。

一种基于区块链的云数据持有性验证系统,区块链包括数据持有者us、存储服务提供商c;

所述数据持有者us用于将需要存储的待存数据块通过非区块链通道发送给存储服务提供商c;

所述数据持有者us和所述存储服务提供商c分别以预设的第一参数为哈希参数,对所述待存数据块按照预设的哈希算法计算得到的散列值,分别记为第一散列值和第二散列值;

所述存储服务提供商c通过所述区块链通道对所述第一散列值和所述第二散列值进行一致性验证,一致时存储所述待存数据块,并将所述待存数据块的散列值发布到区块链。

进一步地,所述区块链还包括验证者ur;

所述验证者ur生成随机数r,根据随机数r生成验证参数chal;并通过区块链通道将验证参数chal发送至存储服务提供商c;验证者ur从区块链中获取待验证数据块的散列值;所述验证参数chal是以所述第一参数为哈希参数,对所述随机数按照所述哈希算法计算得到的散列值;

所述验证者ur计算第三散列值,所述第三散列值是以所述待验证数据块的散列值为哈希参数,对所述随机数按照所述哈希算法计算得到的散列值;所述存储服务提供商c计算第四散列值,所述第四散列值是以所述验证参数chal为哈希参数,对所述待验证数据块按照所述哈希算法计算得到的散列值;

通过所述区块链通道对所述第三散列值和所述第四散列值的一致性进行验证,一致时判定所述待验证数据块正确,否则判定所述待验证数据块错误。

进一步地,所述区块链中还包括仲裁节点an;

当判定所述待验证数据块错误时,还包括:

所述验证者ur通过所述区块链通道将所述随机数r发送至所述仲裁节点an;

所述仲裁节点an计算第五散列值,所述第五散列值是以所述第一参数为哈希参数,对所述随机数r按照所述哈希算法计算得到的散列值;判断所述第五散列值与所述验证参数chal是否一致,不一致则判断所述验证者ur计算有误;

一致所述仲裁节点an计算第六散列值,所述第六散列值是以所述待验证数据块的散列值为哈希参数,对所述随机数r按照所述哈希算法计算得到的散列值;判断所述第六散列值是否与所述第四散列值一致,一致则判断所述验证者ur计算有误,否则判断所述待验证数据块错误,存储服务提供商c存在过失。

进一步地,所述哈希算法如式(2.1)所示:

y=xm(modn)(2.1)

式(2.1)中,y为计算得到的散列值,x为哈希参数,m为需要计算散列值的输入参数,n为哈希算法中预设的取余参数;

所述取余参数可表征为2个不相等的质数的乘积。

与现有技术相比,本发明的优点在于:

1、本发明的基于区块链的云数据持有性验证方法,有效的利用了区块链去中心化和分布式的特点,可实现对数据的安全存储;同时,通过验证机制,可有效地验证所存储的数据是否遭到篡改,确保用户所存储数据的安全性。

2、本发明的基于区块链的云数据持有性验证方法及系统,设置有争议仲裁机制,在存储服务提供商所存储的数据无法通过验证时,可以通过争议仲裁机制确定过失方,可有效防止数据存储的双方在此过程中作弊;并能够在没有可信第三方审计机构参与(tpa)的前提下解决数据拥有纠纷。

3、本发明的基于区块链的云数据持有性验证方法及系统,所采用的哈希算法不仅具有一般哈希函数所具有的正向快速、逆向困难、输入敏感的特点,且满足加法同态性,即先计算后解密可等价于先解密后计算。利用同态哈希技术可以实现无密钥方对密文的计算,密文计算无须经过密钥方,既可以减少通信代价,又可以转移计算任务,由此可平衡各方的计算代价;利用同态特性可以实现让验证者得以安全验证存储数据的正确性,而无需获知待验证数据本身,有效提高了数据验证过程的安全性。

附图说明

图1为本发明具体实施例的系统模型及工作流程示意图。

具体实施方式

以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。

在本实施例中,区块链包括用户节点u和存储服务提供商c(cloudstorageserviceprovider),区块链中部署有智能合约,用于实现区块链中各节点之间的互联互通。具体地,本实施例包括两套智能合约,分别为存储智能合约scs和仲裁智能合约sca,存储智能合约scs用于数据块存储过程中的通信,仲裁智能合约sca用于仲裁过程中的通信。在本实施例的区域链中,各节点之间存在着区块链通道和非区块链通道,区块链通道是指按照区块链的通信协议规则实现互联互通的通信通道,其传输内容记录于区块链中,应具有公开、可追溯、不可篡改的特点。非区块链通道是指按照区块链的通信协议规则以外的其它通信方式达成互联互通的通信通道。其中,用户节点u在区块链中存在两个角色,当用户节点u需要将数据存储到区块链时,其角色为数据持有者us,当用户节点u从区块链中读取数据时,其角色为验证者ur。而验证者ur所读取的数据,可以是其自身所存储的数据,也可以是由其它用户节点u所存储的数据,此种情况即为共享数据存储。当然,也可以是非共享数据存储,即验证者ur只能读取由其自身所存储的数据,而对于其它用户节点u所存储的数据,其没有读取权限。

在本实施例中,区块链在初始化时,在区块链中还至少配置了如下两个参数,即预设的第一参数g,和取余参数n,其中取余参数可表征为两个不相等的随机质数p和q的乘积。

如图1所示,本实施例的基于区块链的云数据持有性验证方法,区块链包括数据持有者us、存储服务提供商c;数据存储过程包括:ss1.数据持有者us将需要存储的待存数据块通过非区块链通道发送给存储服务提供商c(cloudstorageserviceprovider);ss2.数据持有者us和存储服务提供商c分别以预设的第一参数为哈希参数,对待存数据块按照预设的哈希算法计算得到的散列值,分别记为第一散列值和第二散列值;ss3.存储服务提供商c通过区块链通道对第一散列值和第二散列值进行一致性验证,一致时存储待存数据块,并将待存数据块的散列值发布到区块链。

在本实施例中,哈希算法采用如下方式所表征的算法,如式(1.1)所示:

y=xm(modn)(1.1)

式(1.1)中,y为计算得到的散列值,x为哈希参数,m为需要计算散列值的输入参数,n为哈希算法中预设的取余参数;取余参数n可表征为2个不相等的质数的乘积。上述哈希算法描述为以x为哈希参数,计算输入参数m的散列值。

在本实施例中,将数据持有者us所需要存储的待存储数据块记为bi,该待存储数据块通过非区块链通道发送给存储服务提供商c后,存储服务提供商c所接收到的数据块记为用以区分待存储数据块在非区块链通道的传递过程中是否发生变化。数据持有者us根据哈希算法计算待存储数据块bi的散列值,如式所示,σi为第一散列值,g为哈希参数,即区块链中预设的第一参数,n为取余参数。存储服务提供商c根据哈希算法计算其所收到的数据块bi*的散列值σi*,如式所示,σi*为第二散列值,g为哈希参数,即区块链中预设的第一参数,n为取余参数。当第一散列值σi等于第二散列值σi*时,通过一致性验证,存储服务提供商c存储其所接收到的数据块bi*,存储服务提供商c还可将数据块的散列值(其值即为σi*或σi)和索引(i)发布到区块链中,数据持有者us则删除其本地所存储的数据块bi。到此,数据持有者us完成对数据块bi的存储过程。通过索引,区块链中的节点即可以申请从区块链中获取对应的数据块。

在本实施例中,区块链还包括验证者ur;系统中包括数据验证过程,具体步骤如下:sr1.验证者ur生成随机数r,根据随机数r生成验证参数chal;并通过区块链通道将验证参数chal发送至存储服务提供商c;验证者ur从区块链中获取待验证数据块的散列值;验证参数chal是以第一参数为哈希参数,对随机数按照哈希算法计算得到的散列值;sr2.验证者ur计算第三散列值,第三散列值是以待验证数据块的散列值为哈希参数,对随机数按照哈希算法计算得到的散列值;存储服务提供商c计算第四散列值,第四散列值是以验证参数chal为哈希参数,对待验证数据块按照哈希算法计算得到的散列值;sr3.通过区块链通道对第三散列值和第四散列值的一致性进行验证,一致时判定待验证数据块正确,否则判定待验证数据块错误。

在本实施例中,当验证者ur需要验证由存储服务提供商c存储的某个数据块(即待验证数据块)时,验证者ur将先从区块链中获取该数据块的索引(i)和散列值(σi)。验证者ur生成随机数r,验证参数chal通过如下方式计算得到,chal=gr(modn),式中各参数的定义如上所述。验证者ur将验证参数chal通过区块链通道发送给存储服务提供商c。同时,验证者ur向存储服务提供商c传递索引i,存储服务提供商c根据索引i从本地读取待验证数据块,记为bi*。随后,验证者ur计算第三散列值(σi)r(modn),存储服务提供商c计算第四散列值(modn)。计算完毕后,存储服务提供商c将第四散列值发送至验证者ur,验证者ur比较第三散列值和第四散列值,当两者相等,说明存储服务提供商c所存储的数据块通过验证,该数据块有效,否则,认为该数据块错误。

在本实施例中,区块链中还包括仲裁节点an,仲裁节点用于在待验证数据块被判定为错误时,确定导致错误的过失方;在步骤sr3中,判定待验证数据块错误时,还包括仲裁步骤如下:sr4.验证者ur通过区块链通道将随机数r发送至仲裁节点an;sr5.仲裁节点an计算第五散列值,第五散列值是以第一参数为哈希参数,对随机数r按照哈希算法计算得到的散列值;判断第五散列值与验证参数chal是否一致,不一致则判断验证者ur计算有误,一致则跳转至sr6;sr6.仲裁节点an计算第六散列值,第六散列值是以待验证数据块的散列值为哈希参数,对随机数r按照哈希算法计算得到的散列值;判断第六散列值是否与第四散列值一致,一致则判断验证者ur计算有误,否则判断待验证数据错误、存储服务提供商c存在过失。

本实施例的仲裁过程中,验证者ur通过区块链通道将随机数r*发送至仲裁节点an,记仲裁节点an所收到的随机数为r*,验证者ur同时将验证参数chal也通过区块链通道发送给仲裁节点an;考虑到验证者ur可能存在的欺骗性,即验证者ur可能将随机数修改后再发送给仲裁节点an,因此,此处将随机数记为r*,用于与原始的随机数r进行区分。仲裁节点an计算第五散列值(modn);仲裁节点an比较第五散列值与验证参数chal是否一致,如果不一致,则认为验证者ur所发送的随机数r是虚假的,则判定验证者ur为过失方;如果一致,仲裁节点an从区块链中获取待验证数据块的散列值σi,并计算出第六散列值(modn),并从存储服务提供商c处获取第四散列值,比较第四散列值和第六散列值是否一致,一致则判定验证者ur计算有误,不一致则判定待验证数据错误、存储服务提供商c为过失方。

在本实施例中,还可以基于上述方案,实现数据块的删除和修改。删除过程中可以描述为用户节点u通过区块链事务声明发布索引i指示的数据块bi无效,存储服务提供商c接收该事务后,即可删除对应数据块bi,同时删除该数据块在区块链中对应的索引的散列值。当然,存储服务提供商c在删除数据块之前,还可以验证发布删除数据块事务的用户节点u是否具备删除该数据块的权限,在无权限时则不删除该数据块。而修改操作则视为删除和存储操作的组合,即删除原数据块,并将修改后的新数据块存储到区块链中的存储服务提供商c。

本实施例的基于区块链的云数据持有性验证系统,区块链包括数据持有者us、存储服务提供商c;数据持有者us用于将需要存储的待存数据块通过非区块链通道发送给存储服务提供商c;数据持有者us和存储服务提供商c分别以预设的第一参数为哈希参数,对待存数据块按照预设的哈希算法计算得到的散列值,分别记为第一散列值和第二散列值;存储服务提供商c通过区块链通道对第一散列值和第二散列值进行一致性验证,一致时存储待存数据块,并将待存数据块的散列值发布到区块链。

在本实施例中,区块链还包括验证者ur;验证者ur生成随机数r,根据随机数r生成验证参数chal;并通过区块链通道将验证参数chal发送至存储服务提供商c;验证者ur从区块链中获取待验证数据块的散列值;验证参数chal是以第一参数为哈希参数,对随机数按照哈希算法计算得到的散列值;验证者ur计算第三散列值,第三散列值是以待验证数据块的散列值为哈希参数,对随机数按照哈希算法计算得到的散列值;存储服务提供商c计算第四散列值,第四散列值是以验证参数chal为哈希参数,对待验证数据块按照哈希算法计算得到的散列值;通过区块链通道对第三散列值和第四散列值的一致性进行验证,一致时判定待验证数据块正确,否则判定待验证数据块错误。

在本实施例中,区块链中还包括仲裁节点an;当判定待验证数据块错误时,还包括:验证者ur通过区块链通道将随机数r发送至仲裁节点an;仲裁节点an计算第五散列值,第五散列值是以第一参数为哈希参数,对随机数r按照哈希算法计算得到的散列值;判断第五散列值与验证参数chal是否一致,不一致则判断验证者ur计算有误;一致仲裁节点an计算第六散列值,第六散列值是以待验证数据块的散列值为哈希参数,对随机数r按照哈希算法计算得到的散列值;判断第六散列值是否与第四散列值一致,一致则判断验证者ur计算有误,否则判断存储服务提供商c存在过失。

在本实施例中,哈希算法如式(2.1)所示:

y=xm(modn)(2.1)

式(2.1)中,y为计算得到的散列值,x为哈希参数,m为需要计算散列值的输入参数,n为哈希算法中预设的取余参数;取余参数n可表征为2个不相等的质数的乘积。

在本实施例中,基于区块链的云数据验证系统按照上述基于区块链的数据存储方法进行数据的存储、验证等操作,验证系统中的式(2.1)与存储方法中的式(1.1)相同。

上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

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