Как лучше\проще реализовать работу с серийными номерами\лицензиями чтобы не особо пиратили?

Я разработал некий десктопный софт. Хочу продавать его по подписке. Софт крайне нишевый, поэтому (хорошо если) будут десятки покупателей. Но just for fun хочу попробовать хоть какой то доход получить.

Лицензию на приложение планирую выдавать на год. Будет две версии. Standard и Pro.
Вопрос вот в чём. Как максимально просто чтобы не переусложнять реализовать работу с серийными номерами.

Мысли такие. Сделать какой-то кастомный алгоритм генерации серийников. Хоть тот же base64 с чем-то поверх, чтобы каждый первый его не смог взломать.

В сам серийник вшивать дату начала и конца лицензии. Если пользователь докупает Pro лицензию просто выдавать ему новый серийник.

Вопросы - как разумнее всего хранить информацию о регистрации? Просто куда-то сохранять файл лицензии и перечитывать его каждый раз на предмет не протух ли он? Или тут есть какие-то подводные камни?

Как понимаю любые серверные проверки всё слишком усложнят и толку много не принесут (софт то нишевый и особо пиратить не будут).

Какие вообще есть идеи-подходы? Можете поделиться опытом или какие-то статьи порекомендовать где описывают проблемы и подводные камни?
  • Вопрос задан
  • 825 просмотров
Пригласить эксперта
Ответы на вопрос 8
@d-stream
Готовые решения - не подаю, но...
Ну из классики .ini / .xml / .yml / .toml / etc файл с сигнатурой его содержимого

Соответственно генерация файла лицензии и подписание - закрытой частью ключа, верификация - открытой (классика)

Кончилась лицензия - сгененрировать и выслать новый файл.

Литература - любая доступная про ассиметричное шифрование
Ответ написан
Griboks
@Griboks
Забудьте все, что вы знали о лицензии. Только бесконечные серверные проверки каждую секунду. Интернет прервался на 5 секунд = приложение превратилось в картошку.

Любые оффлайн методы защиты ломаются за пол дня.
Ответ написан
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Единственный способ запретить нелецинзионное копирование вашей программы - это вынести что-то важное в серверную часть. Там логин/пароль пользователя, плюс проверки на отсутствие параллельных сессий.

Все остальное ломается.

Следующий плохой вариант: делать слепок системной информации, при активации лицензии подписывать его на сервере приватным ключем. Программа открытым ключем проверяет, что файл лицензии корректен (расшифровывает и смотрит, что системная информация совпадает).
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Нишевый софт не пиратят. Не надо никому. В нишевом софте продают саппорт. Да, он и без саппорта работает, но бывает так, что разраб намеренно закладывает некий косяк, который происходит редко, но случившись, все обращает в тыкву (Nakivo)
Второй вариант (MS, Autodesk) - постоянная серверная проверка. Запускается программа - обращение к серверу лицензий. Нет записи - прости-прощай, не остановишь жизнь (C) (Это, разумеется, отламывается и вариант для тех, кто не боится прилета)
Ответ написан
@maksam07
Никаких. Все программы взламываются, даже на С++. Даже при работе с лицензией через сервер. Сниффером смотришь какой ответ приходит, в коде программы подменяешь его и вот у тебя фулл лицензия. Конечно, на С++ это может быть сделать затруднительно, но если программа будет иметь свою популярность, то и найдутся люди, которые захотят ее взломать. А если она пишется на .net, то там смысла лицензирования вообще почти 0

Самый профитный вариант должен быть через веб-сайт
Ответ написан
Adamos
@Adamos
Возможно, стоит сделать две версии программы:
- бесплатную, которая будет постоянно лезть на ваш сервер и без него неминуемо превращаться в тыкву
- и платную, владельцы которой покупают не только чистую совесть, но и независимость от вас и фактора автобуса
А проверки, которые могут лишить купившего лицензию возможности пользоваться продуктом просто потому, что вы куда-то подевались (сменили работу или страну, не заплатили за сервер) - крайне нехорошо с позиции клиента.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Можно изготовить такой USB-брелок который содержит важный функционал. Без которого приложение - бесполезно.
Типа аппаратное решение задачи в железе. Тогда получается что вы продаете софт + аппаратуру установка которой очень легкая. Но при этом пиратить и копировать такое решение невозможно.
Ответ написан
Комментировать
@v__V__v
Разработчик
Самый лучший способ - сделать так, чтобы никому и в голову не пришло пиратить ваш софт. Если это кому-то станет нужно, то спиратят даже с USB-брелоком. Отсюда у вас два выхода: цена должна быть [относительно] копеечная либо нулевая.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы