FR3132365A1 - Mémoire non volatile sécurisée - Google Patents

Mémoire non volatile sécurisée Download PDF

Info

Publication number
FR3132365A1
FR3132365A1 FR2200857A FR2200857A FR3132365A1 FR 3132365 A1 FR3132365 A1 FR 3132365A1 FR 2200857 A FR2200857 A FR 2200857A FR 2200857 A FR2200857 A FR 2200857A FR 3132365 A1 FR3132365 A1 FR 3132365A1
Authority
FR
France
Prior art keywords
circuit
volatile memory
security parameter
error
value
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
Application number
FR2200857A
Other languages
English (en)
Other versions
FR3132365B1 (fr
Inventor
Jawad Benhammadi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Alps SAS
Original Assignee
STMicroelectronics Alps SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Alps SAS filed Critical STMicroelectronics Alps SAS
Priority to FR2200857A priority Critical patent/FR3132365B1/fr
Priority to US17/810,093 priority patent/US12008244B2/en
Publication of FR3132365A1 publication Critical patent/FR3132365A1/fr
Application granted granted Critical
Publication of FR3132365B1 publication Critical patent/FR3132365B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614—Improving the reliability of storage systems
    • G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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
    • G06F21/79—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 in semiconductor storage media, e.g. directly-addressable memories
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671—In-line storage system
    • G06F3/0673—Single storage device
    • G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Mémoire non volatile sécurisée La présente description concerne un procédé comprenant :- le chargement, à partir d’une mémoire non volatile (104) d’un circuit (102) vers un circuit de calcul (130), d’un premier paramètre de sécurité du circuit et d’un premier code correcteur d’erreur stocké en association avec le premier paramètre de sécurité ;- la vérification, par le circuit de calcul (130), du premier paramètre de sécurité et du premier code correcteur d’erreur afin de déterminer si un ou plusieurs des bits du paramètre de sécurité sont erronés ; et- s’il est déterminé que deux bits du paramètre de sécurité sont erronés, le chargement d’une valeur par défaut du premier paramètre dans un registre (132). Figure pour l'abrégé : Fig. 1

Description

Mémoire non volatile sécurisée
La présente description concerne le domaine des procédés et circuits pour la sécurité des circuits électroniques, et en particulier un procédé et un circuit permettant de protéger un circuit électronique comprenant une mémoire non volatile.
Les mémoires non volatiles, telles que les mémoires de type FLASH, peuvent stocker des données sensibles en termes de confidentialité et sécurité telles que par exemple des clefs de chiffrement ou des paramètres de sécurité. La séquence de démarrage d’un circuit électronique est une étape sensible en termes de sécurité, car elle implique en général le traitement de ces données sensibles.
Bien que des solutions existent pour rendre les données sensibles immuables, il serait souhaitable de protéger d’avantage ces données lorsqu’elles sont chargées de la mémoire non volatile vers d’autres mémoires.
Il existe un besoin d’améliorer les méthodes de protections de la confidentialité et/ou la sécurité du contenu d’une mémoire non volatile d’un dispositif électronique.
Un mode de réalisation pallie tout ou partie des inconvénients des méthodes de protection connus.
Un mode de réalisation prévoit un procédé comprenant :
- le chargement, à partir d’une mémoire non volatile d’un circuit vers un circuit de calcul, d’un premier paramètre de sécurité du circuit et d’un premier code correcteur d’erreur stocké en association avec le premier paramètre de sécurité ;
- la vérification, par le circuit de calcul, du premier paramètre de sécurité et du premier code correcteur d’erreur afin de déterminer si un ou plusieurs des bits du paramètre de sécurité sont erronés ; et
- s’il est déterminé que deux bits du paramètre de sécurité sont erronés, le chargement d’une valeur par défaut du premier paramètre dans un registre.
Selon un mode de réalisation, la valeur par défaut correspond à une valeur imposant au circuit un état de fonctionnement sécurisé.
Selon un mode de réalisation, le procédé ci-dessus comprend, s’il est déterminé que deux bits du paramètre de sécurité sont erronés, la transmission d’un signal de sortie d’une interface de la mémoire non volatile vers un circuit de contrôle du circuit, et la réalisation d’une ou plusieurs contre-mesures par le circuit de contrôle.
Selon un mode de réalisation, le circuit de contrôle est configuré pour incrémenter un compteur suite à la réception du signal de sortie, et pour réinitialiser le circuit lorsqu’une valeur seuil est atteinte par le compteur.
Selon un mode de réalisation, le procédé ci-dessus comprend, s’il est déterminé que deux bits du paramètre de sécurité sont erronés, la réalisation par l’interface de la mémoire d’une ou plusieurs contre-mesures.
Selon un mode de réalisation, le procédé ci-dessus comprend :
- la réception, par l’interface de la mémoire non volatile, d’un premier signal de commande, le premier signal de commande étant composé de bits, pouvant prendre valeurs différentes, seulement valeurs parmi ces valeurs étant autorisées, chacune de ces valeurs étant différente des autres par au moins deux valeurs de bits, où m est supérieure ou égale à 2 et est inférieure ou égale à ;
- la comparaison de la valeur du premier signal de commande, par l’interface de la mémoire non volatile, avec chacune des q valeurs autorisées ; et
- si la valeur du premier signal de commande ne correspond à aucune des q valeurs autorisées, la réalisation d’une ou plusieurs contre-mesures, comprenant par exemple la transmission du signal de sortie par l’interface de la mémoire au circuit de contrôle du circuit.
Selon un mode de réalisation, le procédé ci-dessus comprend en outre la réception par l’interface de la mémoire non volatile, à partir du circuit de contrôle du circuit, d’un signal d’entrée d’avertissement indiquant la détection d’un événement suspect, et la réalisation par l’interface d’une ou plusieurs contre-mesures.
Selon un mode de réalisation, l’une ou plusieurs contre-mesures comprennent l’interdiction d’accès à une première zone de la mémoire non volatile suite à la réception du signal d’entrée d’avertissement.
Selon un mode de réalisation, la première zone de la mémoire non volatile contient au moins une clef de chiffrement.
Selon un mode de réalisation, l’une ou plusieurs contre-mesures comprennent le remplacement la valeur d’une clef de chiffrement, stockée dans la mémoire non volatile, par une valeur factice.
Selon un mode de réalisation, le chargement dans le registre du premier paramètre de sécurité du circuit est effectué avant la fin d’une séquence de démarrage du circuit.
Selon un mode de réalisation, la mémoire non volatile est une mémoire de type FLASH.
Un mode de réalisation prévoit un circuit comprenant:
- une mémoire non volatile stockant un premier paramètre de sécurité, et un premier code correcteur d’erreur, stocké en association du premier paramètre dans la mémoire non volatile ; et
- un circuit de calcul configuré pour :
vérifier le premier paramètre de sécurité et le premier code correcteur d’erreur afin de déterminer si un ou plusieurs des bits du paramètre de sécurité sont erronés ; et
s’il est déterminé que deux bits du paramètre de sécurité sont erronés, charger une valeur par défaut du premier paramètre de sécurité dans un registre.
Selon un mode de réalisation, le circuit ci-dessus comprend une interface de la mémoire non volatile configurée pour, lorsqu’il est déterminé que deux bits du paramètre de sécurité sont erronés, transmettre un signal de sortie vers un circuit de contrôle du circuit configuré pour réaliser une ou plusieurs contre-mesures.
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 mode de réalisation d’un dispositif électronique selon un mode de réalisation de la présente description ;
la est un organigramme représentant des opérations d’un procédé de protection d’un circuit selon un exemple de réalisation de la présente description ;
la est un organigramme représentant des opérations d’un procédé de protection d’un circuit selon un autre exemple de réalisation de la présente description ; et
la est un organigramme représentant des opérations d’un procédé de protection d’un circuit selon un autre exemple de réalisation de la présente description.
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. En particulier, la conception de dispositifs de traitement est bien connue de la personne du métier et certains éléments n’ont pas été détaillés dans la description qui suit.
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.
Dans la présente description, le terme « événement suspect » est utilisé pour désigner une altération de la valeur d’un ou plusieurs signaux transmis dans un circuit intégré, ou d’une ou plusieurs données stockées dans une mémoire volatile ou non volatile d’un circuit intégré, d’origine inconnue. Cette altération est par exemple provoquée par une attaque à l’encontre du circuit intégré, par exemple par une attaque par injection de faute, ou est causée par une autre source d’erreur, telle que l’environnement du circuit, par exemple par l’effet de radiation.
La représente, de façon très schématique et sous forme de blocs, un dispositif électronique 100 comprenant un circuit intégré 102 selon un mode de réalisation de la présente description.
Le dispositif électronique 100 est par exemple une carte électronique telle qu’une carte à microcircuits, un matériel à usage informatique, un circuit à microprocesseur, etc.
Le circuit intégré 102 comprend par exemple une mémoire non volatile 104 (NV MEM), par exemple une mémoire FLASH. La mémoire 104 est reliée à une interface mémoire 106 (INTERFACE) elle-même reliée à un circuit de contrôle 108 (TAMPER CONTROLLER) du circuit intégré 102, ainsi qu’à un circuit 110 (SBS) du circuit intégré 102. A titre d’exemple, le circuit 110 est un circuit de configuration du démarrage et de la sécurité du circuit intégré 102 (en anglais « System configuration, Boot and Security »). Le circuit 110 est par exemple configuré pour transmettre un ou plusieurs signaux SIG à l’interface 106. Par exemple les signaux sont des signaux de commande transmis par le circuit 110, par exemple lors du démarrage du dispositif 100, afin d’informer la mémoire non volatile 104 des fonctionnalités et/ou ressources du circuit 102 étant accessibles lors de l’étape en cours du démarrage.
Le circuit 102 comprend, par exemple, en outre une mémoire volatile 112 (RAM), un compteur 114 (COUNT) tel que par exemple un compteur monotone, et un processeur générique 116 (CPU). Le processeur 116, la mémoire volatile 112 et le compteur 114 sont par exemple reliés à l’interface mémoire 106, au circuit de contrôle 108 et au circuit 110 par un bus 118, comprenant par exemple un bus de données.
La mémoire non volatile 104 comprend en outre une zone 122 stockant une clef de chiffrement (HW KEY), une zone 124 stockant d’autres clefs de chiffrement telles que des Option Bytes Keys (OBK), et une zone 126 stockant des données de configuration (USER OPTIONS) telles que par exemple des paramètres de sécurité du circuit 102 choisis par l’utilisateur pour être utilisés lors d’une séquence de démarrage du dispositif 100. La zone 126 comprend en outre, pour au moins certaines des valeurs de données qu’elle contient, un code correcteur d’erreur (ECC - en anglais « Error-Correcting Code »). Chaque code correcteur d’erreur est stocké dans la zone 126 en association avec l’une des valeurs de données correspondante. La combination de chaque valeur de donnée avec le code correcteur d’erreur associé forme un codage de données comprenant de la redondance au codage et permet alors de détecter, et dans certains cas de corriger, une ou plusieurs erreurs dans la valeur de donnée ayant lieu pendant ou après son enregistrement. Par exemple, le code correcteur d’erreur permet de détecter et/ou de corriger une ou plusieurs erreurs intervenant lors d’une transmission de la donnée, entre la mémoire non volatile 104 et le circuit de contrôle 108.
Une zone 128 de la mémoire non volatile 104 stocke par exemple des codes et/ou des données 128 (CODE/DATA). Par exemple la zone 128 stocke des codes de démarrage et/ou des codes applicatifs.
L’interface mémoire 106 comprend en outre un circuit de calcul 130 (ECC CALCULATOR) configuré pour calculer, à partir d’une valeur de donnée stockée dans la zone 126, un code de vérification et pour comparer ce code de vérification avec le code correcteur d’erreur associé à la valeur de donnée. A titre d’exemple, l’interface mémoire 106 comprend en outre au moins une mémoire tampon 131 (BUFFER) dans lequel sont chargés, à partir de la zone 126, la valeur de donnée et son code correcteur d’erreur associé. Le circuit de calcul 130 est alors par exemple configuré pour effectuer le calcul du code de vérification de la valeur de donnée à partir de la mémoire tampon 131 et pour comparer le code de vérification avec le code correcteur d’erreur contenu dans la mémoire tampon 131.
Lorsque le code de vérification calculé correspond au code correcteur d’erreur, la valeur de donnée est traitée comme étant intègre, et est par exemple chargée dans un parmi plusieurs registres 132 (REGISTERS), compris par exemple dans l’interface mémoire 106. Cette valeur de donnée représente un ou plusieurs paramètres de sécurité qui modifient par exemple le comportement du processeur générique 116. Par exemple, ces paramètres de sécurité définissent des règles d’accès aux données stockées dans la mémoire non volatile 104, telles que l’autorisation ou l’interdiction de lire et/ou de modifier ces données. Dans un autre exemple, ces paramètres permettent de définir l’une ou plusieurs zones de la mémoire non volatile 104 accessibles juste en lecture, et/ou l’une ou plusieurs zones de la mémoire non volatile 104 accessibles dans un mode sécurisé. Encore dans un autre exemple, ces paramètres permettent d’activer ou de désactiver un ou plusieurs circuits cryptographiques (non illustrés) du circuit intégré 102.
Lorsque le code de vérification calculé diffère du code correcteur d’erreur, cela indique qu’une altération d’au moins un bit de la valeur de donnée a eu lieu. Selon le codage utilisé pour générer le code correcteur d’erreur et la taille de ce code par rapport à la taille de la valeur de donnée, il est également possible d’identifier le nombre de bits erronés jusqu’à une certaine limite, et de corriger un ou plusieurs bits erronés de la valeur de donnée. Dans un exemple de réalisation, il est possible de détecter et corriger un bit erroné dans la valeur de donnée, ou de détecter la présence d’au moins deux bits erronés dans la valeur de donnée sans pouvoir les corriger.
Dans les applications visées par la présente description, lorsqu’au moins deux bits de la valeur de donnée sont déterminés par le circuit de calcul 130 comme étant erronés, il est considéré qu’un évènement suspect, tel qu’une attaque sur la mémoire non volatile 104, a lieu. Dans le cas de détection d’un événement suspect et dans les modes de réalisation décrits, on prévoit le déclenchement de contre-mesures visant à sécuriser le circuit intégré 102. A titre d’exemple, afin de sécuriser le circuit intégré 102, une valeur par défaut est alors stockée dans au moins un des registres 132 en remplacement de la valeur de donnée erronée. La valeur par défaut correspond par exemple à une valeur d’un paramètre de sécurité imposant un mode sécurisé au circuit 102, tel qu’un démarrage sécurisé.
Dans les modes de réalisation décrits, l’interface 106 de la mémoire non volatile 104 est configurée pour transmettre un signal (TAMPER_OUT) au circuit de contrôle 108 en cas de détection d’un événement suspect. Le circuit de contrôle 108 est configuré pour, par exemple, suite à la réception du signal TAMPER_OUT, déclencher d’autres contre-mesures. A titre d’exemple, à chaque réception du signal TAMPER_OUT, le circuit de contrôle 108 commande l’incrémentation du compteur 114 et, dès que le compteur 114 atteint une valeur seuil, le circuit de contrôle 108 est par exemple configuré pour réinitialiser le circuit 102. A titre d’exemple, la valeur seuil vaut entre 3 et 10.
Le circuit de contrôle 108 est en outre configuré pour transmettre un signal d’avertissement (TAMPER_IN) à l’interface 106 de la mémoire non volatile 104 lorsqu’un événement suspect est détecté hors de la mémoire non volatile 104. Suite à la réception du signal TAMPER_IN, l’interface 106 est par exemple configurée pour déclencher des contre-mesures visant à protéger la confidentialité du contenu de la mémoire 104 et en particulier du contenu des zones 122 à 128.
La est un organigramme représentant des opérations d’un procédé de protection du circuit intégré 102 de la selon un exemple de réalisation de la présente description. Les étapes du procédé de la sont implémentées, par exemple, par la mémoire non volatile 104 et l’interface mémoire 106, sous contrôle du processeur générique 116.
Dans une étape 200 (DUMP USER OPTION), une valeur de donnée, par exemple contenue dans la zone 126 de la mémoire non volatile 104 de la , ainsi que le code correcteur d’erreur associé, sont par exemple chargés dans la mémoire tampon 131 du circuit de calcul 130. Par exemple, dans le cas où il y a plusieurs valeurs de données à traiter dans la zone 126, ces valeurs sont par exemple associées à des valeurs d’index ou adresses mémoire correspondantes. La valeur de donnée et le code correcteur d’erreur chargés dans l’étape 200 correspondent par exemple à ceux associés avec une valeur courante de l’index ou de l’adresse mémoire.
Dans une étape 201 (COMPUTE ECC), le circuit de calcul 130 calcule un code de vérification à partir de la valeur de donnée. Le code de vérification est par exemple calculé selon le même algorithme que celui utilisé pour le calcul du code correcteur d’erreur associé à la valeur de donnée et stocké en association de la valeur de donnée. En particulier, avant l’enregistrement de la valeur de donnée dans la zone 126, le code correcteur d’erreur a par exemple été calculé, par le circuit 130 ou par un autre circuit, de sorte que la valeur de donnée et le code correcteur d’erreur associé soient enregistrés au même moment dans la zone 126. Le circuit de calcul 130 est en outre configuré pour comparer le code de vérification avec le code correcteur d’erreur associé à la valeur de donnée.
Dans une étape 202 (DBL_ECC ERROR ?), le circuit de calcul 130 détermine, sur la base de la comparaison entre le code de vérification et le code correcteur d’erreur, si au moins deux bits de la valeur de donnée, chargée dans l’étape 200, sont erronés.
Dans le cas où le circuit de calcul 130 détermine que moins de deux bits de la valeur de donnée sont erronés (branche N), le procédé continue dans une étape 203 (LOAD USER OPTION IN REGISTER) dans laquelle la valeur de donnée est par exemple chargée dans au moins un des registres 132. Dans le cas où un bit de la valeur de donnée est erroné, le circuit de calcul 130 est par exemple configuré pour corriger ce bit avant de charger la valeur de donnée dans l’au moins un des registres 132. Il serait également possible que, au lieu de charger la valeur de donnée dans au moins un des registres 132, la valeur de donnée soit chargée dans au moins un élément de mémorisation du circuit 102, tel que par exemple la mémoire volatile 112 ou un registre distinct des registres 132 (non illustrés en ).
Dans le cas où le circuit de calcul 130 détermine, lors de l’étape 202, qu’une double erreur a eu lieu (branche Y), c’est à dire qu’au moins deux bits de la valeur de donnée sont erronés, le procédé continue dans une étape 204 (SET DBL_ECC_ERR=1). Lors de l’étape 204, une valeur, par exemple la valeur 1, est affectée à une variable DBL_ECC_ERR, qui est par exemple initialement à 0. La variable DBL_ECC_ERR est par exemple stockée dans un des registres 132 et son état indique si une valeur de donnée chargée lors de l’étape 200 a été détectée comme présentant au moins deux bits erronés. A titre d’exemple, lorsque la variable DBL_ECC_ERR a pour état 0, cela indique qu’aucune double erreur n’a été détectée sur les valeurs de donnée préalablement traitées. Lorsque la variable DBL_ECC_ERR a pour état 1, cela indique qu’au moins une des valeurs de donnée, chargées dans une réalisation de l’étape 200, présente une double erreur et, dans ce cas, qu’un évènement suspect a eu lieu. Les valeurs 0 et 1 sont présentées à titre d’exemple et ne sont bien sûr pas limitatives.
Suite à la réalisation de l’étape 203 ou cas échéant de l’étape 204, le procédé continue dans une étape 205 (END ?) dans laquelle, il est déterminé, par exemple par le processeur générique 116, si une autre valeur de donnée stockée dans la zone 126 est à charger, en association d’un code correcteur d’erreur, dans la mémoire tampon 131. S’il est déterminé qu’il reste au moins une valeur de donnée à charger (branche N), le procédé continue dans une étape 206 (INCREMENT USER OPTION INDEX). A titre d’exemple, lors de la réalisation de l’étape 206, l’adresse mémoire de la nouvelle valeur de donnée à charger est déterminée, par exemple par le processeur générique 116, et est transmise à la mémoire non volatile 104. Le procédé reprend ensuite à l’étape 200. La nouvelle valeur de donnée à charger est par exemple déterminée en incrémentant la valeur d’index courante.
Dans le cas où, dans l’étape 205, il est déterminé qu’il n’y a plus de valeur de donnée à charger (branche Y), le procédé continue dans une étape 207 (DBL_ECC_ERR=1 ?) dans laquelle l’état de la variable DBL_ECC_ERR est vérifié, par exemple par le processeur générique 116. Lorsque que l’état de la variable DBL_ECC_ERR indique qu’aucune double erreur n’a été détectée (branche N), par exemple lorsque la variable vaut 0, le procédé se termine sur une étape 208 (END). A titre d’exemple, suite à l’étape 208, les valeurs de données sont utilisées par le circuit intégré 102 dans une séquence de démarrage.
Dans le cas où, lors de la réalisation de l’étape 207, il est déterminé qu’une double erreur a été détecté (branche Y), et par conséquent qu’un événement suspect à eu lieu, le procédé continue dans une étape 209 (COUNTERMEASURES). L’étape 209 consiste en la réalisation d’une ou plusieurs contre-mesures assurant la protection du circuit 102.
Selon un mode de réalisation, une contre-mesure réalisée en cas de détection d’un événement suspect consiste à charger des valeurs par défaut dans au moins un des registres 132 en remplacement des valeurs de données. Les valeurs par défaut correspondent par exemple à des valeurs assurant un démarrage et/ou un fonctionnement sécurisé du circuit 102. A titre d’exemple, les valeurs par défaut permettent de restreindre l’accès à la mémoire non volatile 104.
Selon un mode de réalisation, une autre contre-mesure réalisée en cas de détection d’un événement suspect consiste à remplacer la valeur de la clef de chiffrement HW KEY stockée dans la zone 122, par une valeur factice. La clef de chiffrement HW KEY sera alors inutilisable car sa valeur ne permettra pas d’effectuer le déchiffrage des données concernées.
Selon un mode de réalisation, une autre contre-mesure réalisée en cas de détection d’un événement suspect consiste à bloquer tout accès à la zone 124 stockant les clefs de chiffrement OBK.
Selon un mode de réalisation, une autre contre-mesure réalisée en cas de détection d’un événement suspect consiste à transmettre, par l’intermédiaire de l’interface 106 de la mémoire non volatile 104 et au circuit de contrôle 108 du circuit intégré 102, le signal TAMPER_OUT. A titre d’exemple, le circuit de contrôle 108 est configuré pour commander l’incrémentation du compteur 114 suite à la réception du signal TAMPER_OUT. Le processeur générique 116 est par exemple configuré pour déclencher une réinitialisation du circuit intégré 102 lorsque le compteur atteint une certaine valeur seuil.
Bien que, dans l’exemple des figures 1 et 2, le code de vérification soit calculé dans l’interface 106 de la mémoire volatile 104, dans d’autres mode de réalisation, la valeur de donnée et le code correcteur d’erreur associé sont chargés dans un registre hors de l’interface mémoire 106 et de la mémoire non volatile 104, par exemple dans un registre (non illustré en ) compris dans le processeur 116. Le calcul du code de vérification, ainsi que la comparaison avec le code correcteur d’erreur, sont alors effectués en dehors de la mémoire non volatile 104.
Bien que, dans l’exemple des figures 1 et 2, le code correcteur d’erreur soit utilisé pour détecter des évènements suspects, de façon supplémentaire ou de façon alternative, il serait également possible de détecter des évènements suspects par la mémoire volatile 104 sur la base d’autres moyens. Un exemple, basé sur des signaux de commande SIG, est maintenant décrit en relation avec la .
La est un organigramme représentant des opérations d’un procédé de protection du circuit 102 de la selon un autre exemple de réalisation de la présente description. Les étapes du procédé de la sont implémentées, par exemple, par la mémoire non volatile 104 et l’interface mémoire 106, sous contrôle du processeur générique 116.
Dans une étape 300 (RECEIVE SIGNAL), le circuit 110 envoie un parmi les signaux de commande SIG à l’interface 106 de la mémoire non volatile 104.
A titre d’exemple, le signal de commande transmis permet d’indiquer à la mémoire non volatile 104 si certaines fonctionnalités du circuit intégré 102 sont activées et/ou si certaines ressources du circuit intégré 102 sont accessibles. Dans un autre exemple, le signal de commande SIG transmis indique à la mémoire non volatile 104 quelles zones mémoire la composant, par exemple quelles zones parmi des zones partitionnant la zone 128, doivent être accessibles ou inaccessibles à l’écriture et/ou à la lecture. A titre d’exemple, un signal de commande SIG de ce type est transmis à la mémoire non volatile 104 à chaque étape d’une séquence de démarrage permettant de verrouiller et/ou déverrouiller progressivement la mémoire non volatile 104.
Selon un mode de réalisation de la présente description, les signaux de commande sont encodés sur un nombre de bits, où est un nombre entier par exemple compris entre 4 et 16. En particulier, le nombre permet d’ajouter de la redondance dans l’encodage d’un signal de commande en le codant sur plus de bits que nécessaire. Plus particulièrement, sur les valeurs de signal de commande possibles, seulement un nombre , inférieur ou égal à , de valeurs correspondent à une valeur de signal de commande valide et autorisée. Autrement dit, chaque valeur de signal de commande valide et autorisée diffère de chaque autre valeur de signal de commande valide et autorisée par au moins deux bits. Lorsqu’une valeur de signal de commande valide et autorisée est modifiée par un évènement suspect, les valeurs d’au moins deux bits parmi les bits codant ce signal doivent donc être modifiées afin que la valeur du signal modifiée corresponde à une autre valeur valide et autorisée du signal de commande. A titre d’exemple, les valeurs de signaux de commande valides et autorisées sont mémorisées dans une liste, ou dans une table, stockée par exemple dans la mémoire non volatile 104 ou par une autre mémoire du circuit 102.
Dans une étape 301 (AUTHORIZED SIGNAL VALUE ?), l’interface 106 vérifie si la valeur du signal de commande est valide et autorisée, par exemple en la comparant avec les valeurs mémorisées dans la liste ou dans la table des valeurs de signal valides et autorisées. Dans le cas où la valeur du signal de commande reçue est valide et autorisée (branche Y), le procédé reprend par exemple à l’étape 300 dans laquelle l’interface 106 est en attente de réception d’un nouveau signal de commande. Dans le cas où la valeur du signal de commande reçue par l’interface 106 ne correspond pas à une valeur de signal valide et autorisée (branche N), un événement suspect, altérant la valeur du signal, a eu lieu. Le procédé continue dans une étape 302 (COUNTERMEASURES) consistant en la réalisation d’une ou plusieurs contre-mesures assurant la protection du circuit intégré 102. Les contre-mesures déployées sont par exemple les contre-mesures décrites en relation avec l’étape 209 de la .
La est un organigramme représentant des opérations d’un procédé de protection du circuit 102 selon un autre exemple de réalisation de la présente description. Les étapes du procédé de la sont implémentées, par exemple, par le circuit de contrôle 108 et par la mémoire non volatile 104 et l’interface mémoire 106, sous contrôle du processeur générique 116.
Dans une étape 400 (SUSPICIOUS EVENT DETECTION), un évènement suspect est détecté par un mécanisme de détection à l’extérieur de la mémoire non volatile 104. A titre d’exemple, le circuit de contrôle 108 du circuit intégré 102 est configuré pour détecter la survenue d’un événement suspect, ayant par exemple lieu sur le contenu de la mémoire volatile 102, sur des données en cours de transmission sur le bus 118, etc. Des mécanismes de détection d’évènements suspects sont connus de la personne du métier, et ne seront pas décrits ici en détail.
Suite à la détection d’un événement suspect hors de la mémoire non volatile 104 et de l’interface mémoire 106 lors de l’étape 400, le circuit de contrôle 108 est configuré pour, dans une étape 401 (ASSERT TAMPER_IN SIGNAL), transmettre le signal d’avertissement TAMPER_IN à l’interface 106 de la mémoire non volatile 104. Lors de l’étape 401, le circuit de contrôle 108 est par exemple en outre configuré pour déclencher l’incrémentation du compteur 114.
L’interface 106 déclenche alors, dans une étape 402 (COUNTERMEASURES IN NV MEM) des contre-mesures afin de protéger la mémoire non volatile 104. Les contre-mesures déployées sont par exemple les contre-mesures décrites en relation avec l’étape 209 de la telles que :
- le chargement des valeurs par défaut dans au moins un des registres 132 en remplacement des valeurs de données venant de la zone mémoire 126 ;
- le remplacement de la valeur de la clef de chiffrement HW KEY stockée dans la zone 122, par une valeur factice ; et/ou
- l’interdiction d’accès à la zone 124 stockant les clefs de chiffrement OBK.
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. Par exemple, d’autres contre-mesures que celles décrites peuvent être implémentées.
Enfin, la mise en œuvre 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.

Claims (14)

  1. Procédé comprenant :
    - le chargement, à partir d’une mémoire non volatile (104) d’un circuit (102) vers un circuit de calcul (130), d’un premier paramètre de sécurité du circuit et d’un premier code correcteur d’erreur stocké en association avec le premier paramètre de sécurité ;
    - la vérification, par le circuit de calcul (130), du premier paramètre de sécurité et du premier code correcteur d’erreur afin de déterminer si un ou plusieurs des bits du paramètre de sécurité sont erronés ; et
    - s’il est déterminé que deux bits du paramètre de sécurité sont erronés, le chargement d’une valeur par défaut du premier paramètre dans un registre (132).
  2. Procédé selon la revendication 1, dans lequel la valeur par défaut correspond à une valeur imposant au circuit (102) un état de fonctionnement sécurisé.
  3. Procédé selon la revendication 1 ou 2, comprenant en outre, s’il est déterminé que deux bits du paramètre de sécurité sont erronés, la transmission d’un signal de sortie (TAMPER_OUT) d’une interface (106) de la mémoire non volatile (104) vers un circuit de contrôle (108) du circuit (102), et la réalisation d’une ou plusieurs contre-mesures par le circuit de contrôle.
  4. Procédé selon la revendication 3, dans lequel le circuit de contrôle (108) est configuré pour incrémenter un compteur (114) suite à la réception du signal de sortie (TAMPER_OUT), et pour réinitialiser le circuit (102) lorsqu’une valeur seuil est atteinte par le compteur.
  5. Procédé selon la revendication 3 ou 4, comprenant en outre, s’il est déterminé que deux bits du paramètre de sécurité sont erronés, la réalisation par l’interface (106) de la mémoire (104) d’une ou plusieurs contre-mesures.
  6. Procédé selon la revendication 3 ou 4, comprenant en outre :
    - la réception, par l’interface (106) de la mémoire non volatile (104), d’un premier signal de commande (SIG), le premier signal de commande étant composé de bits, pouvant prendre valeurs différentes, seulement valeurs parmi ces valeurs étant autorisées, chacune de ces valeurs étant différente des autres par au moins deux valeurs de bits, où m est supérieure ou égale à 2 et est inférieure ou égale à ;
    - la comparaison de la valeur du premier signal de commande, par l’interface de la mémoire non volatile, avec chacune des q valeurs autorisées ; et
    - si la valeur du premier signal de commande ne correspond à aucune des q valeurs autorisées, la réalisation d’une ou plusieurs contre-mesures, comprenant par exemple la transmission du signal de sortie (TAMPER_OUT) par l’interface de la mémoire au circuit de contrôle (108) du circuit (102).
  7. Procédé selon la revendication 3 ou 4, comprenant en outre la réception par l’interface (106) de la mémoire non volatile (104), à partir du circuit de contrôle (108) du circuit (102), d’un signal d’entrée d’avertissement (TAMPER_IN) indiquant la détection d’un événement suspect, et la réalisation par l’interface d’une ou plusieurs contre-mesures.
  8. Procédé selon l’une quelconque des revendications 5 à 7, dans lequel l’une ou plusieurs contre-mesures comprennent l’interdiction d’accès à une première zone (124) de la mémoire non volatile (104) suite à la réception du signal d’entrée d’avertissement (TAMPER_IN).
  9. Procédé selon la revendication 8, dans lequel la première zone (124) de la mémoire non volatile contient au moins une clef de chiffrement (OBK).
  10. Procédé selon l’une quelconque des revendications 5 à 9, dans lequel l’une ou plusieurs contre-mesures comprennent le remplacement la valeur d’une clef de chiffrement (HW KEY), stockée dans la mémoire non volatile (104), par une valeur factice.
  11. Procédé selon l’une quelconque des revendications 1 à 10, dans lequel le chargement dans le registre (132) du premier paramètre de sécurité du circuit (102) est effectué avant la fin d’une séquence de démarrage du circuit.
  12. Procédé selon l’une quelconque des revendications 1 à 11, dans lequel la mémoire non volatile (104) est une mémoire de type FLASH.
  13. Circuit (102) comprenant:
    - une mémoire non volatile (104) stockant un premier paramètre de sécurité, et un premier code correcteur d’erreur, stocké en association du premier paramètre dans la mémoire non volatile ; et
    - un circuit de calcul (130) configuré pour :
    vérifier le premier paramètre de sécurité et le premier code correcteur d’erreur afin de déterminer si un ou plusieurs des bits du paramètre de sécurité sont erronés ; et
    s’il est déterminé que deux bits du paramètre de sécurité sont erronés, charger une valeur par défaut du premier paramètre de sécurité dans un registre (132).
  14. Circuit (102) selon la revendication 13, comprenant en outre une interface (106) de la mémoire non volatile (104) configurée pour, lorsqu’il est déterminé que deux bits du paramètre de sécurité sont erronés, transmettre un signal de sortie (TAMPER_OUT) vers un circuit de contrôle (108) du circuit configuré pour réaliser une ou plusieurs contre-mesures.
FR2200857A 2022-01-31 2022-01-31 Mémoire non volatile sécurisée Active FR3132365B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR2200857A FR3132365B1 (fr) 2022-01-31 2022-01-31 Mémoire non volatile sécurisée
US17/810,093 US12008244B2 (en) 2022-01-31 2022-06-30 Secure non-volatile memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2200857 2022-01-31
FR2200857A FR3132365B1 (fr) 2022-01-31 2022-01-31 Mémoire non volatile sécurisée

Publications (2)

Publication Number Publication Date
FR3132365A1 true FR3132365A1 (fr) 2023-08-04
FR3132365B1 FR3132365B1 (fr) 2024-12-06

Family

ID=81851537

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2200857A Active FR3132365B1 (fr) 2022-01-31 2022-01-31 Mémoire non volatile sécurisée

Country Status (2)

Country Link
US (1) US12008244B2 (fr)
FR (1) FR3132365B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250247222A1 (en) * 2024-01-25 2025-07-31 Hewlett Packard Enterprise Development Lp Encryption keys for management controllers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190028282A1 (en) * 2017-07-18 2019-01-24 Square, Inc. Device security with physically unclonable functions
US10733291B1 (en) * 2018-06-11 2020-08-04 Square, Inc. Bi-directional communication protocol based device security

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676814B2 (en) * 2004-03-25 2010-03-09 Globalfoundries Inc. Four layer architecture for network device drivers
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US8655939B2 (en) * 2007-01-05 2014-02-18 Digital Doors, Inc. Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190028282A1 (en) * 2017-07-18 2019-01-24 Square, Inc. Device security with physically unclonable functions
US10733291B1 (en) * 2018-06-11 2020-08-04 Square, Inc. Bi-directional communication protocol based device security

Also Published As

Publication number Publication date
US12008244B2 (en) 2024-06-11
US20230244413A1 (en) 2023-08-03
FR3132365B1 (fr) 2024-12-06

Similar Documents

Publication Publication Date Title
EP1616242B1 (fr) Procede et dispositif pour controler l'acces a un periferique
KR101863143B1 (ko) 메모리 무결성
FR2938358A1 (fr) Interface de memoire securisee
US8769675B2 (en) Clock roll forward detection
EP3740891B1 (fr) Procédé et dispositif de détection de chiffrement, notamment pour anti-virus rançonneur
EP2280364A1 (fr) Détecteur d'injection de fautes dans un circuit intégré
US20080109904A1 (en) Apparatus and method for managing secure data
EP3454216B1 (fr) Procédé pour protéger l'accès non autorisé aux données dans une mémoire
FR2647924A1 (fr) Procede pour verifier l'integrite d'un logiciel ou de donnees, et systeme pour la mise en oeuvre de ce procede
RU2568298C2 (ru) Способ обнаружения попытки атаки, носитель записи и процессор безопасности для этого способа
US6928548B1 (en) System and method for verifying the integrity of stored information within an electronic device
US8639946B2 (en) System and method of using a protected non-volatile memory
EP4068134B1 (fr) Débogage sécurisé
US20120030543A1 (en) Protection of application in memory
EP1724700A1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
US20100194609A1 (en) Method and Device For Coding Data Words
JP5060372B2 (ja) データ処理装置
EP1983436A1 (fr) Contrôle d'intégrité d'une mémoire externe à un processeur
EP2336931B1 (fr) Procédé de vérification de signature
FR3069993A1 (fr) Dispositifs et procedes de masquage d'operations de chiffrement rsa
WO2001082525A1 (fr) Procede de calcul d'une donnee de controle de cle cryptographique
FR2879320A1 (fr) Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises
FR3087022A1 (fr) Systèmes et procédés cryptographiques résistant à des attaques par défaut
KR100782614B1 (ko) 데이터 워드 처리 장치 및 방법, 암호화 데이터 워드 처리장치 및 방법, 데이터세트의 안전 처리 시스템 및 컴퓨터프로그램을 구비한 컴퓨터 판독가능한 기억 매체
EP2652664A1 (fr) Procede dynamique de controle de l'integrite de l'execution d'un code executable

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20230804

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5