Utiliser une mémoire EEPROM cryptée externe pour sécuriser les données des systèmes embarqués

Par Bill Giovino

Avec la contribution de Rédacteurs nord-américains de DigiKey

Certains microcontrôleurs sont dotés d'une mémoire EEPROM intégrée. Elle fournit une mémoire de données non volatile tout en économisant de l'espace carte. Cependant, face à l'importance croissante de la sécurité des données, de nombreux systèmes embarqués modernes nécessitent une solution pratique et sécurisée de stockage de données utilisant une mémoire non volatile capable de résister aux pirates informatiques venus de l'extérieur.

Cet article décrit la manière dont les EEPROM sécurisées monopuces fournissent un stockage sécurisé de données non volatiles résistant aux pirates informatiques, sans pour autant entrer dans les détails du cryptage. Il présente simplement un exemple adapté d'EEPROM sécurisée proposée par un fournisseur bien connu, décrit son fonctionnement et son mode d'application.

La nécessité d'avoir une EEPROM sécurisée

De nombreux systèmes embarqués exploitent une mémoire de données non volatile. Il s'agit généralement d'une EEPROM. L'EEPROM peut être lue et écrite avec une commande micrologicielle, et conserve son état en cas de mise hors tension du système, contrairement à une RAM qui perd son état en cas d'arrêt.

Si l'EEPROM des microcontrôleurs permet de stocker les données de programmes à conserver en cas d'arrêt, elle présente souvent les mêmes failles de sécurité qu'une RAM. Dans certains microcontrôleurs 8 bits, 16 bits et 32 bits modernes, des méthodes de sécurité peuvent empêcher la lecture d'une certaine zone de mémoire de données par une commande micrologicielle ou bloquer la lecture des données par une interface externe comme un débogueur. Auparavant, cette mesure de sécurité pouvait être considérée comme adéquate, mais aujourd'hui, certains pirates peuvent avoir les moyens, le temps, la motivation et les ressources nécessaires pour la contourner afin d'accéder aux systèmes critiques.

Les systèmes embarqués modernes ont évolué et de nombreuses applications nécessitent désormais une protection des données plus fiable. C'est particulièrement le cas dans certains nœuds IoT, systèmes de sécurité, systèmes de communications véhicule à véhicule, appareils médicaux modernes et véhicules autonomes. La sécurité des données peut également être nécessaire pour tout simplement empêcher le clonage du système. Il s'agit d'applications où les données EEPROM compromises par une attaque réussie de pirates malveillants peuvent causer des dommages matériels voire pire.

Dans ces situations, l'EEPROM doit être très résistante face aux pirates qui disposent de ressources considérables. Pour de tels cas, il existe une EEPROM haute sécurité qui peut facilement crypter les données sensibles telles que les mots de passe, les hachages de clonage, les données d'empreintes digitales, les informations d'étalonnage des capteurs et les données biométriques.

Microchip Technology a résolu ce problème de conception avec la ligne de dispositifs CryptoAuthentication™. Si ce nom semble familier, c'est parce que Microchip a hérité de cette ligne suite à l'acquisition d'Atmel. L'EEPROM 32 Ko sécurisée ATAES132A (Figure 1) constitue un bon exemple de dispositif de cette ligne de produits.

Image de l'EEPROM série 32 Ko ATAES132A d'Atmel

Figure 1 : L'EEPROM série 32 Ko ATAES132A est spécialement conçue avec des fonctionnalités de sécurité pour protéger les données et les registres internes. (Source de l'image : DigiKey Electronics)

L'ATAES132A peut être utilisée comme n'importe quelle EEPROM série 32 Ko standard. Elle utilise un brochage SPI et I2C standard, et peut donc remplacer les EEPROM série standard des conceptions existantes, sans aucune modification matérielle. Cela permet la mise à niveau simplifiée des conceptions existantes avec une sécurité renforcée par une simple modification du micrologiciel de l'application.

Cela dit, le dispositif offre aussi une protection physique considérable, une fonctionnalité de cryptage et d'autres fonctionnalités de sécurité intégrées qui permettent de protéger les données EEPROM et les registres internes contre presque tous les pirates les plus déterminés. Les données peuvent être protégées en utilisant un cryptage AES de grade militaire avec jusqu'à 16 clés de 128 bits.

Protection physique

D'abord, l'ATAES132A présente de nombreux mécanismes de sécurité mécaniques pour empêcher la rétroconception physique du dispositif. Le dispositif est sensible à certains changements de température ambiante, comme les tentatives de « congélation » du dispositif pour conserver le contenu de la mémoire. Le dispositif peut détecter les tentatives de découvrement visant à exposer la puce. Si la protection métallique recouvrant la puce est enlevée, cette dernière détecte l'exposition à la lumière, ce qui peut entraîner un mécanisme de destruction du contenu de la mémoire.

Enfin, le contenu de la mémoire interne est crypté. Le dispositif peut également inclure des mécanismes de sécurité secrets et connus uniquement des ingénieurs de Microchip. En effet, l'entreprise tient à la confidentialité des spécificités de ces mécanismes de sécurité. Cela fournit une sécurité physique étendue à la mémoire sécurisée, évitant ainsi au développeur d'avoir à concevoir des logements compliqués pour servir de barrière pour l'EEPROM.

Au démarrage, la mémoire ATAES132A peut être configurée pour interfacer avec la plupart des microcontrôleurs via une interface SPI ou I2C. Dans le cas d'un mode I2C, la broche de sélection de puce n'est pas utilisée et doit être reliée à l'alimentation ou à la masse. Dans une configuration en mode SPI, la broche de sélection de puce est utilisée normalement.

Cryptage des données AES

La cryptographie est implémentée sur l'ATAES132A à l'aide du protocole AES-CCM avec une clé de 128 bits. Autrement dit, les données à crypter sont retranscrites sous forme de fonctions mathématiques complexes combinées à un nombre 128 bits programmé par le développeur du micrologiciel. Les opérations mathématiques complexes effectuées pendant le cryptage et le décryptage AES sont réalisées par l'ATAES132A, et à l'exception de la configuration de certaines variables et de la sélection des clés 128 bits, ce processus est transparent pour le développeur du micrologiciel, ce qui simplifie considérablement le développement du produit.

Image mémoire de l'ATAES132A

Le dispositif peut être simplement utilisé comme une EEPROM série non cryptée standard. Cependant, si le développeur utilise les fonctionnalités de sécurité avancées, alors le dispositif est structuré et utilisé de manière très différente. Pour comprendre rapidement l'ATAES132A, il convient d'examiner son image mémoire, qui est plus complexe que celle d'une EEPROM standard, comme indiqué dans le Tableau 1.

Plage d'adresses de l'ATAES132A Description
0000h-0FFFh Mémoire EEPROM (données) utilisateur 32 Ko
1000h-EFFFh Réservée
F000h-F05Fh Registres de configuration du dispositif
F060h-F07Fh Registres de configuration de compteurs
F080h-F0BFh Registres de configuration de clés
F0C0h-F0FFh Registres de configuration de sécurité des zones
F100h-F17Fh Registres de compteurs de zones
F180h-F1DFh Mémoire non cryptée FreeSpace 96 octets
F1E0h-F1FFh Mémoire non cryptée SmallZone 32 octets
F200h-F2FFh Stockage de clés
F300h-FDFFh Réservée
FE00h Tampon mémoire pour les commandes et les réponses
FE01h-FFDFh Réservée
FFE0h Registre de réinitialisation d'adresse E/S (écriture seule)
FFE1h-FFEFh Réservée
FFF0h Registre d'état (lecture seule)
FFF1h-FFFFh Réservée

Tableau 1 : L'image mémoire de l'ATAES132A est plus complexe que celle d'une EEPROM série standard. (Source des données : Microchip Technology)

