EP1980968B1 - Protection de l'exécution d'un programme - Google Patents

Protection de l'exécution d'un programme Download PDF

Info

Publication number
EP1980968B1
EP1980968B1 EP08103508A EP08103508A EP1980968B1 EP 1980968 B1 EP1980968 B1 EP 1980968B1 EP 08103508 A EP08103508 A EP 08103508A EP 08103508 A EP08103508 A EP 08103508A EP 1980968 B1 EP1980968 B1 EP 1980968B1
Authority
EP
European Patent Office
Prior art keywords
program
area
instructions
execution
instruction
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.)
Expired - Fee Related
Application number
EP08103508A
Other languages
German (de)
English (en)
Other versions
EP1980968A1 (fr
Inventor
Pierre-Yvan Liardet
Yannick Teglia
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics 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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of EP1980968A1 publication Critical patent/EP1980968A1/fr
Application granted granted Critical
Publication of EP1980968B1 publication Critical patent/EP1980968B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F21/54Monitoring 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

Landscapes

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

Description

    Domaine de l'invention
  • La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, le contrôle de l'exécution d'un programme par un microprocesseur.
  • Exposé de l'art antérieur
  • Dans la plupart des programmes ou algorithmes exécutés par un microprocesseur, on trouve des branchements conditionnels, c'est-à-dire des étapes au cours desquelles le programme sélectionne l'instruction suivante à exécuter parmi deux instructions différentes. Ces branchements (jumps) sont généralement décidés en fonction de l'état d'un bit drapeau ou de condition (flag). Selon l'état de ce bit drapeau, l'exécution du programme se poursuit par une instruction ou une autre. C'est à ce moment qu'intervient le branchement conditionnel vers une adresse différente du programme.
  • Un tel fonctionnement est satisfaisant dans de nombreuses applications. Toutefois, dans des programmes manipulant des quantités secrètes ou plus généralement mettant en oeuvre des algorithmes pour lesquels on ne souhaite pas qu'un utilisateur non autorisé soit capable de modifier le séquencement du programme, de tels branchements constituent des points particulièrement vulnérables.
  • En particulier, un type d'attaque répandu pour déduire de l'exécution d'un algorithme des quantités secrètes ou pour passer frauduleusement des tests, est connu sous le nom d'attaque par injection de faute et consiste à forcer le déroutement d'un programme en introduisant une perturbation (par exemple, sur l'alimentation du processeur) à des positions stratégiques de son exécution. De telles injections de faute permettent ensuite de découvrir les quantités secrètes manipulées. Par exemple et de façon simplifiée, si un branchement conditionnel vérifie l'exactitude d'une clé par rapport à une clé préenregistrée, le branchement conditionnel vers les instructions autorisées ne doit pas se produire si la bonne clé n'est pas introduite dans une variable correspondante du programme. En présentant une mauvaise clé et en provoquant des perturbations sur l'exécution du programme (injection de faute), un mauvais (illicite) branchement conditionnel ayant pour effet l'acceptation de la mauvaise clé va statistiquement se produire. Or, il suffit que le branchement soit autorisé une fois pour permettre à un pirate d'exploiter les traitements exécutés par l'algorithme et pirater ainsi le programme.
  • Une technique connue de protection d'un programme contre des injections de faute consiste à calculer des signatures de deux exécutions du même programme pour comparer ces signatures par rapport à une signature préenregistrée ou l'une par rapport à l'autre. Cela requiert deux exécutions du programme, donc soit deux cellules matérielles, soit deux fois plus de temps. De plus, le circuit intégré exécutant le programme doit disposer des fonctions permettant de calculer les signatures correspondantes.
  • La demande de brevet américain N° 2005/0257033 ( 04-RO-030, B6511 ) décrit une solution selon laquelle une adresse de branchement est calculée en fonction d'un résultat sur plusieurs bits indicateurs d'un respect d'une condition souhaitée, des instructions de blocage du programme étant placées aux adresses respectives où conduit le branchement dans le cas où la condition attendue n'est pas respectée. Le choix des adresses de branchement doit être effectué à la création du programme contenu en mémoire non volatile. Les zones contenant les instructions de blocage sont donc dédiées à un test particulier.
  • Le document FR-A-2 790 844 décrit un processus de surveillance du déroulement de l'exécution d'une suite d'instructions, consistant à analyser la séquence des instructions transmises vers un processeur destiné à exécuter le programme surveillé, et à vérifier le résultat de cette analyse par référence à des données enregistrées avec le programme.
  • Résumé de l'invention
  • La présente invention vise à pallier tout ou partie des inconvénients des solutions connues de protection du séquencement d'exécution d'un programme.
  • Un objet vise une solution versatile, utilisable par différents programmes.
  • Un autre objet vise une solution peu coûteuse en espace de mémoire non volatile.
  • Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procédé de contrôle de l'exécution d'au moins un programme dans un circuit électronique, dans lequel :
    • au moins une zone de mémoire volatile du circuit est, préalablement à l'exécution du programme à contrôler, remplie avec des premières instructions conduisant à un traitement d'exception ;
    • le programme contient des instructions de remplacement de tout ou partie des premières instructions par des deuxièmes instructions valides parmi lesquelles une instruction de retour dans le programme; et
    • ladite zone est appelée pour exécution de tout ou partie des instructions qu'elle contient en fin d'exécution du programme d'instructions..
  • Selon un mode de mise en oeuvre, une dernière deuxième instruction de ladite zone est, en cas de déroulement normal du programme, l'instruction de retour dans celui-ci.
  • Selon un mode de mise en oeuvre, le remplacement d'une première instruction par une deuxième est effectué à différents points du programme appelant..
  • Selon un mode de mise en oeuvre, le remplacement des premières instructions par les deuxièmes est effectué juste avant l'appel de ladite zone.
  • Selon un mode de mise en oeuvre, chaque première instruction conduit à un blocage du circuit.
  • Selon un mode de mise en oeuvre, ladite zone de mémoire volatile est réinitialisée avec des premières instructions à chaque nouvelle exécution d'un programme dont on souhaite contrôler l'exécution.
  • Selon un mode de mise en oeuvre, les deuxièmes instructions conduisent à une exécution séquentielle et successive des instructions de ladite zone.
  • Selon un mode de mise en oeuvre, les deuxièmes instructions sont des sauts dans ladite zone jusqu'à l' instruction de retour dans le programme.
  • Il est également prévu un processeur intégré d'exécution d'un programme comportant au moins une mémoire non volatile de stockage d'un programme dont on souhaite contrôler l'exécution et au moins une mémoire volatile, dans lequel une zone de la mémoire volatile et une unité de traitement du processeur sont adaptés pour mettre en oeuvre le procédé ci-dessus.
  • 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 mise en oeuvre et de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles :
    • la figure 1 représente une carte à puce du type auquel s'applique à titre d'exemple la présente invention ;
    • la figure 2 représente de façon très schématique un récepteur de signaux radiodiffusés du type auquel s'applique à titre d'exemple la présente invention ;
    • la figure 3 est un schéma-blocs d'un exemple d'architecture de circuit électronique du type auquel s'applique à titre d'exemple la présente invention ;
    • la figure 4 illustre un mode de mise en oeuvre par des contenus respectifs de mémoire non volatile et volatile ; et
    • la figure 5 est un organigramme simplifié d'un mode de mise en oeuvre.
  • De mêmes éléments ont été désignés par de mêmes références aux différentes figures.
  • Description détaillée
  • Par souci de clarté, seuls les étapes et éléments qui sont utiles à la compréhension de l'invention ont été représentés et seront décrits. En particulier, les fonctions principales des programmes dont l'exécution est protégée n'ont pas été détaillées, l'invention étant compatible avec tout programme usuel.
  • La figure 1 représente, de façon très schématique, une carte à puce 1 du type à laquelle s'applique à titre d'exemple la présente invention. Une telle carte est par exemple constituée d'un support 2 en matière plastique dans ou sur lequel est rapportée une puce 10 de circuit électronique susceptible de communiquer avec l'extérieur au moyen de contacts 3 ou au moyen d'éléments (non représentés) d'émission/réception sans contact. Le circuit 10 de la carte contient une unité de traitement capable d'exécuter des programmes stockés dans des mémoires également contenues dans le circuit 10 ou dans d'autres circuits portés par la carte.
  • La figure 2 représente un autre exemple d'application de la présente invention à des systèmes de télédiffusion à accès contrôlé. Dans cet exemple, une antenne 4 reçoit des signaux provenant d'un satellite (non représenté) qu'elle transmet à un décodeur 5 pour affichage sur un téléviseur 6. Le décodeur 5 comporte une ou plusieurs cartes électroniques 7 pourvues d'un ou plusieurs circuits 10 de traitement des données numériques reçues. Ce traitement consiste en un décodage au moyen d'une ou plusieurs quantités secrètes (clé cryptographique) que possède le décodeur 5. Ces clés sont contenues dans des mémoires associées au circuit électronique 10 ou sur un élément externe, par exemple, une carte à puce introduite dans le décodeur 5. Le décodeur 5 exécute là encore des programmes dont on peut souhaiter vérifier le séquencement.
  • La figure 3 est un schéma-blocs d'un mode de réalisation d'un circuit électronique 10. Ce circuit comporte une unité centrale de traitement 11 (CPU) capable d'exécuter des programmes contenus dans une ou plusieurs mémoires. Dans cet exemple, le circuit 10 comporte une mémoire non volatile non reprogrammable 12 (ROM), une mémoire non volatile reprogrammable 13 (EEPROM) et une mémoire vive 14 (RAM). Un ou plusieurs bus 15 de données, d'adresses et de commandes servent de support de communication entre les différents constituants du circuit 10 et avec une interface 16 (I/O) d'entrée/sortie pour communication avec ou sans contact avec l'extérieur. Le plus souvent, le circuit 10 comporte d'autres fonctions (blocs 17 et 18, FCT) dépendant de l'application. Il s'agit, par exemple, de cellules de calcul cryptographique dédiées pour mettre en oeuvre des algorithmes de chiffrement et de déchiffrement.
  • La figure 4 illustre un exemple de structure d'un programme Pg en mémoire 12 non volatile (par exemple non réinscriptible) ROM, et d'une zone de mémoire volatile 14 selon un mode de mise en oeuvre.
  • La figure 5 est un organigramme simplifié illustrant un mode de mise en oeuvre du procédé de contrôle de l'exécution du programme Pg.
  • Avant l'exécution d'un programme Pg dont l'exécution est surveillée par ce mode de mise en oeuvre, une zone AREA prédéfinie de la mémoire 14 (par exemple, ses dernières lignes) est remplie avec une succession de codes opératoires BOP (Bad OPcode) déclenchant chacun un comportement d'exception, par exemple, un blocage du circuit, un effacement de toutes les mémoires, etc.
  • Le remplissage de la zone AREA par les instructions BOP peut, selon l'application, être effectué à la mise en route du circuit électronique, avant l'exécution d'un programme dont on souhaite contrôler l'exécution, avant l'exécution d'une routine spécifique appelant des fonctions de sécurité, etc.
  • Le programme Pg est, lors de sa conception, prévu avec des instructions WRITE NOP d'écriture d'un code opératoire correct à des adresses A1, A2, etc. de la zone AREA. Ces instructions NOP remplacent donc, si le programme Pg est correctement exécuté, les mauvaises instructions BOP par des instructions correctes (Normal OPcode) ne conduisant pas à un traitement d'exception.
  • Les instructions WRITE NOP n'interfèrent pas avec le déroulement du programme Pg, en ce sens qu'il s'agit d'instructions ne modifiant pas le contenu des variables traitées par ce programme Pg.
  • Selon un exemple, des instructions WRITE NOP (bloc 23, figure 5) sont placées à différents points du programme Pg (par exemple, dans ou à la fin de sections 21 (SECT) considérées comme sensibles ou à passage obligatoire).
  • Selon un autre exemple illustré en pointillés en figure 5, une instruction WRITE NOP est, dans le programme Pg, précédée d'un test (bloc 22, OK ?) sur une phase d'exécution du programme Pg. Le test 22 est, par exemple, un test sur le résultat d'une autre fonction de détection d'une éventuelle perturbation (par exemple, un calcul de signature). En cas de non respect, l'instruction 23 est sautée.
  • Au moins une des instructions WRITE NOP écrit, dans la zone AREA (par exemple, à l'adresse An), une instruction de retour RET dans le programme Pg. L'instruction d'écriture WRITE RET est, par exemple, la dernière instruction de contrôle du programme appelant.
  • Le choix des codes opératoires (NOP) remplaçant les instructions BOP de traitement d'exception est effectué pour que, lors de l'appel du sous-programme de la zone AREA, on parvienne à l'instruction de retour RET si toutes les instructions BOP ont été remplacées.
  • Par exemple, il peut s'agir de sauts d'une adresse à une autre de la zone AREA jusqu'à atteindre l'adresse de l'instruction de retour. Selon un autre exemple, les instructions de la zone AREA sont remplacées successivement au cours du déroulement du programme Pg par des instructions (NEXT) de passage à l'instruction suivante jusqu'à une adresse contenant l'instruction retour RET. Plusieurs lignes du programme Pg peuvent le cas échéant conduire au remplacement d'une même instruction de la zone AREA si l'on considère que le passage par au moins une de ces lignes suffit à valider l'exécution correcte. De façon similaire, le passage par une ligne du programme Pg peut conduire au remplacement de plusieurs instructions de la zone AREA.
  • La complexité du sous-programme de la zone AREA (exécution séquentielle, sauts imbriqués, etc.) dépend de la conception du programme à surveiller. Ce sous-programme peut le cas échéant effectuer d'autres calculs cryptographiques.
  • A la fin du programme ou en fin d'exécution d'une zone sensible, ou lorsque l'on souhaite valider l'exécution du programme, celui-ci contient une instruction JUMP AREA de saut à une adresse de la zone AREA de la mémoire 14 (bloc 24). Ce saut conduit à l'exécution de tout ou partie des codes opératoires de la zone AREA (selon la routine représentée par ces codes lors de leur écriture) jusqu'à une instruction de retour RET dans le programme appelant Pg pour poursuivre son exécution.
  • En cas d'exécution incorrecte du programme principal, au moins l'un des codes opératoires d'exception BOP n'aura pas été remplacé et l'exécution du sous-programme de contrôle conduira donc à un traitement d'exception (FAIL).
  • Un avantage est que la même zone de mémoire vive peut servir aux différents contrôles d'exécution effectués sur différents programmes du circuit. La seule précaution est d'éviter que cette zone ne soit, en fonctionnement normal, écrasée lors de l'exécution de programme entre l'initialisation de la zone avec les codes opératoires d'exception et la fin du programme dont on souhaite contrôler l'exécution.
  • Un autre avantage est que la construction du sous-programme de vérification 24 en fin de programme est dynamique. Elle s'effectue au fur et à mesure de l'exécution du programme. Elle est donc difficilement piratable.
  • Un autre avantage est que la zone de la mémoire vive n'a pas besoin d'une structure prédéfinie. La fonction de contrôle peut donc organiser son chemin comme le souhaite le programmeur dans la zone AREA. Par exemple, différents programmes imbriqués peuvent se partager une même zone AREA pourvu qu'une exécution correcte de chacun conduise au remplacement correct des instructions BOP et à une instruction de retour RET. Selon un autre exemple, différentes parties de la zone AREA (donc différentes zones AREA) sont affectées à différents programmes à contrôler. Là encore, le choix revient au concepteur du programme principal qui choisit les adresses d'écriture des instructions NOP à sa guise.
  • Un autre avantage est que le programme principal ne construit pas d'adresse de saut, ce qui améliore la sécurité.
  • Un autre avantage est que l'utilisation d'une zone AREA en mémoire volatile apporte déjà une première protection de par sa nature. En effet, en cas de réinitialisation du circuit, toutes les instructions NOP sont perdues et, même si elles ne conduisent pas à un traitement d'exception, elles ne permettent pas de revenir dans le programme principal. Le cas échéant, on peut prévoir que l'unité de traitement interprète tout code faisant suite à une réinitialisation (par exemple, 0000) comme un traitement d'exception.
  • Un autre avantage est que, par défaut, toute la zone AREA contient des mauvais codes opératoires, donc un saut dans cette zone (par exemple, suite à un déroutement) avant modification de cette zone conduira forcément à un traitement d'exception.
  • Selon une variante de réalisation, la mise à jour des codes opératoires de la zone AREA n'est pas effectuée au fur et à mesure de l'exécution du programme à contrôler mais de façon groupée avant le saut 24 de contrôle d'exécution. Dans ce cas, des variables de mémoire volatile (registres ou autres zones mémoire) sont utilisées pour stocker les instructions NOP successives avant l'écriture dans la zone AREA de mémoire vive.
  • Des modes de réalisation particuliers ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix des codes opératoires à inclure dans la zone de vérification de la mémoire vive dépend de l'application et, par exemple, du temps d'exécution que l'on souhaite donner à cette fonction de contrôle. De plus, bien que l'invention ait été décrite en relation avec un programme stocké en mémoire non volatile non réinscriptible (ROM), le programme dont on contrôle l'exécution peut également être stocké en mémoire non volatile réinscriptible (EEPROM).

Claims (9)

  1. Procédé de contrôle de l'exécution d'au moins un programme (Pg) dans un circuit électronique (10), caractérisé en ce que :
    au moins une zone (AREA) de mémoire volatile (14) du circuit est, préalablement à l'exécution du programme à contrôler, remplie avec des premières instructions (BOP) conduisant à un traitement d'exception ;
    le programme contient des instructions de remplacement de tout ou partie des premières instructions par des deuxièmes instructions (NOP) valides parmi lesquelles une instruction de retour (RET) dans le programme; et
    ladite zone est appelée (JUMP AREA) pour exécution de tout ou partie des instructions qu'elle contient en fin d'exécution du programme.
  2. Procédé selon la revendication 1, dans lequel une dernière deuxième instruction (NOP) de ladite zone est, en cas de déroulement normal du programme (Pg), l'instruction de retour (RET) dans celui-ci.
  3. Procédé selon la revendication 1 ou 2, dans lequel le remplacement d'une première instruction (BOP) par une deuxième (NOP) est effectué à différents points du programme appelant (Pg).
  4. Procédé selon la revendication 1 ou 2, dans lequel le remplacement des premières instructions (BOP) par les deuxièmes (NOP) est effectué juste avant l'appel de ladite zone (AREA).
  5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel chaque première instruction (BOP) conduit à un blocage du circuit (10).
  6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel ladite zone (AREA) de mémoire volatile est réinitialisée avec des premières instructions (BOP) à chaque nouvelle exécution d'un programme (Pg) dont on souhaite contrôler l'exécution.
  7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel les deuxièmes instructions (NOP) conduisent à une exécution séquentielle et successive des instructions de ladite zone (AREA).
  8. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel les deuxièmes instructions (NOP) sont des sauts dans ladite zone jusqu'à l'instruction (RET) de retour dans le programme (Pg).
  9. Processeur intégré d'exécution d'un programme comportant au moins une mémoire non volatile (12, 13) de stockage d'un programme (Pg) dont on souhaite contrôler l'exécution et au moins une mémoire volatile, dans lequel une zone (AREA) de la mémoire Volatile (14) et une unité centrale de traitement (11) du processeur sont adaptées pour mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 8.
EP08103508A 2007-04-12 2008-04-11 Protection de l'exécution d'un programme Expired - Fee Related EP1980968B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0754405A FR2915007A1 (fr) 2007-04-12 2007-04-12 Protection de l'execution d'un programme

Publications (2)

Publication Number Publication Date
EP1980968A1 EP1980968A1 (fr) 2008-10-15
EP1980968B1 true EP1980968B1 (fr) 2013-03-27

Family

ID=38565999

Family Applications (1)

Application Number Title Priority Date Filing Date
EP08103508A Expired - Fee Related EP1980968B1 (fr) 2007-04-12 2008-04-11 Protection de l'exécution d'un programme

Country Status (3)

Country Link
US (1) US8190909B2 (fr)
EP (1) EP1980968B1 (fr)
FR (1) FR2915007A1 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2977342A1 (fr) * 2011-06-30 2013-01-04 Proton World Int Nv Verification d'integrite d'un programme execute par un circuit electronique
US9589133B2 (en) * 2014-08-08 2017-03-07 International Business Machines Corporation Preventing return-oriented programming exploits
US11783026B2 (en) * 2021-01-05 2023-10-10 Nuvoton Technology Corporation Processor with in-band fault-injection detection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US7287166B1 (en) * 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
AU2001270814A1 (en) * 2000-07-18 2002-01-30 Bitarts Limited Digital data protection arrangement
US7055146B1 (en) * 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
US20030120938A1 (en) * 2001-11-27 2003-06-26 Miki Mullor Method of securing software against reverse engineering
TWI226997B (en) * 2003-07-01 2005-01-21 Benq Corp System and method preventing exceptional execution of central processing unit and the computer readable storage medium
US20050069138A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Application program obfuscation
US8220058B2 (en) * 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7353499B2 (en) * 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7424620B2 (en) * 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7363620B2 (en) * 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7584386B2 (en) * 2004-04-21 2009-09-01 Stmicroelectronics Sa Microprocessor comprising error detection means protected against an attack by error injection
DE602005015157D1 (de) * 2004-05-11 2009-08-13 St Microelectronics Sa Verzweigungsschutz in einem Programm
EP1717704A3 (fr) * 2005-04-20 2011-07-20 St Microelectronics S.A. Protection du déroulement d'un programme exécuté par un circuit intégré
EP1715436A3 (fr) * 2005-04-21 2007-03-28 St Microelectronics S.A. Protection du déroulement d'un programme exécuté par un circuit intégré ou de données contenues dans ce circuit
US7945958B2 (en) * 2005-06-07 2011-05-17 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
FR2888370A1 (fr) * 2005-07-05 2007-01-12 St Microelectronics Sa Protection de l'execution d'un programme
US7346762B2 (en) * 2006-01-06 2008-03-18 Apple Inc. Replacing instruction and corresponding instructions in a queue according to rules when shared data buffer is accessed

Also Published As

Publication number Publication date
US20080256301A1 (en) 2008-10-16
US8190909B2 (en) 2012-05-29
FR2915007A1 (fr) 2008-10-17
EP1980968A1 (fr) 2008-10-15

Similar Documents

Publication Publication Date Title
EP1161725B1 (fr) Procede de surveillance du deroulement d'un programme
US8639946B2 (en) System and method of using a protected non-volatile memory
EP1939753B1 (fr) Protection de zones mémoire
US8867746B2 (en) Method for protecting a control device against manipulation
FR2704341A1 (fr) Dispositif de protection des clés d'une carte à puce.
EP1374018A1 (fr) Systeme et procede de controle d'acces a des donnees protegees stockees dans une memoire
EP1605333B1 (fr) Contrôle de l'exécution d'un programme
EP1724700A1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
EP3324327B1 (fr) Stockage dans une mémoire non volatile
FR2879320A1 (fr) Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises
EP1980968B1 (fr) Protection de l'exécution d'un programme
EP1983436B1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
FR2979443A1 (fr) Microcontroleur securise a base de mode
EP1108249B1 (fr) Procede de securisation du traitement d'une information sensible dans un module de securite monolithique, et module de securite associe
FR2840421A1 (fr) Systemes informatiques tels que des cartes a puce ayant des architectures de memoire capables de proteger une information de securite, et procedes d'utilisation de ceux-ci
FR2923923A1 (fr) Verification de donnees lues en memoire
FR2889005A1 (fr) Integrite materielle permanente des donnees
EP1742407A1 (fr) Protection d'une quantité numérique contenue dans un circuit intégré comportant une interface JTAG
EP1355446A1 (fr) Chiffrement du contenu d'une mémoire externe à un processeur
EP1717704A2 (fr) Protection du déroulement d'un programme exécuté par un circuit intégré
EP1713023B1 (fr) Protection de données contenues dans un circuit intégré
EP1818846B1 (fr) Vérification d'intégrité de programmes ou de séquencement d'une machine d'états
FR2963455A1 (fr) Protection de cles secretes
EP4086801B1 (fr) Procédé d'exécution d'une fonction, sécurisé par désynchronisation temporelle
EP1995682A1 (fr) Personnalisation d'un microprocesseur et procédé de protection de données

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 HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL BA MK RS

17P Request for examination filed

Effective date: 20090323

17Q First examination report despatched

Effective date: 20090421

AKX Designation fees paid

Designated state(s): DE FR GB

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

RIN1 Information on inventor provided before grant (corrected)

Inventor name: TEGLIA, YANNICK

Inventor name: LIARDET, PIERRE-YVAN

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): DE FR GB

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

Free format text: NOT ENGLISH

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602008023184

Country of ref document: DE

Effective date: 20130529

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20130603

Year of fee payment: 6

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

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

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20130627

26N No opposition filed

Effective date: 20140103

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602008023184

Country of ref document: DE

Effective date: 20140103

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20130627

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: DE

Payment date: 20140321

Year of fee payment: 7

REG Reference to a national code

Ref country code: FR

Ref legal event code: ST

Effective date: 20141231

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20140430

REG Reference to a national code

Ref country code: DE

Ref legal event code: R119

Ref document number: 602008023184

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20151103