IP Library Granted Patent US 10,148,671
Granted Patent B2
US 10,148,671 · App. 14/413,860 · Granted Dec 4, 2018

Method for protecting a chip card against a physical attack intended to modify the logical behaviour of a functional program

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,148,671
App. No.
14/413,860
Granted
Dec 4, 2018
Kind
B2
Abstract

A functional program stored in a memory area of an electronic card may be protected against an attack by disturbance of electrical origin intended to modify at least one logic state of at least one code of this program. The method may include: a storage step during which codes of the functional program and codes of a check program intended to check the logical behavior of the functional program are stored in the memory of the card; and a step of executing at least one code of the functional program followed by a step of checking the logic states of the functional program by executing the check program. During the storage step, the codes of the check program are stored in a memory area formed by addresses that are defined so that the attack by disturbance of electrical origin has no influence on the logic states of this program.

Claims (33)

1. A method for executing a functional program while stored on a memory of a card, said functional program being sensitive to attacks by disturbance of electrical origin on a particular point in the memory of the card, said method comprising:

( 1 ) storing codes of said functional program in a first memory area of said memory of the card and storing the codes of a check program provided to check logical states of the functional program in a second memory area of said memory of the card in order to check that a function that should be called by a functional program has indeed been called or that logic states of the functional program does indeed have expected values,

( 2 ) duplicating the codes of the functional program in a third memory area and duplicating the codes of the check program in a fourth memory area;

( 3 ) executing, by at least one hardware processor or microcontroller, at least one code of the functional program, and

( 4 ) executing the check program in order to check logic states of the functional program so as to check the execution of said at least one code of said functional program, wherein if the check program determines an abnormality in the functional program, the check program forces the card to not execute the functional program,

wherein said first, second, third and fourth memory areas each being formed by addresses so that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in another of these memory areas, and

wherein executing at least one code of the functional program is then preceded by randomly choosing either the functional program stored in the first memory area or the functional program stored in the third memory area, and executing the check program in the second memory area if the chosen functional program is the one stored in the first memory area, or the check program stored in the fourth memory area if the chosen functional program is the one stored in the third memory area.

2. The method according to claim 1 , in which the first and fourth memory areas form one and the same memory area and the third and second memory areas also form one and the same memory area, said two single memory areas thus each being formed by addresses so that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in the other of these two memory areas.

3. The method according to claim 1 , further comprising storing the codes of the check program in a third memory area, said first, second and third memory areas then each being formed by addresses that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in another of these memory areas, and wherein executing the check program is preceded by randomly choosing either the check program stored in the second memory area or the check program stored in the third memory areas.

4. The method according to claim 1 , further comprising:

storing the codes of a program, referred to as a trap program, in said second memory area and in said third memory area, said trap program being configured to detect an attack by disturbance of electrical origin on the memory area in which it is stored and to inform a register of the card; and

if the chosen check program is that of the second memory area, executing the trap program stored in the third memory area after the execution of said chosen check program, and

if the check program chosen in that of the third memory area, executing the trap program stored in the second memory area before the execution of said chosen check program.

5. A device for checking the execution of a so-called functional program sensitive to an attack by disturbance of electrical origin on a particular point of the memory in which the codes of this program are stored, said device comprising:

at least one hardware processor or microcontroller configured for:

storing codes of the functional program in a first memory area of said memory of the card and storing codes of a check program provided to check logical states of the functional program in a second memory area of said memory of the card in order to check that a function that should be called by a functional program has indeed been called or that logic states of the functional program does indeed have expected values,

duplicating the codes of the functional program in a third memory area and duplicating the codes of the check program in a fourth memory area;

executing at least one code of the functional program, and

executing the check program in order to check logical states of the functional program so as to check the execution of said at least one code of said functional program, wherein if the check program determines an abnormality in the functional program, the check program forces the card to not execute the functional program,

wherein said first, second, third and fourth memory areas each being formed by addresses so that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in another of these memory areas, and

wherein executing at least one code of the functional program is then preceded by randomly choosing either the functional program stored in the first memory area or the functional program stored in the third memory area, and executing the check program in the second memory area if the chosen functional program is the one stored in the first memory area, or the check program stored in the fourth memory area if the chosen functional program is the one stored in the third memory area.

