Raspberry Pi защита от обратного инжиниринга кодов - PullRequest
0 голосов
/ 12 октября 2018

Проблема Я хочу защитить свой Raspberry pi особым образом.Я хотел бы запустить Raspberry Pi без ввода пароля в качестве пользователя Pi.Однако я хочу, чтобы пользователь pi имел нулевую привилегию.Не могу прочитать файл, не могу скопировать файл, просто ничего.И без доступа к root -> 'sudo su'.С другой стороны, когда raspberry pi запускается с пользователем pi, я хочу, чтобы бэкэнд-процесс работал от имени пользователя root.Проще говоря, я хочу это как в зоопарке - два мира, но ни один из них не может войти в другой.Клиенты могут присутствовать, видеть, какой процесс запущен, видеть файлы в каталогах, но не может их читать, копировать, удалять и т. Д. В то же время я хочу, чтобы сервер не тронулся, работал и записывал файлы.

Причина:

У меня есть продукт raspberri pi - клиент получает его домой, когда подключается блок питания, RPi запускается и запускает бэкэнд-программы с привилегиями root и связывается с моим настольным программным обеспечением.

Но я не хочу любопытного клиента, который подключает HDMI и видит мой код.Я также не хочу, чтобы он взял SD-карту и извлек код.

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

Можно ли сделать такую ​​защиту?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы можете использовать следующий подход

  1. Использовать как минимум два уровня хэширования с MAC-адресом и серийным номером ARM-чипа (через cat /proc/cpuinfo) с дополнительными секретными ключами.Запускайте программу только в том случае, если сохраненный лицензионный ключ совпадает с результатом функций с двойным хешированием.

  2. При желании вы можете переписать критическую часть кода в C, скомпилировать его статически,и удалите все символы отладки.Назовите это, используя Python.

  3. Быстрая оптимизация вашего кода с использованием Cython.Вызовите его сгенерированные общие объекты с помощью скрипта вызывающего PythonРаспространяйте только общие объекты и скрипт вызывающего Python.

Это предотвратит большинство людей от обратного проектирования ваших кодов.

0 голосов
/ 12 октября 2018

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

По вашему вопросу, я не понимаю, почему вы бы даже оставили пользователя pi на месте ...


... запускает бэкэнд-программы с правами суперпользователя

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

Но я не хочу любопытного клиента, который подключается через HDMIи посмотрите мой код.

Тогда не включайте выход HDMI, не устанавливайте графический рабочий стол и не отключайте приглашение для входа в систему.Возможно, вы захотите взглянуть на изображение « минимальное » / « lite ».

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

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

Я также не хочу, чтобы он брал SD-карту и извлекал код.

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

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

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

Я слышал егоssible для обратного проектирования кода, даже если он скомпилирован.Поэтому я просто хочу, чтобы программы (сценарий Python) были там, но доступ к ним никак не возможен.

Python не компилируется до времени выполнения, поэтому вам необходимо отправить устройство с вашимисходный код на нем ...


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

...