
Dans le monde hyper-connecté d'aujourd'hui, presque chaque appareil — des capteurs de l'Internet des Objets (IoT) aux serveurs d'entreprise — dépend de l'intégrité de son firmware et de son processus de démarrage. Le firmware, le code de bas niveau facilitant l'opération du matériel, est une cible fréquente pour les acteurs malveillants cherchant un contrôle persistant et furtif des appareils. Si les attaquants compromettent le firmware ou insèrent des composants malveillants tôt dans le processus de démarrage, ils peuvent contourner la plupart des outils de sécurité traditionnels, causer des dégâts irréversibles, voler des données sensibles, et même détourner la fonctionnalité de l'appareil à des fins criminelles.
Pour les fabricants d'appareils, adhérer aux principes fondamentaux de la sécurité des appareils n'est pas seulement une exigence réglementaire, mais aussi un aspect central de l'ingénierie responsable. Parmi ceux-ci, le principal est maintenir l'intégrité de l'appareil : s'assurer que chaque composant logiciel critique, du premier chargeur de démarrage au système d'exploitation principal, est vérifié cryptographiquement avant l'exécution.
Ce blog plonge profondément dans les principes clés et technologies qui propulsent la sécurité des appareils, en se concentrant sur des mécanismes comme le Démarrage Sécurisé, la protection de l'intégrité du firmware, et l'utilisation efficace de l'attestation cryptographique. Nous fournirons des exemples concrets, des séries de codes, et des meilleures pratiques exploitables pour les débutants comme pour les utilisateurs avancés.
L'intégrité des appareils désigne la confiance qu'un appareil fonctionne exactement comme prévu par son fabricant, sans modification non autorisée à aucune étape de son fonctionnement. Cela comprend le processus de démarrage — du moment où un appareil est mis sous tension, jusqu'à l'exécution du système d'exploitation et des applications.
Le Centre National de Cyber Sécurité (NCSC) souligne maintenir l'intégrité des appareils comme un pilier central de la conception de systèmes sécurisés pour les fabricants. En particulier, le NCSC insiste sur le fait que :
"S'assurer que chaque morceau de logiciel de démarrage correspond à des signatures précédemment connues et fiables donne confiance que l'appareil démarre dans un bon état, et est donc digne de confiance pour les opérations suivantes."
Le manquement à garantir l'intégrité du logiciel de démarrage ouvre la voie aux rootkits et bootkits — du code malveillant qui peut persister sans être détecté, en dépit des contrôles de sécurité au niveau du système d'exploitation.
La protection de l'intégrité du firmware vise à s'assurer que le firmware fonctionnant sur un appareil est exactement tel que prévu par le fabricant, sans altération ou modifications non autorisées après le déploiement.
Les fabricants doivent également protéger la propriété intellectuelle du firmware de l'extraction et de l'ingénierie inverse. Les techniques courantes incluent :
Les mécanismes d'attestation des appareils permettent à d'autres systèmes de vérifier qu'un appareil ne fonctionne qu'avec un firmware autorisé. Cela est généralement réalisé via des certificats (infrastructure à clé publique, PKI) ou en utilisant des Modules de Plateforme Fiable (TPM), qui stockent de manière sécurisée des mesures cryptographiques et attestent de l'état du firmware actuel.
Le processus de démarrage initialise le matériel de l'appareil et charge les composants logiciels nécessaires jusqu'à ce que le système d'exploitation soit pleinement opérationnel. Cela implique plusieurs stages ou chargeurs, généralement :
La "Chaîne de Confiance" décrit cette transition sécurisée :
Ce processus aide à prévenir à la fois malware au niveau du firmware et modifications non autorisées.
(Source : Blog Microsoft Security)
Introduit avec Windows 8, le Démarrage Sécurisé utilise le firmware UEFI (Unified Extensible Firmware Interface) et une racine de confiance pour s'assurer que seul le code signé et fiable se charge lors du démarrage.
Ouvrez PowerShell en tant qu'Administrateur :
Confirm-SecureBootUEFI
Sortie :
True : Le Démarrage Sécurisé est activé et fonctionne.False : Le Démarrage Sécurisé est désactivé ou non supporté.if (Confirm-SecureBootUEFI) {
Write-Output "Le Démarrage Sécurisé est ACTIVÉ"
} else {
Write-Output "Le Démarrage Sécurisé est DÉSACTIVÉ ou non supporté"
}
Les appareils Android (Android 4.4+) incluent le Démarrage Vérifié, qui vérifie l'intégrité du chargeur de démarrage et de la partition du système à chaque étape.
Depuis le shell ADB :
adb shell getprop ro.boot.verifiedbootstate
Sorties communes :
green : L'appareil a démarré avec une image système vérifiéeyellow : Des clés personnalisées ont été utiliséesorange : Le Démarrage Vérifié est désactivéLa puce de sécurité T2 d'Apple, présente dans le matériel Mac, offre une racine de confiance matérielle. Seul le firmware signé par Apple se charge, et la signature de stockage externe empêche le démarrage des images OS externes sans approbation.
Les racines de confiance matérielles (RoT) sont des composants matériels dédiés et immuables responsables de la vérification initiale de la signature lors de l'allumage. Ceux-ci peuvent prendre la forme de :
Ils appliquent la toute première étape du processus de démarrage, mesurant et attestant le firmware initial avant que quoi que ce soit d'autre ne soit chargé.
tpm2_getcap properties-fixed | grep -i firmware
Le cœur du Démarrage Sécurisé et de l'intégrité du firmware est la cryptographie à clé publique. Les fabricants intègrent une clé publique dans la ROM de démarrage, et toutes les images de firmware légitimes sont signées avec la clé privée correspondante.
import hashlib
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding
def verify_firmware_signature(firmware, signature, public_key_file):
with open(public_key_file, "rb") as pkf:
public_key = serialization.load_pem_public_key(pkf.read())
try:
public_key.verify(
signature,
firmware,
padding.PKCS1v15(),
hashes.SHA256()
)
return True
except Exception:
return False
Cela assure que le firmware est à la fois authentique (signé par le fabricant) et inviolé (le hash correspond à ce qui a été signé).
Le Module de Plateforme Fiable (TPM) fournit un stockage sécurisé pour les mesures de démarrage et les clés cryptographiques.
Sur Linux avec tpm2-tools :
tpm2_pcrread
Cela produit une liste de hashes représentant l'état mesuré de chaque composant dans le processus de démarrage (les PCR 0-7 se rapportent typiquement aux phases du BIOS, du chargeur de démarrage, et du chargeur OS).
mokutil, efibootmgr, et fwupdVérifier si le Démarrage Sécurisé est activé :
mokutil --sb-state
Exemple de Sortie :
SecureBoot enabled
Lister les entrées de démarrage EFI :
efibootmgr
Vérifier les versions de firmware (utilisant fwupd) :
fwupdmgr get-devices
#!/bin/bash
if mokutil --sb-state | grep -q enabled; then
echo "Le Démarrage Sécurisé est ACTIVÉ"
else
echo "Le Démarrage Sécurisé n'est PAS activé"
fi
echo "Entrées EFI de Démarrage actuelles :"
efibootmgr
En utilisant tpm2-tools et Python pour analyser les mesures de démarrage :
tpm2_pcrread -o pcrs.json
import json
with open('pcrs.json', 'r') as f:
pcrs = json.load(f)
# Afficher les PCRs liés au Démarrage
for idx in range(8): # PCR 0 à 7
print(f"PCR {idx} : {pcrs['sha256'][str(idx)]}")
Vous pouvez comparer ces hashes à des valeurs "dorées" (connues comme bonnes) stockées à partir d'un appareil dans son état d'usine.
Les fabricants d'appareils portent la responsabilité de garantir que le matériel quitte leurs usines à l'abri des innombrables attaques par rootkits, bootkits, et firmware dans la nature. La mise en œuvre des principes de sécurité des appareils — en particulier ceux qui sécurisent le processus de démarrage et l'intégrité du firmware — est la pierre angulaire de la construction d'une infrastructure numérique de confiance.
De la validation cryptographique de base des signatures à chaque cycle de démarrage aux mécanismes d'attestation avancés soutenus par TPM, établir une chaîne de confiance robuste est la façon la plus sûre d'arrêter les attaquants cherchant un contrôle persistant. Cet article de blog a décrit les principes fondamentaux et les outils pratiques (avec des exemples scriptables) que chaque ingénieur en sécurité ou fabricant devrait connaître.
Sécuriser le firmware et le processus de démarrage protège ultimement les utilisateurs contre les menaces visibles et invisibles, élevant la barre pour les attaquants et favorisant un écosystème numérique plus sûr pour tous.
Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carrière grâce aux techniques de l'Unité 8200.