FR2977342A1 - Verification d'integrite d'un programme execute par un circuit electronique - Google Patents

Verification d'integrite d'un programme execute par un circuit electronique Download PDF

Info

Publication number
FR2977342A1
FR2977342A1 FR1155874A FR1155874A FR2977342A1 FR 2977342 A1 FR2977342 A1 FR 2977342A1 FR 1155874 A FR1155874 A FR 1155874A FR 1155874 A FR1155874 A FR 1155874A FR 2977342 A1 FR2977342 A1 FR 2977342A1
Authority
FR
France
Prior art keywords
value
instruction
program
integrity
conditional
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.)
Pending
Application number
FR1155874A
Other languages
English (en)
Inventor
Assche Gilles Van
Keer Ronny Van
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.)
Proton World International NV
Original Assignee
Proton World International NV
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 Proton World International NV filed Critical Proton World International NV
Priority to FR1155874A priority Critical patent/FR2977342A1/fr
Priority to US13/524,456 priority patent/US9886362B2/en
Publication of FR2977342A1 publication Critical patent/FR2977342A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Abstract

L'invention concerne un procédé de vérification d'intégrité d'un programme (4) exécuté par un circuit électronique (1) et comportant au moins un branchement conditionnel, dans lequel : une première valeur (LC) est mise à jour pour toute instruction (OI) ne correspondant pas à une instruction de branchement ; une deuxième valeur (GC) est mise à jour avec la première valeur à chaque instruction de branchement conditionnel (CBI) ; et la deuxième valeur est comparée à une troisième valeur (RC), calculée en fonction des branchements conditionnels effectués.

Description

