IP Library Granted Patent US 9,886,362
Granted Patent B2
US 9,886,362 · App. 13/524,456 · Granted Feb 6, 2018

Checking the integrity of a program executed by an electronic circuit

Inventors: Gilles Van Assche (Woluwe-Saint-Lambert, BE); Ronny Vankeer (Hoeilaart, BE)
Assignee: PROTON WORLD INTERNATIONAL N.V.
G06F11/28G06F21/52
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 9,886,362
App. No.
13/524,456
Granted
Feb 6, 2018
Kind
B2
Abstract

A method for checking the integrity of a program executed by an electronic circuit and including at least one conditional jump, wherein: a first value is updated for any instruction which does not correspond to a jump instruction; a second value is updated with the first value for each conditional jump instruction; and the second value is compared with a third value, calculated according to the performed conditional jumps.

Claims (44)

1. A device, comprising:

one or more memories; and

circuitry configured to:

maintain a first value and a second value stored in the one or more memories; and

verify an integrity of an executing program based on the maintained first and second values, wherein the executing program comprises a plurality of instructions and the verifying the integrity of the executing program includes:

determining for each instruction of the executing program a type of the instruction;

when it is determined an instruction is not a conditional jump instruction, selectively updating the first value stored in the one or more memories;

when it is determined the instruction is a conditional jump instruction, replacing the second value stored in the one or more memories based on a current value of the first value stored in the one or more memories;

comparing a current value of the second value stored in the one or more memories with a third value calculated according to performed conditional jump instructions of the executing program; and

verifying the integrity of the executing program based on the comparing.

2. The device of claim 1 wherein the one or more memories comprise a first register configured to store the first value and a second register configured to store the second value.

3. The device of claim 1 wherein the circuitry is configured to calculate the third value during execution of the program based on reference values, at least one of the reference values being assigned to a section of the executing program corresponding to a conditional jump.

4. The device of claim 1 wherein when it is determined the instruction is an unconditional jump instruction, the first and second values are not modified in response to the determination.

5. The device of claim 1 wherein the circuitry is configured to reset the first value after each updating of the second value.

6. The device of claim 1 wherein the circuitry is configured to:

calculate the third value at an end of execution of the program, and

update at least one counter of a number of conditional jumps during execution of the program.

7. The device of claim 1 , comprising processing circuitry configured to execute the program.

8. The device of claim 2 wherein replacing the second value comprises overwriting a second value previously stored in the second register.

9. The device of claim 1 wherein the second value is a value stored in a location in the memory and replacing the second value comprises overwriting the value stored in the location in the memory.

10. The device of claim 1 wherein the third value is a function of an execution flow of the executing program.

11. The device of claim 3 wherein each section of the program corresponding to a conditional jump has a corresponding reference value.

12. A method comprising:

checking integrity of a program executing by an electronic circuit based on a first value and a second value maintained in a memory, wherein the program comprises a plurality of instructions including at least one conditional jump, and wherein checking the integrity of the program comprises:

using an electronic circuit, updating the first value for any instruction which does not correspond to a jump instruction;

replacing the second value based on the first value for each conditional jump instruction; and

comparing the second value with a third value calculated according to performed conditional jumps.

13. The method of claim 12 , further comprising:

calculating the third value during execution of the program using reference values, at least one of the reference values being assigned to a section of the program corresponding to a conditional jump.

14. The method of claim 12 , further comprising:

determining, for each new executed instruction, whether the instruction is a conditional jump instruction,

updating the first value or incrementing the second value according to whether the instruction is determined to be a conditional jump instruction.

15. The method of claim 12 , wherein updating the first value comprises using a function to cumulate values of bits of instructions of the program.

16. The method of claim 12 , wherein updating the first value comprises performing a CRC calculation function.

17. The method of claim 12 , further comprising resetting the first value after each replacing of the second value.

18. The method of claim 12 , further comprising calculating the third value during development of the program.

19. The method of claim 12 , further comprising:

calculating the third value at the end of execution of the program, and

updating at least one counter of a number of conditional jumps during the program execution.

20. The method of claim 12 wherein replacing the second value based on the first value comprises adding the first value to the second value.

21. The method of claim 20 wherein the second value is stored in a register and replacing the second value based on the first value comprises storing a result of the adding of the first value to the second value in the register.

22. The method of claim 12 wherein the second value is stored in a register and replacing the second value based on the first value comprises overwriting a value stored in the register.

23. The method of claim 12 wherein the third value is a function of an execution flow of the executing program.

24. The method of claim 13 wherein each section of the program corresponding to a conditional jump has a corresponding reference value.

Assignments (2)
CHANGE OF NAME Recorded Sep 26, 2024
From: PROTON WORLD INTERNATIONAL
To: STMICROELECTRONICS BELGIUM
Reel/Frame 069057/0620 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2012
From: VAN ASSCHE, GILLES; VANKEER, RONNY
To: PROTON WORLD INTERNATIONAL N.V.
Reel/Frame 028407/0460 →
Priority Claims (1)
FR 11 55874 · Jun 30, 2011 · national
Continuity (1)
Related Publication 20130007420A1 · Jan 3, 2013