🛠 Sécurité industrielle : bootloader MCUboot, secure boot, SE050 et OTA signé

Arduino Portenta H7 · avance · Schéma : IMG-portenta-h7-avance-3-portenta-h7-securite-boot-ota.svg — chaîne de confiance de la Portenta H7 en maillons : bootloader MCUboot, secure boot vérifiant la signature, élément sécurisé NXP SE050C2, mise à jour OTA signée entrant par le Wi-Fi, TrustZone-M en arrière-plan du SoC

Objectives

This is why we buy a Portenta for the workshop: the entire chain of trust is embedded. The MCUboot bootloader verifies the firmware signature before execution (secure boot), a dedicated NXP SE050C2 chip stores keys and certificates out of reach of the firmware, the SoC adds TrustZone-M, MPU, and hardware RNG, and OTA updates are signed. This tutorial maps out the chain and sets up the foundation: updating the bootloader, then implementing a signed deployment strategy. Sources: official tutorials updating-the-bootloader, secure-boot, and over-the-air-update on docs.arduino.cc.

Hardware

Complete Code

// secure_boot_check.ino — squelette de principe
// > 
// interroger l'etat de la verification — suis pas a pas le tuto officiel
// docs.arduino.cc/tutorials/portenta-h7/secure-boot pour la procedure
// complete (generation de cles, signature, activation).
#include "Arduino.h"

void setup {
  Serial.begin(115200);
  while (!Serial) {}
  // Le firmware ne tourne ICI que si le bootloader MCUboot a valide
  // sa signature : ce code est deja la preuve d'un boot de confiance.
  Serial.println("Boot valide par MCUboot (secure boot actif)");

  // L'element sur NXP SE050C2 (cles/certificats inaccessibles au
  // firmware) sert notamment a verifier la signature des mises a
  // jour OTA recues par le Wi-Fi (tuto over-the-air-update).
  // > 
}

void loop { }
// Chaine de confiance complete :
// 1. MCUboot (updatable) verifie la signature du firmware au boot
// 2. TrustZone-M + MPU isolent les zones critiques
// 3. SE050C2 garde les cles hors de la flash attaquable
// 4. L'OTA telecharge un firmware signe ; refuse sinon

Expected Verification

After following the procedure in the updating-the-bootloader tutorial, the bootloader is up to date and updatable; with secure boot enabled, an unsigned firmware refuses to start — test this by intentionally flashing an unsigned binary to see the board reject it (then revert by flashing a signed binary). Signed OTA (tutorial over-the-air-update) applies the same check remotely: a tampered image in transit is never installed.

Common Errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials