在区块链中进行通信的方法和装置与流程

文档序号:16433202发布日期:2018-12-28 20:17阅读:408来源:国知局
在区块链中进行通信的方法和装置与流程

本公开总体上涉及信息处理技术,更具体地说,涉及在区块链(blockchain)中进行通信的方法、装置及计算机可读介质。

背景技术

区块链技术是基于去中心化的对等网络,将密码学原理与共识机制相结合,来保障分布式各节点的数据连贯和持续,实现信息即时验证、可追溯、难篡改等特性,从而创造了一套隐私、高效、安全的分布式信任体系。

区块链网络由分布在各处的各个节点组成,节点之间通过例如通信链路传输各种受密码学保护的信息,并且共同执行用户提交至区块链网络的交易。在区块链的正常运行中,通常有两部分内容需要使用密码学进行保护,其一是节点之间交换的数据需要验证真伪,其二是用户提交至区块链网络的交易需要验证是否拥有相应的交易权限。这两部分内容的验证需要使用密码学中的签名算法。

在现有的区块链技术中,在区块链中进行通信时通常采用一种特定的签名算法进行签名和验签(验证签名),使得区块链的设计与开发在签名和验签方面缺乏扩展性。

因此,需要一种改进的在区块链中进行通信的方法。



技术实现要素:

总体上,本公开的实施例提供了在区块链中进行通信的方法、装置及计算机可读存储介质以至少部分地解决现有技术的上述及其它潜在问题。

本公开实施例的第一方面提供了一种在区块链中进行通信的方法。该方法包括:a.使用指定的签名算法,基于私钥和数据信息来生成针对所述数据信息的签名信息,其中,所述私钥根据所述签名算法来生成;b.向区块链网络中的至少一个节点发送第一消息,以使得所述至少一个节点能够验证所述第一消息,所述第一消息包括所述数据信息、所述签名信息以及类型信息,其中,所述类型信息指示所述指定的签名算法。

本公开实施例的第二方面提供了一种在区块链中进行通信的装置。该装置包括:存储器,其用于存储指令;以及处理器,其耦合到所述存储器,当所述指令被执行时使得所述处理器执行以下操作:a.使用指定的签名算法,基于私钥和数据信息来生成针对数据信息的签名信息,其中,所述私钥根据所述签名算法来生成;b.向区块链网络中的至少一个节点发送第一消息,以使得所述至少一个节点能够验证所述第一消息,所述第一消息包括所述数据信息、所述签名信息以及类型信息,其中,所述类型信息指示所述指定的签名算法。

在上述第一、第二方面的方法和装置的一个示例中,在步骤(操作)a之前,还可以包括:基于应用需求来确定所述指定的签名算法。

在上述第一、第二方面的方法和装置的一个示例中,基于应用需求来确定所述指定的签名算法可以包括:基于业务特性、安全性、计算复杂度和执行速度中的至少一项来确定所述指定的签名算法。

上述第一、第二方面的方法和装置的一个示例还可以包括:向所述至少一个节点发送与所述私钥相对应的公钥,其中,所述公钥根据所述签名算法来生成。

本公开实施例的第三方面提供了一种在区块链中进行通信的方法。该方法包括:接收来自区块链网络中的至少一个节点的第一消息,所述第一消息包括数据信息、针对所述数据信息的签名信息以及类型信息,其中,所述类型信息指示与所述签名信息相关联的签名算法;基于所述类型信息,确定所述签名算法;使用所述签名算法的公钥对所述签名信息进行验证。

本公开实施例的第四方面提供了一种在区块链中进行通信的装置。该装置包括:存储器,其用于存储指令;以及处理器,其耦合到所述存储器,当所述指令被执行时使得所述处理器执行以下操作:接收来自区块链网络中的至少一个节点的第一消息,所述第一消息包括数据信息、针对所述数据信息的签名信息以及类型信息,其中,所述类型信息指示与所述签名信息相关联的签名算法;基于所述类型信息,确定所述签名算法;使用所述签名算法的公钥对所述签名信息进行验证。

在上述第三、第四方面的方法和装置的一个示例中,基于所述类型信息,确定所述签名算法可以包括:基于所述类型信息,从多个签名算法中选择所述签名算法。

在上述第三、第四方面的方法和装置的一个示例中,所述公钥是与所述签名信息一起接收自所述至少一个节点的。

本公开的第五方面提供了一种计算机可读存储介质。该计算机可读存储介质存储有指令,所述指令用于执行根据本公开的第一、第三方面描述的方法。

本公开的实施例提供了在区块链中进行通信的方案,该方案可以兼容多个签名算法进行签名和验签,使得在区块链系统的设计和开发中能够扩展应用场景,兼容其它系统对签名和验签的需求,并方便地设计出符合特定密码学要求的区块链系统。

