Как защитить прошивку и флэш-память ESP32 на платформе ESP-IDF


В эпоху Интернета вещей (IoT) беспроводная связь становится все более популярной в повседневной жизни. В мире устройств Интернета вещей ESP32 — это популярный недорогой микроконтроллер System on Chip (SoC) со встроенными гибридными чипами Wi-Fi и Bluetooth от компании Espressif Systems. Благодаря своей прочной конструкции и сверхнизкому энергопотреблению он стал невероятно популярен в приложениях Интернета вещей. Но когда мы говорим о приложениях IoT, на ум приходит безопасность в IoT , связанная с безопасностью данных и безопасным соединением. ESP32 поддерживает взаимную аутентификацию на основе сертификата X.509 для HTTP, аутентификацию в облаке IoT ( AWS-IoT, Azure, Google Firebase и т. д.) и передачу данных. Через сеть Интернет ESP32 также обеспечивает безопасность данных, хранящихся во флэш-памяти и загрузочных секторах, чтобы предотвратить кражу данных. Сегодня мы поговорим о функциях безопасности ESP32, в основном связанных с его загрузочными секторами. Две основные функции безопасности ESP32 называются Secure-Boot и Flash Security, также известные как Flash-Encryption.

Безопасная прошивка и флэш-память ESP32 на платформе ESP-IDF

Какие блоки eFUSE есть в ESP32?

ESP32 имеет 1024-битный одноразово программируемый (One-Time-Programmable, OTP) блок памяти. Этот блок памяти OTP разделен на 4 блока по 256 бит каждый.

Блок памяти OTP в ESP32

В этих блоках памяти хранятся ключи шифрования Flash и Secure Boot. В связи с тем, что это одноразово программируемые блоки памяти, отсутствует какое бы то ни было программное обеспечение для считывания этих блоков памяти. Только оборудование модуля ESP32 может читать и проверять функции безопасности.

Из-за блока памяти OTP отсутствует программное обеспечение для считывания этих блоков памяти. Только оборудование ESP32 может читать и проверять функции безопасности.

Что такое флэш-шифрование? Как включить его на ESP32?

ESP32 Flash Encryption (флэш-шифрование) — это функция безопасности для ESP32, предоставляемая системой ESP-IDF от компании Espressif для защиты флэш-памяти. Флэш-шифрование шифрует содержимое флэш-памяти SPI ESP32, и когда эта функция включена, по умолчанию шифруются следующие типы данных:

  • загрузчик прошивки;
  • таблица разделов;
  • разделы типа «приложение» или разделы приложений;
  • любой раздел, помеченный в таблице разделов флажком «зашифрованный», также зашифрован.

В проектах ESP-IDF пользователи могут легко включить Flash Encryption из конфигурации проекта с помощью

После открытия меню конфигурации проекта ESP32 перейдите к

При флэш-шифровании существует два режима:

  • Режим разработки: в этом режиме все разделы флэш-памяти ESP32 зашифрованы и открыты для модификации, а также доступны для считывания флэш-памяти с помощью UART.
  • Режим выпуска: этот режим особенно рекомендуется для этапов производства и производства. В этом режиме считывание флэш-памяти с помощью UART/JTAG полностью блокируется, и новая прошивка может быть обновлена ​​только по беспроводной сети (OTA).

Когда флэш-шифрование включено, двоичные файлы текущего кода сохраняются в памяти ESP32 в виде обычного текстового файла. Но после завершения процесса прошивки, при первой загрузке ESP32 устройство само зашифрует каждый верхний раздел, один за другим, с помощью ключа шифрования флэш-памяти AES, который хранится в eFUSE-BLK1 во время прошивки. После шифрования раздела устройство ESP32 перезагрузится и обработает запрограммированную логику.

В процессе выполнения программы модуль ESP32 расшифровывает данные флэш-памяти когда его исполнительный блок пытается их прочитать, а в процессе записи модуль шифрует данные их перед записью во флэш-память.

Структурная схема шифрования и дешифрования в модуле ESP32

Что такое безопасная загрузка? Как включить ее на ESP32?

ESP32 Secure-boot (безопасная загрузка) — это функция безопасности, которая обеспечивает безопасность запуска корректных приложений на оборудовании ESP32. Когда включена безопасная загрузка, все двоичные файлы флэш-памяти [загрузчик программного обеспечения и встроенное ПО] проверяются перед загрузкой с помощью ключей подписи Secure-boot на основе RSA-3072. Таким образом, мы можем назвать Secure-boot «Хранителем (Guardian) ESP32».

Для включения флэш-шифрования мы аналогичным образом можем включить безопасную загрузку из меню конфигурации проекта.

Как работает Secure-boot?

Когда устройство ESP32 загружается, доверенная прошивка оборудования ESP32 или, как мы говорили, загрузчик 1-го этапа выполняет проверку с помощью ключа безопасной загрузки на основе RSA-3072 на программном загрузчике, а затем программный загрузчик проверяет прошивку приложения с тем же ключом подписи и запускает приложение.

Принцип работы безопасной загрузки в модуле ESP32

Заключение

Модуль ESP32 поставляется с безопасной средой [Secure-boot & Flash-Encryption], которую нам необходимо включить во время прошивки кода. Для большей безопасности рекомендуется включить обе эти опции.

(Проголосуй первым!)
Загрузка...
857 просмотров

Комментарии

Как защитить прошивку и флэш-память ESP32 на платформе ESP-IDF — 4 комментария

  1. а что решает эта защита, ведь слив дампа не позволит декомпилировать прошивку?

    • Ну что поделать, будем ждать пока кто-нибудь придумает защиту получше ))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *