IP Library › Granted Patent US 11,552,795
Granted Patent B2
US 11,552,795 · App. 15/994,334 · Granted Jan 10, 2023

Key recovery

Inventors: Ankur Patel (Sammamish, WA); Daniel James Buchner (Los Gatos, CA)
Assignee: Microsoft Technology Licensing, LLC
H04L9/0894G06F16/24578G06F16/907G06F16/9014G06F21/33G06F21/45G06F21/6218G06Q20/3674G06Q20/3821G06Q20/3829H04L9/0637H04L9/083H04L9/0869H04L9/0891H04L9/14H04L9/30H04L9/321H04L9/3236H04L9/3239H04L9/3247H04L63/08H04L63/102H04L63/20G06F2221/2131G06F2221/2141H04L9/50
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,552,795
App. No.
15/994,334
Granted
Jan 10, 2023
Kind
B2
Abstract

Generating a private key recovery seed based on random words extracted from an input memory of a user and using the recovery seed to recover the private key. An input that is related to a specific memory of a user is received. The specific memory was previously entered and used to generate random words that are related to each other by being included in the specific memory. The random words are extracted from the received input. The random words are associated with a first private key recovery mechanism for recovering a private key. The random words are input into the first private key recovery mechanism to generate a recovery seed. The recovery seed is input into a second private key recovery mechanism. The second private key recovery mechanism generates a recovered private key upon performing a recovery operation on the private key recovery seed.

Claims (71)

1. A computing system comprising:

one or more processors; and

one or more hardware computer-readable media devices having thereon computer-executable instructions that are structured such that, when executed by the one or more processors, cause the computing system to:

receive an input from a user who is an owner of a decentralized identifier, the input being related to a specific memory of the user and having been previously entered by the user to generate a predetermined number of random words that are related to each other by being included in the specific memory of the user, the predetermined number of random words being used to generate a seed, which is then used to generate a private key and a public key pair associated with the decentralized identifier, and the public key being recorded on a distributed ledger, and the private key and data recorded on the distributed ledger being used to authenticate that the user is the owner of the decentralized identifier;

extract from the received input the predetermined number of random words that are related to each other by being included in the specific memory of the user such that the user does not need to enter any random words that are not related to the specific memory to recover a private key, the random words being associated with a first private key recovery mechanism for recovering the private key;

input the predetermined number of random words into the first key recovery mechanism to thereby generate a private key recovery seed; and

input at least the private key recovery seed into a second private key recovery mechanism, the second private key recovery mechanism generating a recovered private key upon performing a recovery operation on the private key recovery seed, the recovered private key being same as the private key associated with the decentralized identifier, and configured to be used with data recorded on the distributed ledger to authenticate that the user is the owner of the decentralized identifier.

2. The computing system in accordance with claim 1 , wherein the first key recovery mechanism is configured to:

generate a plurality of random bits;

divide the plurality of random bits into a plurality of segments; and

associate each of the predetermined number of random words with a specific segment of the plurality of segments.

3. The computing system in accordance with claim 1 , wherein definite articles, indefinite articles, and prepositions are not included in the generated predetermined number of random words that are related to the specific memory of the user.

4. The computing system in accordance with claim 1 , wherein the computer-executable instructions are structured to further cause the computing system to:

generate one or more public keys based on the recovered private key.

5. The computing system in accordance with claim 1 , wherein the computing system includes a voice recognition module and wherein the computer-executable instructions are structured to further cause the computing system to:

receive the input from the user that is related to the specific memory of the user via the input being spoken by the user into the computing system; and

use the voice recognition module to compare the input from the user with the input entered previously to generate the random words to determine if there is a match of the voice that entered the input both times,

wherein the computing system only recovers the private key if there is a match of the voices.

6. The computing system in accordance with claim 1 , wherein the computer-executable instructions are structured to further cause the computing system to:

count the number of random words that are extracted from the input of the user that is related to the specific memory of the user; and

determine if the number of extracted random words is at least equal to a predetermined number of random words that is indicative that the input is received from the same user who previously entered in input to generate the predetermined number of random words,

wherein the computing system only recovers the private key if the number of extracted random words at least equals the predetermined number of random words.

7. The computing system in accordance with claim 6 , wherein the predetermined number of random words is based on a predetermined threshold.

8. The computing system in accordance with claim 1 , wherein the computer-executable instructions are structured to further cause the computing system to:

generate a first number of the predetermined number of random words from the input of the user that is related to the specific memory of the user, the first number of random words being higher than a second number of random words that are required by the first private key recovery mechanism to generate the private key recovery seed, wherein any combination of the first number of random words that is equal to the second number of random words is useable by the first private key recovery mechanism to generate the private key recovery seed;

count the number of random words that are extracted from the input of the user that is related to the specific memory of the user; and

determine if the number of extracted random words is at least equal to the second number of random words and if the extracted words are all random words included in the first number of random words.

9. The computing system in accordance with claim 1 , wherein the computer-executable instructions are structured to further cause the computing system to:

analyze a first pattern of the input of the user that is related to the specific memory of the user at a time the predetermined number of random words are generated;

analyze a second pattern of the of the input of the user that is related to the specific memory of the user at the time the predetermined number of random words are extracted from the input; and

compare the first and second patterns to determine if the patterns substantially close to each other;

wherein the computing system only recovers the private key if the first and second patterns are substantially close to each other.

