Jump to content

    
AHTOXA

Как защититься от подделки устройства?

Recommended Posts

Ответом крайне много, но вот из жизни, это еще 2009-2010 год, цена устройства 2500-5000 руб., объемы сотни штук в квартал, в цене большая часть накрутка, контроллеры старые пик18, так руководство прикрутило внешнюю микросхемку с кодом, в контроллер работающий на 16мГц, записывалась кодированная прошивка, которая декодировалась в процессе работы бутлодером, который в свою очередь получал временный ключ с сервера, причем интерфейс был 485 до концентратора, а концентратор только уже через вайфай к серверу. Так вот, решение работало, криво, тормозно, многие ситуации просто не воспринимало, скажем так, на таких ресурсах великолепно мигало светодиодиками, делать нормально хотя бы свою задачу уже не могло.

Слава богу в этом моя задача была только в самой прошивке, бутлодер не я делал, но ко мне было требование все функции размещать по конкретным адресам, а свободное место дозабивать кодом, благо на ассемблере программил. Насколько я понял, бутлоадер тупо переписывал из одной области флеша в другую, и работал до выключения питания, по сигналу от аккума тупо повреждал "открытую" рабочую флеш.

Почитав, что тут советуют, даже не зная ни стоимости, ни объемов производства, ни мощностей системы, глаза на лоб полезли, если уж так хотите защитить, то делайте вообще просто, по звонку от клиента, или по запросу с цифровой подписью через интернет, отправляйте на привязанное к нему устройство одноразовую прошивку, а еще лучше клиент вообще к вам в офис приезжает, и по паспортным данным...)))

Share this post


Link to post
Share on other sites
Кроме того, для сравнения есть и просто обмен рабочими данными между МК и ПК. И как это будет выглядеть, что простые данные идут с одной задержкой (иногда есть задержка, иногда нету, днём задержка больше, ночью меньше, и т.д.), а идентификация всегда тормозит так, как будто для связи используется телефонный модем 30-летней давности?

Видно, что Вы никогда не работали с удалёнными устройствами через инет в реальных проектах...

Тормозить инет может как угодно, зависит это от целой кучи причин. Сейчас задержка - неск. десятков мкс., при след. запросе - несколько сотен мс запросто. Доступ в инет у всех разный, не все сидят на оптике, очень много у кого доступ в инет через GPRS. На прошлой работе у нас было таких клиентов большинство. Времена задержек там совершенно дикие бывают. Бывает, что и секунды при очередном опросе (у нас были автоматизированные системы сбора через инет: если ставили таймаут обмена менее чем несколько десятков секунд, то постоянно были проблемы с обрывами).

 

Насчёт разности времён доступа к флешь - тоже сплошь фантазии. Какие 1000раз??? Конечно если иметь кривые руки, то да, хоть миллион.

А вообще STM запросто с SPI-флешками работает до SCLK=45МГц. При том, что частота работы внутренней флешь даже ещё ниже раза в 2. Так что реальная разница - всего лишь в десятки раз.

А так как эта задержка чтения во времени ответа будет составлять незначительную часть, то никак нельзя ничего гарантировать. Кроме того неизвестно - на сколько загружен процессор другими задачами.

А ведь SPI ещё бывает и quad и бывает даже quad-DDR - где за один клок SCLK сразу байт читается.

 

Такой путь: что-то пытаться банить по времени задержки даст единственный результат - потерю всех пользователей.

 

При обновлении программы МК использовать для декодирования новой прошивки старую. В простейшем случае - XOR.

И как это поможет если у злоумышленников уже есть старая прошивка???

 

Как вариант: в каждом устройствеустановить крошечную EEPROM с персональным кодом. Код персионализировать софтом.

Думаете злоумышленники не умеют читать EEPROM? :biggrin:

Вот если вместо этой EEPROM впаять любой дополнительный МК, про который точно есть уверенность, что он не читается. И этому МК поручить функции шифрования-дешифрования - вот тогда да, будет работать. Именно так реализована защита в GSM - данные необходимые для регистрации в GSM-сети хранятся в симке, ею шифруются и дешифруются. Правда некоторые симки уже тоже взломали :biggrin:

Share this post


Link to post
Share on other sites
Именно так реализована защита в GSM - данные необходимые для регистрации в GSM-сети хранятся в симке, ею шифруются и дешифруются. Правда некоторые симки уже тоже взломали :biggrin:

Взломали протокол Comp128 v1

Но его уже давно не применяют. Текущие версии v2 и v3 вроде пока не сломаны.

Но всему свое время.

Share this post


Link to post
Share on other sites

Хех, забавно. Советчики поделились на два лагеря. Одни - реалисты (видно, что они что-то делали), вторые - мечтатели (ничего не делали, даже не пытались).

Вместо ксора предлагаю умножать на семь (никто не догадается!), а вместо зашифрованных флешек отправлять голубиной почтой дискеты. Уж тогда-то точно никто не вскроет.

 

Я б Антона послушал вместо всей этой галиматьи. Как это устройство связано с внешним миром, предполагаются ли обновления, и т.д.

 

Наши изделия содержат загрузчик, с удобным для пользователя USB. Обновление - в своём самопальном формате, зашифровано AES'ом (расшифровывается загрузчиком, ключ лежит рядом с ним).

 

В старом изделии количество паранойи было больше; в файле обновления был уникальный ключ AES, зашифрованный асимметричным RSA. Загрузчик хранил ключик RSA, считывал второй ключ, расшифровывал данные вторым ключом. Сделать всё асимметричным - слишком долго.

Доступа в сеть у большинства изделий нет совсем, обязывать пользователя обновлять только в онлайне - геморрой (да и средств для взлома PC'шных программ куда больше...).

 

Клонов на рынке нету. Может, защита очень хорошая, а может - как в анекдоте про Неуловимого Джо... :-)

Share this post


Link to post
Share on other sites
Наши изделия содержат загрузчик, с удобным для пользователя USB. Обновление - в своём самопальном формате, зашифровано AES'ом (расшифровывается загрузчиком, ключ лежит рядом с ним).

В текущем изделии примерно так же планируется. За разницей, что загрузчик не будет иметь функции приёма новой прошивки (только апдейт). Приём - в рабочем ПО.

Т.е. - надеемся на надёжность защиты от чтения/записи внутренней флешь МК.

Share this post


Link to post
Share on other sites
...

Т.е. - надеемся на надёжность защиты от чтения/записи внутренней флешь МК.

На мой взгляд, иных разумных вариантов и не бывает.

Если флешь читается - то ничего защитить невозможно. Купят один, считают, крякнут все инетовские извращения и выпустят тысячи.

 

Share this post


Link to post
Share on other sites
На мой взгляд, иных разумных вариантов и не бывает.

Если флешь читается - то ничего защитить невозможно. Купят один, считают, крякнут все инетовские извращения и выпустят тысячи.

Да не унывайте.

Наука не стоит на месте.

Есть статистичесие методы, делают уже чипы со считыванием уникальных сигнатур на основе физической отличимости кристаллов.

Есть метод зашифрованных вычислений, когда дизассемблирование ничего не может сказать о том какие вычисления проводятся.

Есть в конце концов квантовая криптография, вот вот пойдут чипы.

Впереди большие перспективы у защитников доморощенной интеллектуальной собственности. :biggrin:

Share this post


Link to post
Share on other sites

Да меня то это не слишком волнует, наше оборудование достаточно уникально и копировать его сильно устанут по большому количеству причин. Мы часто даже и защиту на флешь не ставим, кому очень хочется - пусть смотрят. Было несколько попыток содрать, мы долго смеялись.

 

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

 

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

 

Был у нас такой апологет секьюрити, который сделал надежный и супер защищенный блок, который давал 100% надежность (параллельные вычисления, аппаратные средства и т.д.). Это на бумаге, а реально он всего лишь выдавал сигнал о том, что что-то не так при обнаружении каких-то внутренних сбоев. Даже после нескольких лет отладки он выдавал этот сигнал примерно в 10% времени работы. На фиг такое секьюрити.

Share this post


Link to post
Share on other sites
Видно, что Вы никогда не работали с удалёнными устройствами через инет в реальных проектах...

В первом посте темы было написано, что устройство работает с ПК по последовательному порту. А связь через инет - у клиентского ПК и сервера автора.

Мне кажется, что у ПК клиента есть все средства отличить быстрый отклик на тест у оригинального устройства, и медленный у подделки.

Share this post


Link to post
Share on other sites
Я б Антона послушал вместо всей этой галиматьи. Как это устройство связано с внешним миром, предполагаются ли обновления, и т.д.

Да с обновлениями всё будет стандартно - загрузчик с AES, шифрованная прошивка. По идее, если не сломают защиту, то беспокоиться остаётся только о съёме протокола обмена. Здесь, по-видимому, тоже будет шифрование. Просто хотелось, раз уж взялся шифровать, то и UID контроллера как-то применить, чтобы (вдруг есть способ) защититься от клонирования даже при снятии полной копии прошивки.

 

В первом посте темы было написано, что устройство работает с ПК по последовательному порту. А связь через инет - у клиентского ПК и сервера автора.

Мне кажется, что у ПК клиента есть все средства отличить быстрый отклик на тест у оригинального устройства, и медленный у подделки.

Вы его не переспорите, это бесполезно. Не тратьте зря время и нервы. Вы придумали отличный способ, кому надо - услышали, и при случае применят (возможно, творчески переработав). Спасибо вам за идею.

