首页> 中国专利> 用于共享公共秘密的计算机实现的系统和方法

用于共享公共秘密的计算机实现的系统和方法

摘要

公开了一种在多个节点(A,B,C)之间共享第一公共秘密以能够实现例如比特币区块链上的区块链交易的安全通信的方法。该方法包括:为至少一个第一节点(A)确定多个第二公共秘密(SAPC,SAPB),其中,每个第二公共秘密是第一节点和相应的第二节点(B)所共有的,是在第一节点处基于第一节点的第一私钥(SA)和第二节点的第一公钥(PC,PB)确定的,并且是在第二节点处基于第二节点的第一私钥(SB,SC)和第一节点的第一公钥(PA)确定的。第二节点(B)和第三节点(C)所共有的第三公共秘密(SBPC,SCPB)是为第二节点确定的。该方法包括在第一节点处对第一节点已知的第一公共秘密的份额进行加密,以及将加密的份额发送到第二节点。该方法还包括在第一节点处从第二节点接收第一公共秘密的加密的份额,以使多个节点中的每一个能够达到第一公共秘密的阈值数量的份额以访问第一公共秘密。

著录项

  • 公开/公告号CN112771832A

    专利类型发明专利

  • 公开/公告日2021-05-07

    原文格式PDF

  • 申请/专利权人 区块链控股有限公司;

    申请/专利号CN201980062151.0

  • 发明设计人 C·S·赖特;

    申请日2019-09-11

  • 分类号H04L29/06(20060101);H04L9/30(20060101);H04L9/08(20060101);

  • 代理机构72003 隆天知识产权代理有限公司;

  • 代理人石海霞;金鹏

  • 地址 安提瓜和巴布达圣约翰

  • 入库时间 2023-06-19 10:52:42

说明书

技术领域

本公开大体上涉及在多个节点之间共享公共秘密(common secret)的方法,并且更具体地涉及在至少三个节点之间共享公共秘密的方法。本公开特别适合于但不限于在密码术中使用以能够实现节点之间的安全通信,并且可以适合于但不限于与数字钱包、区块链(例如比特币)技术和个人装置安全性一起使用。

背景技术

在本文档中,我们使用术语“区块链”来包括所有形式的电子的基于计算机的分布式账本(ledger)。这些包括基于共识的区块链和交易链技术、许可的和未被许可的账本、共享账本及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本公开不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本公开的范围内。术语“用户”在本文中可以指人类或基于处理器的资源。

区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,区块又由交易组成。每个交易都是一个数据结构,该数据结构对区块链系统中的参与者之间的数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值(hash),使得区块被链接在一起来创建所有交易的永久、不可更改的记录,所有这些交易自其开始就已经被写入到区块链。交易包含嵌入到其输入和输出中的被称为脚本的小程序,这些小程序指定如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。

为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易是有效的,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定脚本和解锁脚本来对未花费的交易输出(unspent transaction,UTXO)执行该验证工作。如果将锁定脚本和解锁脚本的执行评估为真(TRUE),则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易–如果交易经过验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块;以及iii)该交易被挖掘,即,被添加到过去交易的公共账本中。

尽管区块链技术因使用加密货币实现方式而被广泛了解,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以被存储在区块链上的数据这两者来实现新系统。如果区块链将被用于不限于加密货币领域的自动化任务和过程,那将是非常有利的。这样的方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录、分布式处理等),同时在其应用中更通用。

国际专利申请WO 2017/145016公开了一种在两个节点之间共享公共秘密以能够实现节点之间的安全通信的方法。然而,期望提供一种在多于两个的节点之间共享公共秘密的方法。

发明内容

现在已经设计出这种改进的方案。

因此,根据本公开,提供了如所附权利要求书限定的方法。

根据本公开,提供了一种在多个节点之间共享第一公共秘密的方法,其中,每个所述节点与相应非对称密码第一密钥对相关联,该相应非对称密码第一密钥对具有对于所述多个节点而言共有的密码系统的相应第一私钥和相应第一公钥,并且其中,该第一公共秘密基于每个所述节点的第一私钥,该方法包括:

为至少一个第一节点确定多个第二公共秘密,其中,每个所述第二公共秘密是所述第一节点和相应的第二节点所共有的,是在所述第一节点处基于第一节点的第一私钥和第二节点的第一公钥确定的,并且是在第二节点处基于第二节点的第一私钥和第一节点的第一公钥确定的,其中,第一公共秘密的多个份额各自基于至少一个相应的第二公共秘密,以使得对于阈值数量的所述份额,所述第一公共秘密是可访问的,但对于小于所述阈值数量的份额,所述第一公共秘密是不可访问的;

