<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="Stylesheet" type="text/css" href= "../../default.css" /> <meta http-equiv="Content-Type" content= "text/html; charset=utf-8" /> <title>Генераторы ключей</title> <style type="text/css"> </style> </head> <body> <h1>Генераторы ключей</h1><strong>Зачем они нужны?</strong> <p>Помимо VMProtect, серийные номера могут генерироваться другими программами - генераторами. Это нужно для автоматизации выдачи номеров без участия человека. Покупатель покупает продукт, регистратор делает HTTP-запрос на сайт производителя, там запускается программа-генератор и на основе данных о покупателе формирует серийный номер. Номер отправляется покупателю и производителю. Производитель вносит его в базу VMProtect вручную, через окно импорта лицензий.</p><strong>Принцип работы</strong> <p>Система лицензирования VMProtect построена на асимметричных алгоритмах, поэтому для генерации серийных номеров требуется секретный ключ продукта. Этот ключ можно экспортировать в окне свойств продукта и передать программе-генератору подходящим для нее способом.</p> <p>Программа-генератор вызывается регистратором через HTTP-запрос. Генератор на PHP может быть вызван напрямую, генератор в виде DLL - косвенно, но алгоритм остается одним и тем же:</p> <ul> <li>Получить данные о пользователе от регистратора</li> <li>Добавить необходимую информацию, которую указал производитель</li> <li>Сформировать серийный номер</li> <li>Зашифровать его одним из алгоритмов</li> <li>Передать результат регистратору</li> </ul><strong>Существуют ли готовые генераторы?</strong> <p>С системой лицензирования поставляется три готовых генератора серийных номеров <a href="keygen_dll.htm">в виде DLL</a>, <a href="keygen_net.htm">для платформы .Net</a> и <a href= "keygen_php.htm">реализованный на PHP</a>.</p><strong>Можно ли сделать свой генератор?</strong> <p>Можно. Формат серийного номера находится <a href= "serial_format.htm">здесь</a>, алгоритмы шифрования серийного номера описаны <a href= "algorithms.htm">здесь</a>.</p><strong>Насколько это безопасно?</strong> <p>В общем случае - вполне безопасно. Однако есть несколько рекомендаций, которым стоит следовать:</p> <ul> <li><strong>Используйте протокол HTTPS</strong> - если ваш регистратор умеет делать запрос по HTTPS, а ваш хостинг позволяет отвечать на такие запросы, то этот вариант предпочтительнее обычного HTTP, т.к. поток данных будет зашифрован и сгенерированный серийный номер сможет получить только регистратор.</li> <li><strong>"Спрячьте" генератор</strong> - убедитесь, что генератор нельзя вызвать случайно. Адрес www.site.com/keygen.php - плохая идея. А вот www.site.com/abc123.php - уже лучше. Убедитесь, что на генератор нет внешних ссылок, что он не показывается при просмотре содержимого директории сайта и не помещайте его в служебные файлы типа robots.txt. Чем меньше известно о расположении генератора - тем лучше. Как вариант - можно вынести генератор на другой сайт.</li> <li><strong>Убедитесь, что вас вызывает регистратор</strong> - в программе, обрабатывающей запрос от регистратора, необходимо проверить IP-адрес вызывающей стороны. Обычно регистраторы публикуют список адресов, с которых они могут вызвать генератор. Найдите такой у вашего регистратора и добавьте проверку. В случае несовпадения адреса, лучше не выдавать понятных ошибок. Не возвращайте ничего или верните ошибку 404. Не давайте повода понять, почему вызов оказался неудачен.</li> <li><strong>Проверяйте входные параметры</strong> - в настройках продукта у регистратора обычно дается возможность указать строку запроса, который регистратор будет делать для получения лицензии. Скажем, вы хотите получать имя пользователя, адрес его электронной почты, дату продажи и номер заказа. Убедитесь при получении запроса, что все параметры переданы и что все они имеют корректный формат. Не отвечайте на запросы с ошибками. О любых ошибках уведомляйте себя отправкой e-mail со всеми параметрами, с которыми был вызван генератор. Это поможет разобраться в причинах проблемы.</li> <li><strong>Добавьте "пароль"</strong> - укажите в запросе, посылаемом регистратором, дополнительный параметр - пароль. С неочевидным именем и значением. Проверяйте его на принимающей стороне. В случае несовпадения или отсутствия - не генерируйте номер.</li> </ul><br /> <br /> <br /> <br /> <br /> <hr noshade="noshade" size="1" /> <div align="center"> © 2006-2015 Copyright VMProtect Software </div> </body> </html>