Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32Fxxxx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
KSN
Существует ли возможность с помощью встроенного бутлодера загружать шифрованную прошивку, так чтобы нельзя было ее дешифровать? В настоящее время использую собственный загрузчик, но с ростом семейства STM32F увеличивается мин. объем сектора. Объем кода загрузчика <3кБайт и отдавать ему 16кБайт - жалко.
Сергей Борщ
С помощью встроенного - нельзя. 16 К - мелочи по сравнению с оставшимся объемом.
KSN
Цитата(Сергей Борщ @ Jul 10 2015, 10:52) *
С помощью встроенного - нельзя. 16 К - мелочи по сравнению с оставшимся объемом.

Понял. Спасибо.
Fedor
Цитата(KSN @ Jul 10 2015, 08:09) *
Существует ли возможность с помощью встроенного бутлодера загружать шифрованную прошивку, так чтобы нельзя было ее дешифровать? В настоящее время использую собственный загрузчик, но с ростом семейства STM32F увеличивается мин. объем сектора. Объем кода загрузчика <3кБайт и отдавать ему 16кБайт - жалко.


При помощи встроенного бутлодера грузите нешифрованный расшифровывальщик и шифрованную часть. При первом старте первую часть переписываете в sram и расшифровываетесь хоть на всю флешь.
mantech
Цитата(Fedor @ Jul 10 2015, 21:31) *
При помощи встроенного бутлодера грузите нешифрованный расшифровывальщик и шифрованную часть. При первом старте первую часть переписываете в sram и расшифровываетесь хоть на всю флешь.


И кто помешает подключиться дебаггером и почитать, что вы там расшифровываете? wink.gif
Fedor
Цитата(mantech @ Jul 11 2015, 01:30) *
И кто помешает подключиться дебаггером и почитать, что вы там расшифровываете? wink.gif

Уарт1 оставить для прошивки, pio для дебаггера "отпилить" ? По моему весь вопрос как спрятать -ключ-.. Если правильно додумал прошивка высылается заказчику девайса индивидуально, тогда схема... заказчик шлет уид процессора под него с ключем+уид генерится зашифрованная часть прошивки, уид не подошел - получили камень. Проблема если заказчик отльет свою схему с неотпиленными свд?
Огурцов
загрузчик с ключами вы должны заливать сами, после чего можно спокойно отправлять заказчику зашифрованные обновления
если вы отдаёте заказчику загрузчик, то отдавайте лучше сразу незашифрованные обновления
камень не должен превращаться в камень при любом исходе загрузки - это собственность заказчика
Aner
QUOTE (mantech @ Jul 10 2015, 22:30) *
И кто помешает подключиться дебаггером и почитать, что вы там расшифровываете? wink.gif

Хе - хе, кто мешает, кто мешает, ... наивный чел, не протичавший, ни разу описание, не написавший свой крипто-загрузчик ... объясняю - подключиться дебагером равносильно стереть этот крипто-загрузчик; после записи он же лочиться!, во всяком случае для семейства STM32Fxxx without prodblem.

QUOTE (Огурцов @ Jul 11 2015, 00:35) *
загрузчик с ключами вы должны заливать сами, после чего можно спокойно отправлять заказчику зашифрованные обновления
если вы отдаёте заказчику загрузчик, то отдавайте лучше сразу незашифрованные обновления
камень не должен превращаться в камень при любом исходе загрузки - это собственность заказчика

Огурцов, два момента! Первое это закриптованый загузчик внутри проца кем-то ЗАПРОГРАМИРОВАНЫЙ и залочен! (а ЕСЛИ нет, ... тогда ж..А!). Второе - загружаемая крипто-прога, ... про ключи забывем сразу, ... это что-то "металлическое" от вашей квартиры Огурцов. А собственность заказчика, это то что по договору! Пофукали, значит профукали и передали заказчику еще и исходники загрузчика.
Fedor
Топикстартер ограничен в обьеме загрузчика, я так понимаю, как вариант затираемой части бутлодера с ключами вполне вариант?
Aner
QUOTE (Fedor @ Jul 11 2015, 01:04) *
Топикстартер ограничен в обьеме загрузчика, я так понимаю, как вариант затираемой части бутлодера с ключами вполне вариант?

Наивно про объем загрузчика думать, хотя пусть ТС озвучит проц!
Сергей Борщ
Цитата(Aner @ Jul 11 2015, 01:02) *
после записи он же лочиться!
Это если делать "как правильно". Но в вопросе темы явно сказано: используя встроенный загрузчик. Поэтому если
Цитата(Fedor @ Jul 10 2015, 21:31) *
При помощи встроенного бутлодера грузите нешифрованный расшифровывальщик и шифрованную часть.
то и отладчик не нужен, достаточно "нешифрованный расшифровывальщик и шифрованную часть" в смуляторе запустить.
Aner
Запрос ведь ... так, чтобы нельзя было ее дешифровать!
Fedor
Цитата(Сергей Борщ @ Jul 11 2015, 04:26) *
Это если делать "как правильно". Но в вопросе темы явно сказано: используя встроенный загрузчик. Поэтому если
то и отладчик не нужен, достаточно "нешифрованный расшифровывальщик и шифрованную часть" в смуляторе запустить.

И дать ему у валидный uid присланный от заказчика к ТС, который + ключ чтобы все заработало..
Посмотрите на STemWin например, она валидует мк и пока CRCмодуль не запустишь она не заработает..
Огурцов
Цитата(Aner @ Jul 10 2015, 22:02) *
Огурцов, два момента! Первое это закриптованый загузчик внутри проца кем-то ЗАПРОГРАМИРОВАНЫЙ и залочен!

я и говорю, этот кто-то - вы
иначе - знаю двое - знает и свинья (с) мюллер, кажется

Цитата(Aner @ Jul 10 2015, 22:02) *
Второе - загружаемая крипто-прога, ... про ключи забывем сразу

шифрование - это открытый алгоритм и закрытый ключ
поэтому ключ обязан быть закрытым, а "крипто-прога" - не нужна

Цитата(Aner @ Jul 10 2015, 22:02) *
Пофукали, значит профукали и передали заказчику еще и исходники загрузчика.

нет, вышедший из строя камень - целиком и полностью будет ваша проблема, даже если в договоре не прописано
Сергей Борщ
Цитата(Aner @ Jul 11 2015, 01:30) *
Запрос ведь ... так, чтобы нельзя было ее дешифровать!
А вот это условие уже даелает исходную задачу нерешаемой. Или-или. Или встроенный загрузчик, но тогда можно дешифровать, или без встроенного загрузчика - тогда возможность дешифрования зависти от мастерства писателя собственного загрузчика (физический взлом кристалла не рассматриваем).
KSN
Сорри, упустил из виду, что тут такие дебаты.
По MCU: использую stm32f103R(V)BT6, STM32F205RB(V)T6, STM32F429(буквы не помню). Стандартно под загрузчик отдаю первые 1-3- страницы по 1кБайту или 1 по 16кБайт. Загрузчик залочен. Обновление прошивки производится по CAN. Мысль бродит, как так сделать, чтобы заказчик сам прошивал свои МК с помощью встроенного бутлодера, но чтобы самая первая передаваемая ему прошивка была зашифрована и не могла ни дешифроваться, ни зашита в МК с помощью программатора и т.д.(чтобы кристаллы не возить туда-обратно, заказчик сам купил кристаллы и сам прошил) Но видимо, без первого программирования залоченого бутлодера с помощью программатора никак.
Aner
Можно через ж..у сделать конечно, например используя серийник чипа, как ключ. Но тогда нужно заказчика просить считать эти номера с камней и прислать вам.
KSN
Цитата(Aner @ Jul 11 2015, 14:24) *
Можно через ж..у сделать конечно, например используя серийник чипа, как ключ. Но тогда нужно заказчика просить считать эти номера с камней и прислать вам.

Прислали мне серийник камня. И...?
khach
Цитата(KSN @ Jul 11 2015, 10:02) *
(чтобы кристаллы не возить туда-обратно, закачки сам купил кристаллы и сам прошил) Но видимо, без первого программирования залоченого бутлодера с помощью программатора никак.

Можно дать заказчику открытый бутлоадер и набор открытых ключей, по одному на каждое устройство. Заказчик шьет бутлоадер и прошивает по одному ключу в каждое устройство. После этого получает зашифрованную прошивку для каждого экземпляра. Это не мешает наделать клонов, но клоны не должны сосуществовать в одной сети CAN. Как вариант- каждый бутлоадер генерит новый ключ при первом запуске, случайным образом, заказчик считывает эти ключи и высылает производителю. Производитель с помощью этих ключей шифрует прошивки. В этом случае производитель точно знает число устройств у заказчика.
KSN
to khach, знать количество устройств очень полезно, но есть некоторые замечания:
1. Как только в руки заказчика попадает открытый загрузчик, то ничто ему не мешает дизассемблировать его.
2. Если шифруем прошивку открытым ключом, то пп1 и получаем доступную прошивку.
3. Сгенерировать новый ключ не так просто. Старшие семейства MCU имеют аппаратный RNG, младшие - нет, прийдется изголяться.
Огурцов
стабилитрон с резистором и ацп
Fedor
Как вариант на том же STM сделать свой программатор и шить по SWD
В программатор поставить BGA корпус, SWD проложить на внутреннем слое
Прошивку расшифровывать залоченным ключем в этом программаторе.
Т.е. приложили в посадочное место камень прошились, потом припаяли.
Или если нет опасений что просканят SWD шить уже припаянным, или если могут
просканить шить бутлодер и зашифрованную часть, ключ передавать в мусорной
куче байтов чтобы не нашли сканером.
Огурцов
поставьте панельку или научите заказчика паять
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.