IP Library Granted Patent US 10,735,384
Granted Patent B2
US 10,735,384 · App. 15/649,929 · Granted Aug 4, 2020

Techniques for key ratcheting with multiple step sizes

Inventors: Derek Alan Konigsberg (Mountain View, CA); George Nachman (Sunnyvale, CA); Chun Wing Yuen (Foster City, CA); Ehren Andrew Kret (Sunnyvale, CA)
Assignee: WHATSAPP INC.
H04L63/0435G06F21/606H04L9/0861H04L63/0869H04W12/02H04L9/32H04L63/061H04L63/065H04L63/126H04L2209/38
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 10,735,384
App. No.
15/649,929
Granted
Aug 4, 2020
Kind
B2
Abstract

Techniques for key ratcheting with multiple step sizes are described. For example, an apparatus may be configured to receive two or more encrypted messages, where the encrypted messages are encrypted according to a multi-dimensional ratcheting encryption scheme. Moreover, the apparatus may be configured to determine which of the encrypted messages was most-recently received and extract a message iteration count from the most-recent encrypted message, generate a decrypted message by decrypting the encrypted message based on a decryption key, decompose the message iteration count into a plurality of message chain key iteration counts, and determine the decryption key based on the plurality of message chain key iteration counts.

Claims (61)

1. A computer-implemented method, comprising:

receiving a first encrypted message and a second encrypted message, the first and second encrypted messages encrypted according to a multi-dimensional ratcheting encryption scheme;

determining, via at least one processor, which of the first encrypted message or the second encrypted message is a most-recent message;

discarding, via the at least one processor, the first encrypted message and skipping decryption of the first encrypted message based at least in part on the determination that the second encrypted message is the most-recent message;

extracting, via the at least one processor, a message iteration count for the second encrypted message;

decomposing, via the at least one processor, the message iteration count into a plurality of message chain key iteration counts;

determining, by the at least one processor, a decryption key based on the plurality of message chain key iteration counts; and

generating, by the at least one processor, a decrypted message by decrypting the second encrypted message based on the decryption key.

2. The method of claim 1 , the decryption key based on a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, wherein the plurality of dimensions empowers variable-step advancement of the plurality of client chain keys.

3. The method of claim 2 , wherein variable-step advancement of the plurality of client chain keys corresponds to discarding one or more encrypted messages, the one or more encrypted messages including the first encrypted message.

4. The method of claim 1 , further comprising:

retrieving a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts;

determining that the plurality of client chain key iteration counts equals the plurality of message chain key iteration counts;

determining the decryption key as a highest-dimension client chain key of the plurality of client chain keys; and

advancing two or more client chain keys of the plurality of client chain keys in response to decrypting the second encrypted message where a highest-dimension client chain key iteration count corresponding to the highest-dimension client chain key is equal to a maximum chain key iteration value.

5. The method of claim 1 , further comprising:

retrieving a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts;

determining that a client iteration count is less than the message iteration count, the client iteration count corresponding to a composition of the plurality of client chain key iteration counts;

generating a plurality of ratcheted client chain keys by advancing the plurality of client chain keys based on a iteration distance between the client iteration count and the message iteration count; and

determining the decryption key as a highest-dimension ratcheted client chain key of the plurality of ratcheted client chain keys.

6. The method of claim 5 , wherein advancing the plurality of client chain keys comprises regenerating a higher-dimension client chain key based on advancing a lower-dimension client chain key, wherein regenerating the higher-dimension client chain key skips over one or more allowed iteration counts of the higher-dimension client chain key.

7. An apparatus, comprising:

at least one processor for executing stored instructions to:

receive a first encrypted message and a second encrypted message, the first and second encrypted messages encrypted according to a multi-dimensional ratcheting encryption scheme;

determine which of the first encrypted message or the second encrypted message is a most-recent message;

discard the first encrypted message and skip decryption of the first encrypted message based at least in part on the determination that the second encrypted message is the most-recent message;

extract a message iteration count for the second encrypted message;

decompose the message iteration count into a plurality of message chain key iteration counts; and

determine the decryption key based on the plurality of message chain key iteration counts; and

generate a decrypted message by decrypting the second encrypted message based on a decryption key.

8. The apparatus of claim 7 , the decryption key based on a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, wherein the plurality of dimensions empowers variable-step advancement of the plurality of client chain keys.

9. The apparatus of claim 8 , wherein variable-step advancement of the plurality of client chain keys corresponds to discarding one or more encrypted messages, the one or more encrypted messages including the first encrypted message.

10. The apparatus of claim 7 , further comprising:

the key management component operative to retrieve a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts; determine that the plurality of client chain key iteration counts equals the plurality of message chain key iteration counts; determine the decryption key as a highest-dimension client chain key of the plurality of client chain keys; and advance two or more client chain keys of the plurality of client chain keys in response to decrypting the second encrypted message where a highest-dimension client chain key iteration count corresponding to the highest-dimension client chain key is equal to a maximum chain key iteration value.

11. The apparatus of claim 7 , further comprising:

the key management component operative to retrieve a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts; determine that a client iteration count is less than the message iteration count, the client iteration count corresponding to a composition of the plurality of client chain key iteration counts; generate a plurality of ratcheted client chain keys by advancing the plurality of client chain keys based on a iteration distance between the client iteration count and the message iteration count; and determine the decryption key as a highest-dimension ratcheted client chain key of the plurality of ratcheted client chain keys.

12. The apparatus of claim 11 , wherein advancing the plurality of client chain keys comprises regenerating a higher-dimension client chain key based on advancing a lower-dimension client chain key, wherein regenerating the higher-dimension client chain key skips over one or more allowed iteration counts of the higher-dimension client chain key.

13. At least one non-transitory computer-readable storage medium comprising instructions that, when executed by at least one processor, cause a system to:

receive a first encrypted message and a second encrypted message, the first and second encrypted messages encrypted according to a multi-dimensional ratcheting encryption scheme;

determine which of the first encrypted message or the second encrypted message is a most-recent message;

discard the first encrypted message and skip decryption of the first encrypted message based at least in part on the determination that the second encrypted message is the most-recent message;

extract a message iteration count for the second encrypted message;

decompose the message iteration count into a plurality of message chain key iteration counts;

determine a decryption key based on the plurality of message chain key iteration counts;

generate a decrypted message by decrypting the second encrypted message based on the decryption key.

14. The non-transitory computer-readable storage medium of claim 13 , the decryption key based on a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, wherein the plurality of dimensions empowers variable-step advancement of the plurality of client chain keys.

15. The non-transitory computer-readable storage medium of claim 14 , wherein variable-step advancement of the plurality of client chain keys corresponds to discarding one or more encrypted messages, the one or more encrypted messages including the first encrypted message.

16. The non-transitory computer-readable storage medium of claim 13 , comprising further instructions that, when executed by the at least one processor, cause the system to:

retrieve a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts;

determine that the plurality of client chain key iteration counts equals the plurality of message chain key iteration counts; and

determine the decryption key as a highest-dimension client chain key of the plurality of client chain keys.

17. The non-transitory computer-readable storage medium of claim 16 , comprising further instructions that, when executed by the at least one processor, cause the system to:

advance the highest-dimension client chain key by one step in response to decrypting the second encrypted message where a highest-dimension client chain key iteration count corresponding to the highest-dimension client chain key is less than a maximum chain key iteration value.

18. The non-transitory computer-readable storage medium of claim 16 , comprising further instructions that, when executed by the at least one processor, cause the system to:

advance two or more client chain keys of the plurality of client chain keys in response to decrypting the second encrypted message where a highest-dimension client chain key iteration count corresponding to the highest-dimension client chain key is equal to a maximum chain key iteration value.

19. The non-transitory computer-readable storage medium of claim 13 , comprising further instructions that, when executed by the at least one processor, cause the system to:

retrieve a plurality of client chain keys, the plurality of client chain keys corresponding to a plurality of dimensions of the multi-dimensional ratcheting encryption scheme, the plurality of client chain keys corresponding to a plurality of client chain key iteration counts;

determine that a client iteration count is less than the message iteration count, the client iteration count corresponding to a composition of the plurality of client chain key iteration counts;

generate a plurality of ratcheted client chain keys by advancing the plurality of client chain keys based on an iteration distance between the client iteration count and the message iteration count; and

determine the decryption key as a highest-dimension ratcheted client chain key of the plurality of ratcheted client chain keys.

20. The non-transitory computer-readable storage medium of claim 13 , wherein advancing the plurality of client chain keys comprises regenerating a higher-dimension client chain key based on advancing a lower-dimension client chain key, wherein regenerating the higher-dimension client chain key skips over one or more allowed iteration counts of the higher-dimension client chain key.

Assignments (2)
CHANGE OF NAME Recorded Jun 22, 2021
From: WHATSAPP INC.
To: WHATSAPP LLC
Reel/Frame 056646/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2018
From: KONIGSBERG, DEREK ALAN; NACHMAN, GEORGE; YUEN, CHUN WING; KRET, EHREN ANDREW
To: WHATSAPP INC.
Reel/Frame 045557/0723 →
Continuity (2)
Provisional Application 62460128 · Feb 17, 2017
Related Publication 20180241725A1 · Aug 23, 2018