Это хорошая концепция для активации серийного ключа с помощью веб-службы?
Я пишу приложение для рабочего стола Windows в WPF. Мне нужно добавить в процессе активации, и мне было интересно, если у меня есть правильная идея
Это процесс, который я думал о реализации. Будет ли это лучшим решением
- Когда пользователь загружает приложение, оно проверяет ключ реестра с кодом активации в нем
Требуется активация
- Если в реестре нет ключа активации, им выдается страница активации
- Здесь они введут туда ключ активации, который они получат от нас.
- Когда пользователь нажимает активировать, я получаю серийный номер своего жесткого диска и хэш
- Затем я подключаюсь к веб-сервису, который я написал, чтобы проверить - существует ли ключ - есть ли назначенный ему последовательный хэш жесткого диска - активен ли он
- Если он отвечает всем этим критериям, я обновляю свою БД через веб-сервис с помощью жесткого диска и помечаю его как активный.
Уже активен (ключ реестра с ключом активации присутствует)
- Получить серийный номер своего жесткого диска и хэш
- Получить ключ из реестра
- Подключитесь к веб-сервису, чтобы проверить, существует ли ключ, все еще активен и назначен на правильный хеш жесткого диска
- Если это так, я разрешаю пользователю продолжить
- Если нет, тогда я полностью удаляю ключ реестра и сообщаю им, что им потребуется повторно активировать программное обеспечение, а затем загружаю страницу активации.
Помимо вопроса, является ли это правильным способом, у меня есть несколько дополнительных проблем:
Веб-сервис должен быть защищен. Пользователю нужно будет иметь доступ в Интернет при каждом запуске программы, чтобы я мог проверить веб-сервис.
Буду очень признателен за любой совет, который кто-нибудь может дать. Я не мог найти никаких ответов там.
2 ответа
Звучит хорошо, но вы должны иметь в виду:
- Соединение с веб-сервисом должно быть защищено с помощью SSL.
- Обмен сообщениями между веб-сервисом должен быть подписан с использованием некоторого вида закрытого / открытого ключа, чтобы клиент знал, что сообщение действительно исходит от сервера, и пользователи не создают свои собственные серверы активации.
- Ваш веб-сервис должен быть на серверах с высокой доступностью (вы не хотите, чтобы злые пользователи звонили, потому что они не могут выполнить свою работу).
- Серийный номер жесткого диска может быть изменен. Вы можете объединить это с чем-то другим.
Концепция, которую вы придумали, пока что хороша, но, поскольку вы требуете, чтобы пользователь был в сети постоянно, я бы дополнительно зашифровал данные с помощью RSA.
Ваш продукт получает жесткий код открытого ключа, а данные, которые вы отправляете на сервер, отправляются обратно в зашифрованном виде с помощью закрытого ключа RSA. Таким образом, вы можете запретить им использовать самодельные серверы активации, которые ничего не делают, а только говорят: "Все в порядке, вы активированы".