Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
TymuxPowirid
1

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

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

Author24 — интернет-сервис помощи студентам
Я тут учусь 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 февраля - день вооруженных сил, даже тех к кому неприязнь!!!!

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

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

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

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

42
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
11.10.2017, 20:56 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Otomys-dm
а зачем шифрование то ? флеш закрыть после обновления и все.
поясните...
ТСу нужно клиенту отдать прошивку уже зашифрованную. Я обновил свой комент выше, а то там затупил маленько.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 21:43 22
Хоть RC4, хоть RC5 хоть XORом
Можно использовать системный загрузчик (который по BOOT0=1, но вызывать его из программы например по какой-то команде или если уж совсем по простому нажатием на две кнопки)
Как сделано устройство неизвестно.
Можно и свой загрузчик написать - делом то на 2-3 часа.
Пока вопросы/ответы тут строчить уже можно бы всё сделать.
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:06 23
А по какому событию надо входить в бутлоадер?
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:07 24
И почему файл по терминалу отправить нельзя?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
11.10.2017, 22:21 25
Уважаемый x893, быдлокодить не хочу и не люблю. Перфекционист я, в какой-то степени) У меня нет ни одного пакета сейчас на машине для программирования. Пытался и ни билдере писать, и на шарпе, и mingv (или как там), и на hiasm.... короче, думаю, понятно. Если бы мне было быстрее - я бы сделал.
Объясните, как встроенному загрузчику стравить произвольно зашифрованный файл, а потом его расшифровать?
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
div, меня устроит секундное ожидание перед стартом основной программы. Терминал то файл отправит, только как его принять, если его размер больше оперативки?
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
11.10.2017, 22:47 26
Цитата Сообщение от rymomtsofto
div, меня устроит секундное ожидание перед стартом основной программы.
Т.е. при запуске инициализируем УАРТ ждем 1 секунду, не начнут ли на него сыпаться команды?

Цитата Сообщение от rymomtsofto
Терминал то файл отправит, только как его принять, если его размер больше оперативки?
Ну, УАРТ - весьма тормознут. Можно принять блок и расшифровать/записать его, пока второй принимаем.

Не, понятно, что специальная программа со своим протоколом надежнее. Но терминал писать не надо.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 397
11.10.2017, 22:54 27
Странно, неужели никто не владеет готовым решением? Может в купи-продай тему перенести? Я, как бэ, могу забашлять, если надо. Все понимаю, если человек старался-пыхтел.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 23:04 28
stm32f030f4 16 Kb флэша.
Программа пусть 6Кб, еще 6Кб для новой версии.
Значит 4Кб остается под загрузчик - в принципе места хватит для UART загрузчика и дешифратора.
Если устройство что-то принимает от компьютера, то можно загрузчик туда перенести - хотя не очень правильный вариант.
Тогда при старте только дешифратор и прошивальщик останется.
Здесь RC5 если нужен.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
11.10.2017, 23:19 29
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
11.10.2017, 23:30 30
Цитата Сообщение от x893
stm32f030f4 16 Kb флэша.
Программа пусть 6Кб, еще 6Кб для новой версии.
Значит 4Кб остается под загрузчик - в принципе места хватит для UART загрузчика и дешифратора.
бут на 4кб который вначале перетирает прошивку а потом записывает. того 12кб на программу. если программа глюкнула и не записалась, то попадаем сново в бут. Слишком жирно для такого маленького МК две прошивки хранить... проще бутлоодер "отточить"

P.S. я на днях тоже бутлоодер делал на F4 по юарту. только у меня в бут заходил если при старте кнопка нажата. потом ожидание сигнала готовности софта по юарту, потом данные по количеству байт прошивки, потом сама прошивка. бут пока не дописал, но в целом все просто и понятно.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
11.10.2017, 23:32 31
[QUOTE="otixsom"][QUOTE="Цитата:[/QUOTE]
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
11.10.2017, 23:37 32
Поэтому правильно сформулированный вопрос это 90% получения правильного ответа.
А как он задан - можно сказать - бери OpenBLT и пользуйся.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
12.10.2017, 01:28 33
[QUOTE="Otomys-dm"][QUOTE="otixsom"]
Otixsam, прошивку же частями нужно отправлять, получив при этом сообщение об удачном приеме предыдущей части... И потом зашифровать - пол дела.
Я не лентяй, но для меня это трудно.
Да вот сам хотел такое под винду написать, но все руки не доходят. Под маком такое накатал скриптом, там фигня делов.
можешь рассказать про скрипт на маке? дома мак... три месяца пользуюсь , но после винды кажется что вообще ничего не умею делать в ос.
Мак это линх с человеческим лицом, отсюда и исходим :)
Скрипт простой как угол дома:
Код
#!/bin/bash

if test $# -lt 1 ; then
echo "Usage: $0 firmware"
exit 0
fi

# encode file wyth prefered encryption tool

split -b 100 $1 fw_

for i in fw_*; do
cat $i > /div/tty_YOUR_SERIAL_PORT
crc32 $i > /div/tty_YOUR_SERIAL_PORT
sleep 0.5
done
вызываем так:
/firmwaretomc.sh test.fw
режет файл test.fw на куски длинной 100 байт и отправляет в сериал порт: /div/tty_YOUR_SERIAL_PORT
дальше тудаже шлет crc32 от этого куска.
чтоб не заморачиваться с ответом от девайса я сделал просто задержку пол секунды. Но можно и вычитать ответ и только потом отправить след. кусок.
можно зашифровать файл чем нибудь перед порезкой.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 249
12.10.2017, 01:55 34
Цитата Сообщение от otixsom
Мак это линх с человеческим лицом, отсюда и исходим :)
Спасибо! очень интересно... будет над чем подумать на досуге :)))
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 11:12 35
Цитата Сообщение от otixsom
Мак это линх с человеческим лицом, отсюда и исходим :)
Нет там от линукса ничего. Макось - ос семейства *myx. Там от FriiBSD больше, чем от Linux. Ядро своё
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,257
12.10.2017, 11:16 36
Цитата Сообщение от MStorm
Нет там от линукса ничего. Макось - ос семейства *myx. Там от FriiBSD больше, чем от Linux. Ядро своё
Там как раз ядро BSDишное, а вся оболочка своя.
0
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
12.10.2017, 11:55 37
Ядро - своё; юзерланд - фришный; оболочка - своя.
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 11:59 38
Да, ядро своё. XNU называется. Там часть из ядра Mach, часть из ядра FriiBSD заимствованы. А часть своя ес-но.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 27
12.10.2017, 13:55 39
- Они называли меня пятнистой лягушкой?
-Да! Да! Лягушкой! И ещё земляным червяком!
Редьярд Киплинг "Книга джунглей".

Чего накинулись-то ? Лично мне при первом знакомстве с маком без дополнительных разбирательств стало ясно, что это больше freeebsd чем нарbмер ubuntu/asp, но не все-же и то и другое "крутили". Я думаю имелось в виду нечто иное - linuxShitt =! windowsShitt, а не linuxShitt == umyxShitt.

Р.S. Лично у меня все сервера на фре.
0
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 98
12.10.2017, 15:00 40
Ну так шел и ОС - всё-таки совсем разные вещи. bash можно хоть под винду собрать и запустить. Хоть cygwin, хоть mingwin. Также как и Linux соб-но по хорошему даже не ОСь, а только ядро. А ось на базе ядра Linux правильно принято называть GNU/Linux == набор утилит GNU и ядро Linux. Надо ж всё-таки вещи своими именами называть. Android вон тоже на базе ядра Linux, а ось совсем другая, хоть там и bash тоже может стоять.
0
12.10.2017, 15:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2017, 15:00
Помогаю со студенческими работами здесь

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

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

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

Мужики и мужички, хотели бы Вы родить ребёнка?!
Опрос без шуток, поэтому нет третьего пункта типо "я уже рожал"!

Мужики! выручайте ,пожалуйста!(Блок - схема)
вот условие : Заданы 2 строки, состоящие из слов, разделенных пробелами. Если второе слово первой...

Мужики, запрашиваю аналогии на паровозиках и станциях
current_users = new_users = for user in new_users: if user.lower() in : ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru