Mafiadev

Как защитить свой софт от взлома: лицензии, ключи и привязка к устройству

Почему проверка «ключ в .env» не защищает программу, как работают подписанные лицензии, привязка к устройству и офлайн-режим — простым языком.

Если вы продаёте программу или бота, рано или поздно столкнётесь с тем, что её пытаются использовать без оплаты. Полностью защититься невозможно, но можно сделать так, что взлом станет дороже покупки — а этого достаточно для большинства продуктов.

Слабые схемы, которые ломаются за минуты

  • Ключ в файле настроек. Если программа просто сравнивает ключ со строкой в своём коде — достаточно найти эту строку.
  • Проверка «да/нет» на сервере. Если сервер отвечает простым {"ok": true}, этот ответ легко подделать.
  • Один ключ на всех. Его выкладывают в сеть в первый же день.

Как устроена надёжная лицензия

1. Уникальный ключ на каждого покупателя

Ключ выдаётся автоматически после оплаты и связан с аккаунтом покупателя. Если ключ утёк — вы видите, чей он, и можете его отозвать.

2. Подписанный ответ сервера

Сервер не просто говорит «ок», а выдаёт токен лицензии, подписанный закрытым ключом (например, Ed25519). В программе хранится только открытый ключ: им можно проверить подпись, но нельзя создать новую. Подделать ответ сервера без закрытого ключа невозможно.

3. Привязка к устройству

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

4. Срок действия и офлайн-режим

Токен действует ограниченное время (например, 72 часа) и обновляется в фоне. Если интернет пропал — программа работает до конца срока токена. Если подписка закончилась или лицензия отозвана — новый токен не выдаётся.

5. Подписанные обновления

Обновления тоже подписываются. Программа ставит только те версии, подпись которых совпала, — так никто не подсунет пользователям «обновление» с вирусом.

Что ещё помогает

  • Сборка в EXE (Nuitka или PyInstaller) вместо исходников — отсекает большую часть любопытных.
  • Хостинг-модель. Если бот работает на вашем сервере, клиенту нечего взламывать: он получает результат, а не код.
  • Мониторинг. Аномалии вроде десятков активаций одного ключа видны в панели — такие ключи можно отозвать.

Что не стоит делать

  • Не тратьте недели на «непробиваемую» обфускацию — она мешает вам больше, чем взломщикам.
  • Не наказывайте честных покупателей: офлайн-режим, перенос на новый ПК и понятная поддержка важнее паранойи.

Всё описанное выше уже встроено в нашу платформу: подписанные лицензии, привязка к устройству, самостоятельная отвязка, офлайн-режим и подписанные релизы. Если вы хотите продавать свою программу по подписке — расскажите о проекте, поможем подключить лицензирование.

Читайте также