Безопасное решение для привязки Java-приложения к пользователю / компьютеру

Существует ли безопасное решение для Java-приложений, связывающее их с конкретным пользователем или компьютером, например, с использованием MAC-адреса (небезопасно, потому что его можно изменить?) Или каких-либо других аппаратных данных?

Мы не хотим создавать аппаратные решения, такие как USB-флешки / ключи, но мы должны проверить, разрешено ли пользователю программного обеспечения использовать его.

Вообще, какой вариант лучше против компьютерного пиратства?
Всегда онлайн?
Сервер проверки?
Используете аппаратные данные для идентификации?
...

2 ответа

Решение

Одна популярная тенденция - когда программное обеспечение проверяет срок действия лицензии при запуске (или регулярно) с центрального сервера. Таким образом, вы можете отозвать скомпрометированную лицензию. Вероятно, есть несколько служб, которые будут управлять этими лицензиями для вас, я видел, что Esellerate использовал.

В то же время любая защита, которую вы добавляете в свое Java-приложение, может быть легко перепроектирована или просто перегружена, если вы не приложите много усилий, чтобы запутать и обезопасить код. Это очень сложная задача, и результаты могут не стоить усилий.

Некоторые компании (например, та, в которой я работаю) не идут на многое, кроме базового кода генерации / проверки лицензии. Хорошо работает сочетание доверия честных клиентов и предоставления поддержки только действительным владельцам лицензий.

Использование комбинации идентификации локальной системы и онлайн-проверки работало для меня эффективно в прошлом; оба, возможно, не являются взаимоисключающими. Вы можете получить различные системные свойства, используя один или несколько из следующих методов:

System.getProperty("user.name");

System.getProperty("user.home");

System.getProperty("os.arch"); // the operating system architecture

System.getProperty("os.name");

System.getProperty("os.version");

Эти данные могут быть затем хэшированы с использованием пакета java.security.MessageDigest и связаны с вашей учетной записью пользователя на сервере. Аутентификация пользователя и компьютера в таком случае будет такой же простой, как если бы ваше клиентское программное обеспечение отправляло полученный хеш на сервер как часть процедуры запуска.

Другие вопросы по тегам