IoT

Функции безопасности контроллера ESP32

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

Контроллер ESP32 имеет две встроенные функции безопасности: безопасную загрузку и шифрование флэш памяти. Давайте кратко рассмотрим эти функции.

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

Шифрование флэш-памяти и функция безопасной загрузки защищают устройство от такого типа атак.

EFUSE: одноразовое программирование

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

ESP32 имеет 1024-битную одноразово программируемую область памяти eFUSE. Эта область разделена на 4 блока по 256 бит каждый.

Область памяти eFUSE

Рис. 1. Область памяти eFUSE

Для целей безопасности используются блоки 1 и 2. В этих блоках хранятся ключи для шифрования флэш-памяти и безопасной загрузки, соответственно. Кроме того, после сохранения ключей в eFUSE, контроллер можно настроить таким образом, чтобы любое программное обеспечение, выполняющееся на ESP32, не могло считывать (и, конечно, обновлять) эти ключи.

Безопасная загрузка

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

Это достигается путем создания цепочки проверок от аппаратного обеспечения до загрузчика и прошивки.

Безопасная загрузка: цепь проверок

Рис. 2. Безопасная загрузка: цепь проверок

Проверка правильности загрузчика

Контроллер безусловно доверяет содержимому ROM и eFUSE.

Аппаратное обеспечение (BootROM) использует хранящийся в eFUSE безопасный ключ для проверки загрузчика. Только после этой проверки загрузчика программного обеспечения, BootROM запустит процесс загрузки.

Загрузчик состоит из трех описанных ниже компонентов:

  • Двоичный код загрузчика: тот код, который будет исполняться при загрузке программы
  • Публичный ключ ECDSA: ключ, который будет использоваться для проверки на следующем шаге (проверка прошивки)
  • Хэш на основе AES: цифровая подпись, подтверждающая, что двоичный файл загрузчика и публичный ключ ECDSA совпадают с запрограммированными производителем

Загрузчик программного обеспечения

Рис. 3. Загрузчик программного обеспечения

AES-input = двоичный загрузчик + публичный ключ ECDSA
AES-key = ключ загрузчика из eFUSE
AES-based-digest = SHA512 (AES (AES-input, AES-key))

Настройка гарантирует, что злоумышленник не сможет создать двоичный файл загрузчика или открытый ключ ECDSA с соответствующей подписью AES, так как в выпущенных в серию устройствах ключ AES заблокирован в eFUSE и не может быть прочитан или перезаписан.

Проверка прошивки приложения

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

Прошивка приложения также состоит из нескольких элементов, как показано ниже:

  • Двоичный файл прошивки: собственно код приложения
  • Подпись ECDSA: это подпись двоичного файла встроенного программного обеспечения, созданного с использованием закрытого ключа ECDSA. Закрытый ключ ECDSA находится у производителя и должен держаться в секрете.

Прошивка приложения

Рис. 3. Прошивка приложения

Загрузчик использует открытый ключ ECDSA (который уже был проверен на предыдущем шаге) для проверки правильности подписи ECDSA, указанной выше. Если подпись верна, то запускается прошивка.

Шифрование флэш-памяти

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

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

ESP32: упрощенная схема шифрования Flash

Рис. 4. ESP32: упрощенная схема шифрования Flash

Поскольку ключ AES заблокирован в eFUSE, только аппаратное обеспечение может использовать его для расшифровки содержимого флэш-памяти.

Для практического использования механизмов безопасности ESP-32 обратитесь к оригинальной документации Espressif:

Источник: https://medium.com

Производитель: Espressif Systems (shanghai) Pte. Ltd.
Наименование
Производитель
Описание Корпус/
Изображение
Цена, руб. Наличие
ESP32-WROOM-32 [4MB]
ESP32-WROOM-32 [4MB]
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2292549 ИНФО PDF DT
Доступно: 641 шт. 398,00
Базовый модуль, использующий высокопроизводительную микросхему ESP32-D0WDQ6 с двухъядерным процессором и максимальной рабочей частотой до 240 МГц. Микросхема ESP32-D0WDQ6 работает под управлением freeRTOS и использует стек LwIP, ESP32-D0WDQ6, 32Mbits SPI flash, UART Mode
ESP32-WROOM-32 [4MB] 398,00 от 10 шт. 341,00 от 22 шт. 307,00 от 46 шт. 284,00 от 121 шт. 270,00
83 шт.
(на складе)
558 шт.
(под заказ)
ESP32-D0WDQ6
ESP32-D0WDQ6
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2590835 ИНФО PDF DT
Доступно: 2690 шт. от 1 шт. от 291,68
Выбрать
условия
поставки
Система-на-кристалле (SoC) на базе вухъядерного 32-битного процессора Xtensa® 240 МГц 600 DMIPS
ESP32-D0WDQ6 от 1 шт. от 291,68
2690 шт.
(под заказ)
Выбрать
условия
поставки
ESP32-WROVER-I [4MB]
ESP32-WROVER-I [4MB]
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2610278 ИНФО PDF DT
Доступно: 31 шт. 609,00
ESP32-WROVER-I [4MB] - SMD Module ESP32-WROVER, ESP32-D0WDQ6, 1.8V 64Mbits PSRAM, 32Mbits SPI flash, IPEX Antenna connector
ESP32-WROVER-I [4MB] 609,00 от 7 шт. 522,00 от 14 шт. 470,00 от 30 шт. 435,00 от 79 шт. 414,00
31 шт.
(на складе)
ESP32-WROVER [4MB]
ESP32-WROVER [4MB]
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2738673 ИНФО PDF DT
Доступно: 74 шт. 494,00
ESP32-WROVER - мощный высокопроизводительный модуль общего назначения со встроенным микроконтроллерным ядром и с поддержкой стандартов связи Wi-Fi+BT+BLE, предназначенный для широкого ряда приложений с экономичным энергопотреблением.
ESP32-WROVER [4MB] 494,00 от 8 шт. 424,00 от 18 шт. 381,00 от 37 шт. 353,00 от 98 шт. 336,00
68 шт.
(на складе)
6 шт.
(под заказ)
ESP32-S0WD
ESP32-S0WD
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739124 ИНФО PDF DT
Доступно: 1411 шт. 367,00
Система-на-кристалле (SoC) на базе 32-битного процессора Xtensa® 160 МГц 200 DMIPS
ESP32-S0WD 367,00 от 11 шт. 314,00 от 24 шт. 283,00 от 50 шт. 262,00 от 131 шт. 249,00
97 шт.
(на складе)
1314 шт.
(под заказ)
ESP32-D2WD
ESP32-D2WD
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739125 ИНФО PDF DT
Доступно: 1039 шт. от 1 шт. от 374,41
Выбрать
условия
поставки
Система-на-кристалле (SoC) на базе вухъядерного 32-битного процессора Xtensa® 160 МГц 400 DMIPS
ESP32-D2WD от 1 шт. от 374,41
1039 шт.
(под заказ)
Выбрать
условия
поставки
ESP32-D0WD
ESP32-D0WD
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739127 ИНФО PDF DT
Доступно: 1246 шт. 276,00
Система-на-кристалле (SoC) на базе вухъядерного 32-битного процессора Xtensa® 240 МГц 600 DMIPS
ESP32-D0WD 276,00 от 14 шт. 236,00 от 31 шт. 213,00 от 67 шт. 197,00 от 175 шт. 187,00
52 шт.
(на складе)
1194 шт.
(под заказ)
ESP32-WROOM-32U [4MB]
ESP32-WROOM-32U [4MB]
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739131 ИНФО PDF DT
Доступно: 1226 шт. 491,00
SMD Module ESP32-WROOM-32U, ESP32-D0WD, 32Mbits SPI flash, UART mode, U.FL antenna connector
ESP32-WROOM-32U [4MB] 491,00 от 8 шт. 421,00 от 18 шт. 379,00 от 38 шт. 351,00 от 98 шт. 333,00
142 шт.
(на складе)
1084 шт.
(под заказ)
ESP32-SOLO-1
ESP32-SOLO-1
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739132 ИНФО PDF DT
Доступно: 1373 шт. 474,00
Wi-Fi+BT+BLE-модуль, построенный на базе одноядерной микросхемы ESP32-S0WD. Как отмечалось выше, ESP32-S0WD – младший представитель семейства ESP32. Несмотря на это, ESP32-SOLO-1 может применяться в широком спектре приложений – от малопотребляющих датчиков (наиболее оптимальный вариант), до приложений с беспроводной передачей звука, ESP32-S0WD, Single Core, 32Mbits SPI flash, UART Mode
ESP32-SOLO-1 474,00 от 9 шт. 407,00 от 18 шт. 366,00 от 39 шт. 339,00 от 102 шт. 322,00
78 шт.
(на складе)
1295 шт.
(под заказ)
ESP32-PICO-D4
ESP32-PICO-D4
Espressif Systems (shanghai) Pte. Ltd.
Арт.: 2739133 ИНФО PDF DT
Доступно: 2025 шт. 546,00
SIP module ESP32 with 4MByte Flash, Dual Core MCU, Wi-Fi & Bluetooth Combo, LGA48-pin, 7*7mm
ESP32-PICO-D4 546,00 от 7 шт. 468,00 от 16 шт. 421,00 от 34 шт. 390,00 от 89 шт. 370,00
10 шт.
(на складе)
2015 шт.
(под заказ)

Сравнение позиций

  • ()