Гайд · Безопасность · ESP32
Запри прошивку на замок
По умолчанию код на ESP32 нараспашку: снял flash — и любой прочитает твою прошивку, Wi-Fi-пароль, API-ключи. Две аппаратные фичи закрывают эту дверь — Flash Encryption шифрует хранимое, а Secure Boot отказывается запускать то, что ты не подписал. Вот как они работают и какова реальная цена их включения.
Угроза: твоя flash — открытая книга
Внешний flash-чип ESP32 по умолчанию хранит всё незашифрованным. Любой с парой минут и дешёвым программатором сдампит его и вытащит твои учётки, ключи и логику — паять не надо — см. где ESP32 хранит данные. Хуже — можно записать изменённый образ обратно, и чип радостно его загрузит. Для хобби-мигалки норм; для того, что едет клиентам, — нет.
Flash Encryption — шифруем хранимое
Flash Encryption прозрачно шифрует содержимое flash ключом AES, что живёт в eFuse чипа — memory с однократной записью: CPU им пользуется, а ты его не прочитаешь. Чип расшифровывает на лету в рантайме, так что твой код не меняется, но сдампленная flash теперь бесполезный шифротекст. Уже одно это останавливает атаку «считать секреты с чипа».
Secure Boot — грузится только твоё
Шифрование прячет прошивку; Secure Boot гарантирует подлинность. Ты подписываешь образ приватным ключом; чип хранит хэш соответствующего публичного ключа в eFuse и проверяет подпись перед каждой загрузкой. Подсунь подделанную или чужую прошивку — он просто не стартует. Вместе они закрывают обе половины: шифрование стопит чтение, Secure Boot — замену.
| Фича | Останавливает | Ключ в |
|---|---|---|
| Flash Encryption | чтение прошивки / секретов с flash | eFuse (AES) |
| Secure Boot | запуск изменённой или чужой прошивки | eFuse (хэш публичного ключа) |
| Обе | клон, подмену и извлечение | — |
Чем расплачиваешься
Это односторонне и намеренно. Как eFuse прожжены — обратной дороги нет: закирпиченный юнит не «расзащитить». Готовься к трём вещам: отладка усложняется (не почитаешь flash или JTAG, как раньше), OTA требует аккуратности (обновления должны быть так же подписаны и зашифрованы — OTA-поток работает, но ключи должны совпадать), и надо вечно беречь ключ подписи. Правило: разрабатывай с выключенными, прожигай их осознанным, протестированным финальным шагом перед отгрузкой.
Отгружаешь продукт? Соедини подписанную прошивку с отточенным UI прямо с устройства.