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

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

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

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


person Daniel Ruf    schedule 30.12.2012    source источник
comment
Какой лучший вариант против компьютерного пиратства? Сделайте это бесплатным программным обеспечением :-)   -  person JB Nizet    schedule 30.12.2012
comment
Это не реальный вариант для небольшого стартапа или компании, открывающей исходный код, хорошо, вы можете взимать деньги за поддержку, но этого часто недостаточно для начала.   -  person Daniel Ruf    schedule 30.12.2012
comment
Я это понимаю. Это было задумано как полусерьезная шутка, отсюда и смайлик.   -  person JB Nizet    schedule 30.12.2012
comment
Нет проблем =) Аутсорсинг в будущем действительно планируется и реальный вариант, но не сейчас.   -  person Daniel Ruf    schedule 30.12.2012
comment
Наиболее подходящее решение также будет зависеть от таких факторов, как размер вашей клиентской базы, количество обращений в службу поддержки, которые вы можете обработать, является ли ваше программное обеспечение целью для взломщиков (обычно это продукты с высокой ценой).   -  person izilotti    schedule 30.12.2012


Ответы (2)


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

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

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

person Vitaly Osipov    schedule 31.12.2012

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

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 и связан с вашей учетной записью на сервере. В этом случае аутентификация пользователя и машины будет такой же простой, как если бы ваше клиентское программное обеспечение отправило полученный хэш на сервер как часть процедуры запуска.

person Giles Thompson    schedule 31.12.2012