IP Library Granted Patent US 11,616,641
Granted Patent B2
US 11,616,641 · App. 17/278,198 · Granted Mar 28, 2023

Computer implemented system and method for sharing a common secret

Inventor: Craig Steven Wright (London, GB)
Assignee: nChain Licensing AG
H04L9/0841H04L9/085H04L9/0825H04L9/3066
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,616,641
App. No.
17/278,198
Granted
Mar 28, 2023
Kind
B2
Abstract

A method of sharing a first common secret among a plurality of nodes for enabling secure communication for blockchain transactions. The method comprises determining, for at least one first node a plurality of second common secrets, wherein each second common secret is common to the first node and a respective second node, is determined at the first node based on a first private key of the first node and a first public key of the second node and is determined at the second node based on the first private key of the second node and the first public key of the first node. The method further comprises exchanging encrypted shares of the first common secret among the plurality of nodes to enable each of the plurality of nodes to reach a threshold number of shares of the first common secret to access the first common secret.

Claims (101)

1. A method of sharing a first common secret among a plurality of nodes,

wherein each node of said plurality of nodes is associated with a respective asymmetric cryptography first key pair having a respective first private key and a respective first public key of a cryptography system common to said plurality of nodes, and

wherein the first common secret is based on the first private key of each node of said plurality of nodes,

the method comprising:

determining, for at least one first node of said plurality of nodes, a plurality of second common secrets,

wherein each said second common secret is common to said first node and a respective second node of said plurality of nodes, is determined at said first node based on the first private key of the first node and the first public key of the respective second node, and is determined at the respective second node based on the first private key of the respective second node and the first public key of the first node,

wherein said first private key of the at least one said first node is determined based on at least a first node master private key (V1c) and a deterministic key (DK) common with the first node and the respective second node, and

wherein said first public key of the respective second node (P2s) is determined based on a master public key (P1s) of the respective second node and encryption of the deterministic key (DK) using the cryptography system common to said plurality of nodes,

wherein a plurality of shares of the first common secret are each based on at least one respective second common secret such that said first common secret is accessible using a threshold number of said shares but is inaccessible using less than said threshold number of said shares;

determining, for the respective second node, at least one respective third common secret, wherein each respective third common secret is common to said respective second node and a respective third node of said plurality of nodes, is determined at said respective second node on the basis of the first private key of the respective second node and the first public key of the third node, and is determined at the third node on the basis of the first private key of the respective third node and the first public key of the respective second node, and

wherein at least one share of the first common secret is based on at least one respective said third common secret;

encrypting, by at least one said first node, at least one share of said first common secret known to said first node based on a respective encryption key common to said first node and said respective second node, wherein said respective encryption key is based on a respective said second common secret known to said first node and said respective second node;

sending at least one said encrypted share from said first node to said respective second node; and

receiving, by at least one said first node from at least one said respective second node, at least one respective share of said first common secret known to said respective second node and encrypted based on the respective encryption key common to said first node and said respective second node, to enable said first node to access at least one share of said first common secret known to said respective second node,

wherein each node of said plurality of nodes access the first common secret in response to receiving a threshold number of encrypted shares of the first common secret from respective nodes of the plurality of the nodes.

2. The method according to claim 1 , wherein said encrypting comprises encrypting the plurality of shares based on a combination of a plurality of said second or third common secrets known to a corresponding node.

3. The method according to claim 2 , wherein said encrypting comprises encrypting each of the plurality of shares based on at least one respective logic XOR combination of a plurality of said second or third common secrets known to a corresponding node.

4. The method according to claim 2 , wherein said encrypting comprises encrypting each of the plurality of shares based on multiplicative combination of a plurality of said second or third common secrets known to a corresponding node.

5. The method according to claim 4 , wherein the multiplicative combination is of the form (X1. X2. X3) mod n, wherein X1, X2 and X3 are second or third common secrets known to a node, and n is an order of the cryptography system.

6. The method according to claim 1 , wherein the plurality of said shares are shares of a first polynomial function, and the first common secret is determined by means of polynomial interpolation of at least a threshold number of said shares.

7. The method according to claim 6 , further comprising:

receiving at least a threshold number of shares of said first common secret, wherein each said share corresponds to a respective value of the first polynomial function; and

determining said first polynomial function, by means of determining coefficients of the first polynomial function from a plurality of known values of said shares, to determine said first common secret.

8. The method according to claim 7 , wherein the of determining said first polynomial function comprises executing an error correction algorithm.

9. The method according to claim 8 , wherein the determining said first polynomial function comprises executing a Berlekamp-Welch decoding algorithm.

10. The method according to claim 7 , wherein the determining said first polynomial function comprises: defining an error locator polynomial function and a second polynomial function, wherein the second polynomial function is a product of said first polynomial function and said error locator polynomial function, determining coefficients of said second polynomial function and said error locator polynomial function from a plurality of known values of said first polynomial function, and determining said first polynomial function from said second polynomial function and an error detector polynomial function, to determine the first common secret.

11. The method according to claim 1 , wherein at least one said cryptography system has a homomorphic property.

12. The method according to claim 11 , wherein at least one said cryptography system is an elliptic curve cryptography system.

13. The method according to claim 1 , wherein the deterministic key (DK) is based on a message (M).

14. The method according to claim 13 , further comprising:

generating a first signed message (SM1) based on the message (M) and the first private key of the first node (V 2C ); and

sending, over a communications network, the first signed message (SM1) to the second node (S),

wherein the first signed message (SM1) can be validated with a first public key of the first node (P 2C ) to authenticate the first node (C).

15. The method according to claim 14 , further comprising: receiving, over a communications network, a second signed message (SM2) from the second node (S); validating the second signed message (SM2) with the first public key of the second node (P2S); and authenticating the second node (S) based on the result of validating the second signed message (SM2), wherein the second signed message (SM2) was generated based on the message (M), or a second message (M2), and the first private key of the second node (V2s).

16. The method according to claim 15 , further comprising: generating a message (M); and sending, over a communications network, the message (M) to the second node (S).

17. The method according to claim 15 , further comprising: receiving the message (M), over a communications network, from the second node (S).

18. The method according to claim 14 , comprising: receiving the message (M) from a data store, and/or an input interface associated with the first node (C).

19. The method according to claim 13 , further comprising:

receiving the message (M), over a communications network, from another node.

20. The method according to claim 1 , wherein the cryptography system is an elliptic curve cryptography (ECC) system and a first node master public key (P1c) and second node master public key (P1s) are based on elliptic curve point multiplication of respective first node master private key (V1c) and second node master private key (V1s) and a generator (G).

21. The method according to claim 20 , further comprising steps of: receiving, over a communications network, the second node master public key (P1s); and storing, at a data store associated with the first node (C), the second node master public key (P1s).

22. The method according to claim 20 , further comprising the steps of: generating, at a first node (C), the first node master private key (V1c) and the first node master public key (P1c); sending, over a communications network, the first node master public key (P1c) to the second node (S) and/or other node; and storing, in a first data store associated with the first node (C), the first node master private key (V1c).

23. The method according to claim 1 , further comprising: sending, over a communications network, to the respective second node, a notice indicative of using a common cryptography system for a method of determining at least one common secret (CS), and wherein a step of generating the first node master private key (V1c) and a first node master public key (P1c) comprises: generating the first node master private key (V1c) based on a random integer in an allowable range specified in the cryptography system common to the plurality of nodes; and determining the first node master public key (P1c) based on encryption of the first node master private key (V1c).

24. The method according to claim 23 , wherein the common cryptography system is an elliptic curve cryptography (ECC) system with a common generator (G) and the first node master public key (P1c) is determined based on elliptic curve point multiplication of the first node master private key (V1c) and the common generator (G) according to the following formula: P1c=V1c×G.

25. The method according to claim 1 , wherein: the method further comprises determining the deterministic key (DK) based on determining a hash of a message (M), and determining the first private key of the first node (V2C) is based on a scalar addition of the first node master private key (V1c) and the deterministic key (DK) according to the following formula: V2c=V1c+DK; and

determining the first public key of the second node (P2S) is based on the second node master public key (P1s) with elliptic curve point addition to elliptic curve point multiplication of the deterministic key (DK) and a common generator (G) according to the following formula: P2s=P1s+DK×G, where the deterministic key (DK) is based on determining a hash of a previous deterministic key.

26. A method of secure communication between a plurality of nodes, wherein the method comprises: sharing a first common secret among a plurality of nodes by:

determining, for at least one first node, a plurality of second common secrets, wherein each second common secret is common to said first node and a respective second node, is determined at said first node based on a first private key of the first node and a first public key of the respective second node, and is determined at the respective second node based on a first private key of the second node and a first public key of the first node,

wherein said first private key of the at least one said first node is determined based on at least a first node master private key (V1c) and a deterministic key (DK) common with the first node and respective second node, and

wherein said first public key of the respective second node (P2s) is determined based on a master public key (P1s) of the respective second node and encryption of the deterministic key (DK) using a cryptography system common to said plurality of nodes,

