Jump to content

    

Защита от клонирования и перепрошивки.

Добрый день.

Задался вопросом, как защитить свое устройство на базе линукса на не секюрном процессоре с внешней SPI флешкой. Единственное, что приходит в голову это поставить рядом МК и зашить туда закрытый ключ. Написать драйвер и вкомпилить статически в ядро в котором будет периодически считываться зашифрованный пакет с МК и открытым ключем валидировать. Если пакет неправильный - перегружаться либо начать глючить. МК будет делать тоже самое зеркально. Если долго нет контрольного запроса, то делать хардварный ресет процессора. Это менее надежно чем процессор со встроенной верификацией бинаря по цифровой подписи, но лучше чем ничего.

У кого какие мысли?

Share this post


Link to post
Share on other sites

Столько копий сломано. Попробуйте поискать на форуме похожие темы.

 

Навскидку https://electronix.ru/forum/index.php?showtopic=143246

 

 

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

 

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

 

Ваш вспомогательный контроллер просто скопируют, считав с него прошивку, если не смогут взломать протокол обмена. То есть опять-таки, надо понимать, на кого нацелена ваша защита.

Share this post


Link to post
Share on other sites
...Задался вопросом,...

 

 

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

её более-менее равномерным покрытием кода. Сам объём кода увеличить (включить оптимизацию по скорости к примеру). И защиту скрывать именно не явно.

Но вот доп. мк внешний я бы поставил (если стоимость позволяет). Но это первый эшелон - от пионэров. А вот более посерьёзнее - тот подход, что прозвучал выше.

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

Если низкий - то от пионэров и лентяев, то высокоуровневая защита съедает бОльший ресурс человеко-часов при взломе.

 

Но хочу обратить Ваше внимание, что создателю защиты очень важно иметь опыт по взлому подобных систем. Т.е. попробуйте сами в рукопашную вскрыть любую прошивку.

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

это очень наивная позиция. Тем более что при создании защиты всегда используют гораздо меньше ресурсов(и знаний) чем при взломе. надеюсь это очевидно :)

 

 

с уважением

(круглый)

 

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
Фиеричная идея!

Смысл в том чтобы сделать умышленные сбои неотличимыми от неумышленных багов.

А как такую программу отлаживать, спрашивается?

Это очень надуманное соображение. Я было начал что-то отвечать, но потом понял, что не имеет никакого смысла. Все что вы написали актуально, но элементарно разрешимо.

Share this post


Link to post
Share on other sites
Это очень надуманное соображение. Я было начал что-то отвечать, но потом понял, что не имеет никакого смысла. Все что вы написали актуально, но элементарно разрешимо.

Я даже не о том разрешимо или нет, я об элементарной логике.

Если дивайс дает делать все, только иногда редко сбоит, то это нормальный консамерский дивайс.

И все его будут использовать как ни в чем не бывало.

Share this post


Link to post
Share on other sites
Ага! Если ещё и в каждую версию закладывать баги, начинающие срабатывать после определённой даты или количества включений! Обновляем - получаем новую порцию багов, но пока спящих. И так подсаживаем юзеров на иглу постоянных апдейтов и сами никогда не останемся без работы и хакерам кровь попортим!

И есть широкоизвестные и успешные конторы, работающие по такому принципу :biggrin:

Microsoft ?)

 

Share this post


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

Все зависит от критичности сбоя и их интенсивности. Очевидно, что «сбои» должны выводить клон из области конкурентного превосходства в худшем случае. А в лучшем случае не должны позволить сделать из клона полноценный продукт.

 

Я ожидал дискуссии по этой теме. Это говорит о том, что тема горячая, актуальная. Вопрос себя не исчерпал и тут есть над чем покреативить.

Share this post


Link to post
Share on other sites
Я ожидал дискуссии по этой теме.

А есть факты из надежных источников считывания прошивок залоченных на чтение STM32 ?

Очень хотелось бы верить в то, что этот элемент системы - доверенный :blush:

 

Это говорит о том, что тема горячая, актуальная.

что может быть на форуме разработчиков горячее отымелова разработчиков ? ;)

Share this post


Link to post
Share on other sites
А есть факты из надежных источников считывания прошивок залоченных на чтение STM32 ?

Надежных источников у меня нет, но если ориентироваться на подобные сайты (http://www.break-ic.com), то можно полагать, stm32 успешно копируется.

Share this post


Link to post
Share on other sites
Все зависит от критичности сбоя и их интенсивности. Очевидно, что «сбои» должны выводить клон из области конкурентного превосходства в худшем случае. А в лучшем случае не должны позволить сделать из клона полноценный продукт.

 

Я ожидал дискуссии по этой теме. Это говорит о том, что тема горячая, актуальная. Вопрос себя не исчерпал и тут есть над чем покреативить.

Хм, это звучит как сделай то, не знаю что.

Во первых вы не дали наводку как софту определить что он клон.

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

 

 

Ну и интересно, как узнать в чем конкурентные превосходства продукта?

Я бы даже сказал что клонирование и есть доказательство конкурентного превосходства. Клонирование надо позволять делать.

А потом включать конвейер апгрейдов. Тогда получится борьба на основе хорошего фидбэка.

 

 

 

Share this post


Link to post
Share on other sites

Отвечу с конца. Ваше предложение борьбы с клонами к теме не относится, т.к. это не техническое решение.

И тут я согласен, это правильный путь. Сюда еще приписывают маркетинг, торговую марку и т.д.

 

По техническому решению. Я все-таки плисовод, нежели программист микроконтроллеров. И в ПЛИС патч очень непросто поставить, насколько знаю. То есть даже считав прошивку, ее очень сложно расковырять.

Для контроллеров все проще. В общем случае, да, поставят заплатку на условный переход. И у меня нет конкретного рецепта, поэтому я высказал общие соображения в надежде на критику и дополнения.

 

Ну и интересно, как узнать в чем конкурентные превосходства продукта?

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

 

Хм, это звучит как сделай то, не знаю что.

Во первых вы не дали наводку как софту определить что он клон.

У меня есть некоторые идеи, как защитить ПЛИС с помощью статистических методов, используя которые прошивка «понимает», что она в контрафактном окружении. В данном случае все зиждется на том, что прошивку для ПЛИС очень непросто расковырять. Не буду тут кривить душой, идеи весьма сырые.

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

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

Share this post


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

В предыдущей зелезке мы имели неосторожность и алгоритмы антиклонинга вынесли в отдельный модуль ядра. lsmod его хорошо видел. Символов там было минимальное колличество. Вот там можно было сделать патч) Потом уже пришла мысль что надо было модуль статически в ядро линукса запихнуть. Хотя я если честно не проверял, покажет ли lsmod его как отдельный модуль?

Это мы все обсуждаем как не дать склонировать девайс.

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

Share this post


Link to post
Share on other sites

Имхо нет надёжной защиты, кроме выноса части функций устройства в аппаратно защищенный ключ(и), а дальше опора всей защиты на этот узел. Любые вензеля в стандартном x86 будут раскручены, не несущие функции аппаратные ключи - вырезаны.

То что крякеры рекламируют взлом всех существующих камней это понятно, вопрос чего они реально могут. Ну и за сколько, разумеется.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now