IP Library Granted Patent US 10,778,444
Granted Patent B2
US 10,778,444 · App. 16/032,994 · Granted Sep 15, 2020

Devices and methods for application attestation

Inventors: Manuel Enrique Caceres (Basking Ridge, NJ); Bruno Mendez (Springfield, NJ); Mauricio Pati Caldeira De Andrada (South Plainfield, NJ); Warren Hojilla Uy (Randolph, NJ); Young R. Choi (Belle Mead, NJ)
Assignee: Verizon Patent and Licensing Inc.
H04L9/3263G06F21/44G06F21/57H04L9/0861H04L9/3247H04L63/20
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,778,444
App. No.
16/032,994
Granted
Sep 15, 2020
Kind
B2
Abstract

A device receives, from an application, a request to access an attestation key stored in a secure element of the device. The device obtains an attestation policy, by which to verify an identity of the application. The device examines an application file associated with the application, to determine whether the application file satisfies the attestation policy. The device selectively generates a temporary key based on a result of examining the application file. The temporary key may be used to access the attestation key. The temporary key may be generated based on the application file satisfying the attestation policy, and may not be generated based on the application file not satisfying the attestation policy.

Claims (95)

1. A device, comprising:

one or more memories;

a rich operating system (OS); and

one or more processors, disposed in a trusted execution environment (TEE) of the device, communicatively coupled to the one or more memories,

the TEE being associated with a first bootloader and a first kernel,

the rich OS being associated with a second bootloader and a second kernel,

the first bootloader and the first kernel being separate from the second bootloader and the second kernel, respectively, and

wherein the one or more processors are to:

receive, from an application running on the device, a request to access an attestation key stored in a secure element of the device;

perform an application attestation to verify an identity of the application based on receiving the request to access the attestation key,

wherein, when performing the application attestation, the one or more processors are to:

obtain an attestation parameter, by which to verify the identity of the application; and

compare the attestation parameter and an application file attribute associated with the application to verify the identity of the application;

generate a temporary key based on the comparing; and

transmit, to the application, the temporary key to cause an action to be performed, by the application, upon receipt of the temporary key.

2. The device of claim 1 , wherein the secure element comprises:

a universal integrated circuit card (UICC),

an embedded UICC, or

a subscriber identification module (SIM) card.

3. The device of claim 1 , wherein the attestation parameter includes at least one of:

an electronic signature,

a hash value,

an algorithm for executing an executable code, or

metadata.

4. The device of claim 1 , wherein the temporary key includes a symmetric key by which access to the attestation key is selectively provided.

5. The device of claim 1 , wherein the action includes:

presenting the temporary key to the secure element; and

granting the application access to the attestation key.

6. The device of claim 1 , wherein the action includes:

presenting the temporary key to the secure element; and

denying the application access to the attestation key.

7. The device of claim 1 , wherein the one or more processors, are further to:

discard the temporary key upon transmitting the temporary key to the application.

8. The device of claim 1 , wherein the temporary key includes a reusable key associated with a set of keys, and

wherein the one or more processors, when generating the temporary key, are to:

generate or select the temporary key based on being a next key, according to ascending or descending order, in the set of keys.

9. A method, comprising:

receiving, by a processor, and from an application running on a device, a request to access an attestation key stored in a secure element of the device,

the processor being disposed in a trusted execution environment (TEE) of the device,

the device including a rich operating system (OS),

the TEE being associated with a first bootloader and a first kernel,

the rich OS being associated with a second bootloader and a second kernel,

the first bootloader and the first kernel being separate from the second bootloader and the second kernel, respectively;

obtaining, by the processor, an attestation policy, by which to verify an identity of the application;

examining, by the processor, an application file associated with the application to determine whether the application file satisfies the attestation policy; and

selectively generating, by the processor, a temporary key based on a result of examining the application file,

wherein the temporary key is used to access the attestation key,

