Генераторы ключей
Зачем они нужны?
Помимо VMProtect, серийные номера могут генерироваться другими
программами - генераторами. Это нужно для автоматизации выдачи
номеров без участия человека. Покупатель покупает продукт,
регистратор делает HTTP-запрос на сайт производителя, там
запускается программа-генератор и на основе данных о покупателе
формирует серийный номер. Номер отправляется покупателю и
производителю. Производитель вносит его в базу VMProtect вручную,
через окно импорта лицензий.
Принцип работы
Система лицензирования VMProtect построена на асимметричных
алгоритмах, поэтому для генерации серийных номеров требуется
секретный ключ продукта. Этот ключ можно экспортировать в окне
свойств продукта и передать программе-генератору подходящим для
нее способом.
Программа-генератор вызывается регистратором через
HTTP-запрос. Генератор на PHP может быть вызван напрямую,
генератор в виде DLL - косвенно, но алгоритм остается одним и тем
же:
- Получить данные о пользователе от регистратора
- Добавить необходимую информацию, которую указал
производитель
- Сформировать серийный номер
- Зашифровать его одним из алгоритмов
- Передать результат регистратору
Существуют ли готовые генераторы?
С системой лицензирования поставляется три готовых генератора
серийных номеров в виде DLL,
для платформы .Net и реализованный на PHP.
Можно ли
сделать свой генератор?
Можно. Формат серийного номера находится здесь, алгоритмы шифрования серийного
номера описаны здесь.
Насколько это
безопасно?
В общем случае - вполне безопасно. Однако есть несколько
рекомендаций, которым стоит следовать:
- Используйте протокол HTTPS - если ваш
регистратор умеет делать запрос по HTTPS, а ваш хостинг
позволяет отвечать на такие запросы, то этот вариант
предпочтительнее обычного HTTP, т.к. поток данных будет
зашифрован и сгенерированный серийный номер сможет получить
только регистратор.
- "Спрячьте" генератор - убедитесь, что
генератор нельзя вызвать случайно. Адрес
www.site.com/keygen.php - плохая идея. А вот
www.site.com/abc123.php - уже лучше. Убедитесь, что на
генератор нет внешних ссылок, что он не показывается при
просмотре содержимого директории сайта и не помещайте его в
служебные файлы типа robots.txt. Чем меньше известно о
расположении генератора - тем лучше. Как вариант - можно
вынести генератор на другой сайт.
- Убедитесь, что вас вызывает регистратор -
в программе, обрабатывающей запрос от регистратора, необходимо
проверить IP-адрес вызывающей стороны. Обычно регистраторы
публикуют список адресов, с которых они могут вызвать
генератор. Найдите такой у вашего регистратора и добавьте
проверку. В случае несовпадения адреса, лучше не выдавать
понятных ошибок. Не возвращайте ничего или верните ошибку 404.
Не давайте повода понять, почему вызов оказался неудачен.
- Проверяйте входные параметры - в
настройках продукта у регистратора обычно дается возможность
указать строку запроса, который регистратор будет делать для
получения лицензии. Скажем, вы хотите получать имя
пользователя, адрес его электронной почты, дату продажи и номер
заказа. Убедитесь при получении запроса, что все параметры
переданы и что все они имеют корректный формат. Не отвечайте на
запросы с ошибками. О любых ошибках уведомляйте себя отправкой
e-mail со всеми параметрами, с которыми был вызван генератор.
Это поможет разобраться в причинах проблемы.
- Добавьте "пароль" - укажите в запросе,
посылаемом регистратором, дополнительный параметр - пароль. С
неочевидным именем и значением. Проверяйте его на принимающей
стороне. В случае несовпадения или отсутствия - не генерируйте
номер.
© 2006-2015 Copyright VMProtect Software