FR3118219A1 - Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant - Google Patents
Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant Download PDFInfo
- Publication number
- FR3118219A1 FR3118219A1 FR2013505A FR2013505A FR3118219A1 FR 3118219 A1 FR3118219 A1 FR 3118219A1 FR 2013505 A FR2013505 A FR 2013505A FR 2013505 A FR2013505 A FR 2013505A FR 3118219 A1 FR3118219 A1 FR 3118219A1
- Authority
- FR
- France
- Prior art keywords
- instructions
- group
- instruction
- address
- processing unit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 24
- 230000015654 memory Effects 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims abstract description 78
- 230000007246 mechanism Effects 0.000 claims abstract description 44
- 239000013256 coordination polymer Substances 0.000 claims abstract description 18
- 239000000284 extract Substances 0.000 claims abstract description 5
- 230000009471 action Effects 0.000 claims description 29
- 238000000605 extraction Methods 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims 2
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 101100272964 Arabidopsis thaliana CYP71B15 gene Proteins 0.000 description 2
- 101100123053 Arabidopsis thaliana GSH1 gene Proteins 0.000 description 2
- 101100298888 Arabidopsis thaliana PAD2 gene Proteins 0.000 description 2
- 101150030164 PADI3 gene Proteins 0.000 description 2
- 101150092599 Padi2 gene Proteins 0.000 description 2
- 102100035735 Protein-arginine deiminase type-2 Human genes 0.000 description 2
- 102100035734 Protein-arginine deiminase type-3 Human genes 0.000 description 2
- 102100029860 Suppressor of tumorigenicity 20 protein Human genes 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1433—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; 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/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
Système, comprenant une unité de traitement (UT), des moyens de mémoire (MM1, MM2) destinés à stocker au moins un premier groupe d’instructions et un deuxième groupe d’instructions exécutables par l’unité de traitement, l’unité de traitement étant configurée pour extraire séquentiellement des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe en vue de leur exécution. Le système comprend aussi des moyens de contrôle (SBI) comportant des premiers moyens de mémoire auxiliaires (MMX1) destinés à stocker un critère de protection (CP), des moyens de comparaison (CMP) configurés pour comparer l’adresse de stockage de chaque instruction extraite avec le critère de protection, et un circuit de contrôle (CTRL) configuré pour, si cette adresse de stockage satisfait le critère de protection, déclencher un mécanisme de protection comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Figure pour l’abrégé : Fig 1
Description
Des modes de mise en œuvre et de réalisation concernent les systèmes électroniques, notamment ceux comportant des moyens de mémoire, par exemple des microcontrôleurs, et plus particulièrement, la protection de ces systèmes, en particulier la protection des instructions de démarrage (« boot »), ou d’initialisation, du système.
La sécurité des systèmes électroniques est d’autant plus importante que les domaines des objets connectés, par exemple la domotique, se développent. En particulier, il est important de pouvoir s’assurer que les instructions de démarrage contenues dans une mémoire et exécutées lors de l’initialisation du système correspondent bien aux instructions voulues et non pas à des instructions modifiées par des tiers mal intentionnés.
En effet, des instructions de démarrage sécurisées permettent de garantir une chaîne de confiance établie et maintenue tout au long de l’exécution des instructions logicielles sur le produit.
Et, des instructions de démarrage sécurisées sont utilisées comme racine de confiance en utilisant des fonctions cryptographiques pour confirmer l’authenticité et l’intégrité du programme applicatif de l’utilisateur avant de permettre l’exécution de ce programme applicatif. Il existe par conséquent un besoin d’améliorer la protection des systèmes électroniques tels que des microcontrôleurs, et en particulier la sécurité des instructions de démarrage, notamment mais non exclusivement lorsqu’ils sont incorporés au sein d’objets connectés.
Selon un mode de mise en œuvre et de réalisation, il est proposé de rendre indisponibles les instructions de démarrage du microcontrôleur, ou du moins une partie de ces instructions correspondant aux services les plus critiques, dès que le programme applicatif est démarré de façon à empêcher autant que possible un logiciel malveillant de réutiliser les services codés dans les instructions de démarrage de manière non autorisée dans le but de mettre en péril la sécurité globale du produit, par exemple un objet connecté, incorporant un tel microcontrôleur.
Selon un aspect, il est proposé un procédé de protection d’un système, par exemple un microcontrôleur.
Ce système comprend une unité de traitement, par exemple un cœur de processeur, et des moyens de mémoire stockant au moins un premier groupe d’instructions, par exemple des instructions de démarrage, et un deuxième groupe d’instructions, par exemple un programme applicatif, exécutables par l’unité de traitement.
Le procédé comprend une extraction séquentielle des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe par l’unité de traitement en vue de leur exécution.
Et le procédé comprend une comparaison de l’adresse de stockage de chaque instruction extraite avec un critère de protection.
Et, si cette adresse de stockage satisfait le critère de protection, le procédé prévoit un déclenchement d’un mécanisme de protection comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Le système peut comprendre un bus de communication et au moins un équipement maitre, tel qu’un circuit d’accès direct en mémoire (DMA : « Direct Access Memory ») connecté sur le bus, et le mécanisme de protection comporte alors également avantageusement une interdiction pour ledit au moins un équipement maître d’accéder à au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Ainsi, le critère de protection est avantageusement un critère visant à protéger au moins une partie du premier groupe d’instructions.
Tant que ce critère de protection n’est pas satisfait, les instructions du premier groupe, c’est-à-dire par exemple les instructions de démarrage, peuvent s’exécuter de façon normale. Mais, dès qu’une instruction extraite des moyens de mémoire satisfait le critère de protection, alors on verrouille, pour le programme applicatif ou toute autre séquence initiée par un équipement maître sur le bus, et lors de son exécution, l’accès à au moins une partie des instructions de démarrage, éventuellement à l’ensemble des instructions de démarrage et éventuellement aussi à certaines données sensibles stockées en mémoire.
Et, la comparaison entre l’adresse d’une instruction extraite avec le critère de protection est avantageusement effectuée automatiquement. De même ce déclenchement du mécanisme de protection se fait avantageusement automatiquement dès que le critère de protection est satisfait en mettant en œuvre par exemple un circuit matériel, comportant par exemple une logique câblée, sans qu’il soit nécessaire d’utiliser des instructions logicielles spécifiques.
Plusieurs solutions sont possibles pour définir le critère de protection qui, lorsqu’il sera satisfait, va permettre le déclenchement du mécanisme de protection.
Ainsi, le critère de protection peut être l’adresse de la première instruction du deuxième groupe d’instructions ou bien l’adresse de la dernière instruction du premier groupe d’instructions. Dans ce cas, une instruction extraite des moyens de mémoire satisfait le critère de protection si son adresse est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions.
En variante, le critère de protection peut comprendre une première plage d’adresses et, dans ce cas, une instruction satisfait le critère de protection si son adresse se situe en dehors de cette première plage d’adresses.
Cette première plage d’adresses est par exemple la plage d’adresses des instructions du premier groupe d’instructions.
Selon un mode de mise en œuvre, le mécanisme de protection peut comporter au moins une interdiction pour l’unité de traitement d’exécuter à nouveau, non pas une partie mais toutes les instructions dudit premier groupe et/ou une interdiction pour ledit au moins un équipement maître d’accéder non pas à une partie mais à toutes les instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
En d’autres termes, dans ce mode de mise en œuvre, on verrouille l’accès à la totalité des instructions de démarrage c’est-à-dire à la totalité des services contenus dans ces instructions de démarrage.
Comme indiqué précédemment, le mécanisme de protection comporte au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions du premier groupe d’instructions et/ou une interdiction pour ledit au moins un équipement maître d’accéder à au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Et, selon un mode de mise en œuvre, cette interdiction de la nouvelle exécution par l’unité de traitement d’une instruction de ladite partie ou de l’accès par ledit au moins un équipement maître à une instruction de ladite partie comprend une détection d’une nouvelle requête d’extraction de cette instruction des moyens de mémoire émise par l’unité de traitement ou par ledit au moins un équipement maître et la réalisation d’une action empêchant de servir la nouvelle requête d’extraction de cette instruction.
En d’autres termes, alors que pour déterminer si le critère de protection est ou non satisfait, on observe l’adresse d’une instruction extraite des moyens de mémoire, on observe cette fois-ci, pour interdire la nouvelle exécution d’une instruction par l’unité de traitement ou pour interdire à un accès à une instruction par un équipement maître, la requête d’extraction de cette instruction (c’est-à-dire avant que cette instruction ne soit extraite des moyens de mémoire), et on va alors réaliser une action empêchant de servir cette nouvelle requête d’extraction c’est-à-dire une action visant à ne pas extraire de la mémoire cette instruction nouvellement requise.
Ceci contribue à améliorer la sécurité des instructions du premier groupe, c’est-à-dire des instructions de démarrage par exemple.
A titre d’exemple, la réalisation de cette action peut comprendre une réinitialisation du système.
En variante, la réalisation de cette action peut comprendre la délivrance à l’unité de traitement ou audit au moins un équipement maître d’une instruction de référence à la place de l’instruction requise.
Cette instruction de référence peut être par exemple mais non limitativement, une instruction de non opération connue par l’homme du métier sous la dénomination d’« instruction NOP » (No Operation).
Selon un mode de mise en œuvre, ladite au moins une partie des instructions du premier groupe concernée par le mécanisme de protection peut être stockée à des adresses de stockage appartenant à au moins une deuxième plage d’adresses. Dans ce cas, la détection de la nouvelle requête d’extraction d’une instruction comprend une comparaison entre l’adresse de cette instruction requise et ladite au moins une deuxième plage d’adresses.
Cette deuxième plage d’adresses peut être la plage d’adresses de l’ensemble des instructions du premier groupe si l’on souhaite interdire un accès à toutes les instructions du premier groupe ou bien une plage d’adresses plus restreinte que la plage d’adresses des instructions du premier groupe si l’on veut interdire seulement certains services codés dans les instructions de démarrage et autoriser l’accès à d’autres services par le programme applicatif contenu dans les instructions de démarrage, comme par exemple l’accès au numéro de version de ce programme de démarrage.
Comme on l’a indiqué précédemment, il est également possible, selon un mode de mise en œuvre, que le mécanisme de protection comporte également une interdiction pour l’unité de traitement et/ou pour ladite au moins un équipement maître d’accéder, lors de l’exécution du deuxième groupe d’instructions, à au moins une donnée stockée dans les moyens de mémoire, et généralement à plusieurs données stockées dans les moyens de mémoire.
Cette donnée ou ces données que l’on souhaite protéger peuvent être stockées dans la même mémoire que celle stockant les instructions du premier groupe ou bien dans une mémoire différente, par exemple une mémoire vive statique (mémoire SRAM).
Ces données peuvent être des données manipulées par les instructions de démarrage. En général, ces données sont effacées par les instructions de démarrage lorsqu’elles sont stockées dans une mémoire vive, mais dans le cas où cela ne serait pas le cas, le mécanisme de protection permet d’assurer un non-accès à ces données qui peuvent être sensibles.
Dans ce cas, selon un mode de mise en œuvre, ladite interdiction d’accès à cette ou ces données comprend une détection d’une requête d’extraction de cette donnée des moyens de mémoire émise par l’unité de traitement ou par ledit au moins un équipement maître et la réalisation d’une action empêchant de servir cette nouvelle requête d’extraction de cette donnée.
Là encore, la réalisation de cette action peut comprendre une réalisation du système ou alors la délivrance à l’unité de traitement ou audit au moins un équipement maître d’une donnée de référence, par exemple une donnée nulle, à la place de la donnée requise.
Selon un mode de mise en œuvre, ladite au moins une donnée concernée par le mécanisme de protection est stockée à une adresse de stockage appartenant à au moins une troisième plage d’adresses et dans ce cas, ladite détection de la requête d’extraction d’une donnée comprend une comparaison entre l’adresse de cette donnée requise et ladite au moins une troisième plage d’adresses.
Selon un autre aspect il est proposé un système, comprenant
-une unité de traitement,
-des moyens de mémoire destinés à stocker au moins un premier groupe d’instructions et un deuxième groupe d’instructions exécutables par l’unité de traitement, l’unité de traitement étant configurée pour extraire séquentiellement des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe en vue de leur exécution, et
-des moyens de contrôle comportant des premiers moyens de mémoire auxiliaires destinés à stocker un critère de protection, des moyens de comparaison configurés pour comparer, avantageusement automatiquement, l’adresse de stockage de chaque instruction extraite avec le critère de protection, et un circuit de contrôle configuré pour, si cette adresse de stockage satisfait le critère de protection, déclencher, avantageusement automatiquement, un mécanisme de protection comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
-une unité de traitement,
-des moyens de mémoire destinés à stocker au moins un premier groupe d’instructions et un deuxième groupe d’instructions exécutables par l’unité de traitement, l’unité de traitement étant configurée pour extraire séquentiellement des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe en vue de leur exécution, et
-des moyens de contrôle comportant des premiers moyens de mémoire auxiliaires destinés à stocker un critère de protection, des moyens de comparaison configurés pour comparer, avantageusement automatiquement, l’adresse de stockage de chaque instruction extraite avec le critère de protection, et un circuit de contrôle configuré pour, si cette adresse de stockage satisfait le critère de protection, déclencher, avantageusement automatiquement, un mécanisme de protection comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Selon un mode de réalisation, le système comprend un bus de communication et également au moins un équipement maitre connecté sur le bus, et le mécanisme de protection comporte également une interdiction pour ledit au moins un équipement maître d’accéder à au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
Selon un mode de réalisation, le critère de protection est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions, et une instruction satisfait le critère de protection si son adresse est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions.
Selon un mode de réalisation, le critère de protection comprend une première plage d’adresses et une instruction satisfait le critère de protection si son adresse est en dehors de ladite première plage d’adresse.
Selon un mode de réalisation, la première plage d’adresses est la plage d’adresses des instructions du premier groupe.
Selon un mode de réalisation, le circuit de contrôle est configuré pour au moins interdire à l’unité de traitement d’exécuter à nouveau toutes les instructions dudit premier groupe et/ou pour au moins interdire audit au moins un équipement maître d’accéder à toutes les instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe, lors de l’exécution des instructions du deuxième groupe.
Selon un mode de réalisation, afin d’interdire la nouvelle exécution par l’unité de traitement d’une instruction de ladite partie ou l’accès par ledit au moins un équipement maître à une instruction de ladite partie d’une instruction de ladite partie, le circuit de contrôle est configuré pour détecter une nouvelle requête d’extraction de cette instruction des moyens de mémoire émise par l’unité de traitement ou par ledit au moins un équipement maître et pour réaliser une action empêchant de servir ladite nouvelle requête d’extraction de cette instruction.
Selon un mode de réalisation, le circuit de contrôle est configuré pour effectuer la réalisation de ladite action en réinitialisant le système.
Selon un mode de réalisation, le circuit de contrôle est configuré pour effectuer la réalisation de ladite action en délivrant à l’unité de traitement ou audit au moins un équipement maître, une instruction de référence à la place de l’instruction requise.
Selon un mode de réalisation, ladite au moins une partie des instructions du premier groupe concernée par le mécanisme de protection sont stockées à des adresses de stockage appartenant à au moins une deuxième plage d’adresses, le circuit de contrôle comprend des deuxièmes moyens de mémoire auxiliaires destinés à stocker ladite au moins une deuxième plage d’adresses et le circuit de contrôle est configuré pour effectuer ladite détection de la nouvelle requête d’extraction d’une instruction en comparant l’adresse de cette instruction requise avec ladite au moins une deuxième plage d’adresses.
Selon un mode de réalisation, le mécanisme de protection comporte également une interdiction pour l’unité de traitement et/ou ledit au moins un équipement maître, d’accéder, lors de l’exécution du deuxième groupe d’instructions, à au moins une donnée stockée dans les moyens de mémoire.
Selon un mode de réalisation, afin de mettre en œuvre ladite interdiction d’accès, le circuit de contrôle est configuré pour détecter une requête d’extraction de cette donnée des moyens de mémoire émise par l’unité de traitement ou ledit au moins un équipement maître et pour réaliser une action empêchant de servir ladite nouvelle requête d’extraction de cette donnée.
Selon un mode de réalisation, le circuit de contrôle est configuré pour effectuer la réalisation de ladite action en réinitialisant le système.
Selon un mode de réalisation, le circuit de contrôle est configuré pour effectuer la réalisation de ladite action en délivrant à l’unité de traitement ou audit au moins un équipement maître, une donnée de référence à la place de la donnée requise.
Selon un mode de réalisation, ladite au moins une donnée concernée par le mécanisme de protection est stockée à une adresse de stockage appartenant à au moins une troisième plage d’adresses, le circuit de contrôle comprend des troisièmes moyens de mémoire auxiliaires destinés à stocker ladite au moins une troisième plage d’adresses et le circuit de contrôle est configuré pour détecter la requête d’extraction d’une donnée en comparant l’adresse de cette donnée requise avec ladite au moins une troisième plage d’adresses.
Selon un mode de réalisation, le critère de protection et les deuxième et troisième plages d’adresses sont stockées de façon protégée.
Selon un mode de réalisation, le système est un microcontrôleur, le premier groupe d’instructions comprend des instructions de démarrage et le deuxième groupe d’instructions comprend des instructions d’un programme applicatif.
Selon un autre aspect il est proposé un objet connecté incorporant un système tel que défini ci-avant.
D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de mise en œuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels :
Sur la , la référence MCU désigne un système, par exemple un microcontrôleur, incorporé ici au sein d’un appareil APP, par exemple un objet connecté.
Le microcontrôleur MCU est un microcontrôleur dont on cherche à protéger des instructions, par exemple les instructions de démarrage en particulier contre des modifications ou des accès illicites c’est-à-dire effectués en dehors du contexte d’exécution du programme de démarrage.
Le microcontrôleur MCU comporte une unité de traitement UT, par exemple un cœur de processeur, et des moyens de mémoire comportant dans cet exemple une première mémoire MM1 et une deuxième mémoire MM2.
La première mémoire MM1 peut être une mémoire non volatile réinscriptible, par exemple une mémoire FLASH. La deuxième mémoire MM2 peut être une mémoire volatile par exemple une mémoire vive statique (mémoire SRAM).
Le microcontrôleur MCU comporte également d’autres éléments, par exemple un circuit d’accès direct en mémoire DMA et des périphériques non représentés ici à des fins de simplification de la figure. Certains de ces éléments peuvent être des éléments maîtres et d’autres des ressources esclaves.
Les différents éléments du microcontrôleur sont connectés les uns aux autres en particulier par un bus de communication BS qui comporte généralement un bus d’instructions, un bus de données et un bus système. Ces bus sont par exemple du type AMBA (Advanced Microcontroler Bus Architecture).
Le bus d’instructions et le bus de données comprennent chacun notamment un fil d’adresses pour la transmission des adresses et un fil de données pour la transmission des instructions (s’il s’agit du bus d’instructions) ou des données (s’il s’agit du bus de données).
L’unité de traitement UT peut donc extraire des instructions en vue de leur exécution ou des données situées dans les mémoires MM1 et/ou MM2.
Dans cet exemple, la mémoire MM1 stocke en particulier un premier groupe GR1 d’instructions, typiquement des instructions de démarrage (« boot »), ou d’initialisation, du système et un deuxième groupe GR2 d’instructions, typiquement des instructions d’un programme applicatif.
Dans cet exemple, on suppose que la mémoire MM2 stocke également des données D qui comme on le verra ci-après sont des données à protéger.
Bien entendu certaines au moins des données à protéger pourraient aussi être stockées dans la mémoire MM1.
Par instructions de démarrage on entend les instructions elles-mêmes et éventuellement des données nécessaires à l’exécution des instructions. Les instructions de démarrage sont exécutées par l’unité de traitement UT. Les instructions de démarrage sont de préférence parmi les premières instructions exécutées lors de la mise en fonctionnement du système.
Les instructions de démarrage comportent par exemple les paramètres d’initialisation d’un ou de plusieurs éléments du microcontrôleur comme par exemple une unité de protection de la mémoire qui autorise ou non l’accès des différentes parties de mémoire aux différents périphériques et aux différents programmes, un circuit de type « chien de garde » (« watch dog ») et des circuits de protection de mémoire non volatile.
Les instructions de démarrage sont écrites dans la mémoire MM1 lors de la programmation initiale du système. Les instructions de démarrage ne sont pas censées être modifiées en dehors d’une reprogrammation totale du système qui impliquerait l’effacement total de la mémoire MM1.
Cette reprogrammation sera alors considérée comme la nouvelle programmation initiale du système. Ainsi, des modifications des instructions de démarrage impliquent une tentative de piratage cherchant par exemple à contourner les sécurités du microcontrôleur MCU et/ou à avoir accès à des services non autorisés.
Les instructions du deuxième groupe GR2, typiquement les instructions du programme applicatif, sont exécutées après l’exécution du premier groupe d’instructions, notamment si le programme de démarrage a vérifié l’authenticité et l’intégrité de ce deuxième groupe d’instructions.
Le microcontrôleur MCU comporte également des moyens de contrôle SBI configurés, comme on va le voir plus en détails ci-après, pour assurer une protection d’au moins une partie des instructions du premier groupe GR1, éventuellement de la totalité de ces instructions, et éventuellement des données D, lors de l’exécution du programme applicatif.
Comme on va le voir plus en détails ci-après, ce mécanisme de protection comporte dans cet exemple, une interdiction pour l’unité de traitement UT d’exécuter à nouveau au moins une partie ou la totalité des instructions du premier groupe GR1 lors de l’exécution des instructions du deuxième groupe GR2 et d’accéder aux données sensibles D contenues dans la mémoire MM2 lors de l’exécution des instructions du deuxième groupe.
Cela étant le mécanisme de protection comporte aussi avantageusement une interdiction pour chaque équipement maître, en particulier le circuit DMA, d’accéder à au moins une partie ou à la totalité des instructions du premier groupe GR1(par exemple non pas pour exécuter une instruction mais pour la copier) lors de l’exécution des instructions du deuxième groupe GR2 et d’accéder aux données sensibles D contenues dans la mémoire MM2 et/ou dans la mémoire MM1, lors de l’exécution des instructions du deuxième groupe.
Dans un souci de simplification, on ne détaillera ci-après que le mécanisme de protection applicable à l’unité de traitement, sachant qu’il s’applique d’une façon identique à chaque équipement maître.
Lorsque l’unité de traitement UT souhaite extraire une instruction de la mémoire MM1, elle transmet l’adresse @ de cette instruction sur le fil d’instructions du bus d’instructions et reçoit l’instruction correspondante INS sur le fil de données du bus d’instructions.
De même, lorsque l’unité de traitement souhaite accéder à une donnée contenue dans la mémoire MM2, elle émet une requête d’accès (ou d’extraction) en transmettant l’adresse de cette donnée sur le fil d’adresses du bus de de données et reçoit la donnée sur le fil de données du bus de données.
Les moyens de contrôle SBI comportent un comparateur CMP configuré pour comparer l’adresse @ d’une instruction INS extraite de la mémoire MM1 avec un critère de protection CP contenu dans des premiers moyens de mémoire auxiliaires MMX1, par exemple un ou plusieurs registres.
On reviendra plus en détails ci-après sur le contenu de ce critère de protection CP.
Si l’adresse @ de l’instruction extraite INS satisfait le critère de protection CP, alors le comparateur CMP est configuré pour délivrer un signal de déclenchement SDL à un circuit de contrôle CTRL qui va mettre en œuvre le mécanisme de protection qui va être détaillé plus en détails ci-après.
Mais on peut d’ores et déjà indiquer que ce mécanisme de protection mis en œuvre par le circuit de contrôle CTRL prévoit la comparaison de l’adresse @1 contenue dans une requête d’extraction d’une instruction ou dans une requête d’accès d’une donnée avec le contenu de deuxièmes moyens de mémoire auxiliaires MMX2 ou de troisièmes moyens de mémoire auxiliaires MMX3 dont on reviendra plus en détails ci-après sur les contenus.
Et, en cas de tentative d’accès interdit soit à une instruction soit à une donnée, le circuit de contrôle CTRL est configuré pour réaliser une action interdisant à l’unité de traitement soit d’exécuter à nouveau l’instruction requise soit d’accéder à la donnée demandée.
A cet égard, comme on le verra plus en détail ci-après, cette action peut consister à réinitialiser le microcontrôleur MCU en délivrant le signal de réinitialisation RST sur la broche de réinitialisation du microcontrôleur soit de délivrer une instruction de référence, par exemple une instruction du type « No Opération », contenue dans un registre RG1 à la place de l’instruction requise, soit de délivrer une donnée de référence, par exemple une donnée nulle, contenue dans le deuxième registre RG2 à la place de la donnée requise.
Il convient également de noter que les moyens de contrôle SBI sont des moyens uniquement matériels . En particulier le circuit de contrôle CTRL comprend une logique câblée.
En conséquence de cet aspect matériel des moyens de contrôle SBI, ces moyens de contrôle SBI vérifient automatiquement la satisfaction ou non du critère de protection, déclenchent automatiquement le cas échéant le mécanisme de protection et l’exécutent automatiquement.
On se réfère maintenant aux figures 2 et suivantes pour décrire des modes de mise en œuvre du procédé de protection selon l’invention.
Dans cet exemple, comme illustré sur la , on suppose que les instructions INSi du premier groupe GR1, c’est-à-dire les instructions de démarrage, sont stockées à la plage d’adresses @0…@N tandis que les instructions INSi du deuxième groupe GR2 d’instructions, c’est-à-dire les instructions du programme applicatif, sont stockées à la plage d’adresses @P…@R.
P pourrait être égal à N+1 mais pas nécessairement.
L’unité de traitement UT va alors commencer à extraire séquentiellement de la mémoire MM1 les instructions INSidu premier groupe d’instructions GR1.
Ainsi, comme illustré par l’étape ST20, la requête d’extraction de l’instruction INSidu premier groupe GR1 se traduit par l’émission sur le bus d’instructions par l’unité de traitement UT de l’adresse @ide cette instruction.
Cette instruction INSiest extraite de la mémoire MM1 (étape ST21) et par ailleurs, dans l’étape ST22, l’adresse @ide cette instruction INSiest comparée avec l’adresse @Pqui est l’adresse de la première instruction du programme applicatif.
Dans cet exemple de mise en œuvre, cette adresse @Pforme le critère de protection CP mentionné ci-avant.
Si l’adresse @in’est pas égale à l’adresse @P, alors le signal de déclenchement SDL prend une première valeur logique, par exemple la valeur 0 (étape ST23) et le mécanisme de protection n’est pas déclenché. L’instruction INSiest par ailleurs exécutée dans l’étape ST24 et on revient dans l’étape ST20 pour l’instruction suivante du premier groupe d’instructions.
Ainsi, tant que l’adresse d’une instruction extraite n’est pas égale à l’adresse @P, c’est-à-dire tant qu’elle ne satisfait pas le critère de protection CP, tout se déroule normalement et aucun mécanisme de protection n’est déclenché.
Par contre, dès que l’adresse @ide l’instruction extraite INSiest égale est égale à l’adresse @P, alors le signal de déclenchement SDL prend la valeur logique 1 (étape ST25) ce qui déclenche dans l’étape ST26 le mécanisme de protection. Par ailleurs, cette instruction est exécutée dans l’étape ST24.
A cet instant, qui correspond au début de l’exécution du programme applicatif, l’unité de traitement va continuer à émettre des requêtes d’extraction des instruction INSidu deuxième groupe d’instructions de façon à les extraire séquentiellement et exécuter le programme d’application. Si aucune tentative de piratage n’a eu lieu, tout se déroule normalement et le mécanisme de protection, bien qu’activé, ne va émettre une action spécifique de protection.
Si par contre suite à un piratage du programme applicatif par exemple, l’unité de traitement essaie, lors de l’exécution du programme applicatif, d’extraire une instruction INSidu premier groupe d’instructions alors que cela n’est pas permis, une action spécifique de protection sera délivrée par le mécanisme de protection comme cela sera expliqué plus en détail ci-après.
Alors que dans l’exemple de la , le critère de protection CP est la première adresse @P du programme applicatif (2ème groupe GR2 d’instructions) il est possible, comme illustré sur la , que le critère de protection CP soit la dernière adresse @N du premier groupe d’instructions GR1 c’est-à-dire la dernière adresse du programme d’instructions de démarrage.
Dans ce cas, tant que l’adresse @id’une instruction extraite n’est pas égale à cette dernière adresse @N, on passe dans l’étape ST23 expliquée ci-avant. Et, dès que cette adresse @iest égale à la dernière adresse @N, alors on passe dans l’étape ST25 mentionnée ci-avant.
Il serait également possible, comme illustré sur la , que le critère de protection CP soit la plage d’adresses @0…@N des instructions du premier groupe GR1.
Dans ce cas, tant que l’adresse @id’une instruction extraite appartient à cette plage d’adresses @0…@N, on passe dans l’étape ST23 (non déclenchement du mécanisme de protection).
Par contre, dès que l’adresse @in’appartient pas à (est en dehors de) la plage @0…@N, alors on passe dans l’étape ST25 en déclenchant le mécanisme de protection.
Ce mode de mise en œuvre offre une sécurité plus renforcée par rapport au mode de mise en œuvre des figures 2 et 3. En effet, dans le mode de mise en œuvre de la par exemple, un tiers mal intentionné pourrait modifier le logiciel de façon à ce que l’unité de traitement n’extraie jamais la première adresse du programme applicatif ce qui ne déclencherait pas le mécanisme de protection. Le programme applicatif tournerait alors peut-être de façon erronée mais cela pourrait peut-être permettre au tiers d’accéder à certaines informations contenues dans le programme de démarrage.
Par contre, cela n’est plus possible dans le mode de mise en œuvre de la car toutes les adresses des instructions du programme applicatif se trouvent en dehors de la plage d’adresses @0…@N du programme de démarrage. Par conséquent, au moins une extraction de l’une des instructions du programme applicatif va déclencher le mécanisme de protection.
On se réfère maintenant aux figures 5 et suivantes pour illustrer des modes de mise en œuvre du mécanisme de protection PRT déclenché dans l’étape ST26 de la .
Comme illustré sur la , à ce stade, l’unité de traitement UT exécute les instructions du programme applicatif (2ème groupe GR2) (étape ST5).
L’unité de traitement UT émet dans l’étape ST50 une requête d’extraction d’une instruction se trouvant à l’adresse @1dans la mémoire MM1.
Cette adresse @1est donc délivrée sur le fil d’adresse du bus d’instructions et est contrôlée par le circuit de contrôle CTRL ( ).
On suppose ici, dans cet exemple, que les deuxièmes moyens de mémoire auxiliaire MMX2 contiennent toute la plage d’adresses @0…@Ndes instructions de démarrage. En d’autres termes, on souhaite interdire ici un nouvel accès à la totalité du programme de démarrage.
Dans l’étape ST51, le circuit de contrôle vérifie par conséquent si l’adresse @1appartient ou non à la plage d’adresses @0…@N.
Si cette adresse @1n’appartient pas à cette plage d’adresses, alors l’instruction correspondante peut être extraite de la mémoire MM1 (étape ST52) puis exécutée (étape ST53).
Si par contre dans l’étape ST51 il s’avère que l’adresse @1appartient à la plage d’adresses @0…@N, alors le circuit de contrôle va interdire une nouvelle exécution de cette instruction. Dans cet exemple, cette interdiction se traduit par une réinitialisation par le circuit de contrôle du microcontrôleur MCU en mettant par exemple le signal de réinitialisation RST à zéro (étape ST54).
On voit donc ici que l’instruction qui a fait l’objet d’une requête par l’unité de traitement n’est pas délivrée sur le bus d’instructions.
En variante, comme illustré sur la , il serait possible à la place de l’étape ST54 de réaliser l’étape ST64 dans laquelle le circuit de contrôle délivre sur le bus d’instructions à l’unité de traitement l’instruction de référence, (en l’espèce l’instruction NOP) contenue dans le registre RG1.
Là encore, l’instruction qui est stockée à l’adresse @1 et qui a été requise par l’unité de traitement UT ne lui est pas délivrée.
Il est possible, comme illustré sur la , que l’on ne souhaite protéger qu’une partie des instructions du programme de démarrage de façon à permettre à l’utilisateur de pouvoir accéder néanmoins pendant l’exécution du programme applicatif, à certains services codés dans le programme de démarrage.
Ainsi, dans ce cas, comme illustré sur la , seule la sous plage d’adresses @0…@J est stockée dans les deuxièmes moyens de mémoire auxiliaires MMX2.
Et, dans l’étape ST71, le circuit de contrôle CTRL vérifie si l’adresse @1de l’instruction requise par l’unité de traitement appartient ou non à la sous plage d’adresses @0…@G. Si elle n’appartient pas à cette sous plage, alors les étapes ST52 et ST53 de la sont exécutées.
Si par contre cette adresse @1est une adresse protégée, c’est-à-dire appartenant à la sous plage @0…@J, alors soit l’étape ST54 soit l’étape ST64 de la ou de la est exécutée.
On se réfère maintenant plus particulièrement aux figures 8 et 9 pour illustrer un mode de mise en œuvre dans lequel le mécanisme de protection PRT protège l’accès à des données D lors de l’exécution du programme applicatif.
Cette exécution est illustrée par l’étape ST8 de la .
On suppose dans cet exemple que les données D à protéger auxquelles on ne souhaite pas que l’unité de traitement UT puisse accéder lors de l’exécution du programme applicatif, sont stockées à la plage d’adresses @K…@Ldans les troisièmes moyens de mémoire auxiliaires MMX3.
Lorsque l’unité de traitement UT émet une requête d’accès à une donnée D dans l’étape ST80, elle délivre sur le fil d’adresses du bus de données l’adresse @1 de la donnée requise.
Le circuit de contrôle vérifie alors si cette adresse @1 appartient ou non à la plage d’adresses stockée dans les troisièmes moyens de mémoire auxiliaires MMX3.
Si ce n’est pas le cas, alors la donnée requise est effectivement lue (étape ST82).
Si par contre l’adresse @1 appartient à la plage de données @K…@L, alors, là encore, on interdit la lecture de cette donnée.
A cet égard, le circuit de contrôle CTRL peut comme illustré dans l’étape ST84, réinitialiser le microcontrôleur MCU.
En variante, comme illustré sur la , il est possible, au lieu de réinitialiser le microcontrôleur MCU, que le circuit de contrôle CTRL délivre à la place de la donnée D requise, une donnée de référence DO contenue dans le registre RG2, par exemple la donnée nulle (étape ST94).
On a vu précédemment que le critère de protection CP, une plage d’adresses PAD2 et une plage d’adresses PAD3 étaient respectivement stockés tels quels dans les moyens de mémoire auxiliaires MMX1, MMX2 et MMX3 ;
De façon à améliorer la sécurité, il est possible, comme illustré sur la , d’appliquer à chacun de ces paramètres CP, PAD2 et PAD3 un traitement de protection ST100 qui peut être identique ou différent pour chacun des paramètres.
Un tel traitement de protection peut comprendre par exemple en un traitement de mélange (« scramble ») des bits de ces paramètres ou bien un traitement comportant l’adjonction d’un mot de contrôle du type CRC (« checksum ») aux différents paramètres, ou encore un traitement de cryptographie, ou bien une combinaison de certains au moins de ces traitements.
Ces paramètres protégés sont alors respectivement stockés dans les premiers moyens de mémoire auxiliaires MMX1 (étape ST101), dans les deuxièmes moyens de mémoire auxiliaires MMX2 (étape ST102) et dans les troisièmes moyens de mémoire auxiliaires (étape ST103).
Bien entendu, lors de la lecture de ces moyens de mémoire auxiliaires, le circuit de contrôle appliquera le traitement de protection inverse pour retrouver les paramètres originaux.
Claims (34)
- Procédé de protection d’un système, le système comprenant une unité de traitement (UT) et des moyens de mémoire (MM1, MM2) stockant au moins un premier groupe d’instructions (GR1) et un deuxième groupe d’instructions (GR2) exécutables par l’unité de traitement, le procédé comprenant une extraction séquentielle des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe par l’unité de traitement en vue de leur exécution, et une comparaison de l’adresse de stockage de chaque instruction extraite avec un critère de protection (CP), et si cette adresse de stockage satisfait le critère de protection, un déclenchement d’un mécanisme de protection (PRT) comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
- Procédé selon la revendication 1, dans lequel le système comprend un bus de communication (BS) et au moins un équipement maitre (DMA) connecté sur le bus, et le mécanisme de protection comporte également une interdiction pour ledit au moins un équipement maître d’accéder à au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
- Procédé selon la revendication 1 ou 2, dans lequel le critère de protection (CP) est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions, et une instruction satisfait le critère de protection si son adresse est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions.
- Procédé selon la revendication 1 ou 2, dans lequel le critère de protection (CP) comprend une première plage d’adresses et une instruction satisfait le critère de protection si son adresse est en dehors de ladite première plage d’adresses.
- Procédé selon la revendication 4, dans lequel la première plage d’adresses est la plage d’adresses des instructions du premier groupe (GR1).
- Procédé selon la revendication 4 ou 5, dans lequel le mécanisme de protection (PRT) comporte au moins une interdiction pour l’unité de traitement d’exécuter à nouveau toutes les instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe et/ou une interdiction pour ledit au moins un équipement maître d’accéder à toutes les instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
- Procédé selon l’une des revendications précédentes, dans lequel ladite interdiction de la nouvelle exécution par l’unité de traitement d’une instruction de ladite partie ou de l’accès par ledit au moins un équipement maître à une instruction de ladite partie, comprend une détection d’une nouvelle requête d’extraction (@1) de cette instruction des moyens de mémoire émise par l’unité de traitement ou par ledit au moins un équipement maître et la réalisation d’une action empêchant de servir ladite nouvelle requête d’extraction de cette instruction.
- Procédé selon la revendication 7, dans lequel la réalisation de ladite action comprend une réinitialisation (RST) du système.
- Procédé selon la revendication 7, dans lequel la réalisation de ladite action comprend la délivrance à l’unité de traitement ou audit au moins un équipement maître d’une instruction de référence (NOP) à la place de l’instruction requise.
- Procédé selon l’une des revendications 7 à 9, dans lequel ladite au moins une partie des instructions du premier groupe concernée par le mécanisme de protection sont stockées à des adresses de stockage appartenant à au moins une deuxième plage d’adresses et ladite détection de la nouvelle requête d’extraction d’une instruction comprend une comparaison entre l’adresse (@1) de cette instruction requise et ladite au moins une deuxième plage d’adresses.
- Procédé selon l’une des revendications précédentes, dans lequel le mécanisme de protection (PRT) comporte également une interdiction pour l’unité de traitement et/ou pour ledit au moins un équipement maître d’accéder, lors de l’exécution du deuxième groupe d’instructions, à au moins une donnée (D) stockée dans les moyens de mémoire.
- Procédé selon la revendication 11, dans lequel ladite interdiction d’accès comprend une détection d’une requête d’extraction de cette donnée (D) des moyens de mémoire émise par l’unité de traitement ou par ledit au moins un équipement maître et la réalisation d’une action empêchant de servir ladite nouvelle requête d’extraction de cette donnée.
- Procédé selon la revendication 12, dans lequel la réalisation de ladite action comprend une réinitialisation (RST) du système.
- Procédé selon la revendication 12, dans lequel la réalisation de ladite action comprend la délivrance à l’unité de traitement ou audit au moins un équipement maître d’une donnée de référence (DO) à la place de la donnée requise.
- Procédé selon l’une des revendications 12 à 15, dans lequel ladite au moins une donnée concernée par le mécanisme de protection est stockée à une adresse de stockage appartenant à au moins une troisième plage d’adresses et ladite détection de la requête d’extraction d’une donnée comprend une comparaison entre l’adresse (@1) de cette donnée requise et ladite au moins une troisième plage d’adresses.
- Procédé selon l’une des revendications précédentes, dans lequel le système est un microcontrôleur (MCU), le premier groupe d’instructions (GR1) comprend des instructions de démarrage et le deuxième groupe d’instructions (GR2) comprend des instructions d’un programme applicatif.
- Système, comprenant
-une unité de traitement (UT),
-des moyens de mémoire (MM1, MM2) destinés à stocker au moins un premier groupe d’instructions et un deuxième groupe d’instructions exécutables par l’unité de traitement, l’unité de traitement étant configurée pour extraire séquentiellement des moyens de mémoire, des instructions du premier groupe et des instructions du deuxième groupe en vue de leur exécution, et
-des moyens de contrôle (SBI) comportant des premiers moyens de mémoire auxiliaires (MMX1) destinés à stocker un critère de protection (CP), des moyens de comparaison (CMP) configurés pour comparer l’adresse de stockage de chaque instruction extraite avec le critère de protection, et un circuit de contrôle (CTRL) configuré pour, si cette adresse de stockage satisfait le critère de protection, déclencher un mécanisme de protection (PRT) comportant au moins une interdiction pour l’unité de traitement d’exécuter à nouveau au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe. - Système selon la revendication 17, comprenant un bus de communication (BS) et au moins un équipement maitre (DMA) connecté sur le bus, et le mécanisme de protection comporte également une interdiction pour ledit au moins un équipement maître d’accéder à au moins une partie des instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe.
- Système selon la revendication 17 ou 18, dans lequel le critère de protection (CP) est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions, et une instruction satisfait le critère de protection si son adresse est l’adresse de la première instruction du deuxième groupe d’instructions ou l’adresse de la dernière instruction du premier groupe d’instructions.
- Système selon la revendication 17 ou 18, dans lequel le critère de protection (CP) comprend une première plage d’adresses et une instruction satisfait le critère de protection si son adresse est en dehors de ladite première plage d’adresse.
- Système selon la revendication 20, dans lequel la première plage d’adresses est la plage d’adresses des instructions du premier groupe (GR1).
- Système selon la revendication 20 ou 21, dans lequel le circuit de contrôle (CTRL) est configuré pour au moins interdire à l’unité de traitement d’exécuter à nouveau toutes les instructions dudit premier groupe et/ou pour au moins interdire audit au moins un équipement maître d’accéder à toutes les instructions dudit premier groupe, lors de l’exécution des instructions du deuxième groupe, lors de l’exécution des instructions du deuxième groupe.
- Système selon l’une des revendications 18 à 22, dans lequel afin d’interdire la nouvelle exécution par l’unité de traitement d’une instruction de ladite partie ou l’accès par ledit au moins un équipement maître à une instruction de ladite partie, le circuit de contrôle (CTRL) est configuré pour détecter une nouvelle requête d’extraction de cette instruction des moyens de mémoire émise par l’unité de traitement ou ledit au moins un équipement maître et pour réaliser une action empêchant de servir ladite nouvelle requête d’extraction de cette instruction.
- Système selon la revendication 23, dans lequel le circuit de contrôle (CTRL) est configuré pour effectuer la réalisation de ladite action en réinitialisant le système.
- Système selon la revendication 23, dans lequel le circuit de contrôle (CTRL) est configuré pour effectuer la réalisation de ladite action en délivrant à l’unité de traitement ou audit au moins un équipement maître, une instruction de référence à la place de l’instruction requise.
- Système selon l’une des revendications 23 à 25, dans lequel ladite au moins une partie des instructions du premier groupe concernée par le mécanisme de protection sont stockées à des adresses de stockage appartenant à au moins une deuxième plage d’adresses, le circuit de contrôle (CTRL) comprend des deuxièmes moyens de mémoire auxiliaires (MMX2) destinés à stocker ladite au moins une deuxième plage d’adresses et le circuit de contrôle est configuré pour effectuer ladite détection de la nouvelle requête d’extraction d’une instruction en comparant l’adresse de cette instruction requise avec ladite au moins une deuxième plage d’adresses.
- Système selon l’une des revendications 17 à 26, dans lequel le mécanisme de protection (PRT) comporte également une interdiction pour l’unité de traitement et/ou ledit au moins un équipement maître d’accéder, lors de l’exécution du deuxième groupe d’instructions, à au moins une donnée stockée dans les moyens de mémoire.
- Système selon la revendication 27, dans lequel afin de mettre en œuvre ladite interdiction d’accès, le circuit de contrôle (CTRL) est configuré pour détecter une requête d’extraction de cette donnée des moyens de mémoire émise par l’unité de traitement ou ledit au moins un équipement maître et pour réaliser une action empêchant de servir ladite nouvelle requête d’extraction de cette donnée.
- Système selon la revendication 28, dans lequel dans lequel le circuit de contrôle (CTRL) est configuré pour effectuer la réalisation de ladite action en réinitialisant le système.
- Système selon la revendication 28, dans lequel le circuit de contrôle (CTRL) est configuré pour effectuer la réalisation de ladite action en délivrant à l’unité de traitement ou audit au moins un équipement maître, une donnée de référence à la place de la donnée requise.
- Système selon l’une des revendications 27 à 29, dans lequel ladite au moins une donnée (D) concernée par le mécanisme de protection est stockée à une adresse de stockage appartenant à au moins une troisième plage d’adresses, le circuit de contrôle (CTRL) comprend des troisièmes moyens de mémoire auxiliaires (MMX3) destinés à stocker ladite au moins une troisième plage d’adresses et le circuit de contrôle est configuré pour détecter la requête d’extraction d’une donnée en comparant l’adresse de cette donnée requise avec ladite au moins une troisième plage d’adresses.
- Système selon l’une des revendications 17 à 31, dans lequel le critère de protection (CP) et les deuxième (PAD2) et troisième (PAD3) plages d’adresses sont stockées de façon protégée.
- Système selon l’une des revendications 17 à 32, dans lequel le système est un microcontrôleur (MCU), le premier groupe d’instructions comprend des instructions de démarrage et le deuxième groupe d’instructions comprend des instructions d’un programme applicatif.
- Objet connecté incorporant un système selon l’une des revendications 17 à 33.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2013505A FR3118219B1 (fr) | 2020-12-17 | 2020-12-17 | Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant |
US17/457,569 US12045175B2 (en) | 2020-12-17 | 2021-12-03 | Preventing a processor from re-executing instructions |
CN202111543028.6A CN114647852A (zh) | 2020-12-17 | 2021-12-16 | 保护诸如微控制器的系统的方法以及对应系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2013505A FR3118219B1 (fr) | 2020-12-17 | 2020-12-17 | Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant |
FR2013505 | 2020-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3118219A1 true FR3118219A1 (fr) | 2022-06-24 |
FR3118219B1 FR3118219B1 (fr) | 2024-03-15 |
Family
ID=75539422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2013505A Active FR3118219B1 (fr) | 2020-12-17 | 2020-12-17 | Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant |
Country Status (2)
Country | Link |
---|---|
US (1) | US12045175B2 (fr) |
FR (1) | FR3118219B1 (fr) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233565A1 (en) * | 2002-05-29 | 2003-12-18 | Sung-Hyun Kim | Computer systems such as smart cards having memory architectures that can protect security information, and methods of using same |
US20040158742A1 (en) * | 2003-02-07 | 2004-08-12 | Broadon | Secure and backward-compatible processor and secure software execution thereon |
US8141145B2 (en) * | 2006-11-16 | 2012-03-20 | Nagravision S.A. | Method to control the execution of a program by a microcontroller |
US9430409B2 (en) * | 2012-06-27 | 2016-08-30 | Nordic Semiconductor Asa | Memory protection |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282657B1 (en) * | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
JP3603895B2 (ja) * | 2003-02-24 | 2004-12-22 | 松下電器産業株式会社 | コンパイラ、および命令生成方法 |
US20050257016A1 (en) * | 2004-05-17 | 2005-11-17 | Brian Boles | Digital signal controller secure memory partitioning |
US10691807B2 (en) | 2015-06-08 | 2020-06-23 | Nuvoton Technology Corporation | Secure system boot monitor |
US9749141B2 (en) | 2015-09-25 | 2017-08-29 | Qualcomm Incorporated | Secure boot devices, systems, and methods |
US10318438B1 (en) * | 2017-12-07 | 2019-06-11 | Nuvoton Technology Corporation | Secure memory access using memory read restriction |
-
2020
- 2020-12-17 FR FR2013505A patent/FR3118219B1/fr active Active
-
2021
- 2021-12-03 US US17/457,569 patent/US12045175B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233565A1 (en) * | 2002-05-29 | 2003-12-18 | Sung-Hyun Kim | Computer systems such as smart cards having memory architectures that can protect security information, and methods of using same |
US20040158742A1 (en) * | 2003-02-07 | 2004-08-12 | Broadon | Secure and backward-compatible processor and secure software execution thereon |
US8141145B2 (en) * | 2006-11-16 | 2012-03-20 | Nagravision S.A. | Method to control the execution of a program by a microcontroller |
US9430409B2 (en) * | 2012-06-27 | 2016-08-30 | Nordic Semiconductor Asa | Memory protection |
Also Published As
Publication number | Publication date |
---|---|
US20220197828A1 (en) | 2022-06-23 |
FR3118219B1 (fr) | 2024-03-15 |
US12045175B2 (en) | 2024-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1616242B1 (fr) | Procede et dispositif pour controler l'acces a un periferique | |
US7346781B2 (en) | Initiating execution of a computer program from an encrypted version of a computer program | |
EP0540095B1 (fr) | Microcircuit pour carte à puce à mémoire programmable protégée | |
US7945789B2 (en) | System and method for securely restoring a program context from a shared memory | |
US20080066075A1 (en) | System and Method for Securely Saving and Restoring a Context of a Secure Program Loader | |
FR3103586A1 (fr) | Procédé de gestion du fonctionnement d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant | |
FR3047587A1 (fr) | ||
US20080066074A1 (en) | System and Method for Securely Saving a Program Context to a Shared Memory | |
WO2007015204A2 (fr) | Terminal securise, routine et procede de protection d'une cle secrete | |
FR3072195B1 (fr) | Procede de gestion d'un retour de produit pour analyse et produit correspondant | |
EP4120091A1 (fr) | Procédé de gestion de droits d accès de tâches logicielles exécutées par un microcontrôleur, et microcontrôleur correspondant | |
FR2862397A1 (fr) | Demarrage securise d'un appareil electronique a architecture smp | |
EP1627362A1 (fr) | Methode de generation d'une cle de securite | |
EP0735489B1 (fr) | Procédé de protection de zones de mémoires non volatiles | |
EP4068128A1 (fr) | Démarrage sécurisé d'une unité de traitement | |
EP1605333B1 (fr) | Contrôle de l'exécution d'un programme | |
WO2009059763A1 (fr) | Procede de deverrouillage d'un calculateur de controle moteur | |
FR2880963A1 (fr) | Points d'arrets logiciels destines a etre utilises avec des dispositifs a memoire | |
FR3118219A1 (fr) | Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant | |
FR3103584A1 (fr) | Procédé de gestion du débogage d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant | |
EP1489517B1 (fr) | Protection d'un programme en attente d'exécution dans une mémoire utilisée par un microprocesseur | |
WO2021052946A1 (fr) | Système sur puce et procédé garantissant la fraicheur des données stockées dans une mémoire extérieure | |
EP4145704B1 (fr) | Démarrage sécurisé d'une unité de traitement | |
CN114647852A (zh) | 保护诸如微控制器的系统的方法以及对应系统 | |
US20240064026A1 (en) | Method and device for controlling access to a resource |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20220624 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |