|
|
  |
Подскажите существующие форматы контейнера прошивок |
|
|
|
Dec 19 2016, 13:37
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609

|
Не знаю как у Вас, у меня загрузчик обрабатывает данные из hex файла, там два поля АДРЕС и ДАННЫЕ (до 16 байт). Контроллер анализирует поле АДРЕС и выполняет запись во flash или eeprom. Можно, по аналогии, заставить линкер формировать еще область данных с физически несуществующим в микроконтроллере адресом. Когда прийдут данные для записи в это адресное пространство, то направлять из в блютуз. А вот данные запихнуть в прошивку прийдется "ручками".
|
|
|
|
|
Dec 19 2016, 15:27
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460

|
Цитата(Neborak @ Dec 19 2016, 16:37)  Не знаю как у Вас, у меня загрузчик обрабатывает данные из hex файла... Это конечно вариант, и очень удобный вариант для отладки, но я бы такое в производство не пускал, во вервых избыточность данных, это хорошо если это какойто Ethernet там разница между бин и хекс на глаз не поймешь, на других каналах связи 500кб или 1мб это уже заметно. Второе это отсутствие какой либо защиты ПО от посторонних глаз, понимаю не везде стоят необходимость защито кода, но все же. Цитата Не встречал такого. Надеялся что есть какието открытые стандарты, где уже учтен опыт проб и ошибок, как пользуют например motorola или nokia или тотже apple. Вот, например: http://droid-dev.mobi/wiki/SBF
|
|
|
|
|
Dec 20 2016, 07:44
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(HardEgor @ Dec 20 2016, 05:08)  Напишите все требования к протоколу сразу. Два уже есть. Как делаю я. 1. IAR формирует hex файл. 2. На этапе postbuild в этот файл автоматически (давно написанной утилитой) добавляется заголовок (номер версии, тип процессора, название проекта, идентификатор клиента), затем всё это шифруется. 3. Конечный файл можно размещать на сайте или пересылать клиентам по открытым каналам. 4. Затем этот файл с помощью другой утилиты заливается в контроллер, где данные принимает загрузчик, налету расшифровывает и записывает во Flash. 5. Так как запись производится в процессе передачи данных, то скорость прошивки определяется скоростью записи в память. Скорость канала не является критичной, например скорости 115200 мне всегда хватало. 6. Проверено на STM8, STM32 и некоторых контроллерах других семейств. Утилиты являются универсальными, аппаратные различия на уровне загрузчика в контроллере.
|
|
|
|
|
Dec 20 2016, 08:03
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Integro @ Dec 19 2016, 11:48)  ... но наверника уже есть готовое решение которое учитывает все что я описал, плюс заложен функционал о котором я еще не думал. Этих форматов очень много. Практически каждый производитель придумывает свой формат упаковки фирмваре. Я встречал такое у Nordic, TI, Microchip-Atmel, Freescale-NXP и т.д. Сложность не в формате, а как всегда в инфраструктуре. Нужно иметь протокол, вариантность хидеров допускающую модификации, файловые системы хранения и архиваторы на целевых платформах, модель обмена секретными ключами, фреймворк на PC для создания загрузчиков и упаковщиков образов и т.д. Самое интересное это фреймворк на PC с поддержкой базы данных образов фирмваре, разными форматами хэширования, сжатия и подключением по разным физическим каналам. У меня есть такой в исходниках в RAD Studio 10.1 , поддерживать может неограниченное количество загружаемых образов. Работает как с HEX так и с BIN.
|
|
|
|
|
Dec 20 2016, 09:49
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460

|
Цитата(AlexandrY @ Dec 20 2016, 11:03)  Этих форматов очень много. Практически каждый производитель придумывает свой формат упаковки фирмваре. Да, я понимаю что таких форматов достаточно, но я не хочу изобретать свой велосипед, я хочу использовать опыт проб и ошибок наших коллег, надеялся получись здесь ссылки на описание форматов и функционала подобных контейнеров. Моя цель сейчас, придти к такому "заголовку" который позволит мне максимально гибко изменять процес прошивки, грумко говоря) хочу чтобы функционал бутлодера опережал мои требования Тогда задам вопрос иначе, мой бутлодер вырос из уровня передачи бин\хекс файла, до уровня сжатия данных, сейчас планируется добавление крипто механизмов, планирую использовать какой либо асимметричный алго. Тут встает воспрос генерации\храннения закрытых ключей, и мне интересно как принято это организовывать? Используют один закрытый ключ для одного устройспа зашиваемый на производстве и фирмваря для этих девайсов всегда шифруется одним ключем? используют ли для этих случаев резервные ключи? какие есть механизмы "сброса" ключа в случае утечки? Насколько надежно использовать генерацию ключа из серийника проца+серийника какой либо обвязки(флеш, BTили чтото еще), понятно в этом случае этап шифрования переноситься на сервер с которого скачивается ПО, повторюсь на сколько это надежно? Если ли опыт подобного использования? Как быть с дебажным ПО, всегда шифровать\подписывать? Если у кого-то есть опыт подобного использования, буду рад услышать. Повторюсь, основноая задача скрыть содержимое ПО, но возможно в будущем понадобится подпись ПО для защиты запуска сторонноего ПО.
|
|
|
|
|
Dec 20 2016, 10:16
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Integro @ Dec 20 2016, 11:49)  используют ли для этих случаев резервные ключи? какие есть механизмы "сброса" ключа в случае утечки? Зачем резервный ключ? Принцип же - запрограммировал и забыл. Сброс от утечки чего? Ключа? Или программиста?  С другой стороны защищенные загрузчики и технологии защиты это инструмент дифференциации у производителей. Т.е. они стремяться сделать как можно более непохожими свои подходы. Поэтому вам надо найти в этом форуме конкретно ветку по семейству которое применяете вы и там конкретно спрашивать. Скажем для Kinetis введение в защищенный криптозагрузчик будет здесь - http://www.nxp.com/assets/documents/data/e...KBTLDR200RM.pdfМало не покажется. Но это цветочки, на горизонте уже TrustZone Поэтому коня в вакууме под названием "развитый защищенный универсальный загрузочный контейнер" вы не найдете.
|
|
|
|
|
Dec 20 2016, 11:02
|

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

|
Механизмы "сброса" ключа в случае утечки есть, как на аппаратном уровне, так и на программном. Например такое начал использовать лет пять назад после ряда случаев. А далее эти бэкдоры например для массовой продукции стали не нужны, из-за высоких темпов обновления лиенйки продуктов. Но в новых продуктах конечно использую свой загрузчик с криптованной прошивкой. И не понятно, зачем бутлодер вырос из уровня передачи бин\хекс файла, до уровня сжатия данных? Серийник проца не использую, было такое, но из-за длины отказался. Асимметричный думаю избыточен. Не уверен, что описание форматов и функционала подобных рабочих контейнеров вы найдете, разве если ктото свой г..код выложит. А так у каждого свои слоны и муравьи. А так в общих чертах все чего то да напишут, что чего куды и как; ... rsa, dsa, aes и пт в помощь.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|