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

Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 18:36:43
vlasovzloy
а не проще почтой прошитый и залоченный чип отправить
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 18:51:43
alex_
Была у меня и такая идея, но чип в корпусе TQFP, его поменять не у каждого получится особенно если пользователь паять не умеет, почта это долго, по электронке прошивку скинуть куда быстрее выйдет, да и материальная сторона вопроса: каждый раз новый чип покупать и тратиться на его пересылку.
Хотя в самом начале была идея впаять этот чип на плату с разъёмом чтобы получилось что то вроде картриджа.
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 19:02:13
vlasovzloy
тогда такой вариант- товарищ подключает программатор, подключает устройство. ты заходишь удаленным рабочим столом на его комп и программируешь. потом после себя чистишь хвосты.
смысл в том, что когда заходишь стандартными средствами виндовс на удаленный рабочий стол- местный пользователь лочится
можно без впн, тогда нужно будет обеим иметь белые айпи "статические"
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 19:16:46
alex_
Да не, зачем всё усложнять для пользователя, настраивать программу удалённого управления(есть и пользователи которым пол часа пришлось объяснять что делать), да и программатор ещё нужен. В моём случае раз сделал алгоритм и больше не надо париться. Пользователю высылается простенькая программа с парой кнопок: выбрать файл прошивки и прошить. Прошивку осуществлять ну например через переходник USB-UART всего 4 провода да и стоит не дорого, меньше 100 рублей вроде.
К тому же если устройство серийное(вдруг повезёт) то можно такую прошивку на сайт выложить и пусть кому надо тот качает обновление.
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 19:41:16
ARV
полным полно бутлоадеров с шифрованием... пойдет даже AES простейший с коротким ключом - все равно никто не будет взламывать брутфорсом... я могу ошибаться, но на каком-то немецком форуме я находил бутлоадер даже для attiny13... правда без шифрования, с шифрованием уже для attiny25 или лучше.
ищите и обрящете!
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 19:48:37
Albert_V
alex_
Насколько я понимаю, главное для вас не допустить копирования изделия.
У вас есть возможность "зацепиться" за S/N какого либо датчика или за некие уникальные данные какого-то чипа на плате или в составе изделия???...
Если нет - самый простой вариант:
Если "на борту" стоит DS18ххх - "цепляйтесь" к его S/N или поставьте на плату "лишнюю" микросхему с которой можно считать уникальные данные.
Если покупают детали и паяют плату "удалённо" - вам не составит труда написать тестовую программу, которая вам передаст эти данные.
Можете их использовать в своей
обратимой функции для шифрования (если надо).
Один из вариантов защиты платы от копирования можете посмотреть здесь (1-Wire Silicon Serial Number):
https://www.maximintegrated.com/en/prod ... ation.html
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 20:07:55
alex_
Albert_V, вы правы но опять же будет довольно просто если считать прошивку загрузить в дизассемблер и посмотреть к чему привязана блокировка, по поводу уникального кода я тоже думал(с ds18b20 я уже игрался), мысль была разместить уникальный код(без ds18b20) в EEPROM, и поставить галку во фьюзах чтоб он не стирался при перепрошивке. Но всё банально просто взломать.
Загрузчик в контроллеры планирую сам прошивать.
ARV , пойду копать, хотя бывало попадались готовые загрузчики скомпилированые только под конкретный контроллер

Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 20:12:54
Albert_V
Если нужно повторить изделие и я знаю его алгоритм работы - мне проще не "ломать" прошивку, а написать свою программу под установленный контроллер.
Другое дело - насколько это будет дешевле, чем купить у разработчика....
Тут простая финансовая "вилка"...
----
P.S.
На всякий случай:
Наибольшая проблема "снимать защиту", если ошибки в работе программы проявляются не "все вместе", а через некоторое время работы изделия.
------
P.P.S
Кто мешает, имея на руках загрузчик и ваш файл программы, скопировать плату?
Защищать надо изделие, а не софт.
/Это лично моё мнение/
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 20:36:51
alex_
А защищено как раз будет изделие, загрузчик прошиваю я и некому его больше не дам, далее ставлю лок биты на контроллер.
Компутер клиента будет заливать шифрованный фаил в МК, а тот по ходу заливки расшифровывать и перепрошиваться. Софт же будет максимально примитивным, который просто читает фаил и транслирует его допустим в UART пакетами

Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 20:50:29
Albert_V
Если напишите свой загрузчик для контроллера с дешифрованием - да, пройдёт.
Про AVR не скажу, но по PIC, похоже, вам придётся ставить что-то из 18-ой или 24-ой серии (если я вас правильно понял).
Можно подправить библиотеку USB загрузчика для дешифровки "на лету"...
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 21:01:17
Mishany
используете стандартный бутлоадер, добавив в код мусор что б потом в очередной прошивке проверять уникальность вашего бутлоадера, если по определенным байтам флеша не то что должно быть - блокировка либо на что фантазии хватит, ну и соответственно бут залочить от считывания. делал подобное с обновлением по усб с использованием v-sub на 8 меге.
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 21:06:06
alex_
Albert_V писал(а):Если напишите свой загрузчик для контроллера с дешифрованием - да, пройдёт.
Вот об этом и изначально шла речь, точнее ветка создавалась для того чтобы пользователь могли обмениваться своими алгоритмами(надеюсь меня не сочтут сильно оборзевшим). Суть то ещё в чём, можно насобирать свой алгоритм шифрования, можно конечно использовать AES, RSA и подобные но мне кажется это тяжеловато будет для допустим Меги16. Эти методы я конечно уже покурил немного, но AES там только одна таблица занимает 256 байт ROM а их там две. RSA там работа с возведением в степень, тоже нифига не быстро. Надо б что то попроще, на досуге может чего и придумаю потом поделюсь
Mishany, про мусор тоже слышал, но немного в другой интерпритации.
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 21:58:39
Albert_V
Даже, если вы возьмёте за основу для первой операции некоторое число 0<>255 и будете делать простейшее сложение/вычитание без учёта переноса и результат использовать для следующей такой же операции - так проще будет написать программу "с нуля" или купить, чем воровать у вас.
Можно использовать некую последовательность чисел и считать, к примеру, в 32-bit по четыре байта.....
У вас что, система обеспечения доступа к серверу ФСБ?
Что воровать-то?
----
P.S.
Если вы сделаете что-то простое и пользующееся спросом для быта - максимум через год это будет продаваться на али в два раза дешевле

Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 21:59:51
vlasovzloy
попробовать четные строки мусорные, нечетные правильные. бутлодер прошит и залочен. бутлодер после загрузки прошивки берет только те, которые ему нужны.
прошивка в два раза больше, зато не сломаешь.
Re: Шифрование прошивки МК
Добавлено: Ср июн 01, 2016 22:33:59
alex_
Albert_V писал(а):У вас что, система обеспечения доступа к серверу ФСБ?
Что воровать-то?
Я полностью согласен, нафига брать сложные и тяжёлые алгоритмы, если можно действительно применить простую логическую операцию(+ - << >>) и мусора накидать, просто как и всеми любимый калашников

Re: Шифрование прошивки МК
Добавлено: Чт июн 02, 2016 05:46:35
Mishany
реализовать в прошивке проверку подлиности бутлоадера, а в бутлоадере подлинность прошивки.
Re: Шифрование прошивки МК
Добавлено: Чт июн 02, 2016 09:14:09
alex_
Можно конечно, но почему-то простое шифрование в реализации кажется проще и надёжнее, те контроллер примет всё что вы в него пошлёте но если в контроллер загружать хлам то и контроллер так и будет работать - никак. А с шифрованной прошивкой мало кто возится будет. А если прошивка в открытом виде то любой желающий может её дизассемблировать, чего я и хочу избежать.
Но наш довод учту, не вместо шифрования а только в дополнение к нему
