Secure Boot & Root of Trust¶
Ancrer la confiance dans le silicium pour garantir qu'aucun code non autorisé ne s'exécute, même après un accès physique au device.
Le principe de la chaîne de confiance¶
Le secure boot repose sur une vérité fondamentale : chaque maillon d'une chaîne logicielle ne peut être vérifié que par quelque chose de plus fiable que lui. Cette hiérarchie doit commencer par un élément immuable — le Root of Trust (RoT) — qui ne peut pas être modifié même par un attaquant avec un accès physique.
Un système correctement conçu ne démarre que si chaque étape valide cryptographiquement la suivante. Un firmware modifié, même d'un seul octet, produit un hash différent et le boot est refusé.
Les composants matériels du Root of Trust¶
ROM de boot immutable¶
Le tout premier code exécuté au démarrage est stocké dans une ROM (Read-Only Memory) programmée lors de la fabrication du SoC. Elle ne peut pas être modifiée après production — c'est l'ancre immuable de la chaîne. Elle contient :
- Le vérificateur de signature du premier bootloader
- La clé publique OEM (ou son hash) fusée dans l'OTP
- La logique de démarrage d'urgence
OTP (One-Time Programmable) fuses¶
Les registres OTP permettent de stocker de façon permanente et irréversible des données critiques : hash de la clé publique OEM, configuration de sécurité (JTAG lock, debug disable, boot source). Une fois programmées, ces fuses ne peuvent plus être modifiées.
Secure Element (SE)¶
Un secure element est un microcontrôleur dédié à la cryptographie, physiquement séparé du MCU principal, conçu pour résister aux attaques physiques (tamper resistance certifiée CC EAL5+). Exemples industriels :
| Composant | Fabricant | Interface | Certifications | Usages typiques |
|---|---|---|---|---|
| ATECC608B | Microchip | I²C / SPI | FIPS 140-2, CC EAL4+ | Stockage clés, signature ECDSA |
| OPTIGA Trust M | Infineon | I²C | CC EAL6+, FIPS 140-2 | PKI device, TLS, secure update |
| STSAFE-A110 | STMicroelectronics | I²C | CC EAL5+ | Authentification device |
| SE050 | NXP | I²C | CC EAL6+ | IoT industrial, automotive |
| DS28E16 | Maxim/Analog | 1-Wire | — | Authentication simple |
Le secure element stocke les clés privées dans une zone physiquement protégée. Même avec un accès JTAG complet au MCU principal, les clés ne peuvent pas être extraites — les opérations crypto se font à l'intérieur du SE.
TPM (Trusted Platform Module)¶
Le TPM 2.0 (norme ISO/IEC 11889) est le standard industriel pour les PC et serveurs, de plus en plus utilisé dans les gateways IoT et équipements edge. Il offre :
- Stockage de clés hiérarchique (SRK → AIK → clés applicatives)
- PCR (Platform Configuration Registers) pour mesurer l'état du système au boot
- Attestation d'intégrité à distance
- Générateur de nombres aléatoires certifié (DRBG)
- Scellement de secrets conditionnel à l'état du système (sealing/unsealing)
La chaîne de boot sécurisé¶
flowchart TD
ROM["ROM Boot Code\n(immutable, OEM)"]
OTP["OTP Fuses\nHash clé pub OEM\nJTAG locked\nBoot config"]
SE["Secure Element\nATECC608 / OPTIGA\nClé privée device\nCertificat X.509"]
BL0["Stage 0 Bootloader\ndans ROM\nVérifie BL1 signature"]
BL1["Stage 1 Bootloader\n(ex: TF-A / SPL)\nVérifie BL2 signature\nInit sécurité hardware"]
BL2["Stage 2 Bootloader\n(ex: U-Boot)\nVérifie kernel signature\nInit mémoire, stockage"]
KERN["Kernel Linux / RTOS\nVérifie signature modules\nSecure storage mount"]
APP["Application firmware\nVérifie intégrité config\nConnect broker mTLS via SE"]
ROM -->|"lit clé pub depuis OTP"| OTP
ROM -->|"valide signature"| BL0
BL0 --> BL1
BL1 -->|"ECDSA P-256 verify"| BL2
BL2 -->|"ECDSA P-256 verify"| KERN
KERN -->|"module signing"| APP
APP -->|"clé privée"| SE
style ROM fill:#1a237e,color:#fff
style OTP fill:#283593,color:#fff
style SE fill:#1565c0,color:#fff
style BL0 fill:#e8eaf6
style BL1 fill:#c5cae9
style BL2 fill:#9fa8da
style KERN fill:#7986cb
style APP fill:#5c6bc0,color:#fff Anti-tampering matériel¶
La détection d'ouverture physique (tamper detection) est un mécanisme de sécurité critique pour les devices déployés en environnements non contrôlés.
Mécanismes de détection¶
Contacteurs mécaniques. Interrupteurs qui détectent l'ouverture du boîtier. Simple et fiable, mais contournable par un attaquant préparé.
Enveloppes conductrices. Un réseau de pistes conductrices enveloppant le PCB (mesh actif) détecte toute tentative de perçage ou découpe. Toute rupture déclenche l'effacement des secrets.
Capteurs environnementaux. Température hors plage, pression anormale, tension d'alimentation anormale (indicateurs de glitching) déclenchent une réponse de sécurité.
Détection lumineuse. Capteur de lumière dans un boîtier opaque — l'ouverture déclenche l'effacement immédiat de la SRAM sécurisée.
Réponses à une détection de tampering¶
| Niveau de réponse | Action | Usage typique |
|---|---|---|
| Logging | Enregistrement de l'événement | Monitoring passif |
| Alerte | Notification cloud immédiate | Devices semi-critiques |
| Verrouillage | Blocage fonctionnel jusqu'à re-provisioning | Équipements médicaux |
| Effacement | Destruction des clés en SRAM/SE | Terminaux de paiement, défense |
| Brick | Rendu inutilisable de façon irréversible | Défense, nucléaire |
Hardware Security Module (HSM)¶
Le HSM est l'équivalent côté serveur du secure element côté device. Il protège les clés maîtresses de l'infrastructure PKI IoT — les clés qui signent les certificats de chaque device produit.
HSM en production IoT¶
| HSM | Forme | Débit (RSA-2048) | Certifications |
|---|---|---|---|
| Thales Luna Network HSM | Réseau / rack | 10 000 ops/s | FIPS 140-2 Level 3 |
| Utimaco Se-Series | PCIe / réseau | 5 000 ops/s | FIPS 140-2 Level 3 |
| AWS CloudHSM | Cloud (FIPS) | Variable | FIPS 140-2 Level 3 |
| Azure Dedicated HSM | Cloud | Variable | FIPS 140-2 Level 3 |
| YubiHSM 2 | USB (dev/lab) | 1 000 ops/s | FIPS 140-2 Level 3 |
En production industrielle, le HSM signe les firmwares, génère les certificats device, et protège la CA racine de la PKI IoT. Sa compromission serait catastrophique — il fait l'objet de procédures opérationnelles strictes (M-of-N, cérémonies de clé).
Lockdown des interfaces de débogage¶
Les interfaces JTAG/SWD doivent être désactivées sur les devices de production. Les mécanismes varient selon le SoC :
| SoC / famille | Mécanisme de lock | Réversibilité |
|---|---|---|
| STM32 (Cortex-M) | RDPROT Level 2 (RDP2) | Irréversible |
| ESP32 | Efuse JTAG disable | Irréversible |
| i.MX 8M (NXP) | HAB/AHAB fuses + SRK lock | Irréversible |
| Raspberry Pi CM | OTP customer OTP | Irréversible |
| nRF5340 (Nordic) | AP protect + PUF | Configurable |
Sur STM32, le RDP Level 2 verrouille définitivement le debug et efface la flash si une tentative de debug est détectée — un device en RDP2 ne peut plus être débogué ni reprogrammé par JTAG.
Implémentations de référence¶
ARM TrustZone. Architecture matérielle divisant le SoC en monde sécurisé (Secure World) et monde non sécurisé (Normal World). Le monde sécurisé exécute le Trusted Execution Environment (TEE), les opérations crypto, la gestion des clés. Le monde normal exécute le système d'exploitation principal.
OP-TEE. Implémentation open source du TEE pour ARM TrustZone, utilisée sur Raspberry Pi, i.MX, STM32MP1. Fournit un environnement d'exécution isolé pour les applications de confiance (Trusted Applications — TA).
MCUboot. Bootloader sécurisé open source pour MCU Cortex-M (Zephyr, Apache Mynewt). Supporte la vérification ECDSA P-256/RSA-2048, le rollback, les mises à jour A/B.
Ce qu'il faut retenir¶
- Le Root of Trust doit être ancré dans du matériel immutable — ROM + OTP + secure element — pas dans du logiciel.
- La chaîne de confiance est aussi solide que son maillon le plus faible : un seul stage non vérifié compromet tout le reste.
- Les interfaces de debug (JTAG, SWD, UART) doivent être verrouillées de façon irréversible avant la mise en production.
- Le tamper detection physique est indispensable pour tout device déployé dans un environnement non contrôlé.
Chapitre suivant : Firmware signé & OTA sécurisé — comment signer les mises à jour et les vérifier à l'embarquement pour garantir l'intégrité du code en production.