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

Олег Татарников

Где находится дверь

Что такое электронный ключ

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

Защита программного обеспечения и данных

Против лома нет приема!

Где находится дверь

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

  • защита с помощью различных аппаратных ключей (миниатюрных устройств, вставляемых в последовательные, параллельные, USB-порты, PCMCIA-слоты, специальные считывающие устройства и т.д.);
  • защита с помощью различных программных ключей и шифрования данных.

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

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

Работать с электронными «заглушками» можно как в локальном, так и в сетевом варианте. При использовании сетевого ключа нет необходимости устанавливать локальные ключи на каждое рабочее место. Лицензирование в данном случае осуществляется одним ключом с программного сервера, обрабатывающего запросы защищенных приложений. Например, если на сервер устанавливается ключ и обслуживающий его драйвер (небольшую программу, обслуживающую ключ, удобно регистрировать в Windows NT/2000/XP как сервис, запускаемый при загрузке, а в Windows 95/98/Me как резидентную программу), то любая удаленная программа может запросить с сервера лицензию и только в случае ее получения продолжить работу. Число лицензий для каждого ключа может быть специально задано, и в зависимости от того, на какое количество одновременно запущенных копий рассчитана приобретенная вами программа, она или запустится, или нет. При этом распределение лицензий, как правило, осуществляется по простому принципу: «один компьютер — одна лицензия». Это означает, что если на конкретном компьютере запущено несколько копий приложения, то на это будет отведена всего одна лицензия. Таким образом, здесь налагается ограничение на количество рабочих мест, с которых возможно одновременное использование программы.

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

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

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

В начало В начало

Что такое электронный ключ

Електронный ключ — это устройство, предназначенное для защиты программ и данных от несанкционированного использования, копирования и тиражирования. Он представляет собой, как правило, небольшое микроэлектронное устройство, которое имеет два разъема: один из них предназначен для подключения к параллельному или последовательному порту компьютера, а другой служит для подключения принтера, модема или других устройств, работающих с этим портом. При этом ключ не должен влиять на работу порта и должен быть полностью «прозрачным» для подключаемых через него устройств (то есть не должен мешать их нормальной работе). Существуют, впрочем, и другие виды ключей для разных портов и в различном исполнении (внутренние, внешние, в виде брелока, в виде PCMCIA или смарт-карты и т.д.). Ключи могут работать каскадно, когда к одному порту одновременно подключается несколько ключей, в том числе и разных типов. Протокол обмена данными ключа с портом, как правило, динамически изменяется, кодируется и «зашумляется» для защиты от эмуляции.

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

Исходя из аппаратной базы современные ключи можно подразделить на следующие типы:

  • с использованием микросхем энергонезависимой электрически перепрограммируемой памяти (EEPROM);
  • построенные на заказных конфигурациях ASIC (Application Specific Integrated Circuit);
  • с использованием чипов с памятью или без;
  • построенные на базе полнофункциональных микропроцессоров (микроконтроллеров).

По своему внешнему исполнению наиболее популярны ключи, выпускаемые в виде брелоков, для подключения к USB-портам.

Дополнительную информацию по устройству и эксплуатации ключей защиты можно найти на русском Web-сайте (http://www.aladdin.ru/) компании Aladdin Knowledge Systems (http://www.aks.com/) — разработчика системы защиты HASP.

В начало В начало

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

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

  • избегать, по возможности, установку ключа защиты на компьютер, к которому подключены какие-либо устройства, использующие тот же интерфейс (будь то принтер, сканер, привод ZIP или другие, особенно нестандартные, устройства);
  • если это все же необходимо (например, в случае установки программы, работающей с принтером и защищенной ключом в параллельный порт), то постарайтесь установить плату с дополнительным параллельным портом и подключить ключ к ней;
  • если же и предыдущий способ по каким-либо причинам для вас неприемлем, то подключайте ключ, как описано в его руководстве, но проверьте реакцию системы. Возможно, все опасения окажутся напрасными и все будет работать нормально. Если же либо ключ, либо устройство, которое подключено через него, не заработает, то обратитесь к поставщику программного обеспечения или в службу технической поддержки данного средства защиты, чтобы получить помощь специалистов. Прежде всего это касается ключей с параллельным интерфейсом, когда в процессе печати приложение, например, не может обнаружить ключ. Дело в том, что параллельный порт относится к числу таких устройств, ресурсы которых в каждый конкретный момент может использовать только одно периферийное устройство. То есть в процессе печати порт оказывается монополизирован драйвером принтера и любое другое устройство, подключенное к тому же порту, становится недоступным. При возникновении подобной ситуации нужно дождаться окончания печати и повторить проверку;
  • никогда не подсоединяйте включенное периферийное устройство, в том числе и принтер, к включенному компьютеру через электронный ключ (впрочем, этого нельзя делать и в отсутствие ключа). В противном случае может выйти из строя не только электронный ключ, но и сам порт компьютера или периферийного устройства (конечно, это касается только устройств, имеющих отдельное питание). Сами же ключи, как правило, поддерживают горячую замену и могут подсоединяться к компьютеру в процессе его работы;
  • если у вас есть несколько ключей, то старайтесь не подключать их одновременно. В принципе, электронные ключи обладают очень низким энергопотреблением и их можно подключать друг к другу каскадно, то есть последовательно один к другому (по некоторым рекомендациям — до 10 штук), и при этом все они должны быть доступны для использования. Однако некоторые ключи имеют свои особенности, причем не всегда оговариваемые производителем;
  • оберегайте электронные ключи от механических воздействий (падения, сотрясения, вибрации и т.п.), от воздействия высоких и низких температур, агрессивных сред, высокого напряжения, влаги и пр. Все это может привести к их сбоям и даже к поломке;
  • аккуратнее устанавливайте драйверы электронного ключа. Если ключ подсоединен до установки своего драйвера, то нужно отказаться от установки драйвера, предлагаемого операционной системой. Драйвер ключа необходим для корректного разделения ресурса порта между устройствами, которые к нему подключены. Операционные системы семейства Windows NT/2000/XP запрещают прямой доступ к любым физическим устройствам, и единственной возможностью обеспечения доступа к ключу при их использовании является установка специализированного драйвера. В операционные системы семейства Windows 95/98/Me установка драйверов не обязательна, но настоятельно рекомендуется. Использование специализированного драйвера существенно повышает устойчивость и надежность работы защищенных приложений.
В начало В начало

Защита программного обеспечения и данных

Каким образом можно защитить приложение при помощи электронного ключа?

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

Более сложные методы базируются на использовании специализированного API, которые поставляют производители электронных ключей разработчикам защищаемых ПО. Функции этого API предназначены для выполнения различных операций по взаимодействию программы с ключом: поиск нужного кода, чтение/запись памяти ключа, запуск аппаратных алгоритмов ключа и преобразование кода и данных приложения с их помощью.

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

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

В начало В начало

Против лома нет приема!

Итак, методика защиты при помощи электронных ключей хорошо отработана, надежна и гибка… Так почему же на пиратском рынке такое количество ПО, которое ранее было защищено подобными ключами? Естественно, это не говорит о том, что защищаться вообще не нужно, но и уповать на силу ключа тоже не стоит.

Против разработчиков средств и систем защиты действует огромная армия хакеров и взломщиков, которые порой не только предлагают свои услуги в соответствующих форумах и конференциях по обмену опытом, но и продают вполне коммерческие продукты, позволяющие легко «разбираться» даже с аппаратными ключами защиты (например, на http://glasha.zap.to/ всем предлагаются эмуляторы ключей HASP).

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

КомпьютерПресс 3'2002