Шифрование прошивки МК

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Шифрование прошивки МК

Сообщение alex_ »

Мяу коллеги, как то меня посетила идея: собирал я как то устройство одному товарищу под заказ, а он находиться в другом городе, устройство является прототипом, т.е. возможны баги в устройстве, или заказчик за доплату попросит модифицировать код. Возникает вопрос как передать прошивку пользователю так чтобы она работала только на этом устройстве и нельзя было клонировать устройство без ведома разработчика.
По всем пунктам подходит шифрование прошивки МК, в начале прошиваем загрузчик в контроллер с алгоритмом дешифрования, а потом заливаем прошивку через удобный нам интерфейс(я использую УАРТ, всего 3 провода) :)))
Вопрос то вот в чём: какой алгоритм шифрования использовать, да и кто каким пользуется?
Учитывая что МК это не компьютер, а в моём случае PIC или AVR, то там ресурсы ограничены, и приходиться ориентироваться на 1К Flash для загрузчика 1К RAM, т.е. особо крутые алгоритмы шифрования не применить и не хватит ресурсов, да и нет смысла так всё усложнять, но с другой стороны использовать простой XOR это как то слишком просто :?

На данном форуме не нашлось подобной ветки, думаю она будет полезной :))
Реклама
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20070
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Шифрование прошивки МК

Сообщение vlasovzloy »

а не проще почтой прошитый и залоченный чип отправить
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Реклама
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Была у меня и такая идея, но чип в корпусе TQFP, его поменять не у каждого получится особенно если пользователь паять не умеет, почта это долго, по электронке прошивку скинуть куда быстрее выйдет, да и материальная сторона вопроса: каждый раз новый чип покупать и тратиться на его пересылку.
Хотя в самом начале была идея впаять этот чип на плату с разъёмом чтобы получилось что то вроде картриджа.
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20070
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Шифрование прошивки МК

Сообщение vlasovzloy »

тогда такой вариант- товарищ подключает программатор, подключает устройство. ты заходишь удаленным рабочим столом на его комп и программируешь. потом после себя чистишь хвосты.
смысл в том, что когда заходишь стандартными средствами виндовс на удаленный рабочий стол- местный пользователь лочится
можно без впн, тогда нужно будет обеим иметь белые айпи "статические"
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Да не, зачем всё усложнять для пользователя, настраивать программу удалённого управления(есть и пользователи которым пол часа пришлось объяснять что делать), да и программатор ещё нужен. В моём случае раз сделал алгоритм и больше не надо париться. Пользователю высылается простенькая программа с парой кнопок: выбрать файл прошивки и прошить. Прошивку осуществлять ну например через переходник USB-UART всего 4 провода да и стоит не дорого, меньше 100 рублей вроде.
К тому же если устройство серийное(вдруг повезёт) то можно такую прошивку на сайт выложить и пусть кому надо тот качает обновление.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Шифрование прошивки МК

Сообщение ARV »

полным полно бутлоадеров с шифрованием... пойдет даже AES простейший с коротким ключом - все равно никто не будет взламывать брутфорсом... я могу ошибаться, но на каком-то немецком форуме я находил бутлоадер даже для attiny13... правда без шифрования, с шифрованием уже для attiny25 или лучше.

ищите и обрящете!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Шифрование прошивки МК

Сообщение Albert_V »

alex_
Насколько я понимаю, главное для вас не допустить копирования изделия.
У вас есть возможность "зацепиться" за S/N какого либо датчика или за некие уникальные данные какого-то чипа на плате или в составе изделия???...
Если нет - самый простой вариант:
Если "на борту" стоит DS18ххх - "цепляйтесь" к его S/N или поставьте на плату "лишнюю" микросхему с которой можно считать уникальные данные.
Если покупают детали и паяют плату "удалённо" - вам не составит труда написать тестовую программу, которая вам передаст эти данные.
Можете их использовать в своей обратимой функции для шифрования (если надо).
Один из вариантов защиты платы от копирования можете посмотреть здесь (1-Wire Silicon Serial Number):
https://www.maximintegrated.com/en/prod ... ation.html
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Albert_V, вы правы но опять же будет довольно просто если считать прошивку загрузить в дизассемблер и посмотреть к чему привязана блокировка, по поводу уникального кода я тоже думал(с ds18b20 я уже игрался), мысль была разместить уникальный код(без ds18b20) в EEPROM, и поставить галку во фьюзах чтоб он не стирался при перепрошивке. Но всё банально просто взломать.
Загрузчик в контроллеры планирую сам прошивать.
ARV , пойду копать, хотя бывало попадались готовые загрузчики скомпилированые только под конкретный контроллер :(
Последний раз редактировалось alex_ Ср июн 01, 2016 20:17:03, всего редактировалось 1 раз.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Шифрование прошивки МК

Сообщение Albert_V »

Если нужно повторить изделие и я знаю его алгоритм работы - мне проще не "ломать" прошивку, а написать свою программу под установленный контроллер.
Другое дело - насколько это будет дешевле, чем купить у разработчика....
Тут простая финансовая "вилка"...
----
P.S.
На всякий случай:
Наибольшая проблема "снимать защиту", если ошибки в работе программы проявляются не "все вместе", а через некоторое время работы изделия.
------
P.P.S
Кто мешает, имея на руках загрузчик и ваш файл программы, скопировать плату?
Защищать надо изделие, а не софт.
/Это лично моё мнение/
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

А защищено как раз будет изделие, загрузчик прошиваю я и некому его больше не дам, далее ставлю лок биты на контроллер.
Компутер клиента будет заливать шифрованный фаил в МК, а тот по ходу заливки расшифровывать и перепрошиваться. Софт же будет максимально примитивным, который просто читает фаил и транслирует его допустим в UART пакетами :)
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Шифрование прошивки МК

Сообщение Albert_V »

Если напишите свой загрузчик для контроллера с дешифрованием - да, пройдёт.
Про AVR не скажу, но по PIC, похоже, вам придётся ставить что-то из 18-ой или 24-ой серии (если я вас правильно понял).
Можно подправить библиотеку USB загрузчика для дешифровки "на лету"...
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Шифрование прошивки МК

Сообщение Mishany »

используете стандартный бутлоадер, добавив в код мусор что б потом в очередной прошивке проверять уникальность вашего бутлоадера, если по определенным байтам флеша не то что должно быть - блокировка либо на что фантазии хватит, ну и соответственно бут залочить от считывания. делал подобное с обновлением по усб с использованием v-sub на 8 меге.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Albert_V писал(а):Если напишите свой загрузчик для контроллера с дешифрованием - да, пройдёт.
Вот об этом и изначально шла речь, точнее ветка создавалась для того чтобы пользователь могли обмениваться своими алгоритмами(надеюсь меня не сочтут сильно оборзевшим). Суть то ещё в чём, можно насобирать свой алгоритм шифрования, можно конечно использовать AES, RSA и подобные но мне кажется это тяжеловато будет для допустим Меги16. Эти методы я конечно уже покурил немного, но AES там только одна таблица занимает 256 байт ROM а их там две. RSA там работа с возведением в степень, тоже нифига не быстро. Надо б что то попроще, на досуге может чего и придумаю потом поделюсь :)
Mishany, про мусор тоже слышал, но немного в другой интерпритации.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Шифрование прошивки МК

Сообщение Albert_V »

Даже, если вы возьмёте за основу для первой операции некоторое число 0<>255 и будете делать простейшее сложение/вычитание без учёта переноса и результат использовать для следующей такой же операции - так проще будет написать программу "с нуля" или купить, чем воровать у вас.
Можно использовать некую последовательность чисел и считать, к примеру, в 32-bit по четыре байта.....
У вас что, система обеспечения доступа к серверу ФСБ?
Что воровать-то?
----
P.S.
Если вы сделаете что-то простое и пользующееся спросом для быта - максимум через год это будет продаваться на али в два раза дешевле :))
Последний раз редактировалось Albert_V Ср июн 01, 2016 22:09:39, всего редактировалось 3 раза.
Аватара пользователя
vlasovzloy
Друг Кота
Сообщения: 20070
Зарегистрирован: Чт янв 26, 2012 16:44:29
Откуда: Таксимо

Re: Шифрование прошивки МК

Сообщение vlasovzloy »

попробовать четные строки мусорные, нечетные правильные. бутлодер прошит и залочен. бутлодер после загрузки прошивки берет только те, которые ему нужны.
прошивка в два раза больше, зато не сломаешь.
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Albert_V писал(а):У вас что, система обеспечения доступа к серверу ФСБ?
Что воровать-то?
Я полностью согласен, нафига брать сложные и тяжёлые алгоритмы, если можно действительно применить простую логическую операцию(+ - << >>) и мусора накидать, просто как и всеми любимый калашников :))
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: Шифрование прошивки МК

Сообщение Mishany »

реализовать в прошивке проверку подлиности бутлоадера, а в бутлоадере подлинность прошивки.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: Шифрование прошивки МК

Сообщение alex_ »

Можно конечно, но почему-то простое шифрование в реализации кажется проще и надёжнее, те контроллер примет всё что вы в него пошлёте но если в контроллер загружать хлам то и контроллер так и будет работать - никак. А с шифрованной прошивкой мало кто возится будет. А если прошивка в открытом виде то любой желающий может её дизассемблировать, чего я и хочу избежать.
Но наш довод учту, не вместо шифрования а только в дополнение к нему :))
Ответить

Вернуться в «Разные вопросы по МК»