22.01.2004

HASP4 - надежная защита от пиратов

Онлайновый журнал Softkey.info, 21 января, 2004 г, Марат Давлетханов

Пожалуй, самым надежным способом защиты программного обеспечения от пиратов на сегодняшний день являются аппаратные ключи. А самыми известными среди них - HASP4 от компании Aladdin Software Security R.D. Сами разработчики определяют HASP4 как мультиплатформенную аппаратно-программную инструментальную систему для защиты программ и данных от нелегального использования и несанкционированного распространения. Сегодня мы с вами, уважаемые читатели, подробно рассмотрим этот комплекс с точки зрения разработчика.

Итак, с предназначением системы HASP4 мы уже разобрались. Она защищает интеллектуальную собственность разработчиков и поставщиков программного обеспечения. Основой системы является аппаратный ключ, который присоединяется к компьютеру. Без этого небольшого устройства защищаемое программное обеспечение либо вообще не будет работать, либо будет иметь заданные разработчиками функциональные ограничения. На сегодняшний день компания выпускает три типа ключей - USB-брелок, LPT-ключ, PCMCIA-карта. В принципе, этот набор позволяет разработчикам программного обеспечения охватить всех потенциальных клиентов вне зависимости от используемых ими компьютеров.

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

У системы HASP4, в отличие от многих других комплексов защиты с помощью аппаратных ключей, есть ряд преимуществ. Вот они:

  • новейший ASIC-чип (для ключей LPT) или микроконтроллер (для ключей USB), выполненный по 1,2-микронной технологии и содержащий 2800 вентилей на кристалле;
  • встроенный криптопроцессор, который позволяет шифровать и дешифровать данные в режиме реального времени, причем ключ шифрования никогда не передается на выход ключа, что исключает возможность его перехвата;
  • возможность использования собственных функций обработки входной информации;
  • до 512 байт EEPROM-памяти, доступной как для чтения, так и для записи (из них 16 байт - управляющая память);
  • неизменяемый уникальный код разработчика, который обеспечивает использование каждого ключа только с продуктами определенной компании;
  • отсутствие элементов питания (за исключением HASP4 Time), что обеспечивает практически бесконечную работу ключа;
  • возможность каскадного подключения LPT-ключей друг на друга;
  • возможность подключения нескольких USB-ключей одновременно к одному компьютеру.

Линейка ключей HASP4

На сегодняшний день в линейке аппаратных ключей HASP4 присутствуют шесть моделей. Давайте кратко рассмотрим каждую из них.
HASP4 Standart - простые ключи. Они не имеют собственного уникального ID-номера и встроенной памяти. HASP4 Standart - самые дешевые ключи в линейке, а поэтому их можно использовать для защиты недорогих программ. Кроме того, эти ключи не требуют предварительного программирования и сразу готовы к поставке в составе защищенного программного обеспечения.

HASP4 M1 - ключи с уникальным ID-номером и защищенной перезаписываемой памятью объемом 112 байт. С помощью одного ключа этого типа можно защитить до 16 различных приложений. Кроме того, устройства HASP4 M1 имеют функцию дистанционного перепрограммирования Remote Update System (подробно на ней мы остановимся позже).
HASP4 M4 - в принципе, эти ключи отличаются от HASP4 M1 только большим объемом памяти EEPROM (496 байт) и большим числом программ, которые можно защитить с помощью одного устройства (до 112 приложений).
HASP4 Time - ключи со встроенными часами реального времени, показывающими текущую дату и время. Это предоставляет разработчикам программ дополнительные возможности по распространению своих продуктов. Так, например, с помощью устройств HASP4 Time можно обеспечить передачу программы на определенный срок (демоверсия), сдачу ее в аренду или лизинг с периодической оплатой за пользование и так далее. Кроме того, эти ключи содержат 496 байт защищенной перезаписываемой памяти, а также поддерживают функции Full Authorization System (управление доступом для нескольких приложений) и Remote Update System.
HASP4 Net - главной особенностью ключей этого типа является возможность защиты приложений в сети (доступные протоколы - IPX/SPX, NetBIOS, NetBEUI и TCP/IP). Достаточно только подключить ключ на любом компьютере (не обязательно на сервере), чтобы он начал свою работу. Устройства HASP4 Net могут ограничивать число пользователей, одновременно работающих с защищенной программой. Кроме того, эти ключи имеют память EEPROM объемом 496 байт и могут одновременно работать со 112 приложениями, а также поддерживают функции Full Authorization System и Remote Update System.
HASP4 PC-Card - модель ключа, предназначенная для портативных компьютеров, которую можно подключать к слоту PCMCIA. Вообще-то, возможности устройства этого типа практически идентичны возможностям ключей HASP4 M4.

HASP для разработчика

Для начала работы с системой компания, занимающаяся созданием программного обеспечения, должна приобрести HASP Developer's Kit, то есть специальный набор разработчика. Он состоит из полной технической документации, утилит, необходимых для работы и демонстрационного ключа. Все это позволяет защитить как создаваемую, так и уже готовую программу.

Кстати, система HASP4 позволяет защищать ПО двумя способами. Первый из них - это HASP Envelope. Он применяется для уже готовых программ. Причем для его использования не обязательно даже иметь исходные коды продукта и разбираться в программировании. Эта схема защиты не представляет абсолютно никаких сложностей. Достаточно запустить специальную утилиту HASP Envelope, входящую в комплект разработчика, выбрать нужные исполняемые файлы (exe, dll, ocx), настроить параметры защиты (ограничение количества лицензий, времени использования или количества запусков, привязка к конкретному ключу, фоновые проверки наличия ключа во время работы программы и тому подобное), после чего нажать на кнопку Protect. Собственно, это все. Далее утилита обработает указанные файлы, закодирует их и встроит специальные антиотладочные и антитрассировочные средства. Естественно, что после этого запустить программу просто так уже нельзя - ее код зашифрован. Если же во время запуска приложения к компьютеру подключен нужный ключ, расшифровка файлов происходит автоматически.


Второй механизм защиты - HASP API. Суть его заключается в том, что разработчики в любом месте своего приложения могут обращаться к ключу с помощью специальных функций API. Результаты этих обращений маскируются в теле программы или библиотеке DLL. Таким образом можно реализовать полный цикл работы с ключом - например, проверить его наличие, прочитать или изменить содержимое памяти EEPROM, получить его ID-номер, просмотреть значение таймера (если он есть в ключе) и так далее. Конечно, использование этого механизма защиты требует внесения изменений в исходный код программы. А значит, удобнее всего его использовать в момент создания продукта, заранее определившись со способом защиты от пиратов. Кроме того, надежность защиты в этом случае во многом зависит от качества работы разработчиков приложения.

Кстати, специалисты компании Aladdin советуют комбинировать оба способа защиты программы с помощью системы HASP4. Осуществляется это следующим образом. Сначала в код разрабатываемого приложения встраиваются вызовы функций API, работающих с ключом. Ну, а после завершения работы над продуктом скомпилированные исполняемые файлы обрабатываются утилитой HASP Envelope. Таким образом, у нас получается двухуровневая защита, сломать которую очень и очень непросто.

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

Утилиты системы HASP4

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

Aladdin DiagnostiX. Эта утилита фактически реализует механизм обратной связи. Ее главная задача - диагностика работоспособности всех ключей (в том числе и сетевых), работающих в системе. Кроме того, она позволяет устанавливать новые драйверы, а также настраивать конфигурацию для HASP4 Net. В дополнение к этому, DiagnostiX может генерировать отчеты, включающие всю информацию, связанную с устройствами Aladdin.

HASP Edit. Эта утилита предназначена для перепрограммирования ключей. Предназначена она только для разработчиков. HASP Edit позволяет узнать ID-номера ключа, изменить содержимое его памяти EEPROM, установить различные параметры защиты, настроить часы реального времени (только для HASP4 Time). Кроме того, эта утилита может шифровать блоки данных для включения их в исходный код при защите приложения. Все эти функции особенно важны, когда используется механизм защиты HASP API, или программа подготавливается для распространения нестандартным способом (аренда, лизинг, демоверсия).

Remote Update System (RUS) - система дистанционного перепрограммирования. Она предназначена для удаленного изменения памяти аппаратных ключей. Система позволяет добавлять или удалять лицензии, а также изменять содержимое EEPROM. Все это нужно, когда разработчикам требуется перепрограммирование ключей, уже переданных клиентам. Принцип работы RUS таков. Разработчик запускает специальную программу, которая генерирует зашифрованный блок информации, привязанный к ID-номеру ключа клиента. Эти данные любым доступным способом отправляются пользователю, который запускает свою утилиту RUS, автоматически расшифровывающую информацию и обновляющую память ключа.

Full Authorization System (FAS) - система полного управления доступом. Она предназначена для автоматического лицензирования нескольких программ с помощью одного ключа. Обычно FAS работает совместно со схемой защиты HASP Envelope. Она позволяет настроить параметры и условия, при которых будет исполняться каждое приложение. В частности, можно ограничить число запусков программы, количество лицензий (для сетевых версий) и время окончания лицензии (для демоверсий). Также нужно отметить, что FAS является обязательной частью сетевой защиты с использованием ключа HASP4 Net.

Вывод

Рассмотрев подробно систему защиты программ от пиратов HASP4, можно с уверенностью сказать, что на сегодняшний день она является одной из самых надежных на российском рынке. Кроме того, ее использование не доставит разработчикам ПО никаких сложностей, даже в том случае если программный код по каким-либо причинам недоступен. В принципе, и цену комплекта HASP Developer's Kit (от 25 до 55 долларов в зависимости от модели ключа) нельзя назвать высокой. Правда, несколько огорчает стоимость ключей для пользователей. Согласитесь, что вряд ли кто-то согласится заплатить 15 долларов за ключ в дополнение к программе ценой в 20 долларов. Но зато для разработчиков серьезного (например, для бизнеса) программного обеспечения использование системы HASP4 является, пожалуй, наилучшим решением в области защиты своих разработок от пиратов.