Есть ли какой-нибудь способ скрыть или зашифровать ваш код python для пограничных устройств? Любой способ предотвратить обратное проектирование кода python?

#python #raspberry-pi #deep-learning #iot

#python #raspberry-pi #глубокое обучение #iot

Вопрос:

Я пытаюсь создать интеллектуальное устройство Интернета вещей (способное выполнять интеллектуальные операции компьютерного зрения на самом пограничном устройстве). Алгоритм глубокого обучения (написанный на python) реализован на Raspberry Pi. Теперь, отправляя этот продукт (программное обеспечение оборудование) моему клиенту, я хочу, чтобы никто не входил в Raspberry pi и не получал доступ к моему коду. Поток должен быть примерно таким: всякий раз, когда кто-то входит в pi, должен быть какой-то ключ, который необходимо ввести, чтобы получить доступ к коду. Но в этом случае как ОС получит доступ к коду и запустит его (без ключа). Тогда мне, возможно, придется хранить ключ на локальном. Но все же есть шанс получить доступ к ключу и получить доступ к коду. Я подал заявку на патент на свою работу и хочу защитить его.

Я думаю зашифровать свой код (написанный на python) и просто отправить исполняемую версию. Я попробовал pyinstaller для этого, но каким-то образом в Интернете есть скрипт, который может его перепроектировать.

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

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

Комментарии:

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

2. Но дело в том, что я также не хочу выдавать обученную модель. Bcz мой код содержит несколько пользовательских логик, помимо обнаружения, которые я также не хочу раскрывать. Дайте мне знать, есть ли способ для того же.

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

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

Ответ №1:

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

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