WO2000054155A1 - Procede de surveillance du deroulement d'un programme - Google Patents
Procede de surveillance du deroulement d'un programme Download PDFInfo
- Publication number
- WO2000054155A1 WO2000054155A1 PCT/FR2000/000150 FR0000150W WO0054155A1 WO 2000054155 A1 WO2000054155 A1 WO 2000054155A1 FR 0000150 W FR0000150 W FR 0000150W WO 0054155 A1 WO0054155 A1 WO 0054155A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- instructions
- inst
- program
- instruction
- value
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2153—Using hardware token as a secondary aspect
Definitions
- the present invention relates to the field of computer program security, and more particularly to a method and a device for detecting an unacceptable progress in the execution of a computer program, the latter being able to be in a low level language or high level.
- a low-level language program the commands are formulated according to a structure very close to that of the instructions actually executed by the processor part of the computer.
- the program only needs to be compiled before it can be run.
- Low-level languages, known as machine code are used in particular for programming microprocessors or microcontrollers.
- Microcontrollers are processors that can only execute a small number of specific instructions. They are used in particular to equip smart cards (bank cards, telephone cards, access to services, etc.) and to control industrial or domestic devices.
- the commands In a high-level language program, the commands have a structure closer to natural language, but on the other hand more distant from that used by the processor.
- the commands written in such languages must first be interpreted, that is to say converted into machine code commands, before they can then be put into the form of instructions in view of their execution by the processor.
- any computer program gives rise to a series of instructions adapted to the processor, microprocessor or microcontroller for which it is intended.
- the instructions of a program are executed by a processor according to a sequence governed by an instruction counter, as will be briefly described with reference to FIG. 1.
- the compiled instructions of a program are loaded in blocks of 'successive instructions Inst. l, Inst. 2, Inst. 3,, Inst. (where n is an integer) in the form of codes or microcodes in an instruction register 2.
- Each instruction is identified by a specific address in this register 2.
- the addresses of the instructions Inst are designated. l, Inst. 2, Inst. 3,, Inst. not respectively Ad.l, Ad.2, Ad.3, ...., Ad.n.
- the instructions are read from the instruction register 2 is successively loaded into the processor 4 to be executed there under the command of an instruction counter 6, itself controlled by the processor 4.
- the instruction counter instructions 6 includes an address pointer 8 which designates the address Ad.1, .... Ad.n of register 2 from which the instruction to be loaded into processor 4 must be read during the execution of a sequence of instructions.
- the position of the pointer 8 with respect to the addresses of the instruction register 2 therefore changes as the instructions are executed.
- the instructions Inst. l, Inst. 2, Inst. 3,, Inst.n in register 2 must be executed successively from the first Inst instruction. 1 to the n th instruction Inst.n, that is to say linearly.
- the pointer 8 of the instruction counter 6 initially designates the address Ad. L of the register 2, and the data 10-1 of the corresponding instruction Inst. l are loaded into the processor 4.
- the processor 4 instructs the instruction counter 6 to supply the next instruction (in this case Inst. 2)
- the latter increments the position of the pointer 8 by an evolution unit d address to designate the address Ad.2. This process is repeated and ends when the pointer 8 designates the address Ad.n in order to load the data 10-n of the last instruction Inst.n (dotted lines).
- a series of instructions executed in a linear fashion does not include "jumps" which escape from the sequential progression of the pointer 8 with respect to the successive addresses. This is the case, for example, with a sequence of instructions in microcodes like:
- this sequence will be executed in a linear fashion, the instruction counter 6 being incremented by an address evolution unit during the passage from one instruction to the other.
- An instruction which causes a jump requires, at the level of the instruction counter 6, to determine the address in register 2 of the next instruction following this jump and to position the pointer 8 at this address so that the instruction or the data found there is loaded into processor 4.
- the sequence: Ida txa bra label; jump mul bset 3, t sta n label rts will cause a new value to be loaded into the instruction counter 6 at the location of the code corresponding to the comment "jump".
- sampling points allow the deposit of sampling points using specialized workbenches (also known by the Anglo-Saxon term of "probe stations") allowing the continuous reading of a bit (and the monitoring its evolution over time) or an external change in its value.
- depositing contacts on the register of the instruction counter 6 allows the value of the register being executed to be loaded externally and to cause a connection not provided for by the program designer.
- a jump can, of course, have harmful consequences on the security of the application and lead, for example, to the disclosure of secret data by performing incomplete calculations.
- the invention proposes a method for monitoring the progress of the execution of a sequence of instructions of a computer program, consisting in analyzing the sequence of instructions transmitted to the processor intended for execute the monitored program and verify the result of this analysis with reference data recorded with said program.
- the present invention makes it possible to verify that all the instructions included in the set of instructions considered have indeed been transmitted to the processor in view of their execution. It is assumed that if this is the case, the instructions read in this way will also have been executed.
- the reference data can for example be a preset value so as to correspond to the result of the analysis carried out during the monitoring process only if all of the instructions in the sequence of instructions have actually been analyzed during the course of the program.
- the analysis step comprises the sub-steps of extracting data from each instruction transmitted to the processor and of predetermined calculation on each data thus extracted, and the verification step comprises comparing the result of analysis with reference data.
- the verification step is carried out by a wired comparison of a value contained in a register associated with the monitoring means with the reference value, the latter being able to be entered in the program in a fixed, wired manner (for example in a frozen ROM type memory) once and for all when hiding the code which constitutes the monitored program.
- the verification is caused by an instruction placed at a predetermined location in the program, this instruction containing the aforementioned reference data.
- the instructions of the set of instructions to be monitored are in the form of a value, hexadecimal or decimal, these instructions are treated as simple numerical values during the abovementioned analysis.
- the overall method of monitoring the execution of a sequence of instructions of a computer program can thus comprise the following steps: - during the preparation of the program: incorporate, at at least one predetermined location in a sequence of program instructions, a reference value established according to a given rule applied to identifiable data in each instruction to be monitored, and - during the execution of the part of the program to monitor: obtain said identifiable data in each instruction executed,
- This interruption can be accompanied by an invalidation action for future use of the device comprising the monitored computer program if the non-correspondence between the verification value and the reference value is detected a predetermined number of times.
- the set of instructions to be monitored does not include jumps in its planned course, so that it is expected that all the instructions which it comprises are executed in all the cases envisaged.
- the monitoring method can be implemented separately for a set of instructions devoid of jumps and which precedes the jump, and for at least one set of instructions without jumps which follows this jump.
- the verification value obtained during a previous implementation of the method is erased at each new implementation of the method.
- This arrangement makes it easy to manage the monitoring of different sets of instructions in a program, such as those separated by jumps. It makes it possible in particular to implement the method with the same initial conditions for calculating the verification value for the different sets separated by jumps.
- the verification value can be erased by a simple reset. This value can also be replaced by another predetermined initial value. These reset or initialization operations can be activated by the protected software itself.
- the verification value is obtained as the last value of a series of values which is made to evolve successively with the analysis of each of the instructions considered in the set of instructions.
- the analysis mode allowing this change in the verification value consists in calculating, for each instruction considered following a previous instruction, the result of an operation on both a value extracted from the instruction considered and the result obtained by the same operation performed on this previous instruction.
- an operation can be applied to both the data extracted from this first instruction and a predetermined value (which can then correspond to the aforementioned reset or reset value) , which acts as a "seed" value in the absence of the result of a previous operation.
- the calculation operation can be chosen so that a correct verification value is obtained only if on the one hand the data of all the instructions were considered during the calculation, and on the other hand they were considered in the order provided.
- the calculation operation can consist in applying a hash function, according to a technique known per se in the field of data encryption, such as the hash function SHA-1 established by federal hash standard.
- the abovementioned internal evolution of the monitoring process can be carried out by cryptographically chopping all the operation codes (considered as numerical values) and addresses executed since the last initialization carried out.
- the invention also relates to a device for monitoring the execution of a sequence of instructions of a computer program, characterized in that it includes means for analyzing the sequence of instructions transmitted to the processor intended to execute the monitored program and means for verifying the result of this analysis with reference data recorded with said program.
- the monitoring device advantageously comprises a register making it possible to record intermediate results in the calculation of the verification value.
- This register can be adapted to retain only the last intermediate result in progress. It can be provided to allow the recording of a predetermined value or a reset to zero under the control of the program being executed. In this way, the program can control an initial condition at the level of the content of the register each time the monitoring process is implemented again, this intervening for example after a jump in the program.
- the monitoring device can be integrated into a program execution device to be monitored or into a programmed device which contains the program to be monitored.
- the invention also relates to a program execution device, for example a computer, a microprocessor or microcontroller device such as a smart card reader or a program saved on a card in PCMCIA format, intended to execute a suite instructions of a computer program, characterized in that it comprises means for analyzing the sequence of instructions transmitted for execution and means for verifying that the result of this analysis corresponds with reference data recorded with the program.
- the invention also relates to a programmed device intended to operate with the abovementioned program execution device and comprising a series of instructions, characterized in that it furthermore comprises pre-established reference data as a function of data contained in said instructions and intended to allow verification of the sequence of instructions analyzed by the aforementioned program execution device.
- the programmed device for example a smart card or a mechanism control member, such as an ABS braking system, can integrate the program to be monitored in a fixed memory of the ROM type.
- the reference data are advantageously recorded in the form of pre-wired value (s) fixed in the memory once and for all during the masking of the code.
- the present invention also relates to a device for programming a device for executing a program intended to operate in association with the aforementioned programmed device, characterized in that it comprises means for registering, at at least one predetermined location in a sequence of program instructions, a reference value calculated according to a preset mode from data included in each instruction d 'a set of instructions whose execution we want to monitor.
- the invention also relates to a virtual machine or interpreter interpreting a critical code, characterized in that it implements the aforementioned monitoring method for the execution of this critical code.
- the aforementioned devices for monitoring, executing a program, or programming, or even devices equipped with such programs can be equipped with all the means necessary to carry out the various possible optional aspects of the aforementioned monitoring method.
- the monitoring unit could be made up of registers whose content at all times constitutes the internal state of the monitoring unit.
- a specific input from the monitoring unit allows its reset (RESET), typically by erasing the contents of the monitoring unit.
- RESET reset
- This function can be activated at any time by the software running and can, for example, be carried out by adding a new operation code in assembler (for example "clr us") or by manipulating a given bit in the memory of the protected component (for example: setb 3, service).
- the monitoring unit compares its internal state with a given chain supplied by the protected software. This can for example be achieved by copying inside the monitoring unit (using a "lda-sta" loop) the value to which the software wishes to compare the internal state. Once the copying of the value is complete, the monitoring unit compares it to its internal state and adopts the following behavior: if the state of the monitoring unit is equal to the value presented by the protected software, resume the execution normally, otherwise program execution is stopped (forcing the user to reset the card to zero), possibly by first ratifying a false counter executions in a non-volatile memory of the EEPROM type having the effect of definitive blocking of the card if its value exceeds a reasonable limit (for example
- the monitoring unit can permanently keep a cryptographic hash of the instruction codes and addresses executed since its last reset.
- the monitoring mechanism can be adapted to the interpretation of code in a virtual machine (Java "byte code", for example).
- the compiler can calculate the hash value of a portion of byte code, integrate it into an attribute of a structure known by the Anglo-Saxon term of "class file” produced and add to the generated byte code codes known as Anglo-Saxon term of additional "opcodes" corresponding to the reset of the monitoring unit and the call to the verification function
- the virtual machine will act as the monitoring unit and when it encounters the opcode of check, will check the value of the current hash compared to the value of the theoretical hash contained in the class file.
- FIG. 2 is a simplified block diagram of a program execution device aimed at explaining the operating principle of a monitoring unit in accordance with a first embodiment of the invention
- FIG. 3 is a flowchart the monitoring method according to the invention
- FIG. 4 is a flow diagram of a variant of the monitoring method according to the invention.
- FIG. 5 is a simplified block diagram of a program execution device intended to explain the operating principle of a monitoring unit in accordance with a second embodiment of the invention
- FIG. 6 is a flow diagram of the monitoring method according to the invention, adapted to the second embodiment, and - Figure 7 shows schematically sets of instructions of a program with branching further containing instructions specific to the monitoring process.
- FIG. 2 represents the basic elements of a program execution device 20 in the broad sense II can be a computer intended to execute a program in a high level language, a microprocessor or a microcontroller, the latter operating from low-level language programs.
- the execution device 20 can be a smart card reader intended to manage banking, telephone or other service transactions. The program to check is then physically contained in the smart card
- the processor 4 executes a program portion stored in an instruction register 2 in the form of microcodes
- the operational part of this program portion comprises a sequence of n instructions (where n is an integer greater than 1) designated respectively Inst 1, Inst 2, Inst 3,, Inst n
- the microcodes that make up the instructions are in the form of numeric values, which can be decimal or hexadecimal
- the first instruction Inst 1 is equal to 40
- This figure is a code which corresponds to an instruction recognized by the processor, but it has the same binary structure as the numerical value 40 None of the instructions Inst 1, Inst 2, Inst 3,, Inst n orders a jump to another instruction outside the linear sequence of execution of the instructions
- the normal and expected sequence of this portion of program necessarily requires the execution of each of the instructions in succession, in starting with the instruction Inst 1 and ending with the instruction Inst.n
- the instruction counter 6 (already described) will position its pointer 8 successively at the address of each of the instructions Inst 1 to Inst n in the instruction register 2 as and when they must be loaded into the processor
- the monitoring unit 22 is described as being integrated into the program execution device 20
- the monitoring unit 22 can just as easily be integrated with the device which includes the program to be monitored, by being example incorporated in a smart card whose program it contains in memory is to be monitored, without this changing the principles which will be described below
- the monitoring unit 22 includes a register 24 intended to temporarily store data included in an instruction Inst 1, Inst 2, Inst 3,, Inst n and a computer 26 intended to execute an operation on this data
- the implementation of the monitoring unit requires the addition of two new instructions to the n instructions Inst 1, Inst 2, Inst 3,, Inst n of the program a first monitoring instruction Inst 0 placed before the first instruction Inst.l of the program and a second Inst n + 1 monitoring instruction placed after the last Inst n of the program
- the instruction counter 6 is initially controlled to position its pointer 8 at the address of the first monitoring instruction Inst 0
- This instruction commands the monitoring unit to initialize a hash value VH contained in its register 24
- each instruction is subjected by the computer 26 to a hashing algorithm, such as the SHA-1 hashing specified by the federal hashing standard
- a hashing algorithm such as the SHA-1 hashing specified by the federal hashing standard
- This NHi value serves as the basis for the hash operation with the following instruction Inst i + 1
- the hash result VHi + 1 thus obtained for the instruction Inst.i + 1 is then written in place of the hash result VHi previously obtained
- the second monitoring instruction Inst n + 1 is loaded into the monitoring unit 22
- This instruction comprises two components, a reference value Vref and a command, intended for the computer 26, for comparing this reference value Vref with the value of the last hash result entered in the register 24
- This last value therefore corresponds to the result of the hash VHn obtained from the numerical value of the instruction Inst n (equal to 36 in the figure) and the VHn-1 hash result obtained for the previous Inst n-1 instruction
- the computer 26 compares the value VHn in the register 22 with the reference value Vref specified in this monitoring instruction
- the reference value Vref is determined during the preparation of the recorded program in order to correspond to the expected value VHn for the result of successive hashes of the values of the instructions Inst 1, Inst 2, Inst 3,, Inst n
- This value Vref can be calculated in advance using the same procedure for successively hashing the instructions Inst 1, Inst 2, Inst 3,, Inst n as used by the monitoring unit 22
- the value Vref is wired in a frozen memory so as not to cannot be altered by malicious act
- the monitoring unit 22 finds, by executing the monitoring instruction Inst n + 1, that there is identity between the values Vref and NHn mentioned above, it is concluded that all Inst. l, Inst.2, Inst.3, ...., Inst.n. have indeed been transmitted to processor 4 in view of their execution.
- the monitoring unit 22 finds that there is no identity between the values Vref and NHn, it is concluded that either all the instructions Inst. l, Inst.2, Inst.3, ...., Inst.n. have not been received and transmitted by the monitoring unit, or they have not been received in the expected sequential order. In this case, an action can be provided to alert the user or the owner of the program, or to prevent the program from continuing. In the example, such an action is transmitted from the monitoring unit 22 to the processor 4 in the form of a command to interrupt the Int program.
- the monitoring method as carried out by the means of FIG. 2 will now be described with reference to the flow diagram represented in FIG. 3. It is assumed that the program or the part of the program to be monitored has been prepared correctly for the monitoring method. by incorporating the first and second monitoring instructions respectively at the beginning and at the end.
- the monitoring unit 22 positions itself on a monitoring start routine 30, the first step 32 of which is waiting for the first monitoring instruction (Inst.O).
- the monitoring unit 22 When the first monitoring instruction Inst.O is received, the monitoring unit 22 performs a step 34 of initialization (by resetting to zero) of an instruction counter and of the register 24.
- the resetting of the register 24 is a way of placing a seed value in this register to start a sequence of hash operations, as will be explained later. These operations can be directly controlled by the first monitoring instruction or can be simply triggered by the latter from a routine associated with the monitoring unit 22.
- the reset can be achieved by adding a new assembly code in assembler (for example "clr us”), or by manipulating a given bit in the memory of the program execution device 20 Such an order can be "setb 3, service”.
- the numeric value of this first Inst instruction. l is then subjected to a hashing operation with the value contained in the register 24 (step 40).
- this last value is the initialization value, that is to say 0.
- the hashing operation well known in itself, here consists in acting on the value of l instruction n considered a mathematical operator f (VHn-l, Vinst.n), where NHn-1 is the result of a previous hash operation (or the initialization value in the case of the first instruction) recorded in the register 24 and Vinst.n is the numerical value of the instruction n considered.
- the NHn result of this hashing operation is then recorded in register 24 in place of the previous VHn-1 result (step 42).
- this procedure for updating the content of the register at each hash operation makes it possible to permanently keep a cryptographic hash of the instruction codes and addresses executed since the last initialization.
- the instruction is transmitted to the processor 4 for execution (step 44).
- the monitoring unit 22 determines whether the program or the part of the program to be monitored contains another instruction to be executed (step 46).
- the procedure performs a loopback B1 towards step 36 of incrementation from n to n + 1.
- the value of the next instruction (Inst.2) will then be read from the instruction register 2 and subjected to the hash operation in the same way as for the instruction Inst.1. Only, the hashing is carried out this time with on the one hand the numerical value of the instruction Inst.2 and the result obtained during the previous hashing operation, that is to say the value NHI (n being here equal to 2) which is then in register 24.
- Steps 42 to 46 of the method are carried out in the same manner as for the first instruction. In this way, all of the steps 36 to 46 continue in a loop for each instruction Inst.l, Inst.2, Inst.3, ...., Inst.n. read from the instruction register 2, with the hashing taking place, for an Inst.i instruction (where i is an integer from 1 to n) with the value VHni-1 in the register 24 and the value Vinst.i.
- Inst. l, Inst.2, Inst.3, ...., Inst.n. have thus been processed by the monitoring unit 22, which receives the second monitoring instruction Inst. n + 1, this following the last Inst.n instruction of the program or part of the monitored program.
- This second monitoring instruction commands the monitoring unit 22 to extract the reference value Vref from the program (step 48) and to compare the content of the register 24 with this value Vref (step 50).
- This command can be carried out using a "lda-sta" loop.
- the value contained in the register 24 at this stage is the result VHn of the hash performed with the result NHn-1 of the previous hash and the numerical value of the instruction n (equal to 36 in the example in Figure 2).
- the reference value Vref has been determined beforehand during the preparation of the program for knowledge of hash operations, in order to be equal to what the monitoring unit 22 should return as value NHn if all the instructions Inst. l, Inst.2, Inst.3, ...., Inst.n. have indeed been transferred to processor 4.
- the result of the comparison makes it possible to control the proper execution of the instructions Inst.
- VHn Vref (step 52)
- the monitoring operation is then terminated with regard to the program or the part of the program containing the instructions Inst.1, Inst.2, Inst.3, ...., Inst.n.
- the monitoring procedure then returns to the start phase 30 awaiting a new first monitoring instruction.
- the comparison step 50 reveals that there is no identity between the compared values (NHn ⁇ Vref)
- all the instructions Inst. l, Inst 2, Inst.3,. , Inst have not been transferred to processor 4, or have not been transferred in the correct order (step 54).
- the monitoring unit 22 commands an action (step 56), such as interrupting the program and / or recording that the program has not run correctly.
- the monitoring process takes place as in the previous case with regard to steps 30 to 38 (FIGS. 3 and 4).
- step 38 of reading the value of the instruction Vinst.n from the instruction register 2 the monitoring unit 22 proceeds to record this value (step 39).
- This recording can be carried out in an internal register of the computer 26, in a dedicated section of the register 24, in a specific memory (not shown) of the monitoring unit 22, or even in a memory external to the monitoring unit. 22, as soon as it is accessible by it. Then, the monitoring unit 22 proceeds to the steps 44 and 46 previously described.
- step 39 of recording the Vinst.n values is in the loop Bl connecting the step 46 to the step 36 of incrementing n by a unit, so that each of the Vinst.n values is thus recorded until the detection of the second monitoring instruction in step 46.
- the monitoring unit 22 reads the reference value Vref (step 48) and performs hashing in step 49 according to the same algorithm as in the previously described steps 40 and 42 of FIG. 3, based on the set of Vinst values. previously registered.
- the final hash value VHn is then the same as in the case of the method of FIG. 3. It will be noted that it is possible to reverse the order of steps 48 and 49.
- FIG. 5 is a simplified block diagram of the monitoring unit 22 in accordance with a second embodiment of the invention. Its integration into the program execution device 20 is the same as for the first embodiment described with reference to FIGS. 2 and 3 as regards its operation with the instruction counter 6, the instruction register 2 and processor 4, and will not be repeated for the sake of brevity.
- the monitoring unit 22 differs from that of the first embodiment essentially by the fact that it further comprises a memory 60 which records the number of times that the execution of a series of instructions Inst. l-Inst.n did not run correctly according to the criteria explained with reference to Figure 3 or 4
- the memory 60 is embodied in the form of a fixed memory (non-volatile) with electrically erasable content (commonly known by the English name EEPROM).
- the memory 60 is functionally connected to the computer 26 so that it stores a count value VC incremented by one on each observation of an incorrect execution in the series of instructions monitored.
- This counting value VC thus makes it possible to detect the number of incorrect sequences of the series of instructions and to act accordingly, for example by invalidating any future use of the device containing the program (for example a smart card) if this number crosses a threshold value.
- the flow diagram of FIG. 6 gives an example of the use of the counting value VC to control the device of program execution. This example includes all of the steps 30 to 54 of the flow diagram of FIG. 3 or the similar steps of FIG. 4.
- the calculation unit 26 increments the counting value VC in the memory 60, initially equal to 0, of one unit (step 62). Then, it checks whether the count value VC thus incremented has reached a predetermined threshold value VC threshold (step 64).
- This threshold value VCseuil corresponds to the number of times that it is admitted that the unexpected execution of the instructions Inst. l-Inst.n can occur in the programmed device before taking definitive measures to deal with such a failure.
- the monitoring unit 22 establishes the interrupt command Int. as previously described with a simple alert message intended for the user and / or the operating system (step 66) and transmits it to the processor 4 (step 68).
- the monitoring unit 22 then establishes the interrupt command Int. as previously described with an order to prohibit any future use of the programmed device containing the instructions executed in an unexpected manner (step 70) and transmits it to the processor (step 68). In this case, it will not be possible to reuse this device only after having re-programmed the memory 60. In the case where this memory 60 is in the form of EEPROM or other non-volatile memory, such re-programming is very difficult to do it in a roundabout way.
- the Int. of interrupting the program accompanied by a transmission of an alert message or of an invalidation command for future use can be executed either at the processor level or at the level of the monitoring unit 22. It will now be described by with reference to FIG. 7 how the monitoring unit 22 in accordance with the present invention can be implemented for monitoring a program which provides for jumps or connections.
- the program execution device 20 comprises in the instruction register 2 a program or part of a program intended for the processor 4, consisting of three sets of instructions:
- the three sets of instructions EU, EI2 and EI3 do not have jumps within their sequence of instructions. (In the case of the first set of instructions, the conditional jump to the EIl-j instruction is at the end of the sequence.)
- the first monitoring instruction and the second monitoring instruction described above with reference to FIGS. 2 to 6 are added to the head and to the tail of each set of instructions EU, EI2 and EI3 respectively.
- the monitoring of the program or of the program part composed by the EU, EI2 and EI3 sets then proceeds as follows.
- the monitoring unit 22 first positions itself in the monitoring start phase (step 30, FIG. 3).
- the process begins with the execution of the first set of EU instructions.
- the first monitoring instruction placed at the header of this set will first be loaded into the monitoring unit 22.
- the monitoring unit initializes its instruction counter and its value register 24 of hash VH (step 34, figure 3) and proceeds to the hash routine for each instruction Inst.EIl-1 to Inst. EIl-j of first set of instructions according to steps 36 to 46 of there figure 3.
- the last instruction E11-j of the assembly which controls the connection is thus also subject to hashing by the monitoring unit 22 before being transmitted to the processor 4.
- the following instruction is the second monitoring instruction (step 46, FIG. 3) at the end of the first set of instructions EU, which causes the phase of comparison between the last hash value recorded in register 24 with the reference value Vref associated with this second instruction.
- the monitoring unit 22 proceeds to the steps of interrupting the program 54 and 56 ( Figures 3 or 4) or 54 to 70 ( Figure 6).
- this interruption is expected to occur even before the program has performed conditional branching. This can be achieved, for example, by associating the jump instruction with a validation wait instruction from the monitoring unit, using known programming techniques.
- step 50 If it is detected in step 50 (FIG. 2) of comparison that the last hash value thus recorded actually corresponds to the reference value Vref, the monitoring unit authorizes the execution of the conditional branch determined by the last instruction Is it all. The program then continues to one or the other of the second or third sets of instructions in accordance with the connection conditions laid down by this last instruction.
- the instruction counter 6 passes the instruction pointer 8 directly from the second monitoring instruction at the tail of the first set of instructions EU to the first monitoring instruction at the head of the third set of instructions EI3.
- the monitoring unit will execute this new first instruction by resetting the instruction counter and the register 24.
- the monitoring procedure for this third set of instructions therefore continues in exactly the same way as for the first set of instructions.
- the monitoring unit 22 will successively hash each of the instructions read from this set, starting the hash with the same "seed" value (which here corresponds to zero) as for the first set.
- the second monitoring instruction this time makes it possible to detect a course not provided for in the localized execution at the level of this third set of instructions and to carry out the same type of action in step 56. It will be understood that the explanation given for a connection to the third assembly applies strictly analogously in the case of a connection to the second set of instructions following the execution of the instruction to connect the first set of instructions.
- the monitoring unit 22 It is possible to allow the monitoring unit 22 to count not only the number of unplanned sequences in a program comprising jumps, but also the independently monitored instruction sets in which they occurred.
- monitoring unit 22 can either be materialized separately from the processor 4 or functionally integrated therewith.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Storage Device Security (AREA)
- Flow Control (AREA)
Abstract
Description
Claims
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000604312A JP4172745B2 (ja) | 1999-03-09 | 2000-01-24 | プロセッサによる命令シーケンスの実行を監視する方法および監視装置 |
DE60001393T DE60001393T2 (de) | 1999-03-09 | 2000-01-24 | Verfahren zur überwachung des programmablaufs |
MXPA01009056A MXPA01009056A (es) | 1999-03-09 | 2000-01-24 | Procedimiento de supervision del desarrollo de un programa. |
US09/936,174 US7168065B1 (en) | 1999-03-09 | 2000-01-24 | Method for monitoring program flow to verify execution of proper instructions by a processor |
AT00900650T ATE232616T1 (de) | 1999-03-09 | 2000-01-24 | Verfahren zur überwachung des programmablaufs |
AU30589/00A AU3058900A (en) | 1999-03-09 | 2000-01-24 | Method for monitoring a programme flow |
EP00900650A EP1161725B1 (fr) | 1999-03-09 | 2000-01-24 | Procede de surveillance du deroulement d'un programme |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9902924A FR2790844B1 (fr) | 1999-03-09 | 1999-03-09 | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
FR99/02924 | 1999-03-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2000054155A1 true WO2000054155A1 (fr) | 2000-09-14 |
Family
ID=9542995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/FR2000/000150 WO2000054155A1 (fr) | 1999-03-09 | 2000-01-24 | Procede de surveillance du deroulement d'un programme |
Country Status (10)
Country | Link |
---|---|
US (1) | US7168065B1 (fr) |
EP (1) | EP1161725B1 (fr) |
JP (1) | JP4172745B2 (fr) |
CN (1) | CN1350675A (fr) |
AT (1) | ATE232616T1 (fr) |
AU (1) | AU3058900A (fr) |
DE (1) | DE60001393T2 (fr) |
FR (1) | FR2790844B1 (fr) |
MX (1) | MXPA01009056A (fr) |
WO (1) | WO2000054155A1 (fr) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003029979A2 (fr) * | 2001-09-28 | 2003-04-10 | Infineon Technologies Ag | Unite commandee par programme |
WO2003042547A2 (fr) | 2001-11-16 | 2003-05-22 | Giesecke & Devrient Gmbh | Execution controlee d'un programme par un support de donnees portable |
EP1357459A1 (fr) * | 2002-04-23 | 2003-10-29 | STMicroelectronics S.A. | Processeur securisé contre les deroutements |
FR2841015A1 (fr) * | 2002-06-18 | 2003-12-19 | St Microelectronics Sa | Controle d'execution d'un programme |
FR2849226A1 (fr) * | 2002-12-20 | 2004-06-25 | Oberthur Card Syst Sa | Procede et dispositif de securisation de l'execution d'un programme informatique. |
EP1460546A1 (fr) * | 2003-03-18 | 2004-09-22 | SCHLUMBERGER Systèmes | Procédé de sécurisation de l'exécution d'un programme dans un ensemble électronique contre les attaques par introduction d'erreurs |
FR2864655A1 (fr) * | 2003-12-31 | 2005-07-01 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
WO2006024903A1 (fr) * | 2004-08-30 | 2006-03-09 | Axalto Sa | Verification d'integrite d'un code d'application pendant l'execution d'une machine virtuelle |
FR2886027A1 (fr) * | 2005-05-20 | 2006-11-24 | Proton World Internatinal Nv | Detection d'erreur de sequencement dans l'execution d'un programme |
EP1870829A1 (fr) | 2006-06-23 | 2007-12-26 | Microsoft Corporation | Protéger les logiciels en imposant l'intégrité du flux des données |
US8161293B2 (en) | 2005-04-20 | 2012-04-17 | Stmicroelectronics S.A. | Protection of the execution of a program executed by an integrated circuit |
US8843761B2 (en) | 2007-08-16 | 2014-09-23 | Siemens Aktiengesellschaft | Method and apparatus for protection of a program against monitoring flow manipulation and against incorrect program running |
CN107194258A (zh) * | 2017-04-06 | 2017-09-22 | 珠海格力电器股份有限公司 | 监测代码漏洞的方法、装置及电子设备、存储介质 |
CN111427723A (zh) * | 2020-03-19 | 2020-07-17 | 阳光电源股份有限公司 | 基于AutoSAR的程序流监控方法及应用装置 |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149887A1 (en) * | 2002-02-01 | 2003-08-07 | Satyendra Yadav | Application-specific network intrusion detection |
DE10340411B4 (de) | 2003-09-02 | 2005-10-13 | Infineon Technologies Ag | Vorrichtung und Verfahren zur sicheren Ausführung eines Programms |
US7424709B2 (en) * | 2003-09-15 | 2008-09-09 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
EP1538509A1 (fr) * | 2003-12-04 | 2005-06-08 | Axalto S.A. | Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement |
JP4282472B2 (ja) * | 2003-12-26 | 2009-06-24 | 株式会社東芝 | マイクロプロセッサ |
DE102004007614A1 (de) * | 2004-02-17 | 2005-09-01 | Giesecke & Devrient Gmbh | Datenträger mit Ablaufdiagnosespeicher |
US7584386B2 (en) | 2004-04-21 | 2009-09-01 | Stmicroelectronics Sa | Microprocessor comprising error detection means protected against an attack by error injection |
CN100465982C (zh) * | 2004-07-16 | 2009-03-04 | 松下电器产业株式会社 | 应用执行装置及应用执行装置的应用执行方法 |
US8364792B2 (en) * | 2005-03-09 | 2013-01-29 | Vudu, Inc. | Method and system for distributing restricted media to consumers |
US7873947B1 (en) * | 2005-03-17 | 2011-01-18 | Arun Lakhotia | Phylogeny generation |
FR2883998A1 (fr) * | 2005-04-05 | 2006-10-06 | St Microelectronics Sa | Coprocesseur securise comprenant un circuit de detection d'un evenement |
FR2884000A1 (fr) | 2005-04-05 | 2006-10-06 | St Microelectronics Sa | Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur |
EP1894101A1 (fr) * | 2005-06-23 | 2008-03-05 | Bayerische Motorenwerke Aktiengesellschaft | Procede et dispositif pour surveiller un acces non autorise a une memoire d'une unite de calcul, en particulier dans un vehicule automobile |
FR2895814A1 (fr) * | 2006-01-04 | 2007-07-06 | Gemplus Sa | Procede de securisation de l'execution d'un programme d'ordinateur |
US7900060B2 (en) * | 2006-02-17 | 2011-03-01 | Vudu, Inc. | Method and system for securing a disk key |
US8239686B1 (en) * | 2006-04-27 | 2012-08-07 | Vudu, Inc. | Method and system for protecting against the execution of unauthorized software |
DE102006021494A1 (de) * | 2006-05-09 | 2007-11-15 | Giesecke & Devrient Gmbh | Verfahren und Vorrichtung zur Erkennung nichteindeutiger Hashwerte |
US7587663B2 (en) * | 2006-05-22 | 2009-09-08 | Intel Corporation | Fault detection using redundant virtual machines |
WO2007145366A1 (fr) * | 2006-06-15 | 2007-12-21 | Kabushiki Kaisha Toshiba | Dispositif électronique portable et SA méthode de COMMANDE |
DE102006037810A1 (de) | 2006-08-11 | 2008-02-14 | Giesecke & Devrient Gmbh | Sichere Programmcodeausführung |
EP1923789A1 (fr) | 2006-11-16 | 2008-05-21 | Nagracard S.A. | Procédé de contrôle de l'exécution d'un programme par un microcontrôleur |
US7644322B2 (en) * | 2006-11-21 | 2010-01-05 | Atmel Corporation | Hardware flow control monitor |
DE102006057297A1 (de) * | 2006-12-05 | 2008-06-12 | Giesecke & Devrient Gmbh | Verfahren zur Überwachung des Ablaufs eines Programms |
US8429623B2 (en) * | 2007-01-16 | 2013-04-23 | Oracle America Inc. | Processing engine for enabling a set of code intended for a first platform to be executed on a second platform |
EP2043017A1 (fr) * | 2007-04-12 | 2009-04-01 | Gemplus | Procédé d'exécution sécurisée d'une application |
FR2915007A1 (fr) * | 2007-04-12 | 2008-10-17 | St Microelectronics Sa | Protection de l'execution d'un programme |
CN101689233B (zh) * | 2007-07-05 | 2013-01-02 | Nxp股份有限公司 | 安全敏感系统中的微处理器 |
JP4661854B2 (ja) * | 2007-11-09 | 2011-03-30 | 株式会社デンソー | 検査システム及びプログラム |
JP5060372B2 (ja) | 2008-04-10 | 2012-10-31 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
CN101299849B (zh) * | 2008-04-25 | 2010-05-12 | 中兴通讯股份有限公司 | 一种WiMAX终端及其启动方法 |
WO2009144531A1 (fr) * | 2008-05-27 | 2009-12-03 | Freescale Semiconductor, Inc. | Dispositif à semi-conducteurs et procédé de validation d’un état de ce dispositif |
JP5200664B2 (ja) * | 2008-05-28 | 2013-06-05 | 大日本印刷株式会社 | メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム |
JP5200686B2 (ja) * | 2008-06-18 | 2013-06-05 | 大日本印刷株式会社 | 情報処理装置、正常処理判別方法、及び情報処理プログラム |
EP2262259A1 (fr) | 2009-06-08 | 2010-12-15 | Nagravision S.A. | Procédé pour le contrôle l'exécution d'instructions de programme de traitement de données dans un module sécurisé |
FR2958764B1 (fr) * | 2010-04-07 | 2013-01-25 | Proton World Int Nv | Compteur d'evenements dans un systeme adapte au langage javacard |
CN102053927B (zh) * | 2010-12-29 | 2013-11-27 | 北京握奇数据系统有限公司 | 攻击监控方法及具有攻击监控功能的装置 |
FR2970357B1 (fr) * | 2011-01-07 | 2013-01-11 | Oridao | Dispositif et procede de tracage |
US20120179898A1 (en) * | 2011-01-10 | 2012-07-12 | Apple Inc. | System and method for enforcing software security through cpu statistics gathered using hardware features |
US8725644B2 (en) * | 2011-01-28 | 2014-05-13 | The Active Network, Inc. | Secure online transaction processing |
DE102011005209B4 (de) | 2011-03-07 | 2016-06-23 | Infineon Technologies Ag | Programmanweisungsgesteuerte Instruktionsflusskontrolle |
DE102011006000B4 (de) * | 2011-03-23 | 2015-01-15 | Infineon Technologies Ag | Signaturaktualisierung durch Codetransformation |
FR2977342A1 (fr) * | 2011-06-30 | 2013-01-04 | Proton World Int Nv | Verification d'integrite d'un programme execute par un circuit electronique |
CN103718182B (zh) * | 2011-08-09 | 2016-11-23 | 飞思卡尔半导体公司 | 电子器件和计算机程序产品 |
US8417609B2 (en) * | 2011-08-19 | 2013-04-09 | Bank Of America Corporation | Methods and systems for modeling deposits' data |
CN103455445A (zh) * | 2012-05-31 | 2013-12-18 | 上海华虹集成电路有限责任公司 | 智能卡系统抵抗故障攻击的方法 |
US8745594B1 (en) * | 2013-05-10 | 2014-06-03 | Technobasics Software Inc. | Program flow specification language and system |
CN103383566B (zh) * | 2013-06-24 | 2015-10-28 | 奇瑞汽车股份有限公司 | 一种程序流监控方法 |
US9323920B2 (en) * | 2013-10-23 | 2016-04-26 | Infineon Technologies Ag | Data processing arrangement and method for ensuring the integrity of the execution of a computer program |
TWI712915B (zh) | 2014-06-12 | 2020-12-11 | 美商密碼研究公司 | 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體 |
JP6318976B2 (ja) * | 2014-08-22 | 2018-05-09 | 富士通株式会社 | デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法 |
FR3035240B1 (fr) * | 2015-04-15 | 2018-04-06 | Rambus Inc. | Procede de securisation de l'execution d'un programme |
EP3091437A1 (fr) | 2015-05-08 | 2016-11-09 | Robert Bosch Gmbh | Procédé et appareil permettant de surveiller un flux de commande d'un programme informatique |
US10785259B2 (en) | 2016-04-19 | 2020-09-22 | Mitsubishi Electric Corporation | Relay device |
US10552413B2 (en) * | 2016-05-09 | 2020-02-04 | Sap Se | Database workload capture and replay |
CN105955115A (zh) * | 2016-05-10 | 2016-09-21 | 重庆长安汽车股份有限公司 | 一种汽车整车控制器的程序流监控方法和装置 |
GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
US10298702B2 (en) | 2016-07-05 | 2019-05-21 | Sap Se | Parallelized replay of captured database workload |
EP3279826A1 (fr) * | 2016-08-04 | 2018-02-07 | Nagravision SA | Vérification de séquence |
DE112017006528T5 (de) * | 2017-01-25 | 2019-09-26 | Mitsubishi Electric Corporation | Angriff/abnormalität-detektionsvorrichtung, angriff/abnormalität-detektionsverfahren und angriff/abnormalität-detektionsprogramm |
US10592528B2 (en) | 2017-02-27 | 2020-03-17 | Sap Se | Workload capture and replay for replicated database systems |
US10345801B2 (en) * | 2017-08-21 | 2019-07-09 | Honeywell International Inc. | Ensuring a correct program sequence in a dual-processor architecture |
US10698892B2 (en) | 2018-04-10 | 2020-06-30 | Sap Se | Order-independent multi-record hash generation and data filtering |
CN108646708B (zh) * | 2018-05-02 | 2020-05-22 | 阳光电源股份有限公司 | 一种程序流监控方法及系统 |
WO2020027815A1 (fr) * | 2018-07-31 | 2020-02-06 | Hewlett-Packard Development Company, L.P. | Exécution d'instructions |
US11138085B2 (en) | 2018-10-09 | 2021-10-05 | Argo AI, LLC | Execution sequence integrity monitoring system |
US11144375B2 (en) | 2018-10-09 | 2021-10-12 | Argo AI, LLC | Execution sequence integrity parameter monitoring system |
US11709752B2 (en) | 2020-04-02 | 2023-07-25 | Sap Se | Pause and resume in database system workload capture and replay |
US11615012B2 (en) | 2020-04-03 | 2023-03-28 | Sap Se | Preprocessing in database system workload capture and replay |
KR20230144611A (ko) * | 2021-04-06 | 2023-10-16 | 구글 엘엘씨 | 보안 암호화 코프로세서 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0012794A1 (fr) * | 1978-12-22 | 1980-07-09 | International Business Machines Corporation | Procédé et dispositif pour vérifier les signaux de commande déduits de l'instruction d'une unité électronique de traitement de données |
US4266272A (en) * | 1978-10-12 | 1981-05-05 | International Business Machines Corporation | Transient microcode block check word generation control circuitry |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL168163B1 (pl) * | 1991-01-18 | 1996-01-31 | Thomson Multimedia Sa | Sposób kontroli dostepu i/lub identyfikacji PL PL |
US5347581A (en) * | 1993-09-15 | 1994-09-13 | Gemplus Developpement | Verification process for a communication system |
AU1690597A (en) * | 1996-01-11 | 1997-08-01 | Mitre Corporation, The | System for controlling access and distribution of digital property |
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
JP2000501217A (ja) * | 1996-01-24 | 2000-02-02 | サン・マイクロシステムズ・インコーポレイテッド | 配列アクセス境界チェックを加速したプロセッサ |
US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
US6275938B1 (en) * | 1997-08-28 | 2001-08-14 | Microsoft Corporation | Security enhancement for untrusted executable code |
US6199181B1 (en) * | 1997-09-09 | 2001-03-06 | Perfecto Technologies Ltd. | Method and system for maintaining restricted operating environments for application programs or operating systems |
US5983348A (en) * | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US5991414A (en) * | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
US6279123B1 (en) * | 1997-09-15 | 2001-08-21 | Lucent Technologies, Inc. | System for viewing and monitoring embedded processor operation |
US6023764A (en) * | 1997-10-20 | 2000-02-08 | International Business Machines Corporation | Method and apparatus for providing security certificate management for Java Applets |
FR2776410B1 (fr) * | 1998-03-20 | 2002-11-15 | Gemplus Card Int | Dispositifs pour masquer les operations effectuees dans une carte a microprocesseur |
US6092120A (en) * | 1998-06-26 | 2000-07-18 | Sun Microsystems, Inc. | Method and apparatus for timely delivery of a byte code and serialized objects stream |
US6418420B1 (en) * | 1998-06-30 | 2002-07-09 | Sun Microsystems, Inc. | Distributed budgeting and accounting system with secure token device access |
US6581206B2 (en) * | 1999-11-12 | 2003-06-17 | Sun Microsystems, Inc. | Computer program language subset validation |
US6859533B1 (en) * | 1999-04-06 | 2005-02-22 | Contentguard Holdings, Inc. | System and method for transferring the right to decode messages in a symmetric encoding scheme |
US6402028B1 (en) * | 1999-04-06 | 2002-06-11 | Visa International Service Association | Integrated production of smart cards |
US6615264B1 (en) * | 1999-04-09 | 2003-09-02 | Sun Microsystems, Inc. | Method and apparatus for remotely administered authentication and access control |
US6546546B1 (en) * | 1999-05-19 | 2003-04-08 | International Business Machines Corporation | Integrating operating systems and run-time systems |
US6327700B1 (en) * | 1999-06-08 | 2001-12-04 | Appliant Corporation | Method and system for identifying instrumentation targets in computer programs related to logical transactions |
US6510352B1 (en) * | 1999-07-29 | 2003-01-21 | The Foxboro Company | Methods and apparatus for object-based process control |
FR2804234B1 (fr) * | 2000-01-24 | 2003-05-09 | Gemplus Card Int | Procede de protection contre le vol de la valeur d'authentification pour cartes a puce(s) multi-applications, cartes a puce(s) mettant en oeuvre le procede et terminaux susceptibles de recevoir lesdites cartes |
US6557168B1 (en) * | 2000-02-25 | 2003-04-29 | Sun Microsystems, Inc. | System and method for minimizing inter-application interference among static synchronized methods |
US6507904B1 (en) * | 2000-03-31 | 2003-01-14 | Intel Corporation | Executing isolated mode instructions in a secure system running in privilege rings |
CA2305249A1 (fr) * | 2000-04-14 | 2001-10-14 | Branko Sarcanin | Coffre-fort virtuel |
US6951018B2 (en) * | 2000-05-30 | 2005-09-27 | Sun Microsystems, Inc. | Method and apparatus for efficiently tracking monitors |
FR2809892B1 (fr) * | 2000-05-31 | 2002-09-06 | Gemplus Card Int | Procede de protection contre la modification frauduleuse de donnees envoyees a un support electronique securise |
FR2810481B1 (fr) * | 2000-06-20 | 2003-04-04 | Gemplus Card Int | Controle d'acces a un moyen de traitement de donnees |
US6862684B1 (en) * | 2000-07-28 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for securely providing billable multicast data |
CA2315449A1 (fr) * | 2000-08-10 | 2002-02-10 | Ibm Canada Limited-Ibm Canada Limitee | Generation de traces d'execution d'applications et determination de problemes connexes |
FR2814557B1 (fr) * | 2000-09-27 | 2002-12-27 | Gemplus Card Int | Protection contre l'exploitation abusive d'une instruction dans une memoire |
-
1999
- 1999-03-09 FR FR9902924A patent/FR2790844B1/fr not_active Expired - Fee Related
-
2000
- 2000-01-24 EP EP00900650A patent/EP1161725B1/fr not_active Expired - Lifetime
- 2000-01-24 MX MXPA01009056A patent/MXPA01009056A/es unknown
- 2000-01-24 AU AU30589/00A patent/AU3058900A/en not_active Abandoned
- 2000-01-24 JP JP2000604312A patent/JP4172745B2/ja not_active Expired - Lifetime
- 2000-01-24 DE DE60001393T patent/DE60001393T2/de not_active Expired - Lifetime
- 2000-01-24 US US09/936,174 patent/US7168065B1/en not_active Expired - Lifetime
- 2000-01-24 AT AT00900650T patent/ATE232616T1/de not_active IP Right Cessation
- 2000-01-24 CN CN00807379A patent/CN1350675A/zh active Pending
- 2000-01-24 WO PCT/FR2000/000150 patent/WO2000054155A1/fr active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4266272A (en) * | 1978-10-12 | 1981-05-05 | International Business Machines Corporation | Transient microcode block check word generation control circuitry |
EP0012794A1 (fr) * | 1978-12-22 | 1980-07-09 | International Business Machines Corporation | Procédé et dispositif pour vérifier les signaux de commande déduits de l'instruction d'une unité électronique de traitement de données |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8145953B2 (en) | 2001-09-28 | 2012-03-27 | Infineon Technologies Ag | Programmable unit |
WO2003029979A3 (fr) * | 2001-09-28 | 2004-07-01 | Infineon Technologies Ag | Unite commandee par programme |
WO2003029979A2 (fr) * | 2001-09-28 | 2003-04-10 | Infineon Technologies Ag | Unite commandee par programme |
CN1296819C (zh) * | 2001-11-16 | 2007-01-24 | 德国捷德有限公司 | 便携式数据载体的控制程序执行 |
WO2003042547A2 (fr) | 2001-11-16 | 2003-05-22 | Giesecke & Devrient Gmbh | Execution controlee d'un programme par un support de donnees portable |
WO2003042547A3 (fr) * | 2001-11-16 | 2004-05-27 | Giesecke & Devrient Gmbh | Execution controlee d'un programme par un support de donnees portable |
US7441111B2 (en) | 2001-11-16 | 2008-10-21 | Giesecke & Devrient Gmbh | Controlled program execution by a portable data carrier |
EP1357459A1 (fr) * | 2002-04-23 | 2003-10-29 | STMicroelectronics S.A. | Processeur securisé contre les deroutements |
US7533412B2 (en) | 2002-04-23 | 2009-05-12 | Stmicroelectronics S.A. | Processor secured against traps |
FR2841015A1 (fr) * | 2002-06-18 | 2003-12-19 | St Microelectronics Sa | Controle d'execution d'un programme |
FR2849226A1 (fr) * | 2002-12-20 | 2004-06-25 | Oberthur Card Syst Sa | Procede et dispositif de securisation de l'execution d'un programme informatique. |
US9092618B2 (en) | 2002-12-20 | 2015-07-28 | Oberthur Technologies | Method and device for making secure execution of a computer programme |
WO2004066127A1 (fr) * | 2002-12-20 | 2004-08-05 | Oberthur Card Systems S.A. | Procede et dispositif de securisation de l'execution d'un programme informatique |
WO2004084073A1 (fr) * | 2003-03-18 | 2004-09-30 | Axalto Sa | Procede pour proteger un assemblage electronique qui execute un algorithme quelconque contre des attaques par introduction d'erreurs |
EP1460546A1 (fr) * | 2003-03-18 | 2004-09-22 | SCHLUMBERGER Systèmes | Procédé de sécurisation de l'exécution d'un programme dans un ensemble électronique contre les attaques par introduction d'erreurs |
WO2005073859A2 (fr) * | 2003-12-31 | 2005-08-11 | Trusted Logic | Procede de controle d'integrite d'execution de programmes par verification d'empreintes de traces d'execution |
WO2005073859A3 (fr) * | 2003-12-31 | 2006-04-20 | Trusted Logic | Procede de controle d'integrite d'execution de programmes par verification d'empreintes de traces d'execution |
FR2864655A1 (fr) * | 2003-12-31 | 2005-07-01 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
US7882396B2 (en) | 2003-12-31 | 2011-02-01 | Trusted Logic | Method for controlling program execution integrity by verifying execution trace prints |
WO2006024903A1 (fr) * | 2004-08-30 | 2006-03-09 | Axalto Sa | Verification d'integrite d'un code d'application pendant l'execution d'une machine virtuelle |
US8161293B2 (en) | 2005-04-20 | 2012-04-17 | Stmicroelectronics S.A. | Protection of the execution of a program executed by an integrated circuit |
FR2886027A1 (fr) * | 2005-05-20 | 2006-11-24 | Proton World Internatinal Nv | Detection d'erreur de sequencement dans l'execution d'un programme |
EP1870829A1 (fr) | 2006-06-23 | 2007-12-26 | Microsoft Corporation | Protéger les logiciels en imposant l'intégrité du flux des données |
US9390261B2 (en) | 2006-06-23 | 2016-07-12 | Microsoft Technology Licensing, Llc | Securing software by enforcing data flow integrity |
US8843761B2 (en) | 2007-08-16 | 2014-09-23 | Siemens Aktiengesellschaft | Method and apparatus for protection of a program against monitoring flow manipulation and against incorrect program running |
CN107194258A (zh) * | 2017-04-06 | 2017-09-22 | 珠海格力电器股份有限公司 | 监测代码漏洞的方法、装置及电子设备、存储介质 |
CN111427723A (zh) * | 2020-03-19 | 2020-07-17 | 阳光电源股份有限公司 | 基于AutoSAR的程序流监控方法及应用装置 |
CN111427723B (zh) * | 2020-03-19 | 2023-05-30 | 阳光电源股份有限公司 | 基于AutoSAR的程序流监控方法及应用装置 |
Also Published As
Publication number | Publication date |
---|---|
ATE232616T1 (de) | 2003-02-15 |
CN1350675A (zh) | 2002-05-22 |
EP1161725B1 (fr) | 2003-02-12 |
EP1161725A1 (fr) | 2001-12-12 |
US7168065B1 (en) | 2007-01-23 |
FR2790844B1 (fr) | 2001-05-25 |
DE60001393T2 (de) | 2003-12-11 |
AU3058900A (en) | 2000-09-28 |
JP4172745B2 (ja) | 2008-10-29 |
JP2002539523A (ja) | 2002-11-19 |
DE60001393D1 (de) | 2003-03-20 |
FR2790844A1 (fr) | 2000-09-15 |
MXPA01009056A (es) | 2002-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1161725B1 (fr) | Procede de surveillance du deroulement d'un programme | |
EP1702268B1 (fr) | Procede de controle d'integrite d'execution de programmes par verification d'empreintes de traces d'execution | |
FR2704341A1 (fr) | Dispositif de protection des clés d'une carte à puce. | |
FR2612316A1 (fr) | Carte a circuits integres ayant une capacite de verification d'erreur interne | |
EP1904946B1 (fr) | Detection d'une faute par perturbation longue | |
EP1605333A1 (fr) | Contrôle de l'exécution d'un programme | |
FR2849226A1 (fr) | Procede et dispositif de securisation de l'execution d'un programme informatique. | |
EP2453356B1 (fr) | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle | |
FR2879320A1 (fr) | Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises | |
EP1960934A1 (fr) | Procede pour securiser l'execution d'un code logiciel en langage intermediaire dans un appareil portatif | |
FR2864654A1 (fr) | Procede de determination de caracteristiques operationnelles d'un programme | |
WO2007010009A2 (fr) | Integrite materielle permanente des donnees | |
FR2765363A1 (fr) | Procede et systeme de controle de l'utilisation d'un logiciel | |
EP1507185A1 (fr) | Méthode et dispositif de protection contre l'accès non-autorisé à une routine sensible | |
EP2375358A1 (fr) | Compteur d'événements dans un système adapté au langage JavaCard | |
EP3284206B1 (fr) | Procédé de sécurisation de l' exécution d'un programme | |
WO2006067319A1 (fr) | Procede et dispositif de remplissage de securisation d'une memoire et memoire associee | |
FR2808360A1 (fr) | Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit | |
EP3295297B1 (fr) | Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme | |
EP1770524A2 (fr) | Détection d'erreur de séquencement dans l'exécution d'un programme | |
EP4086801B1 (fr) | Procédé d'exécution d'une fonction, sécurisé par désynchronisation temporelle | |
EP3514749B1 (fr) | Procede de controle de regles de dependances d'objets mis a jour dans un microcircuit, et dispositif correspondant | |
WO2007006887A1 (fr) | Protection contre les attaques par generation de fautes sur les instructions de saut | |
WO2012172245A1 (fr) | Transfert securise entre memoire non-volatile et memoire volatile | |
FR3147397A1 (fr) | Système informatique configuré pour exécuter un programme d’ordinateur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 00807379.1 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2000900650 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2000 604312 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: PA/a/2001/009056 Country of ref document: MX |
|
WWE | Wipo information: entry into national phase |
Ref document number: 09936174 Country of ref document: US |
|
WWP | Wipo information: published in national office |
Ref document number: 2000900650 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWG | Wipo information: grant in national office |
Ref document number: 2000900650 Country of ref document: EP |