wherein the temporary key is generated based on the application file satisfying the attestation policy, and

wherein the temporary key is not generated based on the application file not satisfying the attestation policy.

10. The method of claim 9 , wherein selectively generating the temporary key comprises generating the temporary key, and transmitting, to the application, the temporary key to cause an action to be performed upon receipt of the temporary key.

11. The method of claim 10 , wherein the action includes granting the application access to the attestation key.

12. The method of claim 10 , wherein the action includes denying the application access to the attestation key.

13. The method of claim 9 , further comprising:

receiving, from the application, a subsequent request to access the attestation key stored in the secure element of the device;

performing a subsequent application attestation to verify the identity of the application based on receiving the subsequent request;

generating a new temporary key based on a new result of performing the subsequent application attestation; and

transmitting, to the application, the new temporary key to cause a subsequent action to be performed based upon receipt of the new temporary key.

14. The method of claim 9 , further comprising:

receiving, from an application server device, a request to verify an executable code;

obtaining, from the application, the executable code based on receiving the request;

obtaining, from the secure element, an algorithm for executing the executable code;

executing the executable code using the algorithm; and

sending, to the application, the executable code for verification by the application server device.

15. The method of claim 9 , further comprising:

receiving, from an application server device, a request for a device certificate by which to verify an identity of the device; and

transmitting, to the application server device, the device certificate for verifying the identity of the device.

16. A non-transitory computer-readable medium storing instructions, the instructions comprising:

one or more instructions that, when executed by one or more processors, disposed in a trusted execution environment (TEE), of a device,

the device comprising a rich operating system (OS),

the TEE being associated with a first bootloader and a first kernel, and

the rich OS being associated with a second bootloader and a second kernel,

the first bootloader and the first kernel being separate from the second bootloader and the second kernel, respectively,

cause the one or more processors to:

receive, from an application running on the device, a first request to access an attestation key stored in a secure element of the device;

perform a first application attestation to verify an identity of the application based on receiving the first request,

wherein, when performing the first application attestation, the one or more instructions that, when executed by the one or more processors of the device, cause the one or more processors to:

obtain an attestation parameter, by which to verify the identity of the application; and

compare the attestation parameter and an application file attribute associated with the application to verify the identity of the application;

generate a first temporary key based on a result of comparing the attestation parameter and the application file attribute;

transmit, to the application, the first temporary key to cause a first action to be performed based upon receipt of the first temporary key;

discard the first temporary key;

receive, from the application, a second request to access the attestation key stored in the secure element of the device;

perform a second application attestation to verify the identity of the application based on receiving the second request;

generate a second temporary key based on a result of performing the second application attestation,

wherein the second temporary key is different than the first temporary key; and

transmit, to the application, the second temporary key to cause a second action to be performed based upon receipt of the second temporary key.

17. The non-transitory computer-readable medium of claim 16 , wherein the first action or the second action includes providing the application access to the attestation key.

18. The non-transitory computer-readable medium of claim 16 , wherein the first action or the second action includes denying the application access to the attestation key.

19. The non-transitory computer-readable medium of claim 16 , wherein the first temporary key and the second temporary key include symmetric keys by which access to the attestation key is selectively provided.

20. The non-transitory computer-readable medium of claim 16 , wherein the one or more instructions, that when executed by the one or more processors, further cause the one or more processors to:

obtain executable code;

receive a request to verify the executable code;

obtain an algorithm for verifying the executable code;

execute the executable code based on the algorithm; and

send the executable code to the application for verification.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2018
From: CACERES, MANUEL ENRIQUE; MENDEZ, BRUNO; CALDEIRA DE ANDRADA, MAURICIO PATI; UY, WARREN HOJILLA; CHOI, YOUNG R.
To: VERIZON PATENT AND LICENSING INC.
Reel/Frame 046337/0764 →
Continuity (1)
Related Publication 20200021445A1 · Jan 16, 2020