Choisir l'architecture mémoire appropriée pour la sécurité des micrologiciels
Malgré le nombre croissant de cyberincidents sur les dispositifs IoT connectés, la sécurité des micrologiciels a toujours été négligée. Alors que les pirates infiltrent la pile système, en ciblant le processus de démarrage et les configurations matérielles de bas niveau, le choix de l'architecture mémoire est devenu crucial pour établir une chaîne de confiance vérifiable.
Par conséquent, la sécurisation du micrologiciel exige la vérification cryptographique de chaque composant avant son exécution. Le processus commence avec un chargeur d'amorçage immuable qui charge et vérifie le micrologiciel principal. Cependant, les technologies de mémoire utilisées à chaque étape déterminent la vulnérabilité du micrologiciel aux modifications non autorisées.
Flash interne ou externe
L'emplacement physique de la mémoire non volatile utilisée pour stocker les micrologiciels est l'un des facteurs les plus critiques dans le modèle de menace d'un dispositif. Les ingénieurs en micrologiciels doivent choisir entre une mémoire Flash embarquée sur puce (eFlash) et un module Flash externe connecté via une interface série telle que SPI ou QSPI.
La mémoire Flash embarquée est généralement intégrée directement dans le microcontrôleur ou la puce du SoC. Cette architecture offre le plus haut niveau de sécurité physique, car il n'y a pas de bus externe qu'un pirate peut manipuler. Même l'accès à la mémoire Flash interne est contrôlé par des bits de verrouillage et des registres dédiés.
En outre, l'eFlash prend en charge la protection de lecture permanente. En court-circuitant un fusible de sécurité dédié, le développeur peut désactiver les interfaces de débogage JTAG ou SWD, empêchant ainsi le pirate de modifier l'image du micrologiciel. Cependant, cette technologie fait face à d'importants problèmes de mise à l'échelle à mesure que les SoC évoluent vers des nœuds plus petits.
À l'inverse, une mémoire Flash externe est placée en dehors du processeur hôte et communique via une interface série haut débit. Ce choix architectural facilite l'évolution de la capacité de stockage, mais étend également la surface d'attaque du système. Toute donnée circulant entre le processeur et la mémoire Flash externe est intrinsèquement vulnérable à l'espionnage, aux attaques de l'homme du milieu (MITM) et aux manipulations physiques.
Pour faire face à ces risques, les ingénieurs en micrologiciels doivent mettre en place des protections matérielles et logicielles robustes. De nombreux dispositifs Flash NOR externes sont dotés d'une broche physique de protection en écriture. Lorsque la broche est maintenue à une tension spécifique, la logique interne de la puce empêche l'exécution des commandes d'effacement ou d'écriture.
Figure 1 : Mémoire Flash NOR série sécurisée W77Q32JWSSIR TR de Winbond Electronics avec cryptage sophistiqué du canal de communication. (Source de l'image : Winbond Electronics)
Toutefois, le simple verrouillage de la mémoire Flash est insuffisant si les données peuvent être lues. Les pirates peuvent toujours accéder au bus d'adresses et de données pendant l'exécution. Cette vulnérabilité a conduit au développement de dispositifs Flash sécurisés spécialisés qui incluent des mécanismes matériels de racine de confiance (Root of Trust), des canaux de communication cryptés et des compteurs monotones pour empêcher les attaques par restauration de système.
Néanmoins, un mauvais choix d'architecture de mémoire peut engendrer une faiblesse fondamentale qu'aucune mise à jour logicielle ne peut corriger entièrement. Par exemple, une conception qui stocke le micrologiciel sur une EEPROM externe sans cryptage ni authentification sera toujours vulnérable aux attaques matérielles. À l'inverse, le choix d'une mémoire trop restrictive peut nuire aux fonctionnalités.
Il est donc essentiel que les ingénieurs maîtrisent les meilleures pratiques et les conseils de conception pour maximiser la sécurité des micrologiciels grâce à l'architecture de mémoire.
Meilleures pratiques pour la conception d'un stockage sécurisé des micrologiciels
Les ingénieurs en micrologiciels doivent suivre ces principes lorsqu'ils développent un processus de stockage sécurisé pour les micrologiciels, de la mise sous tension à l'exécution :
1. Racine de confiance basée sur le matériel
L'exécution doit toujours démarrer à partir d'une région de mémoire immuable. Par exemple, une ROM d'amorçage ou un secteur Flash sécurisé en permanence doit contenir le code qui vérifie tous les autres micrologiciels. Cela garantit qu'un pirate ne peut pas contourner la vérification en altérant le code initial.
2. Utiliser des signatures cryptographiques
Implémentez un chargeur d'amorçage sécurisé qui n'exécute que des images de micrologiciels signées avec une clé privée de confiance. Cela permet de se prémunir contre tout code non autorisé, même si un pirate peut accéder à la mémoire et modifier des bits. Si la confidentialité est importante, chiffrez le micrologiciel dans le stockage.
3. Exploiter les fonctions de sécurité du matériel
Si l'architecture du système utilise une mémoire externe, les ingénieurs doivent choisir des dispositifs qui prennent en charge la sécurité matérielle, comme une protection par mot de passe intégrée ou un simple cryptage. Même si ces solutions ne sont pas aussi robustes qu'un élément sécurisé complet, elles ajoutent une couche de protection supplémentaire.
Figure 2 : Mémoire Flash NOR série 32 Mb MX25L3233FM2I-08Q de Macronix avec prise en charge d'interface périphérique série. (Source de l'image : Macronix)
4. Isoler les micrologiciels et les données
Organisez les régions de la mémoire de manière à séparer le code le plus sensible. Dans les microcontrôleurs, placez les instructions de routine critiques dans des sections de mémoire sécurisées. Même avec des micrologiciels, si le matériel le permet, marquez certains blocs de mémoire Flash en exécution seule ou en lecture seule.
5. Planifier les mises à jour de sécurité des micrologiciels
Veillez à ce que le processus de mise à jour lui-même soit authentifié (par exemple, exigez des packs de mise à jour signés). Si la conception utilise une mémoire externe pour le stockage temporaire des mises à jour, traitez-la avec la même sécurité que le stockage principal du micrologiciel.
Conclusion
Choisir la mémoire appropriée pour les micrologiciels peut déterminer le succès ou l'échec de la sécurité d'un dispositif IoT embarqué. Le choix d'une mémoire non sécurisée, telle qu'un stockage externe sans protection, ouvre la porte aux attaques. À l'inverse, une architecture sélectionnée avec soin, combinant mémoire intégrée, stockage externe sécurisé et contrôles cryptographiques, offre une base solide pour se défendre contre les attaques sophistiquées.
Pour les ingénieurs en micrologiciels, les principaux conseils sont les suivants : maintenir la racine de confiance dans une mémoire inviolable, considérer la mémoire hors puce comme non fiable et compenser en conséquence, et utiliser l'ensemble des fonctionnalités de sécurité matérielle fournies par les technologies de mémoire modernes. En alignant les technologies de mémoire sur les exigences de sécurité du dispositif, nous pouvons protéger même le plus petit capteur IoT contre les attaques au niveau du micrologiciel.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum

