У меня есть Java-приложение, которое я собираюсь продавать через Интернет. На данный момент я склоняюсь к развертыванию приложения с помощью веб-запуска Java. Продукт будет лицензирован для пользователя, чтобы использовать программу только на одном компьютере одновременно. Я обеспокоен пиратством с этой моделью. Я хотел бы установить некоторые функции безопасности для обеспечения соблюдения модели лицензирования. Цель состоит в том, чтобы по крайней мере затруднить для лицензированного пользователя копирование установленного продукта, включая лицензионный ключ, для нелицензированных пользователей. Вот варианты, на которые я сейчас смотрю:
Принудительная аутентификация пользователя на материнском корабле с именем пользователя / паролем при каждом запуске программы.
Просто установите лицензионный ключ где-нибудь (скрытый?) На ПК пользователя после того, как он зарегистрировался и оплатил. Во время выполнения убедитесь, что установлен действительный лицензионный ключ.
Использование / сборка пакета безопасности на основе аппаратного отпечатка компьютера пользователя. Этот отпечаток будет вычисляться при каждом запуске приложения и сравниваться с локально установленным лицензионным ключом с использованием некоторого вида хэша. Этот лицензионный ключ будет действительным только с этим аппаратным отпечатком.
Одна из проблем здесь заключается в том, что после установки этого приложения нет необходимости во времени выполнения для того, чтобы приложение связывалось с материнской платой, кроме проверки обновлений приложения с помощью веб-запуска java. Все, что приложение делает, это делает локально и отображает результаты пользователю, используя качели. Таким образом, любое решение с участием материнского судна в основном будет означать создание серверной инфраструктуры с единственной целью проверки лицензии.
Полагаю, что я ищу что-то, основанное на java, которое хотя бы в некоторой степени безопасно, легко развертывается и не доставляет неудобств пользователю. Какой подход к безопасности / лицензированию вы использовали?
РЕДАКТИРОВАТЬ: Я должен добавить, что я не обязательно ищу серебряную пулю, чтобы абсолютно все от победы над безопасностью. Всегда найдется кто-то, у кого будет достаточно времени, чтобы найти способы сделать это. Я не так обеспокоен этими парнями. Я просто пытаюсь сделать так, чтобы обычному пользователю было сложно скопировать лицензионный ключ и отправить его друзьям. Правильно реализованное решение должно убедить обычного пользователя в том, что его проще купить.