Ключи на базе микропроцессора

advertisement
БИС Лекция №7
«Программно-аппаратные средства защиты ПО с электронными ключами»
Этот вид защиты, основан на использовании так называемых "аппаратных (электронных) ключей".
Электронный ключ - это аппаратная часть системы защиты, представляющая собой плату с
микросхемами памяти либо с микропроцессором, помещенную в корпус и предназначенную для
установки в один из стандартных портов ПК (COM, LPT, PCMCIA, USB ... ) или слот расширения
материнской платы. Так же в качестве такого устройства могут использоваться SMART-карты.
Программно-аппаратные средства защиты в настоящий момент являются одними из самых
стойких систем защиты ПО от НСД. Интеллектуальные и физические возможности ключа во
многом определяются той базой, на которой собран ключ. Современные ключи собирают на базе
микросхем энергонезависимой электрически перепрограммируемой памяти (так называемой
EEPROM-памяти), на базе заказных ASIC (Application Specific Integrated Circuit) - чипов с памятью
или без памяти, на базе микропроцессоров. Соответственно по архитектуре ключи можно
подразделить на ключи с памятью (без микропроцессора) и ключи с микропроцессором (и
памятью).
Ключи с памятью являются менее стойкими, в таких системах критическая информация (ключ
дешифрации, таблица переходов) хранится в памяти электронного ключа. Для дезактивации таких
защит в большинстве случаев необходимо наличие у злоумышленника аппаратной части системы
защиты (перехват диалога между программной и аппаратной частями для доступа к критической
информации), либо снятие логической защиты.
Самыми стойкими являются системы с микропроцессором. Такие комплексы содержат в
аппаратной части не только ключ дешифрации, но и блоки шифрации/дешифрации данных, при
работе защиты в электронный ключ передаются блоки зашифрованной информации, и
принимаются оттуда расшифрованные данные. Так как все процедуры выполняются аппаратной
частью, достаточно сложно перехватить ключ дешифрации.
Ключи на базе EEPROM-микросхемы
Это, как правило, самые простые и недорогие ключи, выпускаемые для параллельного порта
Centronics. Для обеспечения каскадирования, как правило, дополнительно используется
мультиплексор. Количество ключей, которые могут работать каскадно, обычно не более трех. Изза типовых схемотехнических решений эти ключи имеют "прозрачность" только для принтеров,
работающих в стандартном протоколе Centronics. Двунаправленный протокол, в котором
работают современные лазерные и струйные принтеры (например HPLJ-6L, HPLJ-1100, Stylus750), как правило, ими не поддерживается.
Размер памяти ключа, доступной на чтение-запись, обычно составляет не более 126 байт. Часть
этой памяти используется для унификации ключа. В ней хранится некоторая служебная
информация, тип ключа, идентификатор пользователя (Customer's code), Серийный номер ключа
(ID-number). Код пользователя доступен только на чтение. Это достигается с помощью
специальной процедуры программирования через дополнительный адаптер. Память в ключе
организуется полями и требует дополнительной процедуры предварительного форматирования.
Причем, запись в память ключа будет невозможна, если заранее не были правильно определены
типы полей, их размеры и адреса.
ALADDIN Knowledge Systems (MemoPlug WINplug),
Rainbow Technologies (Sentinel C-Plus, SentinelScribe)
Ключи на базе ASIC-чипа
На текущий момент это самый привлекательный тип электронных ключей, т.к. все особенности их
функционирования закладываются на стадии проектирования так называемого ASIC-чипа
(заказной интегральной микросхемы специального применения).Как правило такой чип имеет
достаточно сложную внутреннею организацию и нетривиальные алгоритмы работы. Логику
работы такого чипа практически невозможно реализовать с помощью стандартных наборов
микросхем PAL (Programmable Array Logic), GAL. Такой чип практически невозможно
воспроизвести, а содержащийся в его памяти микрокод - считать и расшифровать либо
сэмулировать. По сути ASIC чип представляет собой абстрактный цифровой автомат с памятью.
Перед изготовлением ключа под конкретного заказчика сначала с помощью специальной
аппаратуры программируется ASIC-чип.В чип заносится уникальный код, присвоенный этому
заказчику, и, может быть уникальный серийный номер изготавливаемого ключа. Эта информация
будет доступна в дальнейшем ТОЛЬКО на чтение и ее нельзя будет изменить никакими
средствами. Другим, менее надежным способом, является программирование готового ключа с
"чистой" микросхемой. Такое программирование обычно осуществляется с помощью
специального адаптера или вставляемой в слот компьютера платы-программатора. Некоторые
типы ASIC-чипов имеют блокировку доступа (ключ для программирования).
Одним из главных критериев качества защиты является устойчивость к эмуляции. Эмуляторы
электронного ключа могут быть как программные, так и аппаратные. При этом эмулироваться
может как протокол обмена ключа с портом, так и сам ключ. Ключи, построенных на базе
EEPROM-памяти, используют для защиты от эмуляции так называемые "плавающие" или
изменяемые и "зашумленные" протоколы обмена с портом. Ключи на базе ASIC-чипа имеют
дополнительную защиту от эмуляции, реализованную в виде сложной функции, статистический
анализ которой невозможно провести за приемлемое время.
ASIC-чип обычно реализует некоторую сложную функцию y=f(x), где x - данные, передаваемые
ключу из программы, y - данные, возвращаемые ключом в программу, f(x) - функция
преобразования входных данных в выходные.
Одной из разновидностей реализации функции f(x) является использование ASIC-чипа в качестве
внешнего вычислителя (по отношению к процессору компьютера). К этому методу прибегают для
получения из ключа некоторой значащей информации, влияющей на ход выполнения программы и
для избавления проверок на защиту. Например, несколько функций жизненно важных для
функционирования программы, реализуются аппаратно с помощью ключа и отсутствуют в теле
программы. Из ключа могут также возвращаться смещения по которым выполняемой программой
передается управление или считываются данные.
Ключи на базе микропроцессора
Электронные ключи, выполненные на базе микропроцессора, как правило, предназначены для
работы в открытых системах для защиты UNIX-приложений. Обычно микропроцессорные ключи
подключаются к последовательному порту RS-232/423 рабочей станции и поддерживают
платформы IBM RS6000, SUN, DEC Alpha, Silicon Graphics, HP, IBM-PC и т.п.
Эти ключи выполняются как платформонезависимые. Внутренний микропроцессор ключа
реализует некий сложный алгоритм преобразования данных. При работе защищенное приложение
посылает ключу стандартный запрос. Ключ обрабатывает этот запрос и по заданному алгоритму
выполняет некие преобразования данных.
Микропроцессорные ключи обычно поставляются разработчикам программ "чистыми" с
исходными кодами процедур доступа к ключу, так что разработчики сами могут их
программировать в той среде или на той платформе, для которой пишется их приложение.
Протокол обмена между ключом и компьютером (рабочей станцией) динамически шифруется.
Доступ к ключу защищается специальным паролем, назначаемым самим разработчиком
программного обеспечения.
Для хранения информации о номере версии программы, ключей доступа, шифрования, счетчиков
память EEPROM. Кроме того, многие модели ключей имеют RAM-память для временного
хранения переменных, результатов некоторых вычислений и т.д.
Alladin U-plug
HASP
Ключ HASP (версия R3) выполнено на новом заказном ASIC-чипе содержащем более 2500
вентилей.
На этапе изготовления ASIC-чипа для ключей семейства HASP компанией ALADDIN Knowledge
Systems определяется идентификационный код пользователя, уникальный серийный номер чипа и
уникальная функция f(x) которая не может быть изменена в процессе эксплуатации ключа.
Реализуемая чипом функция является генератором последовательности, где на каждое целое
беззнаковое входное число из диапазона от 0 до 64К возвращается четыре значения. Эти значения
постоянны для одной партии ключей. Использование механизма генерации чисел качественно
усложняет задачу взлома программ, т.к. ключевая информация не хранится ни в теле самой
программы, ни в памяти ключа ни в открытом, ни в зашифрованном виде. В этом случае из
программы может быть исключено самое уязвимое звено любой защиты - условие проверки
элемента защиты.
Ключи HASP - имеют самую большую память - до 4 Кбит. Для организации сложных схем
маркетинга программ, использующих функцию времени, выпускаются ключи TimeHASP. Они
содержат дополнительный чип часов и имееют встроенный автономный источник питания на
литиевой батарейке. Срок службы подобных ключей составляет, как правило, не менее 10 лет. С
одним ключом может быть защищено произвольное количество приложений.
В 1998 г. алгоритм работы ключа HASP был вскрыт. В результате статистического анализа
удалось определить 64 битную константу – ключ, на основе которой вычисляются возвращаемые
ключом значения. Причина – сильно упрощенный алгоритм расчета функции fx(SeedCode,
p1,p2,p3,p4) вызванный желанием максимально удешевить стоимость ключа. Кроме того код
драйверов защиты ключа содержал явные дыры в защите (отсутствие заявленных
антитрассировочных механизмов, реализация кода драйверов на С). В результате был построен
программный эмулятор ключа HASP работающий практически со всеми защищенными
программами. (ALLADIN охота на HASPEMU).
Download