|
|
  |
Что там ST учудил с защитой кода..... |
|
|
|
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)  Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию? Вот русским языком же говорю третий раз что загрузчик написан (и не простейший, а нормальный по юсб), и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|