一种基于区块链的数据共享可信认证方法

文档序号:33096489发布日期:2023-02-01 00:02阅读:32来源:国知局
一种基于区块链的数据共享可信认证方法

1.本发明涉及区块链和安全数据共享的可信认证技术领域,具体为一种基于区块链的数据共享可信认证方法。


背景技术:

2.数据共享是一种为数据所有者共享其数据给其他用户的方案。数据共享系统在半可信的环境下提供数据存储与访问服务,用户将个人的学术资源、医疗记录等数据存储在第三方的集中式存储服务器中,由存储服务器提供数据的访问服务。数据存储服务器可以对数据进行高效的管理、提高数据流转的便捷性,但前提是使用者要相信数据存储服务器不会对用户数据作出恶意行为。此外,共享的数据往往会涉及用户的重要敏感信息,因此需要为数据提供访问控制列表,以确保数据的安全访问。在传统方案中,通常会引入基于属性的密码学方案来实现数据的安全访问控制,另外还有引入属性权威机构来管理密钥,但这些额外的密码学方案往往会增大系统的开销和负担,并且还不能摆脱对一些第三方机构和数据存储服务器的信任。
3.区块链技术的出现,可以有效解决系统的中心化信任问题,同时还提供了一种可共享的透明事务历史账本,保证了数据不会被恶意篡改,允许互不信任的用户在不需要第三方参与的情况下就不可变和可审计的数据块达成一致。此外,智能合约是在区块链基础上扩展的技术,它是运行在区块链上的可执行程序,同样可以作为区块链的普通事务内容,经过打包后发布到区块链网络上。区块链网络上的结点按照智能合约中的逻辑自动执行程序,并且这个过程是在一个密闭的黑盒中执行,不会出现人为的干预和访问的情况。另外,pki是一种广泛用于https协议做身份认证的技术,是一种有效的身份认证技术,但实体的可信依赖于ca颁发的ssl/tls证书,因此可能会出现ca单点故障和证书不可信的问题,并且传统的pki不适用于数据共享方案。为此我们利用区块链和智能合约改造了传统的pki模型以适用于数据共享方案,提出了一种基于区块链的数据共享可信认证方法。


技术实现要素:

