|
Что там ST учудил с защитой кода..... |
|
|
|
 |
Ответов
(1 - 55)
|
Jun 9 2015, 19:46
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 9 2015, 22:04)  Или я во что-то не въехал? А какой именно камушек? Ибо CODE Level 1: read protection This is the default protection level when RDP option byte is erased. It is defined as well when RDP value is at any value different from 0xAA and 0xCC, or even if the complement is not correct. • User mode: Code executing in user mode can access main Flash memory and option bytes with all operations. • Debug, boot RAM and boot loader modes: In debug mode (with SWD) or when code is running from boot RAM or boot loader, the main Flash memory and the backup registers (RTC_BKPxR in the RTC) are totally inaccessible. In these modes, even a simple read access generates a bus error and a Hard Fault interrupt. The main Flash memory is program/erase protected to prevent malicious or unauthorized users from reprogramming any of the user code with a dump routine. Any attempted program/erase operation sets the PGERR flag of Flash status register (FLASH_SR). When the RPD is reprogrammed to the value 0xAA to move back to Level 0, a mass erase of the main Flash memory is performed and the backup registers (RTC_BKPxR in the RTC) are reset.
Неплохо защищает Flash и BKP. Если не хранить "необезображенную" копию в RAM не получается, то добро пожаловать в Level 2. Чем он (Level 2) вас не устраивает? JTAG пропадает? А зачем он нужен? Не отлаживаться же.
Сообщение отредактировал IgorKossak - Jun 10 2015, 06:05
|
|
|
|
|
Jun 9 2015, 20:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(adnega @ Jun 9 2015, 22:46)  А какой именно камушек? 439 Цитата(adnega @ Jun 9 2015, 22:46)  Если не хранить "необезображенную" копию в RAM не получается Если нужна возможность фирмваре апдейта юзером, то и не получится никак. Перед записью в любом случае инфа будет в раме, хоть побайтно, хоть поблочно, уже не так важно. Даже если удастся удержать её в регистрах, чё толку? Регистры тоже через жтаг видны :-)))) Цитата(adnega @ Jun 9 2015, 22:46)  Чем он (Level 2) вас не устраивает? JTAG пропадает? А зачем он нужен? Не отлаживаться же. Может и устроит, но это требует тщательного тестирования бутлодыря. А то есть хороший шанс запороть всю партию нафиг.
|
|
|
|
|
Jun 9 2015, 20:16
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 9 2015, 23:05)  Если нужна возможность фирмваре апдейта юзером, то и не получится никак. Перед записью в любом случае инфа будет в раме, хоть побайтно, хоть поблочно, уже не так важно. Еще как получится, мне кажется вы слегка "перебдели") Ну вижу я всю раму, что с того? Где начало прошивки, где конец, по какому адресу писать во Flash, как рассчитывается CRC для проверки корректности, и т.п. Мало иметь данные, нужно иметь синхронизацию и знать весь алгоритм. Чтобы было понятнее, я утрирую: "а вы не боитесь за свои пароли глядя на алфавит"?
|
|
|
|
|
Jun 9 2015, 20:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(adnega @ Jun 9 2015, 23:16)  Еще как получится, мне кажется вы слегка "перебдели") Ну вижу я всю раму, что с того? Где начало прошивки, где конец, по какому адресу писать во Flash, как рассчитывается CRC для проверки корректности, и т.п. Мало иметь данные, нужно иметь синхронизацию и знать весь алгоритм. Чтобы было понятнее, я утрирую: "а вы не боитесь за свои пароли глядя на алфавит"? Да не, неправильно вы говорите. Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими :-)))))) Если чё, я и сам когда-то в реверсинге довольно серьёзные вещи делал.
|
|
|
|
|
Jun 9 2015, 20:43
|

Гуру
     
Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463

|
QUOTE (adnega @ Jun 10 2015, 00:36)  Если обновляется только юзерская часть, а загрузчик фиксированный во Flash, то Level 1 вполне достаточно. Прошивку можно вообще нешифрованной распространять (но нужно обезопасить себя от подделки прошивки) - толку от нее ноль без загрузчика. Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика. Это быстро раскалывается, с аесом, пока ни у кого из моих конкурентов не получилось, пытались раскалывать 12в импульсами, вроде как раньше пики, атмела открывали. Пока только попалили STM процы.
|
|
|
|
|
Jun 9 2015, 20:58
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(adnega @ Jun 9 2015, 23:36)  Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика. Да вы што, ну хде хотя бы минимум фантазии?? Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик. Насчёт всяких колхозных "хитрушек" повторяю:: если бы они работали, то человечеству не пришлось бы изобретать шифры, хэши, цифровые подписи и так далее. Вообще, у меня защита кода в контроллере это не основной уровень защиты. В системе ещё есть сравнительно толстая плисина, которая производит аутентификацию специализированной микросхемы. Но код в контроллере всё равно защитить хочется. Сегодня только комплексные меры работают. И то не против всех.
|
|
|
|
|
Jun 9 2015, 21:08
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
перестановочный шифр не взламываемый, потому что не меняет энтропию текста. проблема перестановочного шифра сохранить конфиденциальность ключа.
Если есть загрузчик закрытый и защищенный с этим ключем, и есть ваша прошивка сформированная по этому ключу, и вы его никому не сообщили, то какой толк от того что она лежит в РАМе и ее кто-то скачал.
на пальцах вы решаете что 1 блок прошивке пишете в 5 адрес, 2 блок в 1, 3 в 4, 4 в 2, 5 в 3. дальше прошивка 1 2 3 4 5 превращается в 5 1 4 2 3 - это вы и распространяете. Это человек и считает из РАМ, но только ваш загрузчик разложит это как надо чтобы оно запустилось. И реверс инженерить это никаких шансов, потому что строго говоря это каша а не прошивка.
А загрузчик закрыт и как он раскладывает вам не понятно. Потому и свою прошивку сделать которая разложиться и заработает крайне трудно...
И что не так? Напоминаю что есть платная услуга по стравливанию кристалла и добычи из него прошивки, и стоит она не космических денег. Если это действительно кому то надо он обойдет все ваши заборы, а обычный гопник и простого не победит... главное не потратить на защиту больше чем она защищает....
|
|
|
|
|
Jun 9 2015, 21:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(Golikov A. @ Jun 10 2015, 00:08)  Глупости от начала до конца. Ещё один наивный хочет защититься, переставив местами куски прошивки :-))))))))) На всякий случай напоминаю:: Тема не о защите/взломе (уверяю, об этом я знаю больше подавляющего числа участников), (и попрошу банальностей и сентенций на эту тему тут не писать) Тема только об особенностях защиты в STM32F439. ВСЁ.
|
|
|
|
|
Jun 9 2015, 21:24
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
ПРОСТИТЕ прочитал вашу добавку после того как написал.... Как вы просите: да начудили они пендосы гадские... вы правы, делать нечего... Дело ваше, вы видать в этом спецЦитата Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими эта фраза показывает что вы понимаете шифрование и зачем какой алгоритм развивают, и какие недостатки решают.
хотел дальше написать простенький и наглядный пример, но думаю приберегу бисер ...как вам тогда такой вариант. Загрузчик не получив на вход специальной последовательности в течении какого-то времени сам отключает Jtag? Ведь он вам нужен только на случай Цитата Может и устроит, но это требует тщательного тестирования бутлодыря. А то есть хороший шанс запороть всю партию нафиг. Странно конечно видеть у такого профика сомнения в силах написать бутлоадер без ошибок, но тем не менее.. Пользователю при штатном обновлении он же не нужен, жетаг, а он дыра в вашей обороне, без кода он отключиться и проблема решена, что не так?
|
|
|
|
|
Jun 10 2015, 06:17
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 9 2015, 23:58)  Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик. Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было. А второе условие, что алгоритм работы загрузчика закрыт. Если с помощью JTAG можно восстановить алгоритм работы загрузчика и узнать способ подделки прошивки, то JTAG нужно отключить. Но мне кажется это очень-очень сложным (по шагам с анализом всей RAM), по сравнению с написанием собственной прошивки. Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию?
|
|
|
|
|
Jun 10 2015, 06:55
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(mantech @ Jun 10 2015, 08:58)  Бутлодырь такой навороченный, что его нельзя нормально протестить? Честно говоря никогда таких проблем не было  Ребята, вы немного не зазнавайтесь там :-))) Помнится, я тут спрашивал, например, кто какой скорости работы по USB HS добился, в ответ молчок. То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него), хотя я несколько месяцев с СТМ работаю, а некоторые якобы уже много лет, зато все уверяют что могут за скромное время (адекватное задаче) всё это абсолютно безглючно написать и протестить :-)))) Ну блажен кто верует :-)))) Цитата(adnega @ Jun 10 2015, 09:17)  Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было. А второе условие, что алгоритм работы загрузчика закрыт. Как вы не поймёте, что единственная защита это неизвестность ключа АЕС Именно это и ТОЛЬКО это и можно подразумевать под "прошивку обезопасить от подделки" и "алгоритм работы закрыт", ну это же банальность, почему это приходится столько раз напоминать? Иначе ваше "условие" звучит так: у меня самый навороченный замок, главное чтобы никто не догадался что ключ всегда под ковриком. Цитата(adnega @ Jun 10 2015, 09:17)  Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию? Вот русским языком же говорю третий раз что загрузчик написан (и не простейший, а нормальный по юсб), и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё.
|
|
|
|
|
Jun 10 2015, 07:03
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Dr.Alex @ Jun 10 2015, 09:55)  То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него), Может не в тему, но зачем?? Там прошивка десятки мегабайт или нужно, чтоб прошилось за микросекунду?? Хотя, о чем я, флешка шьется гораздо дольше, чем передаются данные Я не зазнаюсь, конечно, но уж бутлодыри с усб, FS, конечно, делал и не один, шифрование использовал свой доработанный алгоритм, работал с усб флешки и сд карты, за полтора года ни одного нарекания на работу бута, контроллер стм 32ф407. Не вижу никаких проблем с тестированием бутлодыря.
|
|
|
|
|
Jun 10 2015, 07:08
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Я не очень понимаю смысл темы. Вам говорят решения, в ответ мы слышим "чушь!", "фигня!", "бред!", "вы не разбираетесь, я вот все знаю". Ну знаете, так в чем проблема, к нам то вы чего пристали? Пожаловаться на жизнь? Ну жене пожалуйтесь.... многих пользователе STM все устраивает, но они наверное меньше вас разбираются в том что Цитата единственная защита это неизвестность ключа АЕС недоросли, простите....
|
|
|
|
|
Jun 10 2015, 07:20
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(mantech @ Jun 10 2015, 10:03)  Может не в тему, но зачем?? Верно ли я вас понял что юзеру удобнее взять кустарный датакабель (который ещё у меня монтажник должен сделать и который юзер ещё чудом не потерял), открыть корпус, присобачить его в технологический разъём и затем долго искать разъём COM-порта на своём компе? А прошивка может все 2 метра занимать (код + несколько прошивок для артикса). Цитата(Golikov A. @ Jun 10 2015, 10:08)  Вам говорят решения, в ответ мы слышим "чушь!", "фигня!", "бред!", "вы не разбираетесь, я вот все знаю". Ну знаете, так в чем проблема, к нам то вы чего пристали? Пожаловаться на жизнь? Ну жене пожалуйтесь.... недоросли, простите.... Уникальный человече :-))))))))))))))))))))))))))) НИКАКИХ РЕШЕНИЙ, тем более у ВАС, я не спрашивал, потому что ВЫ действительно не доросли. И уж тем более не мог приставать к кому-то в СВОЕЙ теме. ТЕМА ОБ ОСОБЕННОСТЯХ ШТАТНОЙ ЗАЩИТЫ STM32 Верно ли я понял существующие режимы или в чём-то ошибся.Кстати, кто какие реально использует? RDP 1? RDP 2? PCROP? Что-то ещё забыл?
|
|
|
|
|
Jun 10 2015, 07:25
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 10 2015, 09:55)  Как вы не поймёте, что единственная защита это неизвестность ключа АЕС Именно это и ТОЛЬКО это А для всех ли систем это справедливо? Если есть доступ через интерфейс отладчика, очевидно, что "неизвестности ключа" мало. У каждого правила есть рамки применимости (которые не во всех книжках указывают), а вы слишком категоричны. По теме: 1. В USB жесткие тайминги. Отладка будет сильно затруднена, т.к. интерфейс будет отваливаться на стороне хоста. Добавить условие, что прошивать можно только через 10 минут после "power on reset" и жизнь врага станет адом. 2. В режиме отладки стирание/запись во Flash не работает. Вы даже стирание страницы не сможете произвести. Да, одну страницу враг может и утянет. При чем тут ST и "чудачества"? Как по-вашему должен был бы работать идеальный Level 1? JTAG для одной команды Mass Erase что ли? PS. Создается впечатление, что вас на ST насильно пересадили)
|
|
|
|
|
Jun 10 2015, 07:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(adnega @ Jun 10 2015, 10:25)  А для всех ли систем это справедливо? Если есть доступ через интерфейс отладчика, очевидно, что "неизвестности ключа" мало. В этом случае ключ быстро станет известным, а то и сами данные. Так что всё нормльно. Цитата(adnega @ Jun 10 2015, 10:25)  По теме: ... ... При чем тут ST и "чудачества"? Как по-вашему должен был бы работать идеальный Level 1? JTAG для одной команды Mass Erase что ли? PS. Создается впечатление, что вас на ST насильно пересадили) Мне пабарабану, какое создаётся впечатление, но всё это как раз не по теме. Если не нравится, как я написал заголовок, пожалуйтесь модератору, он переименует. Тема: какие режимы лично ВЫ используете, и каковы их особенности. Было бы лучше если бы левел2 был обратим. Ведь делается же массЕрасе при сбросе левела1!
|
|
|
|
|
Jun 10 2015, 07:42
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Dr.Alex @ Jun 10 2015, 10:20)  Верно ли я вас понял что юзеру удобнее взять кустарный датакабель (который ещё у меня монтажник должен сделать и который юзер ещё чудом не потерял), открыть корпус, присобачить его в технологический разъём и затем долго искать разъём COM-порта на своём компе?
А прошивка может все 2 метра занимать (код + несколько прошивок для артикса). Нет, в моем буте все гораздо удобнее - есть прошивка на флешке или сд карте, чел просто берет вставляет ее в контроллер, жмет кнопку и смотрит, пока мигает светодиод, сек 2-3 как правило, потом просто вытаскивает флеху и вставляет в след. контроллер. Причем не надо ни кабелей, ни компа с программой для перепрошивки, по-моему очень удобно.  ЗЫ. Использую level 2.
Сообщение отредактировал mantech - Jun 10 2015, 07:43
|
|
|
|
|
Jun 10 2015, 07:52
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 10 2015, 10:35)  Тема: какие режимы лично ВЫ используете, и каковы их особенности. Было бы лучше если бы левел2 был обратим. Ведь делается же массЕрасе при сбросе левела1! Насчет названия: Как правило темы, начинающиеся с "ST учудил", заканчиваются выводом "сам дурак". Помню единственное исключение, когда была опечатка в документации от ST (с кем не бывает?). По теме: Level_1 это обратимый Level_2 в вашей терминологии. Level_2 это способ сделать так, чтобы враг не смог стереть прошивку в принципе. Давайте попробуем виртуально повзламывать прошивку в Level_1 через отладчик? 0. Подключаемся по JTAG. 1. По USB приходит команда обновить прошивку. 2. Загрузчик пытается стереть/подготовить сектор и обламывается. Ибо Цитата Any attempted program/erase operation sets the PGERR flag of Flash status register (FLASH_SR). 3. Процесс обновления заканчивается с ошибкой. Разве не так?
|
|
|
|
|
Jun 10 2015, 07:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(adnega @ Jun 10 2015, 10:52)  Как правило темы, начинающиеся с "ST учудил", заканчиваются выводом "сам дурак". Меня это совершенно не волнует. Я слишком большой сноб и слишком уверен в себе, чтобы об этом беспокоиться. Цитата(adnega @ Jun 10 2015, 10:52)  Any attempted program/erase operation sets the PGERR flag of Flash status register (FLASH_SR). Это откуда? У меня в RM0090 rev7 такого вроде нет. Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))
|
|
|
|
|
Jun 10 2015, 09:28
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Dr.Alex @ Jun 10 2015, 10:59)  Это откуда? У меня в RM0090 rev7 такого вроде нет. Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-)))) Я брал у stm32f0x2, но в RM0090 rev9 в разделе 3.7.3 Read protection (RDP): Цитата When the read protection Level 1 is set: – 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. Что по сути не отличается.
|
|
|
|
|
Jun 11 2015, 16:24
|

