FR2974648A1 - Protection d'une memoire vive contre des attaques par injection de fautes - Google Patents
Protection d'une memoire vive contre des attaques par injection de fautes Download PDFInfo
- Publication number
- FR2974648A1 FR2974648A1 FR1153675A FR1153675A FR2974648A1 FR 2974648 A1 FR2974648 A1 FR 2974648A1 FR 1153675 A FR1153675 A FR 1153675A FR 1153675 A FR1153675 A FR 1153675A FR 2974648 A1 FR2974648 A1 FR 2974648A1
- Authority
- FR
- France
- Prior art keywords
- ram
- areas
- pattern
- memory
- bit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
L'invention concerne un procédé de protection d'une mémoire vive (13) contre des attaques par injections de fautes, dans lequel des zones vides ou non utilisées de la mémoire sont remplies d'un motif, et l'intégralité de la mémoire est soumise à une surveillance d'une modification éventuelle de l'état d'un bit pour générer un signal en cas de modification.
Description
B10912 - 11-RO-0113 1 PROTECTION D'UNE MÉMOIRE VIVE CONTRE DES ATTAQUES PAR INJECTION DE FAUTES
Domaine de l'invention La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, la protection d'informations contenues dans de tels circuits contre des attaques par injections de fautes dans une mémoire vive qu'ils comportent. Exposé de l'art antérieur Les circuits électroniques sont susceptibles de subir des attaques par injections de fautes visant soit à perturber le fonctionnement du circuit, soit à percer des informations secrètes (algorithme ou clé) en exploitant, par exemple par attaque par canaux cachés (analyse de la consommation du circuit, du rayonnement électromagnétique, etc.), les fautes injectées.
Une façon de procéder est de perturber le fonctionnement d'un programme une fois que celui-ci a été transféré en mémoire vive pour son exécution. Pour qu'une telle attaque soit efficace, le pirate effectue généralement cette attaque en deux temps. Dans une première phase, il balaye la mémoire vive au moyen d'une attaque visant à changer localement l'état d'un ou plusieurs bits. Si cette modification a un effet, B10912 - 11-RO-0113
2 par exemple est détectée par le circuit, il enregistre la position concernée dans la mémoire et poursuit le balayage. Cela permet d'identifier les zones où le circuit est sensible à une injection de faute. Dans une seconde phase, l'attaquant revient sur les zones repérées et effectue des attaques ciblées sur ces zones. Dans la mesure où une attaque ciblée doit souvent être réalisée plusieurs fois sur la même zone pour être efficace, le pirate ne perd ainsi pas de temps à réaliser des attaques coûteuses en ressources (temps et énergie) sur des zones inutiles. Résumé de l'invention Un objet d'un mode de réalisation de la présente invention est de proposer une contre-mesure contre des attaques de type par injection de faute en mémoire vive.
Un autre objet d'un mode de réalisation de la présente invention est de proposer une solution particulièrement adaptée à des attaques commençant par un balayage de la mémoire pour identifier des zones sensibles. Un autre objet d'un mode de réalisation de la présente invention est de proposer une solution aisée à mettre en oeuvre et ne nécessitant, pour une mise en oeuvre logicielle, aucune modification des circuits existants. Pour atteindre tout ou partie de ces objets ainsi que d'autres, on prévoit un procédé de protection d'une mémoire vive contre des attaques par injections de fautes, dans lequel : des zones vides ou non utilisées de la mémoire sont remplies d'un motif ; et l'intégralité de la mémoire est soumise à une surveillance d'une modification éventuelle de l'état d'un bit 30 pour générer un signal en cas de modification. Selon un mode de réalisation de la présente invention, le motif est un motif témoin répété dans toutes les zones vides ou non utilisées de la mémoire vive.
B10912 - 11-RO-0113
3 Selon un mode de réalisation de la présente invention, la surveillance consiste à comparer des mots de la mémoire par rapport au motif témoin. Selon un mode de réalisation de la présente invention, 5 la surveillance est réalisée par des moyens matériels. On prévoit également un circuit électronique. 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 10 de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, sous forme de blocs, un exemple de circuit électronique du type auquel s'applique la présente invention ; 15 la figure 2 est une représentation schématique d'un plan de mémoire vive usuelle ; la figure 3 illustre, de façon très schématique et sous forme de blocs, un exemple de réalisation d'une attaque en deux phases par injections de fautes ; et 20 la figure 4 est une représentation schématique d'un mode de réalisation d'un plan de mémoire vive associé à une fonction de contre-mesure. Description détaillée De mêmes éléments ont été désignés par de mêmes 25 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écrits. En particulier, les données et informations (programmes, données manipulées, etc.) stockées dans la mémoire n'ont pas été détaillées, les 30 modes de réalisation décrits étant compatibles avec toute utilisation usuelle d'une mémoire vive. De plus, la destination du circuit électronique (module de sécurité, module d'identification, circuit de chiffrement, etc.) n'a pas non plus été détaillée, les modes de réalisation décrits étant là encore 35 compatibles avec les destinations usuelles de circuits B10912 - 11-RO-0113
4 électroniques à protéger contre les injections de fautes dans leur mémoire vive. La figure 1 est un schéma bloc d'un mode de réalisation d'un circuit électronique 1 du type auquel s'applique à titre d'exemple la présente invention. Un tel circuit est généralement réalisé sous forme intégrée et comprend une unité de traitement 11 (CPU) associée à une ou plusieurs mémoires non volatiles 12 (NVM) et à au moins une mémoire volatile 13 (RAM). Les différents constituants du circuit sont susceptibles de communiquer entre eux par l'intermédiaire d'un ou plusieurs bus 14 de commandes, d'adresses et de données ainsi qu'avec l'extérieur du circuit par l'intermédiaire d'un circuit d'interface 15 (sans fil et/ou filaire). Généralement, le circuit électronique 1 comporte d'autres éléments, symbolisés par un bloc 16 (FCT), susceptibles de mettre en oeuvre des fonctions particulières (par exemple un cryptoprocesseur, des éléments de mesure, etc.) en fonction de l'application du circuit. La représentation de la figure 1 n'est qu'un exemple très schématique et les modes de réalisation qui vont être décrits s'appliquent à tout circuit électronique susceptible de subir des attaques par injections de fautes dans une mémoire vive qu'il comporte. La figure 2 représente de façon très schématique, un exemple de contenu d'un plan mémoire d'une mémoire vive 13 (RAM). Les données ou programmes (P1, P2 dans l'exemple de la figure 2) sont transférés temporairement dans la mémoire vive lorsqu'ils ont besoin d'être exécutés. Ces informations sont autrement contenues dans l'une des mémoires non volatiles du circuit. Le remplissage d'une mémoire vive 13 s'effectue généralement de façon séquentielle à partir de la première adresse libre. Le reste du plan mémoire est laissé vide (EMPTY) ou n'est pas utilisé. Par définition, une mémoire vive est en effet vidée quand le circuit n'est plus alimenté ou est réinitialisé. Pour simplifier, on fera par la suite référence à une mémoire vide, mais ce qui va être décrit s'applique aussi à B10912 - 11-RO-0113
une zone non utilisée, c'est-à-dire dont les bits ne sont pas pris en compte par les applications en cours de fonctionnement dans le circuit (par exemple un programme terminé). Une attaque du type décrit ci-dessus fonctionne également sur des zones non 5 utilisées car le balayage de cette zone ne se traduit pas par une réaction du circuit, de la même façon que pour une zone vide. La figure 3 illustre, de façon très schématique, un exemple d'attaque par injections de fautes du type auquel 10 s'appliquent les modes de réalisation décrits. Une telle attaque est effectuée avec un ou plusieurs outils informatiques et consiste à injecter des fautes à des endroits précis du circuit pour lesquels le pirate sait qu'ils vont perturber le fonctionnement (par exemple sauter un test 15 d'un programme). Pour localiser les endroits sensibles, le processus d'attaque débute (bloc 21, START) par un balayage (bloc 22, SCANNED BIT FLIP) de la mémoire vive RAM avec une injection de faute relativement simple. L'objectif de ce balayage est de détecter (bloc 23, DETECT ?) si le circuit 20 réagit à l'attaque. Une telle réaction peut être un fonctionnement différent du programme, la fourniture d'une donnée différente, une variation dans la consommation électrique ou le rayonnement électromagnétique, etc. Si le circuit réagit à l'attaque, le mécanisme de piratage repère (bloc 24, STORE POS) 25 la position sensible de la mémoire vive. Le balayage se poursuit (flèche de retour vers le bloc 22), tant que tout le plan mémoire n'a pas été traité. Une fois que le pirate a obtenu une cartographie des zones sensibles de la mémoire, il est en mesure de diriger ces 30 attaques (bloc 25, ATTACK) de façon ciblée et efficace et la mémoire vive est donc particulièrement vulnérable. Les différentes contre-mesures usuelles consistant à surveiller les zones sensibles de la mémoire pour faire agir une contre-mesure (par exemple un blocage du circuit) n'apportent B10912 - 11-RO-0113
6 pas de solution à ce problème. En effet, de telles contre-mesures ne font qu'orienter le pirate vers les zones sensibles. Une autre solution est de protéger la mémoire au niveau physique en utilisant un bouclier physique ("Design Principles for Tamper-Resistant Smartcard Processors" de O. KOmmerling, M.G. Kuhn, WOST'99, Proceedings of the USENIX Workshop on Smartcard Technology USENIX Association Berkeley, ÇA, USA 1999). Une telle protection est particulièrement complexe et coûteuse. Les modes de réalisation décrits s'appliquent de préférence à des mémoires vives dépourvues d'une telle protection physique. La figure 4 est une représentation schématique d'un plan mémoire 13 selon un mode de mise en oeuvre de la contremesure prévue.
Selon ce mode de mise en oeuvre, l'ensemble du plan mémoire 13 est surveillé (bloc 30, MONITOR) de façon logicielle ou matérielle afin de détecter (signal CHANGE) un changement de son contenu. Le résultat de cette détection n'a pas besoin d'être complexe. Ce que l'on souhaite, c'est que le circuit réagisse à un changement d'état du bit concerné. On aurait pu penser se contenter de laisser les zones vides et de surveiller un éventuel changement d'état. Toutefois, une zone vide d'une mémoire vive est particulièrement aisée à détecter (aucun effet de bord tel qu'évoqué précédemment - aucune réaction du circuit - ne sera perceptible par le pirate), ce qui permet à un pirate de diriger son attaque. Le fait d'écrire dans la mémoire des données quelconques évite ce phénomène. De préférence, aucune zone de la mémoire n'est donc laissée vide afin d'éviter qu'un pirate soit en mesure d'analyser rapidement des zones où tous les bits sont dans un même état. De préférence, la zone non utilisée du plan mémoire est remplie par un motif témoin (WM) répétitif. Un tel B10912 - 11-RO-0113
7 remplissage par un motif répétitif simplifie une comparaison par l'outil 30, donc la détection et la réaction. En variante, le motif témoin pourrait être remplacé par un remplissage aléatoire des zones vides ou non utilisées de 5 la mémoire. Le fait de surveiller l'ensemble de la mémoire et de provoquer une réaction quelconque du circuit en cas de modification du contenu de n'importe quel bit de cette mémoire permet d'induire le pirate en erreur. En effet, en effectuant le 10 balayage du plan mémoire, tous les bits qu'il va manipuler vont avoir une action et il détectera cette action. Par conséquent, il devient impossible pour le pirate d'effectuer une cartographie lui permettant de focaliser les régions d'attaque sur des zones sensibles. Le pirate doit effectuer son attaque 15 coûteuse (bloc 25) sur tout le plan mémoire, ce qui lui prend du temps et rend son attaque inefficace car trop longue. En effet, une contre-mesure est efficace même si elle ne met pas un pirate dans l'impossibilité théorique d'obtenir une information, pourvu qu'elle lui complique suffisamment la 20 tâche pour que les efforts à faire rendent l'attaque inintéressante. Un avantage qu'il y a à effectuer cette contre-mesure sur une mémoire vive est que ce type de mémoire n'est pas sensible à une diminution de durée de vie par les cycles 25 d'écriture comme ce serait le cas avec une mémoire non volatile. On notera que l'efficacité de la contre-mesure est d'autant plus importante que l'intégralité du plan mémoire (toute la mémoire vive logique même si celle-ci est constituée de plusieurs zones physiques) est soumise au procédé de 30 protection. La mise en oeuvre de la contremesure décrite est particulièrement simple. Il suffit de prévoir un mécanisme (par exemple logiciel) d'écriture de tout le plan mémoire suite à une mise sous tension ou à une réinitialisation. Le cas échéant, B10912 - 11-RO-0113
8 cette écriture du motif témoin est effectuée en tâche d'arrière-plan non prioritaire. Le mécanisme de vérification est également simple. Dans une mise en oeuvre logicielle, il suffit de lire périodiquement tout le plan mémoire avec un code de comparaison de mot ou de groupe de mots pour fournir une réaction. Dans une mise en oeuvre matérielle, on prévoit par exemple un circuit dédié comparant un mot ou un groupe de plusieurs mots (selon la taille du motif) au motif témoin. Chaque groupe est associé à un indicateur du fait qu'il contient le motif témoin. Ainsi, le circuit ne se préoccupe pas des zones en cours d'utilisation par un programme. Dans une réalisation matérielle, la vérification peut être effectuée en parallèle (simultanément) à l'utilisation de 15 la mémoire. Divers modes de réalisation ont été décrits, diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la réalisation pratique du circuit de surveillance pour détecter une modification d'un bit dans la mémoire vive est 20 à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus et des outils usuels, que ce soit pour une mise en oeuvre logicielle ou une mise en oeuvre matérielle. Dans le cas d'une mise en oeuvre logicielle, les modes de réalisation sont applicables même sur des circuits 25 existants, pourvu que les mémoires à vérifier soient accessibles par le processeur effectuant la vérification.
Claims (5)
- REVENDICATIONS1. Procédé de protection d'une mémoire vive (13) contre des attaques par injections de fautes, dans lequel : des zones vides ou non utilisées de la mémoire sont remplies d'un motif ; et l'intégralité de la mémoire est soumise à une surveillance d'une modification éventuelle de l'état d'un bit pour générer un signal en cas de modification.
- 2. Procédé selon la revendication 1, dans lequel le motif est un motif témoin répété dans toutes les zones vides ou 10 non utilisées de la mémoire vive.
- 3. Procédé selon la revendication 1 ou 2, dans lequel la surveillance consiste à comparer des mots de la mémoire par rapport au motif témoin.
- 4. Procédé selon l'une quelconque des revendications 1 15 à 3, dans lequel la surveillance est réalisée par des moyens matériels.
- 5. Circuit électronique adapté à la mise en oeuvre du procédé conforme à l'une quelconque des revendications 1 à 4.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1153675A FR2974648A1 (fr) | 2011-04-29 | 2011-04-29 | Protection d'une memoire vive contre des attaques par injection de fautes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1153675A FR2974648A1 (fr) | 2011-04-29 | 2011-04-29 | Protection d'une memoire vive contre des attaques par injection de fautes |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2974648A1 true FR2974648A1 (fr) | 2012-11-02 |
Family
ID=44992983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1153675A Pending FR2974648A1 (fr) | 2011-04-29 | 2011-04-29 | Protection d'une memoire vive contre des attaques par injection de fautes |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2974648A1 (fr) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3022057A1 (fr) * | 2014-06-10 | 2015-12-11 | St Microelectronics Rousset | Protection de donnees stockees dans une memoire volatile |
US9710650B2 (en) | 2014-06-10 | 2017-07-18 | Stmicroelectronics (Rousset) Sas | Protection of data stored in a volatile memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7380245B1 (en) * | 1998-11-23 | 2008-05-27 | Samsung Electronics Co., Ltd. | Technique for detecting corruption associated with a stack in a storage device |
US20080148065A1 (en) * | 2006-12-18 | 2008-06-19 | Westerinen William J | Direct Memory Access for Compliance Checking |
-
2011
- 2011-04-29 FR FR1153675A patent/FR2974648A1/fr active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7380245B1 (en) * | 1998-11-23 | 2008-05-27 | Samsung Electronics Co., Ltd. | Technique for detecting corruption associated with a stack in a storage device |
US20080148065A1 (en) * | 2006-12-18 | 2008-06-19 | Westerinen William J | Direct Memory Access for Compliance Checking |
Non-Patent Citations (1)
Title |
---|
"ECC Overview for the PowerPC 440GP/GX", INTERNET CITATION, 7 September 2004 (2004-09-07), XP002385382, Retrieved from the Internet <URL:https://www.amcc.com/MyAMCC/retrieveDocument/PowerPC/440GX/PPC440GX_A N2009_ECC_OvrVw_v1_01.pdf> [retrieved on 20060614] * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3022057A1 (fr) * | 2014-06-10 | 2015-12-11 | St Microelectronics Rousset | Protection de donnees stockees dans une memoire volatile |
EP2955661A1 (fr) | 2014-06-10 | 2015-12-16 | Stmicroelectronics (Rousset) Sas | Protection de données stockées dans une mémoire volatile |
US9710650B2 (en) | 2014-06-10 | 2017-07-18 | Stmicroelectronics (Rousset) Sas | Protection of data stored in a volatile memory |
US10223532B2 (en) | 2014-06-10 | 2019-03-05 | Stmicroelectronics (Rousset) Sas | Protection of data stored in a volatile memory |
US11200322B2 (en) | 2014-06-10 | 2021-12-14 | Stmicroelectronics (Rousset) Sas | Protection of data stored in an integrated circuit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1161725B1 (fr) | Procede de surveillance du deroulement d'un programme | |
EP1712976B1 (fr) | Protection de données d'une mémoire associée à un microprocesseur | |
EP1772805A2 (fr) | Coprocesseur sécurisé comprenant un circuit de détection d' un évènement | |
FR2952735A1 (fr) | Procede et dispositif de detection d'attaques par injection de fautes | |
EP1983436B1 (fr) | Contrôle d'intégrité d'une mémoire externe à un processeur | |
FR2879320A1 (fr) | Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises | |
FR2974648A1 (fr) | Protection d'une memoire vive contre des attaques par injection de fautes | |
FR2889005A1 (fr) | Integrite materielle permanente des donnees | |
EP3637266B1 (fr) | Procédé d'accès à une mémoire | |
EP2336931B1 (fr) | Procédé de vérification de signature | |
EP1633074A1 (fr) | Circuit intégré à signal de sécurisation codé, procédé de sécurisation, dispositif et signal de sécurisation codé au moyen d'une clé dynamique correspondants. | |
EP1710700A2 (fr) | Coprocesseur sécurisé comprenant des moyens pour empêcher l'accès à un organe du coprocesseur | |
EP1717704A2 (fr) | Protection du déroulement d'un programme exécuté par un circuit intégré | |
EP1715436A2 (fr) | Protection du déroulement d'un programme exécuté par un circuit intégré ou de données contenues dans ce circuit | |
WO2019025516A1 (fr) | Dispositif de détection d'attaque lce et de contre-mesure | |
EP1980968B1 (fr) | Protection de l'exécution d'un programme | |
FR2808360A1 (fr) | Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit | |
EP2860668B1 (fr) | Procédé et dispositif de réalisation de fonction par un microcircuit | |
EP1818846B1 (fr) | Vérification d'intégrité de programmes ou de séquencement d'une machine d'états | |
WO2008096076A2 (fr) | Systemes electroniques securises, procedes de securisation et utilisations de tels systemes | |
FR3137988A1 (fr) | Procédé et circuit pour la vérification de l’intégrité d’un logiciel | |
EP3327985A1 (fr) | Brouillage du fonctionnement d'un circuit intégré | |
EP2955661B1 (fr) | Protection de données stockées dans une mémoire volatile | |
FR3068152B1 (fr) | Procede de protection d'un dispositif electronique executant un programme contre des attaques par injection de faute | |
CA2998780A1 (fr) | Gestion d'un affichage d'une vue d'une application sur un ecran d'un dispositif electronique de saisie de donnees, procede, dispositif et produit programme d'ordinateur correspondants |