IP Library › Granted Patent US 11,558,188
Granted Patent B2
US 11,558,188 · App. 17/560,736 · Granted Jan 17, 2023

Methods for secure data storage

Inventor: Amir Keyvan Khandani (Kitchener, CA)
Assignee: Amir Keyvan Khandani
H04L9/0869G06F21/62H04L9/085H04L9/0858H04L9/0875H04L9/0891H04L9/0897H04L63/0478H04L63/06H04L63/0853H04L63/0861H04L63/0869H04L63/0876
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,558,188
App. No.
17/560,736
Granted
Jan 17, 2023
Kind
B2
Abstract

Embodiments include a method for secure data storage including constructing an encryption key from a plurality of key elements, the constructing including distributing the plurality of key elements to a plurality of key maintenance entities, each of the plurality of key maintenance entities employing a plurality of independent safe guards for their respective key elements of the plurality of key elements; and requiring access to the plurality of key elements to construct the encryption key. The method includes receiving a subset of the plurality of key elements via a twice-encrypted communications channel; and regenerating the encryption key at the client node; and after encrypting data, deleting the subset of the plurality of key elements received over the twice-encrypted communications channel, retaining any of the plurality of key elements previously stored at the client node.

Claims (72)

1. A method comprising:

transmitting, by a first node, N data packets between the first node and a second node;

measuring, by the first node, N first travel times for the N data packets within a first loop from the first node to the second node and back to the first node;

determining, by the first node, N first-node bits based on the N first travel times;

receiving, from the second node, M second-node error-detection bits and K second-node parity bits, wherein the M second-node error-detection bits and the K second-node parity bits are derived from N second-node bits based on a second loop from the second node to the first node and back to the second node, wherein the M second-node error-detection bits are generated from a one-way function applied to the N second-node bits;

combining the N first-node bits and the K second-node parity bits into a candidate code word;

decoding the candidate code word into N corrected first-node bits;

applying the one-way function to the N corrected first-node bits to generate M first-node error-detection bits;

responsive to detecting that the M first-node error-detection bits match the M second-node error-detection bits, utilizing at least some of the N corrected first-node bits to generate an encryption key;

exchanging secure communications with the second node utilizing the encryption key;

where N, M, and K are integer values.

2. The method of claim 1 , wherein determining the N first-node bits comprises:

determining an average travel time for the N first travel times;

assigning a bit value of 1 for each of the N data packets having a first travel time larger than the average travel time and assigning a bit value of 0 for each of the N data packets having a first travel time less than the average travel time, resulting in the N first-node bits.

3. The method of claim 1 , wherein the M second-node error-detection bits and the K second-node parity bits are derived from N second-node bits based on N second travel times for the N data packets within the second loop from the second node to the first node and back to the second node.

4. The method of claim 1 , further comprising deriving initial M first-node error-detection bits and K first-node parity bits from the N first-node bits based on the N first travel times for the N data packets within the first loop and transmitting the initial M first-node error-detection bits and the K first-node parity bits to the second node.

5. The method of claim 1 , further comprising:

receiving, from the second node, additional M second-node error-detection bits and additional K second-node parity bits, wherein the additional M second-node error-detection bits and the additional K second-node parity bits are derived from the N second-node bits based on the second loop, wherein the additional M second-node error-detection bits are generated from the one-way function applied to the N second-node bits;

combining the N first-node bits and the additional K second-node parity bits into a second candidate code word;

decoding the second candidate code word into additional N corrected first-node bits;

applying the one-way function to the additional N corrected first-node bits to generate additional M first-node error-detection bits;

responsive to detecting that the additional M first-node error-detection bits match the additional M second-node error-detection bits, utilizing at least some of the N corrected first-node bits to generate the encryption key.

6. The method of claim 1 , wherein a first part of the K second-node parity bits is received in a first message and a second part of the K second-node parity bits is received in a second message.

7. The method of claim 1 , further comprising:

generating reliability values for the N first-node bits;

selecting a subset of the N first-node bits that are more reliable based on the reliability values;

sending indices of the selected subset to the second node; and

generating the encryption key based on the selected subset.

8. The method of claim 1 , further comprising utilizing a predetermined hash function to select a subset of the N first-node bits to generate the encryption key.

9. The method of claim 1 , further comprising:

routing the first loop and the second loop through one or more relay nodes; and

measuring travel times through a plurality of routed first loops and a plurality of second loops, each measured travel time corresponding to a different route between the first node and the second node.

10. The method of claim 1 , further comprising:

transmitting a plurality of data packets from the first node to the second node, each of the plurality of data packets holding pseudo-random data; and

receiving, by the first node, a plurality of indices identifying successfully received data packets of the plurality of data packets.

11. An apparatus comprising:

a processor; and

a non-transitory computer-readable medium having stored instructions that are operative, when executed by the processor, to:

transmit, by a first node, N data packets between the first node and a second node;

measure, by the first node, N first travel times for the N data packets within a first loop from the first node to the second node and back to the first node;

determine, by the first node, N first node bits based on the N first travel times;

receive, from the second node, M second node error-detection bits and K second-node parity bits, wherein the M second-node error-detection bits and the K second-node parity bits are derived from N second-node bits based on a second loop from the second node to the first node and back to the second node, wherein the M second-node error-detection bits are generated from a one-way function applied to the N second-node bits;

combine the N first-node bits and the K second-node parity bits into a candidate code word;

decode the candidate code word into N corrected first-node bits;

apply the one-way function to the N corrected first-node bits to generate M first-node error-detection bits;

responsive to detecting that the M first-node error-detection bits match the M second-node error-detection bits, utilize at least some of the N corrected first-node bits to generate an encryption key;

exchange secure communications with the second node utilizing the encryption key;

where N, M, and K are integer values.

12. The apparatus of claim 11 , wherein determining the N first-node bits comprises:

determining an average travel time for the N first travel times;

assigning a bit value of 1 for each of the N data packets having a first travel time larger than the average travel time and assigning a bit value of 0 for each of the N data packets having a first travel time less than the average travel time, resulting in the N first-node bits.

13. The apparatus of claim 11 , wherein the M second-node error-detection bits and the K second-node parity bits are derived from N second-node bits based on N second travel times for the N data packets within the second loop from the second node to the first node and back to the second node.

14. The apparatus of claim 11 , wherein the instructions are further operative to derive initial M first-node error-detection bits and K first-node parity bits from the N first-node bits based on the N first travel times for the N data packets within the first loop and transmitting the initial M first-node error-detection bits and the K first-node parity bits to the second node.

15. The apparatus of claim 11 , wherein the instructions are further operative to:

receive, from the second node, additional M second-node error-detection bits and additional K second-node parity bits, wherein the additional M second-node error-detection bits and the additional K second-node parity bits are derived from the N second-node bits based on the second loop, wherein the additional M second-node error-detection bits are generated from the one-way function applied to the N second-node bits;

combine the N first-node bits and the additional K second-node parity bits into a second candidate code word;

decode the second candidate code word into additional N corrected first-node bits;

apply the one-way function to the additional N corrected first-node bits to generate additional M first-node error-detection bits;

responsive to detecting that the additional M first-node error-detection bits match the additional M second-node error-detection bits, utilize at least some of the N corrected first-node bits to generate the encryption key.

16. The apparatus of claim 11 , wherein a first part of the K second-node parity bits is received in a first message and a second part of the K second-node parity bits is received in a second message.

17. The apparatus of claim 11 , wherein the instructions are further operative to:

generate reliability values for the N first-node bits;

select a subset of the N first-node bits that are more reliable based on the reliability values;

send indices of the selected subset to the second node; and

generate the encryption key based on the selected subset.

18. The apparatus of claim 11 , wherein the instructions are further operative to utilize a predetermined hash function to select a subset of the N first-node bits to generate the encryption key.

19. The apparatus of claim 11 , wherein the instructions are further operative to:

route the first loop and the second loop through one or more relay nodes; and

measure travel times through a plurality of routed first loops and a plurality of second loops, each measured travel time corresponding to a different route between the first node and the second node.

20. The apparatus of claim 11 , wherein the instructions are further operative to:

transmit a plurality of data packets from the first node to the second node, each of the plurality of data packets holding pseudo-random data; and

receive, by the first node, a plurality of indices identifying successfully received data packets of the plurality of data packets.

Continuity (6)
Continuation 16152284 · Oct 4, 2018
Provisional Application 62740792 · Oct 3, 2018
Provisional Application 62675611 · May 23, 2018
Provisional Application 62573139 · Oct 16, 2017
Provisional Application 62568191 · Oct 4, 2017
Related Publication 20220116210A1 · Apr 14, 2022
Cited By (1)
US 12,284,203