Электронный ключ в сети

01 марта 2003 годаРечь пойдет об особенностях использования электронных ключей для защиты сетевых приложений. Для наглядности будем разбирать эту тему на примере некоторой фирмы, которая создает программы, предназначенные для автоматизации предприятий различных отраслей и сфер деятельности.

Мы продолжаем разговор о защите программ с помощью электронных ключей. Сейчас речь пойдет об особенностях использования ключей для защиты сетевых приложений.

Для наглядности будем разбирать эту тему на примере фирмы N, которая создает программы, предназначенные для автоматизации предприятий различных отраслей и сфер деятельности. В настоящий момент фирма готовится к выпуску нового программного продукта, объединяющего уже известные разработки в единый комплекс. сопустим, Сетевой программный комплекс «Босс» состоит из 4 компонентов — «Бухгалтерия», «Зарплата», «Кадры» и «Канцелярия».

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

Немаловажным вопросом также является определение оптимальной маркетинговой политики — каким образом составить комплект поставки, если, к примеру, пользователю не нужны все компоненты программы, а индивидуальное формирование поставки невыгодно фирме.

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

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

Концепция сетевой защиты

Напомним принцип работы системы защиты с использованием электронных ключей:

  • С помощью специального софта защищаемая программа «настраивается» на параметры электронного ключа;
  • Во время запуска и в процессе работы программа проверяет наличие «своего» ключа. Если он не обнаружен, выдается сообщение об ошибке;

При работе с сетевыми ключами эта схема имеет некоторые особенности:

  • Сетевые электронные ключи обеспечивают не только защиту, но и лицензирование приложений. Задача лицензирования — ограничить число работающих в сети копий программы. Проще говоря, сколько лицензий приобрел пользователь, столько копий программы он сможет одновременно использовать. Число лицензий определяет поставщик и фиксирует в памяти ключа (сетевой ресурс ключа);
  • Для полноценной защиты и лицензирования сетевого продукта достаточно одного ключа на всю локальную сеть. Ключ устанавливается на любой рабочей станции или сервере сети. Таким образом, используя для защиты своего продукта сетевой, а не локальный, ключ, разработчик существенно экономит;
  • Защищенное сетевое приложение обращается к ключу не напрямую, а через специальный программный сервер. Сервер ключа обеспечивает прохождение запроса от защищенного приложения (клиента) непосредственно к ключу и обратно. Загружается сервер на том же компьютере, к которому подсоединен ключ.

Как работает защита

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

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

Распределение сетевых ресурсов

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

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

Сервер ключа: основные функции

Итак, сервер сетевого ключа (другое название — менеджер лицензий) — это «посредник» между защищенным приложением и ключом в локальных сетях. Один сервер может обслуживать несколько электронных ключей. Кроме того, в пределах сети можно запускать несколько серверов. Они должны находиться на разных компьютерах и обладать уникальными именами (прописываются в конфигурационном файле).

В окне сервера отображается подробная информация о подсоединенных ключах и работающих приложениях. Это сведения о компьютере, на котором запущен сервер и установлен ключ (hostname, IP-адрес, NetBIOS-имя), принадлежность ключа конкретному владельцу (т. н. Общий код ключа), значения некоторых полей памяти ключа (ID, серийный номер).

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

Если используется система управления лицензиями (об этом см. ниже), то в окне сервера также отображается так называемая таблица лицензий и информация по каждому модулю: ресурс лицензий, название, а также информация о клиентах, использующих ресурс модулей.

Сервер ключа может работать не только как обычное оконное приложение, но и как сервис (служба) Windows NT/2000/XP. Преимущества службы состоят в том, что она запускается во время загрузки ОС, для ее запуска не нужно выполнять процедуру регистрации, а также пользователю доступны специальные средства Windows по управлению службами.

Для получения информации о состоянии сервера ключа и распределении сетевых ресурсов служит монитор. Эта программа выдает информацию, идентичною той, которую отображает в своем окне сервер. Сетевой монитор может быть запущен на любой рабочей станции.

Система управления лицензиями

Сервер ключа может управлять лицензиями в многомодульных программных комплексах отдельно по каждому модулю.

При использовании системы управления лицензиями в сервере применяется двухуровневый контроль лицензий:

  • Ограничивается общее количество рабочих станций, на которых одновременно можно запускать защищенные приложения (общий сетевой ресурс). То есть, как в «обычном», не модульном приложении.
  • Ограничивается число рабочих станций, на которых одновременно используется какой-либо модуль (сетевой ресурс модуля)

При этом, значение общего сетевого ресурса лицензий может не совпадать с суммой ресурсов модулей.

Как установить защиту

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

Напомним, что электронные ключи предоставляют 2 метода защиты — внедрение вызовов функций API в исходный код программы (API-защита) и автоматическая защита исполняемого файла.

В том и в другом случае для сетевого ключа используется пара специальных функций типа Login и Logout. Первая из них выполняется при запуске защищенного приложения и служит для регистрации на сервере ключа. Вторая — при завершении работы приложения и служит для снятия регистрации.

При API-защите вызовы функций Login и Logout встраиваются в код «вручную», в случае автозащиты задействуется определенная опция. К сетевому ключу одновременно могут обращаться несколько копий защищенного приложения. Поэтому для корректного разделения ресурсов ключа между приложениями, у копии сетевого приложения во время выполнения операций чтения/записи должен быть монопольный доступ к памяти ключа. Это достигается блокированием ключа (функция LockBeg) перед чтением/записью и разблокированием (функция LockEnd) после чтения/записи.

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

В случае фирмы N, когда используется система управления лицензиями, схема установки сетевых функций защиты имеет некоторые особенности.

  • Вместо Login для регистрации приложения используется аналогичная функция, в которой есть дополнительный параметр — номер модуля. Функция LoginLMS не только регистрирует копию приложения на сервере, но и позволяет ей занять определенный ресурс из таблицы лицензий. Т. е. при API-защите программисты фирмы N в исходный код каждого из 4 модулей встраивают вызов этой функции, указывая в параметрах номер модуля. При автозащите каждый модуль защищается с соответствующей опцией. Остальные функции API используются без изменений
  • При помощи утилиты программирования в памяти ключа создается поле определенного типа — таблица лицензий, в которой прописывается количество модулей, их ресурсы лицензий, название, а также некоторые дополнительные параметры. Все параметры экспортируются в конфигурационный файл и отображаются в окне сервера ключа.
  • В память ключа записывается число лицензий. Для удобства программисты фирмы N разработали специальную утилиту, которая служит для записи в ключ общего ресурса лицензий и ресурса каждого модуля ключа непосредственно перед продажей. Подобную программку легко написать, используя функции API ключа.

Конфигурирование клиента и сервера

Работу с ключом по сети обеспечивают клиентская и серверная части ПО Guardant.

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

Основные параметры настройки — это сетевые протоколы и приоритет их использования, NETBIOS-имя сервера и/или его IP-адрес (host name), таймауты на отправку и прием данных. Также в INI-файле сервера настраивается опция запуска сервера ключа в качестве службы Windows NT/2000/XP.

Инсталляция защищенной программы

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

Во-первых, пользователь определяет компьютер, на котором будет находиться ключ. На этой машине должна быть установлена любая операционка семейства Windows (для USB-ключа — ОС Windows, поддерживающая интерфейс USB), а в локальной сети должны быть установлены и настроены протоколы TCP/IP или любой из интерфейсов NetBIOS. Затем он устанавливает драйверы ключа и подсоединяет ключ к нужному порту компьютера. На этот же компьютер устанавливается сервер ключа и файлы, необходимые для его работы.

На нужные компьютеры инсталлируются копии защищенного приложения. При необходимости настраиваются конфигурационные файлы клиента и сервера.

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

Электронные ключи Guardant

  • Guardant Sign
  • Guardant Code
  • Guardant Sign Net
  • Guardant Sign
  • Guardant Code micro
  • Guardant Time Net
  • Guardant Sign micro
  • Guardant Code
  • Guardant Net II

Карта сайта