Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
TymuxPowirid
1

Мужики, поделитесь bootloaderом

01.01.1970, 03:00. Просмотров 3798. Ответов 42
Метки нет (Все метки)

Я тут учусь STM32 програмить (при том под Linux как раз). Совершенно случайно померял размеры кода которого для таких развлечений хватит с запасом, обрубив tweetnacl (маленькая библа для шифрования от известного криптографа), скомпилив под Sortix M3. Публичная криптография (authenticated encryption) + поточный шифр Salsa20 потянули на 3.5к кода в флеше, ROM почти не использует. И это крипто с публичными ключами. Публичное крипто имеет смысл если хочется пробрасывать новые ключики под носом юзера, чтобы он ключики не узнал, даже если видит весь обмен по каналу. При этом не так уж сложно сделать "базу устройств" и трекать какие устройства сколько раз хотели апдейт. И если кто все-же спиратит, быстро попадется на большом числе запросов для одинакового Device ID.

Но вообще в нормально сделанном "secure" бутлоадере хватает неочевидных вещей. XOR или абы как взятое шифрование чреваты вот чем: если у юзера будет 2 апдейта и он их сравнит, как вы думаете, что юзер увидит при помощи нехитрой математики? Да, можно зарубить, но для этого надо хоть немного в крипто разбираться. Если прошляпить локи - юзер может ввалиться в STшный бут или дебагер и им спереть прошивку или ключи. Tosk level 2 у ST выглядит интересно, но он есть не у всех 32F и пока с ним поиграешься, наверное несколько камней закирпичится. И да простит меня автор, у меня готового бута делающего это пока нет :P. Просто наобум скомпилил крипто либу, она собралась и даже не сильно жирная. И я упражняюсь под Linux и писать шифратор-заливатор под винду - а ну бы его, я winapi уже забыл, дотнеты никогда и не знал, разве что командлайновый утил отладить под Linux и потом на винду портануть, но у меня всяко винды нет нигде. И не будет. К тому же автор не указал по каким интерфейсам он апдейт хочет, сколько флеша под boot готов отдать, как boot должен активироваться и проч. И вопросец выглядит очень уж размыто.

Цитата Сообщение от rymomtsofto
div, меня устроит секундное ожидание перед стартом основной программы. Терминал то файл отправит, только как его принять, если его размер больше оперативки?
Разбить файл на пакеты, очевидно. Только если это делать глупо и наивно - пользователь сможет поприкалываться и возможно разломать даже. Нужна аутентификация пакетов, иначе юзерь свои подсунет. И даже не зная ключа они во что-то расшифруются. Если это запрограммить, ничего хорошего не получится.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.1970, 03:00
Ответы с готовыми решениями:

Мужики
Всех поздравляю с праздником 23 февраля - день вооруженных сил, даже тех к кому неприязнь!!!!

Выручите мужики...
Мужики помогите исправить,В пограмме о DVD фильмах там о Программе убрать автора есть все исходники...

С праздником, мужики!
С праздником, мужики! Всех кто гладил рукой АК, и бегал по тревоге, всех кто стоял на посту и на...

С 23 февраля, мужики!
Все мужское население Киберфорума поздравляю с 23 февраля! В этот день быть особо чтимыми и...

42
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
01.01.1970, 03:00 2
Не могу понять, как восстановить байт, поксоренный со случайным байтом? То есть если для каждого байта прошивки у меня будет случайный байт ключа и между ними xor... два, три апдейта - что это даст взломщику?
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
01.01.1970, 03:00 3
Ну так чо, ни у кого свободного вечера не нашлось? ;)

ТС, не верь им про один вечер. Если раньше с этим не сталкивался, то более реальный расклад: неделя на сам бутлоадер, неделя на шифрование, пару недель на виндовые программы. Если с какой-то темой хорошо знаком, то время сильно сокращается.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
01.01.1970, 03:00 4
Стройка))) Попробую на hiasm накидать. Буду делать, деваться некуда.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,183
01.01.1970, 03:00 5
Так уже дали ссылку на готовый бут с софтом - бери пользуйся
OpenBLT
Прикручивается ну прям влет за вечер.
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
01.01.1970, 03:00 6
Лицензия у него не очень.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
01.01.1970, 03:00 7
Мне пока что не очень важно про лицензию... Читаю - насколько понял, шифрование прикручивать нужно, нету там его.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 249
01.01.1970, 03:00 8
Цитата Сообщение от rymomtsofto
Мне пока что не очень важно про лицензию... Читаю - насколько понял, шифрование прикручивать нужно, нету там его.
ты так паришься как будто супер уникальный продукт делаешь... берешь и делаешь некую строку в буте (например при помощи уникального ID чипа) и дальше делаешь XOR получаемых байтов на эту строку. По окончанию лочишь память.

Как то так. Хотел бы я посмотреть на извращенца который будет пытаться дизассмить даже настолько просто зашифрованную прошивку.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
11.10.2017, 17:25 9
Зреет проект небольшой. Нужен будет бут с шифрованием - прошивку нужно будет, скорее всего, обновлять силами заказчика. Контроллер stm32f030f4p6. Но если что-то универсальное - вообще хорошо. Стыдно, если честно... Нужно самому, конечно, написать. Но время поджимает, боюсь не успеть. Нужно ведь еще и под винду шифратор и заливатор, а тут совсем все плохо))) Может найдутся добрые люди? Я прекрасно понимаю, что очень тяжело отдавать своё, кровью и потом, так сказать, написанное... Но это будет в хорошие руки и с обещанием, если хороший человек пожелает, не распространять)))
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,183
11.10.2017, 18:06 10
https://github.com/saewave/RemoteSwitch ... der/main.c
:)
А в самой прошивке организовываете прием новой прошивки, расшифрование нужным алгоритмом и сохранение на флеш.
Потом ребут, в буте проверяете что есть новая прошивка и заменяете ею старую.
На все один вечер работы и полное понимание процесса.
Библиотека для шифрования дешифрования для STM32 ищется по фразе "stm32 aes"
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 18:29 11
А сколько флеша остается по основной прошивки? А то ведь шифрование недешево.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
11.10.2017, 18:39 12
Я, честно говоря, подозреваю, что когда говорят про один вечер, на самом деле уходит гораздо больше, потому как сам нет-нет могу такое ляпнуть... Оно мне уже нужно просто, и я точно знаю, что даже за неделю плотных читаний и писаний я не получу законченный результат - так как под винду вообще тяжело у меня...
С прыжком все понятно - более или менее... остальное!
Места - сколько нужно. Пишу экономно))) По предварительным прикидкам, конкретно этот проект займет всего 3-4кб.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 886
11.10.2017, 18:55 13
А очему не использовать встроенный загрузчик dfu ?
И программа есть для зашивки.
Даете клиенту dfu файл зашифрованный - он его записывает и делает сброс.
Процессор при старте смотрит что есть новый образ - проверяет его и если надо программирует.

Остается написать (его и так писать надо) декодировщик и проверяльщик что версия новая.
Это и за пару часов можно не спеша сделать.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
11.10.2017, 19:04 14
USB DFU interfosi (STM32F070xx divices only)
Это единственное что есть в RM по сочетанию "DFU"
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 886
11.10.2017, 19:19 15
здесь ищите про F0

полезно и здесь почерпнуть
http://marcelojo.org/marcelojoeng/2015/ ... m32f0.html
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,183
11.10.2017, 19:33 16
Откуда в stm32f030f4p6 DFU ?
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,183
11.10.2017, 19:38 17
to: rymomtsofto
- Как планируете заливать прошивку?
- Нужна именно винда? Под UNIX не катит? (просто там удобней подготовить и пульнуть)
- Прошивка может заливаться только во время работы бута или основная прошивка тоже может принимать обновление?
- Какой протокол шифрования?
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 397
11.10.2017, 20:09 18
- обычный свисток usb-uartTTL, отдам заказчику (ездить самому в Москву на исправления не вариант), нужна софтина, так как просто по терминалу файл отправить не получится.
- винда, да. Никто не будет заморачиваться. Оно мне и на будущее надо.
- не принципиально. Обновления не будут частыми и человек будет подготовлен, сможет ребутнуть.
- я не силен в математике, понравилось из этой статьи - шифр Виженера или rc4 - да я не параноик, никто ковырять не будет, лишь бы на прямую не повторили. Ну если не будущее есть вариант по-надежней - то хорошо.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,183
11.10.2017, 20:33 19
Обновил текст!
Ну если не парится про шифрование то можно здорово сэкономить на размере прошивки, либа для AES займет минимум 2,5КБ, если размер не пугает, то можно так:
Вам нужно зашифровать файл:
Код
aessrypt -e -p {{YOUR_PASCODE_HERE}} {{FIRMWARE.BIN}}
Утилита: https://www.aessrypt.com/windows_aes_crypt.html

Клиенту на винде сварганить батник, который будет на входе принимать имя файла и номер ком порта на котором висит девайс.
В батнике делаем примерно такое:
Код
mode {{COM_PORT}} BAUD=115200 PORITY=n DATA=8
copy {{FIRMWARE.BIN.AES}} /B \\.\{{COM_PORT}} /B
Думаю тут понятно что подставить и где.
Ну а прошивка или бут это примет, расшифрует и сохранит.
Что нужно добавить:
Вряд ли ваша прошивка будет просто ждать данные их UART и принимать их за файл, тогда нужно пульнуть какую-то команду, которая переводит девайс в режим приема прошивки, например
Код
echo new_firmware > {{COM_PORT}
сразу после mode отправит в ком порт строку new_firmware и МК должен потом ожидать прошивку.
Так же было бы крайне хорошо после прошивки пульнуть CRC32 чтоб МК проверил валидность принятых данных.
Как посчитать CRC32 под виндой - я не знаю.
0
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 249
11.10.2017, 20:40 20
а зачем шифрование то ? флеш закрыть после обновления и все.
поясните...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2017, 20:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Мужики, читать всем! :)
Вот как нужно объяснять форумчанам работу компа: http://www.dinews.ru/humor/news3231.html :D:D:D

Мужики, посоветуйте АЦП
Ну, понимаешь, задали мне тут задачку: 12 бит, 1 мегасемпл. Есть ли у кого опыт по получению...

Нужен .bat выручайте мужики!
Поделитесь пожалуйста кто тo .bat (батником) есть список: Товар: 5345435435 Цена:...

Лабораторная работа (мужики выручите)
Парни, выручайте! Помогите пожалуйста с лабораторной работой.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.