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

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> stm32F10x- защита от чтения , использование flash как eeprom и собственный бутлоадер, нюансы реализации.
Serj78
сообщение Apr 16 2013, 15:14
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Прошу помощи у коллег кто сталкивался с подобным противоречием..

Если ставить бит защиты от считывания- то он автоматически блокирует запись в память. ( Например чтобы не закатали через бутлоадер утилитку по считыванию памяти, такова идея защиты разработчиков ST)
Блокирует из любого источника или только со стороны бутлоадера?
Кажется на первый взгляд из любого, т.к через SWD также нельзя записать ничего.
При этом также ничего нельзя писать в память из приложения, те эмуляция eeprom для хранения настроек не возможна.. Или это не так?


Если мы хотим сделать собственный бутлоадер, то как нам закрыть доступ из встроенного?
и если мы отключили в программе swd то к swd нельзя ли подключиться до инициализации портов, и делать через него что-то ? (например читать память..)

Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 16 2013, 16:31
Сообщение #2


Гуру
******

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



...Если мы хотим сделать собственный бутлоадер, то как нам закрыть доступ из встроенного?
Просто при старте не заходите в режим встроенного бутлоадера. Пишите собственный и загружаете программу им.

Интересно, что вы такое планируете делать до инициализации портов? Ну не проиницилизировали, проигнорировали проще говоря. Ну так они по заводским установкам и остались, в даташите описано в каких они сосотяниях.

Порты выделяемые под SWD, JTAG могут использоватся рабочей программой так как вы их назначите. SWD не будет доступен, если вы не определите
выделенные для него порты при иницилизации. Также установка коде протекта не дает вам возможность ипользовать порты для отладки, даже если вы их не переназначили и оставили в режиме для отладки.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 17 2013, 07:53
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Насколько я понимаю, эти фьюзы запрещают программирование извне или из программы в SRAM. Программа из флеша может писать во флеш
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 08:31
Сообщение #4


Гуру
******

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



Не совсем так, или совсем не так. Фьюзы коде-протект (к-п) запрещают не только программирование извне, но и отладку и считывание программы. С установленным к-п вы можете только стереть, затем делать запись. Если пишите свой загрузчик, то наверное вы его защищаете и ставите к-п. В этом случае вы можете загружать рабочую программу в озу и прошивать флешь и таким образом будете делать абдейт вашего девайса. Загрузчик может быть написан таким образом, что сам устанавливает к-п по завершению загрузки. Но это еще не все. Появляется бэк-дор. Поскольку ваш загрузчик и загружаемая программа пишутся в открытом коде то есть вероятность, что продвинутые парни могут легко вскрыть это. Так как чип уже к-п, но ваш загрузчик пишет программу для абдейта в озу. По этому требуется криптовать загружаемую программу для большей уверенности.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 17 2013, 08:36
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Serj78 @ Apr 16 2013, 19:14) *
и если мы отключили в программе swd то к swd нельзя ли подключиться до инициализации портов, и делать через него что-то ? (например читать память..)
Можно. Была подобная тема, когда человек случайно вырубал JTAG в загруженной в чип программе и никак не мог его прошить.
Ему посоветовали подать на boot0 и boot1 комбинацию, запускающую заводской uart-bootloader, который, как известно, не отключает JTAG и ... спокойно подключиться по JTAG.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 09:14
Сообщение #6


Гуру
******

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



QUOTE (demiurg_spb @ Apr 17 2013, 11:36) *
Можно. Была подобная тема, когда человек случайно вырубал JTAG в загруженной в чип программе и никак не мог его прошить.
Ему посоветовали подать на boot0 и boot1 комбинацию, запускающую заводской uart-bootloader, который, как известно, не отключает JTAG и ... спокойно подключиться по JTAG.

Это в том случае, если коде-протект не установлен. Если установлен подключиться по JTAG не получиться.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 17 2013, 09:29
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Aner @ Apr 17 2013, 13:14) *
Это в том случае, если коде-протект не установлен. Если установлен подключиться по JTAG не получиться.


Получится то наверное получится, но прочитать прогу - нет. А перед записью сотрется флеш.

Как я понимаю, никаких бэкдоров там нет. Вы пишите свой загрузчик и ставите фьюз защиты. После этого только программа из датафлеша сможет писать датафлеш (т.е. ваш загрузчик и та ваша прошивка, которую загрузчик зальет во флеш).
Если вы подключите ножки boot таким образом, что запустится программа из SRAM, то писать и читать датафлеш она не сможет (только стерев его предварительно)

Соответственно, нужна подпись вашей прошивки - чтобы загрузчик не залил что-то левое, которое к примеру передаст код загрузчика наружу
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 10:16
Сообщение #8


Гуру
******

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



Немного не так. Вы пишите свой загрузчик и ставите фьюз защиты, затем вы загружаете рабочую прогу в SRAM, проверяете на соответсвие затем во флеш. По завершении опять проверка затем старт. Без проверки есть вероятность записи ошибки и тогда непонятки в работе проги. Ножки boot более не тогаем они нужны вначале только для заливки своего загрузчика. Бэк-дор открыт теперь, несмотря на вашу подпись, поскольку доступ к SRAM есть. А оттуда можно вытащить все и ваш писаный загрузчик тоже, несмотря на то, что стоит защита.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 17 2013, 10:33
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Aner @ Apr 17 2013, 14:16) *
Немного не так. Вы пишите свой загрузчик и ставите фьюз защиты, затем вы загружаете рабочую прогу в SRAM, проверяете на соответсвие затем во флеш.

Я пишу сразу во флеш, но это мелочи. Проверяю до загрузки первый блок - просто чтобы сразу отклонить что-то левое. Потом после окончания загрузки - все. Если проверка удачна - ставлю соответствующий статус в выделенной странице флеши - при включении загрузчик его проверяет и передает управление программе.

Цитата
Бэк-дор открыт теперь, несмотря на вашу подпись, поскольку доступ к SRAM есть. А оттуда можно вытащить все и ваш писаный загрузчик тоже, несмотря на то, что стоит защита.

Нельзя. Читаем даташит на stm32f100x
Цитата
Once the protection byte has been programmed:
● Main Flash memory read access is not allowed except for the user code (when booting
from main Flash memory itself with the debug mode not active).
● Pages 0-3 (for low- and medium-density value line devices), or pages 0-1 (for high-
density value line devices) are automatically write-protected. The rest of the memory
can be programmed by the code executed from the main Flash memory (for IAP,
constant storage, etc.), but it is protected against write/erase (but not against mass
erase) in debug mode or when booting from the embedded SRAM.
● All features linked to loading code into and executing code from the embedded SRAM
are still active (JTAG/SWD and boot from embedded SRAM) and this can be used to
disable the read protection. When the read protection option byte is altered to a
memory-unprotect value, a mass erase is performed.
● When booting from embedded SRAM, Flash memory access through the code and
through data read using DMA1 and DMA2 are not allowed.
● Flash memory access through data read using JTAG, SWV (serial wire viewer), SWD
(serial wire debug), ETM and boundary scan are not allowed.

Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 10:46
Сообщение #10


Гуру
******

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



Это понятно и это не то. Вы ведь как-то делаете загрузку програмы (абдейты) через ваш згрузчик, кторый под протектом. И если у вас не закриптована загружаемая программа, то протокол снять не проблема и разобрать что к чему не трудно. Затем загрузить прогу для вывода данных в порт и все.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 17 2013, 10:51
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Не, стоп. Вы говорили про бекдор - загрузка сторонней проги в SRAM и вычитка загрузчика? Судя по даташиту, такой возможности нет.

Далее. Основная программа должна быть подписана одним из алгоритмов цифровой подписи. Этого уже достаточно, чтобы через мой загрузчик нельзя было залить троянца (который к примеру сбросит код загрузчика вовне для анализа и выделения ключей).

Дополнительно программа может быть зашифрована - чтобы ее нельзя было скопировать в другое устройство.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 17 2013, 10:55
Сообщение #12


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Aner @ Apr 17 2013, 13:14) *
Это в том случае, если коде-протект не установлен.
Если установлен подключиться по JTAG не получиться.
Подключится можно, но считать прошивку нельзя пока не стёрты биты защиты.
Более того можно стереть чип, а записать новое всё-равно не получится т.к. биты защиты не стираются командой chip-erase как в AVR.
Нужно специально снимать биты защиты. Я не далее как позавчера на этот прикол наткнулся.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 11:47
Сообщение #13


Гуру
******

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



Даташит тут не причём. Проблема, бек дора образуется при написании вашего собственного загрузчика, в отличие от апаратного.

А вот теперь вопрос к тем, кто пишет свой загрузчик. Вы подписываете одним из алгоритмов цифровой подписи? Или нет?
И сколько ресурсов вы отдаете под это?

QUOTE (demiurg_spb @ Apr 17 2013, 13:55) *
Подключится можно, но считать прошивку нельзя пока не стёрты биты защиты.
Более того можно стереть чип, а записать новое всё-равно не получится т.к. биты защиты не стираются командой chip-erase как в AVR.
Нужно специально снимать биты защиты. Я не далее как позавчера на этот прикол наткнулся.

Похоже, только начинаете с ними работать.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Apr 17 2013, 11:49
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Подписываю. Ресурсы именно на подпись не считал. Загрузчик с шифрованием и цифровой подписью, прием по rs232 и еще несколько плюшек на gcc у меня занимает почти 8к. Флаги оптимизации подобрал, писал не сильно заморачиваясь на "С с классами".
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 17 2013, 13:59
Сообщение #15


Гуру
******

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



Алгоритм цифровой подписи вам ничего особенного не дает, разве что при пересылке файла проги быть уверенным, что не подменили или не побилась.
А так программа все равно открыта без крипотвки. Только обязательная криптовка, или шифорвка позволяет защитить до некоторой степени ваш загрузчик и программу. Так что это не дополнительное условие а обязательное. А ваша подпись это доп условие не очень и нужное. Так как жрёт ресурс внутри проца.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 05:09
Рейтинг@Mail.ru


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