IP Library Granted Patent US 9,219,604
Granted Patent B2
US 9,219,604 · App. 13/449,950 · Granted Dec 22, 2015

Generating an encrypted message for storage

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 9,219,604
App. No.
13/449,950
Granted
Dec 22, 2015
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module generating a shared secret key from a public key of another entity and a private key using a first modulo prime polynomial function, wherein a public key is generated from the private key using a second modulo prime polynomial function and wherein the public key of the other entity is derived using the second modulo prime polynomial function on a private key of the other entity. The method continues with the DS module encrypting a message using the shared secret key to produce an encrypted message. The method continues with the DS module outputting the encrypted message to the other entity.

Claims (131)

1. A method for execution by a processing module of a first computing device, the method comprises:

obtaining, by the processing module, a second public key of a second computing device, wherein the second public key is part of a second public/private key pair of the second computing device;

receiving, by the processing module, an encrypted secret exponent from the second computing device, wherein a secret exponent was encrypted using a shared secret key;

determining, by the processing module, the shared secret key based on the second public key and a first private key of the first computing device using a first modulo prime polynomial function, wherein a first public key of the first computing device is generated from the first private key using a second modulo prime polynomial function and wherein the second public key is derived using the second modulo prime polynomial function on a second private key of the second public/private key pair;

decrypting, by the processing module, the encrypted secret exponent using the shared secret key to recover the secret exponent;

generating, by the processing module, an encryption key based on the secret exponent and a password;

encrypting, by the processing module, a message using the encryption key to produce an encrypted message; and

outputting, by the processing module, the encrypted message to the second computing device, wherein the second computing device generates the encryption key based on the secret exponent and the password.

2. The method of claim 1 further comprises:

generating, the first public key using the second modulo prime polynomial function by:

generating a primitive root polynomial “g”;

generating a prime “p”; and

generating the first public key as a modulo “p” of “g” raised to a power of the first private key;

wherein the second public key was generated by the second computing device by:

generating the primitive root polynomial “g”;

generating the prime “p”; and

generating the second public key as the modulo “p” of “g” raised to the power of the second private key.

3. The method of claim 1 , wherein the generating the shared secret key comprises:

obtaining a prime “p”; and

generating the shared secret key as a modulo “p” of the second public key raised to a power of the first private key.

4. The method of claim 1 , wherein the generating the shared secret key comprises:

obtaining a prime “p”;

obtaining a constant “K”;

generating a shared secret as a modulo “p” of the second public key of the other entity raised to a power of the first private key; and

generating the shared secret key based on the constant K and the shared secret.

5. The method of claim 1 , wherein the encrypting the message comprises:

encoding data in accordance with an encoding function to produce a set of encoded shares;

for an encoded share of the set of encoded shares:

generating the encryption key utilizing a mask generating function (MGF) in accordance with a formula of the encryption key equaling (MGF(the password) 2 ) secret exponent modulo a prime “p”;

encrypting the encoded share utilizing the encryption key to produce an encrypted share; and

generating the message as a parameter package that includes the encrypted share and the secret exponent.

6. The method of claim 1 , wherein generating the shared secret key comprises:

outputting a key agreement request to the second computing device, wherein the key agreement request includes a primitive root polynomial “g”, a prime “p”, and the first public key; and

receiving a key agreement response from the second computing device, wherein the key agreement response includes the second public key and authentication information.

7. A method for execution by a processing module of a first computing device, the method comprises:

receiving, by the processing module, an encrypted message from a second computing device, wherein the second computing device encrypted a message using an encryption key to produce the encrypted message, and wherein the second computing device generated the encryption key based on a secret exponent and a password;

receiving, by the processing module, an encrypted secret exponent, wherein the secret exponent is encrypted using a shared secret key, wherein the shared secret key is generated by the second computing device using a first modulo prime polynomial function on a first public key of the first computing device and a second private key of the second computing device;

obtaining, by the processing module, a second public key of the second computing device, wherein the second public key is part of a second public/private key pair of the second computing device;

generating, by the processing module, the shared secret key from the second public key and a first private key of the first computing device using the first modulo prime polynomial function, wherein the first public key is generated from the first private key using a second modulo prime polynomial function;

decrypting, by the processing module, the encrypted secret exponent using the shared secret key to produce a decrypted secret exponent;

generating, by the processing module, the encryption key based on the decrypted secret exponent and the password; and

decrypting, by the processing module, the encrypted message using the encryption key to recapture a message.

8. The method of claim 7 further comprises:

generating, the first public key using the second modulo prime polynomial function by:

generating a primitive root polynomial “g”;

generating a prime “p”; and

generating the first public key as a modulo “p” of “g” raised to a power of the first private key;

wherein the second public key was generated by the second computing device by:

generating the primitive root polynomial “g”;

generating the prime “p”; and

generating the second public key as the modulo “p” of “g” raised to the power of the second private key.

9. The method of claim 7 , wherein the generating the shared secret key comprises:

obtaining a prime “p”; and

generating the shared secret key as a modulo “p” of the public key of the second computing device raised to a power of the second private key.

10. The method of claim 7 , wherein the generating the shared secret key comprises:

obtaining a prime “p”;

obtaining a constant “K”;

generating a shared secret as a modulo “p” of the second public key raised to a power of the first private key; and

generating the shared secret key based on the constant K and the shared secret.

11. The method of claim 7 further comprises:

verifying the message; and

when the message is verified, storing at least a portion of the message.

12. A dispersed storage (DS) module comprises:

a first module, when operable within a first computing device, causes the first computing device to:

obtain a second public key of a second computing device, wherein the second public key is part of a second public/private key pair of the second computing device;

receive an encrypted secret exponent from the second computing device, wherein a secret exponent was encrypted using a shared secret key;

determine the shared secret key from the second public key and a first private key of the computing device using a first modulo prime polynomial function, wherein a first public key of the first computing device is generated from the first private key using a second modulo prime polynomial function and wherein the second public key is derived using the second modulo prime polynomial function on a second private key of the second public/private key pair;

a second module, when operable within the first computing device, causes the first computing device to:

decrypt the encrypted secret exponent using the shared secret key to recover the secret exponent;

generate an encryption key based on the secret exponent and a password;

encrypt a message using the encryption key to produce an encrypted message; and

a third module, when operable within the first computing device, causes the first computing device to:

output the encrypted message to the second computing device, wherein the second computing device generates the encryption key based on the secret exponent and the password.

13. The DS module of claim 12 further comprises:

the first module, when operable within the first computing device, causes the first computing device to further generate the first public key using the second modulo prime polynomial function by:

generating a primitive root polynomial “g”;

generating a prime “p”; and

generating the first public key as a modulo “p” of “g” raised to a power of the first private key;

wherein the second public key was generated by the second computing device by:

generating the primitive root polynomial “g”;

generating the prime “p”; and

generating the second public key as the modulo “p” of “g” raised to the power of the second private key.

14. The DS module of claim 12 , wherein the first module functions to generate the shared secret key by:

obtaining a prime “p”; and

generating the shared secret key as a modulo “p” of the second public key raised to a power of the first private key.

15. The DS module of claim 12 , wherein the first module further functions to generate the shared secret key by:

obtaining a prime “p”;

obtaining a constant “K”;

generating a shared secret as a modulo “p” of the second public key raised to a power of the first private key; and

generating the shared secret key based on the constant K and the shared secret.

16. The DS module of claim 12 , wherein the second module functions to encrypt the message by:

encoding data in accordance with an encoding function to produce a set of encoded shares;

for an encoded share of the set of encoded shares:

generating the encryption key utilizing a mask generating function (MGF) in accordance with a formula of the encryption key equaling (MGF(the password) 2 ) secret exponent modulo a prime “p”;

encrypting the encoded share utilizing the encryption key to produce an encrypted share; and

generating the message as a parameter package that includes the encrypted share and the secret exponent.

17. The DS module of claim 12 , wherein the first module further functions to generate the shared secret key by:

outputting a key agreement request to the second computing device, wherein the key agreement request includes a primitive root polynomial “g”, a prime “p”, and the first public key; and

receiving a key agreement response from the second computing device, wherein the key agreement response includes the second public key and authentication information.

18. A dispersed storage (DS) module comprises:

a first module, when operable within a first computing device, causes the first computing device to:

receive an encrypted message from a second computing device, wherein the second computing device encrypted a message using an encryption key to produce the encrypted message, and wherein the second computing device generated the encryption key based on a secret exponent and a password;

receive an encrypted secret exponent, wherein the secret exponent is encrypted using a shared secret key, wherein the shared secret key is generated by the second computing device using a first modulo prime polynomial function on a first public key of the first computing device and a second private key of the second computing device; and

obtain a second public key of the second computing device, wherein the secret public key is part of a second public/private key pair of the second computing device;

a second module, when operable within the first computing device, causes the first computing device to:

generate the shared secret key from the second public key and a first private key of the first computing device using the first modulo prime polynomial function, wherein the first public key is generated from the first private key using a second modulo prime polynomial function; and

a third module, when operable within the first computing device, causes the first computing device to:

decrypt the encrypted secret exponent using the shared secret key to produce a decrypted secret exponent;

generate the encryption key based on the decrypted secret exponent and the password; and

decrypt the encrypted message using the encryption key to recapture a message.

19. The DS module of claim 18 further comprises:

the second module, when operable within the first computing device, causes the first computing device to further generate the first public key using the second modulo prime polynomial function by:

generating a primitive root polynomial “g”;

generating a prime “p”; and

generating the first public key as a modulo “p” of “g” raised to a power of the first private key;

wherein the second public key was generated by the second computing device by:

generating the primitive root polynomial “g”;

generating the prime “p”; and

generating the second public key as the modulo “p” of “g” raised to the power of the second private key.

20. The DS module of claim 18 , wherein the second module functions to generate the shared secret key by:

obtaining a prime “p”; and

generating the shared secret key as a modulo “p” of the second public key raised to a power of the first private key.

21. The DS module of claim 18 , wherein the second module functions to generate the shared secret key by:

obtaining a prime “p”;

obtaining a constant “K”;

generating a shared secret as a modulo “p” of the second public key raised to a power of the first private key; and

generating the shared secret key based on the constant K and the shared secret.

22. The DS module of claim 18 further comprises:

a fourth module, when operable within the first computing device, causes the first computing device to:

verify the message; and

when the message is verified, store at least a portion of the message.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2012
From: RESCH, JASON K.; LEGGETTE, WESLEY
To: CLEVERSAFE, INC.
Reel/Frame 028068/0983 →