Классификация систем защиты программных средств

Существующие системы защиты ПС (СЗ ПС) можно клас­си­фи­ци­ро­вать по ряду признаков: методы установки, используемые механизмы защиты и принципы функционирования.

Методы установки

Системы, устанавливаемые на скомпилированные модули ПC, удобны для производителя ПC, так как позволяют легко защитить пол­ностью готовое и оттестированное ПС. Стойкость этих систем доста­точ­но низка, так как для обхода защиты достаточно определить точку завер­шения работы «конверта» защиты и передачи управления защищен­ной программе, а затем принудительно ее сохранить в незащищенном виде.

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

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

Методы защиты

Рассмотрим основные методы:

· алгоритмы запутывания: используются хаотичные переходы в разные части кода, внедрение ложных процедур-«пустышек», холостые циклы, искажение количества реальных параметров процедур ПС, разброс участков кода по разным областям ОЗУ;

· алгоритмы мутации: cоздаются таблицы соответствия операн­дов-синонимов и замена их друг на друга при каждом запуске программы по определенной схеме или случайным образом, случайные изменения структуры программы;

· алгоритмы компрессии данных: программа упаковывается, а затем распаковывается по мере выполнения;

· алгоритмы шифрования данных: программа шифруется, а затем расшифровывается по мере выполнения;

· вычисление сложных математических выражений в процессе отра­ботки механизма защиты: элементы логики защиты зависят от ре­зуль­тата вычисления значения какой-либо формулы или группы формул;

· методы затруднения дизассемблирования: используются раз­лич­ные приемы, направленные на предотвращение дизассемблирования в пакет­ном режиме;

· методы затруднения отладки: используются различные приемы, направленные на усложнение отладки программы;

· эмуляция процессоров и операционных систем: создаются вир­туаль­ный процессор и/или операционная система (не обязательно реально существующие) и программа-переводчик из системы команд IBM в систему команд созданного процессора или ОС; после такого перевода ПС может выполняться только при помощи эмулятора, что резко затрудняет исследование алгоритма ПС;

· нестандартные методы работы с аппаратным обеспечением: мо­ду­ли системы защиты обращаются к аппаратуре ЭВМ, минуя процедуры операционной системы, и используют мало известные или недокументи­ро­ван­ные ее возможности;

· шифрование защищаемого ПС:для дезактивации защиты необходи­мо определение ключа дешифрации ПС;

· комбинированные методы.

Принципы функционирования

Упаковщики/шифраторызащищают ПС от анализа его алгоритмов и несанкционированной модификации. Для достижения этого исполь­зу­ются: алгоритмы компрессии данных; приемы, связанные с исполь­зованием недокументированных особенностей операционных систем (ОС) и процес­со­ров; шифрование данных, алгоритмы мутации, запутывание логики прог­раммы и др. Этот вид защиты замедляет выполнение ПС, затрудняет обновление и исправление ошибок в ПС.

Защита от несанкционированного копирования обеспечивает «привязку» ПС к дистрибутивному носителю (гибкий диск, CD...). Данный тип защиты основан на глубоком изучении работы контроллеров-на­ко­пителей, их физических показателей, нестандартных режимах разбив­ки, чтения/записи и т.п. При этом на физическом уровне создается дистри­бу­тивный носитель, обладающий (предположительно) неповторимыми свойст­вами (обычно это достигается при помощи нестандартной разметки носителя информации или/и записи на него дополнительной информации – па­роля или метки), а на программном – создается модуль, настроенный на идентификацию и аутентификацию носителя по его уникальным свой­ст­вам. При этом возможно применение приемов, используемых упаков­щиками/шифраторами.

Защита от несанкционированного доступа (НСД) обеспечивает пред­ва­ри­тельную или периодическую аутентификацию пользователя ПС путем запроса дополнительной информации. К этому типу СЗ можно отнести системы парольной защиты ПС, системы «привязки» ПС к компьютеру пользователя, системы с «ключевыми дисками» и аппаратно-программные системы с электронными ключами. В первом случае «ключевую» информацию вводит пользователь, во втором – она содер­жится в уникаль­ных параметрах компьютерной системы пользователя, в третьем – хранится на диске, а в четвертом случае «ключевая» информация считы­ва­ет­ся с микросхем электронного ключа.

Парольная защитаявляется самой распространенной СЗ ПС. Основной принцип работы данных систем заключается в идентификации и аутентификации пользователя ПС путем запроса дополнительных данных в различных ситуациях (например, при старте программы, по истечении срока бесплатного использования ПС, при вызове процедуры регистрации либо в процессе установки на ПК пользователя). Существуют также системы, шифрующие защищаемое ПС и использующие пароль или производную от него величину как ключ дешифрации. Недостатком парольных защит является блок проверки правильности введенного пароля. Для этого можно сравнивать введенный пароль с записанным в коде ПС правильным либо с правильно сгенерированным из введенных дополнительных данных паролем. Возможно и сравнение производных величин от введенного и правильного паролей, например их ХЭШ-функций; в таком случае в коде можно сохранять только производ­ную величину, что повышает стойкость защиты. Путем анализа процедур проверки можно найти реальный пароль, записанный в коде ПС, правильно сгенерированный пароль из введенных данных либо создать программу для перебора паролей для определения пароля с нужной ХЭШ-суммой. Для всех парольных систем существует угроза перехвата пароля при его вводе авторизованным пользователем. Кроме того, в большинстве СЗ ПС данного типа процедура проверки используется лишь единожды, обычно при регистрации или установке ПС; затем система защиты просто отключается, что создает реальную угрозу для НСД при незаконном копировании ПС.

Системы «привязки» ПС к компьютерупользователя осущест­вля­ют поиск уникальных признаков компьютерной системы либо сами уста­нав­ли­ва­ют систему защиты. После этого модуль защиты ПС наст­раивается на поиск и идентификацию признаков, по которым в дальнейшем определяется авторизованное или неавторизованное исполь­зование ПС (оценки скоростных и иных показателей процессора, ма­теринской платы, дополнительных устройств, ОС, чтение/запись в мик­ро­схемы энергонезависимой памяти, запись скрытых файлов, настройка на наиболее часто встречаемую карту использования ОЗУ и т.п.).

Программно-аппаратные СЗ ПС с электронными ключами, осно­ван­­ные на использовании так называемых «аппаратных (электронных) ключей». Электронный ключ – это аппаратная часть системы защиты, представляющая собой плату с микросхемами памяти, а в некоторых случаях с микропроцессором, помещенную в корпус и пред­наз­на­ченную для установки в один из стандартных портов ПК или слот расширения материнской платы. В качестве такого устройства могут использоваться СМАРТ-карты. Электронные ключи по архитектуре можно подразделить на ключи с памятью (без микропроцессора) и ключи с микропроцессором (и памятью). Наименее стойкими (в зависимости от типа программной части) являются системы с аппаратной частью первого типа. В таких системах критическая информация (ключ дешифрации, таблица переходов) хранится в памяти электронного ключа. Для дезактивации таких защит в большинстве случаев необходимо наличие у злоумышленника аппаратной части системы защиты (основная методика: перехват диалога между программной и аппаратной частями для доступа к критической ин­фор­ма­ции). Самыми стойкими являются системы с аппаратной частью вто­рого типа. Такие комплексы содержат в аппаратной части не только ключ де­шиф­рации, но и блоки шифрации/дешифрации данных. Таким об­ра­зом, при срабатывании защиты в электронный ключ передаются блоки за­шиф­ро­ванной информации, а принимаются расшифрованные данные. В сис­те­мах этого типа достаточно сложно перехватить ключ дешифрации, так как все процедуры выполняются аппаратной частью, но остается возможность принудительного сохранения защищенной программы в открытом виде после отработки системы защиты. Кроме того, к ним применимы методы криптоанализа.

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

Наши рекомендации