10. A method for generating a private key recovery seed based on random words extracted from an input memory of a user and for using the private key recovery seed to recover the private key, the method comprising:

receiving an input from a user who is an owner of a decentralized identifier, the input being related to a specific memory of the user and having been previously entered by the user to generate a predetermined number of random words that are related to each other by being included in the specific memory of the user, the predetermined number of random words being used to generate a seed, which is then used to generate a private key and a public key par associated with the decentralized identifier, and the public key being recorded on a distributed ledger, and the private key and data recorded on the distributed ledger being used to authenticate that the user is the owner of the decentralized identifier;

extracting from the received input the predetermined number of random words that are related to each other by being included in the specific memory of the user such that the user does not need to enter any random words that are not related to the specific memory to recover a private key, the random words being associated with a first private key recovery mechanism for recovering the private key;

inputting the predetermined number of random words into the first key recovery mechanism to thereby generate a private key recovery seed; and

inputting at least the private key recovery seed into a second private key recovery mechanism, the second private key recovery mechanism generating a recovered private key upon performing a recovery operation on the private key recovery seed, the recovered private key being same as the private key associated with the decentralized identifier, and configured to be used with data recorded on the distributed ledger to authenticate that the user is the owner of the decentralized identifier.

11. The method in accordance with claim 10 , further comprising:

generating a plurality of random bits;

dividing the plurality of random bits into a plurality of segments; and

associating each of the predetermined number of random words with a specific segment of the plurality of segments.

12. The method in accordance with claim 10 , wherein definite articles, indefinite articles, and prepositions are not included in the generated predetermined number of random words that are related to the specific memory of the user.

13. The method in accordance with claim 10 , further comprising:

generating one or more public keys based on the recovered private key.

14. The method in accordance with claim 10 , further comprising:

receiving the input from the user that is related to the specific memory of the user via the input being spoken by the user; and

using voice recognition to compare the input from the user with the input entered previously to generate the random words to determine if there is a match of the voice that entered the input both times,

wherein the private key is only recovered if there is a match of the voices.

15. The method in accordance with claim 10 , further comprising:

counting the number of random words that are extracted from the input of the user that is related to the specific memory of the user; and

determining if the number of extracted random words is at least equal to a predetermined number of random words that is indicative that the input is received from the same user who previously entered in input to generate the predetermined number of random words,

wherein the private key is only recovered if the number of extracted random words at least equals the predetermined number of random words.

16. The method in accordance with claim 15 , wherein the predetermined number of random words is based on a predetermined threshold.

17. The method in accordance with claim 10 , further comprising:

generating a first number of the predetermined number of random words from the input of the user that is related to the specific memory of the user, the first number of random words being higher than a second number of random words that are required by the first private key recovery mechanism to generate the private key recovery seed, wherein any combination of the first number of random words that is equal to the second number of random words is useable by the first private key recovery mechanism to generate the private key recovery seed;

counting the number of random words that are extracted from the input of the user that is related to the specific memory of the user; and

determining if the number of extracted random words is at least equal to the second number of random words and if the extracted words are all random words included in the first number of random words.

18. The method in accordance with claim 10 , further comprising:

analyzing a first pattern of the input of the user that is related to the specific memory of the user at a time the predetermined number of random words are generated;

analyzing a second pattern of the of the input of the user that is related to the specific memory of the user at the time the predetermined number of random words are extracted from the input; and

comparing the first and second patterns to determine if the patterns substantially close to each other;

wherein the private key is only recovered if the first and second patterns are substantially close to each other.

19. A computer program product comprising one or more hardware computer-readable storage media devices having thereon computer-executable instructions that are structured such that, when executed by one or more processors of a computing system, cause the computing system to generate a private key recovery seed based on random words extracted from an input memory of a user and use the private key recovery seed to recover the private key, the computing system caused to:

receive an input from a user who is an owner of a decentralized identifier, the input being related to a specific memory of the user and having been previously entered by the user to generate a predetermined number of random words that are related to each other by being included in the specific memory of the user, the predetermined number of random words being used to generate a seed, which is then used to generate a private key and a public key pair associated with the decentralized identifier, and the public key being recorded on a distributed ledger, and the private key and data recorded on the distributed ledger being used to authenticate that the user is the owner of the decentralized identifier;

extract from the received input the predetermined number of random words that are related to each other by being included in the specific memory of the user such that the user does not need to enter any random words that are not related to the specific memory to recover a private key, the random words being associated with a first private key recovery mechanism for recovering the private key;

input the predetermined number of random words into the first key recovery mechanism to thereby generate a private key recovery seed; and

input at least the private key recovery seed into a second private key recovery mechanism, the second private key recovery mechanism generating a recovered private key upon performing a recovery operation on the private key recovery seed, the recovered private key being same as the private key associated with the decentralized identifier, and configured to be used with data recorded on the distributed ledger to authenticate that the user is the owner of the decentralized identifier.

20. The computer program product in accordance with claim 19 , the computing system further caused to:

generate a plurality of random bits;

divide the plurality of random bits into a plurality of segments; and

associate each of the predetermined number of random words with a specific segment of the plurality of segments.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: BUCHNER, DANIEL JAMES; PATEL, ANKUR
To: MICROSOFT TECHNOLOGY LICENSING, LLC.
Reel/Frame 046644/0708 →
Continuity (3)
Provisional Application 62626564 · Feb 5, 2018
Provisional Application 62620300 · Jan 22, 2018
Related Publication 20190229909A1 · Jul 25, 2019