• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Enable flash security

maddogmaycry

New member
Здравствуйте.
Поделитесь опытом пожалуйста.

Требуется работать в зашифрованном режиме.

Из сети удалось достать данное описание процесса:

1 - python espsecure.py generate_signing_key ./secure_boot_key.pem
Тут все понятно. Генерируем файл ключа.

2 - make bootloader
Вот тут не совсем понятно, он будет собран и зашифрован ключем генерированным на шаге 1, или это просто генерация загрузчика, и на данном этапе шифрование над ним не производится? Над ним вообще должно производится хоть какое-нибудь шифрование?

3 - python espefuse.py --port COM5 --before default_reset burn_key secure_boot ./secure-bootloader-key.bin
То что прошивается фьюз я понял, но откуда берется файл /secure-bootloader-key.bin ???
И я так понимаю это фьюз secure boot. Мне же требуется secure flash?

4 - python esptool.py --chip esp32 --port COM5 --baud 230400 --before default_reset --after no_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 ./ bootloader.bin

Разьясните пожалуйста как зашифровать флеш.
 

Юрий Ботов

Moderator
Команда форума
1. если вы зашифруете код - он зависнет немедленно.
2. если вы собираетесь шифровать только данные - не забудьте в коде их расшифровать.
3. и вообще: Брюс Шнайдер. Прикладная криптография. Толстая коричневая книга издательства Wiley (перевод издательства Триумф)
 

Алексей.

Active member
Чтобы обеспечить шифрование надо добавить код в ROM чипа иначе как зашифруете так и расшифруют.
Оно так и должно работать согласно их описания
Встроенный загрузчик может генерить ключи и сохранять их в защищенный фьюз и если во фьюзе ABS_DONE_0 включена опция secure boot, то встроенный загрузчик (тот что в ROM-е) на spi флеше с адреса 0x0 будет брать дайджест и с адреса 0x1000 будет брать программный загрузчик и проверять его.
В общем тема интересная, нужно пробовать только осторожно, во фьюзах по умолчанию jtag отключен, при опытах с secure boot настоятельно рекомендуют его включить.
 

maddogmaycry

New member
Встроенный загрузчик может генерить ключи и сохранять их в защищенный фьюз и если во фьюзе ABS_DONE_0 включена опция secure boot, то встроенный загрузчик (тот что в ROM-е) на spi флеше с адреса 0x0 будет брать дайджест и с адреса 0x1000 будет брать программный загрузчик и проверять его.
"If the keys are not written in efuse, before flashing the bootloader, then random keys will be generated by the ESP32, they can never be read nor re-written, so bootloader can never be updated. Even more, the application can be re-flashed (by USB) just 3 more times."

espefuse.py --port /dev/ttyUSB0 burn_efuse FLASH_CRYPT_CNT
espefuse.py --port /dev/ttyUSB0 burn_efuse FLASH_CRYPT_CONFIG 0x0F
espefuse.py --port /dev/ttyUSB0 burn_efuse ABS_DONE_0

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

Я просто пока связи не могу уловить.
По шифровке самой программы я уже нашел информацию.
1 - создали ключ.
2 - записали ключ в block_1.
3 - шифруем ключем программу.
4 - прошиваем программой esp32.

Как понять работу boot secure?
Подписывается код. Код чего? Самого загрузчика?

Ну что, не работал никто с secure fuses что ли?
 
Последнее редактирование:
Сверху Снизу