|
Как защитить от клонирования оставив возможность обновить прошивки, AT91SAM7X256 |
|
|
|
Dec 21 2006, 12:06
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146

|
Tanya
Как раз дополнительные корпуса ставить не хочется, в частности и из-за повышения цены.
Так что, как я понимаю, оптимальным будет вариант написать свой прошивальщик с криптозащитой. Поскольку пример имеется, им и займуся, когда руки дойдут. :-)
|
|
|
|
|
Dec 24 2006, 22:14
|
Участник

Группа: Свой
Сообщений: 46
Регистрация: 21-06-04
Пользователь №: 80

|
Цитата(AlexandrY @ Dec 20 2006, 13:31)  Эт точно, сам видел как слызывали память чипа на FRAM и при вполне реалистичном бюджете. А уж чипы на FLASH так вообще скопировать детская задача. Сорри за возможный офф. Вопрос как к невольному (а может и нет  ) участнику - "сам видел как слызывали ..." - и сколько стоит сейчас клонировать кристалл (типа AVR, ARM(LPC, AT91, STR))? Спрашиваю не как потенциальный заказчик на взлом, а как разработчик, пытающийся понять как оптимизировать схемотехнику/архитектуру устройства для защиты от копирования. Пока просматривается рассмотренный выше вариант с битом защиты от считывания памяти программ в кристалле + несколько таких кристаллов от разных производителей, соединенных в цепочку. в каждом из них криптозащита со своим ключем. от кристаллов требуется только расшифровка данных и передача ее следующему в цепочке - не такая уж и сложная задача для чипов с малой памятью в маленьком корпусе. стоимость каждого чипа - порядка 1.5$. я думаю, что за дополнительные 10$ (то бишь 5-6 чипов) можно получить довольно высокую стойкость к взлому.
|
|
|
|
|
Dec 25 2006, 17:42
|

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

|
Никакие цепочки чипов не помогут если чипы общего применения. Как-то видел проект где вскрывали игровую консоль сделаную в СНГ. Основной процессор был ARM выполняющий программу из SDRAM На защите стоял мелкий AVR. AVR участвовал в раскриптовке содержимого FLASH при загрузке в SDRAM. Ну что, AVR вскрыли, пропатчили лоадер который он передает в ARM. Этим патченым лоадером слили уже расшифрованную прогу из RAM-а (заметьте, с алгоритмом шифрования даже не разбирались!), а потом ее уже не шифрованную записали обратно во FLASH, а в лоадере убрали шифрацию. Кстати алгоритм шифрования идентифицировали сразу же, это был RC4. Есть проги в сети которые по дампу программы независимо для какого проца она написана находят и идентифицируют большинство общеизвестных алгоритмов шифрования и сжатия по характерным таблицам. В RC4 правда нет таблиц но зато примитивный легко идентифицируемый алгоритм. Инвазивное вскрытие AVR обходится менее 5 тыс. $. Временные затраты на всю работу были менее месяца. Это еще не применяя микропробинг и анализ трафика на шинах! Грубый патч как метод не срабатывает только когда дивайс имеет уникальный серийный номер к которому привязывается защита и дивайс должен проходить online проверку как оригинальный. Тогда приходится серьезно исследовать алгоритмы. Но тут надо помнить, что как не велик был бы общий объем кода программы сами алгоритмы защиты обнаруживаются и локализуются в программе очень быстро даже когда не до конца известна архитектура аппаратной платформы. Если алгоритмы самопальные то они будут примитивны (иначе у их разработчика крыша съедет при отладке), если алгоритмы стандартны, то хакеры быстро найдут их исходники чтобы воспроизвести их работу в патче. Отсюда вывод - нельзя делать ставку на сложность и хитроумность софтварной защиты. Инвазивное вскрытие самый узкий момент во всей технологии. Тут совет один, чем меньше технологическая норма кристалла тем меньше лабораторий в мире смогут снять защиту в кристалле. Прикидочно на сегодня чтобы цена взлома подскочила до 50 тыс.$ и выше надо чтобы норма кристалла была не больше 0.18 мкм Либо ставить как часть приложения смарткарты или заказные SoC-и со спецзащитой. Цитата(karabas @ Dec 24 2006, 23:44)  Сорри за возможный офф. Вопрос как к невольному (а может и нет  ) участнику - "сам видел как слызывали ..." - и сколько стоит сейчас клонировать кристалл (типа AVR, ARM(LPC, AT91, STR))? Спрашиваю не как потенциальный заказчик на взлом, а как разработчик, пытающийся понять как оптимизировать схемотехнику/архитектуру устройства для защиты от копирования. Пока просматривается рассмотренный выше вариант с битом защиты от считывания памяти программ в кристалле + несколько таких кристаллов от разных производителей, соединенных в цепочку. в каждом из них криптозащита со своим ключем. от кристаллов требуется только расшифровка данных и передача ее следующему в цепочке - не такая уж и сложная задача для чипов с малой памятью в маленьком корпусе. стоимость каждого чипа - порядка 1.5$. я думаю, что за дополнительные 10$ (то бишь 5-6 чипов) можно получить довольно высокую стойкость к взлому.
|
|
|
|
|
Jan 2 2007, 13:01
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(Сергей Борщ @ Dec 20 2006, 13:46)  Однозначно первый вариант. Второй и третий ломаются элементарно - пишется прошивка которая тупо сливает по любому доступному интерфейсу содержимое "неизменной" части прошивки. Интересный вопрос - по какому интерфейсу вы запишите прошивку в SAM7S с установленым битом Security ? Учитывая что апдейтер прошивки внутри девайса будет использовать любой алгоритм однонаправленого шифрования ?
|
|
|
|
|
Jan 2 2007, 15:23
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(lazycamel @ Jan 2 2007, 12:01)  Цитата(Сергей Борщ @ Dec 20 2006, 13:46)  Однозначно первый вариант. Второй и третий ломаются элементарно - пишется прошивка которая тупо сливает по любому доступному интерфейсу содержимое "неизменной" части прошивки.
Интересный вопрос - по какому интерфейсу вы запишите прошивку в SAM7S с установленым битом Security ? По тому же самому по которому заливается "штатная" прошивка. Цитата(lazycamel @ Jan 2 2007, 12:01)  Учитывая что апдейтер прошивки внутри девайса будет использовать любой алгоритм однонаправленого шифрования ? Теперь я не понял вопроса. В раскритикованных втором и третьем вариантах прошивка не шифруется. Именно это и позволяет подсунуть любую прошивку. Шифруется она в одобренном первом варианте.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 2 2007, 17:57
|
Участник

Группа: Участник
Сообщений: 22
Регистрация: 2-01-07
Пользователь №: 24 051

|
А не проще посмотреть, как это сделали в коммерческом проекте до Вас? Если у вас нет примеров, могу выслать прошивку такого проекта (его уже хакнули)
|
|
|
|
|
Jan 2 2007, 18:54
|
Частый гость
 
Группа: Свой
Сообщений: 132
Регистрация: 10-05-06
Пользователь №: 16 930

|
Цитата(OlegHmt @ Dec 21 2006, 12:06)  Tanya Так что, как я понимаю, оптимальным будет вариант написать свой прошивальщик с криптозащитой. Поскольку пример имеется, им и займуся, когда руки дойдут. :-) Если интерфейс для прошивки стандартный, подкручиваем к шнуру прошивальщика провода и в raw пишем прочитанное на комп.. Там будет и расшифрованная прошивка. Короче, на любую хитрую Ж найдется свой болт. Смысл имеет только аппаратная защита..
|
|
|
|
|
Jan 8 2007, 16:50
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146

|
Пробую реализовать вариант защиты прошивки путём использования USB. То-есть идея следующая - зашиваю в кристал прогу, которая запускает USB, проверяет связь с внешней средой и при наличии команды на перепрошивку принимает кусок зашифрованой прошивки, расшифровывает и прописывает в нужное место флеша. Столкнулся с проблемой - непонятно как организовать запись даных на флеш. В даташите написано, что существует встроенный буфер для записи размером в страницу и после записи в него, нужно в регистры контролера флеша записать нужную команду. Но где находиться этот буфер не написано. Подскажите, пожалуйста, как организовать запись своих данных на флеш, а то по даташиту никак разобраться не могу.
|
|
|
|
|
Jan 25 2007, 21:35
|

Участник

Группа: Участник
Сообщений: 54
Регистрация: 12-06-06
Пользователь №: 17 988

|
Вдруг пригодится. Видел на компьтерах Compaq вроде бы биос прошивался через прошивальщик в виде exe файла, где внутри был имидж запакованный(может и пришитый к конкретному железу). Видел также промышленный контроллер, в нем прошивку можно было залить через сом порт, стоял там Lattice ispsi 1016, ватчдог 21DY4YB и проц интеловский(плюс флэха на 4мб и памяти пару метров) При вкл девайса проходила иницилизация и запускался лодарь , а потом уже и весь девайс(вкл всю переферию).
Из идей: Прошивку шифровать, лить через УСБ или ком , в процессе заливки сам заливальщик должен проверить содержимое основного и вторичного контроллера на чек сумму по такому то адресу. Если к концу заливки прошивальщик узнает что чек разный, последняя часть прошивки меняется и вливается ловушка. Которая либо тупо вообще портит работу устройства или по случайному алгоритму начитает вводит девайс в ступор.
До кучи влепить на доп.проце (контроллере) проверку чеков в памяти основного по таймеру, если что не так в ступор.
|
|
|
|
|
Jan 31 2007, 16:58
|

Знающий
   
Группа: Свой
Сообщений: 630
Регистрация: 2-08-05
Пользователь №: 7 294

|
Существует две причины, благодаря которым можно получить чужую прошивку - 1. Ошибки разработчика программы загрузчика/обновлятеля. 2. Ошибки допущенные при разработке MCU (всем известные)
Если вторая причина неисправима, то первую легко избежать... Сказки о инвазивном/неинвазивном вскрытии останутся сказками, пока не будет опубликовано полное описание процесса, который позволит вычитать прошивки в 100 однотипных микроконтроллерах сто раз с каждого с одинаковым результатом.
Существует фирма, названия не помню, могу поискать, которая предоставляет экспертные услуги по анализу содержимого кристалла, на предмет не использует ли кто-нибудь ваши ноу-хау при производстве своих микросхем. Стоимость такой оценки примерно 1М. Отчет полный.
Так вот подумайте сами, что должно быть за устройство, которое выгодно так вскрывать?
--------------------
летаю на пепелаце...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|