WO2005008451A1 - Procede de securisation de l’execution d’un programme informatique, notamment dans une carte a microcircuit - Google Patents
Procede de securisation de l’execution d’un programme informatique, notamment dans une carte a microcircuit Download PDFInfo
- Publication number
- WO2005008451A1 WO2005008451A1 PCT/FR2004/001755 FR2004001755W WO2005008451A1 WO 2005008451 A1 WO2005008451 A1 WO 2005008451A1 FR 2004001755 W FR2004001755 W FR 2004001755W WO 2005008451 A1 WO2005008451 A1 WO 2005008451A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- program
- execution
- line
- instruction
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
Definitions
- the present invention relates to a method for securing the execution of a computer program and to a secure electronic entity implementing such a method.
- the invention can in particular be used to secure a microcircuit card (also called a "smart card").
- a microcircuit card also called a "smart card”
- the term “securing” of a computer program will be understood to mean: - the detection of malicious attacks aimed at modifying the normal behavior of a computer program; but also - any processing aimed at making the progress of a computer program more reliable, and in particular that of a program executing in a very disturbed environment, such as a satellite, or that of a computer program with high reliability requirements, such as , for example, a cardiac implant monitoring program.
- the term "computer program” will be understood to mean any program, whatever the computer language and the storage means used.
- the computer program can be written in machine language, assembler, C, C ++, Java, VHDL.
- the program can be stored in a permanent memory, for example in a ROM or EEPROM memory or on a hard disk, or in a volatile memory, for example of RAM type.
- the program can also be materialized by an integrated circuit, for example of the FPGA type or by an ASIC (Application Specifies Integrated Circuit) circuit.
- the present invention allows the detection of an attack intended to modify the execution sequence of a computer program executing on a secure electronic entity, for example a microcircuit card, a secure PCMIA card (for example an IBM4758 card ), a USB key or a passport incorporating a contactless chip in one of its pages. It also allows the triggering of a countermeasure to this attack.
- the present invention makes it possible, in particular, to detect attacks by disturbing the operation of an electronic entity, for example attacks of the “attack by fault generation” type (in English “Fault Attack”). These attacks are aimed at illegally modifying the content or reading the content of a register, memory or bus, or at forcing a processor not, or badly, to execute certain instructions of a computer program.
- the attacked computer program can then run in a very different way from that which was planned at the time of its conception.
- These attacks can, among other things and in a known manner, be carried out: - by generating a voltage peak at one of the power supply terminals of the processor; - by suddenly raising its temperature; - by rapidly changing its clock frequency or its supply voltage; - by applying a flash of light, a laser beam, or an electromagnetic field, on a part of the silicon which composes it.
- a first method consists in installing, in the components of the microcircuit cards, sensors which make it possible to detect such attacks.
- a second known security method implemented in most operating systems of microcircuit cards is based on the use of "semaphore".
- Such a method comprises: a step of modifying the content of a memory area during the execution of a set of critical instructions; and a verification step during which it is verified, by reading the content of the aforementioned memory area, that the aforementioned modification step has been carried out. If the memory area has not been modified, this means that the modification step has not been carried out, and that, consequently, the abovementioned critical instructions have not been correctly executed.
- semaphores are traditionally implemented by variables residing in working memory (RAM) and their manipulation (positioning, reading) is relatively slow or costly in memory space. This constraint is particularly penalizing when the program is run on systems with limited resources (memory, computing power, ...) such as smart cards.
- the present invention relates to a software security method which does not have the above drawbacks.
- a stack of instructions is an area of the memory for temporarily storing data.
- the values are stacked in the stack and unstacked by means of two specific instructions, called PUSH and POP respectively in the rest of the description. These instructions only handle values of fixed size, for example one byte.
- the use of the stack follows a LIFO ("Last In First Out") type algorithm.
- the security method according to the invention therefore uses the execution stack to store a value allowing the detection of an execution anomaly.
- An execution stack being, on the one hand quick access to read and write and, on the other hand, inexpensive in memory space, the securing method according to the invention is particularly suitable for securing computer programs running on systems with limited resources. This new use of the instruction stack has other advantages which will be described later.
- the stacking and unstacking steps are respectively associated with elements of at least one subset of instructions of said program.
- the stacking step can be associated with the "open (file)" instruction to open a file and the unstacking step with the "close (file)” instruction to close this file .
- This characteristic is particularly advantageous, because it makes it possible to automate the writing of the securing instructions, by associating, for example with the aid of an editor, the operations of stacking and unstacking with the aforementioned elements, namely in the previous example, the instructions
- the elements of the instruction subset are respectively an opening parenthesis and a closing parenthesis of a system of parentheses. It is recalled for this purpose, that in language theory, and in a manner known to those skilled in the art of computer languages, it is said that we are in the presence of a system of parentheses when a text comprises as many opening parentheses as closing parentheses and that the beginning of this text contains a number of opening parentheses greater than or equal to the number of closing parentheses.
- the stacking and unstacking steps can respectively be associated with the instructions: - "(" and ")”; or - " ⁇ " and “ ⁇ ”; or - “begin” and “end”; or - “repeat” and "until”.
- the unstacking step is associated with an instruction to return to the execution of the program or of a subroutine of this program. This characteristic advantageously makes it possible to use the normal operations of unstacking carried out traditionally at the return of a program or a subroutine (during the execution of the return instruction) to detect an execution anomaly, if the unstacked values on this occasion do not correspond to those which should have been depilated in case of normal execution of the program.
- the program is in a programming language which comprises a first instruction whose execution implements the stacking step and / or a second instruction whose execution implements said unstacking step.
- new instructions are integrated into the programming language, these instructions each having a its own function and either a stacking function or a unstacking function for securing the program.
- a new instruction called "open (file)" can be created, this new instruction allowing both the opening of the file and the stacking of a predetermined value in the stack. program instructions.
- the second instruction ends the program or a subroutine of this program.
- This embodiment has the same advantages as the embodiment previously introduced and in which the stacking and unstacking instructions are associated, and not integrated, with elements of a subset of instructions of the program. Consequently, it will not be described in detail below.
- the predetermined value is representative of a subset of critical instructions of the program. This characteristic is particularly advantageous when the securing method is used to secure several subsets of instructions of the program. It makes it possible to detect, during the unstacking step, that a particular subset of instructions has been executed correctly, and not another subset of instructions whose execution would have resulted in the stacking of 'another predetermined value. Those skilled in the art will readily understand that this characteristic can be used to secure different branches of a test
- the securing method according to the invention comprises a step of processing an anomaly, implemented if, during from the unstacking step, a value different from the predetermined value is unstacked.
- This characteristic advantageously makes it possible to implement the anomaly processing step, as soon as an attack has had the consequence of modifying the normal execution of the program and in particular the call or the return of execution of a function of This program.
- This securing process is then particularly effective.
- the treatment of the anomaly may for example, in the case of the use of the security method in a microcircuit card, consist in rendering the card inoperative, by destroying the operating system of this card.
- the stacking step is performed before this call, and the predetermined value deleted from the stack during the execution of this subroutine.
- the instruction stack will keep the predetermined value stacked.
- the subsequent unraveling of this value will lead to the detection of the execution anomaly, as explained below with reference to Appendices B and C.
- the predetermined value can advantageously be the address of a function for processing an anomaly.
- the predetermined value can advantageously be the address of a function for processing an anomaly.
- this characteristic makes it possible to trigger the processing function if the program undergoes any attack the consequence of which is to avoid the execution of the subroutine. It is therefore particularly useful for securing critical functions, for example an authentication procedure.
- An example of implementation of this characteristic will be given with reference to Annex E.
- the invention also relates to an information medium readable by a computer system, possibly totally or partially removable, in particular CD-ROM or magnetic medium, such as a hard disk or a floppy disk, or transmissible medium such as an electrical or optical signal, this information medium comprising instructions from a computer program allowing the implementation of a security method as briefly described above, when this program is loaded and executed by a computer system.
- the invention also relates to a computer program stored on an information medium, this program comprising instructions allowing the implementation of a security method as briefly described above, when this program is loaded and executed by a computer system.
- the invention also relates to a secure electronic entity and a microcircuit card comprising means for implementing a security method as briefly described above.
- Annex A comprises 33 numbered instruction lines / * a1 * / to / * a33 * / a computer program whose execution is secured by a securing method according to the invention in a preferred embodiment.
- the / * a17 line is not a statement per se. It symbolizes the fact that the program in appendix A can contain a certain number of instructions, in place of the character string "", in addition to the instructions used to secure this program. It represents a set of instructions unrelated to the present invention.
- the line / * a2 * / includes a #pragma asm directive, telling the compiler that the following instruction lines are in 80c51 assembler.
- the line / * a37 includes an instruction whose execution implements a step of stacking the predetermined value 0 (in hexadecimal notation) in the instruction stack of the program of appendix A. For simplicity, we will say by Following that we stack the value 0 at the line / * a3 * /. Then, stack the value 1 on the line / * a47.
- the predetermined values OOh and 01 h respectively represent the most significant and least significant bytes of the value 1 (in hexadecimal notation) coded on 2 bytes.
- the line / * a5 * / includes a #pragma endasm directive, telling the compiler that the following instruction lines are no longer in 80c51 assembler, but in C language.
- the line / * a87 contains an instruction during which it is tested whether the content of the variable "test" is equal to "TRUE". In a known manner, if this is the case at the time of the execution of the program of appendix A, the processor will execute the instructions / * a97 to / * a237 following the test of the line
- the line / * a97 is identical to the line / * a27 previously described.
- the lines / * a107 and / * a117 are similar to the lines / * a37 and / * a47 already described. They allow the value 1 (in hexadecimal notation) coded on two bytes to be stacked in two stages.
- the line / * a127 is identical to the line / * a57 previously described.
- the line / * a157 is identical to the line / * a27 previously described.
- the line / * a167 comprises an instruction, the execution of which implements a step of unstacking the stack of instructions, the unstacked value being stored in a register A. For simplicity, it will be said later that we unstack in the register A at line / * a167.
- the register A memorizes consequently the last value stacked in the stack, the latter operating according to a LIFO mechanism.
- the line / * a177 contains an instruction making it possible to compare the contents of register A with the value 02H. Normally, if the program has not been attacked during its execution since the end of the instruction of the line
- the content of register A contains the value 02H stacked during the instruction of the line / * a117.
- the step of unstacking the line / * a167 thus allows the detection of an execution anomaly, in accordance with the present invention. If, during the step of comparing the line - / * a177 we find that the value of register A is different from the value 02H, the program of appendix A connects to the address "anomaly" during the instruction of the line / * a187.
- This “anomaly” address is, in the embodiment described here, the address of an anomaly processing step of the security method according to the invention.
- the address "anomaly" is an address in hexadecimal notation directly interpretable by the processor.
- the program of appendix A executes the instruction of the line / * a197.
- Lines a197 to / * a217 are lines similar to lines
- the lines / * a267 to / * a337 are lines similar to the lines
- the instruction subset consisting of lines A * a67 and 1 * 3.25 * 1 is secured thanks to: -the stacking step (lines / * a37 and 1 * 34 * 1) of the predetermined value 1 coded on 2 bytes; and - at the step of unstacking the lines / * a277 and / * a307.
- the instruction subset consisting of lines / * a137 and / * a147 is secured thanks to: -the stacking step (lines / * a107 and / * a117) of the predetermined value 2 coded on 2 bytes; and - at the step of unstacking the lines / * a167 and / * a197.
- Annex B comprises 28 lines of instructions numbered / * b17 to / * b287 of a computer program whose execution is secured by a securing method according to the invention in a preferred embodiment.
- the lines / * b17 and / * b27 constitute the first two lines of declaration of the function "function" in C language, this function comprising neither input parameter nor return value.
- Line / * b117 contains the last instruction to declare this function.
- Line / * b37 similar to line / * a17 previously described with reference to Annex A, represents a set of instructions unrelated to the present invention.
- Line / * b47 is identical to line / * a27 previously described with reference to appendix A.
- a stacking step d is carried out in two stages. '' a predetermined value coded on two bytes, this predetermined value being, in this preferred mode of creation of the address of an OS_killcard function for processing an anomaly.
- the address "OS_killcard” is an address in hexadecimal notation directly interpretable by the processor.
- the OS_killcard function can for example inhibit the operation of the card by destroying its operating system.
- Line / * b77 is identical to line / * a57 previously described with reference to appendix A.
- Line / * b97 includes an instruction to call a critical function "critical_function", the code of which will be described with reference to lines / * b127 to / * b287.
- calling a subroutine automatically causes the return address of this subroutine to be stacked in the instruction stack. This return address, coded on 2 bytes, therefore occupies two registers in the stack.
- this address corresponds to the address of the instruction in line / * b107, this line must be executed on return from the "critical_function" function.
- the lines / * b127 and / * b137 on the one hand and / * b287 on the other hand constitute the first two lines and the last line of declaration of the "critical_function" function, this function having neither input parameter nor value back.
- the last four values stacked in the instruction stack are, in chronological order: - the most significant byte of the address of the OS_killcard function (line / * b57); - the least significant byte of the address of the OS_killcard function (line
- the line / * b147 similar to the line / * a17 previously described with reference to appendix A, represents a set d instructions unrelated to the present invention. As described above with reference to lines / * a137 and / * a147 in appendix A, it will be assumed that these instructions leave the instruction stack, in the state it was in before the / * b147 instruction.
- Line / * b157 is identical to line / * a27 previously described with reference to appendix A.
- the stack of instructions is unstacked in register A, the content of this register A then being saved in an R7 register at step / * b177.
- the stack of instructions is again unstacked in register A, the content of this register A being saved in a register R6 at step / * b197.
- the registers R6 and R7 therefore contain respectively, at the end of the execution of the instruction of the line / * b197 : - the most significant byte of the address of the first instruction in the line / * b107; and - the least significant byte of the address of the first instruction of the line / * b 107.
- we stack twice in the register A the stack of instructions on the lines / * b207 and / * b217, which amounts, in the event of normal execution of the program of appendix B, to delete the address on two bytes of the function OS_killcard from the stack of instructions during the execution of the subroutine "critical_function".
- Annex C comprises 32 lines of instructions numbered / * c1 to / * c327 of a computer program whose execution is secured by a securing method according to the invention in a preferred embodiment.
- the lines / * c17 to / * c117 are similar to the lines / * b1 to / * b117 described with reference to appendix B, except that we stack in the instruction stack, the predetermined value 05F1 H coded in hexadecimal on two bytes, instead of the address of the OS_killcard function (lines / * c57 and
- this stacking step is also performed before the call to the critical_function subroutine.
- this predetermined value 05F1 H is representative of the subset constituted by the instructions of the lines / * c127 to / * c197.
- the lines / * c127 to A * c197 are similar to the lines / * b127 to / * b197 described with reference to Annex B.
- the registers R6 and R7 therefore contain respectively, at the end of the execution of the instruction of the line / * c197, the most significant byte and the least significant byte of the address of the first instruction of the line / * c107 corresponding to the return address of the "critical_function" function. We then unstack the stack of instructions in register A at line
- the register A contains the value F1 H stacked during the instruction of the line / * c57.
- the step of unstacking the line / * c207 thus allows the detection of an execution anomaly, in accordance with the present invention. If, during the step of comparing the line / * c21 it is found that the value of register A is different from the value F1H, the program of appendix C connects to the address "OS_killcard" during the instruction of the line / * c227.
- the OS_killcard anomaly processing program is therefore implemented, if, during the step of unstacking the instruction / * c207, a value is unstacked different from the predetermined value F1 H stacked at instruction
- Lines / * c267 to / * c297 are similar to lines A * b227 to / * b257 previously described with reference to appendix B. They allow the values stored in registers R6 and R7 to be stacked in the instruction stack. when executing the instructions in lines / * c177 and ⁇ * c197, namely respectively: - the most significant byte of the address of the first instruction in the line / * c107; and - the least significant byte of the address of the first instruction in the line * c10 * /.
- the lines / * c307 to / * c327 are similar to the lines / * b267 to
- This particular embodiment makes it possible to reinforce the securing of the program, because even if an attack occurs during the execution of the test of the lines / * c207 to / * c257, this attack would be detected by the subsequent implementation of this anomaly processing function.
- several addresses of anomaly processing functions can be used, each of them being a predetermined value associated with a set of critical instructions.
- Annex D comprises 32 lines of instructions numbered / * d17 to / * d327 of a computer program whose execution is secured by a securing method according to the invention in a preferred embodiment.
- the program comprises, at line / * d47, a call to a “critical_function” subroutine.
- This call automatically causes the return address of this subroutine to be stacked, namely the address of the instruction on the line / * d57.
- the first values of the instruction stack namely the return address, coded in two, are stored in the registers R6 and R7. bytes, of this subroutine.
- the predetermined value 05F1 H is stacked on the lines / * d247 and / * d257. It will be noted that in this embodiment, this stacking step is carried out during the execution of the "critical_function" subroutine.
- the lines / * d77 to / * d127 are similar to the lines / * c207 to / * c257 described above with reference to appendix C: - unraveling in the register A on lines / * d77 and / * d107; - comparison of register A, with the predetermined values F1 H and 05H on lines / * d87 and 1 * 6117; - connection to the address "OS_killcard" during the instruction / * d97 (respectively / * d127) if the register A does not contain the value F1 H (respectively 05H) at the time of the execution of the instruction of the line / * d97 (respectively l * to 127).
- the anomaly processing routine OS_killcard is thus implemented, if, for example, during the unstacking step / * d77, a value different from the predetermined value F1H is unstacked.
- the deletion of the predetermined value 05F1 H from the execution stack is carried out after execution of the "critical_function" subroutine and not following an attack taking place during the execution of another subroutine, this attack resulting in the execution of lines / * d67 to / * d137.
- This implementation therefore makes it possible to ensure that the execution of the instructions of the lines / * d67 to / * d137 is carried out after the execution of the subroutine "critical_function".
- Lines / * d147 and / * d157 end the program in appendix D.
- Appendix E contains 28 lines of instructions numbered / * e17 to / * e287 of a computer program whose execution is secured by a process security according to the invention in a preferred embodiment.
- Lines / * e17 to A * e57 and / * e127 to / * e287 are respectively similar to lines / * d17 to / * d57 and / * d167 to / * d327 described with reference to Annex D, with the difference that we stack in the instruction stack the address of the OS_killcard fault handling function (lines ⁇ * e207 and
- FIG. 1 represents a microcircuit card 100 according to the invention in a preferred embodiment. To simplify, only the content of the microcircuit is shown, and this schematically.
- the microcircuit card according to the invention 100 also comprises conventional hardware and software elements of a microcircuit card, namely in particular a support made of semi-rigid material and supply means. These elements will not be described here.
- the microcircuit card according to the invention 100 includes means for implementing a security method as described above with reference to appendices A to E. In the preferred embodiment described here, these means consist of a processor 110, associated in particular with a non-volatile memory of the EEPROM type, with a random access memory RAM comprising a stack of instructions STACK, and with a ROM read only memory comprising an operating system OS.
- the semi-volatile memory EEPROM comprises in particular the programs of appendices A to E, these programs being read by the processor 100 for their execution.
- the EEPROM memory also contains the two subroutines "anomaly" and "OS_killcard”. • During the execution of the programs of appendices A to E, the registers R6, R7 and test are memorized in the RAM. In the embodiment described here, register A is the accumulator of processor 110.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
Claims
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/563,554 US8707424B2 (en) | 2003-07-11 | 2004-07-06 | Method for making secure execution of a computer programme, in particular in a smart card |
| CA2531789A CA2531789C (fr) | 2003-07-11 | 2004-07-06 | Procede de securisation de l'execution d'un programme informatique, notamment dans une carte a microcircuit |
| EP04767590.5A EP1644797B1 (fr) | 2003-07-11 | 2004-07-06 | Procede de securisation de l'execution d'un programme informatique, notamment dans une carte a microcircuit |
| JP2006518286A JP4644820B2 (ja) | 2003-07-11 | 2004-07-06 | 特にスマートカードにおけるコンピュータプログラムの実行を保護する方法 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0308550A FR2857473B1 (fr) | 2003-07-11 | 2003-07-11 | Procede de securisation de l'execution d'un programme informatique, notamment dans une carte a microcircuit |
| FR03/08550 | 2003-07-11 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2005008451A1 true WO2005008451A1 (fr) | 2005-01-27 |
Family
ID=33522982
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/FR2004/001755 Ceased WO2005008451A1 (fr) | 2003-07-11 | 2004-07-06 | Procede de securisation de l’execution d’un programme informatique, notamment dans une carte a microcircuit |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US8707424B2 (fr) |
| EP (1) | EP1644797B1 (fr) |
| JP (1) | JP4644820B2 (fr) |
| CN (1) | CN100361036C (fr) |
| CA (1) | CA2531789C (fr) |
| FR (1) | FR2857473B1 (fr) |
| WO (1) | WO2005008451A1 (fr) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2910144A1 (fr) * | 2006-12-18 | 2008-06-20 | St Microelectronics Sa | Procede et dispositif de detection errones au cours de l'execution d'un programme. |
| US8117063B2 (en) | 2006-11-15 | 2012-02-14 | University Of Florida Research Foundation, Inc. | System and methods for creating probabilistic products and for facilitating probabilistic selling |
| EP2453356A1 (fr) | 2010-11-10 | 2012-05-16 | Oberthur Technologies | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2869486B1 (fr) * | 2004-04-21 | 2007-08-31 | Oberthur Card Syst Sa | Procede de traitement de donnees securise et dispositif associe |
| US7607122B2 (en) * | 2005-06-17 | 2009-10-20 | Microsoft Corporation | Post build process to record stack and call tree information |
| JP2008152452A (ja) * | 2006-12-15 | 2008-07-03 | Toshiba Corp | 携帯可能電子装置、携帯可能電子装置の制御方法およびicカード |
| US20080271142A1 (en) * | 2007-04-30 | 2008-10-30 | Texas Instruments Incorporated | Protection against buffer overflow attacks |
| EP2354993A1 (fr) * | 2009-12-30 | 2011-08-10 | Gemalto SA | Protection d'exécution de code octet JCVM contre les attaques de défauts |
| US12248560B2 (en) * | 2016-03-07 | 2025-03-11 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
| US12339979B2 (en) | 2016-03-07 | 2025-06-24 | Crowdstrike, Inc. | Hypervisor-based interception of memory and register accesses |
| JP6798157B2 (ja) * | 2016-06-24 | 2020-12-09 | 大日本印刷株式会社 | 電子情報記憶媒体、異常検知方法、及び異常検知プログラム |
| WO2020114937A1 (fr) * | 2018-12-07 | 2020-06-11 | Koninklijke Philips N.V. | Dispositif informatique doté d'une résistance accrue contre le sondage d'adresse |
| US11128644B2 (en) * | 2019-03-19 | 2021-09-21 | Five Media Marketing Limited | Automatic security scanning of advertisements during runtime of software applications |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5274817A (en) * | 1991-12-23 | 1993-12-28 | Caterpillar Inc. | Method for executing subroutine calls |
| FR2757972A1 (fr) * | 1996-12-31 | 1998-07-03 | Bull Cp8 | Procede de securisation d'un module de securite, et module de securite associe |
| DE19944991A1 (de) * | 1999-09-20 | 2001-04-12 | Giesecke & Devrient Gmbh | Verfahren zur Sicherung eines Programmablaufs |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6931552B2 (en) * | 2001-05-02 | 2005-08-16 | James B. Pritchard | Apparatus and method for protecting a computer system against computer viruses and unauthorized access |
| ES2218484T3 (es) * | 2002-03-26 | 2004-11-16 | Soteres Gmbh | Un metodo de proteger la integridad de un programa de ordenador. |
| CN1292356C (zh) * | 2002-04-17 | 2006-12-27 | 松下电器产业株式会社 | 非易失性半导体存储装置及其机密保护方法 |
| US7228563B2 (en) * | 2003-02-06 | 2007-06-05 | Symantec Corporation | Shell code blocking system and method |
-
2003
- 2003-07-11 FR FR0308550A patent/FR2857473B1/fr not_active Expired - Fee Related
-
2004
- 2004-07-06 US US10/563,554 patent/US8707424B2/en not_active Expired - Fee Related
- 2004-07-06 WO PCT/FR2004/001755 patent/WO2005008451A1/fr not_active Ceased
- 2004-07-06 CN CNB200480019877XA patent/CN100361036C/zh not_active Expired - Fee Related
- 2004-07-06 EP EP04767590.5A patent/EP1644797B1/fr not_active Expired - Lifetime
- 2004-07-06 JP JP2006518286A patent/JP4644820B2/ja not_active Expired - Fee Related
- 2004-07-06 CA CA2531789A patent/CA2531789C/fr not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5274817A (en) * | 1991-12-23 | 1993-12-28 | Caterpillar Inc. | Method for executing subroutine calls |
| FR2757972A1 (fr) * | 1996-12-31 | 1998-07-03 | Bull Cp8 | Procede de securisation d'un module de securite, et module de securite associe |
| DE19944991A1 (de) * | 1999-09-20 | 2001-04-12 | Giesecke & Devrient Gmbh | Verfahren zur Sicherung eines Programmablaufs |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8117063B2 (en) | 2006-11-15 | 2012-02-14 | University Of Florida Research Foundation, Inc. | System and methods for creating probabilistic products and for facilitating probabilistic selling |
| FR2910144A1 (fr) * | 2006-12-18 | 2008-06-20 | St Microelectronics Sa | Procede et dispositif de detection errones au cours de l'execution d'un programme. |
| WO2008075166A1 (fr) * | 2006-12-18 | 2008-06-26 | Stmicroelectronics Sa | Procede et dispositif de detection de sauts errones au cours de l'execution d'un programme |
| US8495734B2 (en) | 2006-12-18 | 2013-07-23 | Stmicroelectronics Sa | Method and device for detecting an erroneous jump during program execution |
| EP2453356A1 (fr) | 2010-11-10 | 2012-05-16 | Oberthur Technologies | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle |
| US9129137B2 (en) | 2010-11-10 | 2015-09-08 | Oberthur Technologies | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine |
| KR101875225B1 (ko) | 2010-11-10 | 2018-07-05 | 아이데미아 프랑스 | 가상 머신에 의한 실행을 위한 프로그래밍의 중간 코드의 보안 프로세스, 컴퓨터 프로그램 및 장치 |
| EP2453356B1 (fr) * | 2010-11-10 | 2020-07-15 | IDEMIA France | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle |
Also Published As
| Publication number | Publication date |
|---|---|
| CN1823317A (zh) | 2006-08-23 |
| CN100361036C (zh) | 2008-01-09 |
| JP2007516490A (ja) | 2007-06-21 |
| US8707424B2 (en) | 2014-04-22 |
| EP1644797B1 (fr) | 2013-12-11 |
| CA2531789A1 (fr) | 2005-01-27 |
| FR2857473A1 (fr) | 2005-01-14 |
| FR2857473B1 (fr) | 2005-09-16 |
| JP4644820B2 (ja) | 2011-03-09 |
| EP1644797A1 (fr) | 2006-04-12 |
| CA2531789C (fr) | 2014-04-01 |
| US20060242700A1 (en) | 2006-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2005008451A1 (fr) | Procede de securisation de l’execution d’un programme informatique, notamment dans une carte a microcircuit | |
| 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 | |
| US8104089B1 (en) | Tracking memory mapping to prevent packers from evading the scanning of dynamically created code | |
| FR2849226A1 (fr) | Procede et dispositif de securisation de l'execution d'un programme informatique. | |
| EP1662379A1 (fr) | Procede de prevention de faux code et programme de prevention | |
| JP5996145B1 (ja) | プログラム、情報処理装置、及び情報処理方法 | |
| EP4123492B1 (fr) | Mise en partage d'une fonction d'une application définie en langage orienté objet | |
| Lakhotia et al. | Abstracting stack to detect obfuscated calls in binaries | |
| EP3392791B1 (fr) | Procédé d'exécution d'un programme destiné à être interprété par une machine virtuelle protégée contre des attaques par injection de faute | |
| EP1960934A1 (fr) | Procede pour securiser l'execution d'un code logiciel en langage intermediaire dans un appareil portatif | |
| FR3072477B1 (fr) | Securisation d’instructions de branchement conditionnel compose dans un programme informatique en code intermediaire | |
| US12547404B2 (en) | Storing a duplicated return address and stack pointer in registers to prevent overflow attacks | |
| WO2006067319A1 (fr) | Procede et dispositif de remplissage de securisation d'une memoire et memoire associee | |
| US20260127266A1 (en) | Systems and Methods for Detecting Malicious Modifications of a Loaded Software Module | |
| CN1155700A (zh) | 计算机软件保护方法 | |
| Dai et al. | Dynamic instruction sequences monitor for virus detection | |
| WO2026093572A1 (fr) | Systèmes et procédés pour la détection de modifications malveillantes d'un module logiciel chargé | |
| WO2026093574A1 (fr) | Systèmes et procédés pour la détection de bibliothèques logicielles malveillantes | |
| Pridgen | Exploiting Generational Garbage Collection: Using Data Remnants to Improve Memory Analysis and Digital Forensics | |
| Bugeja | Cracking, The Anti | |
| Yu-An et al. | Method of preventing buffer overflow attacks by intercepting DLL functions | |
| 谭毓安 et al. | Method of Preventing Buffer Overflow Attacks by Intercepting DLL Functions | |
| Hildebrandt et al. | A computer architecture with hardwarebased malware detection | |
| DeepakGupta | TIED, LibsafePlus: Tools for Runtime Buffer Overflow Protection |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 200480019877.X Country of ref document: CN |
|
| AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG 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 MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| ENP | Entry into the national phase |
Ref document number: 2531789 Country of ref document: CA |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2006518286 Country of ref document: JP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2004767590 Country of ref document: EP |
|
| WWP | Wipo information: published in national office |
Ref document number: 2004767590 Country of ref document: EP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2006242700 Country of ref document: US Ref document number: 10563554 Country of ref document: US |
|
| WWP | Wipo information: published in national office |
Ref document number: 10563554 Country of ref document: US |