[go: up one dir, main page]

EP1783649A1 - Microprocesseur sécurisé avec vérification des sauts - Google Patents

Microprocesseur sécurisé avec vérification des sauts Download PDF

Info

Publication number
EP1783649A1
EP1783649A1 EP05109382A EP05109382A EP1783649A1 EP 1783649 A1 EP1783649 A1 EP 1783649A1 EP 05109382 A EP05109382 A EP 05109382A EP 05109382 A EP05109382 A EP 05109382A EP 1783649 A1 EP1783649 A1 EP 1783649A1
Authority
EP
European Patent Office
Prior art keywords
access
jump
instruction
verification
auto
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.)
Withdrawn
Application number
EP05109382A
Other languages
German (de)
English (en)
Inventor
André Kudelski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NagraCard SA
Original Assignee
NagraCard SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NagraCard SA filed Critical NagraCard SA
Priority to EP05109382A priority Critical patent/EP1783649A1/fr
Priority to TW095136755A priority patent/TW200805147A/zh
Priority to EP06807043A priority patent/EP1934876A1/fr
Priority to PCT/EP2006/067142 priority patent/WO2007042478A1/fr
Priority to US11/544,596 priority patent/US20070083795A1/en
Publication of EP1783649A1 publication Critical patent/EP1783649A1/fr
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Definitions

  • the present invention relates to the field of microprocessors, in particular the field of securing the execution of the code of said microprocessor.
  • an instruction is formed of an opcode (or instruction identifier) and of zero or more operants.
  • the first byte of an instruction (“opcode”) plays an important role because it defines the desired function. Depending on the instruction, one or more additional bytes will be needed to form an instruction.
  • an opcode can be 8, 12, 16 or 32 bits.
  • An opcode can also be temporarily over a greater length, for example a value of 18H for the first byte means that the second byte defines the instruction (see instruction list of 68HC11 for example).
  • a processor When a processor desynchronizes, for example due to a programming error or an external disturbance, it may be that its program counter (PC) indicates a position of the memory which is not an opcode but an operant.
  • PC program counter
  • Each instruction starts with an "opcode" and can be followed by several operants.
  • an instruction is loaded in the central unit, this instruction has a length depending on the opcode.
  • NOP simple instruction
  • BRCLR more complicated instruction
  • the system is very flexible and is based on the fact that each instruction follows another. At the end of the execution of an instruction, the following code is necessarily an opcode.
  • the instruction it will execute will be the one whose opcode is 78H, ie the instruction F093 78 11 CE ASL @ $ 11CEh F096 F31718 ADD @ $ 1718h F099 1F 00 10 0B BRCLR 0, X, # 00010000B, LF0AC
  • the object of the present invention is to propose a method and a device for mitigating the damage that a desynchronization of the program counter can cause.
  • a secure microprocessor comprising a program counter and an interface with a program memory containing instructions
  • this microprocessor being characterized in that it comprises a counter history memory.
  • program indicating the position of the program counter during the execution of the previous instruction
  • an instruction checking module comprising means for reading additional verification information defining for the current instruction of execution, the assumed position of the previous program counter
  • this verification module comprising means for comparing this verification information with that from the history memory, and means for generating an error if the check indicates an incompatibility.
  • This verification module is directly implemented in the microprocessor, and acts on the input part of an instruction ("fetch").
  • fetch the verification information is read at the same time. This information will help determine how to achieve this instruction is consistent with the thinking of the programmer.
  • the history memory of the program counter contains information on the source of said counter before arriving at the current instruction.
  • This indication of source may, in a simplified form, simply indicate whether the instruction previously executed was the instruction just above the current instruction (self-increment of the program counter) or on the contrary, another instruction.
  • the program counter is incremented automatically at the end of the processing of the previous instruction. We are in a continuous mode.
  • the counter program is loaded by a value coming from several sources, for example a jump (JMP), a subroutine call (JSR, BSR), a conditional jump (BHS, BRA) or a d 'interruption. Instructions following a jump represent a small percentage of the code. This is why according to a variant of the invention, the instructions have a value indicating in which category they are.
  • an instruction in the second category can also be in the first category. Indeed, during a loop for example, we can arrive at an instruction either by the jump, or by the normal incrementation of the program counter. In the case of a first subroutine instruction, it is possible to reach this instruction only by a jump.
  • the jump indicator can have three states, possible jump, skip, jump required.
  • the line F09F is typically an instruction that can be executed following the jump defined on the line F098 or on the contrary, following the preceding instruction.
  • the jump value will be 1 for "possible jump”.
  • the program memory MEM will contain the entire program. It can be different types of media such as ROM, RAM, Flash.
  • the interface part INT of the processor MIC will read the instructions by a reading module FE.
  • the history memory MH contains the previous program counter (PC-1) and the current value (PC). The latter will become the previous value during the next instruction.
  • the verification module MV extracts (or receives) the verification indication associated with the current instruction and compares this information with the data transmitted from the history memory. If the instruction is validated, it is transmitted to the central processing unit (CPU) for execution.
  • CPU central processing unit
  • the execution context is also stored in the program counter MH history memory, namely the modification information of the counter of the program counter. program.
  • this information can either be "access by auto-increment” or "access by jump".
  • the execution history is compared with the verification information. If the history indicates "auto-increment access” and the verification information is zero (impossible to jump), the instruction is validated. If the history is equal to "access by hop” and the verification information is equal to 0 (can not jump), the instruction is invalidated.
  • the instruction is validated; and if the history indicates "auto-increment access” and the verification information is equal to 1 (possible jump), the instruction is validated (unless the three-state system has been adopted and the verification information is of the type "jump access required".
  • the set of verification information can be stored in another memory thus forming an execution mask.
  • the verification information is read from this memory and compared with the behavior of the microprocessor.
  • the verification information may include a value indicative of an acceptable jump range.
  • the verification information is coded on 8 bits. If the value is zero, only the execution of this statement following the previous one is accepted.
  • the verification information will include the highest value.
  • a table of starting positions TB is constituted for each instruction accepting the arrival following a jump.
  • This table contains all possible start addresses.
  • Table F09F F09F The line F09F will contain the starting address F098 according to our example. If other instructions allow access to this line, their starting address will be contained in the table. F098 7-8 .
  • the first check is made based on the verification information. If the arrival on this instruction is following a jump, one compares this information (coming from the memory of history) and the information of verification (which can be a bit in this case).
  • the verification module will look for the table corresponding to the instruction in progress and compare the value of the previous program counter to the values contained in the table. If the value is present, the instruction is definitely accepted. Otherwise, an error message is generated.
  • These tables are generated during compilation of the program and can be stored in a different memory of the program memory, for example a memory that is only accessible to the verification module.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

Le but de la présente invention est de proposer une méthode et un dispositif afin de pallier aux dégâts qu'une désynchronisation du compteur de programme peut provoquer.
Ce but est atteint par un microprocesseur sécurisé comprenant un compteur de programme et une interface avec une mémoire de programme contenant des instructions, ce microprocesseur étant caractérisé en ce qu'il comprend une mémoire d'historique du compteur de programme indiquant la position du compteur de programme lors de l'exécution de la précédente instruction, et un module de vérification d'instruction, ce module comprenant des moyens de lecture d'une information de vérification additionnelle définissant pour l'instruction en cours d'exécution, la position supposée du précédent compteur de programme, ce module de vérification comprenant des moyens pour comparer cette information de vérification avec celle provenant de la mémoire d'historique, et des moyens pour générer une erreur si la vérification indique une incompatibilité.

Description

    Introduction
  • La présente invention concerne le domaine des microprocesseurs, en particulier le domaine de la sécurisation de l'exécution du code dudit microprocesseur.
  • Etat de la technique
  • II est bien connu qu'une instruction est formée d'un opcode (ou identifiant d'instruction) et de zéro ou plusieurs opérants. Le premier octet d'une instruction ("opcode") joue un rôle important car cela définit la fonction souhaitée. Selon l'instruction, un ou plusieurs octets complémentaires seront nécessaires pour former une instruction.
  • Selon le type de processeur, la taille d'un opcode peut être de 8, 12, 16 ou 32 bits. Un opcode peut être également temporairement sur une plus grande longueur, par exemple une valeur de 18H pour le premier octet signifie que le deuxième octet définit l'instruction (voir liste d'instructions du 68HC11 par exemple).
  • Lorsqu'un processeur se désynchronise, par exemple suite à une erreur de programmation ou une perturbation extérieure, il se peut que son compteur de programme (PC) indique une position de la mémoire qui n'est pas un opcode mais un opérant.
    F091 12 2D 78 11 LF091: BRSET L002D,#%01111000, LF0A6
    F095 CE F3 17 LDX #$F317
    F098 18 1F 00 10 0B BRCLR 0, Y, #%00010000, LF0AC
  • Chaque instruction commence par un "opcode" et peut être suivie de plusieurs opérants. Lors du déroulement normal du programme, une instruction est chargée dans l'unité centrale, cette instruction a une longueur variant en fonction du opcode. Ainsi pour une instruction simple (NOP, INCA ...) aucun opérant n'est ajouté alors que pour une instruction plus compliquée (BRCLR) on peut trouver quatre opérants. Le système est très flexible et est basé sur le fait que chaque instruction en suit une autre. A la fin de l'exécution d'une instruction, le code suivant est nécessairement un opcode.
  • On imagine les dégâts que peut provoquer l'exécution anarchique d'un programme qui débuterait aléatoirement, par exemple suite à des surtensions ou autres parasites.
  • Selon l'exemple ci-dessus, si le compteur de programme PC est chargé avec l'adresse F093, l'instruction qu'il va exécuter sera celle dont le opcode est 78H soit l'instruction
    F093 78 11 CE ASL @$11CEh
    F096 F31718 ADD @$1718h
    F099 1F 00 10 0B BRCLR 0, X, #00010000B, LF0AC
  • La suite des codes exécutés est complètement aléatoire et incontrôlable. Les conséquences peuvent être dramatiques, par exemple effacer des données importantes, transmettre des clés de chiffrement.
  • Brève description de l'invention
  • Le but de la présente invention est de proposer une méthode et un dispositif afin de pallier aux dégâts qu'une désynchronisation du compteur de programme peut provoquer.
  • Ce but est atteint par un microprocesseur sécurisé comprenant un compteur de programme et une interface avec une mémoire de programme contenant des instructions, ce microprocesseur étant caractérisé en ce qu'il comprend une mémoire d'historique du compteur de programme indiquant la position du compteur de programme lors de l'exécution de la précédente instruction, et un module de vérification d'instruction, ce module comprenant des moyens de lecture d'une information de vérification additionnelle définissant pour l'instruction en cours d'exécution, la position supposée du précédent compteur de programme, ce module de vérification comprenant des moyens pour comparer cette information de vérification avec celle provenant de la mémoire d'historique, et des moyens pour générer une erreur si la vérification indique une incompatibilité.
  • Ce module de vérification est directement implémenté dans le microprocesseur, et agit sur la partie de saisie d'une instruction ("fetch"). Lorsqu'une instruction est lue, l'information de vérification est lue en même temps. Cette information va permettre de déterminer la manière d'atteindre cette instruction est conforme à la pensée du programmeur.
  • La mémoire d'historique du compteur de programme contient une information sur la provenance dudit compteur avant d'arriver sur l'instruction en cours. Cette indication de provenance peut, dans une forme simplifiée, simplement indiquer si l'instruction précédemment exécutée était l'instruction juste au-dessus de l'instruction en cours (auto-incrément du compteur de programme) ou au contraire, une autre instruction.
  • Brève description de la figure
  • L'invention sera mieux comprise grâce à la description détaillée qui va suivre et qui se réfère au dessin annexé qui est donné à titre d'exemple nullement limitatif, décrivant une mémoire connectée au microprocesseur.
  • Description détaillée de l'invention
  • Dans une exécution normale d'un programme, on peut considérer qu'il existe deux types de situation lors de l'exécution d'une instruction:
    • elle est exécutée juste après la précédente
    • elle est exécutée suite à un saut
  • Dans le premier cas, le compteur de programme s'incrémente automatiquement à la fin du traitement de l'instruction précédente. Nous sommes dans un mode continu.
  • Dans le second cas, le programme compteur est chargé par une valeur provenant de plusieurs sources, par exemple un saut (JMP), un appel de sous-routine (JSR, BSR), un saut conditionnel (BHS, BRA) ou une entrée d'interruption. Les instructions exécutées suite à un saut représente un faible pourcentage du code. C'est pourquoi selon une variante de l'invention, les instructions disposent d'une valeur indiquant dans quelle catégorie elles se trouvent.
  • Il est à noter qu'une instruction se trouvant dans la deuxième catégorie (saut autorisé) peut également être dans la première catégorie. En effet, lors de boucle par exemple, on peut arriver sur une instruction soit par le saut, soit par l'incrémentation normale du compteur de programme. Dans le cas d'une première instruction de sous-routine, il n'est possible d'atteindre cette instruction que par un saut. L'indicateur de saut peut avoir trois états, soit saut possible, saut interdit, saut obligatoire.
  • II est donc proposé d'ajouter une indication de vérification pour chaque instruction, cette indication comprenant au moins deux états, (sau possible, saut impossible) et d'ajouter cette information dans le code exécutable.
    F091 112 2D 78 11 LF091: BRSET L002D, #%01111000, LF0A6
    F095 0CE F3 17 LDX #$F317
    F098 018 1F 00 10 0B BRCLR 0, Y, #%00010000, LF0AC
    F09E 004C INCA
    F09F 1AB 12 LF0AC: ADD #12
  • La ligne F09F est typiquement une instruction qui peut être exécutée suite au saut défini à la ligne F098 ou au contraire, suite à l'instruction précédente. Dans un premier mode de réalisation, la valeur de saut sera à 1 pour "saut possible".
  • Les lignes F095 ou F09E sont au contraire exclusivement exécutée après l'instruction précédente. Un saut à cette adresse est impossible.
  • Quant à la ligne F091, dans le cas où il s'agirait de l'entrée d'un programme d'interruption, non seulement le saut est possible mais nécessaire. Selon une variante de l'invention, on pourrait placer un 2 au lieu du 1 pour "saut nécessaire".
  • Sur la figure 1, la mémoire de programme MEM va contenir l'ensemble du programme. Il peut s'agir de différent type de support tels que ROM, RAM, Flash. La partie interface INT du processeur MIC va lire les instructions par un module de lecture FE. La mémoire d'historique MH contient le compteur de programme précédent (PC-1) et la valeur courante (PC). Cette dernière deviendra la valeur précédente lors de la prochaine instruction.
  • Le module de vérification MV extrait (ou reçoit) l'indication de vérification associée à l'instruction en cours et compare cette information avec les données transmises de la mémoire d'historique. Si l'instruction est validée, elle est transmise à l'unité centrale (CPU) pour exécution.
  • Lors de l'exécution du programme, le contexte d'exécution est également stocké dans la mémoire d'historique MH du compteur de programme à savoir l'information de modification du compteur de programme. Dans une version simplifiée, cette information peut soit être "accès par auto-incrément" ou "accès par saut". Lors de l'appel d'une instruction, l'historique d'exécution est comparé avec l'information de vérification. Si l'historique indique "accès par auto-incrément" et que l'information de vérification est égale à zéro (saut impossible), l'instruction est validée. Si l'historique est égal à "accès par un saut" et que l'information de vérification est égale à 0 (saut impossible), l'instruction est invalidée.
  • Si l'historique est égal à "accès par un saut" et que l'information de vérification est égale à 1 (saut possible), l'instruction est validée; et si l'historique indique "accès par auto-incrément" et que l'information de vérification est égal à 1 (saut possible), l'instruction est validée (sauf si l'on a adopté le système à trois états et que l'information de vérification est du type "accès par saut nécessaire".
  • L'ensemble des informations de vérification peuvent être stockées dans une autre mémoire formant ainsi un masque d'exécution. L'information de vérification est lue dans cette mémoire et comparée avec le comportement du microprocesseur.
  • Selon un mode de réalisation, l'information de vérification peut comprendre une valeur indiquant une plage de saut acceptable.
    F091 FF 12 2D 78 11 LF091: BRSET L002D, #%01111000, LF0A6
    F095 00 CE F3 17 LDX #$F317
    F098 00 18 1F 00 10 0B BRCLR 0, Y, #%00010000, LF0AC
    F09E 00 4C INCA
    F09F 08 AB 12 LF0AC: ADD #12
  • Selon notre exemple, l'information de vérification est codée sur 8 bits. Si la valeur est zéro, seule l'exécution de cette instruction à la suite de la précédente est acceptée.
  • Ceci est le cas pour les lignes F095, F098 et F09E. Pour la ligne F09F, l'information de vérification est égale à 08 c'est-à-dire que la valeur précédente du compteur de programme ne doit pas excéder une différence de 8 par rapport à la valeur courante. On crée ainsi une fenêtre limitant l'accès à cette instruction à une petite plage du code.
  • Si une instruction peut être atteinte à partir de plusieurs départs, l'information de vérification comprendra la valeur la plus élevée. On peut réserver la valeur maximale, soit FFh, dans notre exemple pour indiquer qu'un saut est autorisé quelque soit la valeur du compteur de programme précédent. Cette situation est le cas pour la ligne F091 qui est l'entrée de la sous-routine formant l'exemple illustré ci-dessus.
  • Selon un mode plus sophistiqué de l'invention, une table de positions de départ TB est constituée pour chaque instruction acceptant l'arrivée suite à un saut.
  • Cette table contient toutes les adresses de départ possibles. Table F09F
    F09F
    La ligne F09F va contenir l'adresse de départ F098 selon notre exemple. Si d'autres instructions permettent d'accéder à cette ligne, leur adresse de départ seront contenues dans la table. F098
    .....
    .....
    Lors de l'exécution de la ligne F09F, la première vérification est faite sur la base de l'information de vérification. Si l'arrivée sur cette instruction est suite à un saut, on compare cette information (provenant de la mémoire d'historique) et l'information de vérification (qui peut être un bit dans ce cas).
  • Une fois l'arrivée par saut acceptée, le module de vérification va chercher la table correspondant à l'instruction en cours et comparer la valeur du compteur de programme précédent aux valeurs contenues dans la table. Si la valeur est présente, l'instruction est définitivement acceptée. Sinon, un message d'erreur est généré.
  • Ces tables sont générées lors de la compilation du programme et peuvent être stockées dans une mémoire différente de la mémoire programme, par exemple une mémoire qui est uniquement accessible au module de vérification.

Claims (6)

  1. Microprocesseur sécurisé comprenant un compteur de programme (PC) et une interface (INT) avec une mémoire de programme (MEM) contenant des instructions, ce microprocesseur étant caractérisé en ce qu'il comprend une mémoire d'historique (MH) du compteur de programme (PC) indiquant la position du compteur de programme lors de l'exécution de la précédente instruction (PC-1), et un module de vérification d'instruction (MV), ce module comprenant des moyens de lecture d'une information de vérification additionnelle définissant pour l'instruction en cours d'exécution, la position supposée du précédent compteur de programme (PC-1), ce module de vérification comprenant des moyens pour comparer cette information de vérification avec celle provenant de la mémoire d'historique (MH), et des moyens pour générer une erreur si la vérification indique une incompatibilité.
  2. Microprocesseur sécurisé (MIC) selon la revendication 1, caractérisé en ce que l'indication de vérification contient au moins deux états, soit "accès par auto-incrément" ou "accès par saut", et en ce que la mémoire d'historique (MH) contient deux états, soit "accès par auto-incrément" ou "accès par saut" sur la base du comportement du compteur de programme (PC) pour arriver à l'instruction en cours, le module de vérification génère une erreur si l'information de vérification indique l'état "accès par auto-incrément", et que la mémoire d'historique indique l'état "accès par saut".
  3. Microprocesseur sécurisé (MIC) selon la revendication 1, caractérisé en ce que l'indication de vérification contient au moins deux états, soit "accès par auto-incrément" ou "accès par saut", et en ce que la mémoire d'historique (MH) contient deux états, soit "accès par auto-incrément" ou "accès par saut" sur la base du comportement du compteur de programme (PC) pour arriver à l'instruction en cours, le module de vérification accepte l'instruction en cours si l'information de vérification indique l'état "accès par saut", et que la mémoire d'historique indique l'état "accès par auto-incrément".
  4. Microprocesseur sécurisé (MIC) selon la revendication 1, caractérisé en ce que l'indication de vérification contient au moins deux états, soit "accès par auto-incrément" ou "accès par saut", et en ce que la mémoire d'historique (MH) contient deux états, soit "accès par auto-incrément" ou "accès par saut" sur la base du comportement du compteur de programme (PC) pour arriver à l'instruction en cours, le module de vérification accepte l'instruction en cours si l'information de vérification indique l'état "accès par saut", et que la mémoire d'historique indique l'état "accès par saut".
  5. Microprocesseur sécurisé (MIC) selon les revendications 2 ou 3, caractérisé en ce que l'indication de vérification contient trois états, soit "accès par auto-incrément", "accès par saut" ou "accès par saut nécessaire", le module de vérification génère une erreur si l'information de vérification contient l'état "accès par saut nécessaire", et que la mémoire d'historique indique l'état "accès par auto-incrément".
  6. Microprocesseur sécurisé (MIC) selon les revendications 1 à 5, caractérisé en ce que si l'indication de vérification contient "accès par saut", et que la mémoire d'historique (MH) contient l'état "accès par saut", le module de vérification, préalablement à l'acceptation de l'instruction, comprend des moyens de lecture d'une table (TB) comprenant, pour l'instruction en cours, le ou les compteurs de programme précédents autorisés et vérifie si le compteur de programme précédent (PC-1) contenu dans le module d'historique est présent dans cette liste.
EP05109382A 2005-10-10 2005-10-10 Microprocesseur sécurisé avec vérification des sauts Withdrawn EP1783649A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP05109382A EP1783649A1 (fr) 2005-10-10 2005-10-10 Microprocesseur sécurisé avec vérification des sauts
TW095136755A TW200805147A (en) 2005-10-10 2006-10-03 Securised microprocessor with jump verification
EP06807043A EP1934876A1 (fr) 2005-10-10 2006-10-06 Microprocesseur sécurisé avec vérification des sauts
PCT/EP2006/067142 WO2007042478A1 (fr) 2005-10-10 2006-10-06 Microprocesseur sécurisé avec vérification des sauts
US11/544,596 US20070083795A1 (en) 2005-10-10 2006-10-10 Securised microprocessor with jump verification

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP05109382A EP1783649A1 (fr) 2005-10-10 2005-10-10 Microprocesseur sécurisé avec vérification des sauts

Publications (1)

Publication Number Publication Date
EP1783649A1 true EP1783649A1 (fr) 2007-05-09

Family

ID=35355547

Family Applications (2)

Application Number Title Priority Date Filing Date
EP05109382A Withdrawn EP1783649A1 (fr) 2005-10-10 2005-10-10 Microprocesseur sécurisé avec vérification des sauts
EP06807043A Withdrawn EP1934876A1 (fr) 2005-10-10 2006-10-06 Microprocesseur sécurisé avec vérification des sauts

Family Applications After (1)

Application Number Title Priority Date Filing Date
EP06807043A Withdrawn EP1934876A1 (fr) 2005-10-10 2006-10-06 Microprocesseur sécurisé avec vérification des sauts

Country Status (4)

Country Link
US (1) US20070083795A1 (fr)
EP (2) EP1783649A1 (fr)
TW (1) TW200805147A (fr)
WO (1) WO2007042478A1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549260B2 (en) * 2009-01-29 2013-10-01 Infineon Technologies Ag Apparatus for processing data and method for generating manipulated and re-manipulated configuration data for processor
EP2996034B1 (fr) 2014-09-11 2018-08-15 Nxp B.V. Protection de flux d'exécution dans des microcontrôleurs
GB2551523B (en) 2016-06-20 2019-07-03 Imagination Tech Ltd Livelock recovery circuit
CN107957883B (zh) * 2017-12-19 2021-06-25 深圳芯易德科技有限公司 数据处理方法、51单片机、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001042874A2 (fr) * 1999-10-25 2001-06-14 Phoenix Technologies Inc. Repartition d'une interruption de gestion de systeme logiciel securise au moyen d'adresses d'appelants
US20020013893A1 (en) * 1998-04-22 2002-01-31 Transwitch Corporation Real time debugger interface for embedded systems
WO2004046929A1 (fr) * 2002-11-14 2004-06-03 Stmicroelectronics S.A. Transmission d'un message numerique entre un circuit de surveillance d'un microprocesseur et un outil d'analyse
EP1507185A1 (fr) * 2003-08-11 2005-02-16 Axalto S.A. Méthode et dispositif de protection contre l'accès non-autorisé à une routine sensible

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4312272B2 (ja) * 1995-10-06 2009-08-12 モトローラ・インコーポレイテッド 内部メモリへのアクセスを制限するマイクロコントローラ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013893A1 (en) * 1998-04-22 2002-01-31 Transwitch Corporation Real time debugger interface for embedded systems
WO2001042874A2 (fr) * 1999-10-25 2001-06-14 Phoenix Technologies Inc. Repartition d'une interruption de gestion de systeme logiciel securise au moyen d'adresses d'appelants
WO2004046929A1 (fr) * 2002-11-14 2004-06-03 Stmicroelectronics S.A. Transmission d'un message numerique entre un circuit de surveillance d'un microprocesseur et un outil d'analyse
EP1507185A1 (fr) * 2003-08-11 2005-02-16 Axalto S.A. Méthode et dispositif de protection contre l'accès non-autorisé à une routine sensible

Also Published As

Publication number Publication date
EP1934876A1 (fr) 2008-06-25
US20070083795A1 (en) 2007-04-12
TW200805147A (en) 2008-01-16
WO2007042478A1 (fr) 2007-04-19

Similar Documents

Publication Publication Date Title
US9432400B2 (en) Method and system for protecting against unknown malicious activities by detecting a heap spray attack on an electronic device
US20200288201A1 (en) Fraud prevention method, operation detection method and apparatus, and electronic device
TW202227971A (zh) 處理器、用以保護處理器的裝置、以及用以保護處理器的方法
US20090271593A1 (en) Patching device for patching rom code, method for patching rom code, and electronic device utilizing the same
US20110271027A1 (en) Remote access of peripheral device connected to serial bus
EP2565810A1 (fr) Microprocesseur protégé contre le vidage de mémoire
EP1596283B1 (fr) Protection d'un branchement dans un programme
US10735447B2 (en) System and method of protecting a network
US8683307B2 (en) Checksum calculation, prediction and validation
EP1108249B1 (fr) Procede de securisation du traitement d'une information sensible dans un module de securite monolithique, et module de securite associe
EP1783649A1 (fr) Microprocesseur sécurisé avec vérification des sauts
CN110618859B (zh) 支持按顺序打包的交易池设计方法、电子设备
EP1670000A1 (fr) Procédé de sécurisation de l'écriture en mémoire contre des attaques par rayonnement ou autres.
CN109067738B (zh) 一种端口的漏洞检测方法、终端及计算机可读介质
US7418589B2 (en) System and method for updating a basic input/output system
FR2977342A1 (fr) Verification d'integrite d'un programme execute par un circuit electronique
JP2006507593A (ja) マイクロコントローラ、及びマイクロコントローラのプログラミングを処理するための結合方法
EP1783648A1 (fr) Microprocesseur sécurisé avec vérification des instructions
CN110471669B (zh) 一种空指针引用的检测方法及检测装置
CN115104097A (zh) 控制流完整性系统和方法
ES2429766T3 (es) Método de transferencia segura de datos
US20170293573A1 (en) Systems and methods for restricting write access to non-volatile memory
CN107491287B (zh) 指令的执行方法及装置
EP2860669B1 (fr) Procédé mis en oeuvre dans un microcircuit et dispositif associé
EP3032451B1 (fr) Procédé d'exécution d'un programme par un processeur et entité électronique comportant un tel processeur

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA HR MK YU

AKX Designation fees paid
REG Reference to a national code

Ref country code: DE

Ref legal event code: 8566

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20071110