为至少一个第二节点,确定至少一个相应的第三公共秘密,其中,所述或每个相应的第三公共秘密是所述第二节点和相应的第三节点所共有的,是在所述第二节点处基于第二节点的第一私钥和第三节点的第一公钥确定的,并且是在第三节点处基于第三节点的第一私钥和第二节点的第一公钥确定的,并且其中,第一公共秘密的至少一个份额基于至少一个相应的所述第三公共秘密;

基于密码系统的相应非对称密码第二密钥对的第二私钥,在至少一个所述第一节点处对所述第一节点已知的所述第一公共秘密的至少一个份额进行加密,其中,所述第二密钥对基于所述第一节点已知的相应的所述第二公共秘密;

从所述第一节点向与所述第一节点共有第二公共秘密的相应的所述第二节点发送至少一个所述加密的份额,所述第二密钥对基于该第二公共秘密;以及

在至少一个所述第一节点处,从至少一个所述第二节点接收所述第一秘密的至少一个相应的份额,所述第一秘密是所述第二节点已知的并且基于所述密码系统的相应非对称密码第二密钥对的第二私钥被加密,其中,所述第二密钥对基于所述第一节点和所述第二节点共有的第二公共秘密,以使得所述多个节点中的每一个能够达到所述第一公共秘密的所述阈值数量的份额。

这提供的优点在于,提供了在多个节点之间共享公共秘密的有效方法,然后该方法可以用作节点之间的安全通信的基础。

多个所述加密的份额可以各自基于对应的所述节点已知的多个所述公共秘密的组合。

这提供的优点在于,例如,当共享的秘密被包括在区块链交易的脚本中时,提高了效率,同时还使各个公共秘密对于第三方而言是隐藏的,从而提高了私密性。

多个所述加密的份额可以各自基于对应的所述节点已知的多个所述公共秘密的至少一个相应的XOR组合。

这提供了易于处理的优点,从而使得接收方节点能够简单地恢复第一公共秘密。

多个所述加密的份额可以基于对应的所述节点已知的多个所述公共秘密的乘法组合。

