Защита прошивки STM32. Часть 1. Защита от считывания (RDP) и обнаружение отключения (BOR).

preview_player
Показать описание
В ролике рассматриваются некоторые аспекты обеспечения безопасности и защиты программного обеспечения микроконтроллеров STM32 от считывания злоумышленниками. В данной части рассматриваются: Защита от считывания (RDP) и обнаружение отключения (BOR). Видео содержит примеры и демонстрацию работы кода.

------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------

Делайте репост в социальных сетях и конечно же оставляйте свои комментарии.

00:00 - Введение
01:24 - Методы взлома
04:15 - Введение в безопасность STM32
06:10 - Защита от считывания (RDP)
18:13 - Обнаружение отключения (BOR)
23:23 - Заключение
----
Пример кода показанный в видео:
FLASH_OBProgramInitTypeDef FLASH_OBInitStruct;
HAL_FLASH_OB_Unlock();
HAL_FLASHEx_OBGetConfig(&FLASH_OBInitStruct);
FLASH_OBInitStruct.OptionType = OPTIONBYTE_RDP;
FLASH_OBInitStruct.RDPLevel = OB_RDP_LEVEL_1;
HAL_FLASHEx_OBProgram(&FLASH_OBInitStruct);
FLASH_OBInitStruct.OptionType = OPTIONBYTE_BOR;
FLASH_OBInitStruct.BORLevel = FLASH_VOLTAGE_RANGE_3;
HAL_FLASHEx_OBProgram(&FLASH_OBInitStruct);
HAL_FLASH_OB_Launch();
HAL_FLASH_OB_Lock();
----
Рекомендации по теме
Комментарии
Автор

сразу вспомнил прошивки принтеров )) объясню поподробнее. Суть дела - производитель хочет продавать картриджи по завышенным ценам. Для этого изобрели чипы (eeprom с криптозащитой). Но умельцы - хакеры модифицируют прошивку и отключают учет тонера по чипу картриджа. Поэтому следующим шагом стала защита самой прошивки принтера...
Саму прошивку считать несложно - она часто в отдельной флеш-памяти. При старте аппарата, стартует бутлоадер, он в начале флеш. По хитрому алгоритму (в последних аппаратах вроде как используются пары публичного и приватного ключа, т.е. шифрование как в tls ) прошивка расшифровывается и распаковывается (zlib часто для экономии места флеш) в оперативку.
Конечно хакеры начали дебажить и прочее... но сам процесс сильно усложнился. Последний шаг - система на чипе, когда в одном чипе флеш, оперативки и собственно контроллер...

quxjnoq
Автор

Классное видео, интересное направление.

bbefuhc
Автор

Thanks Bro. Salamu Aleykum from Turkey

babursapayev
Автор

Влепил лайкос потом смотрел. Тема очень актуальна. Разберите все доступные варианты защит.

vad
Автор

Сколько уже работаю с STM32, но вот про то, что RDP Lvl 2 залочит камень окончательно и бесповоротно - честно, не знал. Я в принципе особо блокировкой чтения памяти и не интересовался, но теперь буду знать.

kardanium
Автор

спасибо за информацию. в одном из обсуждений аппаратной защиты устройств от копирования была высказана мысль - "если ты МОЖЕШЬ создать устройство, которое имеет смысл копировать, то ты МОЖЕШЬ придумать, как его защитить"

finskiymaster
Автор

В любой защите, всегда есть дыра - человек. Сам про...л защиту пару раз. Хорошо девайсы обратно пришли. После этого нацарапал установку защиты. автоматом.

tuuemww
Автор

Забыли вы указать один момент. Сам производитель делает закладки для того чтобы давать доступ специальным службам.
Обычно этим занимается сам дизайнер чипа, т.к. покупатели обычно контролируют целостность кристалла.
Закладки могут быть как на открытие чипа так и на то чтобы его выводить из строя как временно так и на всегда.
Эти закладки были и будут.
И это самый лакомый кусок.

muxahx
Автор

Все что нужно знать про защиту STM32 (как и любого другого MC) - сколько конкретно тысяч долларов стоит взлом конкретного того камня на котором вы делаете проект на сегодня, для того чтоб считать риски, делать какие-то прогнозы и применять(не применять) этот камень. Естественно если нужно будет - сломают RDP level2 по щелчку.

MaxiRPD
Автор

Институт этот Фраунгофер называется. Это, на секундочку, разработчик MPEG.

rdengin
Автор

Владимир, подскажите, а как понять, что это первый запуск устройства?

Или можно при каждом старте (до бесконечного цикла) выполнять приведённый вами код, который устанавливает защиту?

Ololoshize
Автор

вот не знаю, но на F0 не идет. BOR понятно не поддерживается. До основного цикла, после активации RDP не стартует программа. бесполезно, но зато отключается интерфейс программирования. В основном цикле работает не поймешь как. Ибо все таки. эти вещи вероятно можно повторять 1 раз и только в основном цикле, а значит, необходимо делать проверку статуса нужных битов RDP. иначе это не работает основная программа.

hmglerz
Автор

Атмеги тоже можно защитить ) фьюзы защитные выставить)))

vakivaki
Автор

Левел 2 можно сбросить на 0 изнутри?
По идее же можно. Значит, например, можно написать код, который будет при определённом условии на минуту, например, сбрасывать защиту на ноль.
Каждый второй вторник месяца в 15:00, к примеру. Или при определенной комбинации нажатых клавиш.
Или я не прав насчёт сброса изнутри (с помощью уже залитой прошивки)?

Nidvoraich
Автор

Спасибо за видео. Только я не понял как изменение уровня BOR влияет на защиту прошивки?

trymbachyaroslav
Автор

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

NodsFrend
Автор

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

CadmiumUA
Автор

* @brief Launch the option byte loading.
* @note This function will reset automatically the MCU.
я так понимаю на F1 блокировать флешь не надо, ибо оно перезагружается при установке?

clora
Автор

Только 14:01 - неправильный порядок отключения (последующее включение тоже неправильное вообще-то) и кирдык контроллеру или порту отладчика в будущем обеспечен.

ajdarseidzade
Автор

А можно например использовать UID МК он же у каждого свой как серийный номер можно в коде при запуске проверять серийник если он одинаковый тогда программа стартует дальше если нет то попадаем в бесконечный пустой цикл, тогда можно защиту от чтения не городить. Если и считают бинарник или хекс то зашив в другой камень прога просто не запуститься. Как вы думаете такое будет работать?

konstantingolinskiy