Brevet FR3151417A1 — publié le 20250124

Procédé de sécurisation de programmes dans une mémoire La présente description concerne un procédé de sécurisation de programmes dans une mémoire (104), comprenant une écriture d’un programme de démarrage (iROT) dans une première zone de ladite mémoire (104); une écriture d’au moins un programme additionnel (uROT, Secure OS, Applications) dans au moins une deuxième zone de ladite mémoire (104) ; une protection en écriture (Write protection) des premières et deuxièmes zones en modifiant une ou plusieurs valeurs d’un premier registre (WRPSG1/2) ; et une interdiction de modifier lesdites une ou plusieurs valeurs du premier registre (WRPSG1/2) lorsqu’elles sont associées à un état de protection en écriture de la première zone. Figure pour l'abrégé : Fig. 3 Procédé de sécurisation de programmes dans une mémoire La présente description concerne de façon générale les procédés de sécurisation de programmes dans des mémoires ainsi que les dispositifs mettant en oeuvre ces procédés. De nombreux circuits électroniques comme les microcontrôleurs utilisent un programme de démarrage (BOOT en anglais) qui est chargé dans une mémoire non volatile du circuit au démarrage pour exécuter ensuite une application de démarrage. D’autres programmes peuvent également être chargés ensuite pour exécuter d’autres applications. Pour des raisons de sécurité, des zones de la mémoire dans lesquelles le programme de démarrage, les autres programmes, ou simplement des données sont chargées, doivent pouvoir être rendues interdites en écriture par rapport à l’extérieur du circuit et/ou par rapport aux autres applications. Les solutions actuelles ne permettent pas d’assurer, à la fois une sécurité optimale lors des chargements successifs du programme de démarrage et des autres programmes, et à la fois d’obtenir une flexibilité pour définir des zones mémoires à protéger en écriture. Il existe un besoin d’assurer, à la fois une sécurité optimale lors des chargements du programme de démarrage et des autres programmes, et à la fois d’obtenir une flexibilité pour définir les zones mémoires à protéger en écriture. Un mode de réalisation pallie tout ou partie des inconvénients des procédés connus. Un mode de réalisation prévoit un procédé de sécurisation de programmes dans une mémoire, comprenant : - une écriture d’un programme de démarrage dans une première zone de ladite mémoire ; - une écriture d’au moins un programme additionnel dans au moins une deuxième zone de ladite mémoire ; - une protection en écriture des premières et deuxièmes zones en modifiant une ou plusieurs valeurs d’un premier registre ; et - une interdiction de modifier lesdites une ou plusieurs valeurs du premier registre lorsqu’elles sont associées à un état de protection en écriture de la première zone. Dans un mode de réalisation, ledit premier registre associe une valeur d’état de protection en écriture à une ou des zones de ladite mémoire. Dans un mode de réalisation, l’interdiction comprend la modification d’une valeur d’un deuxième registre. Dans un mode de réalisation, la modification de valeur du deuxième registre est autorisée en fonction d’un état de circuit comprenant ladite mémoire. Dans un mode de réalisation, l’état de circuit comprenant ladite mémoire est un état parmi un état de régression, un état ouvert à l’écriture et un état de fourniture. Dans un mode de réalisation, la modification de valeur du deuxième registre est autorisée par utilisation d’un code de sécurité spécifique. Dans un mode de réalisation, le deuxième registre est configuré pour prendre deux valeurs distinctes codées chacune sur un nombre de bits supérieur ou égal à 8, chaque bit d’une des deux valeurs distinctes étant différent du bit correspondant de l’autre valeur. Dans un mode de réalisation, le deuxième registre est non volatile. Dans un mode de réalisation, le premier registre est non volatile. Dans un mode de réalisation, l’interdiction de modifier lesdites une ou plusieurs valeurs du premier registre est mise en oeuvre après l’écriture dudit au moins un programme additionnel. Dans un mode de réalisation, l’interdiction de modifier lesdites une ou plusieurs valeurs du premier registre est mise en oeuvre avant l’écriture dudit au moins un programme additionnel. Dans un mode de réalisation, la première zone de ladite mémoire est définie par deux octets d’option d’utilisateur. Dans un mode de réalisation, la protection en écriture dudit programme de démarrage est mise en oeuvre avant l’écriture dudit au moins un programme additionnel. Un mode de réalisation prévoit un microcontrôleur, comprenant une mémoire, et configuré pour mettre en oeuvre le procédé de sécurisation de programmes décrit ci-dessus, dans cette mémoire. Dans un mode de réalisation, ladite mémoire est non volatile. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente, de façon très schématique et sous forme de blocs, un exemple de circuit intégré du type auquel s'appliquent les modes de réalisation décrits ; la représente schématiquement un exemple d’une mémoire du circuit intégré de la ; la illustre schématiquement des étapes d’un procédé de sécurisation de programmes dans une mémoire selon un mode de réalisation ; la illustre un mode de mise en œuvre d’un procédé de sécurisation de programmes dans une mémoire ; et la illustre un autre mode de mise en œuvre d’un procédé de sécurisation de programmes dans une mémoire. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La représente, de façon très schématique et sous forme de blocs, un exemple de circuit intégré 100 du type auquel s'appliquent les modes de réalisation décrits. Le circuit 100 est par exemple un microcontrôleur. Le circuit 100 comprend une mémoire non-volatile 104 (FLASH MEMORY), par exemple de type mémoire FLASH, capable de communiquer, via un bus de communication 114, avec une interface de mémoire non-volatile 106 (FLASH INTERFACE) configurée pour écrire ou lire des données dans et depuis la mémoire non-volatile 104. Le circuit 100 comprend en outre, par exemple, une unité de traitement 110 (CPU) comprenant un ou plusieurs processeurs sous contrôle d’instructions stockées dans une mémoire d’instructions 112 (INSTR MEM). La mémoire d’instruction 112 est par exemple une mémoire volatile de type à accès aléatoire (en anglais Random Access Memory, RAM). L’unité de traitement 110 et la mémoire 112 communiquent, par exemple, via un bus système 140 (de données, d’adresses et de commande). La mémoire FLASH 104 est reliée au bus système 140 par l’intermédiaire de l’interface de mémoire non-volatile 106 et par l’intermédiaire du bus 114. Le dispositif 100 comprend en outre une interface d’entrée/sortie 108 (I/O interface) reliée au bus système 140 pour communiquer avec l’extérieur. Le dispositif 100 peut intégrer d'autres circuits mettant en œuvre d'autres fonctions (par exemple, une ou plusieurs mémoires volatiles et/ou non-volatiles, ou d'autres unités de traitement), symbolisées par un bloc 116 (FCT) en . Parmi ces autres circuits, le circuit 100 comporte par exemple une mémoire morte ou statique 118 (ROM). Les modes de réalisation décrits concernent la sécurisation des programmes ou données chargés dans la mémoire non volatile 104. Pour ce faire, les programmes de démarrage sont par exemple transférés directement vers la mémoire 104 lors de processus de programmation en usine. Cependant le contenu d’une mémoire flash est en principe modifiable. Or, on doit veiller, par exemple dans le cas de chargement de plusieurs systèmes d’exploitation, à ce qu’ils ne puissent pas être modifié une fois transférés en mémoire flash 104, sauf régression du système ou circuit 100. Un exemple concerne les programmes de démarrage (BOOT en anglais) et les systèmes d’exploitation ou applications de type OEM, qui doivent être chargés, lors des processus de fabrication du circuit 100, par exemple par plusieurs sous-traitants ou utilisateurs successifs différents. Par exemple, le circuit 100 est, à sa sortie d’usine, dans un état dit « ouvert » (Open en anglais), c’est-à-dire que la mémoire n’est pas protégée en écriture. Puis un premier sous-traitant a la tâche de charger un programme de démarrage (iROT pour Immutable Root Of Trust) dans la mémoire 104, le circuit est alors dans un mode de fourniture (Provisioning en anglais). Une fois chargé et sécurisé, le circuit 100 passe en mode de fourniture de programme de démarrage réalisée (iROT provisioned). A ce stade, le programme de démarrage iROT peut prendre en charge les autres étapes d’installation comprenant du code et des clés de cryptage par exemple. Un autre sous-traitant peut alors charger un ou des programmes comme par exemple un ou des systèmes d’exploitation et/ou des applications sécurisées et/ou des mises à jour qui, une fois chargés, doivent être sécurisés. Une fois cela réalisé, le produit passe en mode fermé (Closed en anglais). A ce stade, les différents programmes installés peuvent prend en charge des installations non sécurisées comprenant du code et des clés de cryptage. Des applications avec un niveau de sécurisation plus faible (Non Secure Applications en anglais) peuvent alors être installées. Les programmes de démarrage sont mis en oeuvre à l’initialisation du système en mémoire flash 104 afin de pouvoir ensuite être exécutés à chaque démarrage du système. Cependant, une fois en mémoire flash, l’accès au programme de démarrage doit être protégé vis-à-vis d’autres programmes de démarrage, de toute application ou d’un accès depuis l’extérieur du circuit afin d’éviter qu’il puisse être modifié. Pour ce faire, on prévoit de protéger en écriture (Write protection en anglais) la zone de la mémoire 104 contenant le programme de démarrage afin qu’il soit impossible d’y accéder hors redémarrage du circuit. Il est également prévu de protéger en écriture certaines zones (comprenant un ou plusieurs secteurs) de la mémoire 104 liées aux autres programmes ou données. Une fois protégées en écriture il est actuellement difficile de permettre de garder une flexibilité quant à des modifications éventuelles ultérieures des zones mémoires à protéger tout en garantissant l’immuabilité (immutability en anglais) du programme de démarrage iROT. Les modes de réalisation décrits prévoient un procédé de sécurisation de programmes dans une mémoire, comprenant une écriture du programme de démarrage iROT dans une première zone de ladite mémoire ; une écriture d’au moins un programme additionnel (uROT, Secure OS, Applications) dans au moins une deuxième zone de ladite mémoire ; une protection en écriture (Write protection) des premières et deuxièmes zones en modifiant une ou plusieurs valeurs d’un premier registre (WRPSG1/2) ; et une interdiction de modifier lesdites une ou plusieurs valeurs du premier registre WRPSG1/2 lorsqu’elles sont associées à un état de protection en écriture de la première zone. Les zones protégées en écriture sont ainsi définies de façon flexibles et sans difficultés, par exemple à l’aide d’un seul registre. L’immuabilité du programme de démarrage iROT est assurée grâce à l’interdiction de modification de la protection en écriture ciblée sur les zones mémoires dédiées au programme de démarrage iROT. Il est possible d’utiliser la protection en écriture (Write protection en anglais) durant toutes phases de fabrication du produit par exemple chez différents sous-traitants depuis une phase où le circuit est à l’état ouvert jusqu’à une phase où il est à l’état fermé. Plusieurs couches de programmes peuvent définir ainsi leurs propres zones de mémoires à protéger en écriture pour leurs propres programmes. La représente schématiquement un exemple d’une mémoire 104 du circuit intégré de la . Plus particulièrement, dans l’exemple de la , la mémoire comprend deux banques (Bank 1, Bank 2) de mémoires. Dans cet exemple, des groupes de secteurs de la mémoire numérotés 2, 3, 14, 16, 18 et 31 sont protégés en écriture (Code Write protected) par l’utilisation du premier registre WRPSG1/2 qui utilise un tableau d’association (bitmap en anglais) d’une valeur d’état de protection en écriture (par exemple 0 pour « non-protégé » et 1 pour « protégé ») à une ou des zones de ladite mémoire. Dans l’exemple représenté, le registre WRPSG1/2 prend les valeurs WRPSG1[2]=1, WRPSG1[14]=1, WRPSG1[16]=1 et WRPSG1[31]=1 pour protéger en écriture les groupes de secteurs numérotés 2, 14, 16 et 31 dans la première banque. Les autres secteurs de la première banque sont à l’état 0 dans la première banque du registre, soit par exemple WRPSG1[X]=0 où X représente les numéros de groupes de secteurs non protégés de la première banque. Un même raisonnement s’applique à la deuxième banque avec les valeurs du registre WRPSG1/2 qui prend les valeurs WRPSG2[3]=1 et WRPSG2[18]=1 pour protéger en écriture les groupes de secteurs numérotés 3 et 18 dans la deuxième banque. Chaque programme qui est chargé dans le circuit lorsqu’il est dans les états « ouvert », « fourniture », et avant que l’état soit « fermé », peut ainsi définir, de façon flexible des secteurs, ou des zones, de la mémoire 104 qui sont protégés en écriture en modifiant la valeur 0 ou 1 associée à ces secteurs dans le registre WRPSG1/2. La illustre schématiquement des étapes d’un procédé de sécurisation de programmes dans une mémoire selon un mode de réalisation. Dans une étape 302 (START PROGRAMMING MEMORY), le procédé de sécurisation de programmes commence. Dans une étape 304 (Write Root program (iROT)), le programme de démarrage iROT est chargé dans une première zone ou des zones de la mémoire 104. Dans un exemple, la première zone de la mémoire 104 est définie par deux octets d’option d’utilisateur (HDP_START, HDP_END). Ces deux octets d’option d’utilisateur sont par exemple non volatiles. Dans une étape 306 (Write Protection of Root program), ultérieure à l’étape 304, la première zone, qui correspond au programme de démarrage iROT, est protégée en écriture en modifiant l’état de protection en écriture (on passe de 0 à 1) du registre WRPSG1/2 correspondant à la première zone. Dans une étape 308 (Write other program (uROT, Secure OS, Applications)), d’autres programmes comme d’autres programmes de démarrage (uROT), un ou des systèmes d’exploitation (Secure OS) ou encore une ou des applications, sont chargées dans au moins une deuxième zone de la mémoire 104. Dans une étape 310 (Write Protection of other program (uROT, Secure OS, Applications), la deuxième zone est protégée en écriture en modifiant l’état de protection en écriture (on passe de 0 à 1) du registre WRPSG1/2 correspondant à la deuxième zone. Dans une étape 312 (Lock Write Protection of Root program), la modification des valeurs du registre WRPSG1/2 qui sont associées à l’état de protection en écriture de la première zone est interdite. Cette interdiction comprend par exemple la modification d’une valeur d’un deuxième registre (WRPLOCK). Dans un exemple, la valeur du deuxième registre passe à 1 pour permettre l’interdiction de modification des valeurs du premier registre associées à la première zone. En d’autres termes, lorsque la valeur du deuxième registre WRPLOCK passe à 1, la modification des valeurs du registre WRPSG1/2 associées à la première zone est interdite. Seul un état de régression du circuit permet par exemple de pouvoir modifier le deuxième registre. Dans un exemple, la valeur du deuxième registre WRPLOCK est modifiable uniquement par un programme sécurisé (Secure and privilege SW) d’accès restreint. Dans un autre exemple, la valeur du deuxième registre WRPLOCK est une ressource non volatile par exemple définie par un octet d’option utilisateur. Cela permet que le registre WRPLOCK soit utilisable dès que l’unité de traitement 110 est mise en marche. Le deuxième registre WRPLOCK peut par exemple être modifié lorsque le circuit est à l’état « ouvert » ou jusqu’à l’état de fourniture. Dans un exemple (illustré par des flèches discontinues), les étapes 306, 312, 308 et 310 sont réalisées successivement. Dans un autre exemple (illustré par des flèches continues), les étapes 306, 308, 310 et 312 sont réalisées successivement. La illustre un mode de mise en œuvre d’un procédé de sécurisation de programmes dans une mémoire selon un mode de réalisation. Plus particulièrement, la décrit la mémoire 104 pendant différents états du circuit (Device state), ouvert, fourniture et fermé (Open, provisioning, closed) qui correspondent par exemple à des phases de fabrication par exemple chez différents sous-traitants. Dans l’exemple illustré, le circuit est d’abord dans l’état « ouvert » (open). Dans cet état, le programme de démarrage iROT est chargé par exemple dans la première zone de la mémoire et protégé en écriture (Write protection area 1). Un compteur monotonique HDPL1 est par exemple utilisé pour définir la zone de protection du programme iROT avec un octet d’option utilisateur OB-HDP. Un deuxième programme de démarrage (uROT) est ensuite chargé dans la mémoire dans une autre zone, sans être protégé en écriture. Un système d’exploitation et/ou d’autres applications (Secure OS and application) sont également chargés dans une autre zone de la mémoire 104 puis seulement certains secteurs de la mémoire liés à ces programmes sont protégés en écriture (Write protection area 2). Des applications moins sécurisées (NS Appli) sont également chargées dans encore une autre zone de la mémoire 104 puis seulement certains secteurs de la mémoire liés à ces applications sont protégés en écriture (Write protection area 3). Dans cet état, la valeur du registre WRPLOCK est 0 ce qui implique que la modification des valeurs de protection en écriture du registre WRPSG1/2, associées à la zone de mémoire où est chargé le programme iROT, n’est pas interdite. Ensuite, le circuit est dans l’état de fourniture (provisioning). Dans cet état, la valeur du registre WRPLOCK est 1 ce qui implique que la modification des valeurs de protection en écriture du registre WRPSG1/2, associées à la zone de mémoire où est chargé le programme iROT, est interdite (Write protection area 1 locked). Par contre, la modification des valeurs de protection en écriture du registre WRPSG1/2, associées aux autres zones de la mémoire 104 qui sont différentes de la zone de mémoire où est chargé le programme iROT, reste possible. Dans l’exemple représenté, la ou les valeurs de protection en écriture du registre WRPSG1/2 qui sont associées au système d’exploitation et/ou autres applications (Secure OS and application), sont modifiées (Write protection area 2’) pour augmenter le nombre de secteurs protégés en écriture. Ensuite, le circuit est mis dans l’état « fermé ». La ou les valeurs de protection en écriture du registre WRPSG1/2 qui sont associées aux applications moins sécurisées (NS Appli) sont modifiées pour augmenter et changer le nombre de secteurs protégés en écriture (Write protection area 3’). La illustre un autre mode de mise en œuvre d’un procédé de sécurisation de programmes dans une mémoire. Plus particulièrement, la décrit la mémoire 104 pendant différents états du circuit (Device state), fourniture (provisioning), fourniture réalisée (iROT provisioned) et fermé (TZ-Closed). Dans l’exemple illustré, le circuit est d’abord dans l’état « fourniture » (provisioning). Dans cet état, le programme de démarrage iROT est chargé par exemple dans la première zone de la mémoire et protégé en écriture (Write protection area 1). La valeur du registre WRPLOCK est mise à 1 (Write protection area 1 locked) après la protection en écriture. Dans l’exemple illustré, le circuit est ensuite dans l’état « fourniture réalisée » (iROT provisioned). Dans cet état, un deuxième programme de démarrage (uROT) est ensuite chargé dans la mémoire dans une autre zone, sans être protégé spécifiquement en écriture. Un système d’exploitation et/ou d’autres applications (Secure OS and application) sont également chargés dans encore une autre zone de la mémoire 104. Seulement certains secteurs de la mémoire liés à ce système d’exploitation et/ou autres applications sont alors protégés en écriture (Write protection area 2) par la modification de valeurs du registre WRPSG1/2. La valeur du registre WRPLOCK reste bloquée à 1. Dans l’exemple illustré, le circuit est ensuite dans l’état fermé (TZ-Closed). Des applications moins sécurisées (NS Appli) sont chargées dans encore une autre zone de la mémoire 104 puis seulement certains secteurs de la mémoire liés à ces applications sont protégés en écriture (Write protection area 3). La valeur du registre WRPLOCK reste bloquée à 1. Les exemples des figures 4 et 5 permettent de garder de la flexibilité pour modifier les zones de la mémoire qui sont protégées en écriture tout en s’assurant que la modification des valeurs de protection en écriture associées à la zone de la mémoire du programme de démarrage iROT est interdite une fois la valeur du registre WRPLOCK passée à 1. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. En particulier, même si dans les exemples présentées la modification du registre WRPLOCK vers l’état 1 active l’interdiction de modification, la personne du métier pourra implémenter l’inverse à savoir que la valeur de WRPLOCK à 0 déclenche l’interdiction de modification. De plus, l’utilisation du registre WRPLOCK peut être utilisée par exemple pour interdire la modification de WRPSG1/2 sur seulement une partie des secteurs associés au programme iROT. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, dans les exemples présentés, seul un registre WRPLOCK est utilisé pour interdire les modifications des valeurs correspondant à des secteurs d’un seul programme de démarrage iROT. La personne du métier pourra néanmoins mettre en oeuvre plusieurs registres additionnels ayant une fonction similaire à celle du registre WRPLOCK. Ces registres additionnels pourront être utilisés, à l’instar du registre WRPLOCK, pour interdire la modification de certaines valeurs du registre WRPSG1/2 qui sont associées à des zones de la mémoire 104 correspondants à d’autres programmes ou applications ou données, différents du programme de démarrage iROT et qui doivent être protégés en écriture de façon immuable. Procédé de sécurisation de programmes dans une mémoire (104), comprenant : - une écriture d’un programme de démarrage (iROT) dans une première zone de ladite mémoire (104) ; - une écriture d’au moins un programme additionnel (uROT, Secure OS, Applications) dans au moins une deuxième zone de ladite mémoire (104) ; - une protection en écriture (Write protection) des premières et deuxièmes zones en modifiant une ou plusieurs valeurs d’un premier registre (WRPSG1/2) ; et - une interdiction de modifier lesdites une ou plusieurs valeurs du premier registre (WRPSG1/2) lorsqu’elles sont associées à un état de protection en écriture de la première zone. Procédé selon la revendication 1, dans lequel ledit premier registre (WRPSG1/2) associe une valeur d’état de protection en écriture à une ou des zones de ladite mémoire (104). Procédé selon la revendication 1 ou 2, dans lequel l’interdiction comprend la modification d’une valeur d’un deuxième registre (WRPLOCK). Procédé selon la revendication 3, dans lequel la modification de valeur du deuxième registre (WRPLOCK) est autorisée en fonction d’un état de circuit comprenant ladite mémoire (104). Procédé selon la revendication 4, dans lequel l’état de circuit comprenant ladite mémoire (104) est un état parmi un état de régression, un état ouvert à l’écriture (Open) et un état de fourniture (Provisioning). Procédé selon l’une quelconque des revendications 3 à 5, dans lequel la modification de valeur du deuxième registre (WRPLOCK) est autorisée par utilisation d’un code de sécurité spécifique (Secure and privilege SW). Procédé selon l’une quelconque des revendications 3 à 6, dans lequel le deuxième registre (WRPLOCK) est configuré pour prendre deux valeurs distinctes codées chacune sur un nombre de bits supérieur ou égal à 8, chaque bit d’une des deux valeurs distinctes étant différent du bit correspondant de l’autre valeur. Procédé selon l’une quelconque des revendications 3 à 7, dans lequel le deuxième registre (WRPLOCK) est non volatile. Procédé selon l’une quelconque des revendications 1 à 8, dans lequel le premier registre (WRPSG1/2) est non volatile. Procédé selon l’une quelconque des revendications 1 à 9, dans lequel l’interdiction de modifier lesdites une ou plusieurs valeurs du premier registre (WRPSG1/2) est mise en oeuvre après l’écriture dudit au moins un programme additionnel (uROT, Secure OS, Applications). Procédé selon l’une quelconque des revendications 1 à 9, dans lequel l’interdiction de modifier lesdites une ou plusieurs valeurs du premier registre (WRPSG1/2) est mise en oeuvre avant l’écriture dudit au moins un programme additionnel (uROT, Secure OS, Applications). Procédé selon l’une quelconque des revendications 1 à 11, dans lequel la première zone de ladite mémoire (104) est définie par deux octets d’option d’utilisateur (HDP_START, HDP_END). Procédé selon l’une quelconque des revendications 1 à 12, dans lequel la protection en écriture dudit programme de démarrage (iROT) est mise en oeuvre avant l’écriture dudit au moins un programme additionnel (uROT, Secure OS, Applications). Microcontrôleur, comprenant une mémoire (104), et configuré pour mettre en oeuvre le procédé de sécurisation de programmes selon l’une des revendications 1 à 13, dans cette mémoire (104). Microcontrôleur selon la revendication 14, dans lequel ladite mémoire (104) est non volatile.