IP Library › Granted Patent US 11,044,082
Granted Patent B2
US 11,044,082 · App. 16/563,687 · Granted Jun 22, 2021

Authenticating secure channel establishment messages based on shared-secret

Inventors: Allan Henry Vermeulen (Corvallis, OR); Matthew John Campagna (Bainbridge Island, WA); Colm Gearóid MacCárthaigh (Seattle, WA)
Assignee: Amazon Technologies, Inc.
H04L9/0841H04L9/3242H04L63/0442H04L63/061H04L63/08
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,044,082
App. No.
16/563,687
Granted
Jun 22, 2021
Kind
B2
Abstract

Systems and processes are described for establishing and using a secure channel. A shared secret may be used for authentication of session initiation messages as well as for generation of a private/public key pair for the session. A number of ways of agreeing on the shared secret are described and include pre-sharing the keys, reliance on a key management system, or via a token mechanism that uses a third entity to manage authentication, for example. In some instances, the third party may also perform endpoint selection by providing a particular endpoint along with the token. The particular cipher suite applied in a particular implementation may be configurable. The process is applicable to either implicit key confirmation (e.g., handshake negotiation) or explicit key confirmation (e.g., full negotiation).

Claims (70)

1. A system, comprising:

a computing device including at least one hardware processor and configured to:

authenticate a secure channel establishment message based at least in part on a shared secret key shared between the computing device and another computing device that sent the secure channel establishment message; and

generate, based at least in part on contents of the secure channel establishment message and the shared secret key, a data communication key block for performance of cryptographic operations on data received or to be sent over the secure channel between the computing device and the other computing device, wherein the shared secret key used for authentication of the secure channel establishment message is the same shared secret key used in generation of the data communication key block;

generate a key confirmation code using a key based at least in part on a private key of a private-public key pair of the computing device, a public key of a private-public key pair of the other computing device, and the shared secret key to encrypt data known to the other computing device; and

send the key confirmation code to the other computing device.

2. The system of claim 1 , wherein, to authenticate the secure channel establishment message, the computing device is further configured to:

apply a key derivation function to at least the shared secret key to generate an initiator authentication key,

apply a message authentication code function with the initiator authentication key and initiation message body as inputs to generate an initiation message authentication code, and

compare the initiation message authentication code generated by the computing device with an initiation message authentication code received in the secure channel establishment message.

3. The system of claim 1 , further comprising:

the other computing device, configured to:

verify the key confirmation code using a key based at least in part on the private key of the other computing device, the public key of the computing device, and the shared secret key to decrypt the data, wherein verification of the key confirmation code verifies that the other computing device can decrypt data communications from the computing device on the secure channel.

4. The system of claim 3 , wherein the other computing device is further configured to:

generate another key confirmation code using a key based at least in part on the private key of the other computer device, the public key of the computing device, and the shared secret key to encrypt data known to the computing device; and

send a key confirmation message to the computing device including the other key confirmation code.

5. The system of claim 4 , wherein the computing device is further configured to:

verify the other key confirmation code from the key confirmation message using a key based at least in part on the private key of the computing device, the public key of the other computing device, and the shared secret key to decrypt the data, wherein verification of the other key confirmation code verifies that the computing device can decrypt data communications from the other computing device on the secure channel.

6. The system of claim 1 , wherein:

an identifier for a cipher suite is indicated in one of the messages from the other computing device; and

the computing device is further configured to verify the indicated cipher suite as acceptable.

7. The system of claim 6 , wherein the indicated cipher suite specifies:

a particular scheme for generation of the private-public key pair of the other computing device and the private-public key pair of the computing device,

a particular scheme for generating an initiation message authentication code and response message authentication code, and

a key derivation function for use in generation of the data communication key blocks for the computing device and the other computing device.

8. A method, comprising:

performing, by a computing device comprising at least one hardware processor:

authenticating a secure channel establishment message based at least in part on a shared secret key shared between the computing device and another computing device that sent the secure channel establishment message; and

generating, based at least in part on contents of the secure channel establishment message and the shared secret key, a data communication key block for performing cryptographic operations on data received or to be sent over the secure channel between the computing device and the other computing device, wherein the shared secret key used for authenticating the secure channel establishment message is the same shared secret key used in generating the data communication key block;

generating a key confirmation code using a key based at least in part on a private key of a private-public key pair of the computing device, a public key of a private-public key pair of the other computing device, and the shared secret key to encrypt data known to the other computing device; and

sending the key confirmation code to the other computing device.

9. The method of claim 8 , wherein authenticating the secure channel establishment message comprises:

