IP Library Granted Patent US 8,646,092
Granted Patent B2
US 8,646,092 · App. 12/374,234 · Granted Feb 4, 2014

Method of dynamic protection of data during the execution of a software code in intermediate language in a digital apparatus

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 8,646,092
App. No.
12/374,234
Granted
Feb 4, 2014
Kind
B2
Abstract

The invention concerns a method for protecting the data of an application compiled in intermediate for execution executed on a digital apparatus equipped with a virtual machine managing the execution of the code via a execution stack defining at least one stack frame corresponding to a method called during the execution of the code. A secured execution mode of the code involves the determination of at least one global checksum associated with each stack frame and, each time that a datum of the code is manipulated, the calculation of a local checksum associated with that datum. The calculation is on one hand, on the global checksum associated with the stack frame corresponding to the manipulated datum and, on the other hand, on at least one part of the other data constituting the stack frame.

Claims (39)

1. A computer implemented method for protecting data of an application compiled in intermediate code to be executed on a digital apparatus comprising a virtual machine configured to manage the execution of the code via an execution stack defining at least one stack frame storing elements of a function called by the virtual machine during the execution of the code, comprising the application of a secured execution mode of the code, the computer-implemented method comprising:

determining, by a processor, at least one global checksum associated with an area of each stack frame and, said global checksum being calculated using the value of all data from the associated area; and

each time that a datum of the code is manipulated, calculating, by the processor, a local checksum associated with said datum, based on:

the global checksum associated with the area corresponding to the manipulated datum; and

at least one part of the other data constituting said area.

2. The computer implemented method according to claim 1 , further comprising dividing each area into a plurality of areas and the determination of a plurality of global checksums respectively associated with each area of the stack frame.

3. The computer implemented method according to claim 2 , further comprising: determining, prior to the calculating of the local checksum associated with the manipulated datum, the global checksum associated with the area wherein the manipulated datum is stored.

4. The computer implemented method according to claim 3 , wherein the calculating of the local checksum associated with the manipulated datum is performed based on:

the global checksum associated with the area wherein the manipulated datum is stored; and

other data of said area.

5. The computer-implemented method according to claim 4 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said method.

6. The computer implemented method according to claim 2 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function and an operand stack area of said function.

7. The computer-implemented method according to claim 3 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said function.

8. An apparatus comprising a virtual machine configured to:

execute an application compiled in intermediate code on the apparatus; and

manage the execution of the code via an execution stack defining at least one stack frame storing elements of a function called by the virtual machine during the execution of the code, the function comprising the application of a secured execution mode of the code, wherein the virtual machine comprises instructions stored in a non-volatile storage device of the apparatus that, if executed by the apparatus, cause the apparatus to perform operations comprising:

determining at least one global checksum associated with an area of each stack frame and, said global checksum being calculated using the value of all data from the associated area; and

in response to determining that a datum of the code is manipulated, calculating a local checksum associated with said datum, based on:

the global checksum associated with the area corresponding to the manipulated datum; and

at least one part of the other data constituting said area.

9. The apparatus according to claim 8 , the operations further comprising:

dividing each area into a plurality of areas and the determination of a plurality of global checksums respectively associated with each area of the stack frame.

10. The apparatus according to claim 9 , the operations further comprising: determining, prior to the calculating of the local checksum associated with the manipulated datum, the global checksum associated with the area wherein the manipulated datum is stored.

11. The apparatus according to claim 10 , wherein the calculating of the local checksum associated with the manipulated datum is performed based on:

the global checksum associated with the area wherein the manipulated datum is stored; and

other data of said area.

12. The apparatus according to claim 11 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said function.

13. The apparatus according to claim 10 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said function.

14. The apparatus according to claim 8 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said function.

15. The apparatus of claim 8 , wherein the apparatus comprises a smart card.

16. A digital apparatus comprising a non-volatile storage device storing in memory a virtual machine configured to:

execute an application compiled in intermediate code on the digital apparatus; and

manage the execution of the code via an execution stack defining at least one stack frame storing elements of a function called by the virtual machine during the execution of the code, wherein the virtual machine comprises instructions that, if executed by the apparatus, cause the apparatus to perform operations comprising:

determining at least one global checksum associated with an area of each stack frame and, said global checksum being calculated using the value of all data from the associated area; and

in response to determining that a datum of the code is manipulated, calculating a local checksum associated with said datum, based on:

the global checksum associated with the area corresponding to the manipulated datum; and

at least one part of the other data constituting said area.

17. The digital apparatus according to claim 16 , wherein the digital apparatus further comprises a smart card.

18. The digital apparatus according to claim 16 , wherein each stack frame is divided into two areas, respectively corresponding to a local variable area of the function called and an operand stack area of said function.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2023
From: THALES DIS FRANCE SA
To: THALES DIS FRANCE SAS
Reel/Frame 064770/0615 →
CHANGE OF NAME Recorded Aug 25, 2023
From: GEMALTO SA
To: THALES DIS FRANCE SA
Reel/Frame 064716/0408 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2009
From: GONZALVO, BENOIT; FOURNIER, JACQUES JEAN-ALAIN
To: GEMALTO SA
Reel/Frame 022483/0599 →