Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что там ST учудил с защитой кода.....
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
bugdesigner
Даже если не отключать дебаг порт, можно и нужно написать бутлоадер так, чтоб по содержимомоу памяти и регистров нельзя было ничего утянуть.
1. Ключи AES разместить в flash, и заносить их сразу в регистры CRYP_Kxx (прочитать их нельзя - доступ Write Only)
2. Запихивать блочками по 4 байта прошивку из внешнего носителя (USB, SD) и вычитывая сразу занписывать во внутреннюю flash
В результате, в любой момент времени, в памяти нет ни кусочков прошивки, ни ключей.


Цитата(Dr.Alex @ Jun 13 2015, 17:04) *
Варианты навскидку:
1) прописывать PC, пытаясь перепрыгнуть нежелательный участок
2) останавливать проц через каждые несколько тактов и перезаписывать "опасные" регистры, не давая проге записать туда то что ей нужно

Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию". Таким образом Вы не можете ни продолжить, не перезапустить выполнение программы из flash. Единственное что можно - это отключиться и ресетнуть МК.
Пошаговое выполнение, естественно, невозможно.
Все это было проверено мной несколько лет назад на железе, можете запустить дебаггер и попробовать. Если найдете "лазейку" - снимаю шляпу.
Golikov A.
Цитата
то в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash

Ага спасибо, примерно так я себе это и видел.
Dr.Alex
Цитата(bugdesigner @ Jun 13 2015, 17:23) *
Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию".

Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.
Timmy
Цитата(Dr.Alex @ Jun 13 2015, 22:11) *
Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.

Флэш обязательно нужна. В те моменты времени, когда дебаг порт доступен для подключения, ключ шифрования лежит только во флэш, и вынуть его оттуда после подключения к дебаг порту не получится никак(чисто аппаратные способы взлома не учитываемsm.gif). И, наоборот, когда ключ шифрования теоретически доступен для вытаскивания отладчиком(например, при переписывании из флэша в криптомодуль он светится в регистрах процессора), дебаг порт уже недоступен.
Непомнящий Евгений
Цитата(adnega @ Jun 10 2015, 10:52) *
Давайте попробуем виртуально повзламывать прошивку в Level_1 через отладчик?
0. Подключаемся по JTAG.
1. По USB приходит команда обновить прошивку.


Гм. Когда вы подключаетесь через JTAG к залоченному процу, код из FLASH исполняться не будет. Вы можете подключиться житагом и загрузить свой собственный код из ОЗУ к примеру. Однако этот код не будет иметь доступа к FLASH

Цитата
No access (read, erase, program) to Flash memory or backup SRAM can be
performed while the debug feature is connected or while booting from RAM or
system memory bootloader. A bus error is generated in case of read request.


Цитата(Dr.Alex @ Jun 10 2015, 10:59) *
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))


Когда вы подключите житаг к работающему процу, произойдет сброс. Регистры блока крип при этом обнулятся. Ваш загрузчик из FLASH не сможет быть запущен при подключенном житаге и Level1

Т.е. максимум что вы получите - это содержимое ОЗУ на момент сброса.

UPD Тут я похоже наврал, сброса не будет. Но регистры блока cryp - write-only. Кроме того, вам уже написали выше, что можно отключить ножки отладки - таким образом во время работы программы вы к процу подключиться не сможете - только после сброса.


Цитата(Dr.Alex @ Jun 10 2015, 12:36) *
Но всё равно просматриваются варианты изучить протокол юсб (соснифить работу загрузочного софта), написать свой муляж софта, и затем покопаться жтагом во всех доступных местах (недоступен-то только флеш) чтобы заставить бутлодырь сделать ошибку.


И как вы предлагаете защититься от этого на уровне проца? Опять же, вам уже писали, за не слишком космическую денежку можно вычитать из проца вашу программу вместе со всеми ключами. Подозреваю это будет проще и дешевле предлагаемого вами
Dr.Alex
Неужели не понятно, что если бы был 100-процентный способ отключить жтаг при левеле1, то не требовался бы левел2?

Поскольку каждый вновь зашедший начинает перечислять все глупости заново (как и всегда),
и совершенно не хочет думать головой, приходится закрыть тему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.