Для электронщиков и радиолюбителей

Включение Secure Boot V2 (SBV2) на ESP32

Безопасность встроенных систем становится всё более критичной задачей. Микроконтроллеры серии ESP32 от Espressif Systems предоставляют встроенные механизмы защиты, такие как Secure Boot и Flash Encryption. В данной статье мы рассмотрим, как включить и настроить Secure Boot V2 (SBV2) на ESP32 для повышения безопасности загрузки и защиты от несанкционированной прошивки.


Что такое Secure Boot V2?

Secure Boot V2 (SBV2) — это механизм, обеспечивающий проверку подлинности прошивки при каждом запуске устройства. Он использует цифровую подпись, чтобы гарантировать, что прошивка не была изменена. Только подписанные образы, доверенные микроконтроллеру, могут быть загружены и исполнены.

Secure Boot V2 отличается от версии 1 тем, что:

  • Использует RSA-3072 вместо RSA-2048;
  • Позволяет использовать несколько ключей (до 3-х), обеспечивая возможность ротации ключей;
  • Улучшена защита от атак по сторонним каналам;
  • Простой процесс автоматической подписи на этапе сборки.

Требования

Для включения SBV2 необходимы:

  • Микроконтроллер ESP32 (серии ESP32, ESP32-S2, ESP32-C3 и др.);
  • Среда разработки ESP-IDF (рекомендуемая версия 4.0 и выше);
  • Установленные инструменты: esp-idf.py, espefuse.py, idf.py;
  • Открытый и закрытый ключи RSA (можно сгенерировать вручную или автоматически через ESP-IDF);
  • Подключенное устройство через UART.

Шаги по включению Secure Boot V2

Шаг 1: Создание RSA-ключей

Сгенерируйте приватный и публичный ключи:

espsecure.py generate_signing_key --version 2 secure_boot_signing_key.pem

Шаг 2: Включение Secure Boot V2 в проекте

Откройте меню конфигурации проекта:

idf.py menuconfig

Затем выберите:

Security features  --->
    [*] Enable hardware Secure Boot in bootloader
    (2) Secure Boot version
    [*] Sign binaries during build
    (secure_boot_signing_key.pem) Path to signing key

Шаг 3: Сборка и подпись прошивки

После настройки выполните сборку:

idf.py build

ESP-IDF автоматически подпишет загрузчик и образы прошивки, используя указанный ключ.

Шаг 4: Программирование устройства

Запишите прошивку и загрузчик:

idf.py -p /dev/ttyUSB0 flash

Шаг 5: Программирование eFuse’ов

После прошивки необходимо записать eFuse, чтобы активировать Secure Boot:

espefuse.py -p /dev/ttyUSB0 burn_efuse

ВНИМАНИЕ: Активация Secure Boot — необратимая операция. После этого устройство не сможет запускать неподписанные образы.

Проверка и отладка

После перезапуска устройства вы должны увидеть в логах строки, подтверждающие успешную верификацию подписи:

Verifying image signature...
Signature verified successfully

Если подпись неверна или ключ отсутствует — загрузка будет остановлена.


Ротация ключей (опционально)

SBV2 поддерживает до 3-х ключей. Это позволяет добавлять новые ключи и удалять устаревшие. Для этого вы можете:

  1. Сгенерировать новый ключ.
  2. Включить его в проект (menuconfig > добавить путь к ключу 2 или 3).
  3. Перепрошить загрузчик с обновленным списком ключей.

Итоги

Secure Boot V2 — мощный механизм защиты устройств на ESP32. Он предотвращает запуск вредоносной прошивки и обеспечивает доверенную загрузку. Несмотря на то, что его включение требует внимательности и аккуратности (особенно при работе с eFuse), это необходимый шаг для устройств, работающих в потенциально небезопасной среде.

При использовании в связке с шифрованием флеш-памяти (Flash Encryption) уровень безопасности устройства значительно возрастает.