🛠 Secure boot RSA-3072 et chiffrement de la flash

ESP32-S2 · avance · Schéma : IMG-esp32-s2-avance-2-esp32-s2-secure-boot-chiffrement.svg — ESP32-S2 reliée en USB à un ordinateur, cadenas et bouclier au-dessus de la puce, icône de clé RSA-3072 et puce de flash chiffrée en AES-XTS.

Objetivos

Asegurar una producción ESP32-S2: activar el arranque seguro v2 (firma RSA-3072, la S2 solo acepta este tamaño de clave) que rechaza cualquier firmware no firmado, y el cifrado de la flash (AES-XTS) que hace inútil la lectura del chip sin la clave. Operaciones irreversibles mediante eFuses: probar en una placa de desarrollo dedicada.

Material

Código completo

// Verification a l'execution de l'etat de securite (Arduino-ESP32)
#include <esp_secure_boot.h>
#include <esp_flash_encryption.h>

void setup {
  Serial.begin(115200);
  delay(1000);
  Serial.printf("Secure boot actif      : %s\n",
                esp_secure_boot_enabled ? "OUI" : "NON");
  Serial.printf("Chiffrement flash actif : %s\n",
                esp_flash_encryption_enabled ? "OUI" : "NON");
}

void loop { delay(5000); }

Comandos de quemado de eFuses (leer dos veces antes de ejecutar):

# 1. Genere la cle de signature RSA-3072 (secure boot v2)
espsecure.py generate_signing_key --version 2 ma_cle.pem
# 2. Convertit le binaire signe
espsecure.py sign_data --version 2 --keyfile ma_cle.pem --output firmware_signed.bin firmware.bin
# 3. Grave la cle dans les eFuses puis active le secure boot
espefuse.py --port COM3 burn_key secure_boot_v2_0 ma_cle.bin
espefuse.py --port COM3 burn_efuse SECURE_BOOT_ENABLE
# 4. Chiffrement de la flash (AES-XTS)
espefuse.py --port COM3 burn_key flash_encryption cle_flash.bin
espefuse.py --port COM3 burn_efuse FLASH_CRYPT_CONFIG 0xF
espefuse.py --port COM3 burn_efuse FLASH_ENCRYPT

Verificación esperada

Tras el quemado, el sketch de estado muestra «Arranque seguro activo: SÍ» y «Cifrado de flash activo: SÍ». Un firmware no firmado se niega a arrancar (el monitor serie permanece mudo o muestra un fallo de arranque). Un intento de lectura de la flash con esptool solo devuelve datos cifrados ilegibles.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales