реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Closed TopicStart new topic
> Что там ST учудил с защитой кода.....
Dr.Alex
сообщение Jun 9 2015, 19:04
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Вроде бы сразу несколько возможностей, а всё отстой какой-то....
Если сделать RDP Level 2, то необратимо отваливается JTAG.
Если включить всё остальное вместе взятое (RDP Level 1 и PCROP), то фактически защиты нифига никакой нет.
Пример: есть бутлодырь, грузящий шифрованную АЕСом прошивку по USB.
Но если подключиться жтагом во время прошивки, то можно будет найти в RAM расшифрованную прошивку, или сразу ключи АЕСа.
Так ведь? Или я во что-то не въехал?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 9 2015, 19:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 9 2015, 19:51
Сообщение #3


Гуру
******

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



Зачем так делать? Пишите свой бутлодырь с закрывашкой на конце.
Рестарт, затем грузите шифрованную АЕСом прошивку по USB. Второй рестарт, готово.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:05
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 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 пропадает? А зачем он нужен? Не отлаживаться же.

Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 9 2015, 20:16
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:05) *
Если нужна возможность фирмваре апдейта юзером, то и не получится никак.
Перед записью в любом случае инфа будет в раме, хоть побайтно, хоть поблочно, уже не так важно.

Еще как получится, мне кажется вы слегка "перебдели")
Ну вижу я всю раму, что с того? Где начало прошивки, где конец, по какому адресу писать во Flash, как рассчитывается CRC для проверки корректности, и т.п.
Мало иметь данные, нужно иметь синхронизацию и знать весь алгоритм.
Чтобы было понятнее, я утрирую: "а вы не боитесь за свои пароли глядя на алфавит"?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:21
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



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

Да не, неправильно вы говорите.
Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими :-))))))
Если чё, я и сам когда-то в реверсинге довольно серьёзные вещи делал.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 9 2015, 20:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:21) *
Да не, неправильно вы говорите.

Если обновляется только юзерская часть, а загрузчик фиксированный во Flash, то Level 1 вполне достаточно.
Прошивку можно вообще нешифрованной распространять (но нужно обезопасить себя от подделки прошивки) - толку от нее ноль без загрузчика.
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 9 2015, 20:43
Сообщение #8


Гуру
******

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



QUOTE (adnega @ Jun 10 2015, 00:36) *
Если обновляется только юзерская часть, а загрузчик фиксированный во Flash, то Level 1 вполне достаточно.
Прошивку можно вообще нешифрованной распространять (но нужно обезопасить себя от подделки прошивки) - толку от нее ноль без загрузчика.
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.

Это быстро раскалывается, с аесом, пока ни у кого из моих конкурентов не получилось, пытались раскалывать 12в импульсами, вроде как раньше пики, атмела открывали.
Пока только попалили STM процы.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:58
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 9 2015, 23:36) *
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.

Да вы што, ну хде хотя бы минимум фантазии??
Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик.

Насчёт всяких колхозных "хитрушек" повторяю:: если бы они работали, то человечеству не пришлось бы изобретать шифры, хэши, цифровые подписи и так далее.

Вообще, у меня защита кода в контроллере это не основной уровень защиты.
В системе ещё есть сравнительно толстая плисина, которая производит аутентификацию специализированной микросхемы.
Но код в контроллере всё равно защитить хочется. Сегодня только комплексные меры работают. И то не против всех.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 9 2015, 21:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 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 - это вы и распространяете. Это человек и считает из РАМ, но только ваш загрузчик разложит это как надо чтобы оно запустилось. И реверс инженерить это никаких шансов, потому что строго говоря это каша а не прошивка.

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

И что не так?
Напоминаю что есть платная услуга по стравливанию кристалла и добычи из него прошивки, и стоит она не космических денег. Если это действительно кому то надо он обойдет все ваши заборы, а обычный гопник и простого не победит... главное не потратить на защиту больше чем она защищает....
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 21:16
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(Golikov A. @ Jun 10 2015, 00:08) *

Глупости от начала до конца.
Ещё один наивный хочет защититься, переставив местами куски прошивки :-)))))))))

На всякий случай напоминаю::
Тема не о защите/взломе (уверяю, об этом я знаю больше подавляющего числа участников),
(и попрошу банальностей и сентенций на эту тему тут не писать)
Тема только об особенностях защиты в STM32F439. ВСЁ.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 9 2015, 21:24
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ПРОСТИТЕ прочитал вашу добавку после того как написал.... Как вы просите:
да начудили они пендосы гадские... вы правы, делать нечего...


Дело ваше, вы видать в этом спец
Цитата
Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими


эта фраза показывает что вы понимаете шифрование и зачем какой алгоритм развивают, и какие недостатки решают.

хотел дальше написать простенький и наглядный пример, но думаю приберегу бисерwink.gif...



как вам тогда такой вариант. Загрузчик не получив на вход специальной последовательности в течении какого-то времени сам отключает Jtag? Ведь он вам нужен только на случай
Цитата
Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.


Странно конечно видеть у такого профика сомнения в силах написать бутлоадер без ошибок, но тем не менее.. Пользователю при штатном обновлении он же не нужен, жетаг, а он дыра в вашей обороне, без кода он отключиться и проблема решена, что не так?
Go to the top of the page
 
+Quote Post
mantech
сообщение Jun 10 2015, 05:58
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Dr.Alex @ Jun 9 2015, 23:05) *
Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.


Бутлодырь такой навороченный, что его нельзя нормально протестить? Честно говоря никогда таких проблем не было laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 06:17
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:58) *
Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик.

Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было.
А второе условие, что алгоритм работы загрузчика закрыт.

Если с помощью JTAG можно восстановить алгоритм работы загрузчика и узнать способ подделки прошивки, то JTAG нужно отключить.
Но мне кажется это очень-очень сложным (по шагам с анализом всей RAM), по сравнению с написанием собственной прошивки.

Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 06:55
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(mantech @ Jun 10 2015, 08:58) *
Бутлодырь такой навороченный, что его нельзя нормально протестить? Честно говоря никогда таких проблем не было laughing.gif

Ребята, вы немного не зазнавайтесь там :-)))
Помнится, я тут спрашивал, например, кто какой скорости работы по USB HS добился, в ответ молчок.
То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него),
хотя я несколько месяцев с СТМ работаю, а некоторые якобы уже много лет,
зато все уверяют что могут за скромное время (адекватное задаче) всё это абсолютно безглючно написать и протестить :-))))
Ну блажен кто верует :-))))

Цитата(adnega @ Jun 10 2015, 09:17) *
Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было.
А второе условие, что алгоритм работы загрузчика закрыт.

Как вы не поймёте, что единственная защита это неизвестность ключа АЕС
Именно это и ТОЛЬКО это и можно подразумевать под "прошивку обезопасить от подделки" и "алгоритм работы закрыт",
ну это же банальность, почему это приходится столько раз напоминать?
Иначе ваше "условие" звучит так: у меня самый навороченный замок, главное чтобы никто не догадался что ключ всегда под ковриком.

Цитата(adnega @ Jun 10 2015, 09:17) *
Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию?

Вот русским языком же говорю третий раз что загрузчик написан (и не простейший, а нормальный по юсб),
и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 14:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01508 секунд с 7
ELECTRONIX ©2004-2016