B10875 - 11-ZV2-0077 1 VERIFICATION D'INTEGRITE D'UN PROGRAMME EXECUTE PAR UN CIRCUIT ELECTRONIQUE
Domaine de l'invention La présente invention concerne de façon générale des circuits électroniques et, plus particulièrement, la vérification d'intégrité de programmes exécutés par un micro- s processeur. Exposé de l'art antérieur Les circuits électroniques et plus particulièrement les microprocesseurs exécutant des programmes sont susceptibles de subir des perturbations (introduction de virus ou attaque par 10 injection de fautes). Ils sont alors souvent équipés de mécanismes de vérification d'intégrité. Une technique particulièrement répandue consiste à vérifier que les instructions exécutées correspondent aux instructions attendues. Une signature des instructions du 15 programme est calculée lors de la conception du programme ou lors de son enregistrement dans une mémoire généralement non volatile associée à l'unité de traitement. Puis, lors de l'exécution du programme, une signature courante est calculée et comparée à la signature de référence préenregistrée. 20 Ces techniques fonctionnent correctement sur des programmes dont le déroulement est figé, mais posent problème B10875 - 11-ZV2-0077
2 dès que le programme comporte des branchements conditionnels ou des nombres d'itérations variables d'un même calcul. En effet, il est alors particulièrement complexe de calculer la signature sans savoir lors de la conception quels branchements ou combien d'itérations seront effectués. Une solution est de ne pas tenir compte, dans le calcul de la signature, des éventuelles sections (instruction, groupes d'instructions, sous-programmes, etc.) liés à des branchements conditionnels ou aux itérations. Toutefois, l'intégrité de ces sections n'est alors pas vérifiée. Dans des applications cryptographiques, où des calculs sont souvent effectués par itérations successives et ou le type d'opération dépend souvent de l'état d'un bit lié à l'itération courante, cela rend les calculs vulnérables à d'éventuelles attaques par injection de fautes. Résumé Un objet d'un mode de réalisation de la présente invention est de proposer un mécanisme de vérification d'intégrité d'un programme qui pallie tout ou partie des inconvénients des solutions usuelles. Un autre objet d'un mode de réalisation de la présente invention est de proposer un mécanisme de vérification d'intégrité compatible avec la vérification d'instructions dans des branchements conditionnels et dans des itérations.
Pour atteindre tout ou partie de ces objets ainsi que d'autres, on prévoit un procédé de vérification d'intégrité d'un programme exécuté par un circuit électronique et comportant au moins un branchement conditionnel, dans lequel : une première valeur est mise à jour pour toute 30 instruction ne correspondant pas à une instruction de branchement ; une deuxième valeur est mise à jour avec la première valeur à chaque instruction de branchement conditionnel ; et B10875 - 11-ZV2-0077
3 la deuxième valeur est comparée à une troisième valeur, calculée en fonction des branchements conditionnels effectués. Selon un mode de réalisation de la présente invention, la troisième valeur est calculée au cours de l'exécution du programme à partir de valeurs de référence précalculées, au moins une valeur de référence étant affectée à une section appelée par un branchement conditionnel. Selon un mode de réalisation de la présente invention, à chaque nouvelle instruction exécutée, on détermine si l'instruction est une instruction de branchement conditionnel, pour mettre à jour la première valeur ou incrémenter la deuxième valeur selon le cas. Selon un mode de réalisation de la présente invention, 15 aucune des première et deuxième valeurs n'est modifiée en cas d'instruction de branchement non conditionnel. Selon un mode de réalisation de la présente invention, la mise à jour de la première valeur est effectuée par une fonction de cumul des valeurs des bits des instructions. 20 Selon un mode de réalisation de la présente invention, la mise à jour de la première valeur est effectuée par une fonction de calcul de CRC. Selon un mode de réalisation de la présente invention, la première valeur est réinitialisée après chaque incrément de 25 la deuxième valeur. Selon un mode de réalisation de la présente invention, le calcul de la troisième valeur est effectué pendant le déroulement du programme. Selon un mode de réalisation de la présente invention, 30 le calcul de la troisième valeur est effectué à la fin de l'exécution du programme, au moins un compteur du nombre de branchements conditionnels étant mis à jour pendant l'exécution du programme.
B10875 - 11-ZV2-0077
4 On prévoit également un circuit électronique comportant un circuit de mise en oeuvre du procédé de vérification d'intégrité. Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 est un schéma bloc partiel d'un exemple de circuit électronique du type auquel s'applique les modes de réalisation décrits ; la figure 2 est un schéma bloc illustrant un détail du circuit de la figure 1 ; la figure 3 illustre, sous forme de blocs, un mode de 15 réalisation du mécanisme de vérification d'intégrité ; et la figure 4 est un exemple d'application du mécanisme de la figure 3. Description détaillée De mêmes éléments ont été désignés par de mêmes 20 références aux différentes figures. Par souci de clarté, seuls les éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et seront détaillés. En particulier, les fonctions mises en oeuvre par les programmes vérifiés n'ont pas été 25 détaillées, l'invention étant compatible avec les programmes usuels. De plus, l'utilisation faite du résultat de la vérification d'intégrité n'a pas n'ont plus été détaillée, l'invention étant là encore compatible avec les exploitations usuelles des résultats de vérification d'intégrité. 30 La figure 1 est un schéma bloc partiel d'un circuit électronique équipé d'un mode de réalisation d'un mécanisme de vérification d'intégrité. Ce circuit comporte une unité de traitement 1 (PU) chargée d'exécuter des instructions I d'un programme. Dans les 35 applications plus particulièrement visées par les modes de B10875 - 11-ZV2-0077
réalisation décrits, ces instructions proviennent d'une mémoire non volatile et sont susceptibles de subir des modifications (volontaires ou accidentelles) entre leur extraction de la mémoire et l'exécution par l'unité centrale. Ces instructions 5 peuvent aussi provenir d'une mémoire non volatile dans laquelle elles transitent, d'un autre circuit que celui intégrant l'unité 1, etc., les modes de réalisation décrits vérifiant l'intégrité en interceptant les instructions au moment de leur chargement pour exécution dans l'unité de traitement.
Pour vérifier que ces instructions n'aient pas été modifiées, le circuit de la figure 1 comporte un circuit 2, de préférence dédié, de vérification de l'intégrité des instructions (SIGN COMP) exécutées. Ce mécanisme consiste en une vérification d'une signature des instructions. Un calcul est effectué sur la base des instructions chargées dans l'unité de traitement et le résultat de ce calcul est comparé à une valeur calculée au chargement du programme dans la mémoire non volatile. Le circuit 2 fournit un résultat (OK/NOK) par exemple à l'unité de traitement qui prend les mesures appropriées en fonction de ce résultat. Le plus souvent, la vérification de signature s'effectue à la fin du programme ou à certaines étapes de celui-ci et permet d'interrompre la poursuite de l'exécution ou de valider/invalider le résultat fourni.
La figure 2 est une représentation plus détaillée, sous forme de blocs, d'un mode de réalisation du circuit 2. Ce circuit comporte deux éléments de mémorisation 21 (LC) et 22 (GC) destinés à contenir des première et deuxième valeurs ou signatures courantes. Ces éléments de mémorisation sont, par exemple, des registres réalisés avec des éléments de mémoire volatile. Le circuit 2 comporte également un élément 23 (INST TYPE ?) de détection du type d'instruction I reçu (en cours d'exécution par l'unité de traitement). Les types d'instruction distingués sont les instructions de branchement conditionnel (CBI), les instructions de branchement non B10875 - 11-ZV2-0077
6 conditionnel (UBI) et les autres instructions (0I). Un calcul en boucle (itérations) correspond à un branchement conditionnel si le nombre d'itérations n'est pas fixe. En fonction du type d'instruction, le circuit 2 met à jour l'une ou l'autre ou aucune des valeurs courantes LC ou GC. Pour toute instruction ne correspondant pas à une instruction de branchement conditionnel, la signature courante LC est mise à jour. Pour toute instruction correspondant à un branchement conditionnel, la signature courante de GC est mise à jour. Le cas échéant, en présence d'une instruction correspondant à un branchement non conditionnel, aucune des signatures courantes n'est mise à jour. Une fois la mise à jour éventuelle d'une signature courante effectuée, on passe à l'instruction suivante. Dans une réalisation préférée par un circuit 2 dédié, ce dernier comporte deux cellules 24 (LC UPD) et 25 (GC UPD) de mise à jour des valeurs LC et GC. La figure 3 est un organigramme simplifié d'un mode de mise en oeuvre du mécanisme de vérification d'intégrité à l'aide du circuit 2.
Une première étape (bloc 31, INT) consiste en une initialisation des signatures courantes LC et GC qui sont, par exemple, initialisées à une valeur nulle. Puis, la première instruction est chargée et on détermine (bloc 32, 01 ?) si cette instruction est une instruction autre qu'une instruction de branchement. Dans l'affirmative (sortie Y du bloc 32), la signature LC est mise à jour (bloc 33, LC = f(LC, I)) par application d'une fonction f à la valeur précédente contenue dans l'élément de mémorisation 21 et à la valeur de l'instruction I. Cette fonction f est par exemple une fonction de cumul des valeurs des bits de l'instruction au total précédent (CHECKSUM). Selon un autre exemple conférant une meilleure diffusion de la signature, la fonction f est une fonction de type CRC (Cyclic Redundancy Check).
B10875 - 11-ZV2-0077 7 Une fois la valeur LC mise à jour, on passe à l'instruction suivante (bloc 34, NEXT I).
Si l'instruction est une instruction de branchement (sortie N du bloc 32), on détermine (bloc 35, CBI ?) s'il s'agit 5 d'une instruction de branchement conditionnel.
Dans l'affirmative, (sortie Y du bloc 35), on met à jour la deuxième valeur GC en y ajoutant la valeur LC et on réinitialise la valeur LC (bloc 36, GC = GC+LC ; LC = 0). On passe à l'instruction suivante (bloc 34). L'opération est, par n 10 exemple, effectuée modulo la cardinalité du registre (modulo 2 où n représente le nombre de bits du registre 22). En variante, l'opération d'addition est une opération de type Ou-Exclusif (XOR), c'est-à-dire une addition bit à bit.
Si l'instruction de branchement est une instruction de
15 branchement non conditionnel (sortie N du bloc 35), on passe directement à l'instruction suivante (bloc 34) sans effectuer de mise à jour des signatures.
Le fait de ne pas mettre à jour la signature en cas de branchement non conditionnel (UBI) facilite la mise en oeuvre du
20 procédé pour le programmeur. Toutefois, on peut aussi prévoir de considérer une instruction de branchement non conditionnel comme toute autre instruction et mettre alors à jour la valeur LC.
Lorsque la dernière instruction a été traitée, on sort (END) de la boucle de calcul de signature courante et la valeur
25 contenue par l'élément de mémorisation 22 (GC) contient la valeur à vérifier à une valeur ou signature de référence.
Pour effectuer cette vérification, la signature de référence doit tenir compte du nombre de branchements conditionnels effectués, comme cela va maintenant être décrit en
30 relation avec un exemple simplifié.
La figure 4 est un exemple simplifié de programme 4 susceptible d'être vérifié par le mécanisme décrit. Le programme 4 comporte plusieurs sections A, B, C, D et E, par exemple écrites les unes à la suite des autres, et démarre dans la
35 section A.
B10875 - 11-ZV2-0077
8 On suppose que : la section A est une section inconditionnelle, exécutée systématiquement ; les sections B et C sont des sections conditionnelles exécutées selon le résultat d'une instruction de branchement (COND(k) JUMP TO C) conditionnelle sur la valeur (par exemple 0 ou 1) prise par une variable k, en fin de section A (k=0/1), l'instruction COND JUMP étant par exemple une instruction de type "if ... then ... else" réalisant soit un branchement sur la section C, soit une poursuite de l'exécution qui correspond à la section B ; la section D est une section inconditionnelle exécutée soit à la suite de la section B par un branchement inconditionnel (UNDCON JUMP TO D) soit à la suite de la section C par poursuite de l'exécution ; et la section E est une boucle (LOOP(N)) de N itérations, la valeur N étant déterminée dans la section D (SELECT N). Si N vaut 0, la boucle est sautée et le programme passe directement à l'instruction qui suit (dans l'exemple, l'instruction de fin).
Dans cet exemple, quatre signatures de référence RC(A), RC(BD), RC(CD) et RC(E) sont calculées lors de l'installation ou du chargement du programme en mémoire non volatile du circuit électronique. Ces signatures correspondent à la valeur donnée par application de la fonction f aux instructions des sections (par exemple A et E) ou groupes de sections (par exemple B et D, et C et D) exécutées sans condition. Le cas échéant l'instruction de branchement non conditionnel UNCOND JUMP TO D est incluse dans la section B. Un avantage de calculer les signatures RC(BD) et RC(CD) plutôt que de calculer trois signatures RC(B), RC(C) et RC(D), puis de les cumuler est que cela réduit le nombre de signatures à stocker. De plus, cela améliore la sécurité en vérifiant à la suite l'exécution des sections B et D, ou C et D. Si le programme se poursuit de façon non conditionnelle après la section E, la signature des instructions correspondantes est B10875 - 11-ZV2-0077 9 calculée avec celle de la section A. On voit donc que les signatures de référence peuvent se chevaucher et partager de mêmes sections.
Les quatre valeurs précalculées sont utilisées par le mécanisme de vérification d'intégrité pour, en fonction de l'exécution du programme, calculer une valeur courante GC à comparer à la signature de référence RC. Par exemple, une instruction de vérification CHECK correspond à la dernière instruction.
Selon un mode de réalisation, la signature RC est calculée en même temps que la signature courante. Elle est initialisée à l'étape 31 (figure 3) avec la valeur RC(A). Puis, selon le résultat de l'instruction de branchement conditionnel (en reprenant l'exemple d'une signature GC basée sur un n incrément modulo 2 ), la valeur RC(BD) ou RC(CD) est ajoutée (bloc 38 en pointillés) en fonction de la section C ou D appelée. Puis, en fonction de la valeur N, un multiple de la signature RC(E) est ajouté à la somme précédente.
Côté calcul de signature courante (bloc 36), il n'est pas nécessaire de distinguer les sections. Si l'exécution est correcte (programme intègre), la valeur LC contient, au moment de la mise à jour suivante de la valeur GC, la valeur RC (BD) ou RC(CD) selon la section qui s'est exécutée.
Selon un autre mode de réalisation, autant de compteurs qu'il y a de signatures de sections, sont initialisés à zéro et sont incrémentés d'un à chaque fois que la section correspondante est appelée. Puis, à la fin de l'exécution (END), la signature de référence RC est calculée en ajoutant, à la valeur RC(A), les produits respectifs des signatures par les nombres d'exécutions correspondants.
Dans l'exemple de la figure 4, cela revient à calculer la relation suivante :
RC = RC(A) + k*RC(BD) + (1-k)*RC(CD) + N*RC(E).
Quel que soit son mode d'obtention, la signature de 35 référence RC est comparée à la signature courante.
B10875 - 11-ZV2-0077 10 Le nombre de signatures de référence dépend du nombre de sections différentes susceptibles d'être appelés en branchements conditionnels. Dans le mode de réalisation où la signature de référence n'est pas calculée au fur et à mesure, le nombre de compteurs des nombres d'exécutions augmente de façon correspondante (sauf si plusieurs sections ont la même signature).
Le contrôle de la signature peut intervenir à la fin du programme ou à certaines étapes, pourvu que cela ne soit pas 10 au milieu d'une section.
Un avantage du mécanisme de vérification décrit est qu'il permet de prendre en compte la présence de branchements conditionnels dans un programme sans nuire à sa sécurité.
Divers modes de réalisation ont été décrits, diverses
15 variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix de la fonction f dépend de l'application et, par exemple, des cellules de calcul facilement réalisables. On pourra par exemple avoir recours à des signatures plus complexes pourvu que les ressources du circuit électronique et
20 le temps d'exécution le permette. La taille des registres 21 et 22 dépend des tailles susceptibles d'être prises par les valeurs n LC et GC. L'incrément de la valeur GC s'effectue modulo 2 , où n représente le nombre de bit du registre 22. La valeur RC est calculée sur un même nombre de bits que la valeur GC.
25 Enfin, la mise en oeuvre pratique de l'invention est à la portée de l'homme de métier à partir des indications fonctionnelles données ci-dessus.

Claims (10)

  1. REVENDICATIONS1. Procédé de vérification d'intégrité d'un programme (4) exécuté par un circuit électronique (1) et comportant au moins un branchement conditionnel, dans lequel : une première valeur (LC) est mise à jour pour toute 5 instruction (0I) ne correspondant pas à une instruction de branchement ; une deuxième valeur (GC) est mise à jour avec la première valeur à chaque instruction de branchement conditionnel (CBI) ; et 10 la deuxième valeur est comparée à une troisième valeur (RC), calculée en fonction des branchements conditionnels effectués.
  2. 2. Procédé selon la revendication 1, dans lequel la troisième valeur (RC) est calculée au cours de l'exécution du 15 programme à partir de valeurs de référence précalculées (RC(A), RC(BD), RC(CD), RC(E)), au moins une valeur de référence étant affectée à une section (C, D, E) appelée par un branchement conditionnel.
  3. 3. Procédé selon la revendication 1 ou 2, dans lequel, 20 à chaque nouvelle instruction exécutée, on détermine (23) si l'instruction est une instruction de branchement conditionnel (CBI), pour mettre à jour la première valeur (LC) ou incrémenter la deuxième valeur (GC) selon le cas.
  4. 4. Procédé selon l'une quelconque des revendications 1 25 à 3, dans lequel aucune des première (LC) et deuxième (GC) valeurs n'est modifiée en cas d'instruction de branchement non conditionnel (UBI).
  5. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel la mise à jour de la première valeur (LC) est 30 effectuée par une fonction (f) de cumul des valeurs des bits des instructions (I).
  6. 6. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel la mise à jour de la première valeur (LC) est effectuée par une fonction (f) de calcul de CRC.B10875 - 11-ZV2-0077 12
  7. 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel la première valeur (LC) est réinitialisée après chaque incrément de la deuxième valeur (GC).
  8. 8. Procédé selon l'une quelconque des revendications 1 5 à 4, dans lequel le calcul de la troisième valeur (RC) est effectué (38) pendant le déroulement du programme.
  9. 9. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel le calcul de la troisième valeur (RC) est effectué à la fin de l'exécution du programme, au moins un 10 compteur du nombre de branchements conditionnels étant mis à jour pendant l'exécution du programme.
  10. 10. Circuit électronique comportant un circuit de mise en oeuvre du procédé de vérification d'intégrité conforme à l'une quelconque des revendications 1 à 9.
FR1155874A 2011-06-30 2011-06-30 Verification d'integrite d'un programme execute par un circuit electronique Pending FR2977342A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1155874A FR2977342A1 (fr) 2011-06-30 2011-06-30 Verification d'integrite d'un programme execute par un circuit electronique
US13/524,456 US9886362B2 (en) 2011-06-30 2012-06-15 Checking the integrity of a program executed by an electronic circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1155874A FR2977342A1 (fr) 2011-06-30 2011-06-30 Verification d'integrite d'un programme execute par un circuit electronique

Publications (1)

Publication Number Publication Date
FR2977342A1 true FR2977342A1 (fr) 2013-01-04

Family

ID=46146772

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1155874A Pending FR2977342A1 (fr) 2011-06-30 2011-06-30 Verification d'integrite d'un programme execute par un circuit electronique

Country Status (2)

Country Link
US (1) US9886362B2 (fr)
FR (1) FR2977342A1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010037457B4 (de) * 2010-09-10 2012-06-21 Technische Universität Dresden Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
DE102015112143B4 (de) * 2015-07-24 2017-04-06 Infineon Technologies Ag Ein Verfahren zum Bestimmen einer Integrität einer Ausführung eines Codefragments und ein Verfahren zum Bereitstellen einer abstrahierten Repräsentation eines Programmcodes
FR3064781B1 (fr) * 2017-03-30 2019-04-05 Idemia Identity And Security Procede de protection d'un dispositif electronique contre des attaques par injection de faute pendant l'execution d'un programme

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2790844A1 (fr) * 1999-03-09 2000-09-15 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
WO2007077142A2 (fr) * 2006-01-04 2007-07-12 Gemplus Procede de securisation de l'execution d'un programme d'ordinateur

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175914B1 (en) * 1997-12-17 2001-01-16 Advanced Micro Devices, Inc. Processor including a combined parallel debug and trace port and a serial port
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
US6173395B1 (en) * 1998-08-17 2001-01-09 Advanced Micro Devices, Inc. Mechanism to determine actual code execution flow in a computer
JP3583937B2 (ja) * 1998-12-28 2004-11-04 富士通株式会社 情報処理装置
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
US6658557B1 (en) * 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
DE602004002241T2 (de) * 2003-04-03 2007-07-19 Stmicroelectronics S.A. Schutz eines auf ausführungwartenden Programms in einem Speicher für einen Mikroprozessor
EP1748374A1 (fr) * 2005-07-08 2007-01-31 STMicroelectronics SA Procédé et dispositif de protection d'une mémoire contre les attaques par injection d'erreur
JP3114603U (ja) 2005-07-11 2005-10-27 パワード有限会社 太陽電池用ダイオード素子装置
FR2898704B1 (fr) * 2006-03-14 2008-06-06 Proton World Internatinal Nv Protection d'un programme contre un deroutement
US7512772B2 (en) * 2007-01-08 2009-03-31 International Business Machines Corporation Soft error handling in microprocessors
FR2915007A1 (fr) * 2007-04-12 2008-10-17 St Microelectronics Sa Protection de l'execution d'un programme

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2790844A1 (fr) * 1999-03-09 2000-09-15 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
WO2007077142A2 (fr) * 2006-01-04 2007-07-12 Gemplus Procede de securisation de l'execution d'un programme d'ordinateur

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NAHMSUK OH ET AL: "Control-Flow Checking by Software Signatures", IEEE TRANSACTIONS ON RELIABILITY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 51, no. 1, 1 March 2002 (2002-03-01), XP011079413, ISSN: 0018-9529 *

