Table des matières

Article rédigé par : Mohamed BELOUARGA et Fabien Lahoudere

Le monde est de plus en plus connecté et des millions d'appareils sont développés pour être connectés soit à des serveurs, soit entre eux. Cette hyperconnectivité comporte de nombreuses menaces et les systèmes embarqués basés sur Linux n'en sont pas exempts.

Dans cet article, nous aborderons une technique qui renforce la sécurité des périphériques Linux intégrés, mais le lecteur doit être conscient que cette méthode ne protège pas les périphériques Linux intégrés de toutes les menaces.

Le lecteur doit savoir que l'auteur est un ingénieur Linux embarqué et non un expert en cybersécurité.

Qu'est-ce qu'un démarrage sécurisé ?

Le démarrage sécurisé consiste à implémenter une chaîne de confiance entre les différents composants logiciels d'un périphérique Linux intégré. Cette chaîne de confiance est mise en œuvre pour empêcher les appareils d'exécuter des logiciels corrompus ou des logiciels qui ne proviennent pas du fabricant de l'appareil.


Cette chaîne de confiance est en fait un processus de vérification à plusieurs niveaux qui permettra d'identifier l'origine de ces composants logiciels

Secure boot process of linux embedded systems softwares and devices

Tout d'abord, le Code ROM vérifie que le chargeur de démarrage provient du fabricant, puis chargeur de démarrage vérifie que Linux noyau provient également du fabricant avant de le lancer et enfin le noyau vérifie que le TOITS (l'application) provient du fabricant.

Nous verrons ci-dessous comment fonctionne cette chaîne de confiance, ou ce que nous appelons démarrage sécurisé-, et comment le mettre en œuvre.

Comment implémenter le démarrage sécurisé

Sécurisation du bootloader

Cette partie dépend du matériel et est réalisée par le matériel et le code ROM. Le code ROM vérifie que le bootloader provient du fabricant en vérifiant sa signature. La signature du bootloader est généralement son hachage chiffré par une clé privée.

Si la signature est corrompue, le code ROM ne lance pas le chargeur de démarrage et le périphérique ne démarre donc pas.

Sécurisation du noyau

Après vérification, le code ROM lance le bootloader.

Le chargeur de démarrage initialise juste assez de matériel (au moins la SDRAM et la console série) pour démarrer le noyau et charger le noyau ainsi que l'arborescence des périphériques dans la RAM.

Le chargeur de démarrage vérifie la signature du noyau et de l'arborescence des périphériques (et d'autres fichiers binaires si nécessaire) avant de démarrer le noyau.

Si les fichiers binaires doivent être vérifiés, une image FIT contenant tous ces fichiers binaires peut être utilisée pour gagner en efficacité dans ce processus.

Sécurisation du ROOTFS

Pour sécuriser le ROOTFS, il est préférable d'utiliser un ROOTFS en lecture seule et de tirer parti d'une fonctionnalité fournie par le noyau, appelée DM-Verity.

DM-Verity utilise un arbre de hachage pour s'assurer que le ROOTFS n'est pas endommagé. La couche 0 de l'arbre de hachage contient les hachages ROOTFS, soit un hachage pour chaque 4k.

Plus de détails dans le schéma ci-dessous.

Securing the ROOTFS for secure boot in linux systems softwares and devices

  • La couche 0 contient des hachages du ROOTFS, un hachage pour 4 Ko de mémoire
  • La COUCHE 1 contient les hachages de la COUCHE 0
  • Hachages de la COUCHE 2 de la COUCHE 1...
  • Jusqu'à ce que nous finissions avec un hash appelé racine de haschisch.

Afin d'utiliser DM-Verity sur la partition ROOTFS, il est plus facile d'utiliser un InitramFS qui lance DM-Verity sur la partition du ROOTFS avant de passer au ROOTFS.

Le fichier InitramFS (qui contient le hachage racine) doit être ajouté à l'image FIT et doit également être signé.

Si DM-Verity détecte une corruption dans le ROOTFS ou si le hachage racine a changé, la fonctionnalité génère une panique dans le noyau, ce qui bloque le lancement.

Exemple d'imx8

Pour illustrer certains aspects du démarrage sécurisé liés au matériel, prenons imx8 comme exemple :

Outils CST

