Не секрет,
что
пиратство -
бич
компьютерной
индустрии,
как, впрочем,
и любой
другой. Даже в
самой
благополучной,
с этой точки
зрения,
стране -
Англии - около
60%
установленных
на
компьютерах
программ -
нелицензионные.
Поэтому
большинство
производителей
стараются
так или иначе
защитить
свои
программы от
нелицензионного
копирования.
Некоторые (например,
Microsoft)
используют
систему
серийных
номеров,
другие (обычно
производители
игр) - делают
привязку
программ к CD-дискам,
а некоторые (обычно
производители
финансовых,
расчетных,
инженерных и
т.п. программ)
используют
системы
защиты,
основанные
на
электронных
ключах.
Электронный
ключ - это то "железо",
которое нам
приходится
использовать
без нашего
желания.
Кроме того,
производители
очень
неохотно
открывают
его
параметры, а
его описание
достаточно
специфично, и
электронный
ключ до сих
пор остается
наиболее
неизвестной
частью
компьютера
для
пользователя.
Поэтому
постараемся
описать
электронные
ключи
наиболее
понятным для
обычного
пользователя
языком, не "сваливаясь"
в
профессиональную
терминологию.
Электронный
ключ обычно
представляет
собой
небольшое
устройство (размером
со спичечный
коробок),
которое
присоединяется
к компьютеру
через один из
возможных
интерфейсов (обычно
это COM, LPT или USB-порты,
хотя бывают
варианты и в
ISA-card исполнении).
Наиболее
распространенный
вариант
исполнения -
это LPT-ключ.
Такой ключ "прозрачен"
для принтера
и других LPT-устройств,
однако это не
всегда есть
правда.
Внутри такой
ключ состоит
из
вспомогательных
элементов (которые,
скажем,
преобразуют
каким-либо
образом
электрические
сигналы или
выравнивают
напряжение и
т.п.) и двух
основных
элементов:
блок логики и
блок памяти.
Блок логики
представляет
собой
устройство,
которое
генерирует
значения
некоторой
функции: f(x)=y.
Значения,
подаваемые
на вход (x)
каким-либо
образом,
влияют на
выход (y), и
таким
образом
происходит "привязка"
к ключу. То
есть
программа
через
специальный
код (API)
посылает в
ключ
некоторое
число и
проверяет
ответное
значение.
Если оно
совпадает, то
программа
работает
дальше, если
нет -
соответственно
или не
работает, или
переходит в
демо-режим.
Функции,
выполняемые
в блоке
логики, могут
быть
взаимообратными
(то есть, f(x)=y, f(y)=x), а
могут и не
быть
таковыми.
Обычно
встречаются 3
вида блоков
логики:
- Основанные
на
логической
матрице (заказной
ASIC-чип, Application Specific Integrated Circuit);
- Основанные
на
собственном
микропроцессоре
(заказной MCU-чип);
- Основанные
на готовом
микропроцессоре
(PIC-чип).
Первый вид
блока логики
отличается
тем, что очень
прост и дешев
в
изготовлении.
Однако, вид
функции,
генерируемой
этим видом
логики (имеется
в виду "чистая"
функция,
возвращаемая
ключом. То,
что
возвращается
программе из
API ключа,
далеко не то
же самое, что
вернул сам
ключ), очень
прост и
понятен.
Потенциально
такие ключи
очень опасны
тем, что
профессиональный
хакер (конкретно
- кракер, от
англ. "cracker" -
человек,
занимающийся
взломом
программного
обеспечения),
"раскусив"
ключ, может с
легкостью
обмануть
любую часть
программы и,
таким
образом, "отвязать"
ее от ключа (попросту
говоря - "сломать").
Однако, с
аппаратной
точки зрения
такой ключ
очень стоек,
так как
использует
свой
собственный
заказной чип
и его
исследование
возможно
только с
помощью
специальных
средств (электронный
микроскоп и т.д.).
Второй вид
блока логики
наиболее
дорог в
производстве,
однако дает
очень
хорошие
результаты с
точки зрения
защиты. Такие
типы ключей
наиболее
стойки ко
взлому с
любой точки
зрения (программной
и аппаратной),
так как
генерируют
некоторую
непостоянную
функцию, и
исследовать
ее с
математической
стороны
довольно
сложно, а
исследовать
чип также
достаточно
дорого и
долго, так как
используемая
логика -
неизвестна.
Третий вид
блока логики,
основанный
на готовом
микропроцессоре
(например, на PIC
16X8X фирмы Microchip Technology Inc.),
дает
невысокую
себестоимость
и высокую
надежность с
программной
точки зрения.
Однако,
применение
стандартного
микрочипа
делает
возможным и
его
стандартное
изучение.
Известны
неоднократные
случаи "снятия"
битов защиты
от чтения с
такого
микроконтроллера
и чтение (с
последующим
изучением)
всей
микропрограммы,
что дает еще и
возможность
так
называемого
аппаратного
"клонирования"
ключей. То
есть покупки
чистого PIC-а и
зашивки в
него той же
микропрограммы
и получение 100%-го
аналога
конкретного
ключа.
Память,
встречающаяся
в ключах,
обычно
составляет
размер от 0 до 4096
байтов. В ней
может
храниться
информация,
необходимая
программе
для запуска,
описывающая
количество
лицензий на
запуск,
наименование
фирмы
покупателя,
номер версии
программы и т.д.
Так же как
блок логики и
блок памяти "аппаратное
сердце"
ключа защиты,
его API - это его "программное
сердце". От
его качества
зависит
очень многое:
стабильность
работы в
различных
операционных
системах,
четкость и
стабильность
работы в
локальной
сети,
стойкость к
программному
взлому,
удобство в
использовании
для
программиста,
возможность
использования
широкого
спектра
языков
программирования
и т.д.
Обычно,
применительно
к
современным
ключам,
работающим в
системах
типа WinXX, API
разделяется
на 2 уровня: API,
включаемое в
защищенную
программу, и
драйвер
ключа -
системный
драйвер,
обеспечивающий
взаимодействие
между
программой и
ключом. Такое
"разделение
труда"
обуславливается
несколькими
причинами:
невозможность
выполнения
операций
ввода/вывода
на уровне
прикладных
задач (в
защищенном
режиме, для
выполнения
операций
ввода/вывода
требуется
уровень
привилегий
"0" [Ring0], в то
время как все
прикладные
задачи
выполняются
на уровне 3 [Ring3]),
затруднение
понимания
работы ключа,
возможность
ввода
дополнительной
шифровки (и,
таким
образом,
повышение
стойкости к
взлому) и т.д.
Кроме того, на
уровне API
происходит
трансформация
данных,
полученных
из ключа и
передаваемых
в программу, и
наоборот.
Производители
ключей любят
преувеличивать
не меньше
любых других
производителей
компьютерного
железа (и не
только
железа:), и все
их
криптоалгоритмы
на 90% вынесены
в
программную
часть, а
аппаратная
выполняет
оставшиеся 10%
работы. Оно и
понятно - в
случае
усложнения
такого
устройства
оно
возрастет в
цене и
автоматически
упадет спрос,
а стойкость к
взлому они
попробуют
увеличить
другими
методами.
Кроме того,
некоторые
функции API
выполняет
целиком и
полностью,
даже не
обращаясь к
ключу! (Например,
ключ Novex
содержит
только
память, а вся
логика
выполняется
на
программном
уровне).
Стоит
отметить, что
внутренности
API - это святая
святых и, так
же как и
принципиальная
схема ключа,
является
одним из
наибольших
секретов
производителей.
Основными
производителями
электронных
ключей
защиты
являются: Aladdin Knowledge
Systems - [Hasp, Hardlock]
производит
наиболее
распространенные
в странах СНГ
ключи защиты.
Остановимся
на них чуть
подробнее:
HASP (Hardware Against Software Piracy) -
наиболее
распространенный
ключ защиты
от этой
компании. В
зависимости
от
модификации
может быть
сетевым (NetHASP),
локальным с
памятью (MemoHASP),
локальным
без памяти (HASP-3)
или со
встроенными
часами (TimeHASP).
Виды
исполнения: LPT,
COM, ISA, USB, ADB (Mac), PCMCIA. Объем
памяти - до 496
байт. Логика
базируется
на заказном ASIC-чипе
(логическая
матрица).
Наиболее
нерекомендуемый
к
использованию
ключ. Имеет
массу
недостатков.
Кроме того,
отличается
простотой
внутренней
логики и для
него
возможно
создание
эмулирующей
программной
функции, даже
не имея ключа
на руках (так
как вскрыт не
только
алгоритм
работы ключа,
но и
взаимосвязь
между
функцией и
системой
открывающих
паролей!).
Типичные
представители
программного
обеспечения,
защищенные
этим типом
ключей, - все
виды
программ от
фирмы "1С", "БЭСТ-4",
R-Style Software Labs.
Hardlock - один из
самых лучших
ключей,
доступных у
нас. В 1996 году Aladdin
купила
небольшую
немецкую
компанию Fast Software Security
и теперь
продает этот
ключ от
своего имени.
Выпускается
в различных
модификациях,
в том числе в
виде Hardlock Twin ("непрозрачный"
ключ - с одной
стороны
разъем LPT-порта,
с другой - COM-порта).
Память - до 128
байт. Логика
базируется
на
собственном
микропроцессоре
(MCU).
Типичные
представители
программного
обеспечения,
защищенные
этим типом
ключей, -
продукты
фирмы "ПроИнвестКонсалтинг"
(Project Expert 6.xx), "МОТОР-ТЕСТЕР",
ER-Mapper 5.x...
Оба ключа
выгодно
отличает от
других
конкурентов
отличная
документация,
разветвленная
сеть дилеров
по всей
России и
странам СНГ,
наличие
библиотек
практически
под все
известные
компиляторы
для платформ
Dos/WinXX.
Rainbow Technologies, Inc. - [Sentinel] самая
известная
компания во
всем мире,
кроме
Беларуси;).
Контролирует
порядка 55%
рынка
электронных
ключей.
Выпускает
ключи под
торговой
маркой Sentinel:
Вполне
обычные
ключи, по
своим
параметрам
схожие с
ключами HASP.
Выпускаются
в
исполнениях:
LPT, RS232, USB. Имеют до 112
байт
энергонезависимой
памяти, до 14
шифровальных
алгоритмов.
Базируются
на
логическом ASIC-чипе.
Есть сетевые
варианты,
варианты для
Mac-ов, для Unix-систем.
Достаточно
развитое и
продуманное
программное
обеспечение
позволяет
рекомендовать
этот ключ для
защит
начального и
среднего
уровня.
Типичные
представители
программного
обеспечения,
защищенные
этим типом
ключей, - "БЭСТ-4",
"БЭСТ-ПРО",
практически
все западные
продукты,
систем CAD/CAM...
НПО "Актив" -
[Guardant]
Ранее более
известные
как ключи "Novex",
ключи "Guardant"
являются
первой
отечественной
разработкой
в этой
области:
Достаточно
интересные
ключи,
представленные
тремя видами:
Guardant Aptus (Novex), Guardant Stealth (Novex Stealth), Guardant Net (Novex
Stealth Net).
Базируются
на
стандартном
PIC 16XXX от Microchip, имеют
до 256 байт
памяти и
несколько
перепрограммируемых
алгоритмов
шифрования.
Выпускаются
только в
варианте LPT. Из
недостатков
стоит
отметить
достаточно
слабое ПО и
документацию,
хотя ключ Novex Stealth
по своим
параметрам
может легко
конкурировать
с Hardlock.
Типичные
представители
программного
обеспечения,
защищенные
этим типом
ключей, -
программы "Галактика",
"Касатка", "БЭСТ-2+",...
Перспективы
развития у
этой отрасли
достаточно
широки.
Рождается
множество
компаний (в
том числе и на
пространстве
бывшего СССР)
с
альтернативными
разработками,
предлагающими
очень
широкий
спектр
сервисов.
Улучшаются
используемые
алгоритмы,
выпускаются
ключи со
встроенными
шифровальными
системами по
известным,
очень
стойким к
криптоанализу
и взлому
алгоритмам: DES,
RSA... Формат
ключей
меняется - все
больше и
больше
приобретают
популярность
миниатюрные,
удобные в
использовании
ключи USB.
Меняется и
сфера
применения
ключей: они
начинают
использоваться
как средство
авторизации
при работе с
компьютером,
для защиты в
электронной
коммерции,
для хранения
персональных
данных и т.п. С
другой
стороны, при
постоянно
возрастающем
количестве
ключей и
защищенных
ими программ
становится
все сложнее
использовать
их совместно,
и
производителям
нужно явно
находить
выход из
этого
положения.
Хотя вполне
возможна
ситуация,
когда мы в
будущем
увидим в
офисах USB-концентраторы,
сплошь
утыканные
гирляндами
разноцветных
USB-ключей.
И наконец,
несколько
советов
пользователям
электронных
ключей. Хотя,
казалось бы,
все просто,
однако
почему-то все
больше и
больше
ключей
становятся
непригодными
только лишь
из-за простой
халатности.
Для
разработчиков
программного
обеспечения
только один
совет:
постарайтесь
поменьше
верить
рекламным
проспектам, а
побольше
доверять
собственному
опыту (благо,
что
практически
все компании
продают один
комплект
ключей, ПО и
всего
необходимого
для
тестирования
за
символическую
плату в 20-50 USD) и
советам
независимых
профессионалов
в этой
области.
Что можно
посоветовать
пользователю?
Постарайтесь:
- Не
каскадировать
ключи на
одном
компьютере (хотя
все
производители
в один голос
утверждают,
что это очень
даже можно
делать) - это
не только не
эстетично, но
еще и опасно
как для порта,
так и для
ключей.
- В случае
конфликтов
разнести
режимы
сетевой
авторизации
по разным
протоколам (TCP/IP,
NetBios, IPX).
- По
возможности
не ставьте
сетевой ключ
на сервер -
запросы к
ключу
занимают
много
времени, а
стабильность
работы API и
сетевых
менеджеров в
связи с
различными
антиотладочными
и
антихакерскими
приемами
оставляет
желать
лучшего.
Однако
помните: в
случае
отключения
от локальной
сети машины,
являющейся "сервером
ключа", все
остальные
компьютеры
не смогут
работать с
защищенной
программой (этим
особенно
страдают
продукты
серии "1С" из-за
излишних "наворотов"
в системе
защиты).
- По
возможности
разнесите
ключ и
навороченные
LPT-устройства,
типа
последних
принтеров от
HP, OKI, Lexmark, сканеров
и т.п. - ну не
любят они
друг друга и
мешают один
другому.
- В случае
возможности
выбора (например,
БЭСТ-4
поставляется
либо с ключом
HASP, либо с
ключом Sentinel) -
выбирайте
наиболее
распространенный
ключ, его
будет легче и
проще
заменить и
получить
соответствующую
поддержку.
- Не
подключать и
отключать
ключ при
работающем
компьютере,
не
перетыкать
его слишком
часто (хотя,
опять же,
производители
обещают до 100,000
циклов
записи/чтения
и до 10 лет
работы), по
возможности
не
подключать к
Notebook-ам (сие
опять же
опасно для Notebook-a,
у которого
система
питания
порта
достаточно
хрупкая).
- Если что-то
не
получается (особенно
с настройкой
работы в
локальной
сети), сначала
попробуйте
почитать
документацию
на сам ключ от
его
производителя,
так как
инструкции,
идущие
вместе с
программой,
защищенной
таким ключом,
оставляют
желать
лучшего.
- Помните, что
ключ -
электронное
устройство, и
так же как и
другие
устройства,
не любит пыли,
статического
электричества,
воды и т.п., а
поэтому
хранить и
использовать
его нужно с
соответствующими
мерами
предосторожности.
По
материалам
www.3dnews.ru, Kab (kab@ru.ru),
Лаптенок
Станислав,
last_mailbox@mail.ru