乘法组合可以是(x

多个所述份额可以是第一多项式函数的份额,并且第一秘密可以借助于至少阈值数量的所述份额的多项式插值来确定。

该方法还可以包括:

接收所述第一公共秘密的至少阈值数量的份额,其中,每个所述份额对应于第一多项式函数的相应的值;以及

借助于从所述份额的多个已知值确定第一多项式函数的系数来确定所述第一多项式函数,以确定所述第一公共秘密。

确定所述第一多项式函数的步骤可以包括执行误差校正算法。

确定所述第一多项式函数的步骤可以包括执行Berlekamp-Welch解码算法。

确定所述第一多项式函数的步骤可以包括:

限定差错定位多项式函数和第二多项式函数,其中,第二多项式函数是所述第一多项式函数和所述差错定位多项式函数的乘积(product);从所述部分签名(partialsignature)的多个已知值确定所述第二多项式函数和所述差错定位多项式函数的系数;以及从所述第二多项式函数和所述差错检测多项式函数确定所述第一多项式函数,以确定第一公共秘密。

至少一个所述密码系统可以具有同态性质。

这提供了能够实现更灵活且更有效地操作该方法的优点。

至少一个所述密码系统可以是椭圆曲线密码系统。

对于给定的密钥大小,这提供了高安全性的优点。

该方法还可以包括基于至少第一节点主私钥(V

-使用公共密码系统(common cryptography system),基于第二节点的主公钥(P

确定性密钥(DK)可以基于消息(M)。

该方法还可以包括:

-基于消息(M)和第一节点的第一私钥(V

-通过通信网络将第一签名消息(SM1)发送到第二节点(S),

其中,第一签名消息(SM1)可以通过第一节点的第一公钥(P

该方法还可以包括:

-通过通信网络从第二节点(S)接收第二签名消息(SM2);

-利用第二节点的第一公钥(P2S)来验证第二签名消息(SM2);以及

-基于验证第二签名消息(SM2)的结果来认证第二节点(S),

其中,该第二签名消息(SM2)是基于消息(M)或第二消息(M2)以及第二节点的第一私钥(V

该方法还可以包括:

-生成消息(M);以及

-通过通信网络向第二节点(S)发送消息(M)。

该方法还可以包括:

-通过通信网络从第二节点(S)接收消息(M)。

该方法还可以包括:

-通过通信网络从另一个节点接收消息(M)。

该方法可以包括:

-从数据存储(data store)和/或与第一节点(C)相关联的输入接口接收消息(M)。

密码系统可以是椭圆曲线密码(ECC)系统,并且第一节点主公钥(P

该方法还可以包括以下步骤:

-通过通信网络接收第二节点主公钥(P

-在与第一节点(C)相关联的数据存储处存储第二节点主公钥(P

该方法还可以包括以下步骤:

-在第一节点(C)处生成第一节点主私钥(V

-通过通信网络将第一节点主公钥(P

-在与第一节点(C)相关联的第一数据存储中存储第一节点主私钥(V

该方法还可以包括:

-通过通信网络向第二节点发送指示将公共密码系统用于确定至少一个所述公共秘密(CS)的方法的通知,以及

其中,生成第一节点主私钥(V

-基于在公共密码系统中指定的允许范围内的随机整数,生成第一节点主私钥(V

-基于第一节点主私钥(V

公共密码系统可以是利用公共生成器(G,common generator)的椭圆曲线密码系统(ECC),并且第一节点主公钥(P

P

该方法还可以包括:

-基于确定消息(M)的哈希来确定确定性密钥(DK),以及

其中,确定第一节点的第一私钥(V

V

其中,确定第二节点的第一公钥(P

P

确定性密钥(DK)可以基于确定先前的确定性密钥的哈希。

本公开还可以提供一种在多个节点之间进行安全通信的方法,其中,该方法包括:

借助于以上限定的方法来确定第一公共秘密;

-基于公共秘密确定对称密钥;

-利用对称密钥将第一通信消息加密为加密的第一通信消息;以及

-通过通信网络将加密的第一通信消息从所述多个节点中的一个发送到所述多个节点中的其他节点。

该方法还可以包括:

-通过通信网络从所述多个节点中的节点接收加密的第二通信消息;以及

-利用对称密钥将加密的第二通信消息解密为第二通信消息。

本公开还可以提供一种在多个节点之间执行在线交易的方法,其中,该方法包括:

借助于以上限定的方法来确定第一公共秘密;

-基于第一公共秘密确定对称密钥;

-利用对称密钥将第一交易消息加密为加密的第一交易消息;

-通过通信网络将加密的第一交易消息从所述多个节点中的第一节点发送到所述多个节点中的其他节点。

本公开还提供了一种系统,包括:

处理器;以及

包括可执行指令的存储器,该可执行指令由于被处理器执行而促使系统执行本文所述的计算机实现的方法的任何实施例。

本公开还提供了其上存储有可执行指令的非瞬时性计算机可读存储介质,该可执行指令由于被计算机系统的处理器执行而促使计算机系统至少执行本文所述的计算机实现的方法的任何实施例。

附图说明

本公开的这些和其他方面将从本文描述的实施例变得显而易见并参考这些实施例而阐明。现在将仅通过示例的方式并参考附图来描述本公开的实施例,附图中:

图1是确定用于第一节点和第二节点的公共秘密的示例系统的示意图;

图2是用于确定公共秘密的计算机实施方法的流程图;

图3是注册第一节点和第二节点的计算机实施方法的流程图;

图4是用于确定公共秘密的计算机实施方法的另一流程图;

图5是第一节点与第二节点之间的安全通信的计算机实施方法的流程图;

图6是认证第一节点和第二节点的计算机实施方法的流程图;

图7是示出实施本公开的用于在三个节点之间共享公共秘密的方法的图;

图8是图7的方法的流程图。

图9示出了在实施本公开的方法中用于恢复第一公共秘密的Berlekamp-Welch解码器;

图10是实施本公开的用于在四个节点之间共享公共秘密的方法的流程图;以及

图11是示出在其中可以实现各种实施例的计算环境的示意图。

具体实施方式

首先,现将说明在第一节点(C)处确定公共秘密(CS)的方法、装置和系统,该公共秘密(CS)与第二节点(S)处的公共秘密相同。这用于确定成对的节点之间的第二公共秘密,然后其被用于在包括三个或更多个节点的多个节点之间共享第一公共秘密,如下面参考图7和8更详细地描述的。图1说明系统1,其包括通过通信网络5与第二节点7通信的第一节点3。第一节点3具有相关联的第一处理装置23,且第二节点5具有相关联的第二处理装置27。第一节点3和第二节点7可以包括电子装置,例如计算机、平板计算机、移动通信装置、计算机服务器等。在一个示例中,第一节点3可以是客户端装置,且第二节点7可以是服务器。

第一节点3与具有第一节点主私钥(V

为了确定在第一节点3和第二节点7二者处的公共秘密(CS),节点3、7在不通过通信网络5传输私钥的情况下执行相应方法300、400的步骤。

由第一节点3执行的方法300包括至少基于第一节点主私钥(V

重要的是,相同的公共秘密(CS)也可以通过方法400在第二节点7处来确定。方法400包括基于第一节点主公钥(P

通信网络5可以包括局域网、广域网、蜂窝网络、无线通信网络、因特网等。当数据通过例如电线、光纤的通信媒体传输,或以无线方式传输时,这些网络可能易于遭受窃听,例如被窃听器11窃听。方法300、400可以允许第一节点3和第二节点7二者独立地确定公共秘密,而无需通过通信网络5传输该公共秘密。因此,一个优点是每个节点可以在不必通过可能不安全的通信网络5传输私钥的情况下安全地确定公共秘密(CS)。进而,公共秘密可以被用作用于第一节点3与第二节点7之间通过通信网络5的加密通信的秘密密钥(或用作秘密密钥的基础)。

方法300、400可以包括额外步骤。方法300可以包括步骤350,其在第一节点3处基于消息(M)和第一节点第二私钥(V

在第一节点与第二节点之间共享消息(M)可以通过多种方式实现。在一个示例中,消息可以在第一节点3处生成,接着通过通信网络5将消息发送到第二节点7。可选地,消息可以在第二节点7处生成,且接着通过通信网络5发送到第二节点7。在另一示例中,消息可以在第三节点9处生成,且消息被发送到第一节点3和第二节点7二者。在另一可选方案中,用户可以通过用户接口15输入要被第一节点3和第二节点7接收的消息。在另一示例中,消息(M)可以从数据存储19中检索(retrieved)且发送到第一节点3和第二节点7。在一些示例中,消息(M)可以是公共的,且因此可以通过不安全网络5传输。

在其它示例中,一个或多个消息(M)可以存储在数据存储13、17、19中,其中消息可以与第一节点3与第二节点7之间的会话、交易等相关联。因此,消息(M)可以被检索,并用于在相应的第一节点3和第二节点7处重新创建与该会话或交易相关联的公共秘密(CS)。有利的是,允许重新创建公共秘密(CS)的记录可被保存,而不必将该记录单独地私密存储或安全传输。在第一节点3和第二节点7处执行数个交易的情况下,这种情形可以是有利的,且将所有消息(M)存储在节点自身处是不切实际的做法。

将参考图3说明注册方法100、200的示例,其中方法100由第一节点3执行且方法200由第二节点7执行。这包括建立用于相应的第一节点3和第二节点7的第一非对称密码对和第二非对称密码对。

非对称密码对包括相关联的私钥和公钥,例如在公钥加密中使用的那些私钥和公钥。在此示例中,使用椭圆曲线密码学(ECC)和椭圆曲线运算的性质来生成非对称密码对。

ECC的标准可以包括例如由高效密码学小组的标准(Standards forEfficientCryptography Group,

在方法100、200中,这包括第一节点和第二节点安置(settling)110、210到公共ECC系统并使用公共生成器(G)。在一个示例中,公共ECC系统可基于secp256K1,其是由比特币使用的ECC系统。公共生成器(G)可以被选择、随机被生成、或被指定。

现在转向第一节点3,方法100包括安置110在公共ECC系统和公共生成器(G)上。这可以包括从第二节点7或第三节点9接收公共ECC系统和公共生成器。可选地,用户接口15可以与第一节点3相关联,借此用户可以选择性地提供公共ECC系统和/或公共生成器(G)。在另一可选方案中,可以由第一节点3随机选择公共ECC系统和/或公共生成器(G)中的一个或两个。第一节点3可以通过通信网络5将指示使用公共ECC系统与公共生成器(G)的通知发送到第二节点7。进而,第二节点7可以通过发送指示确认使用公共ECC系统和公共生成器(G)的通知而进行安置210。

方法100还包括第一节点3生成120第一非对称密码对,该第一非对称密码对包括第一节点主私钥(V

P

因此,第一非对称密码对包括:

V

P

第一节点3可以将第一节点主私钥(V

方法100还包括通过通信网络5将第一节点主公钥(P

类似于第一节点3,第二节点7的方法200包括生成240第二非对称密码对,该第二非对称密码对包括第二节点主私钥(V

P

因此,第二非对称密码对包括:

V

P

第二节点7可以将第二非对称密码对存储在第二数据存储17中。方法200还包括将第二节点主公钥(P

应理解的是,在一些可选方案中,相应的主公钥可以被接收并被存储在与第三节点9(例如可信的第三方)相关联的第三数据存储19处。这可以包括作为公共目录的第三方,例如证明授权单位。因此,在一些示例中,仅在确定需要公共秘密(CS)时,才可以由第二节点7请求并接收第一节点主公钥(P

注册步骤可以作为初始设置而仅发生一次。之后,主密钥可以以安全方式被再次使用,以生成(尤其)依赖于确定性密钥(DK)的(一个或多个)公共秘密。

现将参考图4说明确定公共秘密(CS)的示例。公共秘密(CS)可以被用于第一节点3与第二节点7之间的特定会话、时间、交易或其它用途,且使用相同的公共秘密(CS)可能不合乎需要或不安全。因此,公共秘密(CS)可以在不同会话、时间、交易等之间变换。

在此示例中,由第一节点3执行的方法300包括生成310消息(M)。消息(M)可以是随机、伪随机或用户定义的。在一个示例中,消息(M)基于Unix时间(Unix Time)和随机数(nonce)(以及任意值)。例如,消息(M)可以被提供为:

消息(M)=Unix Time+nonce (等式3)

在一些示例中,消息(M)为任意值。然而,应理解的是,消息(M)可以具有选择值(例如Unix时间等),其在一些应用中可能是有用的。

方法300包括将消息(M)通过通信网络3发送315到第二节点7。消息(M)可以通过不安全网络发送,这是因为消息(M)并不包括关于私钥的信息。

方法300还包括基于消息(M)来确定320确定性密钥(DK)的步骤。在此示例中,这包括确定消息的密码哈希。密码哈希算法的示例包括产生256位确定性密钥(DK)的SHA-256。也就是说:

DK=SHA-256(M) (等式4)

应理解的是,可以使用其它哈希算法。这可以包括安全哈希算法(SecureHashAlgorithm,简称SHA)家族中的其它哈希算法。一些特定示例包括SHA-3子集中的例子,包括SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256。其它哈希算法可以包括RACE原始完整性校验消息摘要(RACE Integrity Primitives Evaluation MessageDigest,简称RIPEMD)家族中的那些算法。特定示例可以包括RIPEMD-160。其它哈希函数可以包括基于Zémor-Tillich哈希函数和渐缩式哈希函数(knapsack-based hashfunctions)的家族。

方法300然后包括基于第二节点主私钥(V1C)和确定性密钥(DK)来确定330第一节点第二私钥(V

V

因此,第一节点第二私钥(V

P

将来自等式5的V

P

其中‘+’运算符是指标量相加,且‘x’运算符指椭圆曲线点乘。应注意的是,椭圆曲线密码学代数是分配性的(distributive),等式7也可表示为:

P

最后,可以将等式1代入等式7,从而得到:

P

P

在等式8到9.2中,‘+’运算符指椭圆曲线点加。因此,在已知第一节点主公钥(P

方法300还包括基于消息(M)和所确定的第一节点二私钥(V

ECDSA的示例包括基于ECC系统与secp256k1、secp256r1、secp384r1、se3cp521r1的那些ECDSA。

可以利用第二节点7处的对应的第一节点第二公钥(P

然后第一节点3可以确定370第二节点第二公钥(P

P

P

针对等式10.2的数学证明与上文针对第一节点第二公钥(P

第一节点3然后可以基于所确定的第一节点第二私钥(V

S=V

现在说明在第二节点7处执行的对应方法400。应理解的是,这些步骤中的某些步骤与上文所述的由第一节点3执行的那些步骤类似。

方法400包括通过通信网络5从第一节点3接收410消息(M)。这可以包括在步骤315处由第一节点3发送的消息(M)。第二节点7然后基于消息(M)来确定420确定性密钥(DK)。第二节点7确定420确定性密钥(DK)的步骤与上文所述的第一节点执行的步骤320类似。在此示例中,第二节点7独立于第一节点3来执行此确定步骤420。

下一步骤包括基于第一节点主公钥(P

P

P

对等式12.1和12.2的数学证明与上文对等式10.1和10.2所论述的那些数学证明相同。

方法400可以包括由第二节点7执行以认证声称的第一节点3是第一节点3的步骤。如前所讨论的,这包括从第一节点3接收440第一签名消息(SM1)。然后第二节点7可以用在步骤430确定的第一节点第二公钥(P

可以根据上文所述的椭圆曲线数字签名算法(ECDSA)进行对数字签名的验证。重要的是,用第一节点第二私钥(V

上述认证可以适于两个节点中的一个是可信任节点且仅节点中的一个需要被认证的场景。例如,第一节点3可以是客户端,且第二节点7可以是客户端所信任的服务器。因此,服务器(第二节点7)可能需要认证客户端(第一节点3)的证书,以便允许客户端访问服务器系统。服务器可能并不需要认证服务器到客户端的证书。然而,在一些场景中,可能需要两节点进行彼此认证,例如下文在另一示例中将说明的点到点场景。

方法400还包括第二节点7基于第二节点主私钥(V

V

V

第二节点7然后可以独立于第一节点3,基于第二节点第二私钥(V

S=V

由第一节点3确定的公共秘密(CS)与在第二节点7处确定的公共秘密(CS)相同。现说明等式11和等式14提供相同的公共秘密(CS)的数学证明。

转向由第一节点3确定的公共秘密(CS),可以将等式10.1如下代入等式11中:

S=V

S=V

S=(V

转向由第二节点7确定的公共秘密(CS),可以将等式12.1如下代入等式14中:

S=V

S=V

S=(V

由于ECC代数是可交换的,因此等式15与等式16是相等的,这是因为:

S=(V

公共秘密(CS)可以被用作用于第一节点3与第二节点7之间的安全通信的对称密钥算法中的秘密密钥,或用作秘密密钥的基础。

公共秘密(CS)可以呈椭圆曲线点(x

公共秘密(CS)可以根据需要来确定。重要的是,第一节点3并不需要存储公共秘密(CS),这是因为可以基于消息(M)来重新确定公共秘密(CS)。在一些示例中,所使用的(一个或多个)消息(M)可以在不具有与主私钥所需的安全性等级相同的安全性等级的情况下,存储在数据存储13、17、19(或其它数据存储)中。在一些示例中,消息(M)可以是公开可得的。

然而,取决于一些应用,如果公共秘密(CS)需要被保存得与第一节点主私钥(V

此外,所公开的系统可以允许基于单个主密钥密码对来确定可以对应于多个安全秘密密钥的多个公共秘密。其优点可以通过以下示例加以说明。

在存在多个会话并且每一会话与多个相应的公共秘密(CS)相关联的情况下,可能需要具有与那些多个会话相关联的记录,从而使得将来可以重新确定相应的公共秘密(CS)。在已知系统中,这可能需要将多个秘密密钥存储在安全的数据存储中,这可能较昂贵或不便于维持。相反,本系统将主私钥安全地保存在相应的第一节点和第二节点,但可以安全或不安全地存储其它确定性密钥或消息(M)。尽管确定性密钥(DK)或消息(M)被不安全地存储,但多个公共秘密(CS)仍可以得到安全地保存,这是因为确定公共秘密所需的主私钥仍是安全的。

该方法也可以用于生成用于临时通信链路的“会话密钥”,该临时通信链路例如用于安全地传输登录口令。

在点对点场景中,第一节点3和第二节点7可能需要认证彼此的证书。现参考图6说明此示例。在此示例中,基于已验证的第一签名消息(SM1)来认证第一节点3的方法300、400步骤与上述的那些步骤类似。

然而,由第二节点7执行的方法400还包括基于消息(M)和第二节点私钥(V

在第一节点3处,方法300包括从第二节点7接收第二签名消息(SM2)。该方法包括利用在步骤370中确定的第二节点第二公钥(P

在一个示例中,可以确定一系列连续的确定性密钥,其中可以基于前一个确定性密钥来确定每一后续密钥。

例如,不是重复步骤310到370和410到470以生成连续单用途密钥,而是根据节点之间的先前协定,可以由两方反复地重新哈希(rehash)先前使用的确定性密钥(DK)来建立确定性密钥的层级。实际上,基于消息(M)的哈希的确定性密钥可以是用于下一代确定性密钥(DK')的下一代消息(M')。这样做允许计算出连续几代共享秘密,而不需要进行其它协议建立传输,特别是传输针对每一代公共秘密的多个消息。可以采用如下运算来计算下一代公共秘密(CS')。

首先,第一节点3和第二节点7独立地确定下一代确定性密钥(DK')。这类似于步骤320和420,但采用以下列公式进行调整:

M’=SHA-256(M) (等式18)

DK’=SHA-256(M’) (等式19.1)

DK’=SHA-256(SHA-256(M)) (等式19.2)

第一节点3然后可以与上述的步骤370和330类似地确定下一代第二节点第二公钥(P

P

V

第二节点7接着可以与上述的步骤430和470类似地确定下一代第一节点第二公钥(P

P

V

第一节点3和第二节点7接着可以各自确定下一代公共秘密(CS')。

具体来说,第一节点3用以下公式确定下一代公共秘密(CS'):

CS’=V

第二节点7用以下公式确定下一代公共秘密(CS'):

CS’=V

可以用相同方式计算出下几代(CS”、CS”’等)以产生链式层级。此技术需要第一节点3和第二节点7二者跟踪原始消息(M)或最初计算出的确定性密钥(DK)和与其相关的节点。由于这是公开已知的信息,因此不存在关于保存此信息的安全性问题。因此,此信息可以保存在‘哈希表’(将哈希值链接到公钥)中并自由地分布在网络5上(例如使用Torrent)。此外,在层级中的任何个别公共秘密(CS)曾经受损的情况下,只要私钥V

除如上述的链式(线性)层级外,可以产生呈树状结构形式的层级。

采用树状结构,可以确定用于不同用途的多种密钥,例如认证密钥、加密密钥、签名密钥、支付密钥等,借此这些密钥全部链接到单个安全地维持的主密钥。

图7示出了实施本公开的用于在三个节点A、B和C之间共享第一公共秘密的方法,并且该方法的流程图在图8中示出。每个节点A、B、C与其自己的私钥/公钥对(S,P)相关联,例如,节点A的私钥公钥对为(S

每对节点A,B、A,C和B,C之间的安全通信通过以下方式建立:在图8的步骤80中,使用以上参考图1至图6描述的方法确定每对节点之间的第二公共秘密。在图7所示的布置中,以下关系适用:

S

类似地,S

并且,S

要在节点A、B、C之间共享的第一公共秘密是x

一旦已经在每对节点之间建立了安全的通信信道,每个节点就使用基于图8的步骤82中的那些第二秘密的私钥-公钥对,以该节点已知的第二秘密的组合的形式对第一秘密的份额进行加密。这是通过每个节点对该节点已知的成对的第二公共秘密x的XOR组合进行编码来完成的。因此,对于节点A,节点A已知公共秘密x

同样,节点B已知公共秘密x

在图8的步骤86中,节点A、B、C中的每一个从其他节点接收加密的份额,并解密加密的份额。因此,每个节点都可以如下获得重建第一共享的秘密x

节点A从节点B接收份额x

类似于以上针对第二公共秘密所描述的方式,第一公共秘密(CS)可以是椭圆曲线点(x

尽管XOR加密提供了当第二公共秘密在区块链交易的脚本中广播时隐藏第二公共秘密的优势,但可以借助于XOR加密以外的其他方式分配第一公共秘密的份额,因此第三方在不知道阈值数量的其他第二公共秘密的情况下无法确定第二公共秘密。例如,可以使用形式为(x

另外,第一公共秘密的份额可以使用本领域技术人员所熟悉的Shamir秘密共享方案或无经销商秘密共享方案而分配为多项式函数的份额。在第一公共秘密的份额是多项式函数的份额的情况下,第一公共秘密的有效恢复可以借助于如图9所示的Berlekamp-Welch解码器进行。参考图9,Berlekamp-Welch解码器70进行多项式函数的份额的多项式插值以获得多项式函数。

在常规使用Berlekamp-Welch算法来校正传输的数据中的差错时,消息m在编码器72处被划分成一系列的k个字节,并且每个字节c

然后,针对x的多个已知值确定多项式函数m(x)的值,以生成一系列(x,y)对,然后由发送器74将(x,y)对传输到接收器76。

在接收器76处接收到的数据M(即,接收到的消息)包括与表示原始消息的多项式函数上的点相对应的对(a

如果假定某些传输的(x,y)对在传输过程中已损坏,则可以如下限定差错定位多项式函数:

当P(a

如果乘积多项式函数Q(a

Q(a

则对于每个接收到的(a

对于(a

线性系统包含2e+k–1个未知项(来自E(x)的e个,以及来自Q(x)的e+k–1个),因此结果是,如果n≥2e+k–1,则Q(a

因此,可以看出,Berlekamp-Welch解码器70接收表示多项式函数上的点的对作为输入,并输出多项式函数。因此,在本公开中,解码器70可以用作拉格朗日插值的替代,以从由该多项式函数表示的阈值数量的份额来确定多项式函数。

图10示出了实施本公开的用于在四个节点A、B、C和D之间共享第一公共秘密的方法。每个节点A、B、C、D与其自己的私钥/公钥对(S,P)相关联,例如,节点A的私钥公钥对为(S

每对节点A,B、A,C、A,D、B,C、B,D、和C,D之间的安全通信可以通过使用以上参考图1至图6描述的方法确定每对节点之间的第二公共秘密来建立。在图10所示的布置中,以下关系适用:

S

S

S

S

S

以及S

在节点A、B、C和D之间共享的第一公共秘密是x

一旦已经在每对节点之间建立了安全的通信信道,每个节点就以类似于参考图7和8描述的方法的方式使用基于那些第二秘密的私钥-公钥对,以该节点已知的第二秘密的组合的形式对第一秘密的份额进行加密。这是通过每个节点对该节点已知的成对的第二公共秘密x的XOR组合进行编码来完成的。因此,对于节点A,节点A已知公共秘密x

以类似的方式,节点B计算以下组合:

[x

并且如下进行加密并将其发送到节点A:

E

并且如下进行加密并将其发送到节点C:

E

并且如下进行加密并将其发送到节点D:

E

节点C计算以下组合:

[x

并且如下进行加密以并将其发送到节点A:

E

并且如下进行加密并将其发送到节点B:

E

并且如下进行加密并将其发送到节点D:

E

并且,节点D计算以下组合:

[x

并且如下进行加密并将其发送到节点A:

E

并且如下进行加密并将其发送到节点B:

E

并且如下进行加密并将其发送到节点C:

E

节点A、B、C、D中的每一个从其他节点接收加密的份额,并使用对应于适当的第二公共秘密x

节点A从节点B接收份额x

通过操作类似的过程,其他节点B、C和D中的每一个都可以获得所有第二公共秘密,以确定现在在所有节点之间共享的第一公共秘密。

现在转向图11,提供了可用于实践本公开的至少一个实施例的计算装置2600的说明性简化框图。在各种实施例中,计算装置2600可以用于实现以上示出和描述的任何系统。例如,计算装置2600可以被配置为用作数据服务器、网络服务器、便携式计算装置、个人计算机或任何电子计算装置。如图11所示,计算装置2600可以包括具有一个或多个级别的高速缓冲存储器和存储器控制器的一个或多个处理器(统称为2602),该处理器可以被配置为与包括主存储器2608和永久存储装置2610的存储子系统2606通信。如图所示,主存储器2608可以包括动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓存存储器2602可以被用于存储信息,例如与本公开中所描述的与交易和区块相关联的细节。(一个或多个)处理器2602可以被利用来提供本公开中所描述的任何实施例的步骤或功能。

(一个或多个)处理器2602还可以与一个或多个用户接口输入装置2612、一个或多个用户接口输出装置2614以及网络接口子系统2616通信。

总线子系统2604可以提供用于使得计算装置2600的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统2604被示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。

网络接口子系统2616可以提供至其他计算装置和网络的接口。网络接口子系统2616可以用作从不同于计算装置2600的其他系统接收数据以及将数据传输到其他系统的接口。例如,网络接口子系统2616可以使数据技术人员能够将装置连接至网络,使得数据技术员能够在位于远程位置(例如,数据中心)的同时,将数据传输到该装置并从该装置接收数据。

用户接口输入装置2612可以包括一个或多个用户输入装置,例如,键盘;诸如集成鼠标、轨迹球、触摸板或图形输入板等定点装置;扫描仪;条形码扫描仪;合并到显示器中的触摸屏;诸如语音识别系统、麦克风等音频输入装置;以及其他类型的输入装置。通常,术语“输入装置”的使用旨在包括用于将信息输入到计算装置2600的所有可能类型的装置和机构。

一个或多个用户接口输出装置2614可以包括显示子系统、打印机或诸如音频输出装置等非可视显示器。显示子系统可以是阴极射线管(CRT)、诸如液晶显示器(LCD)、发光二极管(LED)显示器或投影仪的平板装置或其他显示装置。通常,术语“输出装置”的使用旨在包括用于从计算装置2600输出信息的所有可能类型的装置和机构。一个或多个用户接口输出装置2614可以用于例如呈现用户界面以有助于用户与执行所描述的过程及其中的变型的应用的交互,当这样的交互是适当的时。

存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可以提供本公开的至少一个实施例的功能的基本编程和数据构造。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或多个实施例的功能,并且可以被存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。另外,存储子系统2606可以提供用于存储根据本公开而使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久存储装置2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括闪存、一个或多个固态驱动器、一个或多个磁性硬盘驱动器、一个或多个具有相关的可移动介质的软盘驱动器、一个或多个具有相关的可移动介质的光驱(例如,CD-ROM或DVD或Blue-Ray)驱动器,以及其他类似的存储介质。这样的程序和数据可以包括用于执行如本公开中所描述的一个或多个实施例的步骤的程序以及与本公开中所描述的交易和区块相关联的数据。

计算装置2600可以是各种类型,包括便携式计算机装置、平板计算机、工作站或以下描述的任何其他装置。另外,计算装置2600可以包括可以通过一个或多个端口(例如,USB、耳机插孔、闪电连接器等)连接到计算装置2600的另一装置。可以连接到计算装置2600的装置可以包括被配置为接受光纤连接器的多个端口。因此,该装置可以被配置为将光信号转换为电信号,该电信号可以通过将装置连接至计算装置2600的端口传输以进行处理。由于计算机和网络不断变化的性质,图11中所描绘的计算装置2600的描述仅旨在作为特定示例用于说明该装置的优选实施例的目的。具有比图11中描绘的系统更多或更少的组件的许多其他配置是可能的。

应当注意,上述实施例说明而不是限制本公开,并且本领域技术人员将能够设计许多替代实施例,而不脱离由所附权利要求限定的本公开的范围。在权利要求中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括(comprising,comprise)”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括(comprise)”是指“包括(include)或由……组成(consist of)”,“包括(comprising)”是指“包括(including)或由……组成(consisting of)”。元素的单数形式并不排除此类元素的复数形式,并且反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的装置权利要求中,这些装置中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号