IP Library Granted Patent US 9,698,976
Granted Patent B1
US 9,698,976 · App. 14/213,736 · Granted Jul 4, 2017

Key management and dynamic perfect forward secrecy

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,698,976
App. No.
14/213,736
Granted
Jul 4, 2017
Kind
B1
Abstract

A pool of public keys, having a pool size, is received from a first device. The pool size reflects a target number of keys to be included in the pool. One of the received public keys included in the pool of keys is designated as a reserve key. A public key is selected from the pool of received public keys for use in conjunction with encrypting a communication to the first device. The selecting includes preferentially selecting a public key that is not designated as a reserve key, if at least one such key is present in the pool in addition to the reserve key. The size of the pool can be dynamically adjusted.

Claims (40)

1. A system, comprising:

an interface configured to:

receive a pool, having a first pool size, of public keys from a first device, wherein the pool size reflects a target number of keys to be included in the pool;

a processor configured to:

designate one of the received public keys included in the pool of keys as a reserve key;

select a public key from the pool of received public keys for use in conjunction with encrypting a communication to the first device, wherein the selecting includes preferentially selecting a public key that is not designated as a reserve key, if at least one such key is present in the pool in addition to the reserve key;

determine whether the reserve key has been selected from the pool of received keys; and

in response to determining the reserve key has been selected, set a flag indicating that the first device should be instructed to generate additional keys; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system of claim 1 wherein the processor is further configured to delete the selected key from the pool.

3. The system of claim 1 wherein the processor is further configured to transmit the selected key to a second device.

4. The system of claim 1 wherein the first device is configured to generate a plurality of public-private keypairs, and wherein the first device is configured to retain the private keys included in the generated keypairs, and transmit the public keys as the pool.

5. The system of claim 1 wherein, in the event the reserve key is the only key present in the pool, the reserve key is selected for use in conjunction with encrypting, but is not deleted until the pool is replenished.

6. The system of claim 1 wherein the processor is further configured to determine that the number of keys currently in the pool is below a threshold and to instruct the first device to transmit additional public keys to replenish the pool.

7. The system of claim 1 wherein the processor is further configured to delete the reserve key and to designate one of the additional keys as a new reserve key.

8. The system of claim 1 wherein the processor is further configured to increase the first pool size to a second pool size.

9. A method, comprising:

receiving a pool, having a first pool size, of public keys from a first device, wherein the pool size reflects a target number of keys to be included in the pool;

designating one of the received public keys included in the pool of keys as a reserve key;

selecting a public key from the pool of received public keys for use in conjunction with encrypting a communication to the first device, wherein the selecting includes preferentially selecting a public key that is not designated as a reserve key, if at least one such key is present in the pool in addition to the reserve key

determining whether the reserve key has been selected from the pool of received keys; and

in response to determining the reserve key has been selected, setting a flag indicating that the first device should be instructed to generate additional keys.

10. The method of claim 9 further comprising deleting the selected key from the pool.

11. The method of claim 9 further comprising transmitting the selected key to a second device.

12. The method of claim 9 wherein the first device is configured to generate a plurality of public-private keypairs, and wherein the first device is configured to retain the private keys included in the generated keypairs, and transmit the public keys as the pool.

13. The method of claim 9 wherein, in the event the reserve key is the only key present in the pool, the reserve key is selected for use in conjunction with encrypting, but is not deleted until the pool is replenished.

14. The method of claim 9 further comprising determining that the number of keys currently in the pool is below a threshold and instructing the first device to transmit additional public keys to replenish the pool.

15. The method of claim 9 further comprising deleting the reserve key and designating one of the additional keys as a new reserve key.

16. The method of claim 9 further comprising increasing the first pool size to a second pool size.

17. A computer program product, the computer program product being embodied in a non-transitory tangible computer readable storage medium and comprising computer instructions for:

receiving a pool, having a first pool size, of public keys from a first device, wherein the pool size reflects a target number of keys to be included in the pool;

designating one of the received public keys included in the pool of keys as a reserve key;

selecting a public key from the pool of received public keys for use in conjunction with encrypting a communication to the first device, wherein the selecting includes preferentially selecting a public key that is not designated as a reserve key, if at least one such key is present in the pool in addition to the reserve key;

determining whether the reserve key has been selected from the pool of received keys; and

in response to determining the reserve key has been selected, setting a flag indicating that the first device should be instructed to generate additional keys.

18. The computer program product of claim 17 , further comprising computer instructions for deleting the selected key from the pool.

19. The computer program product of claim 17 , further comprising computer instructions for transmitting the selected key to a second device.

20. The computer program product of claim 17 , further comprising computer instructions for:

determining whether the number of keys currently in the pool is below a threshold; and

instructing the first device to transmit additional public keys to replenish the pool when the number of keys currently in the pool is below the threshold.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2021
From: WICKR LLC
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 057366/0573 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2021
From: SILICON VALLEY BANK
To: WICKR INC.
Reel/Frame 056684/0366 →
SECURITY AGREEMENT Recorded Dec 12, 2017
From: WICKR INC.
To: SILICON VALLEY BANK
Reel/Frame 044872/0729 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2014
From: STATICA, ROBERT, DR.; HOWELL, CHRISTOPHER A.
To: WICKR INC.
Reel/Frame 033255/0071 →