La plupart des emplacements de l'image mémoire sont lus ou écrits à l'aide de commandes I2C ou SPI standard.

EEPROM et registres de configuration de sécurité des zones

Les 32 Ko de la mémoire EEPROM de données sont divisés en 16 zones de 2 Ko. Chaque zone de mémoire peut être configurée séparément, avec ou sans sécurité. Les paramètres de sécurité de chacune des 16 zones de mémoire sont définis dans les registres de configuration de sécurité des zones. Voici les paramètres de sécurité de base pouvant être configurés individuellement pour chacune des 16 zones de 2 Ko :

  • Activer/désactiver le cryptage pour lire les données
  • Activer/désactiver le cryptage pour écrire des données
  • Activer/désactiver l'authentification pour lire les données
  • Activer/désactiver l'authentification pour écrire des données
  • Paramétrer définitivement une zone en lecture seule

Ces paramètres permettent une meilleure flexibilité de configuration de la sécurité d'une application. Une zone peut être configurée sans cryptage, sans authentification avec un accès lecture/écriture pour permettre les lectures et les écritures comme n'importe quelle EEPROM standard. Une autre zone peut nécessiter des fonctions complètes de cryptage et d'autorisation pour fournir une sécurité élevée pour les données sensibles.

Registres de configuration du dispositif

Le comportement général du dispositif est configuré dans les registres de configuration du dispositif. Cette zone contient également certaines informations en lecture seule sur le dispositif. Cela inclut un numéro de série de dispositif 32 bits unique servant à identifier le dispositif. D'autres registres permettent de paramétrer les zones de mémoire ou d'autres registres en lecture seule. Il s'agit du verrouillage de mémoire. Le verrouillage d'un registre ou d'une zone de mémoire est un processus définitif et irréversible.

En outre, cette zone inclut le registre I2CAddr qui sert à configurer le dispositif en mode I2C ou SPI. Au démarrage du dispositif, l'écriture du registre I2CAddr de 1 octet est effectuée. Le bit 0 de l'I2CAddr détermine le mode d'interface série. Si le micrologiciel écrit un 0, le dispositif est configuré en mode SPI. S'il écrit un 1, le mode I2C est sélectionné. Si le mode I2C est sélectionné, l'adresse du dispositif 7 bits est 50h.

Tampons mémoire pour les commandes et les réponses

Si les emplacements mémoire du dispositif sont accessibles grâce à un adressage standard SPI ou I2C, le dispositif accepte également les commandes similaires à celles d'un microcontrôleur. Une commande et ses opérandes (bloc de commandes) peuvent représenter un ou plusieurs octets, et sont toujours écrits directement dans le tampon mémoire pour les commandes et les réponses, à l'adresse FE00h. Un bloc de commandes se compose d'une instruction à un octet, d'un ou de plusieurs octets d'opérandes et d'une somme de contrôle à 2 octets.

Les commandes disponibles incluent l'authentification des données, les lectures de blocs à partir des zones EEPROM, l'incrémentation des compteurs et la lecture directe de la mémoire protégée ou du registre nécessitant une authentification. Les réponses aux commandes sont lues à partir du même emplacement FE00h. Toutes les écritures sur FE00h sont des commandes transmises au tampon mémoire pour les commandes. Toutes les lectures depuis FE00h sont des lectures à partir du tampon mémoire pour les réponses.

Le registre de réinitialisation d'adresses E/S sur FFE0h est un registre en lecture seule utilisé pour réinitialiser les tampons mémoire pour les commandes et les réponses. L'écriture d'une valeur dans FFE0h permet d'exécuter deux opérations : l'effacement du tampon mémoire pour les commandes pour qu'il puisse accepter un nouveau bloc de commandes, et la réinitialisation du tampon mémoire pour les réponses pour pouvoir lire le contenu à partir du début.

La réinitialisation du tampon mémoire pour les réponses permet au micrologiciel de relire la réponse complète. Cela peut s'avérer utile dans le code où une interruption peut s'être produite alors que le microcontrôleur hôte était en cours de lecture du tampon mémoire pour les réponses : à la reprise après interruption, les données doivent être relues à partir du début.

Il y a également des commandes pour exécuter le cryptage et le décryptage AES des lectures et écritures sur l'EEPROM. Ces calculs sont très complexes et ne seront pas abordés ici. Cependant, Microchip fournit des micrologiciels et des pilotes de microcontrôleur qui permettent d'exécuter facilement toutes ces fonctions sans exiger du programmeur des connaissances approfondies concernant le cryptage AES.

Registres de compteurs de zones

Cette zone de registre contient 16 compteurs en lecture seule associés à chaque zone. Chaque zone de mémoire est cryptée ou décryptée à l'aide de sa clé de zone de 128 bits. À chaque utilisation d'une clé de zone, un compteur de zone de 32 bits associé peut être incrémenté (ou pas) en fonction du paramétrage des registres de configuration de compteurs de zones associés. Pour des raisons de sécurité, les compteurs ne doivent jamais être décrémentés ou réinitialisés.

Le micrologiciel peut écrire directement sur un compteur de zones pour l'incrémenter à une valeur initiale, mais jamais à une valeur inférieure à celle du contenu du compteur existant. Les compteurs de zones peuvent être écrits ou verrouillés lors de la fabrication pour limiter le nombre de comptages. Lorsque le compteur atteint la valeur maximum de 2 097 151, la clé associée peut être définitivement désactivée pour empêcher son utilisation dans d'autres opérations de cryptage ou de décryptage. Cela peut s'avérer utile pour les clés à usage limité, par exemple pour permettre au micrologiciel du microcontrôleur d'être flashé un nombre limité de fois.

Pour plus de sécurité, chaque compteur de zones 32 bits est dupliqué. Cela permet de détecter la corruption des compteurs de zones en cas de panne d'alimentation pendant l'incrémentation d'un compteur de zones. Au démarrage de l'application, le micrologiciel doit lire les deux valeurs de compteur pour tous les compteurs de zones. Si les valeurs sont différentes dans une application robuste, cela prouve qu'il y a eu un événement d'arrêt non autorisé, ce qui peut indiquer une tentative non autorisée de désactivation de la sécurité de l'application durant son fonctionnement.

Registre d'état

Le registre d'état de l'ATAES132A est un registre en lecture seule qui indique les codes d'erreur, notamment les sommes de contrôle incorrectes et les erreurs de commande. Il indique également si l'ATAES132A est en mode I2C ou SPI, ainsi que la progression des commandes et la validité des réponses. Il doit être lu avant et après toutes les lectures, écritures, commandes et réponses. Les erreurs peuvent indiquer des tentatives extérieures visant à interférer avec la connexion I2C ou SPI entre le microcontrôleur hôte et l'ATAES132A. C'est au micrologiciel hôte de prendre les mesures appropriées, comme alerter un opérateur ou activer une alarme.

Configuration de l'ATAES132A lors de la fabrication

La sécurité du dispositif ATAES132A doit être configurée pendant la fabrication du produit final. Pour limiter le risque d'erreurs de configuration, l'ATAES132A doit être configurée in situ. Au départ, toutes les valeurs initiales des compteurs et configurations de compteurs doivent être paramétrées. Puis, les paramètres de cryptage et de clés doivent être programmés. Enfin, toutes les valeurs initiales de l'EEPROM doivent être programmées. Le numéro de série de dispositif 32 bits unique peut être lu à partir de l'ATAES132A et peut être intégré dans le micrologiciel du microcontrôleur hôte.

Une lecture de toutes les valeurs EEPROM programmées est recommandée pour garantir une configuration adaptée de l'ATAES132A. Si cette lecture n'est pas effectuée correctement ou s'il y a une erreur de commande ou de somme de contrôle dans le registre d'état, le produit final doit être signalé et retiré de la production. Autre option, s'il y a assez d'EEPROM libre, un test de cryptage et de décryptage peut être exécuté.

Développement de l'ATAES132A

Pour faciliter le développement, Microchip fournit le kit de démarrage DM320109 Xplained-Pro CryptoAuthentication (Figure 2). L'ATAES132A interface avec un microcontrôleur Arm® Cortex®-M0+ ATSAMD21J18A de Microchip.

Image du kit de démarrage et de développement DM320109 Xplained CryptoAuthentication de Microchip

Figure 2 : Le kit de démarrage et de développement DM320109 Xplained CryptoAuthentication de Microchip fournit une solution simple pour évaluer et développer le code de l'ATAES132A. Il est fourni avec des exemples de code complets et interface avec la plupart des PC prenant en charge Windows, Linus ou MacOS. (Source de l'image : Microchip Technology)

Le microcontrôleur ATSAMD21J18A de Microchip est doté d'une interface USB pour la connexion à un environnement de développement PC. Il prend en charge les interfaces I2C et SPI, qui peuvent toutes les deux être utilisées pour interfacer avec l'ATAES132A. Une fois connecté au PC cible à l'aide du câble USB fourni, le kit peut être utilisé pour configurer et surveiller toutes les fonctionnalités de l'ATAES132A.

Un second câble USB est fourni pour surveiller et enregistrer les paquets de données entre l'ATAES132A et l'ATSAMD21J18A. Ce câble se branche entre la carte Xplained et un port USB disponible du PC. Le développeur peut alors surveiller les signaux entre le microcontrôleur et l'EEPROM pour étudier les données chiffrées transférées entre les deux dispositifs.

Le kit Xplained est fourni avec toutes les bibliothèques micrologicielles et tous les codes d'exemple pour l'ATAES132A. Grâce à une bonne compréhension de l'image mémoire de l'ATAES132A et des registres décrits ici, le développeur peut facilement personnaliser le code d'exemple selon son application cible, et ce en n'ayant que des connaissances de base en matière de cryptage du dispositif.

Conclusion

Le cryptage AES 128 bits est un sujet complexe. Malgré cela, les développeurs peuvent protéger les données sensibles dans une EEPROM spécialement conçue à cet effet. Il convient d'avoir des protections mécaniques, un cryptage fiable, un zonage et un mappage de mémoire spécialisés, et des fonctionnalités personnalisées ou confidentielles connues uniquement de l'entreprise et/ou de l'utilisateur final.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Bill Giovino

Bill Giovino

Bill Giovino est un ingénieur en électronique titulaire d'un BSEE de l'Université de Syracuse, et l'une des rares personnes à avoir réussi à passer de l'ingénierie de conception à l'ingénierie des applications sur le terrain et au marketing technologique.

Depuis plus de 25 ans, Bill œuvre à la promotion des nouvelles technologies devant un public technique et non technique pour de nombreuses entreprises, notamment STMicroelectronics, Intel et Maxim Integrated. Chez STMicroelectronics, Bill a contribué aux premiers succès de l'entreprise dans l'industrie des microcontrôleurs. Chez Infineon, Bill a orchestré les premiers succès de l'entreprise en matière de conception de microcontrôleurs dans l'industrie automobile américaine. En tant que consultant marketing pour son entreprise CPU Technologies, Bill a aidé de nombreuses entreprises à transformer des produits sous-performants en réussites.

Bill a été l'un des premiers à adopter l'Internet des objets, notamment en mettant la première pile TCP/IP complète sur un microcontrôleur. Bill pense que les ventes passent par l'éducation et accorde une importance croissante à une communication claire et bien écrite pour la promotion des produits en ligne. Il est modérateur du groupe populaire LinkedIn Semiconductor Sales & Marketing et parle couramment le B2E.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey