Я хочу продать какое-то программное обеспечение, написанное мной на Python.Мой интерфейс позволяет пользователю предоставить свой лицензионный ключ и сохранить его локально.Программа вращается вокруг одной кнопки в интерфейсе, который запускает программу.Моя идея состояла в том, чтобы создать HTTPS API (возможно, с использованием Flask, поскольку я знаю, как его использовать) на сервере AWS EC2.Затем, когда пользователь нажимает кнопку для запуска сервера, программа извлекает его локально сохраненный лицензионный ключ и отправляет GET-запрос на сервер.Затем сервер проверяет наличие этого ключа в базе данных и, если он существует, возвращает True, в противном случае возвращает False.Затем локальная программа запустит программу, если вернется True, в противном случае она сообщит пользователю, что их ключ недействителен.
Я знаю, что это не особенно безопасно.Основная причина, которую я вижу, состоит в том, что с Python пользователь может просто зайти в мой файл .py и установить логическое значение всегда равным True или просто полностью удалить проверку.Итак, я подумал, что смогу бороться с этим, используя py2exe , хотя unpy2exe существует. pyarmor также выглядит как вариант, но я думаю, что для его взлома могут существовать некоторые инструменты, такие как this .
Даже если я смогу запретить пользователюПолучая доступ к коду, они не могут изменить ответ с сервера и изменить его на True?Даже если это HTTPS?
У меня также есть проблема, что я хотел бы, чтобы пользователь мог использовать мою программу только на одном компьютере одновременно.Я думал о сохранении их MAC-адреса, но я знаю, что это может быть легко подделано, поэтому я не совсем уверен, как это осуществить.
Некоторые могут сказать, что это идет за борт, и если кто-то захочетвзломать мое программное обеспечение, то они сделают это.Однако эта программа будет довольно дорогой и будет продаваться на рынке, где взлом является довольно распространенным явлением.Поэтому я действительно хотел бы сделать все возможное, чтобы сделать это как можно сложнее.
Итак, кто-нибудь знает, как я могу создать безопасную систему лицензирования для моей программы?По крайней мере, просто общая схема была бы чрезвычайно полезна.
Спасибо.
РЕДАКТИРОВАТЬ: Что касается безопасной генерации лицензионных ключей, как это будет, если я буду уверен, что он еще не существует?
from base64 import b64encode
from os import urandom
random_bytes = urandom(32)
license = b64encode(random_bytes).decode('utf-8')
EDIT2: Конечно, должен существовать какой-то отраслевой стандарт для лицензирования программного обеспечения, независимо от того, закодировано ли оно в Python?Как они это делают?