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

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

Блок логики представляет собой устройство, которое генерирует значения некоторой функции: f(x)=y. Значения, подаваемые на вход (x) каким-либо образом, влияют на выход (y), и таким образом происходит "привязка" к ключу. То есть программа через специальный код (API) посылает в ключ некоторое число и проверяет ответное значение. Если оно совпадает, то программа работает дальше, если нет - соответственно или не работает, или переходит в демо-режим. Функции, выполняемые в блоке логики, могут быть взаимообратными (то есть, f(x)=y, f(y)=x), а могут и не быть таковыми.
Обычно встречаются 3 вида блоков логики:
- Основанные на логической матрице (заказной ASIC-чип, Application Specific Integrated Circuit);
- Основанные на собственном микропроцессоре (заказной MCU-чип);
- Основанные на готовом микропроцессоре (PIC-чип).

Второй вид блока логики наиболее дорог в производстве, однако дает очень хорошие результаты с точки зрения защиты. Такие типы ключей наиболее стойки ко взлому с любой точки зрения (программной и аппаратной), так как генерируют некоторую непостоянную функцию, и исследовать ее с математической стороны довольно сложно, а исследовать чип также достаточно дорого и долго, так как используемая логика - неизвестна.
Третий вид блока логики, основанный на готовом микропроцессоре (например, на PIC 16X8X фирмы Microchip Technology Inc.), дает невысокую себестоимость и высокую надежность с программной точки зрения. Однако, применение стандартного микрочипа делает возможным и его стандартное изучение. Известны неоднократные случаи "снятия" битов защиты от чтения с такого микроконтроллера и чтение (с последующим изучением) всей микропрограммы, что дает еще и возможность так называемого аппаратного "клонирования" ключей. То есть покупки чистого PIC-а и зашивки в него той же микропрограммы и получение 100%-го аналога конкретного ключа.

Так же как блок логики и блок памяти "аппаратное сердце" ключа защиты, его 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), Лаптенок Станислав
Компьютерная газета. Статья была опубликована в номере 22 за 2000 год в рубрике разное :: страна советов