Продолжается подписка на наши издания! Вы не забыли подписаться?

Компания "Актив"

Электронный ключ — средство защиты от компьютерных пиратов

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

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

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

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

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

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

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

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

  1. В структуру защищаемого ПО внедряется специальный программный код (внутренняя вакцина автоматической защиты, вызов функции API). Ее цель — обращение к внешним модулям (внешняя вакцина автоматической защиты, функции API), которые непосредственно обмениваются информацией с электронным ключом.
  2. Внешний модуль посылает электронному ключу некую последовательность данных — “вопрос”, чтобы проверить наличие ключа и определить его параметры (идентифицировать).
  3. Электронный ключ обрабатывает полученную информацию и пересылает ее обратно (дает “ответ”).
  4. Программа защиты анализирует такие ответы и блокирует работу защищенного приложения при неверных параметрах или при отсутствии электронного ключа.

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

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

Создание аппаратной копии электронного ключа

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

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

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

Создание эмулятора электронного ключа

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

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

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

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

Разработчики электронных ключей используют следующие методы борьбы с эмуляцией.

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

Отделение модуля автоматической защиты

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

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

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

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

Удаление вызовов функций API

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

Для борьбы с этим методом взлома есть несколько испытанных способов.

Итак, имеется много способов взлома даже такой мощной защиты, как электронные ключи. А есть ли система защиты, способная по-настоящему хорошо противостоять всем этим методам? Несомненно, в природе не существует защиты, самим фактом своего существования сводящей на нет все усилия хакеров. Любая система защиты — это не готовое решение, а инструмент. И воспользоваться этим инструментом можно по-разному. Многое зависит от квалификации и трудолюбия программиста, устанавливающего защиту. Ведь, к примеру, с помощью одного и того же компилятора можно создать надежный, мощный, конкурентоспособный программный продукт, а можно и такой, который, кроме “зависания” операционной системы, не способен сделать ничего. Однако также много зависит и от возможностей самого инструмента, самой системы защиты. Чем этих возможностей больше, чем лучше они реализованы, тем быстрее и проще можно добиться необходимого результата.

Устройство и схема работы микропроцессорного ключа были рассмотрены на примере ключей семейства Guardant российской компании “Актив”.

К.А.Черников,
А.В.Беспалько



Copyright © 1994-2016 ООО "К-Пресс"