CN112771832A - 用于共享公共秘密的计算机实现的系统和方法 - Google Patents
用于共享公共秘密的计算机实现的系统和方法 Download PDFInfo
- Publication number
- CN112771832A CN112771832A CN201980062151.0A CN201980062151A CN112771832A CN 112771832 A CN112771832 A CN 112771832A CN 201980062151 A CN201980062151 A CN 201980062151A CN 112771832 A CN112771832 A CN 112771832A
- Authority
- CN
- China
- Prior art keywords
- node
- key
- nodes
- message
- common
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 140
- 238000004891 communication Methods 0.000 claims abstract description 68
- 230000006870 function Effects 0.000 claims description 56
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000012937 correction Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- IDATZUYVZKJKRE-SXMXEBDWSA-N (2s)-2-[[(2s)-2-amino-4-methylsulfanylbutanoyl]amino]-n-[(2s)-1-[[(2s)-1-[[(2s)-1-[[(2s)-1-[(2s)-2-[[(2s)-1-[[(2s)-1-amino-4-methylsulfanyl-1-oxobutan-2-yl]amino]-5-(diaminomethylideneamino)-1-oxopentan-2-yl]carbamoyl]pyrrolidin-1-yl]-1-oxo-3-phenylpropan Chemical compound C([C@H](NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](N)CCSC)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](C)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N1[C@@H](CCC1)C(=O)N[C@@H](CCCN=C(N)N)C(=O)N[C@@H](CCSC)C(N)=O)C1=CC=C(O)C=C1 IDATZUYVZKJKRE-SXMXEBDWSA-N 0.000 abstract description 3
- BBIKPGRUAMIMIA-UHFFFAOYSA-N sapb Chemical compound C1SCC(C(=O)NC(CC(N)=O)C(O)=O)NC(=O)C(C(C)O)NC(=O)C(C(C)O)NC(=O)C(C(C)CC)NC(=O)C(=C)NC(=O)C(CC(C)C)NC(=O)C(CO)NC(=O)C1NC(=O)C(CC(O)=O)NC(=O)CNC(=O)C1NC(=O)C(CC(C)C)NC(=O)C(CC(C)C)NC(=O)C(CC(C)C)NC(=O)C(=C)NC(=O)C(C)NC(=O)C(CCCNC(N)=N)NC(=O)C(NC(=O)CNC(=O)C(N)C(C)O)CSC1 BBIKPGRUAMIMIA-UHFFFAOYSA-N 0.000 abstract description 3
- 230000008901 benefit Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000013515 script Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- PSVRFUPOQYJOOZ-QNPWAGBNSA-O 2-[hydroxy-[(2r)-2-[(5z,8z,11z,14z)-icosa-5,8,11,14-tetraenoyl]oxy-3-octadecanoyloxypropoxy]phosphoryl]oxyethyl-trimethylazanium Chemical compound CCCCCCCCCCCCCCCCCC(=O)OC[C@H](COP(O)(=O)OCC[N+](C)(C)C)OC(=O)CCC\C=C/C\C=C/C\C=C/C\C=C/CCCCC PSVRFUPOQYJOOZ-QNPWAGBNSA-O 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- JETQIUPBHQNHNZ-OAYJICASSA-N sulbenicillin Chemical compound N([C@H]1[C@H]2SC([C@@H](N2C1=O)C(O)=O)(C)C)C(=O)C(S(O)(=O)=O)C1=CC=CC=C1 JETQIUPBHQNHNZ-OAYJICASSA-N 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/065—Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Hardware Redundancy (AREA)
Abstract
公开了一种在多个节点(A,B,C)之间共享第一公共秘密以能够实现例如比特币区块链上的区块链交易的安全通信的方法。该方法包括:为至少一个第一节点(A)确定多个第二公共秘密(SAPC,SAPB),其中,每个第二公共秘密是第一节点和相应的第二节点(B)所共有的,是在第一节点处基于第一节点的第一私钥(SA)和第二节点的第一公钥(PC,PB)确定的,并且是在第二节点处基于第二节点的第一私钥(SB,SC)和第一节点的第一公钥(PA)确定的。第二节点(B)和第三节点(C)所共有的第三公共秘密(SBPC,SCPB)是为第二节点确定的。该方法包括在第一节点处对第一节点已知的第一公共秘密的份额进行加密,以及将加密的份额发送到第二节点。该方法还包括在第一节点处从第二节点接收第一公共秘密的加密的份额,以使多个节点中的每一个能够达到第一公共秘密的阈值数量的份额以访问第一公共秘密。
Description
技术领域
本公开大体上涉及在多个节点之间共享公共秘密(common secret)的方法,并且更具体地涉及在至少三个节点之间共享公共秘密的方法。本公开特别适合于但不限于在密码术中使用以能够实现节点之间的安全通信,并且可以适合于但不限于与数字钱包、区块链(例如比特币)技术和个人装置安全性一起使用。
背景技术
在本文档中,我们使用术语“区块链”来包括所有形式的电子的基于计算机的分布式账本(ledger)。这些包括基于共识的区块链和交易链技术、许可的和未被许可的账本、共享账本及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本公开不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本公开的范围内。术语“用户”在本文中可以指人类或基于处理器的资源。
区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,区块又由交易组成。每个交易都是一个数据结构,该数据结构对区块链系统中的参与者之间的数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值(hash),使得区块被链接在一起来创建所有交易的永久、不可更改的记录,所有这些交易自其开始就已经被写入到区块链。交易包含嵌入到其输入和输出中的被称为脚本的小程序,这些小程序指定如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易是有效的,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定脚本和解锁脚本来对未花费的交易输出(unspent transaction,UTXO)执行该验证工作。如果将锁定脚本和解锁脚本的执行评估为真(TRUE),则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易–如果交易经过验证,则该节点将其中继到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块;以及iii)该交易被挖掘,即,被添加到过去交易的公共账本中。
尽管区块链技术因使用加密货币实现方式而被广泛了解,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以被存储在区块链上的数据这两者来实现新系统。如果区块链将被用于不限于加密货币领域的自动化任务和过程,那将是非常有利的。这样的方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录、分布式处理等),同时在其应用中更通用。
国际专利申请WO 2017/145016公开了一种在两个节点之间共享公共秘密以能够实现节点之间的安全通信的方法。然而,期望提供一种在多于两个的节点之间共享公共秘密的方法。
发明内容
现在已经设计出这种改进的方案。
因此,根据本公开,提供了如所附权利要求书限定的方法。
根据本公开,提供了一种在多个节点之间共享第一公共秘密的方法,其中,每个所述节点与相应非对称密码第一密钥对相关联,该相应非对称密码第一密钥对具有对于所述多个节点而言共有的密码系统的相应第一私钥和相应第一公钥,并且其中,该第一公共秘密基于每个所述节点的第一私钥,该方法包括:
为至少一个第一节点确定多个第二公共秘密,其中,每个所述第二公共秘密是所述第一节点和相应的第二节点所共有的,是在所述第一节点处基于第一节点的第一私钥和第二节点的第一公钥确定的,并且是在第二节点处基于第二节点的第一私钥和第一节点的第一公钥确定的,其中,第一公共秘密的多个份额各自基于至少一个相应的第二公共秘密,以使得对于阈值数量的所述份额,所述第一公共秘密是可访问的,但对于小于所述阈值数量的份额,所述第一公共秘密是不可访问的;
为至少一个第二节点,确定至少一个相应的第三公共秘密,其中,所述或每个相应的第三公共秘密是所述第二节点和相应的第三节点所共有的,是在所述第二节点处基于第二节点的第一私钥和第三节点的第一公钥确定的,并且是在第三节点处基于第三节点的第一私钥和第二节点的第一公钥确定的,并且其中,第一公共秘密的至少一个份额基于至少一个相应的所述第三公共秘密;
基于密码系统的相应非对称密码第二密钥对的第二私钥,在至少一个所述第一节点处对所述第一节点已知的所述第一公共秘密的至少一个份额进行加密,其中,所述第二密钥对基于所述第一节点已知的相应的所述第二公共秘密;
从所述第一节点向与所述第一节点共有第二公共秘密的相应的所述第二节点发送至少一个所述加密的份额,所述第二密钥对基于该第二公共秘密;以及
在至少一个所述第一节点处,从至少一个所述第二节点接收所述第一秘密的至少一个相应的份额,所述第一秘密是所述第二节点已知的并且基于所述密码系统的相应非对称密码第二密钥对的第二私钥被加密,其中,所述第二密钥对基于所述第一节点和所述第二节点共有的第二公共秘密,以使得所述多个节点中的每一个能够达到所述第一公共秘密的所述阈值数量的份额。
这提供的优点在于,提供了在多个节点之间共享公共秘密的有效方法,然后该方法可以用作节点之间的安全通信的基础。
多个所述加密的份额可以各自基于对应的所述节点已知的多个所述公共秘密的组合。
这提供的优点在于,例如,当共享的秘密被包括在区块链交易的脚本中时,提高了效率,同时还使各个公共秘密对于第三方而言是隐藏的,从而提高了私密性。
多个所述加密的份额可以各自基于对应的所述节点已知的多个所述公共秘密的至少一个相应的XOR组合。
这提供了易于处理的优点,从而使得接收方节点能够简单地恢复第一公共秘密。
多个所述加密的份额可以基于对应的所述节点已知的多个所述公共秘密的乘法组合。
乘法组合可以是(x1.x2.x3)mod n的形式,其中,x1,x2,x3是节点已知的公共秘密,且n是密码系统的阶数(order)。
多个所述份额可以是第一多项式函数的份额,并且第一秘密可以借助于至少阈值数量的所述份额的多项式插值来确定。
该方法还可以包括:
接收所述第一公共秘密的至少阈值数量的份额,其中,每个所述份额对应于第一多项式函数的相应的值;以及
借助于从所述份额的多个已知值确定第一多项式函数的系数来确定所述第一多项式函数,以确定所述第一公共秘密。
确定所述第一多项式函数的步骤可以包括执行误差校正算法。
确定所述第一多项式函数的步骤可以包括执行Berlekamp-Welch解码算法。
确定所述第一多项式函数的步骤可以包括:
限定差错定位多项式函数和第二多项式函数,其中,第二多项式函数是所述第一多项式函数和所述差错定位多项式函数的乘积(product);从所述部分签名(partialsignature)的多个已知值确定所述第二多项式函数和所述差错定位多项式函数的系数;以及从所述第二多项式函数和所述差错检测多项式函数确定所述第一多项式函数,以确定第一公共秘密。
至少一个所述密码系统可以具有同态性质。
这提供了能够实现更灵活且更有效地操作该方法的优点。
至少一个所述密码系统可以是椭圆曲线密码系统。
对于给定的密钥大小,这提供了高安全性的优点。
该方法还可以包括基于至少第一节点主私钥(V1C)以及第一节点和第二节点共有的确定性密钥(DK)来确定至少一个所述第一节点的所述第一私钥;
-使用公共密码系统(common cryptography system),基于第二节点的主公钥(P1S)和确定性密钥(DK)的加密来确定至少一个所述第二节点的所述第一公钥(P2S)。
确定性密钥(DK)可以基于消息(M)。
该方法还可以包括:
-基于消息(M)和第一节点的第一私钥(V2C)来生成第一签名消息(SM1);以及
-通过通信网络将第一签名消息(SM1)发送到第二节点(S),
其中,第一签名消息(SM1)可以通过第一节点的第一公钥(P2C)来验证,以认证第一节点(C)。
该方法还可以包括:
-通过通信网络从第二节点(S)接收第二签名消息(SM2);
-利用第二节点的第一公钥(P2S)来验证第二签名消息(SM2);以及
-基于验证第二签名消息(SM2)的结果来认证第二节点(S),
其中,该第二签名消息(SM2)是基于消息(M)或第二消息(M2)以及第二节点的第一私钥(V2S)而生成的。
该方法还可以包括:
-生成消息(M);以及
-通过通信网络向第二节点(S)发送消息(M)。
该方法还可以包括:
-通过通信网络从第二节点(S)接收消息(M)。
该方法还可以包括:
-通过通信网络从另一个节点接收消息(M)。
该方法可以包括:
-从数据存储(data store)和/或与第一节点(C)相关联的输入接口接收消息(M)。
密码系统可以是椭圆曲线密码(ECC)系统,并且第一节点主公钥(P1C)和第二节点主公钥(P1S)可以基于相应的第一节点主私钥(V1C)和第二节点主私钥(V1S)与生成器(G)的椭圆曲线点乘。
该方法还可以包括以下步骤:
-通过通信网络接收第二节点主公钥(P1S);以及
-在与第一节点(C)相关联的数据存储处存储第二节点主公钥(P1S)。
该方法还可以包括以下步骤:
-在第一节点(C)处生成第一节点主私钥(V1C)和第一节点主公钥(P1C);
-通过通信网络将第一节点主公钥(P1C)发送到第二节点(S)和/或其他节点;以及
-在与第一节点(C)相关联的第一数据存储中存储第一节点主私钥(V1C)。
该方法还可以包括:
-通过通信网络向第二节点发送指示将公共密码系统用于确定至少一个所述公共秘密(CS)的方法的通知,以及
其中,生成第一节点主私钥(V1C)和第一节点主公钥(P1C)的步骤包括:
-基于在公共密码系统中指定的允许范围内的随机整数,生成第一节点主私钥(V1C);以及
-基于第一节点主私钥(V1C)的加密来确定第一节点主公钥(P1C)。
公共密码系统可以是利用公共生成器(G,common generator)的椭圆曲线密码系统(ECC),并且第一节点主公钥(P1C)可以根据以下公式基于第一节点主私钥(V1C)和公共生成器(G)的椭圆曲线点乘来确定:
P1C=V1C x G。
该方法还可以包括:
-基于确定消息(M)的哈希来确定确定性密钥(DK),以及
其中,确定第一节点的第一私钥(V2C)的步骤根据以下公式基于第一节点主私钥(V1C)和确定性密钥(DK)的标量相加:
V2C=V1C+DK,以及
其中,确定第二节点的第一公钥(P2S)的步骤根据以下公式基于将第二节点主公钥(P1S)和确定性密钥(DK)与公共生成器(G)的椭圆曲线点乘的椭圆曲线点加:
P2S=P1S+DK x G
确定性密钥(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与具有第一节点主私钥(V1C)和第一节点主公钥(P1C)的第一非对称密码对相关联。第二节点(7)与具有第二节点主私钥(V1S)和第二节点主公钥(P1S)的第二非对称密码对相关联。用于相应的第一节点3和第二节点7的第一非对称密码对和第二非对称密码对可以在注册期间生成。下文将参考图3进一步详细说明由第一节点3和第二节点7执行的注册方法100、200。每一节点的公钥可以例如通过通信网络5公开地共享。
为了确定在第一节点3和第二节点7二者处的公共秘密(CS),节点3、7在不通过通信网络5传输私钥的情况下执行相应方法300、400的步骤。
由第一节点3执行的方法300包括至少基于第一节点主私钥(V1C)和确定性密钥(DK)来确定330第一节点第二私钥(V2C)。确定性密钥可以是基于在第一节点与第二节点之间共享的消息(M)的,该消息(M)的共享可以包括通过通信网络5共享消息,如下文进一步详细说明。方法300还包括至少基于第二节点主公钥(P1S)和确定性密钥(DK)来确定370第二节点第二公钥(P2S)。方法300包括基于第一节点第二私钥(V2C)和第二节点第二公钥(P2S)来确定380公共秘密(CS)。
重要的是,相同的公共秘密(CS)也可以通过方法400在第二节点7处来确定。方法400包括基于第一节点主公钥(P1C)和确定性密钥(DK)来确定430第一节点第二公钥(P2C)。方法400还包括基于第二节点主私钥(V1S)和确定性密钥(DK)来确定470第二节点第二私钥(V2S)。方法400包括基于第二节点第二私钥(V2S)和第一节点第二公钥(P2C)来确定480公共秘密(CS)。
通信网络5可以包括局域网、广域网、蜂窝网络、无线通信网络、因特网等。当数据通过例如电线、光纤的通信媒体传输,或以无线方式传输时,这些网络可能易于遭受窃听,例如被窃听器11窃听。方法300、400可以允许第一节点3和第二节点7二者独立地确定公共秘密,而无需通过通信网络5传输该公共秘密。因此,一个优点是每个节点可以在不必通过可能不安全的通信网络5传输私钥的情况下安全地确定公共秘密(CS)。进而,公共秘密可以被用作用于第一节点3与第二节点7之间通过通信网络5的加密通信的秘密密钥(或用作秘密密钥的基础)。
方法300、400可以包括额外步骤。方法300可以包括步骤350,其在第一节点3处基于消息(M)和第一节点第二私钥(V2C)生成签名消息(SM1)。方法300还包括通过通信网络将第一签名消息(SM1)发送360到第二节点7。进而,第二节点7可以执行接收440第一签名消息(SM1)的步骤。方法400还包括以下步骤:步骤450,其利用第一节点第二公钥(P2C)验证第一签名消息(SM1);和步骤460,其基于验证第一签名消息(SM1)的结果来认证第一节点3。有利的是,这允许第二节点7认证声称的第一节点(在其中生成了第一签名消息)是第一节点3。这是基于仅第一节点3可以访问第一节点主私钥(V1C)的假设,且因此仅第一节点3可以确定第一节点第二私钥(V2C)以用于生成第一签名消息(SM1)。应了解,类似地,可以在第二节点7处生成第二签名消息(SM2)且将其发送到第一节点3,使得第一节点3可以在例如点对点场景中认证第二节点7。
在第一节点与第二节点之间共享消息(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)存储在节点自身处是不切实际的做法。
注册方法100、200
将参考图3说明注册方法100、200的示例,其中方法100由第一节点3执行且方法200由第二节点7执行。这包括建立用于相应的第一节点3和第二节点7的第一非对称密码对和第二非对称密码对。
非对称密码对包括相关联的私钥和公钥,例如在公钥加密中使用的那些私钥和公钥。在此示例中,使用椭圆曲线密码学(ECC)和椭圆曲线运算的性质来生成非对称密码对。
ECC的标准可以包括例如由高效密码学小组的标准(Standards forEfficientCryptography Group,www.sceg.org)所描述的那些标准的已知标准。椭圆曲线密码学也在美国专利US 5,600,725、US 5,761,305、US 5889,865、US 5,896,455、US 5,933,504、US 6,122,736、US 6,141,420、US 6,618,483、US 6,704,870、US 6,785,813、US6,078,667、US6,792,530中进行了说明。
在方法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第一非对称密码对,该第一非对称密码对包括第一节点主私钥(V1C)和第一节点主公钥(P1C)。这包括至少部分地基于在公共ECC系统中指定的可允许范围中的随机整数来生成第一节点主私钥(V1C)。这还包括基于第一节点主私钥(V1C)与公共生成器(G)的椭圆曲线点乘,根据以下公式来确定第一节点主公钥(P1C):
P1C=V1C x G (等式1)
因此,第一非对称密码对包括:
V1C:第一节点主私钥,其由第一节点保密。
P1C:第一节点主公钥,其是公开已知的。
第一节点3可以将第一节点主私钥(V1C)和第一节点主公钥(P1C)存储在与第一节点3相关联的第一数据存储13中。为了安全起见,可以将第一节点主私钥(V1C)存储在第一数据存储13的安全部分中,以确保密钥保持私密。
方法100还包括通过通信网络5将第一节点主公钥(P1C)发送130到第二节点7。第二节点7可以在接收220到第一节点主公钥(P1C)时将第一节点主公钥(P1C)存储230在与第二节点7相关联的第二数据存储17中。
类似于第一节点3,第二节点7的方法200包括生成240第二非对称密码对,该第二非对称密码对包括第二节点主私钥(V1S)和第二节点主公钥(P1S)。第二节点主私钥(V1S)也是在可允许范围内的随机整数。进而,通过以下公式来确定第二节点主公钥(P1S):
P1S=V1S x G (等式2)
因此,第二非对称密码对包括:
V1S:第二节点主私钥,其由第二节点保密。
P1S:第二节点主公钥,其是公开已知的。
第二节点7可以将第二非对称密码对存储在第二数据存储17中。方法200还包括将第二节点主公钥(P1S)发送250到第一节点3。进而,第一节点3可以接收140第二节点主公钥(P1S),并存储150第二节点主公钥(P1S)。
应理解的是,在一些可选方案中,相应的主公钥可以被接收并被存储在与第三节点9(例如可信的第三方)相关联的第三数据存储19处。这可以包括作为公共目录的第三方,例如证明授权单位。因此,在一些示例中,仅在确定需要公共秘密(CS)时,才可以由第二节点7请求并接收第一节点主公钥(P1C)(且反之亦然)。
注册步骤可以作为初始设置而仅发生一次。之后,主密钥可以以安全方式被再次使用,以生成(尤其)依赖于确定性密钥(DK)的(一个或多个)公共秘密。
会话初始化并由第一节点3确定公共秘密
现将参考图4说明确定公共秘密(CS)的示例。公共秘密(CS)可以被用于第一节点3与第二节点7之间的特定会话、时间、交易或其它用途,且使用相同的公共秘密(CS)可能不合乎需要或不安全。因此,公共秘密(CS)可以在不同会话、时间、交易等之间变换。
生成消息(M)310
在此示例中,由第一节点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)并不包括关于私钥的信息。
确定确定性密钥320
方法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)的家族。
确定第一节点第二私钥330
方法300然后包括基于第二节点主私钥(V1C)和确定性密钥(DK)来确定330第一节点第二私钥(V2C)的步骤330。这可以是基于第一节点主私钥(V1C)和确定性密钥(DK)的标量相加,根据以下公式得到:
V2C=V1C+DK (等式5)
因此,第一节点第二私钥(V2C)不是随机值,而是实际上从第一节点主私钥确定性地求得的。密码对中的对应公钥(即第一节点第二公钥(P2C))具有以下关系:
P2C=V2C x G (等式6)
将来自等式5的V2C代入等式6中会得到:
P2C=(V1C+DK)x G (等式7)
其中‘+’运算符是指标量相加,且‘x’运算符指椭圆曲线点乘。应注意的是,椭圆曲线密码学代数是分配性的(distributive),等式7也可表示为:
P2C=V1C x G+DK x G (等式8)
最后,可以将等式1代入等式7,从而得到:
P2C=P1C+DK x G (等式9.1)
P2C=P1C+SHA-256(M)x G (等式9.2)
在等式8到9.2中,‘+’运算符指椭圆曲线点加。因此,在已知第一节点主公钥(P1C)和消息(M)的情况下,可以求得对应的第一节点第二公钥(P2C)。第二节点7可以具有此类知识,以独立地确定第一节点第二公钥(P2C),下文将关于方法400进一步详细说明。
基于消息和第一节点第二私钥来生成350第一签名消息(SM1)
方法300还包括基于消息(M)和所确定的第一节点二私钥(V2C)来生成350第一签名消息(SM1)。生成签名消息包括应用数字签名算法来以数字方式对消息(M)进行签署。在一个示例中,这包括以椭圆曲线数字签名算法(ECDSA)将第一节点第二私钥(V2C)应用到消息,以获得第一签名消息(SM1)。
ECDSA的示例包括基于ECC系统与secp256k1、secp256r1、secp384r1、se3cp521r1的那些ECDSA。
可以利用第二节点7处的对应的第一节点第二公钥(P2C)来验证第一签名消息(SM1)。对第一签名消息(SM1)的这一验证可以被第二节点7用来认证第一节点3,下文将在方法400中加以说明。
确定370’第二节点第二公钥
然后第一节点3可以确定370第二节点第二公钥(P2S)。如上文所述,第二节点第二公钥(P2S)可以至少是以第二节点主公钥(P1S)和确定性密钥(DK)为基础的。在此示例中,由于将公钥确定370’为私钥与生成器(G)的椭圆曲线点乘,因此可以以与等式6类似的方式将第二节点第二公钥(P2S)表示为:
P2S=V2S x G (等式10.1)
P2S=P1S+DK x G (等式10.2)
针对等式10.2的数学证明与上文针对第一节点第二公钥(P2C)所描述的用于求得等式9.1的数学证明相同。应理解的是,第一节点3可以独立于第二节点7来确定370第二节点第二公钥。
在第一节点3处确定380公共秘密
第一节点3然后可以基于所确定的第一节点第二私钥(V2C)和所确定的第二节点第二公钥(P2S)来确定380公共秘密(CS)。公共秘密(CS)可以由第一节点3通过以下公式确定:
S=V2C x P2S (等式11)
在第二节点7处执行的方法400
现在说明在第二节点7处执行的对应方法400。应理解的是,这些步骤中的某些步骤与上文所述的由第一节点3执行的那些步骤类似。
方法400包括通过通信网络5从第一节点3接收410消息(M)。这可以包括在步骤315处由第一节点3发送的消息(M)。第二节点7然后基于消息(M)来确定420确定性密钥(DK)。第二节点7确定420确定性密钥(DK)的步骤与上文所述的第一节点执行的步骤320类似。在此示例中,第二节点7独立于第一节点3来执行此确定步骤420。
下一步骤包括基于第一节点主公钥(P1C)和确定性密钥(DK)来确定430第一节点第二公钥(P2C)。在此示例中,由于将公钥确定430’为私钥与生成器(G)的椭圆曲线点乘,因此可以采用与等式9类似的方式将第一节点第二公钥(P2C)表示为:
P2C=V2C x G (等式12.1)
P2C=P1C+DK x G (等式12.2)
对等式12.1和12.2的数学证明与上文对等式10.1和10.2所论述的那些数学证明相同。
第二节点7认证第一节点3
方法400可以包括由第二节点7执行以认证声称的第一节点3是第一节点3的步骤。如前所讨论的,这包括从第一节点3接收440第一签名消息(SM1)。然后第二节点7可以用在步骤430确定的第一节点第二公钥(P2C)来验证450第一签名消息(SM1)上的签名。
可以根据上文所述的椭圆曲线数字签名算法(ECDSA)进行对数字签名的验证。重要的是,用第一节点第二私钥(V2C)签署的第一签名消息(SM1)应该仅能用对应的第一节点第二公钥(P2C)来正确地验证,这是因为V2C和P2C形成密码对。由于这些密钥对于在注册第一节点3时生成的第一节点主私钥(V1C)和第一节点主公钥(P1C)来说是确定性的,因此可以验证第一签名消息(SM1)可以被用作认证发送第一签名消息(SM1)的声称的第一节点是在注册期间的同一第一节点3的基础。因此,第二节点7可以进一步执行基于验证(450)第一签名消息的结果来认证(460)第一节点3的步骤。
上述认证可以适于两个节点中的一个是可信任节点且仅节点中的一个需要被认证的场景。例如,第一节点3可以是客户端,且第二节点7可以是客户端所信任的服务器。因此,服务器(第二节点7)可能需要认证客户端(第一节点3)的证书,以便允许客户端访问服务器系统。服务器可能并不需要认证服务器到客户端的证书。然而,在一些场景中,可能需要两节点进行彼此认证,例如下文在另一示例中将说明的点到点场景。
第二节点7确定公共秘密
方法400还包括第二节点7基于第二节点主私钥(V1S)和确定性密钥(DK)来确定470第二节点第二私钥(V2S)。类似于第一节点3执行的步骤330,第二节点第二私钥(V2S)可以基于第二节点主私钥(V1S)和确定性密钥(DK)的标量相加,根据以下公式得到:
V2S=V1S+DK (等式13.1)
V2S=V1S+SHA-256(M) (等式13.2)
第二节点7然后可以独立于第一节点3,基于第二节点第二私钥(V2S)和第一节点第二公钥(P2C)来确定480公共秘密(CS),基于以下公式得到:
S=V2S x P2C (等式14)
证明由第一节点3和第二节点7确定的公共秘密(CS)
由第一节点3确定的公共秘密(CS)与在第二节点7处确定的公共秘密(CS)相同。现说明等式11和等式14提供相同的公共秘密(CS)的数学证明。
转向由第一节点3确定的公共秘密(CS),可以将等式10.1如下代入等式11中:
S=V2C x P2S (等式11)
S=V2C x(V2S x G)
S=(V2C x V2S)x G (等式15)
转向由第二节点7确定的公共秘密(CS),可以将等式12.1如下代入等式14中:
S=V2S x P2C (等式14)
S=V2S x(V2C x G)
S=(V2S x V2C)x G (等式16)
由于ECC代数是可交换的,因此等式15与等式16是相等的,这是因为:
S=(V2C x V2S)x G=(V2S x V2C)x G (等式17)
公共秘密(CS)和秘密密钥
公共秘密(CS)可以被用作用于第一节点3与第二节点7之间的安全通信的对称密钥算法中的秘密密钥,或用作秘密密钥的基础。
公共秘密(CS)可以呈椭圆曲线点(xS,yS)的形式。可以使用由节点3、7商定的标准公开已知运算来将该形式转换成标准密钥格式。例如,xS值可以是可用作AES256加密的密钥的256位整数。xS值也可以使用RIPEMD160转换成160位整数,以用于需要该长度的密钥的任何应用。
公共秘密(CS)可以根据需要来确定。重要的是,第一节点3并不需要存储公共秘密(CS),这是因为可以基于消息(M)来重新确定公共秘密(CS)。在一些示例中,所使用的(一个或多个)消息(M)可以在不具有与主私钥所需的安全性等级相同的安全性等级的情况下,存储在数据存储13、17、19(或其它数据存储)中。在一些示例中,消息(M)可以是公开可得的。
然而,取决于一些应用,如果公共秘密(CS)需要被保存得与第一节点主私钥(V1C)一样安全,那么公共秘密(CS)可以被存储在与第一节点相关联的第一数据存储(X)中。
此外,所公开的系统可以允许基于单个主密钥密码对来确定可以对应于多个安全秘密密钥的多个公共秘密。其优点可以通过以下示例加以说明。
在存在多个会话并且每一会话与多个相应的公共秘密(CS)相关联的情况下,可能需要具有与那些多个会话相关联的记录,从而使得将来可以重新确定相应的公共秘密(CS)。在已知系统中,这可能需要将多个秘密密钥存储在安全的数据存储中,这可能较昂贵或不便于维持。相反,本系统将主私钥安全地保存在相应的第一节点和第二节点,但可以安全或不安全地存储其它确定性密钥或消息(M)。尽管确定性密钥(DK)或消息(M)被不安全地存储,但多个公共秘密(CS)仍可以得到安全地保存,这是因为确定公共秘密所需的主私钥仍是安全的。
该方法也可以用于生成用于临时通信链路的“会话密钥”,该临时通信链路例如用于安全地传输登录口令。
点对点认证
在点对点场景中,第一节点3和第二节点7可能需要认证彼此的证书。现参考图6说明此示例。在此示例中,基于已验证的第一签名消息(SM1)来认证第一节点3的方法300、400步骤与上述的那些步骤类似。
然而,由第二节点7执行的方法400还包括基于消息(M)和第二节点私钥(V2S)来生成462第二签名消息(SM2)。在一些可选方案中,第二签名消息(SM2)可以是基于第二消息(M2)和第二节点私钥(V2S)的,其中与第一节点3共享第二消息(M2)。方法400还包括通过通信网络5将第二签名消息(SM2)发送464到第一节点3。
在第一节点3处,方法300包括从第二节点7接收第二签名消息(SM2)。该方法包括利用在步骤370中确定的第二节点第二公钥(P2S)来验证374第二签名消息(SM2)上的签名。方法300然后可以包括基于验证第二签名消息(SM2)的结果来认证376第二节点7。这能够实现第一节点3和第二节点7进行彼此认证。
确定性密钥的层级
在一个示例中,可以确定一系列连续的确定性密钥,其中可以基于前一个确定性密钥来确定每一后续密钥。
例如,不是重复步骤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类似地确定下一代第二节点第二公钥(P2S')和下一代第一节点第二私钥(V2C'),但采用以下公式进行调整:
P2S’=P1S+DK’x G (等式20.1)
V2C’=V1C+DK’ (等式20.2)
第二节点7接着可以与上述的步骤430和470类似地确定下一代第一节点第二公钥(P2C')和下一代第二节点第二私钥(V2S'),但采用以下公式进行调整:
P2C’=P1C+DK’x G (等式21.1)
V2S’=V1S+DK’ (等式21.2)
第一节点3和第二节点7接着可以各自确定下一代公共秘密(CS')。
具体来说,第一节点3用以下公式确定下一代公共秘密(CS'):
CS’=V2C’x P2S’ (等式22)
第二节点7用以下公式确定下一代公共秘密(CS'):
CS’=V2S’x P2C’ (等式23)
可以用相同方式计算出下几代(CS”、CS”’等)以产生链式层级。此技术需要第一节点3和第二节点7二者跟踪原始消息(M)或最初计算出的确定性密钥(DK)和与其相关的节点。由于这是公开已知的信息,因此不存在关于保存此信息的安全性问题。因此,此信息可以保存在‘哈希表’(将哈希值链接到公钥)中并自由地分布在网络5上(例如使用Torrent)。此外,在层级中的任何个别公共秘密(CS)曾经受损的情况下,只要私钥V1C、V1S保持安全,那么就不会影响层级中的任何其它公共秘密的安全性。
密钥的树状结构
除如上述的链式(线性)层级外,可以产生呈树状结构形式的层级。
采用树状结构,可以确定用于不同用途的多种密钥,例如认证密钥、加密密钥、签名密钥、支付密钥等,借此这些密钥全部链接到单个安全地维持的主密钥。
图7示出了实施本公开的用于在三个节点A、B和C之间共享第一公共秘密的方法,并且该方法的流程图在图8中示出。每个节点A、B、C与其自己的私钥/公钥对(S,P)相关联,例如,节点A的私钥公钥对为(SA,PA)。每个私钥或公钥可以以与以上参考图1至图6描述的方式相似的方式从对于该节点的相应的主私钥或主公钥和确定性密钥导出。私钥-公钥对是椭圆曲线密码系统的密钥对,其中,例如PA=SA x G,其中,G是椭圆曲线生成器点。
每对节点A,B、A,C和B,C之间的安全通信通过以下方式建立:在图8的步骤80中,使用以上参考图1至图6描述的方法确定每对节点之间的第二公共秘密。在图7所示的布置中,以下关系适用:
SAPB=SASBG=SBSAG=SBPA=x1
类似地,SAPC=SCPA=x2
并且,SBPC=SCPB=x3
要在节点A、B、C之间共享的第一公共秘密是x1⊕x2⊕x3,其中,⊕表示XOR运算。
一旦已经在每对节点之间建立了安全的通信信道,每个节点就使用基于图8的步骤82中的那些第二秘密的私钥-公钥对,以该节点已知的第二秘密的组合的形式对第一秘密的份额进行加密。这是通过每个节点对该节点已知的成对的第二公共秘密x的XOR组合进行编码来完成的。因此,对于节点A,节点A已知公共秘密x1和x2,因此节点A计算组合x1⊕x2,然后基于其与每个其他节点的相应通信信道的私钥-公钥对的私钥x1或x2单独地对该组合进行编码。然后,在图8的步骤84中,节点A将基于x1加密的组合x1⊕x2发送到节点B,并将基于x2加密的组合x1⊕x2发送到节点C。这些加密的份额分别由Ex1[x1⊕x2]和Ex2[x1⊕x2]表示。
同样,节点B已知公共秘密x1和x3,其中,x3表示第二节点B和第三节点C共有的第三公共秘密。节点B计算组合x1⊕x3,然后基于节点彼此之间的第二公共秘密x1和x3单独地对该组合进行编码。然后,在图8的步骤84中,节点B将基于x1加密的组合x1⊕x3,即Ex1[x1⊕x3]发送到节点A,并将基于x3加密的Ex3[x1⊕x3]发送到节点C。进而节点C计算组合x2⊕x3,然后基于节点彼此之间的第二公共秘密x2和x3单独地对该组合进行编码。然后,在图8的步骤84中,节点C将基于x2加密的组合x2⊕x3,即Ex2[x2⊕x3]发送到节点A,并将基于x3加密的Ex3[x2⊕x3]发送至节点B。
在图8的步骤86中,节点A、B、C中的每一个从其他节点接收加密的份额,并解密加密的份额。因此,每个节点都可以如下获得重建第一共享的秘密x1⊕x2⊕x3所需的阈值数量的份额。
节点A从节点B接收份额x2⊕x3,并从节点C接收份额x1⊕x3。由于节点A分别已知x1和x2,因此在图8的步骤88中,节点A可以通过x1与x2⊕x3的XOR组合或x2与x1⊕x3的XOR组合轻松地计算出第一公共秘密x1⊕x2⊕x3。类似地,节点B从节点A接收份额x1⊕x2,并从节点C接收份额x2⊕x3。由于节点B分别已知x1和x3,因此节点B可以通过x1与x2⊕x3的XOR组合或x3与x2⊕x3的XOR组合轻松地计算出第一公共秘密x1⊕x2⊕x3。同样,节点C从节点B接收份额x1⊕x3,并从节点A接收份额x1⊕x2。由于节点C分别已知x2和x3,因此节点C可以通过x2与x1⊕x3的XOR组合或x3与x1⊕x2的XOR组合轻松地计算出第一公共秘密x1⊕x2⊕x3。
类似于以上针对第二公共秘密所描述的方式,第一公共秘密(CS)可以是椭圆曲线点(xS,yS)的形式。可以使用节点3、7同意的标准公开已知的运算将其转换为标准密钥格式。例如,xS值可以是可以用作AES256加密的密钥的256位整数。对于需要该长度密钥的任何应用,也可以使用RIPEMD160将其转换为160位整数。
尽管XOR加密提供了当第二公共秘密在区块链交易的脚本中广播时隐藏第二公共秘密的优势,但可以借助于XOR加密以外的其他方式分配第一公共秘密的份额,因此第三方在不知道阈值数量的其他第二公共秘密的情况下无法确定第二公共秘密。例如,可以使用形式为(x1.x2.x3)mod n的第二公共秘密的简单算术乘法,其中,n是所使用的椭圆曲线密码系统的阶数。
另外,第一公共秘密的份额可以使用本领域技术人员所熟悉的Shamir秘密共享方案或无经销商秘密共享方案而分配为多项式函数的份额。在第一公共秘密的份额是多项式函数的份额的情况下,第一公共秘密的有效恢复可以借助于如图9所示的Berlekamp-Welch解码器进行。参考图9,Berlekamp-Welch解码器70进行多项式函数的份额的多项式插值以获得多项式函数。
在常规使用Berlekamp-Welch算法来校正传输的数据中的差错时,消息m在编码器72处被划分成一系列的k个字节,并且每个字节c0,c1,…ck-1被编码为整数模p。然后,该消息由多项式函数表示:
然后,针对x的多个已知值确定多项式函数m(x)的值,以生成一系列(x,y)对,然后由发送器74将(x,y)对传输到接收器76。
在接收器76处接收到的数据M(即,接收到的消息)包括与表示原始消息的多项式函数上的点相对应的对(a1,b1,…an,bn)
如果假定某些传输的(x,y)对在传输过程中已损坏,则可以如下限定差错定位多项式函数:
当P(ai)≠bi时,E(ai)=0;否则E(ai)≠0
如果乘积多项式函数Q(ai)被限定为
Q(ai)=biEi(ai)
则对于每个接收到的(ai,bi)对,无论bi的值是否已损坏,Q(ai)=biEi(ai)=P(ai)Ei(ai),因为当P(ai)≠b时,E(ai)=0,
对于(ai,bi)的n个已知值,由于E(ai)是次数(degree)为e的多项式函数,而P(ai)是次数为(k-1)的多项式函数,则Q(ai)是次数为(e+k–1)的多项式函数。因此,(ai,bi)的已知值可以被表示为线性系统:
线性系统包含2e+k–1个未知项(来自E(x)的e个,以及来自Q(x)的e+k–1个),因此结果是,如果n≥2e+k–1,则Q(ai)和E(ai)的系数可以被确定。如果可以确定Q(ai)和E(ai),则可以确定P(ai)以恢复原始消息m(x)。
因此,可以看出,Berlekamp-Welch解码器70接收表示多项式函数上的点的对作为输入,并输出多项式函数。因此,在本公开中,解码器70可以用作拉格朗日插值的替代,以从由该多项式函数表示的阈值数量的份额来确定多项式函数。
图10示出了实施本公开的用于在四个节点A、B、C和D之间共享第一公共秘密的方法。每个节点A、B、C、D与其自己的私钥/公钥对(S,P)相关联,例如,节点A的私钥公钥对为(SA,PA)。每个私钥或公钥可以以与以上参考图1至图6描述的方式相似的方式从针对该节点的相应的主私钥或主公钥和确定性密钥导出。私钥-公钥对是椭圆曲线密码系统的密钥对,其中,例如PA=SA x G,其中,G是椭圆曲线生成器点。
每对节点A,B、A,C、A,D、B,C、B,D、和C,D之间的安全通信可以通过使用以上参考图1至图6描述的方法确定每对节点之间的第二公共秘密来建立。在图10所示的布置中,以下关系适用:
SAPB=SASBG=SBSAG=SBPA=x1
SAPC=SCPA=x2
SAPD=SDPA=x3
SBPC=SCPB=x4
SBPD=SDPB=x5
以及SCPD=SDPC=x6
在节点A、B、C和D之间共享的第一公共秘密是x1⊕x2⊕x3⊕x4⊕x5⊕x6。
一旦已经在每对节点之间建立了安全的通信信道,每个节点就以类似于参考图7和8描述的方法的方式使用基于那些第二秘密的私钥-公钥对,以该节点已知的第二秘密的组合的形式对第一秘密的份额进行加密。这是通过每个节点对该节点已知的成对的第二公共秘密x的XOR组合进行编码来完成的。因此,对于节点A,节点A已知公共秘密x1、x2和x3,因此节点A计算组合x1⊕x2、x1⊕x3和x2⊕x3,然后基于其与每个其他节点的相应的通信信道x1、x2或x3的私钥-公钥对的私钥单独地对该组合进行编码。在本实施例中,单独的组合[x1⊕x2;x1⊕x3;x2⊕x3]在图10中被缩写为[A份额]。然后编码的组合被表示为Ex1[x1⊕x2;x1⊕x3;x2⊕x3]或Ex1[A份额],Ex2[x1⊕x2;x1⊕x3;x2⊕x3]或Ex2[A份额]和Ex3[x1⊕x2;x1⊕x3;x2⊕x3]或Ex3[A份额]。然后,节点A向与其共有x1的节点B发送Ex1[份额],向与其共有x2的节点C发送Ex2[A份额],并且向与其共有x3的节点D发送Ex3[A份额]。
以类似的方式,节点B计算以下组合:
[x1⊕x4;x1⊕x5;x4⊕x5]=[B份额]
并且如下进行加密并将其发送到节点A:
Ex1[x1⊕x4;x1⊕x5;x4⊕x5]=Ex1[B份额]
并且如下进行加密并将其发送到节点C:
Ex4[x1⊕x4;x1⊕x5;x4⊕x5]=Ex4[B份额]
并且如下进行加密并将其发送到节点D:
Ex5[x1⊕x4;x1⊕x5;x4⊕x5]=Ex5[B份额]
节点C计算以下组合:
[x2⊕x4;x2⊕x6;x4⊕x6]=[C份额]
并且如下进行加密以并将其发送到节点A:
Ex2[x2⊕x4;x2⊕x6;x4⊕x6]=Ex2[C份额]
并且如下进行加密并将其发送到节点B:
Ex4[x2⊕x4;x2⊕x6;x4⊕x6]=Ex4[C份额]
并且如下进行加密并将其发送到节点D:
Ex6[x2⊕x4;x2⊕x6;x4⊕x6]=Ex6[C份额]
并且,节点D计算以下组合:
[x3⊕x5;x3⊕x6;x5⊕x6]=[D份额]
并且如下进行加密并将其发送到节点A:
Ex3[x3⊕x5;x3⊕x6;x5⊕x6]=Ex3[D份额]
并且如下进行加密并将其发送到节点B:
Ex5[x3⊕x5;x3⊕x6;x5⊕x6]=Ex5[D份额]
并且如下进行加密并将其发送到节点C:
Ex6[x3⊕x5;x3⊕x6;x5⊕x6]=Ex6[D份额]
节点A、B、C、D中的每一个从其他节点接收加密的份额,并使用对应于适当的第二公共秘密x1,x2,x3,x4,x5或x6的私钥对加密的份额进行解密。其结果是,每个节点可以如下获得重建第一公共秘密x1⊕x2⊕x3⊕x4⊕x5⊕x6所需的阈值数量的份额。
节点A从节点B接收份额x1⊕x4、x1⊕x5和x4⊕x5,并且分别已知x1、x2和x3,因此可以分别从x1⊕x1⊕x4和x1⊕x1⊕x5计算x4和x5。节点A还从节点C接收份额x2⊕x4、x2⊕x6和x4⊕x6,并且分别已知x1、x2和x3,因此可以从x2⊕x2⊕x6计算x6,因此分别已知x1到x6并可以计算出第一公共秘密。
通过操作类似的过程,其他节点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)”。元素的单数形式并不排除此类元素的复数形式,并且反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的装置权利要求中,这些装置中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。
Claims (31)
1.一种在多个节点之间共享第一公共秘密的方法,其中,每个所述节点与相应的非对称密码第一密钥对相关联,所述相应的非对称密码第一密钥对具有所述多个节点所共有的密码系统的相应的第一私钥和相应的第一公钥,并且其中,所述第一公共秘密基于每个所述节点的第一私钥,所述方法包括:
为至少一个第一节点确定多个第二公共秘密,其中,每个所述第二公共秘密是所述第一节点和相应的第二节点所共有的,是在所述第一节点处基于第一节点的第一私钥和第二节点的第一公钥确定的,并且是在第二节点处基于第二节点的第一私钥和第一节点的第一公钥确定的,其中,第一公共秘密的多个份额各自基于至少一个相应的第二公共秘密,使得对于阈值数量的所述份额,所述第一公共秘密是能够访问的,但对于小于所述阈值数量的份额,所述第一公共秘密是不能访问的;
为至少一个第二节点,确定至少一个相应的第三公共秘密,其中,所述或每个相应的第三公共秘密是所述第二节点和相应的第三节点所共有的,是在所述第二节点处基于第二节点的第一私钥和第三节点的第一公钥确定的,并且是在第三节点处基于第三节点的第一私钥和第二节点的第一公钥确定的,并且其中,第一公共秘密的至少一个份额基于至少一个相应的所述第三公共秘密;
在至少一个所述第一节点处,基于密码系统的相应的非对称密码第二密钥对的第二私钥,来对所述第一节点已知的所述第一公共秘密的至少一个份额进行加密,其中,所述第二密钥对基于所述第一节点已知的相应的所述第二公共秘密;
从所述第一节点向与所述第一节点共有第二公共秘密的相应的所述第二节点发送至少一个所述加密的份额,所述第二密钥对基于所述第二公共秘密;以及
在至少一个所述第一节点处,从至少一个所述第二节点接收所述第一秘密的至少一个相应的份额,所述第一秘密是所述第二节点已知的并且基于所述密码系统的相应的非对称密码第二密钥对的第二私钥被加密,其中,所述第二密钥对基于所述第一节点和所述第二节点共有的第二公共秘密,以使得所述多个节点中的每一个达到所述第一公共秘密的所述阈值数量的份额。
2.根据权利要求1所述的方法,其中,多个所述加密的份额各自基于对应的所述节点已知的多个所述公共秘密的组合。
3.根据权利要求2所述的方法,其中,多个所述加密的份额基于对应的所述节点已知的多个所述公共秘密的至少一个相应的XOR组合。
4.根据权利要求2或3所述的方法,其中,多个所述加密的份额基于对应的所述节点已知的多个所述公共秘密的乘法组合。
5.根据权利要求4所述的方法,其中,所述乘法组合是(x1.x2.x3)mod n的形式,其中,x1、x2、x3是节点已知的公共秘密,n是密码系统的阶数。
6.根据前述权利要求中的任一项所述的方法,其中,多个所述份额是第一多项式函数的份额,并且第一秘密是借助于至少阈值数量的所述份额的多项式插值来确定的。
7.根据权利要求6所述的方法,还包括:
接收所述第一公共秘密的至少阈值数量的份额,其中,每个所述份额对应于第一多项式函数的相应的值;以及
借助于从所述份额的多个已知值确定第一多项式函数的系数来确定所述第一多项式函数,以确定所述第一公共秘密。
8.根据权利要求7所述的方法,其中,确定所述第一多项式函数的步骤包括执行差错校正算法。
9.根据权利要求8所述的方法,其中,确定所述第一多项式函数的步骤包括执行Berlekamp-Welch解码算法。
10.根据权利要求7或8所述的方法,其中,确定所述第一多项式函数的步骤包括:
限定差错定位多项式函数和第二多项式函数,其中,第二多项式函数是所述第一多项式函数和所述差错定位多项式函数的乘积;从所述部分签名的多个已知值确定所述第二多项式函数和所述差错定位多项式函数的系数;以及从所述第二多项式函数和所述差错检测多项式函数确定所述第一多项式函数,以确定第一公共秘密。
11.根据前述权利要求中的任一项所述的方法,其中,至少一个所述密码系统具有同态性质。
12.根据权利要求11所述的方法,其中,至少一个所述密码系统是椭圆曲线密码系统。
13.根据前述权利要求中的任一项所述的方法,还包括:
基于至少第一节点主私钥(V1C)和第一节点和第二节点所共有的确定性密钥(DK)来确定至少一个所述第一节点的所述第一私钥;以及
使用公共密码系统,基于第二节点的主公钥(P1S)和确定性密钥(DK)的加密来确定至少一个所述第二节点的所述第一公钥(P2S)。
14.根据权利要求13所述的方法,其中,所述确定性密钥(DK)基于消息(M)。
15.根据权利要求14所述的方法,还包括:
-基于消息(M)和第一节点的第一私钥(V2C)来生成第一签名消息(SM1);以及
-通过通信网络将第一签名消息(SM1)发送到第二节点(S),
其中,所述第一签名消息(SM1)能够利用第一节点的第一公钥(P2C)来验证,以认证第一节点(C)。
16.根据权利要求14或15所述的方法,还包括:
-通过通信网络从第二节点(S)接收第二签名消息(SM2);
-利用第二节点的第一公钥(P2S)验证第二签名消息(SM2);以及
-基于验证第二签名消息(SM2)的结果来认证第二节点(S),
其中,所述第二签名消息(SM2)是基于消息(M)或第二消息(M2)以及第二节点的第一私钥(V2S)生成的。
17.根据权利要求14至16中的任一项所述的方法,还包括:
-生成消息(M);以及
-通过通信网络向第二节点(S)发送消息(M)。
18.根据权利要求14至17中的任一项所述的方法,还包括:
-通过通信网络从第二节点(S)接收消息(M)。
19.根据权利要求14至18中的任一项所述的方法,还包括:
-通过通信网络从另一个节点接收消息(M)。
20.根据权利要求14至19中的任一项所述的方法,包括:
-从数据存储和/或与第一节点(C)相关联的输入接口接收消息(M)。
21.根据权利要求13至20中的任一项所述的方法,其中,所述密码系统是椭圆曲线密码ECC系统,并且第一节点主公钥(P1C)和第二节点主公钥(P1S)基于相应的第一节点主私钥(V1C)和第二节点主私钥(V1S)与生成器(G)的椭圆曲线点乘。
22.根据权利要求13至21中任一项所述的方法,还包括以下步骤:
-通过通信网络接收第二节点主公钥(P1S);以及
-在与第一节点(C)相关联的数据存储处存储第二节点主公钥(P1S)。
23.根据权利要求13至22中任一项所述的方法,还包括以下步骤:
-在第一节点(C)处生成第一节点主私钥(V1C)和第一节点主公钥(P1C);
-通过通信网络将第一节点主公钥(P1C)发送到第二节点(S)和/或其他节点;以及
-在与第一节点(C)相关联的第一数据存储中存储第一节点主私钥(V1C)。
24.根据权利要求13至23中任一项所述的方法,还包括:
-通过通信网络向第二节点发送指示将公共密码系统用于确定至少一个所述公共秘密(CS)的方法的通知,以及
其中,生成第一节点主私钥(V1C)和第一节点主公钥(P1C)的步骤包括:
-基于在公共密码系统中指定的允许范围内的随机整数来生成第一节点主私钥(V1C);以及
-基于第一节点主私钥(V1C)的加密来确定第一节点主公钥(P1C)。
25.根据权利要求13至24中任一项所述的方法,其中,所述公共密码系统是具有公共生成器(G)的椭圆曲线密码ECC系统,并且第一节点主公钥(P1C)是基于第一节点主私钥(V1C)和公共生成器(G)的椭圆曲线点乘,根据以下公式来确定的:
P1C=V1C×G。
26.根据权利要求13至25中任一项所述的方法,还包括:
-基于确定消息(M)的哈希来确定确定性密钥(DK),以及
其中,确定第一节点的第一私钥(V2C)的步骤是根据以下公式基于第一节点主私钥(V1C)和确定性密钥(DK)的标量相加,来确定的:
V2C=V1C+DK,以及
其中,确定第二节点的第一公钥(P2S)的步骤是根据以下公式基于第二节点主公钥(P1S)和确定性密钥(DK)与公共生成器(G)的椭圆曲线点乘的椭圆曲线点加,来确定的:
P2S=P1S+DK×G,
确定性密钥(DK)基于确定先前的确定性密钥的哈希。
27.一种在多个节点之间进行安全通信的方法,其中,所述方法包括:
借助于根据前述权利要求中的任一项所述的方法在多个节点之间共享第一公共秘密;
-基于所述第一公共秘密确定对称密钥;
-利用所述对称密钥将第一通信消息加密为加密的第一通信消息;以及
-通过通信网络将所述加密的第一通信消息从所述多个节点中的一个发送到所述多个节点中的其他节点。
28.根据权利要求27所述的方法,还包括:
-通过通信网络从所述多个节点中的节点接收加密的第二通信消息;以及
-利用所述对称密钥将加密的第二通信消息解密为第二通信消息。
29.一种在多个节点之间执行在线交易的方法,其中,所述方法包括:
借助于根据权利要求1至26中任一项所述的方法在所述多个节点之间共享第一公共秘密;
-基于所述第一公共秘密确定对称密钥;
-利用所述对称密钥将第一交易消息加密为加密的第一交易消息;
-通过通信网络将所述加密的第一交易消息从所述多个节点中的第一节点发送到所述多个节点中的其他节点。
30.一种系统,包括:
处理器;以及
包括可执行指令的存储器,所述可执行指令由于所述处理器的执行而使所述系统执行根据前述权利要求中任一项所述的方法。
31.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令由于被计算机系统的处理器执行而使所述计算机系统执行根据权利要求1至29中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1815396.5A GB201815396D0 (en) | 2018-09-21 | 2018-09-21 | Computer implemented system and method |
GB1815396.5 | 2018-09-21 | ||
PCT/IB2019/057632 WO2020058806A1 (en) | 2018-09-21 | 2019-09-11 | Computer implemented system and method for sharing a common secret |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112771832A true CN112771832A (zh) | 2021-05-07 |
Family
ID=64024331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980062151.0A Pending CN112771832A (zh) | 2018-09-21 | 2019-09-11 | 用于共享公共秘密的计算机实现的系统和方法 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11616641B2 (zh) |
EP (1) | EP3854052A1 (zh) |
JP (1) | JP2022500920A (zh) |
KR (1) | KR20210063378A (zh) |
CN (1) | CN112771832A (zh) |
GB (1) | GB201815396D0 (zh) |
SG (1) | SG11202102221SA (zh) |
TW (1) | TWI807103B (zh) |
WO (1) | WO2020058806A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080723A (zh) * | 2022-08-23 | 2022-09-20 | 云南师范大学 | 一种阅读理解问题的自动生成方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220294647A1 (en) * | 2019-10-18 | 2022-09-15 | Tbcasoft, Inc. | Distributed ledger-based methods and systems for certificate authentication |
GB2605784A (en) * | 2021-04-09 | 2022-10-19 | Vodafone Group Services Ltd | SIM cryptographic key storage |
CN115037441B (zh) * | 2022-07-07 | 2023-11-10 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101023622A (zh) * | 2004-04-02 | 2007-08-22 | 捷讯研究有限公司 | 配置和供应无线手持设备 |
CN102170636A (zh) * | 2010-02-26 | 2011-08-31 | 捷讯研究有限公司 | 用于计算共享加密密钥的方法和设备 |
CN103825733A (zh) * | 2014-02-28 | 2014-05-28 | 华为技术有限公司 | 基于组合公钥密码体制的通信方法、装置及系统 |
CN106230872A (zh) * | 2009-11-25 | 2016-12-14 | 安全第公司 | 对移动中数据进行保护的系统和方法 |
CN106357401A (zh) * | 2016-11-11 | 2017-01-25 | 武汉理工大学 | 一种私钥存储及使用方法 |
JP2017187573A (ja) * | 2016-04-04 | 2017-10-12 | 日本電信電話株式会社 | サーバ装置、誤り訂正システム、誤り訂正方法、プログラム |
CN108292402A (zh) * | 2016-02-23 | 2018-07-17 | 恩链控股有限公司 | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 |
CN108352015A (zh) * | 2016-02-23 | 2018-07-31 | 恩链控股有限公司 | 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0639907B1 (en) | 1993-08-17 | 1999-12-08 | R3 Security Engineering AG | Digital signature method and key agreement method |
AU3073595A (en) | 1994-07-29 | 1996-03-04 | Certicom Corp. | Elliptic curve encryption systems |
US5761305A (en) | 1995-04-21 | 1998-06-02 | Certicom Corporation | Key agreement and transport protocol with implicit signatures |
US6785813B1 (en) | 1997-11-07 | 2004-08-31 | Certicom Corp. | Key agreement and transport protocol with implicit signatures |
WO1996033565A1 (en) | 1995-04-21 | 1996-10-24 | Certicom Corp. | Method for signature and session key generation |
CA2176972C (en) | 1995-05-17 | 2008-11-25 | Scott A. Vanstone | Key agreement and transport protocol with implicit signatures |
GB9510035D0 (en) | 1995-05-18 | 1995-08-02 | Cryptech Systems Inc | Strengthened public key protocols |
US5999626A (en) | 1996-04-16 | 1999-12-07 | Certicom Corp. | Digital signatures on a smartcard |
US6078667A (en) | 1996-10-10 | 2000-06-20 | Certicom Corp. | Generating unique and unpredictable values |
CA2235359C (en) | 1998-03-23 | 2012-04-10 | Certicom Corp. | Implicit certificate scheme with ca chaining |
US7958356B1 (en) * | 2006-09-29 | 2011-06-07 | Netapp, Inc. | System and method for establishing a shared secret among nodes of a security appliance |
US8510561B2 (en) * | 2010-02-26 | 2013-08-13 | Research In Motion Limited | Methods and devices for computing a shared encryption key |
US20150213433A1 (en) | 2014-01-28 | 2015-07-30 | Apple Inc. | Secure provisioning of credentials on an electronic device using elliptic curve cryptography |
US10356054B2 (en) * | 2014-05-20 | 2019-07-16 | Secret Double Octopus Ltd | Method for establishing a secure private interconnection over a multipath network |
US20170249460A1 (en) * | 2014-09-23 | 2017-08-31 | The Regents Of The University Of California | Provably secure virus detection |
US9813234B2 (en) * | 2015-05-11 | 2017-11-07 | The United States of America, as represented by the Secretery of the Air Force | Transferable multiparty computation |
US9735958B2 (en) | 2015-05-19 | 2017-08-15 | Coinbase, Inc. | Key ceremony of a security system forming part of a host computer for cryptographic transactions |
US20160352710A1 (en) * | 2015-05-31 | 2016-12-01 | Cisco Technology, Inc. | Server-assisted secure exponentiation |
US9705859B2 (en) * | 2015-12-11 | 2017-07-11 | Amazon Technologies, Inc. | Key exchange through partially trusted third party |
US10965448B1 (en) * | 2017-05-03 | 2021-03-30 | Board Of Trustees Of The University Of Illinois | Dynamic distributed storage for scaling blockchain |
IL256234A (en) * | 2017-12-10 | 2018-01-31 | Kipnis Aviad | Computation using somewhat homomorphic encryption |
US20190305940A1 (en) * | 2018-03-28 | 2019-10-03 | Ca, Inc. | Group shareable credentials |
-
2018
- 2018-09-21 GB GBGB1815396.5A patent/GB201815396D0/en not_active Ceased
-
2019
- 2019-09-11 US US17/278,198 patent/US11616641B2/en active Active
- 2019-09-11 EP EP19769921.8A patent/EP3854052A1/en active Pending
- 2019-09-11 WO PCT/IB2019/057632 patent/WO2020058806A1/en unknown
- 2019-09-11 CN CN201980062151.0A patent/CN112771832A/zh active Pending
- 2019-09-11 KR KR1020217011769A patent/KR20210063378A/ko unknown
- 2019-09-11 JP JP2021514094A patent/JP2022500920A/ja active Pending
- 2019-09-11 SG SG11202102221SA patent/SG11202102221SA/en unknown
- 2019-09-20 TW TW108134023A patent/TWI807103B/zh active
-
2023
- 2023-02-06 US US18/106,302 patent/US20230299947A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101023622A (zh) * | 2004-04-02 | 2007-08-22 | 捷讯研究有限公司 | 配置和供应无线手持设备 |
CN106230872A (zh) * | 2009-11-25 | 2016-12-14 | 安全第公司 | 对移动中数据进行保护的系统和方法 |
CN102170636A (zh) * | 2010-02-26 | 2011-08-31 | 捷讯研究有限公司 | 用于计算共享加密密钥的方法和设备 |
CN103825733A (zh) * | 2014-02-28 | 2014-05-28 | 华为技术有限公司 | 基于组合公钥密码体制的通信方法、装置及系统 |
CN108292402A (zh) * | 2016-02-23 | 2018-07-17 | 恩链控股有限公司 | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 |
CN108352015A (zh) * | 2016-02-23 | 2018-07-31 | 恩链控股有限公司 | 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移 |
JP2017187573A (ja) * | 2016-04-04 | 2017-10-12 | 日本電信電話株式会社 | サーバ装置、誤り訂正システム、誤り訂正方法、プログラム |
CN106357401A (zh) * | 2016-11-11 | 2017-01-25 | 武汉理工大学 | 一种私钥存储及使用方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080723A (zh) * | 2022-08-23 | 2022-09-20 | 云南师范大学 | 一种阅读理解问题的自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2022500920A (ja) | 2022-01-04 |
EP3854052A1 (en) | 2021-07-28 |
GB201815396D0 (en) | 2018-11-07 |
TW202025666A (zh) | 2020-07-01 |
SG11202102221SA (en) | 2021-04-29 |
TWI807103B (zh) | 2023-07-01 |
US20230299947A1 (en) | 2023-09-21 |
WO2020058806A1 (en) | 2020-03-26 |
US11616641B2 (en) | 2023-03-28 |
US20210367772A1 (en) | 2021-11-25 |
KR20210063378A (ko) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292402B (zh) | 用于信息的安全交换的公共秘密的确定和层级确定性密钥 | |
CN107196763B (zh) | Sm2算法协同签名及解密方法、装置与系统 | |
CN111740828B (zh) | 一种密钥生成方法以及装置、设备、加解密方法 | |
CN108352015B (zh) | 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移 | |
CN111066285B (zh) | 基于sm2签名恢复公钥的方法 | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
US11310060B1 (en) | Atomic cross-chain swaps using equivalent secret values | |
US9705683B2 (en) | Verifiable implicit certificates | |
TWI807125B (zh) | 用以分配數位簽署資料之份額的電腦實施系統及方法 | |
CN110959163A (zh) | 能够在多个存储节点上安全存储大型区块链的计算机实现的系统和方法 | |
CN113711564A (zh) | 用于加密数据的计算机实现的方法和系统 | |
WO2019047418A1 (zh) | 数字签名方法、装置和系统 | |
CN111147245A (zh) | 一种区块链中使用国家密码进行加密的算法 | |
KR100989185B1 (ko) | Rsa기반 패스워드 인증을 통한 세션키 분배방법 | |
CN117917041A (zh) | 生成共享加密密钥 | |
CN117795901A (zh) | 生成数字签名份额 | |
CN116318636A (zh) | 一种基于sm2的门限签名方法 | |
Barker et al. | SP 800-56A. recommendation for pair-wise key establishment schemes using discrete logarithm cryptography (revised) | |
JP2008152737A (ja) | サービス提供サーバ、認証サーバ、および認証システム | |
KR20200055672A (ko) | 순열그룹 기반의 암호화 기술을 적용한 암호화시스템 및 방법 | |
CN114461998B (zh) | 一种全动态可追踪环境下基于格的秘密握手方法 | |
JP5392741B2 (ja) | Rsaをベースとしたパスワード認証方式及びその応用 | |
CN117837127A (zh) | 生成数字签名 | |
CN117837123A (zh) | 生成数字签名 | |
CN114079561A (zh) | 基于sm9加密算法的分布式密钥中心实现方法、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |