Trois fonctionnalités essentielles pour tous les microcontrôleurs sécurisés

Pendant des années, les développeurs de systèmes embarqués ont eu le luxe de pouvoir ignorer la sécurité. Les systèmes embarqués étaient en effet des systèmes indépendants déconnectés, uniquement exposés à des altérations physiques. L'Internet des objets (IoT) a définitivement mis un terme à ce luxe. La sécurité est désormais en première ligne des préoccupations pour presque tous les dispositifs connectés. Pour garantir une sécurité adéquate de leurs dispositifs, les développeurs doivent être attentifs à trois fonctionnalités clés liées au microcontrôleur (MCU) : l'isolement basé sur le matériel, les unités de protection de mémoire (MPU) et les accélérateurs cryptographiques. Explorons ces trois fonctionnalités essentielles.

Fonctionnalité de microcontrôleur sécurisé n°1 : environnement de traitement sécurisé

L'un des concepts clés pour sécuriser un système embarqué consiste à le concevoir avec un isolement. L'isolement agit comme une barrière autour de la mémoire, des composants et des fonctions qui opèrent ensemble pour atteindre un objectif commun. Si un intrus parvient à exploiter une région du système, l'isolement protège la deuxième région afin que cet intrus ne puisse pas y accéder immédiatement.

Un système embarqué est souvent isolé en deux régions principales : un environnement de traitement non sécurisé (NSPE) et un environnement de traitement sécurisé (SPE). Le meilleur moyen d'avoir ces deux environnements d'exécution consiste à utiliser un isolement basé sur le matériel. Pour ce faire, il existe deux méthodes : utiliser un microcontrôleur multicœur ou un microcontrôleur monocœur avec la technologie TrustZone d'Arm.

Dans la solution multicœur, un processeur est dédié au SPE, tandis que l'autre sert de processeur riche en fonctionnalités pour le NSPE. Les deux cœurs sont isolés physiquement l'un de l'autre et ne communiquent que par le biais de la RAM partagée et de la communication interprocessus (IPC). Si le NSPE est piraté, l'ensemble des données, de la mémoire et des fonctions isolées dans le cœur de sécurité restent isolées et protégées. L'intrus doit alors trouver un moyen de pirater le cœur de sécurité. Le PSoC 64 d'Infineon Technologies est un exemple de microcontrôleur qui utilise l'approche multicœur.

Le PSoC 64 est doté d'un processeur Arm Cortex-M4 pour le NSPE riche en applications et d'un cœur de sécurité Arm Cortex-M0+ pour le SPE. Les deux cœurs peuvent communiquer via IPC. Le Pioneer Kit PSoC 64 compatible Wi-Fi et Bluetooth CY8CKIT-064S0S2-4343W (Figure 1) est une carte de développement intéressante pour commencer à tester la solution de sécurité multicœur.

Figure 1 : Le Pioneer Kit CY8CKIT-064S0S2-4343W offre une plateforme de développement sécurisée qui permet aux développeurs de travailler avec des solutions de sécurité multicœurs. (Source de l'image : Infineon Technologies)

La solution TrustZone est différente du modèle d'isolement multicœur au sens où elle n'utilise qu'un seul cœur de traitement. Néanmoins, le traitement est toujours divisé entre un NSPE et un SPE. Lorsqu'une fonction sécurisée doit être exécutée, le processeur passe du NSPE au SPE de manière déterministe, ce qui nécessite typiquement trois cycles d'horloge ou moins. Le STM32L562CET6 de STMicroelectronics est un exemple de microcontrôleur avec technologie TrustZone.

L'isolement basé sur le matériel est la première fonctionnalité à laquelle les développeurs doivent être attentifs dans leurs microcontrôleurs sécurisés. Les unités de protection de mémoire constituent la fonctionnalité suivante.

Fonctionnalité de microcontrôleur sécurisé n°2 : unités de protection de mémoire

Une unité de protection de mémoire (MPU) est un périphérique matériel conçu pour protéger la mémoire. Les développeurs de systèmes embarqués ont besoin d'une unité MPU, car elle leur permet de créer des régions d'isolement matériel au sein de leur code d'application. Par exemple, un développeur peut utiliser un SPE, mais il peut aller plus loin en divisant ce SPE en régions isolées grâce à une unité MPU. Si un intrus parvient à accéder au SPE, il doit ensuite trouver un moyen d'accéder à chacune des régions de mémoire isolées protégées par l'unité MPU.

L'unité MPU peut être vue comme une unité de gestion de la mémoire (MMU) réduite qui fournit aux développeurs une méthode leur permettant de diviser leur logiciel en processus isolés. L'unité MPU peut être utilisée sur n'importe quel emplacement mémoire, y compris Flash, RAM et périphériques. L'unité MPU est utilisée pour définir des autorisations d'exécution et d'accès. Là encore, si un intrus parvient à accéder à un processus, ce à quoi il aura accès sera limité en fonction des paramètres de l'unité MPU. S'il tente d'accéder à une région de mémoire en dehors des paramètres de l'unité MPU, cette dernière générera une erreur. Le système peut alors essayer de se rétablir ou se réinitialiser. Les unités MPU constituent une fonctionnalité essentielle dont les développeurs ont besoin pour protéger leurs systèmes.

Fonctionnalité de microcontrôleur sécurisé n°3 : accélérateurs cryptographiques

L'accélérateur cryptographique constitue la troisième fonctionnalité dont les développeurs ont besoin dans un microcontrôleur sécurisé. Un accélérateur cryptographique sert à accélérer les calculs complexes qui nécessiteraient autrement une durée de traitement relativement longue de la part du processeur. Le processeur peut transférer cette tâche à l'accélérateur, ce qui lui permet de gérer un autre problème en parallèle. Les opérations cryptographiques prennent ainsi moins de temps et permettent d'économiser des cycles de processeur, voire potentiellement de l'énergie dans les dispositifs alimentés par batterie.

Il existe plusieurs opérations pour lesquelles les développeurs peuvent utiliser un accélérateur cryptographique. Tout d'abord, ils peuvent l'utiliser pour crypter les communications ou les données. La norme AES-256 est un schéma de cryptage couramment utilisé, mais d'autres schémas peuvent être pris en charge selon le microcontrôleur. Une autre application consiste à calculer le hachage d'un jeu de données. Cela peut être utile lors de la vérification de l'intégrité du code d'application ou de certaines données.

On peut facilement négliger les accélérateurs cryptographiques, mais tout microcontrôleur sécurisé performant en est équipé. L'astuce pour les développeurs consiste à étudier ce que l'accélérateur prend en charge et de s'assurer qu'il présente les capacités nécessaires pour le cycle de vie attendu de l'application.

Conclusion

La sécurité n'est pas quelque chose que les développeurs peuvent tout simplement ajouter à leur système à la fin du cycle de développement. Il convient d'y prêter attention dès le départ afin de bien comprendre les menaces qui planent sur le système et de choisir un microcontrôleur contenant toutes les capacités matérielles nécessaires pour le protéger.

À propos de l'auteur

Image of Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum