IP Library Granted Patent US 7,797,682
Granted Patent B2
US 7,797,682 · App. 10/550,266 · Granted Sep 14, 2010

Controlled execution of a program used for a virtual machine on a portable data carrier

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 7,797,682
App. No.
10/550,266
Granted
Sep 14, 2010
Kind
B2
Abstract

In a method for the controlled execution of a program ( 26 ), the program ( 26 ) being intended for a virtual machine (VM, VM′), on a portable data carrier, wherein the data carrier has a processor that executes at least a first and a second virtual machine (VM, VM′), the program ( 26 ) is executed both by the first and by the second virtual machine (VM, VM′). If, during execution of the program ( 26 ), a difference is found between the operating state of the first virtual machine (VM) and the operating state of the second virtual machine (VM′), execution of the program is aborted. A data carrier and a computer program product exhibit corresponding features. The invention provides a technique for the controlled execution of a program, which technique prevents security risks due to an attack or a malfunction of the data carrier.

Claims (33)

1. A method for the controlled execution of a program, the program being intended for a virtual machine, on a portable data carrier, wherein

the data carrier has a processor which executes at least a first and a second virtual machine for each execution of the program,

the program is executed both by the first and by the second virtual machine,

the first and the second virtual machine both access a common heap in a non-volatile memory of the data carrier, wherein, when an instruction of the program that contains a write operation to the common heap is being executed, a write operation is performed only by the first virtual machine,

an operating state of the first virtual machine and an operating state of the second virtual machine are checked during execution of the program for correspondence, and

execution of the program is aborted if a difference is found between the operating state of the first virtual machine and the operating state of the second virtual machine.

2. A method according to claim 1 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence comprises checking whether the state of a program counter of the first virtual machine is the same as the state of a program counter of the second virtual machine.

3. A method according to claim 1 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence comprises checking whether the level of a stack pointer of the first virtual machine is the same as the level of a stack pointer of the second virtual machine.

4. A method according to claim 1 , wherein checking of the operating state of the first virtual machine and the operating state of the second virtual machine for correspondence comprises checking whether a value of the most recent element in a stack associated with the first virtual machine is the same as a value of the most recent element in a stack associated with the second virtual machine.

5. A method according to claim 1 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence is in each case performed after an instruction of the program has been executed both by the first and by the second virtual machine.

6. A method according to claim 1 , wherein the instruction of the program is executed first by the first virtual machine and then by the second virtual machine, and, instead of performing the write operation, the second virtual machine checks whether a value that is to be written is present in the heap at the location that is to be written to.

7. A method according to claim 1 , wherein the program is a Java Card Applet intended for execution by a JCVM (Java Card Virtual Machine).

8. A portable data carrier, having a processor, a non-volatile memory, an operating system, at least a first and a second virtual machine, and a program, wherein

the processor executes both the first and second virtual machine,

the program is executed both by the first and by the second virtual machine for each execution of the program,

the first and the second virtual machine both access a common heap in the non-volatile memory of the data carrier, wherein, when an instruction of the program that contains a write operation to the common heap is being executed, the write operation is performed only by the first virtual machine,

the operating system controls the processor to check the operating state of the first virtual machine and the operating state of the second virtual machine during execution of the program for correspondence, and

the operating system controls the processor to abort execution of the program if a difference is found between the operating state of the first virtual machine and the operating state of the second virtual machine.

9. A portable data carrier according to claim 8 , wherein the data carrier is one of a chip card and a chip module.

10. A portable data carrier according to claim 8 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence comprises checking whether the state of a program counter of the first virtual machine is the same as the state of a program counter of the second virtual machine.

11. A portable data carrier according to claim 8 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence comprises checking whether the level of a stack pointer of the first virtual machine is the same as the level of a stack pointer of the second virtual machine.

12. A portable data carrier according to claim 8 , wherein checking of the operating state of the first virtual machine and the operating state of the second virtual machine for correspondence comprises checking whether the value of the most recent element in a stack associated with the first virtual machine is the same as the value of the most recent element in a stack associated with the second virtual machine.

13. A portable data carrier according to claim 8 , wherein checking of the operating state of the first virtual machine and of the operating state of the second virtual machine for correspondence is in each case performed after an instruction of the program has been executed both by the first and by the second virtual machine.

14. A portable data carrier according to claim 8 , wherein the instruction of the program is executed first by the first virtual machine and then by the second virtual machine, and, instead of performing the write operation, the second virtual machine checks whether the value that is to be written is present in the heap at the location that is to be written to.

15. A portable data carrier according to claim 8 , wherein the program is a Java Card Applet intended for execution by a JCVM (Java Card Virtual Machine).

16. A tangible computer storage program product having program instructions for causing a processor of a portable data carrier to perform a method for the controlled execution of a program, the program being intended for a virtual machine, wherein

the processor executes at least a first and a second virtual machine,

the program is executed both by the first and by the second virtual machine for each execution of the program,

the first and the second virtual machine both access a common heap in a non-volatile memory of the data carrier, wherein, when an instruction of the program that contains a write operation to the common heap is being executed, the write operation is performed only by the first virtual machine,

the operating state of the first virtual machine and the operating state of the second virtual machine are checked during execution of the program for correspondence, and

execution of the program is aborted if a difference is found between the operating state of the first virtual machine and the operating state of the second virtual machine.

17. A computer program product according to claim 16 , wherein the instruction of the program is executed first by the first virtual machine and then by the second virtual machine, and, instead of performing the write operation, the second virtual machine checks whether the value that is to be written is present in the heap at the location that is to be written to.

18. A computer program product according to claim 16 , wherein the program is a Java Card Applet intended for execution by a JCVM (Java Card Virtual Machine).

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2017
From: GIESECKE & DEVRIENT GMBH
To: GIESECKE+DEVRIENT MOBILE SECURITY GMBH
Reel/Frame 044559/0969 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2005
From: STOCKER, THOMAS
To: GIESECKE & DEVRIENT GMBH
Reel/Frame 017860/0008 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2005
From: RADULESCU, ANDREI; GOOSSENS, KEES GERARD WILLEM
To: KONINKLIJKE PHILIPS ELECTRONICS, N.V.
Reel/Frame 017117/0510 →