Also Published As

Publication number Publication date
US9886362B2 (en) 2018-02-06
US20130007420A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
EP1596283B1 (fr) Protection d'un branchement dans un programme
EP1161725B1 (fr) Procede de surveillance du deroulement d'un programme
EP3457620B1 (fr) Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur
JP7154365B2 (ja) ソフトウェアコードをセキュアにするための方法
FR2977342A1 (fr) Verification d'integrite d'un programme execute par un circuit electronique
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
FR2841015A1 (fr) Controle d'execution d'un programme
EP3457621B1 (fr) Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur
EP3610372B1 (fr) Procédé d'exécution d'un code machine d'une fonction sécurisée
US9323920B2 (en) Data processing arrangement and method for ensuring the integrity of the execution of a computer program
EP2947563A1 (fr) Processeur à instructions conditionnelles
EP3284206B1 (fr) Procédé de sécurisation de l' exécution d'un programme
US20190361810A1 (en) Prefetching data based on register-activity patterns
EP1980968B1 (fr) Protection de l'exécution d'un programme
WO2007042478A1 (fr) Microprocesseur sécurisé avec vérification des sauts
FR2895814A1 (fr) Procede de securisation de l'execution d'un programme d'ordinateur
FR2991071A1 (fr) Procede et dispositif de traitement de donnees
EP3295297B1 (fr) Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme
EP1591866A1 (fr) Contrôle de l'exécution d'un algorithme par un circuit intégré
EP1783648A1 (fr) Microprocesseur sécurisé avec vérification des instructions
EP4089559B1 (fr) Microprocesseur équipé d'une unité arithmétique et logique et d'un module matériel de sécurisation
EP3032451B1 (fr) Procédé d'exécution d'un programme par un processeur et entité électronique comportant un tel processeur
EP4086801B1 (fr) Procédé d'exécution d'une fonction, sécurisé par désynchronisation temporelle
EP1357459A1 (fr) Processeur securisé contre les deroutements