|
Что там ST учудил с защитой кода..... |
|
|
|
 |
Ответов
(45 - 55)
|
Jun 13 2015, 12:01
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Цитата(Dr.Alex @ Jun 13 2015, 12:39)  Не надо запускать свой код из флеш. А что тогда делать? Предложите хоть какой-нибудь алгоритм действий. Запустить свой код из ОЗУ- не получите доступ к флэш. В ОЗУ ничего интересного нет. Что дальше делать?
Сообщение отредактировал bugdesigner - Jun 13 2015, 12:02
|
|
|
|
|
Jun 13 2015, 14:23
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Даже если не отключать дебаг порт, можно и нужно написать бутлоадер так, чтоб по содержимомоу памяти и регистров нельзя было ничего утянуть. 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. Единственное что можно - это отключиться и ресетнуть МК. Пошаговое выполнение, естественно, невозможно. Все это было проверено мной несколько лет назад на железе, можете запустить дебаггер и попробовать. Если найдете "лазейку" - снимаю шляпу.
|
|
|
|
|
Jun 13 2015, 19:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(bugdesigner @ Jun 13 2015, 17:23)  Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию". Вы уже достали со своей флешью. Она нафиг мне не нужна. Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле. Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.
|
|
|
|
|
Jun 14 2015, 04:08
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Dr.Alex @ Jun 13 2015, 22:11)  Вы уже достали со своей флешью. Она нафиг мне не нужна. Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле. Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит. Флэш обязательно нужна. В те моменты времени, когда дебаг порт доступен для подключения, ключ шифрования лежит только во флэш, и вынуть его оттуда после подключения к дебаг порту не получится никак(чисто аппаратные способы взлома не учитываем  ). И, наоборот, когда ключ шифрования теоретически доступен для вытаскивания отладчиком(например, при переписывании из флэша в криптомодуль он светится в регистрах процессора), дебаг порт уже недоступен.
|
|
|
|
|
Jun 14 2015, 06:49
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(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)  Но всё равно просматриваются варианты изучить протокол юсб (соснифить работу загрузочного софта), написать свой муляж софта, и затем покопаться жтагом во всех доступных местах (недоступен-то только флеш) чтобы заставить бутлодырь сделать ошибку. И как вы предлагаете защититься от этого на уровне проца? Опять же, вам уже писали, за не слишком космическую денежку можно вычитать из проца вашу программу вместе со всеми ключами. Подозреваю это будет проще и дешевле предлагаемого вами
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|