Как защитить свой софт от взлома: лицензии, ключи и привязка к устройству
Почему проверка «ключ в .env» не защищает программу, как работают подписанные лицензии, привязка к устройству и офлайн-режим — простым языком.
Если вы продаёте программу или бота, рано или поздно столкнётесь с тем, что её пытаются использовать без оплаты. Полностью защититься невозможно, но можно сделать так, что взлом станет дороже покупки — а этого достаточно для большинства продуктов.
Слабые схемы, которые ломаются за минуты
- Ключ в файле настроек. Если программа просто сравнивает ключ со строкой в своём коде — достаточно найти эту строку.
- Проверка «да/нет» на сервере. Если сервер отвечает простым
{"ok": true}, этот ответ легко подделать. - Один ключ на всех. Его выкладывают в сеть в первый же день.
Как устроена надёжная лицензия
1. Уникальный ключ на каждого покупателя
Ключ выдаётся автоматически после оплаты и связан с аккаунтом покупателя. Если ключ утёк — вы видите, чей он, и можете его отозвать.
2. Подписанный ответ сервера
Сервер не просто говорит «ок», а выдаёт токен лицензии, подписанный закрытым ключом (например, Ed25519). В программе хранится только открытый ключ: им можно проверить подпись, но нельзя создать новую. Подделать ответ сервера без закрытого ключа невозможно.
3. Привязка к устройству
Токен содержит отпечаток устройства. Скопировать файл лицензии на другой компьютер бессмысленно — там отпечаток другой. При этом покупателю нужна возможность самому отвязать старое устройство (с разумным лимитом), иначе поддержка утонет в просьбах.
4. Срок действия и офлайн-режим
Токен действует ограниченное время (например, 72 часа) и обновляется в фоне. Если интернет пропал — программа работает до конца срока токена. Если подписка закончилась или лицензия отозвана — новый токен не выдаётся.
5. Подписанные обновления
Обновления тоже подписываются. Программа ставит только те версии, подпись которых совпала, — так никто не подсунет пользователям «обновление» с вирусом.
Что ещё помогает
- Сборка в EXE (Nuitka или PyInstaller) вместо исходников — отсекает большую часть любопытных.
- Хостинг-модель. Если бот работает на вашем сервере, клиенту нечего взламывать: он получает результат, а не код.
- Мониторинг. Аномалии вроде десятков активаций одного ключа видны в панели — такие ключи можно отозвать.
Что не стоит делать
- Не тратьте недели на «непробиваемую» обфускацию — она мешает вам больше, чем взломщикам.
- Не наказывайте честных покупателей: офлайн-режим, перенос на новый ПК и понятная поддержка важнее паранойи.
Всё описанное выше уже встроено в нашу платформу: подписанные лицензии, привязка к устройству, самостоятельная отвязка, офлайн-режим и подписанные релизы. Если вы хотите продавать свою программу по подписке — расскажите о проекте, поможем подключить лицензирование.