一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于TLS协议的多方认证区块链数据上链方法

2022-05-21 02:24:08 来源:中国专利 TAG:

一种基于tls协议的多方认证区块链数据上链方法
技术领域
1.本发明属于区块链技术领域,具体涉及一种基于tls协议的多方认证区块链数据上链方法。


背景技术:

2.区块链是一个确定性的、封闭的系统环境,目前区块链只能获取到链内的数据,而不能获取到链外真实世界的数据,区块链与现实世界是割裂的。区块链预言机(oracle)可以解决链上、链下数据互通的问题,它可以提供链下数据和链上数据之间的链接。区块链oracle不是数据源本身,而是查询、验证和身份验证外部数据源,然后传递该信息送回区块链。预言机在区块链生态系统中至关重要,因为它们拓宽了智能合同的运作范围。如果没有区块链预言机,智能合同的用途将非常有限,因为它们只能访问网络内部的数据。区块链可以视作是一个全球范围内的分布式数据库,在区块链出现之前,所有的网络数据都是存储在中心话的服务器上的。随着区块链的发展,传统的网络数据需要上链以供开展区块链服务。
3.安全传输层协议(transport layer security,tls)是一种功能强大、部署广泛的协议,允许用户通过保密、完整性保护的通道访问web数据。但是tls有一个严重的限制:它不允许用户向第三方证明其访问的数据确实来自一个特定的网站,即tls协议不能提供数据来源认证。
4.tlsnotary是最早基于tls协议的预言机方案。该方案允许客户端向第三方审计人员提供证据,证明自己和服务器之间发起了某些web请求并获取到了相应的数据。只要审计员信任服务器的公钥,证据是不可辩驳的。tlsnotary可以利用tls的安全性,并扩展tls协议以满足第三方验证的需求。但目前 tlsnotary只支持tls的较低版本(tls1.0/tls1.1),并不支持现在广泛使用的 tls1.2协议。zhang等人提出了一种新的tls协议第三方认证方案。该方案可以兼容tls1.2版本,它允许用户证明通过tls访问的数据片段来自特定的网站,并可选择性地在零知识下证明此类数据的声明,保持数据本身的机密性。deco 是第一个无需可信硬件或服务器端修改即可工作的系统,它可以将私有数据从集中的web服务中解放出来,供第三方认证使用。
5.以上的方案暂时都只支持单个第三方的数据认证,区块链是一个分布式的系统,存在很多的区块链节点,想要更安全的数据上链需要这些区块链节点的参与,这便需要多个第三方验证节点。因此,行业内急需研发一种能够提供多区块链节点认证的传统web数据上链的方法。


技术实现要素:

6.本发明的主要目的在于克服现有技术的缺点与不足,提出一种基于tls协议的多方认证区块链数据上链方法,该方法可以将传统web服务器上的数据通过多方验证的方式上传到区块链系统上,在通讯过程中保护数据隐私。
7.为了达到上述目的,本发明采用以下技术方案:
8.一种基于tls协议的多方认证区块链数据上链方法,设有服务端s、证明者p以及验证者委员会v,方法包括以下步骤:
9.s1、服务端、证明者和验证者委员会进行多方握手协议,共同协商会话密钥;
10.s2、证明者和验证者委员会通过多方安全计算共享消息认证密钥;
11.s3、证明者与验证者委员会共同构造查询请求的消息认证码mac,并向服务端发起数据请求;
12.s4、证明者获取响应报文,并传送给验证者委员会,验证者委员会泄露共享的部分认证密钥给验证者;
13.s5、证明者对请求报文做校验,校验无误后向验证者委员会做零知识证明,随后将数据上链。
14.进一步的,服务端s执行标准的tls协议,证明者p和验证者委员会v共同执行修改的tls协议,并共同组成tls协议的客户端。
15.进一步的,步骤s1具体包括:
16.s101、证明者生成一个随机数rc并向服务端发起clienthello请求;
17.s102、服务端收到clienthello请求后,生成一个随机数rs,通过serverhello 消息发送给证明者;
18.随后服务端选取有限域f
p
下的椭圆曲线ec和ec的基点g,然后生成随机数 k
pri,s
作为ecdh密钥,随后计算出dh公钥k
pub,s
=k
pri,s
·
g,将rc、rs、k
pub,s
及椭圆曲线ec的参数通过serverkeyexchange发送给证明者;
19.s103、证明者收到serverkeyexchange消息后,会将该消息发送给验证者委员会,验证者委员会收到消息后,生成随机数k
pri,v
作为dh密钥,并计算 k
pub,v
=k
pri,v
·
g作为dh公钥,之后将k
pub,v
回传给证明者;
20.s104、证明者收到k
pub,v
后,会生成随机数k
pri,p
作为dh密钥并计算出验证者和证明者的联合dh公钥k
pub,p
=k
pri,p
·
g k
pub,v
,随后将k
pub,p
通过 clientkeyexchange消息发送给服务端;
21.s105、证明者计算部分premaster密钥k
pre,p
=k
pri,p
·kpub,s
,验证者委员会计算部分premaster密钥k
pre,v
=k
pri,v
·kpub,s
,服务端计算完整premaster密钥 k
pre,s
=k
pri,s
·kpub,p
,三个premaster密钥满足等式(1):
22.k
pre,s
=k
pre,p
k
pre,v
ꢀꢀ
(1)。
23.进一步的,步骤s2具体包括:
24.s201、验证者委员会通过密钥重构算法计算出共享的premaster密钥k
pre,v

25.s202、证明者和验证者委员会分别将k
pre,p
和k
pre,v
作为隐私输入参数, rs、rv作为公开输入参数传给多方计算函数f
mpc

26.s203、执行安全多方计算函数f
mpc

27.s204、验证者委员会收到通过shamir秘密共享给委员会中的区块链节点;
28.s205、证明者对目前收到的握手消息进行哈希计算得到摘要h,然后证明者和验证者委员会执行安全多方计算f
mpc,prf
,生成finished消息m
finished
,并将该消息发送给服务端。
29.进一步的,步骤s203中,执行安全多方计算函数f
mpc
具体为:
30.计算完整的premaster密钥k
pre
=k
pre,p
k
pre,v

31.根据tls协议中定义的prf,即伪随机数函数,计算出master密钥:
32.km=prf(k
pre
,"master secret",rs||rc);
33.通过prf函数进行密钥扩展,计算出加密密钥和认证密钥:
[0034][0035]
生成随机数r
p
,rm,将发送给证明者p,将发送给证明者p,将发送给验证者委员会。
[0036]
进一步的,步骤s205中,执行安全多方计算f
mpc,prf
具体为:验证者委员会通过秘密重构算法计算出并与验证者的参数rm计算出km;
[0037]
计算消息m
finished
=prf(km,"clientfinished",h)。
[0038]
进一步的,步骤s3具体包括:
[0039]
s301、证明者构建查询数据的请求q,验证者委员会通过密钥重构算法计算出
[0040]
s302、证明者和验证者委员会执行安全多方计算函数f
mpc,q
,生成带mac 的查询请求消息mq=(q||σq),其中σ是q消息认证码;
[0041]
s303、证明者将请求消息mq=(q||σq)发送给服务端。
[0042]
进一步的,执行安全多方计算函数f
mpc,q
的具体包括以下:
[0043]
计算完整的消息认证密钥
[0044]
根据tls协议中的hmac函数计算消息认证码σq并发送给证明者,hmac 函数如公式(2):
[0045][0046]
其中k表示消息认证密钥,m表示消息内容。
[0047]
进一步的,步骤s4具体包括:
[0048]
s401、服务端对请求mq校验完成后,查询本地数据,对数据按照步骤s302 中的hmac计算响应的消息认证码σr并将请求响应mr=(r||σr)返回给证明者;
[0049]
s402、证明者收到请求响应mr后,将mr传送给验证者委员会,之后验证者委员会通过密钥重构出并发送给证明者;
[0050]
s403、证明者收到后计算得到完整的消息认证密钥
[0051]
进一步的,步骤s5具体包括:
[0052]
s501、证明者使用通过hmac函数对请求响应mr进行完整性校验;
[0053]
s502、证明者根据验证者委员会需要验证的信息info作zk-snark零知识证明;
[0054]
s503、验证者委员会对信息info验证通过后,调用预言机智能合约 contract
oracle
上链。
[0055]
本发明与现有技术相比,具有如下优点和有益效果:
[0056]
1、本发明引入验证者委员会的概念,将现有方案的单验证者模型,扩充到多验证
者模型,可以解决单点故障问题,更好的适应分布式系统的需求。
[0057]
2、本发明中使用秘密共享,将区块链节点作为秘密共享的参与方,使得验证者可以动态的增加和减少,模拟区块链节点的上线和下线,在提供多个验证者的同时契合区块链节点的特点,具备较高可用性和扩展性。
[0058]
3、本发明将tls技术和区块链技术结合,为传统的web数据提供第三方可认证性,并以此作为区块链与链下世界的桥梁,为区块链上链提供更安全可靠的方式。
附图说明
[0059]
图1是本发明方法的结构示意图;
[0060]
图2是本发明方法的流程图。
具体实施方式
[0061]
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0062]
实施例
[0063]
如图1所示,本发明,一种基于tls协议的多方认证区块链数据上链方法,设有服务端s、证明者p以及验证者委员会v,服务端s执行标准的tls协议,证明者p和验证者委员会v共同执行修改的tls协议,并共同组成tls协议的客户端。
[0064]
本实施例中,假定证明者p有健康数据info
health
存储在服务器s上,现证明者p需要将该健康数据上传到区块链上以进行投保,验证者委员会v作为验证方需要参与数据的传输过程,作为数据真实性的认证,随后通过智能合约上链。如图2所示,上链包括以下步骤:
[0065]
s1、服务端s、证明者p和验证者委员会v进行多方握手协议,共同协商会话密钥,包括:
[0066]
s101、证明者生成一个随机数rc并向服务端发起clienthello请求;
[0067]
s102、服务端收到clienthello请求后,生成一个随机数rs,通过serverhello 消息发送给证明者;
[0068]
随后服务端选取有限域f
p
下的椭圆曲线ec和ec的基点g,然后生成随机数 k
pri,s
作为ecdh(elliptic curve diffie

hellman)密钥,随后计算出dh公钥 k
pub,s
=k
pri,s
·
g,将rc、rs、k
prb,s
及椭圆曲线ec的参数通过 serverkeyexchange发送给证明者;
[0069]
s103、证明者收到serverkeyexchange消息后,会将该消息发送给验证者委员会,验证者委员会收到消息后,生成随机数k
pri,v
作为dh密钥,并计算 k
pub,v
=k
pri,v
·
g作为dh公钥,之后将k
pub,v
发送给证明者;
[0070]
s104、证明者收到k
pub,v
后,会生成随机数k
pri,p
作为dh密钥并计算出验证者和证明者的联合dh公钥k
pub,p
=k
pri,p
·
g k
pub,v
,随后将k
pub,p
通过 clientkeyexchange消息发送给服务端;
[0071]
s105、证明者计算部分premaster密钥k
pre,p
=k
pri,p
·kpub,s
,验证者委员会计算部分premaster密钥k
pre,v
=k
pri,v
·kpub,s
,服务端计算完整premaster密钥 k
pre,s
=k
pri,s
·kpub,p
,三个premaster密钥满足等式(1):
[0072]kpre,s
=k
pre,p
k
pre,v
ꢀꢀ
(1)。
[0073]
s2、证明者和验证者委员会共享了会话密钥后,为了保证验证者具有完全的加密能力和数据的可认证性,证明者和验证者委员会通过多方安全计算共享消息认证密钥,而证明者具有完整的加密密钥,具体包括:
[0074]
s201、验证者委员会v通过密钥重构算法计算出共享的premaster密钥k
pre,v

[0075]
s202、证明者p和验证者委员会v分别将k
pre,p
和k
pre,v
作为隐私输入参数, rs、rv作为公开输入参数传给多方计算函数f
mpc

[0076]
s203、执行安全多方计算函数f
mpc
;具体为:
[0077]
计算完整的premaster密钥k
pre
=k
pre,p
k
pre,v

[0078]
根据tls协议中定义的prf(pseudorandom function),即伪随机数函数,计算master密钥km=prf(k
pre
,"master secret",rs||rc);
[0079]
通过prf函数进行密钥扩展,计算出加密密钥和认证密钥:
[0080][0081]
生成随机数r
p
,rm,将发送给证明者p,将发送给证明者p,将发送给验证者委员会。
[0082]
s204、验证者委员会收到通过shamir秘密共享(shamir秘密共享是一种基于多项式的门限密码方案)给委员会中的区块链节点;
[0083]
s205、证明者对目前收到的握手消息(serverhello、serverexchange等)进行哈希计算得到摘要h,然后证明者和验证者委员会执行安全多方计算f
mpc,prf
,生成finished消息m
finished
,并将该消息发送给服务端。执行安全多方计算 f
mpc,prf
具体为:
[0084]
验证者委员会通过秘密重构算法(拉格朗日插值法)计算出并与验证者的参数rm计算出km;
[0085]
计算消息m
finished
=prf(km,"clientfinished",h)。
[0086]
步骤s3,由于证明者与验证者委员会共享了mac密钥,在生成请求报文时二者需共同生成查询请求的消息认证码mac(message authentication code, mac),并向服务端发起数据请求,具体包括:
[0087]
s301、证明者构建查询数据的请求q,验证者委员会通过密钥重构算法计算出
[0088]
s302、证明者和验证者委员会执行安全多方计算函数f
mpc,q
,生成带mac 的查询请求消息mq=(q||σq),其中σ是q消息认证码;
[0089]
执行安全多方计算函数f
mpc,q
的具体包括以下:
[0090]
计算完整的消息认证密钥
[0091]
根据tls协议中的hmac函数计算消息认证码σq并发送给证明者,hmac 函数如公式(2):
[0092][0093]
其中k表示消息认证密钥,m表示消息内容。
[0094]
s303、证明者将请求消息mq=(q||σq)发送给服务端。
[0095]
步骤s4,证明者获取响应报文,并传送给验证者委员会,验证者委员会泄露部分共享的mac密钥给验证者,以使证明者验证数据的完整性,具体包括:
[0096]
s401、服务端对请求mq校验完成后,查询本地数据,对数据按照步骤s302 中的hmac计算响应的消息认证码σr并将请求响应mr=(r||σr)返回给证明者 p;
[0097]
s402、证明者收到请求响应mr后,将mr传送给验证者委员会,之后验证者委员会通过密钥重构出并发送给证明者;
[0098]
s403、证明者收到后计算得到完整的消息认证密钥
[0099]
s5、证明者对请求报文做校验,校验无误后向验证者委员会做零知识证明,随后将数据上链;具体包括:
[0100]
s501、证明者使用通过hmac函数对请求响应mr进行完整性校验;
[0101]
s502、证明者根据验证者委员会需要验证的信息info作zk-snark零知识证明;
[0102]
s503、验证者委员会对信息info验证通过后,调用预言机智能合约 contract
oracle
上链。
[0103]
本发明公开了一种基于tls协议的多方认证区块链数据上链方法,该方法运行过程主要分为三个阶段:多方握手阶段、数据查询阶段和数据认证上链阶段。在多方握手阶段,证明者发起安全传输层协议连接,收到连接请求后服务端发起密钥协商请求,证明者收到该请求后与验证者委员会进行安全多方计算,共同持有tls会话密钥;在数据查询阶段,验证者委员会首先重构出共享的部分会话密钥,然后与证明者进行安全多方计算,共同构建数据请求报文,然后将报文发送给服务端;在数据认证上链阶段,证明者收到请求响应后,会将响应报文发送给验证者委员会,委员会随后将自身持有的密钥泄露给证明者,证明者拥有完整的密钥后会对响应报文进行验证并做零知识证明,验证者委员会认证通过后将数据上链。本发明基于安全多方计算和tls协议,实现了可多方认证、隐私保护的区块链数据上链方法,同时具备较高的实用性和扩展性。
[0104]
还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0105]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献