Перейти к содержанию
    

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

On 4/5/2021 at 7:39 PM, Herz said:

Так вот эта Ваша формула и играет роль "эталона".

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 minutes ago, mantech said:

Он есть далеко не везде, а там, где есть, 50% доки под НДА.

Ну так на то голова и нужна чтобы проверить годен ли чип для защиты от клонирования. И не юзать то что непригодно. В чем проблема-то? 
В STM32 все расписано в деталях.  NDA не нужен. 

43 minutes ago, mantech said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, AlexandrY сказал:

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

Т.е. Вы хотите тем самым сказать, что у "крутого" разработчика обфускатор встроен в мозг и он сразу реализует такие архитектуру и реализацию программы, что реверсер глядя на это начнёт тихо сходить с ума и пойдет повесится? ;-)

Мне кажется, что Вы немного передергиваете с утверждением "реверсеры как правило очень слабые разработчики". Либо приведите факты, подтверждающие эту концепцию. С моей точки зрения труд реверсера ничуть не проще труда разработчика, а в некоторых случаях и сложнее, когда разработчик оказался со встроенным в мозг обфускатором, когда используются реальные обфускаторы и различные другие средства защиты от исследования. Кроме того даже имея описание в виде регистров та же IDA не покажет что за биты пишутся в регистр и что это вообще за регистр такой. Чтобы её этому научить реверсер должен разработать оснастку (скрипты) для автоматизации этого анализа и, да, он внезапно становится разработчиком (скриптов и средств автоматизации).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AlexandrY said:

Поэтом-то в реверсеры как правило очень слабые разработчики. 

Может тогда гуру программирования скажут начинающим "реверсерам", что здесь исправляется
(по диаграммам IDA)

http://akb77.com/g/stm32/fix-jlink-ob-09262016/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, makc said:

Т.е. Вы хотите тем самым сказать, что у "крутого" разработчика обфускатор встроен в мозг и он сразу реализует такие архитектуру и реализацию программы, что реверсер глядя на это начнёт тихо сходить с ума и пойдет повесится? ;-)

Мне кажется, что Вы немного передергиваете с утверждением "реверсеры как правило очень слабые разработчики". Либо приведите факты, подтверждающие эту концепцию. С моей точки зрения труд реверсера ничуть не проще труда разработчика, а в некоторых случаях и сложнее, когда разработчик оказался со встроенным в мозг обфускатором, когда используются реальные обфускаторы и различные другие средства защиты от исследования. Кроме того даже имея описание в виде регистров та же IDA не покажет что за биты пишутся в регистр и что это вообще за регистр такой. Чтобы её этому научить реверсер должен разработать оснастку (скрипты) для автоматизации этого анализа и, да, он внезапно становится разработчиком (скриптов и средств автоматизации).

Ну что тут доказывать, я начинал свой путь с реверса.
И первый свой DSP алгоритм на основе битовой корреляции извлек из АОН-а Русь.
На тот момент я понятия не имел об основах DSP обработки. Но экстрагированный алгоритм с успехом продавал. 
Потом несколько лет пытался понять его теоретические основы. 

Потом общался с реверсерами первых мобилок.  Они были вооще не в курсе RTOS там применяемой, но  могли по битам рассказать как устроены сектора защищённой файловой системы. Как разработчики они были на нуле. 
Сам реверсил мобилы, пока был молодой и неопытный. Реверс интересен только неопытным. 

Т.е. я просто делюсь опытом. Если у вас другой опыт, то расскажите. 

6 minutes ago, x893 said:

Может тогда гуру программирования скажут начинающим "реверсерам", что здесь исправляется
(по диаграммам IDA)

У меня гора аутентичных JLink-ов. Возиться с их реверсом ну совсем не интересно.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, AlexandrY said:

Но экстрагированный алгоритм с успехом продавал.

А процент АОН-а Русь платили ?

 

11 minutes ago, AlexandrY said:

У меня гора аутентичных JLink-ов. Возиться с их реверсом ну совсем не интересно. 

Отличный ответ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, AlexandrY сказал:

На тот момент я понятия не имел об основах DSP обработки. Но экстрагированный алгоритм с успехом продавал. 
Потом несколько лет пытался понять его теоретические основы. 

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

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

22 минуты назад, AlexandrY сказал:

Т.е. я просто делюсь опытом. Если у вас другой опыт, то расскажите. 

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

14 минут назад, x893 сказал:

А процент АОН-а Русь платили ?

Не пойман - не вор. ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо сказать, что программные защиты всевозможных видов, основанные на проверках чего-нибудь, ломаются за считанные минуты :(

По собственному опыту (где то 30ти летней давности) - пришлось ломать Автокад. Никаких IDA не было, был примитивный офлайн дизассемблер (не помню уже какой именно) и отладчик (кажется turbo debugger). Защищён он был похоже flex lm (точно не скажу, тогда я таких слов не знал, а сейчас уже концов не найти). На то, что бы найти тот условный джамп и поменять на безусловный ушло пол часа.

 

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

 

Был и опыт с другой стороны. Приблизительно тогда же делал защиту на клон Синклера (ATM-Turbo).  Там была встроена CPM (её и защищали) и в качестве аппаратного ключа использовалась ПЛМка (на ней развертка генерилась). Было где то 3 уровня защиты, от простой проверки до трудно уловимых глюков в процессе работы. 2 уровня народные умельцы сломали, о последнем они не догадывались - в результате копии сбоили в работе, а вес шишки сыпались на оригинальных производителей :(

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, makc said:

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

Не, если хочется усложнить, то нынче делают нейронку и вставляют в МК. Вот где следов уже не найти.

Ну да алгоритм АОН никто не защищал, его нельзя было защитить, так как он работал на пределе ресурсов процессора, там было ни вставить, не убавить. 
Но сами программы в АОН-ах защищали еще как, если кто помнит. Там эфемерные биты во Flash организовывали, всякие фэйковые микросхемы и т.д.
Эт же живой пример, его доказывать не надо. Рядом со мной еще два или три пацана независимо отреверсили тот алгоритм. 
Упомянул только потому что разработчики плохо знают что легко, а что тяжело для реверсеров. 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 минуты назад, AlexandrY сказал:

Не, если хочется усложнить, то нынче делают нейронку и вставляют в МК. Вот где следов уже не найти.

Почему не найти? Чем это отличается от любой другой реализации алгоритма? Тем более что математика в этих сетях из-за ограниченных возможностей МК не может быть сильно сложной, объемы данных относительно небольшие и т.д. Принципиально пока не понятно, как это запутает следы. Ну разве что отпугнет реверсеров из-за иррационального религиозного страха перед нейронками. ;-) А еще в бинаре можно написать "найду реверсера - прибью". Главное не ошибиться с кодировкой. :biggrin:

24 минуты назад, AlexandrY сказал:

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

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

25 минут назад, AlexandrY сказал:

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

Вы себя не сравниваете с хирургом или вирусологом? Может быть не стоит прямо сравнивать квалификации разработчиков и реверсеров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AlexandrY сказал:

Для разработчика помнить цепочку вызовов с глубиной больше 10 - адская мука

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

1 час назад, xvr сказал:

И одним из примеров в составе программатора были исходники этой самой ключевой ПЛМ (это правда обнаружили когда с производством самих компьютеров уже завязали)

В том фишка и была наверно, смысл скрывать то, что уже неактуально...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

05.04.2021 в 14:01, murmur сказал:

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

Уже давно не принято, потому что в каждом первом МК сейчас есть штатная аппаратная защита, вскрытие которой разумеется возможно, но имеет свою цену.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 минут назад, Plain сказал:

Уже давно не принято, потому что в каждом первом МК сейчас есть штатная аппаратная защита, вскрытие которой разумеется возможно, но имеет свою цену.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, makc said:

 иррационального религиозного страха перед нейронками. ;-)

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

1 hour ago, makc said:

Вы себя не сравниваете с хирургом или вирусологом? Может быть не стоит прямо сравнивать квалификации разработчиков и реверсеров?

Тут будет сравнение фельдшера с доктором. Первый просто назначает лекарства,  второй обеспечивает здоровую жизнь.   Сравнивать всё стоит. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AlexandrY сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...