Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Linux _ Защита от клонирования и перепрошивки.

Автор: JeDay Jun 15 2018, 08:37

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

Автор: x736C Jun 15 2018, 15:27

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

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


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

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

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

Автор: kolobok0 Jun 16 2018, 06:47

Цитата(JeDay @ Jun 15 2018, 11:37) *
...Задался вопросом,...



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

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


с уважением
(круглый)

Автор: AlexandrY Jun 16 2018, 07:12

Цитата(x736C @ Jun 15 2018, 18:27) *
Исходя из всего прочитанного по теме пришел к выводу, что защита должна быть очень скрытая. Сам факт ее наличия должен быть неочевидным. И проявлять себя должна псевдослучайным образом на длинном промежутке времени. Единичные отказы на длительных промежутках времени и вылавливать дольше и сложнее.

Фиеричная идея!
Смысл в том чтобы сделать умышленные сбои неотличимыми от неумышленных багов.
А как такую программу отлаживать, спрашивается?

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

Автор: jcxz Jun 16 2018, 08:15

Цитата(AlexandrY @ Jun 16 2018, 10:12) *
Как вариант защиты - версионирование.
Нужно создать технологию автоматической генерации новых версий с постоянной периодичностью.
Вот это настоящий кошмар для хакеров.

Ага! Если ещё и в каждую версию закладывать баги, начинающие срабатывать после определённой даты или количества включений! Обновляем - получаем новую порцию багов, но пока спящих. И так подсаживаем юзеров на иглу постоянных апдейтов и сами никогда не останемся без работы и хакерам кровь попортим!
И есть широкоизвестные и успешные конторы, работающие по такому принципу biggrin.gif

Автор: x736C Jun 16 2018, 11:01

Цитата(AlexandrY @ Jun 16 2018, 10:12) *
Фиеричная идея!
Смысл в том чтобы сделать умышленные сбои неотличимыми от неумышленных багов.
А как такую программу отлаживать, спрашивается?

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

Автор: AlexandrY Jun 16 2018, 11:42

Цитата(x736C @ Jun 16 2018, 14:01) *
Это очень надуманное соображение. Я было начал что-то отвечать, но потом понял, что не имеет никакого смысла. Все что вы написали актуально, но элементарно разрешимо.

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

Автор: a123-flex Jun 16 2018, 12:35

Цитата(jcxz @ Jun 16 2018, 12:15) *
Ага! Если ещё и в каждую версию закладывать баги, начинающие срабатывать после определённой даты или количества включений! Обновляем - получаем новую порцию багов, но пока спящих. И так подсаживаем юзеров на иглу постоянных апдейтов и сами никогда не останемся без работы и хакерам кровь попортим!
И есть широкоизвестные и успешные конторы, работающие по такому принципу biggrin.gif

Microsoft ?)

Автор: x736C Jun 16 2018, 13:25

Цитата(AlexandrY @ Jun 16 2018, 14:42) *
Все его будут использовать как ни в чем не бывало.

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

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

Автор: a123-flex Jun 16 2018, 14:24

Цитата(x736C @ Jun 16 2018, 17:25) *
Я ожидал дискуссии по этой теме.

А есть факты из надежных источников считывания прошивок залоченных на чтение STM32 ?
Очень хотелось бы верить в то, что этот элемент системы - доверенный blush.gif

Цитата(x736C @ Jun 16 2018, 17:25) *
Это говорит о том, что тема горячая, актуальная.

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

Автор: x736C Jun 16 2018, 14:59

Цитата(a123-flex @ Jun 16 2018, 17:24) *
А есть факты из надежных источников считывания прошивок залоченных на чтение STM32 ?

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

Автор: AlexandrY Jun 16 2018, 17:00

Цитата(x736C @ Jun 16 2018, 16:25) *
Все зависит от критичности сбоя и их интенсивности. Очевидно, что «сбои» должны выводить клон из области конкурентного превосходства в худшем случае. А в лучшем случае не должны позволить сделать из клона полноценный продукт.

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

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


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



Автор: x736C Jun 16 2018, 17:20

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

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

Цитата(AlexandrY @ Jun 16 2018, 20:00) *
Ну и интересно, как узнать в чем конкурентные превосходства продукта?

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

Цитата(AlexandrY @ Jun 16 2018, 20:00) *
Хм, это звучит как сделай то, не знаю что.
Во первых вы не дали наводку как софту определить что он клон.

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

Автор: JeDay Jun 16 2018, 20:08

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

В предыдущей зелезке мы имели неосторожность и алгоритмы антиклонинга вынесли в отдельный модуль ядра. lsmod его хорошо видел. Символов там было минимальное колличество. Вот там можно было сделать патч) Потом уже пришла мысль что надо было модуль статически в ядро линукса запихнуть. Хотя я если честно не проверял, покажет ли lsmod его как отдельный модуль?
Это мы все обсуждаем как не дать склонировать девайс.
Есть еще одна проблемка, для кого-то это вовсе не проблема - кастомные прошивки. Против этого в том же внешнем МК у нас был хард-ресет заведен на процессор. И если долго небыло запроса с линукса о проверке подлинности, МК ребутал проц. Но такую штуку легко хардварно пофиксить sad.gif

Автор: a123-flex Jun 17 2018, 12:10

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

Автор: Tarbal Jul 4 2018, 03:32

Советую вам разобраться как работает лицензирование.
Грубо:
Программа расшифровывает конфигурацию аппликации или проекта публичным ключом. В конфигурации указан срок действия лицензии. Много можно чего напридумывать.

Автор: Olej Jul 4 2018, 16:45

Цитата(JeDay @ Jun 15 2018, 11:37) *
Задался вопросом, как защитить свое устройство на базе линукса на не секюрном процессоре с внешней SPI флешкой.аря по цифровой подписи, но лучше чем ничего.
...
У кого какие мысли?

Мысль такая, что юные дарования валом "задавались вопросом" как защитить их "гениальные творения" santa2.gif ещё со времён раннего MS-DOS.
Вы находитесь в разделе Linux, и в мире Linux, который является, вообще-то говоря open+free, где действуют GPL-лицензии в разных вариантах, которые, кстати, предписывают и что вы со своим "гениальным творением" имеете право делать, а чего нет ... раз уж вы опираетесь на Linux ... да ещё и на другие GNU инструменты.

Автор: JeDay Jul 4 2018, 19:58

Цитата(Olej @ Jul 4 2018, 19:45) *
Мысль такая, что юные дарования валом "задавались вопросом" как защитить их "гениальные творения" santa2.gif ещё со времён раннего MS-DOS.
Вы находитесь в разделе Linux, и в мире Linux, который является, вообще-то говоря open+free, где действуют GPL-лицензии в разных вариантах, которые, кстати, предписывают и что вы со своим "гениальным творением" имеете право делать, а чего нет ... раз уж вы опираетесь на Linux ... да ещё и на другие GNU инструменты.

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

Отвечу сам себе может кому-то пригодится.
Если в проца нет секюрного загрузчика то на 100% защититься от перепрошивки кастомными прошивками не получится. Есть чипы ATECC608A, ATSHA204.. отличное решение если конечно secure boot обеспечивает запуск u-boot к примеру в котором реализован драйвер этих чипов. Тогда вы можете проверить цифровую подпись линукса открытыми ключами которые будут хратиться в чипах упомянутых выше. Но без secure boot злоумышленник может просто заменить ваш u-boot своим и наплевав на цифровую подпись загрузить линукс напрямую.
Чтобы хоть как-то усложнить взлом, Ambarella и Atmel тоже рекомендуют загрузчик прописывать в OTP сектор в NAND либо лочить его от перезаписи.
http://electronix.ru/redirect.php?http://ww1.microchip.com/downloads/en/AppNotes/doc8753.pdf
Но такую защиту можно обойти: снять дамп с оригинальной флеши, перепаять на новую заменив при этом u-boot.

Автор: Tarbal Jul 5 2018, 01:45

Цитата(JeDay @ Jul 4 2018, 23:58) *
У Вас по ходу инженерные мысли отсутствуют, а отметиться в этой ветке заходелось biggrin.gif

Отвечу сам себе может кому-то пригодится.
Если в проца нет секюрного загрузчика то на 100% защититься от перепрошивки кастомными прошивками не получится. Есть чипы ATECC608A, ATSHA204.. отличное решение если конечно secure boot обеспечивает запуск u-boot к примеру в котором реализован драйвер этих чипов. Тогда вы можете проверить цифровую подпись линукса открытыми ключами которые будут хратиться в чипах упомянутых выше. Но без secure boot злоумышленник может просто заменить ваш u-boot своим и наплевав на цифровую подпись загрузить линукс напрямую.
Чтобы хоть как-то усложнить взлом, Ambarella и Atmel тоже рекомендуют загрузчик прописывать в OTP сектор в NAND либо лочить его от перезаписи.
http://electronix.ru/redirect.php?http://ww1.microchip.com/downloads/en/AppNotes/doc8753.pdf
Но такую защиту можно обойти: снять дамп с оригинальной флеши, перепаять на новую заменив при этом u-boot.


Вы бы полегче. У Olej вообще-то несколько книг с блестящими инженерными мыслями. Нa сайте IBM его книги тоже есть.
http://electronix.ru/redirect.php?https://www.ibm.com/developerworks/ru/library/l-linux_kernel_01/index.html
http://electronix.ru/redirect.php?https://www.ibm.com/developerworks/ru/library/snmp_essentials_02/index.html

И еще много.

Автор: Kabdim Jul 5 2018, 07:47

А как же стильный, модный, молодежный способ - перенести часть функционала в облако?

Автор: JeDay Jul 5 2018, 09:45

Цитата
Вы бы полегче. У Olej вообще-то несколько книг с блестящими инженерными мыслями. Нa сайте IBM его книги тоже есть.
http://electronix.ru/redirect.php?https://www.ibm.com/developerworks/ru/libra...l_01/index.html
http://electronix.ru/redirect.php?https://www.ibm.com/developerworks/ru/libra...s_02/index.html


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

Цитата
А как же стильный, модный, молодежный способ - перенести часть функционала в облако?

У меня облако тоже есть. Но это не значит что это лечение от всего. wink.gif

Автор: Kabdim Jul 5 2018, 10:45

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

Автор: Tarbal Jul 6 2018, 03:22

Цитата(JeDay @ Jul 5 2018, 13:45) *
А причем тут книги до написанного поста выше? Судя по книгам человек опытный, молодец. Но в после было полезной инфы - ноль.


Человек высказал отношение к вопросу сообщества Open Source и GNU лицензии. Это жизненная позиция.
Хотя самый цирк начинается. Микрософт купил Github.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)