это мой первый вопрос, поэтому, пожалуйста, будьте осторожны ...
Я работаю над программным обеспечением, которое я хотел бы защитить, используя какую-то схему лицензирования.
Базовая схема будет состоять в том, чтобы сгенерировать некоторый «уникальный» ключ для пользователя. Пользователь отправляет этот ключ и регистрационный код, когда хочет зарегистрировать программное обеспечение и получает код активации.
Когда приложение запускается, оно проверяет код активации, сравнивая «уникальный» ключ и блок данных, полученный при расшифровке кода активации.
Это справедливо и довольно просто для реализации, можно выбирать разные криптоалгоритмы и т. Д., Однако в этой схеме отсутствуют два свойства:
- Если пользователю удастся подменить аппаратную подпись и т. Д. Для создания того же «уникального» ключа на другом компьютере, он может использовать те же данные лицензии.
- Если пользователь решает удалить приложение и хочет переместить его на другой компьютер, ничто не мешает ему снова использовать старые лицензионные данные на старом компьютере и по-прежнему получать новые лицензионные данные для новой установки.
У вас есть предложения по решению этих проблем?
Одна идея, которая у меня возникла, состояла в том, чтобы добавить некоторые случайные данные к «уникальному» ключу, эти случайные данные будут храниться неясным образом, если пользователь удалит приложение, эти случайные данные будут удалены, и какой-то хэш будут сгенерированы предыдущие случайные данные и данные лицензии, которые можно будет отправить мне, чтобы убедиться, что он действительно удалил приложение и убедил меня, что он не сможет снова использовать предыдущие данные лицензии, поскольку случайные данные изменились.
Снова и снова, пока ...
EDIT:
В настоящее время у меня есть схема, которая работает, и я должен упомянуть, что наиболее распространенный продукт устанавливается во встроенной среде, где аппаратные изменения происходят очень редко, и если происходит сбой оборудования, то, скорее всего, машина сломана. Но я мог бы изменить схему аппаратных ключей, чтобы учесть и внести некоторые изменения.
Кроме того, из-за этого программное обеспечение, скорее всего, не будет работать внутри виртуальной машины, но это хороший момент, и я не думал об этом.
Приложение не вызывает регулярно, если сетевое соединение доступно, пользователь получает возможность сделать более автоматическую регистрацию, в противном случае он / она получает регистрационный ключ, вводит его в программное обеспечение и получает идентификатор установки, который является предоставленный мне, регистрационный код + идентификатор установки генерирует ключ активации, который пользователь получает от меня, который затем разблокирует программное обеспечение.
Я ищу хорошие / выполнимые решения для 2 пунктов. Подмена оборудования, отзыв лицензионных ключей, т. Е. Чтобы пользователь не мог использовать один и тот же код regcode + код активации.
Спасибо за ваши отзывы
Не нужно