欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 用于使用数字签名的区块链变型的方法和系统独创技术56757字

用于使用数字签名的区块链变型的方法和系统

2021-03-31 12:56:21

用于使用数字签名的区块链变型的方法和系统

  本申请是2016年12月14日提交的申请号为201680071590.4、发明名称为“用于使用数字签名的区块链变型的方法和系统”的专利申请的分案申请。

  相关申请的交叉参考

  本申请要求2015年12月21日提交的序列号为14/976,331的美国专利申请的优先权和权益,通过引用的方式将其全部内容合并于此。

  技术领域

  本公开涉及使用数字签名来对区块链交易进行签名,具体地,涉及由多个实体将数字签名用于区块链交易的签名和验证,以增加安全性和更高效的验证。

  背景技术

  区块链用作电子交易的公共账本。添加到区块链的每个新交易区块提供以前的区块的进一步验证,从而随着区块链随时间的增长,区块链变得越来越强大。因为区块链中的过去的区块永远不会改变,并且由于区块链不会丢失或丢弃过去的区块,所以区块链成为所有交易的不可变但可公开访问的记录。区块链还可以提供额外的好处(例如,匿名和安全),这促进了他们在进行电子交易时的使用。

  为了生成区块链的新区块,许多区块链依赖于大量的计算能力,其使用与蛮力搜索相结合的散列算法来生成与区块链中前一个区块相匹配的散列。为了鼓励参与搜索,区块链通常允许具有任何合适的计算设备的任何用户参与,并且还经常向成功找到合适散列值的用户提供奖励。随着更多用户的参与,并且随着计算能力的增加,区块链可能会经历越来越多的能源和计算能力的浪费。

  因此,需要一种可以生成可靠且安全的区块链的新区块,但不会导致计算和能量的显著浪费的技术方案。核实过的可信参与者使用签名可以确保新区块是可靠的和安全的,同时使区块能够被适当核实以包括在区块链中,同时还需要显著较少的计算能力。此外,通过仅使用可信实体,可以限制参与者池,这可以减少生成区块链的新区块所浪费的能量。因此,需要一种利用可信参与者池和数字签名来对区块链交易进行签名的技术方案。

  发明内容

  本公开描述了一种使用数字签名对区块链交易进行签名的系统和方法。

  一种使用数字签名对区块链交易进行签名的方法,包括:由处理服务器的生成模块生成包括域私钥和域公钥的域密钥对,其中,在生成之后对所述域公钥进行签名;由所述处理服务器的接收设备接收多个成员公钥,其中,每个成员公钥是从区块链网络的相关联的成员接收的,并且每个所述成员公钥是密钥对中的公钥,所述密钥对包括所述成员公钥和与相关联的成员相对应的成员私钥;由所述处理服务器的签名模块使用所述域私钥对所述多个成员公钥中的每个成员公钥进行签名;由所述处理服务器的接收设备从所述区块链网络的特定成员接收交易区块,其中,所述交易区块包括多个区块链交易值和使用对应于所述特定成员的成员私钥签名的散列;由所述处理服务器的签名模块使用所述域私钥对接收到的交易区块进行签名;以及由所述处理服务器的发送设备电子地发送签名的交易区块。

  使用数字签名对区块链交易进行签名的另一种方法,包括:将区块链存储在处理服务器的存储器中,其中,所述区块链包括多个交易区块,每个交易区块至少包括多个区块链交易值;由所述处理服务器的生成模块生成包括成员私钥和成员公钥的成员密钥对;由所述处理服务器的发送设备将生成的成员公钥电子地发送到与所述区块链网络相关联的签名机构;由所述处理服务器的接收设备接收多个包括新交易区块的区块链交易值;由所述处理服务器的散列模块通过将一个或多个散列算法应用于包括在所述区块链中的多个交易区块中的特定区块来散列第一散列值;由所述处理服务器的生成模块生成第二散列值,其中,所述第二散列值与所述第一散列值相对应;由所述处理服务器的签名模块使用生成的成员私钥对生成的第二散列值进行签名;以及由所述处理服务器的发送设备将新交易区块和签名的第二散列值电子地发送到所述签名机构。

  一种使用数字签名对区块链交易进行签名的系统,包括:处理服务器的发送设备;处理服务器的生成模块,其被配置为生成包括域私钥和域公钥的域密钥对,其中,在生成之后对所述域公钥进行签名;处理服务器的接收设备,其被配置为接收多个成员公钥,其中,每个成员公钥是从区块链网络的相关联的成员接收的,并且每个所述成员公钥是密钥对中的公钥,所述密钥对包括所述成员公钥和与所述相关联的成员相对应的成员私钥;和所述处理服务器的签名模块,其被配置为使用所述域私钥对所述多个成员公钥中的每个成员公钥进行签名;其中,所述处理服务器的接收设备还被配置为从所述区块链网络的特定成员接收交易区块,其中,所述交易区块包括多个区块链交易值和使用对应于所述特定成员的成员私钥签名的散列;所述处理服务器的签名模块还被配置为使用所述域私钥对接收到的交易区块进行签名;以及所述处理服务器的发送设备还被配置为电子地发送签名的交易区块。

  使用数字签名对区块链交易进行签名的另一种系统,包括:处理服务器的签名模块;所述处理服务器的存储器,其被配置为存储区块链,其中,所述区块链包括多个交易区块,每个交易区块至少包括多个区块链交易值;所述处理服务器的生成模块,其被配置为生成包括成员私钥和成员公钥的成员密钥对;所述处理服务器的发送设备,其被配置为将生成的成员公钥电子地发送到与所述区块链网络相关联的签名机构;所述处理服务器的接收设备,其被配置为接收多个包括新交易区块的区块链交易值;所述处理服务器的散列模块,其被配置为通过将一个或多个散列算法应用于包括在所述区块链中的多个交易区块的特定区块来生成第一散列值。所述处理服务器的生成模块还被配置为生成第二散列值,其中,所述第二散列值与所述第一散列值相对应。所述处理服务器的签名模块被配置为使用生成的成员私钥对生成的第二散列值进行签名。所述处理服务器的发送设备被配置为将新交易区块和签名的第二散列值电子地发送到所述签名机构。

  附图说明

  通过结合附图阅读下面对示例性实施例的详细描述,可以最好地理解本公开的范围。附图中包括以下附图:

  图1是示出根据示例性实施例的用于使用数字签名对区块链交易进行签名的高级系统架构的框图。

  图2是示出根据示例性实施例的图1的用于对签名的区块链交易进行核实和对区块链区块进行数字签名的签名机构服务器的框图。

  图3是示出根据示例性实施例的图1的用于对区块链交易进行数字签名并对其进行验证的成员处理服务器的框图。

  图4是示出根据示例性实施例的用于生成、签名和分发用于数字签名区块链交易的密钥的过程流程的流程图。

  图5是示出根据示例性实施例的用于创建并且数字签名区块链交易的区块以包括在区块链中的过程的流程图。

  图6和图7是示出根据示例性实施例的用于使用数字签名来对区块链交易进行签名的示例性方法的流程图。

  图8是示出根据示例性实施例的计算机系统架构的框图。

  根据下文提供的详细描述,本公开的其他应用领域将变得显而易见。应当理解的是,示例性实施例的详细描述仅用于说明的目的,因此不旨在限制本公开的范围。

  具体实施方式

  术语词汇表

  区块链-基于区块链的货币的所有交易的公共分类账。一个或多个计算设备可以包括区块链网络,区块链网络可以被配置为将交易处理和记录为区块链中的区块的一部分。一旦完成了区块,就将该区块添加到区块链中并从而更新交易记录。在许多情况下,区块链可以是按照时间顺序的交易分类账,或者可以以可以适于由区块链网络使用的任何其他顺序呈现。在一些配置中,区块链中记录的交易可以包括目的地地址和货币量,以使得区块链记录有多少货币可归属于特定地址。在某些情况下,可以捕获例如源地址、时间戳等的附加信息。在一些实施例中,区块链还可以由额外的并且在一些情况下为任意的数据组成,所述数据由区块链网络通过工作量证明和/或与其相关联的任何其他合适的验证技术来确认和验证。在某些情况下,这样的数据可以作为交易的一部分包含在区块链中,例如包含在随附到交易数据的附加数据中。在某些情况下,将这样的数据包括在区块链中可以构成交易。在这种情况下,区块链可以不与特定的数字货币、虚拟货币、法定货币或其他类型的货币直接相关联。

  使用数字签名对区块链交易进行签名的系统

  图1示出了由可信参与者池使用可验证的数字签名来对区块链交易进行签名的系统100。

  系统100可以包括签名机构服务器102。下面更详细讨论的签名机构服务器102可以与区块链相关联并且被配置为对区块链交易的区块进行数字签名以将其包括在区块链中。在一些例子中,区块链可以与单个签名机构服务器102相关联,该单个签名机构服务器102可以对添加到区块链中的每个区块进行数字签名。在其他例子中,区块链可以与多个签名机构服务器102相关联,多个签名机构服务器102中的每一个都可以被配置为分别对添加到区块链的区块进行数字签名,可以是并行签名或冗余签名。在后面的例子中,不同的签名机构服务器102可以具有不同的密钥,并由成员系统分别对各自签名的区块进行验证,或者不同的签名机构服务器102可以使用相同的密钥,并且为了准确而将得到的签名的区块进行比较并由成员系统或其他签名机构服务器102进行验证。

  系统100还可以包括多个成员处理服务器104,在图1中示为成员处理服务器104a和104b。下面更详细讨论的成员处理服务器104可以与区块链相关联并且被配置为对区块链交易进行数字签名并且创建区块以包括在区块链中。成员处理服务器104还可以被配置为在将区块包括在区块链中之前,对已经由其他成员处理服务器104和/或签名机构服务器102签名的数字签名的区块进行验证。如本文所讨论的,签名机构服务器102和成员处理服务器104可以包括“区块链网络”,相关领域的技术人员可以理解“区块链网络”是指用于管理和维护区块链的系统和基础设施。

  系统100还可以包括多个参与者设备106,在图1中示为参与者设备106a、106b、106c、106d、106e和106f。每个参与者设备106都可以是适于向成员处理服务器104提交新的区块链交易以将其包括在要添加到区块链的新区块中的计算设备。计算设备可以是台式计算机、膝上型计算机、笔记本电脑、台式计算机、蜂窝电话、智能电话、智能电视、智能手表、可佩戴计算设备、可植入计算设备等。参与者设备106可以将与区块链交易相关联的数据电子地发送到成员处理服务器104以将其发布到区块链。发送到成员处理服务器104的数据可以基于交易的类型、区块链的属性以及其他标准,并且可以包括例如源地址、目的地地址和要转移的区块链货币的数量。在一些例子中,可以包括多个源或目的地地址,并且源地址可以由参与者设备106进行数字签名以如由相关联的区块链货币的授权用户进行验证。

  为了用于对区块和其他数据进行数字签名,签名机构服务器102可以生成域密钥对。域密钥对可以由域私钥和相对应的域公钥组成。域密钥可以用于对区块和其他数据的签名,其中域私钥可以用于对一条数据进行签名并且域公钥可以用于(例如,由另一个实体,例如成员处理服务器104使用)验证或以其他方式核实签名。可以使用任何合适的密钥对生成算法来生成域密钥对。使用域私钥对数据进行数字签名可以使用为数据的数字签名使用与本文讨论的功能一致的私钥的任何合适的方法。

  一旦生成域密钥对,签名机构服务器102就可以具有签名的域公钥。在一些实施例中,域公钥可以由签名机构服务器102自签名。在一些例子中,只有当签名机构服务器102和成员处理服务器104是用于访问和/或提交相关联的区块链的封闭网络的一部分时,域公钥才可以是自签名的。在其他实施例中,域公钥可以由公共机构签名,公共机构例如被配置为对公钥进行签名的可信第三方实体。可信第三方可以对域公钥进行签名,可以由区块链网络中的一个或多个成员处理服务器104对域公钥的签名进行验证。

  每个成员处理服务器104还可以生成密钥对,这里称为“成员”密钥对。每个成员密钥对可以由成员私钥和相对应的成员公钥组成。在一些实施例中,可以使用签名机构服务器102在生成域密钥对中使用的相同密钥对生成算法来生成成员密钥对。每个成员处理服务器104都可以安全地存储它们各自的成员私钥并且可以将它们各自的成员公钥电子地发送到签名机构服务器102进行签名。可以通过将成员公钥叠加在数据信号上来将成员公钥电子地发送到签名机构服务器102,其中,使用任何合适类型的通信网络或方法(例如,局域网、广域网、无线区域网络、射频、蓝牙、近场通信、互联网等)来发送该数据信号。

  签名机构服务器102可以被配置为使用域私钥对每个成员公钥进行签名。然后,可以将签名的成员公钥重新分发给成员处理服务器104,以便以后用于对签名的区块和区块链交易进行验证。在一些实施例中,每个成员处理服务器104都可以接收区块链网络中的一个或多个其他成员处理服务器104的签名的成员公钥,例如,以对一个或多个其他成员处理服务器104作出的签名进行验证。在一些例子中,签名机构服务器102还可以将签名的域公钥也分发给一个或多个成员处理服务器104,以用于由签名机构服务器102使用域私钥对签名做出验证。

  在一些实施例中,签名机构服务器102可以被配置为在将任何密钥分发给成员处理服务器104之前对成员处理服务器104进行认证。可以使用标准注册方案来执行成员处理服务器104的认证,由此成员处理服务器104和/或与其相关联的实体可以向签名机构服务器102注册为用于数字签名区块链交易的可信服务器。例如,作为注册过程的一部分,成员处理服务器104可以向签名机构102提供行业证书、标识信息、详细设备数据等,该签名机构102可以核实数据的真实性并且将服务器注册为区块链网络中的可以向其分发密钥的成员处理服务器104。在一些例子中,签名机构服务器102可以被配置为检查或以其他方式确定处理服务器试图注册为成员处理服务器104以用于数字签名区块链交易的适合性。例如,可以基于处理服务器的技术水平、服务器和相关联的计算系统使用的安全协议、内部网络基础设施等作出该确定。在一些情况下,签名机构服务器102可以限制成员处理服务器104的数量,例如,出于安全原因而将成员处理服务器104的数量限制为有限大小的成员处理服务器104的可信群组。

  在注册并接收签名的成员公钥和签名的域公钥之后,成员处理服务器104可接收区块链交易以将其发布到区块链。为了生成区块链的新区块,成员处理服务器104必须搜索与新区块将要被添加到的区块链中的以前的区块的散列相对应的散列。成员处理服务器104可以使用一个或多个合适的散列算法来散列以前的区块以获得第一散列值。成员处理服务器104然后可以搜索与第一散列值相对应的第二散列值。该相对应可以是精确匹配(例如,两个散列值是等同的)或者可以以一种或多种其他方式相对应,例如,第二散列值是第一散列值的倒数,散列值中的特定数量的字符相同,第一散列值中的多个最后的字符和第二散列值的多个最先字符相同等等。可以接受的相对应可以基于期望的搜索时间长度、期望的安全级别、区块链网络的偏好等等。

  在找到合适的第二散列值之后,成员处理服务器104可以使用它们的成员私钥对散列值进行签名。成员处理服务器104然后可以将由区块链交易和签名的散列值组成的区块电子地发送到签名机构服务器102。签名机构服务器102然后可以使用它们的域私钥对该区块进行签名。签名机构服务器102可以将数字签名的区块分发给一个或多个成员处理服务器104进行验证。在一些实施例中,数字签名的区块可以由不是发起该区块的成员处理服务器104之外的其他成员处理服务器104来验证。例如,在图1所示的例子中,成员处理服务器104a可以将交易和签名的散列值提供给签名机构服务器102,并且可以将签名的区块分发给成员处理服务器104b进行验证。

  成员处理服务器104可以使用与对区块进行签名的签名机构服务器102相关联的签名的域公钥以及与对散列值进行签名的成员处理服务器104相关联的签名的成员公钥,来验证该区块。区块的验证可以包括使用合适的散列算法将签名的域公钥应用于签名的区块以产生交易和签名的散列值,以及将签名的成员公钥应用于签名的散列值以产生未签名的散列值。然后可以将未签名的散列值核实为等同于新区块将要被添加到的区块链中的先前区块的散列值。一旦区块被验证,就可以将新区块添加到区块链中。在一些实施例中,区块可以首先由多个成员处理服务器104验证。在一些例子中,新区块可以由参与者设备106验证。在该例子中,参与者设备106可以接收签名的域公钥和签名的成员公钥以如上所述的用于验证签名的区块。在一些情况下,执行验证的成员处理服务器104或参与者设备106还可以验证域公钥的证书信任链,例如用于由可信第三方实体对域公钥的签名。

  本文讨论的方法和系统可以提供对区块链中的区块链交易的新区块的签名和验证,其可以使用较少的计算能力来执行并且减少能量浪费同时保持现有区块链系统中使用的相同的安全等级。通过使用数字签名,可以保持交易区块的安全性和真实性,同时使用较少的计算能力,这可以进一步更有效地将区块添加到区块链,并且反过来,取消了在区块链网络中使用附加节点并且减少了能源浪费。另外,数字签名的使用还可以使参与者设备106能够验证交易区块,由于计算要求这可能对于传统区块链网络中的参与者设备来说是不可能或不切实际的。

  签名机构服务器

  图2示出了系统100的签名机构服务器102的实施例。对于相关领域的技术人员来说显而易见的是,图2所示的签名机构服务器102的实施例仅作为举例说明而提供,并且可能不能穷尽适于执行本文讨论的功能的签名机构服务器102的所有可能的配置。例如,图8示出的以及在下文更详细讨论的计算机系统800可以是签名机构服务器102的合适配置。

  签名机构服务器102可以包括接收设备202。接收设备202可以被配置为经由一个或多个网络协议在一个或多个网络上接收数据。在一些例子中,接收设备202还可以被配置为经由合适的通信网络(例如,局域网、广域网、射频网络、因特网)从成员处理服务器104、参与者设备106和其他实体接收数据。在一些实施例中,接收设备202可以由多个设备组成,例如通过不同网络接收数据的不同接收设备,例如通过近场通信接收数据的第一接收设备和通过互联网接收数据的第二接收设备。接收设备202可以电子地接收发送的数据信号,其中,数据可以叠加在数据信号上并且通过接收设备202对数据信号的接收,对数据信号进行解码、解析、读取或以其他方式获得。在一些例子中,接收设备202可以包括对接收到的数据信号进行解析以获得叠加在其上的数据的解析模块。例如,接收设备202可以包括解析器程序,其被配置为接收数据信号并且将接收到的数据信号变换成处理设备执行的功能的可用输入,以执行本文描述的方法和系统。

  接收设备202可以被配置为接收由成员处理服务器104电子发送的数据信号。来自成员处理服务器104的数据信号可以与用于签名的成员公钥叠加,与用于签名的交易块和签名的散列值叠加,并且该数据信号是由于对签名的交易块执行验证而产生的。接收设备202还可以被配置为接收参与者设备106电子发送的数据信号,该数据信号可以与验证结果叠加。在一些实施例中,接收设备202可以从第三方实体接收数据信号,例如,在域公钥的签名期间接收到的数据信号。

  签名机构服务器102还可以包括通信模块204。通信模块204可以被配置为在模块、引擎、数据库、存储器和签名机构服务器102的其他组件之间传输数据以用于执行本文所讨论的功能。通信模块204可以由一个或多个通信类型组成并且利用各种通信方法来在计算设备内的通信。例如,通信模块204可以由总线、接触引脚连接器,导线等组成。在一些实施例中,通信模块204还可以被配置为在签名机构服务器102的内部组件和签名机构服务器102的外部组件(例如,外部连接的数据库、显示设备、输入设备等)之间通信。签名机构服务器102还可以包括处理设备。处理设备可以被配置为执行本文讨论的签名机构服务器102的功能,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,处理设备可以包括专门配置为执行处理设备的一个或多个功能的多个引擎和/或模块(例如,查询模块206、生成模块208、签名模块210、认证模块212等),和/或处理设备可以由上述引擎和/或模块组成。如本文所使用的,术语“模块”可以是特别被编程为接收输入、使用该输入执行一个或多个处理、并提供输出的软件或硬件。基于本公开的内容,由各种模块执行的输入、输出和处理对于本领域技术人员将是显而易见的。

  签名机构服务器102可以包括查询模块206。查询模块206可以被配置为对数据库执行查询以识别信息。查询模块206可以接收一个或多个数据值或查询字符串,并且可以基于此在指示的数据库(例如,存储器216)上执行查询字符串以识别存储在其中的信息。查询模块随后可以根据需要将识别出的信息输出到签名机构服务器102的适当的引擎或模块。查询模块206可以例如在存储器216上执行查询以识别在此讨论的方法中使用的密钥、区块链数据和其他数据。

  签名机构服务器102可以包括生成模块208。生成模块208可以被配置为生成密钥对和共享秘钥。生成模块208可以接收作为输入的请求,可以执行所请求的功能以生成数据,并且可以输出所请求的数据以供签名机构服务器102的另一模块或引擎使用。例如,生成模块206可以被配置为生成密钥对,例如用于对区块链交易的新区块进行签名和验证以将其包括在区块链中的域密钥对。生成模块206可以被配置为使用任何合适的密钥对生成算法来生成域密钥对。域密钥对可以由域私钥和相对应的域公钥组成。

  签名机构服务器102还可以包括签名模块210。签名模块210可以被配置为接收待签名的数据,可以使用私钥对该数据进行签名,并且可以将签名的数据输出到签名机构服务器102的另一个模块或引擎。在一些例子中,签名模块210还可以具有用于签名的私钥。在其他例子中,签名模块210可以获得私钥,例如,通过向查询模块206发出指令来识别存储器216中用于对数据进行签名的私钥来获得私钥。签名模块210可以被配置为例如使用生成模块208生成的域私钥来对成员公钥和完成的交易区块进行签名。在一些实施例中,签名模块210还可以被配置为对生成模块208生成的域私钥进行自签名。

  签名机构服务器102还可以包括认证模块212。认证模块212可以被配置为接收用于认证的数据,可以对数据进行认证,并且可以将认证的结果(例如,成功或失败)输出到签名机构服务器102的另一个模块或者引擎。例如,签名机构服务器102可以从成员处理服务器104接收数据(例如,通过接收设备202接收),作为标准注册过程的一部分,可以由认证模块212对该数据进行认证,签名机构服务器102可以将成员处理服务器104注册为区块链网络中的节点。

  签名机构服务器102还可以包括发送设备214。发送设备214可以被配置为通过一个或多个网络协议在一个或多个网络上发送数据。在一些例子中,发送设备214可以被配置为通过合适的通信网络(例如,局域网、广域网、射频网络、因特网)向成员处理服务器104、参与者设备106和其他实体发送数据。在一些实施例中,发送设备214可以由多个设备组成,例如通过不同网络发送数据的不同发送设备,例如通过近场通信发送数据的第一发送设备和通过因特网发送数据的第二发送设备。发送设备214可以电子地发送具有叠加的数据的数据信号,该叠加的数据可以由接收计算设备解析。在一些例子中,发送设备214可以包括用于叠加、编码或以其他方式格式化数据为适合于传输的数据信号的一个或多个模块。

  发送设备214可以被配置将数据信号电子地发送到成员处理服务器104。电子地发送到成员处理服务器104的数据信号可以与签名的公钥(包括签名的成员公钥和签名的域公钥)和签名的交易区块叠加以进行验证。发送设备214还可以被配置为将与签名的交易区块叠加的数据信号电子地发送到参与者设备106以由参与者设备106进行验证。在一些例子中,发送设备214可以被进一步配置为将数据信号(例如,叠加有域公钥的数据信号)电子地发送到第三方实体,以由可信第三方签名。

  签名机构服务器102还可以包括存储器216。存储器216可以被配置为存储由签名机构服务器102使用以执行本文讨论的功能的数据。存储器216可以被配置为使用合适的数据格式化方法和模式来存储数据,并且可以是任何适当类型的存储器例如只读存储器、随机存取存储器等。存储器216可以包括例如域私钥、签名的域公钥、签名的成员公钥、将每个签名的成员公钥与成员处理服务器104相关联的数据、区块链等。存储器216可以被配置为存储密钥对生成算法、散列算法以及用于执行本文讨论的签名机构服务器102的功能的其他算法。

  签名机构服务器

  图2示出了系统100的成员处理服务器104的实施例。对于相关领域的技术人员来说显而易见的是,图2所示的成员处理服务器104的实施例仅作为举例说明而提供,并且可能不能穷尽适于执行本文讨论的功能的成员处理服务器104的所有可能的配置。例如,图8示出的以及在下文更详细讨论的计算机系统800可以是成员处理服务器104的合适配置。

  成员处理服务器104可以包括接收设备302。接收设备302可以被配置为经由一个或多个网络协议在一个或多个网络上接收数据。在一些例子中,接收设备302还可以被配置为经由合适的通信网络(例如,局域网、广域网、射频网络、因特网)从签名机构服务器102、参与者设备106和其他实体接收数据。在一些实施例中,接收设备302可以由多个设备组成,例如通过不同网络接收数据的不同接收设备,例如通过近场通信接收数据的第一接收设备和通过互联网接收数据的第二接收设备。接收设备302可以电子地接收发送的数据信号,其中,数据可以叠加在数据信号上并且通过接收单元302对数据信号的接收,对数据信号进行解码、解析、读取或以其他方式获得。在一些例子中,接收设备302可以包括对接收到的数据信号进行解析以获得叠加在其上的数据的解析模块。例如,接收设备302可以包括解析器程序,其被配置为接收数据信号并且将接收到的数据信号变换成由处理设备执行的功能的可用输入以执行本文描述的方法和系统。

  接收设备302可以被配置为接收签名机构服务器102电子发送的数据信号。从签名机构服务器102接收的数据信号可以与签名的域公钥、签名的成员公钥以及签名的交易区块叠加,以由成员处理服务器104进行验证。接收设备302还可以被配置为从参与者设备106接收数据信号,该数据信号可以与包括在新区块中的区块链交易叠加,以及在参与者设备106可以执行新区块的验证的情况下与验证结果叠加。

  成员处理服务器104还可以包括通信模块304。通信模块304可以被配置为在模块、引擎、数据库、存储器和成员处理服务器104的其他组件之间传输数据以用于执行本文所讨论的功能。通信模块304可以由一个或多个通信类型组成并且利用各种通信方法来在计算设备内的通信。例如,通信模块304可以由总线、接触引脚连接器,导线等组成。在一些实施例中,通信模块304还可以被配置为在成员处理服务器104的内部组件和成员处理服务器104的外部组件(例如,外部连接的数据库、显示设备、输入设备等)之间通信。成员处理服务器104还可以包括处理设备。处理设备可以被配置为执行本文讨论的成员处理服务器104的功能,这对于相关领域的技术人员来说是显而易见的。在一些实施例中,处理设备可以包括专门配置为执行处理设备的一个或多个功能的多个引擎和/或模块(例如,查询模块306、生成模块308、签名模块310、验证模块312等),和/或处理设备可以由上述引擎和/或模块组成。如本文所使用的,术语“模块”可以是由特定用途的软件特别地编程为接收输入、使用该输入执行一个或多个处理、并提供输出的硬件。基于本公开的内容,由各种模块执行的输入、输出和处理对于本领域技术人员将是显而易见的。

  成员处理服务器104可以包括查询模块306。查询模块306可以被配置为对数据库执行查询以识别信息。查询模块306可以接收一个或多个数据值或查询字符串,并且可以基于此在指示的数据库(例如,存储器316)上执行查询字符串以识别存储在其中的信息。查询模块随后可以根据需要将识别出的信息输出到成员处理服务器104的适当的引擎或模块。查询模块306可以例如在存储器316上执行查询以识别在此讨论的方法中使用的密钥、区块链数据和其他数据。

  成员处理服务器104可以包括生成模块308。生成模块308可以被配置为生成密钥对和共享秘钥。生成模块308可以接收作为输入的请求,可以执行所请求的功能以生成数据,并且可以输出所请求的数据以供成员处理服务器104的另一模块或引擎使用。例如,生成模块306可以被配置为生成密钥对,例如用于对散列值进行签名并对区块链交易的新区块进行验证以将其包括在区块链中的成员密钥对。生成模块306可以被配置为使用任何合适的密钥对生成算法来生成成员密钥对。成员密钥对可以由成员私钥和相应的成员公钥组成。生成模块306还可以被配置为生成散列值。可以通过将一个或多个散列算法应用于生成散列值的数据来生成散列值。例如,生成模块306可以被配置为生成用于区块链中的区块的散列值。生成模块306还可以被配置为使用合适的方法(例如,通过将散列算法应用于数据,使用一个或多个算法来执行计算等)来生成匹配的或以其他方式相对应的散列值。

  成员处理服务器104还可以包括签名模块310。签名模块310可以被配置为接收待签名的数据,可以使用私钥对该数据进行签名,并且可以将签名的数据输出到成员处理服务器104的另一个模块或引擎。在一些例子中,签名模块310还可以具有用于签名的私钥。在其他例子中,签名模块310可以获得私钥,例如,通过向查询模块306发出指令来识别存储器216中用于对数据进行签名的私钥来获得私钥。签名模块310可以被配置为例如对生成模块308生成的散列值进行签名,以将区块链交易包括在要包括在区块链中的新区块中。

  成员处理服务器104还可以包括验证模块312。验证模块312可以被配置为接收要验证的数据,可以对数据进行验证,并且可以将验证结果(例如,成功或失败)输出到成员处理服务器104另一个模块或者引擎。例如,验证模块312可以接收(例如,通过接收设备302)签名的区块,可以由验证模块312使用与对该区块进行签名的签名机构服务器102相关联的签名的域公钥对该签名的区块进行验证。验证模块312还可以使用签名的成员公钥来验证签名的散列值(例如,其可以通过验证包括签名的散列值的签名的区块来得到)。成员公钥可以是由生成模块308生成的成员公钥,也可以是从与用于签名散列值的成员处理服务器104相关联的签名机构服务器102接收的成员公钥。在后一个例子中,签名机构服务器102可以提供(例如,和签名的区块一起)签名的成员公钥或哪个成员公钥将用于验证的指示。

  成员处理服务器104还可以包括发送设备314。发送设备314可以被配置为通过一个或多个网络协议在一个或多个网络上发送数据。在一些例子中,发送设备314可以被配置为通过合适的通信网络(例如,局域网、广域网、射频网络、因特网)向签名机构服务器102、参与者设备106和其他实体发送数据。在一些实施例中,发送设备314可以由多个设备组成,例如通过不同网络发送数据的不同发送设备,例如通过近场通信发送数据的第一发送设备和通过因特网发送数据的第二发送设备。发送设备314可以电子地发送叠加有可以由接收计算设备解析的数据的数据信号。在一些例子中,发送设备314可以包括用于叠加、编码或以其他方式格式化数据为适合于传输的数据信号的一个或多个模块。

  发送设备314可以被配置将数据信号电子地发送到签名机构服务器102。电子地发送到签名机构服务器102的数据信号可以与用于签名的公钥、签名的散列值、要添加到区块链的交易区块、验证结果、以及适用于执行本文描述的功能的其他数据叠加。发送设备314还可以被配置为将与签名的交易区块叠加的数据信号电子地发送到参与者设备106以由参与者设备106进行验证。

  成员处理服务器104还可以包括存储器316。存储器316可以被配置为存储由成员处理服务器104使用以执行本文讨论的功能的数据。存储器316可以被配置为使用合适的数据格式化方法和模式来存储数据,并且可以是任何适当类型的存储器,例如,只读存储器、随机存取存储器等。存储器316可以包括例如成员私钥、相应的签名的成员公钥、与其他成员处理服务器102相关联的签名的成员公钥、将每个附加的签名的成员公钥与另一成员处理服务器104相关联的数据、区块链、签名的域公钥等。存储器316可以被配置为存储密钥对生成算法、散列算法以及用于执行本文讨论的成员处理服务器104的功能的其他算法。

  用于数字签名的密钥的生成和分配

  图4示出了由图1所示的系统100的签名机构服务器102和成员处理服务器104生成并分发密钥的过程,以用于对区块链交易进行数字签名以包括在区块链中。

  在步骤402中,签名机构服务器102的生成模块208可以生成域密钥对。域密钥对可以使用合适的密钥对生成算法来生成,并且可以由域私钥和相应的域公钥组成。在步骤404中,签名机构服务器102的签名模块210可以域公钥进行自签名。在一些例子中,域公钥可以使用相对应的域私钥进行签名。在其他例子中,可以使用不同的私钥。在一些实施例中,步骤404可以由可信第三方实体对域公钥进行签名来代替。

  在步骤406中,成员处理服务器104的生成模块308可以生成成员密钥对。成员密钥对可以使用合适的密钥对生成算法来生成,并且可以由成员私钥和相对应的成员公钥组成。在步骤408中,成员处理服务器的发送设备314可以使用合适的通信网络向签名机构服务器102电子地发送数据信号,其中数据信号与生成的成员公钥和认证数据叠加。认证数据可以是与适于对其进行识别和/或认证的成员处理服务器104相关联的数据。

  在步骤410中,签名机构服务器102的接收设备202可以从成员处理服务器104接收数据信号。在步骤412中,签名机构服务器102的认证模块212可以使用提供的认证数据来对成员处理服务器104进行认证。然后,一旦认证完成,则在步骤414中,签名机构服务器102的签名模块210可以使用域私钥对成员公钥进行签名。

  在步骤416中,签名机构服务器102的发送设备214可以使用合适的通信网络将数据信号电子地发送到成员处理服务器104,该数据信号叠加有签名的成员公钥、以及与其他成员处理服务器104相关联的附加的签名的成员公钥。在一些例子中,还可以将签名的域公钥发送到成员处理服务器104。在步骤418中,成员处理服务器104的接收设备302可以接收数据信号以解析其中包含的数据。

  数字签名的区块的生成和验证

  图5示出了使用图1所示的系统100的签名机构服务器102和成员处理服务器104来生成数字签名的区块链交易的区块并对其进行验证的过程。

  在步骤502中,成员处理服务器104的接收设备302可以接收多个区块链交易。每个区块链交易都可以从参与者设备106接收,并且可以包括与要发布到区块链的交易相关联的数据,该区块链与成员处理服务器104相关联。在步骤504中,成员处理服务器104的生成模块308可以生成由区块链交易组成的新区块。在一些例子中,该区块还可以包括附加数据,例如标题、交易计数器和其他数据。包括在用于区块链的区块中的附加数据可以取决于区块链的特性,这对于相关领域的技术人员来说是显而易见的。

  在步骤506中,成员处理服务器104的生成模块308可以找到合适的散列值。找到合适的散列值可以包括:通过将散列算法应用于区块链中的先前区块(例如,要添加的新区块之前的区块)生成第一散列值,以及生成或以其他方式识别出与第一散列值相对应的第二散列值。一旦识别出合适的散列值,则在步骤508中,成员处理服务器102的签名模块310就可以使用它们的成员私钥对散列值进行签名。

  在步骤510中,成员处理服务器104的发送设备314可以使用合适通信网络将叠加有新区块和签名的散列值的数据信号电子地发送到签名机构服务器102。在步骤512中,签名机构服务器102的接收设备202可以接收数据信号以解析叠加在其上的数据。在步骤514中,签名机构服务器102的签名模块210可以使用它们的域私钥对由新区块和签名的散列值组成的组合区块进行签名。

  在步骤516中,签名机构服务器102的发送设备214可以使用合适的通信网络将叠加有数字签名的区块的数据信号电子地发送到成员处理服务器104。在步骤518中,成员处理服务器104的接收设备302可以接收签名的区块,并且在步骤520中,成员处理服务器104的验证模块312可以使用签名的域公钥和签名的成员公钥对签名的区块进行验证。在一些实施例中,步骤518和520可以由与步骤502至510中使用的成员处理服务器不同的成员处理服务器104来执行。在该实施例中,在步骤520中执行的验证可以使用与用于在步骤508对散列值进行签名的成员处理服务器104相关联的签名的成员公钥。

  使用数字签名对区块链交易进行签名的第一示例性方法

  图6示出了用于对区块链交易的区块进行数字签名的方法600,该数字签名包括签名的散列值以对其进行验证。

  在步骤602中,可以由处理服务器(例如,签名机构服务器102)的生成模块(例如,生成模块208)生成域密钥对,其中域密钥对包括域私钥和域公钥,并且其中在生成之后对该域公钥进行签名。在步骤604中,可以由处理服务器的接收设备(例如,接收设备202)接收多个成员公钥,其中,每个成员公钥是从区块链网络的相关联的成员(例如,成员处理服务器104)接收的,并且每个成员公钥是包括成员公钥和与相关联的成员相对应的成员私钥的密钥对中的公钥。

  在步骤606中,可以由处理服务器的签名模块(例如,签名模块210)使用域私钥对多个成员公钥中的每个成员公钥进行签名。在步骤608中,可以由处理服务器的接收设备从区块链网络的特定成员接收交易区块,其中,交易区块包括多个区块链交易值和使用对应于特定成员的成员私钥签名的散列。

  在步骤610中,可以由处理服务器的签名模块使用域私钥对接收到的交易区块进行签名。在步骤612中,可以由处理服务器的发送设备(例如,发送设备214)电子地发送签名的交易区块。

  在一个实施例中,方法600还可以包括由处理服务器的发送设备将每个签名的成员公钥电子地发送到区块链网络的一个或多个成员。在一些实施例中,可以由公共机构对域公钥进行签名。在其他实施例中,可以由处理服务器的签名模块对域公钥进行签名。在一个实施例中,方法600还可以包括:由处理服务器的接收设备从区块链网络的每个成员接收认证信息;以及在对相关联的成员公钥进行签名之前,由处理服务器的认证模块(例如,认证模块212)使用接收到的认证信息对区块链网络的每个成员进行认证。

  使用数字签名对区块链交易进行签名的第二示例性方法

  图7示出了用于对散列值进行数字签名以将其包括在区块链交易的区块中的方法700,该区块用于数字签名并包括在区块链中。

  在步骤702中,可以将区块链存储在处理服务器(例如,成员处理服务器104)的存储器(例如,存储器316)中,其中,区块链包括多个交易区块,每个交易区块至少包括多个区块链交易值。在步骤704中,可以由处理服务器的生成模块(例如,生成模块308)生成包括成员私钥和成员公钥的成员密钥对。

  在步骤706中,可以由处理服务器的发送设备(例如,发送设备314)将生成的成员公钥电子地发送到与区块链网络相关联的签名机构(例如,签名机构服务器102)。在步骤708中,可以由处理服务器的接收设备(例如,接收设备302)接收多个包括新交易区块的区块链交易值。

  在步骤710中,可以由处理服务器的散列模块(例如,生成模块308)通过将一个或多个散列算法应用于包括在区块链中的多个交易区块中的特定区块来散列第一散列值。在步骤712中,可以由处理服务器的生成模块生成与第一散列值相对应的第二散列值。

  在步骤714中,可以由处理服务器的签名模块(例如,签名模块210)使用生成的成员私钥对生成的第二散列值进行签名。在步骤716中,可以由处理服务器的发送设备将新交易区块和签名的第二散列值电子地发送到签名机构。

  在一个实施例中,可以通过将一个或多个散列算法应用于接收到的新交易区块来生成第二散列值。在一些实施例中,方法700还可以包括由处理服务器的发送设备将认证信息电子地发送到签名机构。在一个实施例中,方法700还可以包括:由处理服务器的接收设备从签名机构接收签名的交易区块和签名的域公钥,其中,签名的交易区块包括新交易区块和签名的第二散列值,并且使用与签名的域公钥相对应的域私钥对该签名的交易区块进行签名;以及由处理服务器的验证模块(例如,验证模块312)使用成员公钥和签名的域公钥来验证签名的交易区块。在另一个实施例中,验证签名的交易区块可以包括:将签名的域公钥应用于签名的交易区块以产生新交易区块和签名的第二散列值;将成员公钥应用于签名的第二散列值以产生第二散列值;以及验证所产生的第二散列值与所生成的第二散列值相对应。

  计算机系统架构

  图8示出了计算机系统800,在该计算机系统中本公开的实施例或其一部分可以实现为计算机可读代码。例如,可以使用硬件、软件、固件,其上存储有指令的非暂时性计算机可读介质或其组合来在计算机系统800中实现图1的签名机构服务器102和成员处理服务器104,并且图1的签名机构服务器102和成员处理服务器104可以在一个或多个计算机系统或其他处理系统中实现。硬件、软件或其任何组合可以体现为用于实现图4-7的方法的模块和组件。

  如果使用可编程逻辑,则该逻辑可以在可商用的处理平台或专用设备上执行。本领域普通技术人员可以理解,可以使用包括多核多处理器系统、小型计算机、大型计算机、具有分布式功能的链接或聚集的计算机以及几乎可以嵌入到几乎任何设备中的普通或微型计算机的各种计算机系统配置来实践所公开的主题的实施例。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。

  如本文讨论的处理器单元或设备可以是单个处理器,多个处理器或其组合。处理器设备可具有一个或多个处理器“核”。如本文所讨论的术语“计算机程序介质”、“非暂时性计算机可读介质”和“计算机可用介质”通常用于指代有形介质,例如,可移动存储单元818、可移动存储单元822以及安装在硬盘驱动器812中的硬盘。

  根据该示例性计算机系统800来描述本公开的各种实施例。在阅读本说明书之后,如何使用其他计算机系统和/或计算机架构来实现本公开对相关领域的技术人员来说将显而易见。尽管可以将操作描述为顺序过程,但是一些操作事实上可以并行地、并发地和/或在分布式环境中执行,并且程序代码可以本地存储或远程存储以供单个或多个处理器的机器访问。另外,在一些实施例中,在不脱离所公开的主题的精神的情况下,可以重新排列操作的顺序。

  处理器设备804可以是特别地被配置为执行本文讨论的功能的专用或通用处理器设备。处理器设备804可以连接到通信基础设施806,例如,总线、消息队列、网络、多核消息传输方案等。网络可以是适合于执行本文公开的功能的任何网络,其可以包括局域网(LAN)、广域网(WAN)、无线网络(例如WiFi)、移动通信网络、卫星网络、因特网、光纤、同轴电缆、红外线、射频(RF)、或其任何组合。其他合适的网络类型和配置对于相关领域的技术人员来说将是显而易见的。计算机系统800还可以包括主存储器808(例如,随机存取存储器、只读存储器等),并且还可以包括辅助存储器810。辅助存储器810可以包括硬盘驱动器812和可移动存储驱动器814,例如软盘驱动器、磁带驱动器、光盘驱动器、闪存等。

  可移动存储驱动器814可以以公知的方式从可移动存储单元1418读取和/或写入到可移动存储单元818。可移动存储单元818可以包括可由可移动存储驱动器814读取和写入的可移动存储介质。例如,如果可移动存储驱动器814是软盘驱动器或通用串行总线端口,则可移动存储单元818可以分别是软盘或便携式闪存驱动器。在一个实施例中,可移动存储单元818可以是非暂时性计算机可读记录介质。

  在一些实施例中,辅助存储器810可以包括允许将计算机程序或其他指令加载到计算机系统800中的可选装置,例如可移动存储单元822和接口820。这样的装置的示例可以包括程序盒和盒式接口(例如,如视频游戏系统中所见到的)、可移动存储器芯片(例如,EEPROM、PROM等)和相关联的插座以及其他可移动存储单元822和接口820,这对本领域技术人员来说是显而易见的。

  存储在计算机系统800中(例如,主存储器808和/或辅助存储器810中)的数据可以存储在任何类型的合适的计算机可读介质上,例如,光学存储器(例如,光盘、数字通用光盘、蓝光光盘等)或磁带存储器(例如,硬盘驱动器)。可以以任何类型的合适的数据库配置(例如,关系数据库、结构化查询语言(SQL)数据库、分布式数据库、对象数据库等)来配置该数据。合适的配置和存储类型对本领域的技术人员来说将是显而易见的。

  计算机系统800还可以包括通信接口824。通信接口824可以被配置为允许软件和数据在计算机系统800和外部设备之间传输。示例性的通信接口824可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口824传送的软件和数据可以是信号的形式,其可以是电子的、电磁的、光学的或其它信号,这对相关领域的技术人员来说是显而易见的。信号可以经由通信路径826行进,该通信路径826可以被配置为承载信号并且可以使用电线、电缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。

  计算机系统800还可以包括显示器接口802。显示器接口802可以被配置为允许数据在计算机系统800和外部显示器830之间传输。示例性的显示器接口802可以包括高清晰度多媒体接口(HDMI)、数字视频接口(DVI)、视频图形阵列(VGA)等。显示器830可以是用于显示经由计算机系统800的显示器接口802发送的数据的任何适当类型的显示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显示器等。

  计算机程序介质和计算机可用介质可以指可以是存储器半导体(例如,DRAM等)的存储器,例如主存储器808和辅助存储器810。这些计算机程序产品可以是用于向计算机系统800提供软件的装置。计算机程序(例如,计算机控制逻辑)可以存储在主存储器808和/或辅助存储器810中。也可以经由通信接口824来接收计算机程序。当执行该计算机程序时,该计算机程序可以使计算机系统800能够实现本文所讨论的本方法。特别地,当执行计算机程序时,该计算机程序可以使得处理器设备804能够实现如本文所讨论的图4-7所示的方法。因此,该计算机程序可以表示计算机系统800的控制器。在使用软件实现本公开的情况下,可以将软件存储在计算机程序产品中,并使用可移动存储驱动器814、接口820、和硬盘驱动器812或通信接口824将软件加载到计算机系统800中。

  处理器设备804可以包括被配置为执行计算机系统800的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件来实现,并且在一些例子中也可以使用软件(例如,对应于存储在主存储器808或辅助存储器810中的程序代码和/或程序的软件)来实现。在该例子中,在由计算机系统800的硬件执行程序代码之前,可以由处理器设备804编译(例如,通过编译模块或引擎)对程序代码进行编译。例如,程序代码可以是以编程语言编写的源代码,编程语言被编译成诸如汇编语言或机器代码之类的较低级别的语言以供处理器设备804和/或计算机系统800的任何附加硬件组件执行。编译的过程可以包括使用词法分析、预处理、解析、语义分析、语法指导翻译、代码生成、代码优化、以及可适用于将程序代码翻译成适合于控制计算机系统800执行本文公开的功能的较低级别语言的任何其他技术。相关领域的技术人员将明白,该过程导致计算机系统800是独特地编程为执行上面讨论的功能的专门配置的计算机系统800。

  除了其他特性之外,与本公开一致的技术提供了使用数字签名对区块链交易进行签名的系统和方法。虽然上面已经描述了所公开的系统和方法的各种示例性实施例,但是应当理解,它们仅仅是为了示例的目的而提供的,而不是限制。这不是详尽的并且不将披露的内容限制在所披露的确切形式上。在不背离广度或范围的情况下,可以根据上述教导作出修改和变化或者可以从本公开的实践获得修改和变化。

《用于使用数字签名的区块链变型的方法和系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)