IP Library › Granted Patent US 11,341,280
Granted Patent B2
US 11,341,280 · App. 16/668,973 · Granted May 24, 2022

Executing entity-specific cryptographic code in a cryptographic coprocessor

Inventors: Wael Ibrahim (San Diego, CA); Manish K. Deliwala (Chandler, AZ); Manik Biswas (Burgess Hill, GB); Subrahmanyam Venakata Vishnuvajhala (Phoenix, AZ); Andrew Lei (Brooklyn, NY)
Assignee: American Express Travel Related Services Company, Inc.
G06F21/72G06F21/602H04L9/3234
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,341,280
App. No.
16/668,973
Granted
May 24, 2022
Kind
B2
Abstract

Disclosed are various embodiments for executing entity-specific cryptographic code in a cryptographic coprocessor. In one embodiment, encrypted code implementing a cryptographic algorithm is received from a service via a network. The cryptographic coprocessor decrypts the encrypted code. The cryptographic coprocessor executes the decrypted code to generate a cryptogram including information encrypted using the cryptographic algorithm. The cryptogram is sent to the service via the network.

Claims (39)

1. A system, comprising:

a first computing device comprising a processor, a memory, and a cryptographic coprocessor; and

machine-readable instructions stored in the memory that, when executed by the processor, cause the computing device to at least:

receive encrypted executable code implementing a cryptographic algorithm from a service executed on a second computing device via a network;

identify a root key of the cryptographic coprocessor based at least in part on a header of a signature of the encrypted executable code;

verify, using the root key, that the encrypted executable code is signed by a trusted entity from a predefined plurality of trusted entities based at least in part on the signature of the encrypted executable code;

decrypt, by the cryptographic coprocessor, the encrypted executable code using the root key after verifying that the encrypted executable code is signed by the trusted entity;

execute, by the cryptographic coprocessor, the decrypted executable code to generate a cryptogram including information encrypted using the cryptographic algorithm; and

send the cryptogram to the service via the network.

2. The system of claim 1 , wherein the cryptographic coprocessor complies with a version of a Trusted Platform Module (TPM) standard.

3. The system of claim 1 , wherein the cryptographic coprocessor is configured to verify a state of the first computing device before decrypting the encrypted executable code.

4. The system of claim 1 , wherein the service is operated by an entity, and the cryptographic algorithm is a preferred cryptographic algorithm of the entity.

5. The system of claim 1 , wherein the service comprises a first service and a second service which are associated with an entity, the encrypted executable code is received from the first service, and the cryptogram is sent to the second service.

6. The system of claim 1 , wherein the cryptographic coprocessor is implemented in firmware in the first computing device, and data is transferred from a secure element of the first computing device to the cryptographic coprocessor via an interface to enable decryption of the encrypted executable code by the cryptographic coprocessor.

7. The system of claim 1 , wherein the cryptographic coprocessor is configured to support a selection from a predefined plurality of cryptographic algorithms to perform a cryptographic operation, and the cryptographic algorithm is excluded from the predefined plurality of cryptographic algorithms.

8. The system of claim 1 , wherein the cryptographic coprocessor is configured to act as a root of trust to verify the cryptographic algorithm before transferring the cryptographic algorithm to a secure element of the first computing device.

9. A method, comprising:

receiving, by a cryptographic coprocessor, encrypted executable code implementing a cryptographic algorithm from a client application;

identifying, by the cryptographic coprocessor, a root key of the cryptographic coprocessor based at least in part on a header of a signature of the encrypted executable code;

verifying, by the cryptographic coprocessor using the root key, that the encrypted executable code is signed by a trusted entity from a predefined plurality of trusted entities based at least in part on the signature of the encrypted executable code;

decrypting, by the cryptographic coprocessor, the encrypted executable code using the root key after verifying that the encrypted executable code is signed by the trusted entity; and

executing, by the cryptographic coprocessor, the decrypted executable code to decrypt encrypted data using the cryptographic algorithm; or

executing, by the cryptographic coprocessor, the decrypted executable code to generate a cryptogram using the cryptographic algorithm.

10. The method of claim 9 , wherein the encrypted executable code is received by the client application from a service operated by an entity, and the client application is associated with the entity.

11. The method of claim 10 , wherein the encrypted data and the encrypted executable code exclude an identifier of the cryptographic algorithm.

12. The method of claim 10 , wherein the cryptographic coprocessor is configured to support a selection from a predefined plurality of cryptographic algorithms to perform a cryptographic operation, and the cryptographic algorithm is excluded from the predefined plurality of cryptographic algorithms.

13. A non-transitory, computer-readable medium comprising machine-readable instructions that, when executed by a processor of a first computing device, cause the first computing device to at least:

encrypt a cryptographic algorithm to create encrypted executable code;

generate a signature for the encrypted executable code;

send the encrypted executable code and the signature to a second computing device, the second computing device being configured to identify a root key based at least in part on a header of the signature, verify that the encrypted executable code is signed by a trusted entity using the root key and the signature, and decrypt the encrypted executable code using the root key after verifying that the encrypted executable code is signed by the trusted entity;

receive a cryptogram generated with the cryptographic algorithm from the encrypted executable code from the second computing device; and

decrypt the cryptogram with the cryptographic algorithm.

14. The non-transitory computer-readable medium of claim 13 , wherein the encrypted executable code is sent to the second computing device along with an identifier for the root key to decrypt the encrypted executable code.

15. The non-transitory computer-readable medium of claim 13 , wherein the encrypted executable code excludes an identifier of the cryptographic algorithm.

16. The non-transitory computer-readable medium of claim 13 , wherein encrypted executable code is encrypted using one of a predefined plurality of cryptographic algorithms supported by a standard for a cryptographic coprocessor.

17. The system of claim 1 , wherein the header of the signature includes an identifier of the root key.

18. The system of claim 1 , wherein the root key is stored in a secure data storage of the cryptographic coprocessor.

19. The method of claim 9 , wherein identifying the root key further comprises determining an identifier of the root key from the header in the signature.

20. The method of claim 9 , further comprising loading the root key from a secure data storage of the cryptographic coprocessor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2020
From: IBRAHIM, WAEL; DELIWALA, MANISH K.; BISWAS, MANIK; VISHNUVAJHALA, SUBRAHMANYAM VENAKATA; LEI, ANDREW
To: AMERICAN EXPRESS TRAVEL RELATED SERVICES COMPANY, INC.
Reel/Frame 051406/0304 →
Continuity (2)
Provisional Application 62914275 · Oct 11, 2019
Related Publication 20210110064A1 · Apr 15, 2021