Share this post


Link to post
Share on other sites
Вы его не переспорите, это бесполезно.

Переспаривать здесь смысла нет, здесь не базар. Здесь надо аргументы приводить, а не горлом брать.

И народ тут (надеюсь - с основном) со своей головой на плечах, чтобы отличить стоящую идею от фейка.

Тут говорить "делай, так и не думай" - не нужно. Нужно обосновать.

 

Мне кажется, что у ПК клиента есть все средства отличить быстрый отклик на тест у оригинального устройства, и медленный у подделки.

У подделки есть все шансы, гарантировать точно такой-же отклик как у оригинального устройства. Если это так нужно.

Раз Вы не верите, что чтение из внешней памяти будет неотличимо по времени, то подумайте как можно отличить, если вся эта внешняя память с фрагментами оригинальной прошивки будет вычитана во внутреннее ОЗУ перед контрольными тестами.

Share this post


Link to post
Share on other sites
Да не унывайте.

Наука не стоит на месте.

Есть статистичесие методы, делают уже чипы со считыванием уникальных сигнатур на основе физической отличимости кристаллов.

Есть метод зашифрованных вычислений, когда дизассемблирование ничего не может сказать о том какие вычисления проводятся.

Есть в конце концов квантовая криптография, вот вот пойдут чипы.

Впереди большие перспективы у защитников доморощенной интеллектуальной собственности. :biggrin:

Выскажу пару мыслей.

На форуме есть тема «Защита данных FPGA». Там обсуждается идентичная проблема, только для ПЛИС.

Давал там ссылку. Человек так и не справился с защитой.

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

Это дают статистические методы как раз. И, судя по всему, по ссылке как раз такой случай.

Пытался такую защиту придумать, исключив МК, как ненадежное звено, но в силу своих ограниченных способностей не смог.

Но основная идея была такая. Должен быть сигнал, в который подмешано случайное дрожание фазы. Для примера.

И распределение флуктуаций фазы для каждой платы особенное, не нормальное и требует длительного накопления для оценки.

То есть статистический метод. Каждая прошивка содержит тарировочные коэффициенты на свой генератор.

Генератор должен не зависеть от температуры и старения или они должны как-то учитываться. И собран он должен быть на россыпи таким образом, чтобы повторить его было невозможно в виду разброса физических параметров элементов генератора.

Все это предположительно имеет смысл, если согласиться с тем, что расковырять прошивку от ПЛИС существенно сложнее.

Еще думаю, половина дела, если о принципе вашей защиты широко не известно. А лучше, чтобы не было известно о самом факте защиты.

Не смотря на то, что в криптографии давно принята ровно противоположная практика (публикация алгоритма шифрования), думаю, здесь лучше подойдет такой подход.

 

Это как направление мысли.

Share this post


Link to post
Share on other sites
Насчёт разности времён доступа к флешь - тоже сплошь фантазии. Какие 1000раз??? Конечно если иметь кривые руки, то да, хоть миллион.

А вообще STM запросто с SPI-флешками работает до SCLK=45МГц. При том, что частота работы внутренней флешь даже ещё ниже раза в 2. Так что реальная разница - всего лишь в десятки раз.

А так как эта задержка чтения во времени ответа будет составлять незначительную часть, то никак нельзя ничего гарантировать.

............

А ведь SPI ещё бывает и quad и бывает даже quad-DDR - где за один клок SCLK сразу байт читается.

Да, про 1000 раз и скорость 10кб/сек я перегнул - взял параметр команды "чтение данных из памяти в буфер". При прямом чтении на шину, задержка будет гораздо меньше.

 

Тут говорить "делай, так и не думай" - не нужно. Нужно обосновать.

Для определённости возьму следующее: МК STM32F429 (стандартный SPI-порт), SCLK=45МГц, макс.частота доступа CPU к внутренней памяти программ 30МГц. Сама программа выполняется в ОЗУ для макс.быстродействия, а из внутр.флеш берутся только данные для теста (в оригинальной прошивке). В качестве внешней SPI-флеш - микросхема IS25WP016. Макс.частота 133 мГц.

 

По диаграммам команд чтения, для получения одного байта с произвольного адреса нужно потратить: 32 такта команда+адрес, 8 dummy-тактов, 8 тактов на чтение байта. Итого 48 тактов на один байт. Или макс. скорость чтения 938Кб/сек при произвольном доступе.

Из внутренней памяти, за это-же время можно извлечь 30Мб.

Если при тестировании заставить подсчитать хэш 1Гб, то оригинальная прошивка выполнит эту работу за 34 секунды, а поддельная за 1066 секунд, или за 17 минут.

Edited by controller_m30

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.