Это хорошая концепция для активации серийного ключа с помощью веб-службы?

Я пишу приложение для рабочего стола Windows в WPF. Мне нужно добавить в процессе активации, и мне было интересно, если у меня есть правильная идея

Это процесс, который я думал о реализации. Будет ли это лучшим решением

  • Когда пользователь загружает приложение, оно проверяет ключ реестра с кодом активации в нем

Требуется активация

  • Если в реестре нет ключа активации, им выдается страница активации
  • Здесь они введут туда ключ активации, который они получат от нас.
  • Когда пользователь нажимает активировать, я получаю серийный номер своего жесткого диска и хэш
  • Затем я подключаюсь к веб-сервису, который я написал, чтобы проверить - существует ли ключ - есть ли назначенный ему последовательный хэш жесткого диска - активен ли он
  • Если он отвечает всем этим критериям, я обновляю свою БД через веб-сервис с помощью жесткого диска и помечаю его как активный.

Уже активен (ключ реестра с ключом активации присутствует)

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

Помимо вопроса, является ли это правильным способом, у меня есть несколько дополнительных проблем:

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

Буду очень признателен за любой совет, который кто-нибудь может дать. Я не мог найти никаких ответов там.

2 ответа

Звучит хорошо, но вы должны иметь в виду:

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

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

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

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