Частый гость
 
Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575

|
Цитата(Dr.Alex @ Jun 10 2015, 09:55)  Ребята, вы немного не зазнавайтесь там :-))) Помнится, я тут спрашивал, например, кто какой скорости работы по USB HS добился, в ответ молчок. То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него), и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё. Цитата Или у STM32F207 (я лично получал для Mass-Storage порядка 7-8 МБайт/Сек.). kovigorЦитата у меня получалось более 10мб/с в комплекте с тормозной сд-картой. на ulpi3300 и f215. MBRСкорость High Speed USB на STM32F2/F4ну и далее поиском по форуме на USB3300. Наверное, мало кто вопрос увидел. По теме: со 2 уровня уж никак нельзя проц снять, совсем-совсем?
|
|
|
|
|
Jun 12 2015, 09:04
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Я использую ROP=1 для защиты бутлоадера, обновление через USB (USB-flash). При включенном ROP=1 нельзя посмотреть содержимое RAM, FLASH или регистров, нельзя запустить код в RAM, можно только изменить уровень защиты на нулевой (ROP=0), но это приведет к автоматическому стиранию flash. Поэтому не вижу способа взлома через JTAG/SWD. ROP=1 вполне достаточно для защиты бутлоадера, а защита самой программки - это уж дело бутлоадера (шифрование, цифровая подпись). Если я не прав, то расскажите хоть приблизительно технологию, как можно "утянуть" бутлоадер или расшифровать прошивку.
|
|
|
|
|
Jun 12 2015, 11:49
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Цитата(Dr.Alex @ Jun 12 2015, 12:53)  Я знаю не ROP а RDP, и при RDP=1 как раз есть доступ к РАМ (кроме бэкап) и регистрам. ROP/RDP - это одно и то же (read out protection). В режиме 1 можно запустить программу из RAM, но доступ к flash из этой программы невозможен. Для полного спокойствия нужно сразу после запуска перевести линии SWD/JTAG в режим IO и доступ будет полностью отрезан.
|
|
|
|
|
Jun 12 2015, 12:11
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Цитата(ViKo @ Jun 12 2015, 14:54)  Должна стереться вся флэш-память. В том числе и сектор 0? И ошибка от стирания защищенного сектора уже не сработает? Какой выигрыш я получу, защищая сектор 0 от записи?  Если защитить сектор от записи, но не установить read out protection = 1, этот сектор можно прочитать через SWD/JTAG. Если установить read out protection = 1, то, независимо от защиты на запись, прочитать ничего нельзя. Если установлен read out protection = 1, и установить установить read out protection = 0 (отключить звщиту), то все содержимое flash будет стерто, не взирая на защиту от записи.
|
|
|
|
|
Jun 12 2015, 12:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(bugdesigner @ Jun 12 2015, 14:49)  В режиме 1 можно запустить программу из RAM, но доступ к flash из этой программы невозможен. Достаточно того, что есть доступ к РАМ и регистрам. Цитата(bugdesigner @ Jun 12 2015, 14:49)  Для полного спокойствия нужно сразу после запуска перевести линии SWD/JTAG в режим IO и доступ будет полностью отрезан. Никакого полного спокойствия не предвидится. От ресета до того, как вы отключите жтаг, пройдёт много тактов процессора, достаточно для того чтобы автоматическая программа (а не юзер, шлёпающий по кнопкам IARa) успела подключиться и помешать вам отключить жтаг.
|
|
|
|
|
Jun 12 2015, 14:34
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Цитата(ViKo @ Jun 12 2015, 15:27)  Сбрасываем уровень защиты чтения на 0. Сотрутся все секторы, даже если они защищены от записи. Те защита от записи в этой ситуации игнорируется. Цитата(Dr.Alex @ Jun 12 2015, 15:15)  От ресета до того, как вы отключите жтаг, пройдёт много тактов процессора, достаточно для того чтобы автоматическая программа (а не юзер, шлёпающий по кнопкам IARa) успела подключиться и помешать вам отключить жтаг. Ну и что в результате? Доступа к содержимому флеш нет. Какую полезную информацию можно получить от содержимого памяти и регистров на момент инициализации GPIO?
|
|
|
|
|
Jun 12 2015, 19:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(bugdesigner @ Jun 12 2015, 17:34)  Ну и что в результате? Доступа к содержимому флеш нет. Какую полезную информацию можно получить от содержимого памяти и регистров на момент инициализации GPIO? Вы кажется пропустили всю тему. Во-первых есть возможность не дать записать в регистры то что не нужно, то есть не дать отключить жтаг. А за тем вынуть из РАМ либо ключ аеса либо декодированную прошивку.
|
|
|
|
|
Jun 13 2015, 04:48
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133

|
Цитата(Dr.Alex @ Jun 12 2015, 22:27)  Во-первых есть возможность не дать записать в регистры то что не нужно, то есть не дать отключить жтаг. А за тем вынуть из РАМ либо ключ аеса либо декодированную прошивку. Допустим, что мы успели приаттачиться к DP до момента, пока он не был отключен. Теперь нам нужно пропустить момент отключения DP и запустить ядро процессора. Что у нас получится - HardFault, потому, что доступ к flash при подключенном DP заблокирован. Можете провести экспериментик - напишите маленькую программку, чтоб гоняла какой-нибудь цикл, поставьте RDP=1 и попробуйте подключиться к SWD/JTAG дебаггером. А потом попробуйте запустить свой код из flash.
|
|
|
|
|
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
|
|
|