本发明总体上涉及区块链交易,具体涉及在节点之间建立可信点对点通信的方法和设备。
背景技术:
1、在本文档中,我们使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本(distributed ledger),包括但不限于基于共识的区块链和交易链技术、许可和未许可的账本、共享账本及其变形。应指出的是,本发明并不限于与特定区块链的使用,其他替代性的区块链实现方案和协议也落入本发明的范围内。
2、区块链是基于共识的电子账本,其实现为基于计算机的去中心化、分布式系统,由区块构成,而这些区块进而由交易(transaction)构成。每个交易(tx)都是对区块链系统中的参与者之间的数字资产的控制的转移进行编码的数据结构,并且该数据结构包括至少一个输入和至少一个输出。每个区块均包含前一区块的散列,这些区块被链接在一起,以创建一个永久的、不可更改的记录,该记录自区块链创建以来写入了该区块链的所有交易。交易包含嵌入其输入和输出中的称为脚本的小程序,这些程序指定了如何以及由谁可以访问交易的输出。这些脚本是使用基于堆栈的脚本语言来编写的。
3、接收新交易的网络节点将迅速尝试将该交易推送到网络中的其他节点。在将新交易传输到其他节点之前,它会被“验证”,这意味着将根据一组标准对新交易进行检查,以确保该交易符合根据适用区块链协议进行适当交易的基本要求。
4、为了将交易写入区块链,节点将该交易合并到一个区块中,该节点旨在收集交易并将这些交易形成区块。节点再尝试完成与该节点相关的“工作证明”。成功的节点将其已确认的区块添加到区块链中,并且该区块通过网络传播,以便维护区块链副本的其他节点可以更新其记录。接收区块的节点也“验证”该区块及其中的所有交易,以确保其符合协议的正式要求。
5、去中心化点对点系统中的挑战之一是确保一个节点可以在可信的基础上与网络中的另一个节点进行通信。随着一些实施方式的网络架构的发展,一些节点可能承担更多的专用任务,而其他节点可能依赖那些专用的节点作为某些数据的来源或某些功能的执行者。如果一个节点要依赖另一个节点获取信息或作为合法来源,则它需要能够建立与该节点进行通信的可信关系。在节点可能具有不同角色的情况下,最好有一种确定和验证节点角色的机制。此外,如果一个节点被证明是非法的或恶意的,则其他节点应该可以记住该节点,从而忽略未来来自这样一个节点的通信。在点对点系统中,所面对的挑战是要在不损害系统的点对点性质的情况下,通过施加中央权限来解决这些问题。
技术实现思路
1、现在已经设计出了这样的解决方案。
2、因此,根据本发明,提供一种如所附权利要求中限定的方法及系统。
3、本技术可描述和公开管理从自治专用节点组到请求节点的凭证的安全分发的方法和设备。凭证的安全分发可以使用秘密份额和任何节点都不重建或拥有的组私钥。该凭证包括用于请求节点的标识符和秘密点,该秘密点是节点从多个专用节点中的每个提供的秘密点的部分中组合而成的,其中秘密点基于组私钥和请求节点的标识符的映射到点散列(map-to-point hash)。在某些实施方式中,节点可以是区块链节点。
4、本技术可进一步描述和公开两个节点在自治专用节点组的证明下彼此认证,而不涉及该组或不涉及去中心化证书管理器或认证器的方法和设备。该方法可包括第一节点和第二节点使用包含它们各自标识符和秘密点的双线性配对运算来导出相同的会话密钥。假设秘密点和标识符是通过使用组私钥从该组中获得的,那么双线性配对运算会使得在两个节点中的每个节点处生成相同的会话密钥,从而认证它们各自的凭证并实现两个节点之间的可信通信。
5、附加地或替代地,本技术描述了一种计算机实现的方法,该方法用于节点从专用节点组获得凭证,每个专用节点具有组私钥的私钥份额。该方法可包括:从所述节点向多个专用节点发送对所述凭证的请求,其中,所述节点具有标识符;从所述多个专用节点中的每个节点处接收秘密点的一部分,所述秘密点的一部分由所述节点从所述标识符和所述节点的私钥份额中生成;通过组合接收到的所述秘密点的部分来生成所述秘密点,其中,所述秘密点为组私钥乘以标识符的映射到点散列,所述凭证是所述标识符和所述秘密点。要获得组私钥的完整副本可能不需要任何所述专用节点或所述节点。
6、附加地或替代地,本技术描述了一种计算机实现的方法,该方法用于形成节点以从专用节点组获得凭证(该方法用于形成用以从专用节点组获得凭证的节点),每个专用节点具有组私钥的私钥份额,其中,所述方法包括:从所述节点向多个所述专用节点,发送对所述凭证的请求,其中,所述节点具有标识符,其中所述标识符包括标识所述节点的标识符字符串、和标识所述专用节点组角色的角色字符串,其中所述标识符根据所述标识符字符串、所述角色字符串和所述凭证的到期时间的级联来形成;从多个所述专用节点中的每个节点处,接收秘密点的一部分,所述秘密点的一部分由所述节点从所述标识符和所述节点的私钥份额中生成;以及,通过组合接收到的所述秘密点的部分来生成所述秘密点。其中,所述秘密点包括所述组私钥乘以所述标识符的映射到点散列,所述凭证包括所述标识符和所述秘密点;其中,获得所述组私钥的完整副本不需要任何所述专用节点和所述节点;并且其中,所述节点不是所述专用节点组的成员。
7、在一些实施方式中,发送请求包括向所述多个专用节点中的每个发送单独的请求。所述标识符可包括标识所述节点的标识符字符串和标识所述专用节点组角色的角色字符串。在一些情况下,所述标识符还包括所述凭证的到期时间,并且在一些其他情况下,发送请求包括发送所述标识符字符串,并且其中接收包括接收所述标识符。
8、在一些实施方式中,生成所述秘密点包括组合接收到的秘密点的部分。在一些示例实施方式中,组合可包括求和。
9、在一些实施方式中,所述秘密点是使用秘密份额(秘密共享)并基于组私钥生成的。在某些情况下,秘密份额(秘密共享)使用拉格朗日插值法和多个专用节点的私钥份额,而不重建组私钥。
10、附加地或替代地,本技术可描述一种用于第一节点与第二节点建立可信通信的计算机实现的方法,所述第二节点具有第二节点标识符和第二秘密点,所述第二秘密点为组私钥与所述第二节点标识符的映射到点散列相乘,所述组私钥与用于授予凭证的节点组相关联。所述方法可包括:从所述节点组获取第一秘密点,其中,所述第一秘密点为组私钥与第一节点标识符的映射到点散列相乘;将所述第一节点标识符发送给所述第二节点;接收所述第二节点标识符;使用双线性配对运算、所述第二节点标识符的映射到点散列、和所述第一秘密点一起来生成第一会话密钥;确认所述第一会话密钥与第二会话密钥相匹配,所述第二会话密钥由所述第二节点使用双线性配对运算、所述第二秘密点、和所述第一节点标识符的映射到点散列一起生成。
11、在一些实施方式中,所述通过双线性配对运算生成所述第一会话密钥由以下表达式之一来表示:
12、ka=e(h1(idb),sa),和
13、ka=e(sb,h1(ida)),
14、通过双线性配对运算生成所述第二会话密钥由所述表达式中的另一个来表示,并且其中e()是双线性配对运算,h1()是映射到点散列,ida和idb分别是所述第一节点标识符和所述第二节点标识符中的一个,sa和sb分别是所述第一秘密点和所述第二秘密点中的一个。
15、在一些实施方式中,获得所述第一秘密点包括从所述节点组中的多个节点中的每一个获得所述第一秘密点的各个部分,并且组合所述各个部分来形成所述第一秘密点,而不重组所述组私钥。
16、在一些实施方式中,所述确认包括:将用所述第一会话密钥加密的质询(challenge)从所述第一节点发送到所述第二节点,接收对所述质询的响应,并基于所述响应,确定所述第二节点使用所述第二会话密钥有效地解密了所述质询。
17、在一些实施方式中,所述发送还包括发送第一随机数,并且其中,所述接收还包括接收第二随机数和计算的c0值,其中,所述c0值包括所述第二会话密钥、所述第一随机数、和所述第二随机数的级联的散列。在这些情况的某些中,所述级联还包括所述第一节点标识符和所述第二节点标识符。在这些情形下的某些中,所述生成包括生成计算的c1值,所述c1值包括所述第一会话密钥、所述第一随机数、和所述第二随机数的级联的散列,并且其中,所述确认包括确认所述计算的c0值与所述计算的c1值相匹配。
18、在一些实施方式中,所述第二秘密点为所述组私钥乘以所述第二节点标识符的映射到点散列。
19、在一些实施方式中,所述第一秘密点和所述第二秘密点各自被所述节点组使用秘密共享分别提供给所述第一节点和第二节点。
20、附加地或替代地,本技术可描述一种节点,包括一个或多个处理器,存储器,网络接口以及包括处理器可执行指令的应用,这些指令在被执行时使得所述节点执行本文所述方法中一种或多种方法的操作。
21、附加地或替代地,本技术可描述一种节点,包括:处理器;存储器;网络接口;和,应用,所述应用包含处理器可执行指令,用于从专用节点组获得凭证,专用节点中的每一个都具有组私钥的私钥份额,其中,当所述处理器可执行指令被执行时,所述处理器可执行指令使得所述节点:向多个所述专用节点,发送对所述凭证的请求,其中,所述节点具有标识符,其中所述标识符包括标识所述节点的标识符字符串、和标识所述专用节点组角色的角色字符串,其中所述标识符根据所述标识符字符串、所述角色字符串和所述凭证的到期时间的级联来形成;从多个所述专用节点中的每个节点处,接收秘密点的一部分,所述秘密点的一部分由所述节点从所述标识符和所述节点的私钥份额中生成;以及,通过组合接收到的所述秘密点的部分来生成所述秘密点;其中,所述秘密点包括所述组私钥乘以所述标识符的映射到点散列,所述凭证包括所述标识符和所述秘密点;其中,获得所述组私钥的完整副本不需要任何所述专用节点和所述节点;并且其中,所述节点不是所述专用节点组的成员。
22、附加地或替代地,本技术可描述一种存储处理器可执行指令的非易失性处理器可读介质,所述处理器可执行指令在由一个或多个处理器执行时使得所述一个或多个处理器执行本文所述方法中一种或多种方法的操作。
1.一种由计算机实现的方法,所述方法用于形成节点以从专用节点组获得凭证,每个专用节点具有组私钥的私钥份额,其中,所述方法包括:
2.根据权利要求1所述的方法,其中,发送所述请求包括向多个所述专用节点中的每个发送单独的请求。
3.根据权利要求1中所述的方法,其中,所述标识符还包括所述凭证的所述到期时间。
4.根据权利要求1至3中的任意一项所述的方法,其中,发送所述请求包括发送所述标识符字符串,并且其中所述接收包括接收所述标识符。
5.根据权利要求1至4中的任意一项所述的方法,其中,所述生成所述秘密点包括组合接收到的所述秘密点的部分。
6.根据权利要求1至5中的任意一项所述的方法,其中,所述生成所述秘密点是使用秘密共享来生成基于所述组私钥的所述秘密点。
7.根据权利要求6所述的方法,其中,所述秘密共享使用拉格朗日插值法和所述多个专用节点的私钥份额,而不重建所述组私钥。
8.一种节点,包括:
9.根据权利要求8所述的节点,其中,当所述处理器可执行指令被执行时,所述处理器可执行指令使得所述节点发送所述请求的方式是:向多个所述专用节点中的每一个发送单独的请求。
10.根据权利要求8所述的节点,其中,所述标识符还包括所述凭证的所述到期时间。
11.根据权利要求9或10所述的节点,其中,当所述处理器可执行指令被执行时,所述处理器可执行指令使得所述节点通过发送所述标识符字符串来发送请求,并通过接收所述标识符来进行接收。
12.根据权利要求8至11中的任意一项所述的节点,其中:
13.一种非易失性处理器可读介质,存储有处理器可执行指令,所述处理器可执行指令由一个或多个处理器执行时使得所述一个或多个处理器执行根据权利要求1至7中任意一项所述的方法中的操作。