IP Library Granted Patent US 10,878,083
Granted Patent B2
US 10,878,083 · App. 15/781,427 · Granted Dec 29, 2020

Mobile device having trusted execution environment

Inventors: Min Hlaing (Meudon, FR); SM Sohiduzzaman SK Abdul Aziz (Meudon, FR); Sriram Ramachandran (Meudon, FR); Véronique Charpeignet (Meudon, FR); Patrice Angelini (Meudon, FR)
Assignee: THALES DIS FRANCE SA
G06F21/53G06F8/61G06F9/445G06F21/14G06F21/554G06F21/725G06F21/74H04L9/0866H04L9/0894H04L63/0876H04W12/0401H04W12/0609G06F2221/2149H04L2209/04H04L2209/16
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,878,083
App. No.
15/781,427
Granted
Dec 29, 2020
Kind
B2
Abstract

A mechanism for securing a mobile app for execution on a mobile device. The mechanism includes loading a non-trusted portion of the mobile app from a non-trusted application provider onto the mobile device, operating a key provisioning server to generate keys associated with a trusted execution environment, transmitting the keys associated with the trusted execution environment to the mobile device and to a key directory server, authenticate the mobile device, and upon authenticating the mobile device, transmitting a trusted portion of the mobile app including a trusted application to the mobile device, and installing the trusted portion of the mobile app on the mobile device thereby providing a trusted execution environment. Other systems and methods are disclosed.

Claims (42)

1. A method for securing a mobile application for execution on a mobile device, comprising:

the mobile device being configured to:

load a non-trusted portion of the mobile application from a non-trusted application provider onto the mobile device;

load a trusted portion of the mobile application from a trusted application provider into the mobile device by:

the mobile application generates a trusted execution environment id “TEE ID” from an identifier of the mobile application and a device fingerprint of the mobile device; said generated a trusted execution environment id “TEE ID” being transmitted by the mobile application to a key provisioning server;

operating the key provisioning server to generate keys to be associated with the trusted execution environment id “TEE ID” and transmitting to a key director server the trusted execution environment id “TEE ID” and the generated keys and to the mobile device the generated keys;

the trusted application provider being configured to receive the TEE ID and a hash of the TEE ID computed from the generated keys sent by the mobile device and to authenticate the mobile device through the key director server; upon successful authentication of the mobile device, operating the trusted application provider to transmit the trusted portion of the mobile application including a trusted application to the mobile device; and

the mobile device being configured to install the trusted portion of the mobile application on the mobile device thereby providing a trusted execution environment; and

install the trusted portion of the mobile application on the mobile device thereby providing a trusted execution environment.

2. The method for securing the mobile application for execution on the mobile device according to claim 1 , wherein the non-trusted portion of the mobile application comprises:

a client application executable in a rich execution environment of the mobile device; and

a trusted application interpreter for an instruction set in which trusted applications may be implemented.

3. The method for securing the mobile application execution on the mobile device according to claim 2 , wherein the trusted application is implemented in the instruction set interpretable by the trusted application interpreter.

4. The method for securing the mobile application execution on the mobile device according to claim 2 , wherein the keys associated with the mobile application include a white-box key “WBC key” and an initial pin encryption key “IPEK” and wherein the method further comprises encrypting the IPEK using the WBC key prior to transmitting the keys associated with the mobile application to the mobile device and wherein the encrypted version of the IPEK is transmitted to the mobile device.

5. The method for securing the mobile application for execution on the mobile device according to claim 4 , wherein the trusted portion of the mobile application is encrypted with a session key generated from the initial pin encryption key “IPEC” before transmission by the trusted server provider to the mobile device.

6. The method for securing the mobile application for execution on the mobile device according to claim 1 , wherein the non-trusted portion of the mobile application includes an application program interface implementing functionality emulating a hardware implementation of a trusted execution environment.

7. The method for securing the mobile application for execution on the mobile device according to claim 1 , further comprising:

associating the trusted application with a trusted secure storage; and storing an initial random secret in secure storage of the mobile device; and

on each access of data in the secure storage of the trusted application, generating a secure storage data key “TA_SK” for encrypting data stored in the trusted secure storage associated with the trusted application using an initial random secret “IRS”, a device finger print, and a unique id “UUID” for the trusted application.

8. The method for securing the mobile application execution on the mobile device according to the claim 1 , further comprising:

during the execution of a trusted application:

determining a one-time runtime key associated with that particular execution of the trusted application;

when storing a quantity into the runtime memory used by the trusted application during that particular execution of the trusted application, masking the quantity using the one-time runtime key; and

when retrieving a quantity from the runtime memory used by the trusted application during that particular execution of the trusted application, unmasking the quantity using the one-time runtime key.

9. The method for securing the mobile application for execution on the mobile device according to the claim 1 , further comprising:

on a first run of a trusted application having a compiled form for execution or interpretation, computing a first value based on the compiled form of the trusted application and storing that value based on the compiled form of the trusted application;

upon subsequent executions of the trusted application, performing the same computation based on the compiled form of the trusted application to produce a second value based on the compiled form of the trusted application, comparing the first value and a second value, and take a corrective action when the first value and the second values are not the same.

10. The method for securing the mobile application for execution on the mobile device according to claim 1 , further comprising defending against a potential time-shift attack by:

determining a first expected execution time for particular instructions of the mobile application on initial execution of the software trusted execution environment;

storing the first expected execution time for said particular instructions;

during subsequent execution of the software trusted execution environment: tracking a current instruction count;

periodically fetching the system clock;

computing a second expected execution time from the current instruction count;

comparing the second expected execution time against the first expected execution time for the current instruction count; and

when the comparison indicates an unacceptable deviation, taking a corrective action.

11. The method for securing the mobile application for execution on the mobile device according to claim 10 , wherein the particular instructions are calls to functions of an application program interface.

12. The method for securing the mobile application for execution on the mobile device according to claim 1 , further comprising:

amending a critical portion of a trusted application with a dummy code section that has a plurality of loops each of which may be executed as a short loop or as a long loop;

assigning a plurality of inspection points in the dummy code section and adjacent to said critical portion of the trusted application;

on execution of the trusted application determining an execution path through the dummy code wherein the execution path executes a defined number of short and long loops;

determining an expected arrival times for each inspection point; and

upon arrival of an inspection point, comparing an actual arrival time against the expected arrival time of the inspection point and taking a corrective action when deviation between the actual arrival time of the inspection point and the expected arrival time of the inspection point is beyond a predetermined threshold.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2023
From: THALES DIS FRANCE SA
To: THALES DIS FRANCE SAS
Reel/Frame 064730/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2018
From: RAMACHANDRAN, SRIRAM
To: GEMALTO SA
Reel/Frame 046466/0637 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2018
From: HLAING, MIN; SK ABDUL AZIZ, SM SOHIDUZZAMAN; CHARPEIGNET, VÉRONIQUE; ANGELINI, PATRICE
To: GEMALTO SA
Reel/Frame 046422/0641 →
Priority Claims (1)
EP 15306989 · Dec 11, 2015 · regional
Continuity (1)
Related Publication 20190005229A1 · Jan 3, 2019
Cited By (2)
US 12,242,596 US 12,339,954