附图说明

现将仅通过示例的方式,参考所附附图对本公开的实施例进行描述,在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了其中可以实现本公开的实施例的示例性区块链网络100的示意图;

图2示出了根据本公开的实施例的在区块链中进行通信的示例性方法200的流程图;

图3示出了根据本公开的实施例的在区块链中进行通信的示例性方法300的流程图;以及

图4示出了根据本公开的实施例的在区块链中进行通信的装置400的示意图。

具体实施方式

现将结合附图对本公开的实施例进行具体的描述。应当注意的是,附图中对相似的部件或者功能组件可能使用同样的数字标示。所附附图仅仅旨在说明本公开的实施例。本领域技术人员可以在不偏离本公开精神和保护范围的基础上从下述描述得到替代的实施方式。

本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其它内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。本文使用词语“示例性”表示“充当示例、实例或举例说明”。本文中被描述为“示例性”的任何实施例都并非必然解释为对于其它实施例而言是优选的或有优势的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。

如前所述,在区块链的正常运行中,需要使用签名算法来保护节点间通信的数据。数字签名(digitalsignature)是一种类似写在纸上的普通的物理签名(手写签名),但是使用了公钥加密领域的技术来实现,又称为公钥数字签名,用于鉴别数字信息,使得签名不可伪造和不可抵赖。签名算法通常定义两者互补的运算,一个用于签名,另一个用于验证。数字签名采用非对称加密算法,例如包括rsa、dsa、ecdsa(ellipticcurvedigitalsignaturealgorithm,椭圆曲线数字签名算法)等。非对称加密算法采用公私钥对,当签名算法工作时,使用私钥对数据进行签名得到签名信息,之后使用公钥对签名信息进行验证。例如,在区块链的设计开发中,通常使用ecdsa作为签名算法,常见的椭圆曲线签名算法有ed25519、secp256k1以及国密(国密即国家密码局认定的国产密码算法)sm2算法,这些算法均使用某一条特定的椭圆曲线函数,可以生成对应的签名私钥与公钥。然而,在现有的区块链技术中,在区块链中进行通信时通常采用一种特定的签名算法进行签名和验签,例如,tendermint使用的是ed25519,而以太坊使用的是secp256k1,这使得区块链的设计与开发在签名验签方面缺乏扩展性。

有鉴于此,本公开的实施例提供了一种在区块链中兼容多种签名算法进行通信的解决方案。根据区块链参与方的不同,区块链通常被分为公有链、联盟链和私有链三种类型。公有链对外开放,用户无需任何授权就可以访问区块链网络和区块数据,发起各种交易。联盟链限制了只有联盟中的成员才能参与,区块链上的操作权限根据联盟定制的相关规则来确定。私有链一般在私有组织内部使用,区块链上的操作权限根据私有组织的自行规定执行。本公开的实施例可以适用于上述各种类型的区块链。

图1示出了其中可以实现本公开的实施例的示例性区块链网络100的示意图。区块链网络100包括多个区块链节点101、102、103、104。由于区块链技术具有去中心化、分布式的特性,各区块链节点可通过各种通信介质互相交换信息。区块链节点101-104中的每个区块链节点在发送数据时基于签名算法利用私钥对数据进行签名,接收到数据的区块链节点利用签名算法的公钥对数据的签名进行验证,从而防止数据被恶意伪造和篡改。用户可以在区块链网络100上发起交易。应当理解,节点间传输的数据可以包括用户发起的交易或节点间通信的任何其它数据。

图2示出了根据本公开的实施例的在区块链中进行通信的方法200的流程图。可以在图1所示的区块链网络100中的区块链节点处实现方法200。方法200包括以下步骤:

步骤201:使用指定的签名算法,基于私钥和数据信息来生成针对该数据信息的签名信息,其中,该私钥根据该签名算法来生成。在该步骤中,节点使用由签名算法生成的私钥对数据信息进行签名以得到签名信息。例如,在图1的区块链网络100中的节点101处,使用ecdsa中的ed25519签名算法,基于由ed25519签名算法生成的私钥对数据信息进行签名以得到相应的签名信息。

步骤202:向区块链网络中的至少一个节点发送第一消息,以使得该至少一个节点能够验证第一消息,第一消息包括该数据信息、该签名信息以及类型信息,其中,该类型信息指示该指定的签名算法。在该步骤中,与现有技术相比,在节点间传输的消息中,除了包括数据信息和签名信息之外,该消息还包括了用于指示签名算法的类型消息。例如,在图1的节点101处,向区块链网络100中的至少一个节点(例如,节点102)发送(或广播)第一消息,第一消息包括数据信息、签名信息以及类型信息,该类型信息指示生成该签名信息所使用的签名算法,例如ed25519签名算法。例如,类型信息可以是与签名算法相对应的指示符,如果指示符为1字节长度,则可以用于指示多达256种签名算法。

可选地,在一个实施例中,在步骤201之前,方法200还可以包括:基于应用需求来确定该指定的签名算法。例如,节点101可以出于应用需求,从多个签名算法中确定一个签名算法来对数据信息进行签名。

可选地,在一个实施例中,基于应用需求来确定该指定的签名算法可以包括:基于业务特性、安全性、计算复杂度和执行速度中的至少一项来确定该指定的签名算法。不同的签名算法可能适用于不同的业务,并具有不同的安全性、计算复杂度和执行速度等,因此在不同的场景下,可以基于业务特性、安全性、计算复杂度和执行速度等中的一个或多个因素来确定所采用的签名算法。例如,执行速度可以包括密钥生成速度、加密解密速度、签名验签速度等。

可选地,在一个实施例中,方法200还可以包括:向该至少一个节点发送与私钥相对应的公钥,其中,该公钥根据该签名算法来生成。签名算法生成公私钥对并利用私钥生成签名信息,为了在接收节点处能够使用公钥来验证接收到的签名信息,发送节点可以将公钥发送给接收节点。例如,可以将公钥随同签名信息一起发送给接收节点。

通过图2所描述的本公开的实施例,提供了在区块链中兼容多个签名算法进行签名的通信解决方案,使得在区块链的设计和开发中能够扩展应用场景,兼容各种签名算法对签名的需求,并方便地设计出符合特定密码学要求的区块链(例如使用国密sm2进行签名)系统。

图3示出了根据本公开的实施例的在区块链中进行通信的方法300的流程图。可以在图1所示的区块链网络100中的区块链节点处实现方法300。方法300包括以下步骤:

步骤301:接收来自区块链网络中的至少一个节点的第一消息,第一消息包括数据信息、针对该数据信息的签名信息以及类型信息,其中,该类型信息指示与该签名信息相关联的签名算法。例如,在图1的区块链网络的节点102处,接收由节点101发送的第一消息,第一消息包括数据信息、针对该数据信息的签名信息以及类型消息,该类型消息指示与生成签名信息相关联的签名算法。例如,该类型消息可以是与签名算法相对应的指示符,如果指示符为1字节长度,则可以用于指示多达256种签名算法。

步骤302:基于该类型信息,确定该签名算法。例如,节点102可以通过该类型信息来确定是使用了哪一种签名算法对数据信息进行签名。

步骤303:使用该签名算法的公钥对该签名信息进行验证。在该步骤中,接收节点利用签名算法的公钥来对基于私钥获得的签名信息进行验证。

可选地,在一个实施例中,基于该类型信息,确定该签名算法可以包括:基于该类型信息,从多个签名算法中选择该签名算法。例如,如果区块链网络120支持ed25519、secp256k1、国密sm2签名算法,并且节点102接收到的类型信息指示ed25519签名算法,则节点102可以从ed25519、secp256k1、国密sm2签名算法中选择ed25519签名算法用于验证签名信息。

可选地,在一个实施例中,该公钥是与该签名信息一起接收自该至少一个节点的。如上文关于图2的方法200所描述的,发送节点可以向接收节点发送与私钥相对应的公钥。相应地,在接收节点处,可以接收来自发送节点的随同签名信息一起发送的该公钥。

通过图3所描述的本公开的实施例,提供了在区块链中兼容多个签名算法进行验签的通信解决方案,使得在区块链的设计和开发中能够扩展应用场景,兼容各种签名算法对验签的需求,并方便地设计出符合特定密码学要求的区块链(例如使用国密sm2进行验签)系统。

图4示出了根据本公开的实施例的在区块链中验证签名的装置400的示意图。装置400可以包括:存储器401和耦合到存储器401的处理器402。存储器401用于存储指令,处理器402被配置为基于存储器401存储的指令来使装置400实现针对图2和图3所描述的方法的步骤中的任何步骤中的一个或多个。

如图4所示,装置400还可以包括通信接口403,用于与其它设备进行信息交互。此外,装置400还可以包括总线404,存储器401、处理器402和通信接口403通过总线404来彼此进行通信。

存储器401可以包括易失性存储器,也可以包括非易失性存储器。处理器402可以是中央处理器(cpu)、微控制器、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)或其它可编程逻辑器件、或是被配置为实现本发明的实施例的一个或多个集成电路。

此外,替代地,上述的在区块链中验证签名的方法能够通过计算机程序产品,即有形的计算机可读存储介质来体现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

以上所述仅为本公开的可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。此外,尽管可能关于若干实施方式中的一个来公开实施例的特定特征或方面,但是可以将这种特征或方面与其它实施方式的一个或多个其它特征或方面进行组合,这是由于其对任何给定或特定应用来说是期望且有利的。

虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。

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