4.本发明的目的在于提供一种基于区块链的数据共享可信认证方法,以解决上述背景技术中提出的问题。
5.为了解决上述技术问题,本发明提供如下技术方案:
6.一种基于区块链的数据共享可信认证方法,其包括如下步骤:
7.s1:数据共享用户根据要共享的数据内容构造数据共享请求的四元组集合,将数据共享请求发送给公证权威和数据存储服务方;
8.s2:公证权威和数据存储服务方收到数据共享请求后,对数据共享请求中的字段进行合法性检查,所有字段都验证通过后,数据存储服务方为发起请求的数据共享用户分配数据存储空间,公证权威和数据存储服务方为数据共享请求生成数字签名,将各自处理数据共享请求的响应发送给智能合约;
9.s3:智能合约在收到公证权威和数据存储服务方的响应后,对响应中的具体数据内容进行校验,所有的响应校验通过后,智能合约根据数据共享请求和处理数据共享请求的响应的具体内容,构造对应的数据共享证书,将完整的数据共享证书发送给请求对应的数据共享用户,并生成数据共享证书对应的哈希值存储在区块链上;
10.s4:数据共享用户收到数据共享证书后,生成数据共享证书的哈希值,再与区块链上数据共享证书对应的哈希值做对比,验证数据共享证书的有效性,利用有效的数据共享证书、加密的数据内容和相应的数字签名构造数据存储请求,并将数据存储请求发送给数据存储服务方,数据存储服务方收到数据存储请求后,对数据存储请求中的数据共享证书和数字签名进行校验,为合法的数据存储请求对应的用户存储加密的数据内容,最后返回bool类型的响应结果和string类型的提示信息给数据共享用户;
11.s5:数据访问用户根据自己的数据访问需求,向数据共享用户发送数据访问证书请求;
12.s6:数据共享用户收到数据访问用户的数据访问证书请求后,校验数据访问证书请求中的数据内容是否合法,为合法的数据访问证书请求生成对应的数据访问证书,将数据访问证书发送给数据访问用户,然后生成数据访问证书的哈希值并存储在区块链上;
13.s7:数据访问用户收到数据访问证书后,生成数据访问证书的哈希值,再与区块链上数据访问证书对应的哈希值做对比,验证数据访问证书的有效性,然后利用有效的数据访问证书和相应的数字签名构造数据访问请求,发送给数据存储服务方,数据存储服务方收到数据访问请求后,对数据访问请求中的数据访问证书和数字签名进行校验,为合法的数据访问请求所对应的数据访问完成相应的访问操作,最后返回bool类型的响应结果和string类型的提示信息给数据访问用户;
14.s8:数据共享用户利用数据共享证书对应的证书撤销列表,完成对数据访问用户的权限控制。
15.优选的,所述s1中数据共享请求的内容如下:由于数据共享用户发送的是数据共享请求,因此选定证书类型为数据共享证书;数据共享用户计算所需共享数据的byte大小,并在数据共享请求中输入相应的数据存储支付金额,单位:gwei;输入额外的json格式扩展信息内容,再统一以base64进行编码,以上4种信息构成了数据共享请求的四元组集合,另外数据共享用户发送数据共享请求给公证权威和数据存储服务方后,公证权威和数据存储服务方能够得到数据共享用户的区块链账户地址。
16.优先的所述s2中,校验数据共享请求和处理数据共享请求的响应的内容如下:公证权威和数据存储服务方各自校验数据共享请求中的证书类型是否为数据共享证书、数据大小是否合法、发送数据共享请求的数据共享用户所支付的金额是否符合对应的数据大小,以上内容校验通过后,公证权威和数据存储服务方选择一种签名算法,为数据共享请求生成数字签名,数据存储服务方还为数据共享用户分配存储空间,返回一个和数据共享用户地址相关的存储位置索引;公证权威返回的响应包括:签名算法、数字签名,数据存储服务方返回的响应包括:签名算法、数字签名、存储地址。
17.优选的,所述s3中,响应校验和数据共享证书的主要内容如下:智能合约根据响应中的签名算法来解析数字签名,判断签名者是否为返回响应的公证权威或数据存储服务方;智能合约提取合法的数据共享请求和响应中的内容构造数据共享证书,内容包括签名
算法、数字签名、存储地址、签名者地址、数据共享用户的地址、数据信息,再把数据共享证书转换为json字符串,通过keccak256生成数据共享证书的哈希值,存储到区块链上。
18.优选的,所述s4中,数据存储请求的三元组集合包括:
19.完整的数据共享证书、加密后的数据、数据共享用户使用私钥对证书的数字签名;
20.数据存储服务方验证的内容如下:
21.解析数字签名得到签名者地址,判断签名者地址与数据存储请求发送者地址是否一致,再获取区块链上对应的数据共享证书的哈希值,计算数据存储请求中的数据共享证书哈希值的和区块链上对应的数据共享证书的哈希值是否相等,以此判断数据共享证书的有效性。
22.优选的,所述s5中,数据访问证书请求的四元组集合包括:
23.证书类型、请求者地址、数据访问类型、数据信息。
24.优选的,所述s6中数据访问证书的结构主要内容包括:
25.签名算法、证书类型、对应的数据共享证书、请求者地址、数据存储地址、数字签名、访问类型、加密后的数据解密密钥。
26.优选的,所述s7中,数据访问请求的三元组集合包括:
27.数据访问证书、数字签名、数据信息;
28.数据在储服务方校验内容如下:
29.解析数字签名,判断数据访问证书是否为请求者所有,计算数据访问证书的哈希值,与区块链上对应的数据访间证书的哈希值做比较,再根据数据访问证书所属的证书撤销列表,判断数据访问证书是否有效。
30.优选的,所述s8中,证书撤销列表的内容包括:
31.所属的数据共享证书;需撤销的数据访问证书序列号;数据共享用户对撤销的数据访问证书的数字签名。
32.本发明的有益效果为:
33.本发明在整体设计上没有采用复杂的访问策略和密码学算法,同样实现了对于一个数据共享系统所必要的安全特性,并且能将本发明方法接入到传统的数据共享系统中,仅需为系统的实体提供与本发明相关的交互接口,不改变原系统结构的基础上实现对系统的扩展,因此可以适用于普遍的数据共享方案。
附图说明
34.图1是本发明实施例的数据共享方法步骤流程示意图;
35.图2是本发明实施例的网络系统图;
36.图3是本发明实施例的实体交互图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.实施例
39.请参阅图1-3,本发明实施例提供的该基于区块链的数据共享可信认证方法,包括以下步骤:
40.s1:数据共享用户u1计算加密后的共享数据大小size,以及对应需要支付的金额value,然后选择共享请求的证书类型ct,输入附加额外消息内容ext,构造数据共享请求集合r1=(ct,size,valu,ext),将请求发送给公证权威na和数据存储服务方s。因为接收方可以在收到的请求中获取用户的地址,因此不用在请求中输入用户地址。
41.s2:公证权威na和数据存储服务方s收到请求r1后,提取出发送数据共享请求的用户地址ua1,检查数据共享请求中的ct是否为数据共享证书类型,所输入的数据大小size是否和支付金额value相对应。若以上数据共享请求内容都校验通过后,数据存储服务方s会为数据共享请求者u1分配存储空间,存储地址以/str/ua1的格式表示。公证权威na和数据存储服务方s使用各自的签名算法alg和私钥sk为请求生成数字签名signature=signalg(content,sk),将数据共享请求处理结果构造为响应集合rp=(alg,straddr,signature,content,rpaddr),发送给智能合约;
42.s3:智能合约收到响应集合数组rps=[(alg,straddr,signature,content,rpaddr),(alg,signature,content,rpaddr)],解析数组中的两个相应集合,验证响应的发送者地址rpaddr是否为系统初始化时设定的公证权威na和数据存储服务方s;根据响应中指定的签名算法alg来验证响应中的签名signature,判断签名者是否为系统初始化时设定的公证权威na和数据存储服务方s,以确保请求处理的可信。以上内容校验通过后,智能合约聚合响应集合数组中的内容,构造数据共享证书结构dsc=(num,(alg1,alg2),content,(rpaddr1,rpaddr2),(signature1,signature2),straddr,ua1),发送dsc给u1,并通过哈希函数keccak256(json(dsc))计算数据共享证书dsc的哈希值,并存储到区块链上,数据共享用户可以通过接口调用获取链上数据共享证书的哈希值och;
[0043]
s4:数据共享用户u1收到dsc后,通过哈希函数keccak256(json(dsc))计算数据共享证书dsc的哈希值,再通过接口调用获取链上证书的哈希值och,比较两个哈希值是否相等,确保证书完整并且可信。证书验证通过后,数据共享用户u1利用自己的私钥sk1,sk2对数据进行加密,对dsc进行签名,构造数据存储请求集合a(dsc,signsk1(dsc),encsk2(data)),发送给数据存储服务商s;数据存储服务商s收到请求a后,通过哈希函数keccak256(json(dsc))计算数据共享证书dsc的哈希值,再通过接口调用获取链上证书的哈希值och,比较两个哈希值是否相等,确保证书完整并且可信,再通过请求者的公钥pk1验证签名,确保请求者是数据共享证书所有者本人。以上信息校验通过后,数据存储服务商s根据数据存储地址straddr,为数据共享用户存储加密的数据,返回数据存储结果给数据共享用户u1;
[0044]
s5:数据访问用户u2根据自己的访问数据访问需求输入数据共享请求的数据共享证书类型ct、数据共享证书系列号snum、访问类型acst(”read”,”update”,”del”)、用于加密sk2的公钥pk1,构造数据访问证书请求r2(ct,snum,acst,pk1),发送给数据共享用户u1;
[0045]
s6:数据共享用户u1收到数据访问证书请求r2后,判断数据访问证书请求的发送者ua2,是否为自己许可的访问用户,ct是否为数据访问证书类型。以上信息验证通过后,利用pk1对数据加密密钥sk1进行加密得到enckey,构造数据访问证书dac(num,alg,ct,
dscnum,ua2,signature,acst,straddr,enckey,content),发送dac给u2,并通过哈希函数keccak256(json(dac))计算数据共享证书dac的哈希值,并存储到区块链上,数据共享用户可以通过接口调用获取链上数据访问证书的哈希值och;
[0046]
s7:数据访问用户u2收到dac后,通过哈希函数keccak256(json(dsc))计算数据共享证书dsc的哈希值,再通过接口调用获取链上数据访问证书的哈希值och,比较两个哈希值是否相等,确保证书完整并且可信。数据访问证书验证通过后,数据访问用户u2利用自己的私钥sk对dac进行数字签名,构造数据访问请求集合b(dac,signsk1(dac),content),发送给数据存储服务商s;数据存储服务商s收到数据访问请求b后,通过哈希函数keccak256(json(dac))计算数据访问证书dac的哈希值,再通过接口调用获取链上证书的哈希值och,比较两个哈希值是否相等,确保数据访问证书完整并且可信。再通过数据访问请求者的公钥pk验证签名,确保数据访问请求者是证书所有者本人。最后检查该数据访问证书所属的证书撤销列表crl是否撤销了该证书。以上信息校验通过后,数据存储服务商s根据数据存储地址straddr,为数据访问用户u2返回数据相应的访问结果。数据访问用户u2利用自己的私钥sk解密数据访问证书dac内的enckey,获得数据的解密密钥,最后利用解密密钥获得原数据内容。
[0047]
s8:数据共享用户u1可以在数据共享证书dsc对应的证书撤销列表crl中设置要撤销的数据访问证书数组dacs=[dac1,dac2,...,dacn],以及对每个撤销证书的签名signatures=[signature1,signature2,...,signaturen],出现在crl中的数据访问证书dac则表明已被撤销,使用已被撤销的数据共享证书访问数据存储服务方会造成访问失效。
[0048]
本发明上述实施例,参考传统的pki技术专门设计了适用于数据共享系统的数据共享证书dsc和数据访问证书dac,并引入公证权威na结合数据存储服务方s来保证数据共享用户身份和数据共享证书dsc颁发的可信认证,通过引入区块链来对系统证书进行背书,解决了对数据存储服务方s的集中信任问题,并使用智能合约来完成数据共享证书dsc的颁发以及一些交互所需要的校验和认证操作。本发明在整体设计上没有采用复杂的访问策略和密码学算法,同样实现了对于一个数据共享系统所必要的安全特性,并且能将本发明方法接入到传统的数据共享系统中,仅需为系统的实体提供与本发明相关的交互接口,不改变原系统结构的基础上实现对系统的扩展,因此可以适用于普遍的数据共享方案。
[0049]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1