6. A computer program product comprising a non-transitory computer program medium that includes codes of instructions for carrying out a method for executing a functional program while stored on a memory of a card when said computer program is executed by a hardware processor of a device of a card, said functional program being sensitive to attacks by disturbance of electrical origin on a particular point of the memory of the card; said method comprising:

( 1 ) storing codes of said functional program in a first memory area of said memory and storing the codes of a check program provided to check logical states of the functional program in a second memory area of said memory of the card in order to check that a function that should be called by a functional program has indeed been called or that logic states of the functional program does indeed have expected values,

( 2 ) executing at least one code of the functional program, and

( 3 ) executing the check program in order to check logic states of the functional program so as to check the execution of said at least one code of said functional program, wherein if the check program determines an abnormality in the functional program, the check program forces the card to not execute the functional program,

wherein said first, second, third and fourth memory areas each being formed by addresses so that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in another of these memory areas, and

wherein executing at least one code of the functional program is then preceded by randomly choosing either the functional program stored in the first memory area or the functional program stored in the third memory area, and executing the check program in the second memory area if the chosen functional program is the one stored in the first memory area, or the check program stored in the fourth memory area if the chosen functional program is the one stored in the third memory area.

7. A non-transitory computer-readable storage means that stores a computer program comprising codes of instructions for carrying out a functional program while stored on a single memory of a given type of a card when said computer program is executed by a hardware processor of a device of a card, said functional program being sensitive to attacks by disturbance of electrical origin on a particular point in the single memory of the card said method comprising:

( 1 ) storing codes of said functional program in a first memory area of said single memory of the card and storing the codes of a check program provided to check logical states of the functional program in a second memory area of said single memory of the card in order to check that a function that should be called by a functional program has indeed been called or that logic states of the functional program does indeed have expected values,

( 2 ) executing at least one code of the functional program, and

( 3 ) executing the check program in order to check logic states of the functional program so as to check the execution of said at least one code of said functional program, wherein if the check program determines an abnormality in the functional program, the check program forces the card to not execute the functional program,

wherein said first, second, third and fourth memory areas each being formed by addresses so that an attack by disturbance of electrical origin on one of these memory areas has no influence on the logic states of the codes of a program stored in another of these memory areas, and

wherein executing at least one code of the functional program is then preceded by randomly choosing either the functional program stored in the first memory area or the functional program stored in the third memory area, and executing the check program in the second memory area if the chosen functional program is the one stored in the first memory area, or the check program stored in the fourth memory area if the chosen functional program is the one stored in the third memory area.

Assignments (10)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2025
From: IDEMIA IDENTITY & SECURITY FRANCE
To: IDEMIA FRANCE
Reel/Frame 070632/0157 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY NAMED PROPERTIES 14/366,087 AND 15/001,534 PREVIOUSLY RECORDED ON REEL 048039 FRAME 0605. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Jan 17, 2024
From: MORPHO
To: SAFRAN IDENTITY & SECURITY
Reel/Frame 066343/0143 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY NAMED PROPERTIES 14/366,087 AND 15/001,534 PREVIOUSLY RECORDED ON REEL 047529 FRAME 0948. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY
Reel/Frame 066343/0232 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE ERRONEOUSLY NAME PROPERTIES/APPLICATION NUMBERS PREVIOUSLY RECORDED AT REEL: 055108 FRAME: 0009. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 066365/0151 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVE PROPERTY NUMBER 15001534 PREVIOUSLY RECORDED AT REEL: 055314 FRAME: 0930. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 066629/0638 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 055108 FRAME: 0009. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Feb 17, 2021
From: SAFRAN IDENTITY AND SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 055314/0930 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE RECEIVING PARTY DATA PREVIOUSLY RECORDED ON REEL 047529 FRAME 0948. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Oct 29, 2020
From: SAFRAN IDENTITY AND SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 055108/0009 →
CHANGE OF NAME Recorded Jan 9, 2019
From: MORPHO
To: SAFRAN IDENTITY & SECURITY
Reel/Frame 048039/0605 →
CHANGE OF NAME Recorded Aug 30, 2018
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY
Reel/Frame 047529/0948 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2015
From: LE, THANH HA; BRINGER, JULIEN; GONCALVES, LOUIS-PHILIPPE; BERTHIER, MAEL
To: MORPHO
Reel/Frame 035571/0305 →