wherein a plurality of shares of the first common secret are each based on at least one respective second common secret such that said first common secret is accessible using a threshold number of said shares but is inaccessible using less than said threshold number of said shares;

determining, for at least one respective second node, at least one respective third common secret, wherein each respective third common secret is common to said respective second node and a respective third node, is determined at said respective second node based on of the first private key of the respective second node and a first public key of the respective third node, and is determined at the respective third node based on a first private key of the respective third node and the first public key of the respective second node, and wherein at least one share of the first common secret is based on at least one respective said respective third common secret;

encrypting, by at least one said first node, at least one share of said first common secret known to said first node based on a respective encryption key common to said first node and the said respective second node, wherein said encryption key is based on a respective said second common secret known to said first node and said respective second node;

sending at least one said encrypted share from said first node to said respective second node; and

receiving, by at least one said first node from at least one said respective second node, at least one respective share of said first common secret known to said respective second node and encrypted based on the respective encryption key common to said first node and said respective second node,

wherein said encryption key is based on the second common secret common to said first node and said respective second node, to enable said first node to access at least one share of said first common secret known to said respective second node,

wherein each node of said plurality of nodes access the first common secret in response to receiving a threshold number of encrypted shares of the first common secret from respective nodes of the plurality of the nodes;

determining a symmetric-key based on the first common secret;

encrypting a first communication message, with the symmetric-key, to an encrypted first communication message; and

sending, over a communications network, the encrypted first communication message from one node of said plurality of nodes to the other nodes of said plurality of nodes.

27. The method according to claim 26 , further comprising:

receiving, over a communications network, an encrypted second communication message from a node of said plurality of nodes; and

decrypting the encrypted second communication message, with the symmetric-key, to a second communication message.

28. A method of performing an online transaction between a plurality of nodes, wherein the method comprises:

sharing a first common secret among a plurality of nodes by:

determining, for at least one first node, a plurality of second common secrets, wherein each said second common secret is common to said first node and a respective second node, is determined at said first node based on a first private key of the first node and a first public key of the respective second node, and is determined at the respective second node based on a first private key of the second node and a first public key of the first node,

wherein said first private key of the at least one said first node is determined based on at least a first node master private key (V1c) and a deterministic key (DK) common with the first node and respective second node, and

wherein said first public key of the respective second node (P2s) is determined based on a master public key (P1s) of the respective second node and encryption of the deterministic key (DK) using a cryptography system common to said plurality of nodes,

wherein a plurality of shares of the first common secret are each based on at least one respective second common secret such that said first common secret is accessible using a threshold number of said shares but is inaccessible using less than said threshold number of said shares;

determining, for at least one respective second node, at least one respective third common secret, wherein each respective third common secret is common to said respective second node and a respective third node, is determined at said respective second node based on the first private key of the respective second node and a first public key of the respective third node, and is determined at the respective third node based on a first private key of the third node and the first public key of the second node, and wherein at least one share of the first common secret is based on at least one respective said third common secret;

encrypting, by at least one said first node, at least one share of said first common secret known to said first node based on a respective encryption key common to said first node and said respective second node,

wherein said respective encryption key is based on a respective said second common secret known to said first node and said respective second node;

sending at least one said encrypted share from said first node to said respective second node; and

receiving, by at least one said first node from at least one said respective second node, at least one respective share of said first common secret known to said respective second node and encrypted based on the respective encryption key common to said first node and said respective second node, wherein said respective encryption key is based on the second common secret common to said first node and said respective second node, to enable said first node to access at least one share of said first common secret known to said respective second node,

wherein each node of said plurality of nodes access the first common secret in response to receiving a threshold number of encrypted shares of the first common secret from respective nodes of the plurality of the nodes;

determining a symmetric-key based on the first common secret;

encrypting a first transaction message, with the symmetric-key, to an encrypted first transaction message; and

sending, over a communications network, the encrypted first transaction message from a first node of said plurality of nodes to other nodes of said plurality of nodes.

29. A system, comprising: a processor; and memory including executable instructions that, as a result of execution by the processor, causes the system to perform a method of sharing a first common secret among a plurality of nodes, wherein each node of said plurality of nodes is associated with a respective asymmetric cryptography first key pair having a respective first private key and a respective first public key of a cryptography system common to said plurality of nodes, and wherein the first common secret is based on the first private key of each node of said plurality of nodes, the method comprising:

determining, for at least one first node of said plurality of nodes, a plurality of second common secrets, wherein each said second common secret is common to said first node and a respective second node of said plurality of nodes, is determined at said first node based on the first private key of the first node and the first public key of the respective second node, and is determined at the second node based on the first private key of the respective second node and the first public key of the first node,

