Зашифруйте всю программу и расшифруйте только в памяти - PullRequest
0 голосов
/ 27 января 2020

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

Как мне защитить Python код?

, и до сих пор был ответ "это невозможно сделать, используйте правовые меры, такие как NDA ". С одной стороны, в это трудно поверить, с другой стороны, мой босс все еще хочет этого, а не только юридические меры (и, честно говоря, я хочу этого). Коллеги предложили это, это может быть другой код, чем python, а также базы данных и тому подобное, так что это будет более универсальным, чем решения, специально предназначенные для python:

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

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

Как этот подход может быть реализован на практике?

Ответы [ 2 ]

1 голос
/ 28 января 2020
Поле

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

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

Вы можете все еще запутывать свой код, чтобы сделать его менее читабельным, но это все еще только запутывание

это звучит как большая работа и не стоит усилий .

это может быть хорошей оценкой. Я считаю, что это одна из причин, по которой SaaS и API-интерфейсы так популярны в наши дни

1 голос
/ 27 января 2020

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

Python сделал ранний выбор дизайна, чтобы предотвратить сокрытие информации, чтобы сделать доступными лучшие инструменты разработки. Это нарушает большинство чистых Python схем.

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

  • Поговорите с материнским кораблем: требуется соединение Inte rnet и система, которую вы гарантированно поддерживаете (от DDOS-атак и т. Д. c.), Такая программа нужно поговорить с родным кораблем, чтобы бежать. Иногда вход в систему делает что-то такое же простое, как возврат текущей даты, так что использование пиратского программного обеспечения возможно, но действительно раздражает. В других конфигурациях значительный код выполняется только на сервере.
  • Subvert Python: вы можете обойти с помощью ловушек импорта, расшифровать некоторую строку и проверить ее, обойти с помощью пользовательских кодеков, запустить обфускаторы кода и т. Д. c. Проблема в том, что они всегда приводят к ошибкам, ошибки трудно отлаживать, и пользователи больше не дают вам хорошее представление о том, какие другие ошибки произошли.
  • Настройка имени клиента: в вашем файле конфигурации с именем клиента используется некоторая криптография c контрольная сумма.

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

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