Avant d'essayer d'implémenter un démarrage sécurisé sur imx8, nous devons générer des clés privées qui seront utilisées pour signer les fichiers binaires. NXP fournit Outils CST (Outil de signature de code) qui génère des clés privées et publiques et nous permet de signer le bootloader et d'autres fichiers binaires.

Fusibles et CAAM

Imx8 possède un module appelé CAAM (Module d'accélération et d'assurance cryptographiques) qui sera utilisé pour accélérer la vérification de toutes les signatures. Imx8 possède également des registres appelés Registres programmables à usage unique (eFuse).

Afin de permettre la vérification des signatures, les eFuses SRK_HASH doivent être programmés avec les hachages de clés publiques générés, et pour verrouiller la carte, un autre eFuse doit être programmé.

Tous ces éléments seront utilisés pour implémenter le HAB (High Assurance Boot) : le démarrage sécurisé imx.

Code ROM

Au démarrage, le code ROM vérifie si les EFuses SRK_HASH sont programmés. Si c'est le cas, il vérifiera la signature du bootloader (SPL + ATF + OPTEE + U-boot). Selon que la carte est verrouillée ou non, le code ROM poursuivra le processus de démarrage ou l'arrêtera :

ROM secure booting of linux Embedded devides

Le code Rom vérifie une image, comme le montre l'image ci-dessous :

ROM Code verification of FIT Image and hash Certificate

Remarque : d'autres EFuses doivent également être programmés pour implémenter correctement le démarrage sécurisé. Par exemple, l'eFuse qui désactive le JTAG.

Botte IMX

Après avoir vérifié sa signature, le code ROM lance le bootloader (SPL puis ATF et OPTEE puis U-boot).

U-boot doit être configuré pour vérifier la signature de l'image FIT si le HAB est activé. La vérification de la signature de l'image FIT se fait en appelant le code ROM (via ATF).

U-boot se comportera alors comme le code ROM de l'étape précédente : si la carte est verrouillée et que la signature est corrompue, le processus de démarrage sera arrêté.

Ajuster l'image et le fichier ROOTFS

L'image d'ajustement contient au moins trois éléments : le noyau, l'arborescence des appareils et le Dans Itramfs.

Lorsque U-boot vérifie la signature de l'image : il extrait ces éléments et lance le noyau.

Lorsque le noyau est lancé avec InitramFS, ce dernier applique DM-Verity sur la partition ROOTFS et donne au noyau le hash racine. Enfin, le noyau continue de démarrer sur le ROOTFS.

 

Ces différentes étapes ont constitué le démarrage sécurisé pour imx8 :

Embedded Linux base softwares devices or systems secure booting sequence

Le lecteur curieux peut trouver plus de documentation sur l'implémentation du HAB sur Internet. Cette deuxième partie de l'article n'était pas destinée à expliquer tous les détails du HAB, mais uniquement à montrer la relation entre le démarrage sécurisé et le matériel.

Partagez :
PARTAGEZ

Nos experts ne sont qu'à un coup de fil !

Faites-nous part de votre situation et nous trouverons ensemble la meilleure solution pour le développement de vos produits.
Nous contacter

Lire plus d'actualités

3/6/25

T&S Success Story : retour sur la carrière de Sébastien Julien chez T&S et Englab

Sébastien Julien a structuré et développé Englab chez T&S, apportant vision stratégique, expérience de terrain et croissance humaine pour faire d'un bureau d'ingénierie un atout clé de l'entreprise.

EN SAVOIR PLUS
15/5/25

L'engagement de Technology & Strategy en faveur du SBTi : une trajectoire climatique ambitieuse à l'horizon 2033

T&S s'engage dans une approche ambitieuse avec SBTi, afin de réduire ses émissions de carbone et d'aligner ses actions sur les objectifs climatiques mondiaux d'ici 2033 avec la participation active de toutes ses entités.

EN SAVOIR PLUS
11/7/24

Pourquoi un contrat V.I.E. peut lancer votre carrière : les leçons de Cérine et Meiyun

Cet article explore comment un contrat V.I.E peut donner un coup de pouce à votre carrière. À travers les histoires de Cérine et Meiyun, deux employées de V.I.E., vous découvrirez comment le programme peut vous aider à développer des compétences essentielles, à créer un réseau mondial et à acquérir la confiance nécessaire pour vous épanouir dans un environnement de travail international.

EN SAVOIR PLUS