applying a key derivation function to at least the shared secret key to generate an initiator authentication key,

applying a message authentication code function with the initiator authentication key and initiation message body as inputs to generate an initiation message authentication code, and

comparing the initiation message authentication code generated by the computing device with an initiation message authentication code received in the secure channel establishment message.

10. The method of claim 8 , further comprising:

verifying, by the computing device, the key confirmation code using a key based at least in part on the private key of the other computing device, the public key of the computing device, and the shared secret key to decrypt the data, wherein verifying the key confirmation code verifies that the other computing device can decrypt data communications from the computing device on the secure channel.

11. The method of claim 10 , further comprising:

generating, by the other computing device, another key confirmation code using a key based at least in part on the private key of the other computing device, the public key of the computing device, and the shared secret key to encrypt data known to the computing device; and

sending a key confirmation message to the computing device including the other key confirmation code.

12. The method of claim 11 , further comprising:

verifying, by the computing device the other key confirmation code from the key confirmation message using a key based at least in part on the private key of the computing device, the public key of the other computing device, and the shared secret key to decrypt the data, wherein verifying the other key confirmation code verifies that the computing device can decrypt data communications from the other computing device on the secure channel.

13. The method of claim 8 , wherein:

an identifier for a cipher suite is indicated in one of the messages from the other computing device; and

the method further comprises verifying, by the computing device, the indicated cipher suite as acceptable.

14. The method of claim 13 , wherein the indicated cipher suite specifies:

a particular scheme for generation of the private-public key pair of the other computing device and the private-public key pair of the computing device,

a particular scheme for generating an initiation message authentication code and response message authentication code, and

a key derivation function for use in generation of the data communication key blocks for the computing device and the other computing device.

15. One or more non-transitory, computer-readable storage media storing program instructions that when executed on or across one or more processors cause at least one hardware processor to perform:

authenticating a secure channel establishment message based at least in part on a shared secret key shared between a computing device and another computing device that sent the secure channel establishment message; and

generating, based at least in part on contents of the secure channel establishment message and the shared secret key, a data communication key block for performing cryptographic operations on data received or to be sent over the secure channel between the computing device and the other computing device, wherein the shared secret key used for authenticating the secure channel establishment message is the same shared secret key used in generating the data communication key block;

generating a key confirmation code using a key based at least in part on a private key of a private-public key pair of the computing device, a public key of a private-public key pair of the other computing device, and the shared secret key to encrypt data known to the other computing device; and

sending the key confirmation code to the other computing device.

16. The one or more non-transitory, computer-readable storage media of claim 15 , wherein to perform said authenticating the secure channel establishment message, the one or more media store program instructions cause the at least one hardware processor to perform:

applying a key derivation function to at least the shared secret key to generate an initiator authentication key,

applying a message authentication code function with the initiator authentication key and initiation message body as inputs to generate an initiation message authentication code, and

comparing the initiation message authentication code generated by the computing device with an initiation message authentication code received in the secure channel establishment message.

17. The one or more non-transitory, computer-readable storage media of claim 15 , wherein the one or more media store program instructions that cause the at least one hardware processor to perform:

verifying, by the computing device, the key confirmation code using a key based at least in part on the private key of the other computing device, the public key of the computing device, and the shared secret key to decrypt the data, wherein verifying the key confirmation code verifies that the other computing device can decrypt data communications from the computing device on the secure channel.

18. The one or more non-transitory, computer-readable storage media of claim 17 , wherein the one or more media store program instructions that cause the at least one hardware processor to perform:

verifying, by the computing device, another key confirmation code from key confirmation message from the other computing device using a key based at least in part on the private key of the computing device, the public key of the other computing device, and the shared secret key to decrypt the data, wherein verifying the other key confirmation code verifies that the computing device can decrypt data communications from the other computing device on the secure channel.

19. The one or more non-transitory, computer-readable storage media of claim 15 , wherein:

an identifier for a cipher suite is indicated in one of the messages from the other computing device; and

the one or more media store program instructions that cause the at least one hardware processor to perform:

verifying, by the computing device, the indicated cipher suite as acceptable.

20. The one or more non-transitory, computer-readable storage media of claim 19 , wherein the indicated cipher suite specifies:

a particular scheme for generation of the private-public key pair of the other computing device and the private-public key pair of the computing device,

a particular scheme for generating an initiation message authentication code and response message authentication code, and

a key derivation function for use in generation of the data communication key blocks for the computing device and the other computing device.

Continuity (2)
Continuation 14983242 · Dec 29, 2015
Related Publication 20190394029A1 · Dec 26, 2019
Cited By (1)
US 12,665,763