wherein said first private key of the at least one said first node is determined based on at least a first node master private key (V1c) and a deterministic key (DK) common with the first node and respective second node, and

wherein said first public key of the respective second node (P2s) is determined based on a master public key (P1s) of the respective second node and encryption of the deterministic key (DK) using the cryptography system common to said plurality of nodes,

wherein a plurality of shares of the first common secret are each based on at least one respective second common secret such that said first common secret is accessible using a threshold number of said shares but is inaccessible using less than said threshold number of said shares;

determining, for at least one respective second node, at least one respective third common secret, wherein each respective third common secret is common to said respective second node and a respective third node of said plurality of nodes, is determined at said respective second node based on the first private key of the second node and the first public key of the respective third node, and is determined at the respective third node based on the first private key of the respective third node and the first public key of the second node, and

wherein at least one share of the first common secret is based on at least one respective said third common secret;

encrypting, by at least one said first node, at least one share of said first common secret known to said first node, based on a respective encryption key common to said first node and a said respective second node,

wherein said encryption key is based on a respective said second common secret known to said first node and said respective second node;

sending at least one said encrypted share from said first node to said respective second node; and

receiving, by at least one said first node from at least one said respective second node, at least one respective share of said first common secret known to said respective second node and encrypted based on the respective encryption key common to said first node and said respective second node,

wherein said respective encryption key is based on the respective second common secret common to said first node and said respective second node, to enable said first node to access at least one share of said first common secret known to said respective second node, wherein each node of said plurality of nodes access the first common secret in response to receiving a threshold number of encrypted shares of the first common secret from respective nodes of the plurality of the nodes.

30. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to perform a method of sharing a first common secret among a plurality of nodes,

wherein each node of said plurality of nodes is associated with a respective asymmetric cryptography first key pair having a respective first private key and a respective first public key of a cryptography system common to said plurality of nodes, and wherein the first common secret is based on the first private key of each node of said plurality of nodes, the method comprising:

determining, for at least one first node of said plurality of nodes, a plurality of second common secrets, wherein each said second common secret is common to said first node and a respective second node of the plurality of nodes, is determined at said first node based on the first private key of the first node and the first public key of the respective second node, and is determined at the respective second node based on the first private key of the respective second node and the first public key of the first node,

wherein said first private key of the at least one said first node is determined based on at least a first node master private key (V1c) and a deterministic key (DK) common with the first node and respective second node, and

wherein said first public key of the respective second node (P2s) is determined based on a master public key (P1s) of the respective second node and encryption of the deterministic key (DK) using the cryptography system common to said plurality of nodes,

wherein a plurality of shares of the first common secret are each based on at least one respective second common secret such that said first common secret is accessible using a threshold number of said shares but is inaccessible using less than said threshold number of said shares;

determining, for at least one respective second node, at least one respective third common secret, wherein each respective third common secret is common to said respective second node and a respective third node of the plurality of nodes, is determined at said respective second node based on the first private key of the respective second node and the first public key of the respective third node, and is determined at the respective third node based on the first private key of the respective third node and the first public key of the respective second node, and wherein at least one share of the first common secret is based on at least one respective said third common secret;

encrypting, by at least one said first node, at least one share of said first common secret known to said first node based on a respective encryption key common to said first node and said respective second node, wherein said encryption key is based on said second common secret known to said first node and said respective second node;

sending at least one said encrypted share from said first node to the respective said respective second node; and

receiving, by at least one said first node from at least one said respective second node, at least one respective share of said first common secret known to said respective second node and encrypted based on the respective encryption key common to said first node and said respective second node, wherein said respective encryption key is based on the respective second common secret common to said first node and said respective second node, to enable said first node to access at least one share of said first common secret known to said respective second node,

wherein each node of said plurality of nodes access the first common secret in response to receiving a threshold number of encrypted shares of the first common secret from respective nodes of the plurality of the nodes.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2023
From: NCHAIN HOLDINGS LTD
To: NCHAIN LICENSING AG
Reel/Frame 062512/0659 →
CHANGE OF NAME Recorded Jan 25, 2023
From: NCHAIN HOLDINGS LTD
To: NCHAIN LICENSING AG
Reel/Frame 062512/0664 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2021
From: WRIGHT, CRAIG STEVEN
To: NCHAIN HOLDINGS LTD.
Reel/Frame 058218/0001 →
Priority Claims (1)
GB 1815396 · Sep 21, 2018 · national
Continuity (1)
Related Publication 20210367772A1 · Nov 25, 2021