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