|
Материал Аудит. воссоздание официальных звонков от банковских и других ivr (англ. Interactive Voice Response) систем 40, с. 175
Тема 1. Системы защиты программного обеспечения
1. Классификация систем защиты программного обеспечения
Системы защиты ПО широко распространены и находятся в постоянном развитии, благодаря расширению рынка ПО и телекоммуникационных технологий. Необходимость использования систем защиты (СЗ) ПО обусловлена рядом проблем, среди которых следует выделить: незаконное использование алгоритмов, являющихся интеллектуальной собственностью автора, при написании аналогов продукта (промышленный шпионаж); несанкционированное использование ПО (кража и копирование); несанкционированная модификация ПО с целью внедрения программных злоупотреблений; незаконное распространение и сбыт ПО (пиратство).
Существующие системы защиты программного обеспечения можно классифицировать по ряду признаков, среди которых можно выделить:
метод установки;
используемые механизмы защиты;
принцип функционирования.
Системы защиты ПО по методу установки можно подразделить на:
системы, устанавливаемые на скомпилированные модули ПО;
системы, встраиваемые в исходный код ПО до компиляции;
комбинированные.
Системы первого типа наиболее удобны для производителя ПО, так как легко можно защитить уже полностью готовое и оттестированное ПО, а потому и наиболее популярны. В то же время стойкость этих систем достаточно низка (в зависимости от принципа действия СЗ), так как для обхода защиты достаточно определить точку завершения работы «конверта» защиты и передачи управления защищенной программе, а затем принудительно ее сохранить в незащищенном виде.
Системы второго типа неудобны для производителя ПО, так как возникает необходимость обучать персонал работе с программным интерфейсом (API) системы защиты с вытекающими отсюда денежными и временными затратами. Кроме того, усложняется процесс тестирования ПО и снижается его надежность, так как кроме самого ПО ошибки может содержать API системы защиты или процедуры, его использующие. Но такие системы являются более стойкими к атакам, потому что здесь исчезает четкая граница между системой защиты и как таковым ПО.
Наиболее живучими являются комбинированные системы защиты. Сохраняя достоинства и недостатки систем второго типа, они максимально затрудняют анализ и дезактивацию своих алгоритмов.
По используемым механизмам защиты СЗ можно классифицировать на:
системы, использующие сложные логические механизмы;
системы, использующие шифрование защищаемого ПО;
комбинированные системы.
Системы первого типа используют различные методы и приемы, ориентированные на затруднение дизассемблирования, отладки и анализа алгоритма СЗ и защищаемого ПО. Этот тип СЗ наименее стоек к атакам, так как для преодоления защиты достаточно проанализировать логику процедур проверки и должным образом их модифицировать.
Более стойкими являются системы второго типа. Для дезактивации таких защит необходимо определение ключа дешифрации ПО. Самыми стойкими к атакам являются комбинированные системы.
Для защиты ПО используется ряд методов, таких как:
Алгоритмы запутывания — используются хаотические переходы в разные части кода, внедрение ложных процедур — «пустышек», холостые циклы, искажение количества реальных параметров процедур ПО, разброс участков кода по разным областям ОЗУ и т. п.
Алгоритмы мутации — создаются таблицы соответствия операндов-синонимов и замена их друг на друга при каждом запуске программы по определенной схеме или случайным образом, случайные изменения структуры программы.
Алгоритмы компрессии данных — программа упаковывается, а затем распаковывается по мере выполнения.
Алгоритмы шифрования данных — программа шифруется, а затем расшифровывается по мере выполнения.
Вычисление сложных математических выражений в процессе отработки механизма защиты — элементы логики защиты зависят от результата вычисления значения какой-либо формулы или группы формул.
Методы затруднения дизассемблирования — используются различные приемы, направленные на предотвращение дизассемблирования в пакетном режиме.
Методы затруднения отладки — используются различные приемы, направленные на усложнение отладки программы.
Эмуляция процессоров и операционных систем – создается виртуальный процессор и/или операционная система (не обязательно существующие) и программапереводчик из системы команд IBM в систему команд созданного процессора или ОС, после такого перевода ПО может выполняться только при помощи эмулятора, что резко затрудняет исследование алгоритма ПО.
Нестандартные методы работы с аппаратным обеспечением – модули системы защиты обращаются к аппаратуре ЭВМ, минуя процедуры ОС, и используют малоизвестные или недокументированные ее возможности.
В свою очередь, злоумышленники так же применяют ряд методов и средств для нарушения систем защиты. Ситуация противостояния разработчиков СЗПО и злоумышленников постоянно изменяется за счет комбинирования уже известных методов защиты и нападения, а также за счет создания и использования новых методов. В целом это взаимодействие может быть описано схемой на рис. 1.
Рис. 1. Схема противостояния технических методов и средств защиты
По принципу функционирования СЗ можно подразделить на:
упаковщики/шифраторы;
СЗ от несанкционированного копирования;
СЗ от несанкционированного доступа (НСД).
2. Достоинства и недостатки основных систем защиты
Рассмотрим достоинства и недостатки основных систем защиты ПО, исходя из принципов их функционирования.
2.1. Упаковщики/шифраторы
Первоначально основной целью упаковщиков/шифраторов являлось уменьшение объема исполняемого модуля на диске без ущерба для функциональности программы, но позднее на первый план вышла цель защиты ПО от анализа его алгоритмов и несанкционированной модификации. Для достижения этого используются алгоритмы компрессии данных; приемы, связанные с использованием недокументированных особенностей операционных систем и процессоров; шифрование данных, алгоритмы мутации, запутывание логики программы, приведение ОС в нестабильное состояние на время работы ПО и др.
Положительные стороны:
В рамках периода безопасного использования данные системы обеспечивают высокий уровень защиты ПО от анализа его алгоритмов.
Методы упаковки/шифрации намного увеличивают стойкость СЗ других типов.
Отрицательные стороны:
Практически все применяемые методы замедляют выполнение кода ПО.
Шифрование/упаковка кода ПО вызывает затруднения при обновлении (update) и исправлении ошибок (bugfix, servicepack).
Возможно повышение аппаратно-программных требований ПО.
В чистом виде данные системы не применимы для авторизации использования ПО.
Эти системы применимы лишь к продуктам небольшого объема.
Данный класс систем уязвим, так как программный код может быть, распакован или расшифрован для выполнения.
Обладают небольшим сроком безопасного использования ввиду п. 4.
Упаковка и шифрование исполняемого кода вступает в конфликт с запрещением самомодифицирующегося кода в современных ОС.
2.2. Системы защиты от несанкционированного копирования
СЗ от несанкционированного копирования осуществляют «привязку» ПО к дистрибутивному носителю (гибкий диск, CD и др.). Данный тип защит основывается на глубоком изучении работы контроллеров накопителей, их физических показателей, нестандартных режимах разбивки, чтения/записи и т. п. При этом на физическом уровне создается дистрибутивный носитель, обладающий предположительно неповторимыми свойствами (нестандартная разметка носителя информации и/или запись на него дополнительной информации — пароля или метки), а на программном — создается модуль, настроенный на идентификацию и аутентификацию носителя по его уникальным свойствам. При этом возможно применение приемов, используемых упаковщиками/шифраторами.
Положительные факторы:
Затруднение нелегального копирования и распространения ПО.
Защита прав пользователя на приобретенное ПО.
Отрицательные факторы:
Большая трудоемкость реализации системы защиты.
Замедление продаж из-за необходимости физической передачи дистрибутивного носителя информации.
Повышение системных требований из-за защиты (наличие накопителя).
Снижение отказоустойчивости ПО.
Несовместимость защиты и аппаратуры пользователя (накопитель, контроллер).
На время работы ПО занимается накопитель.
Угроза кражи защищенного носителя.
2.3. Системы защиты от несанкционированного доступа
СЗ от НСД осуществляют предварительную или периодическую аутентификацию пользователя ПО или его компьютерной системы путем запроса дополнительной информации. К этому типу СЗ можно отнести системы парольной защиты ПО, системы «привязки» ПО к компьютеру пользователя, аппаратно-программные системы с электронными ключами и системы с «ключевыми дисками». В первом случае «ключевую» информацию вводит пользователь, во втором — она содержится в уникальных параметрах компьютерной системы пользователя, в третьем — «ключевая» информация считывается с микросхем электронного ключа, в четвертом — она хранится на диске.
2.3.1. Парольные защиты
Этот класс СЗПО, на сегодняшний день, является самым распространенным. Основной принцип работы данных систем заключается в идентификации и аутентификации пользователя ПО путем запроса дополнительных данных, это могут быть название фирмы и/или имя и фамилия пользователя и его пароль либо только пароль/регистрационный код. Эта информация может запрашиваться в различных ситуациях, например, при старте программы, по истечении срока бесплатного использования ПО, при вызове процедуры регистрации либо в процессе установки на ПК пользователя. Процедуры парольной защиты просты в реализации. Большинство парольных СЗПО используют логические механизмы, сводящиеся к проверке правильности пароля/кода и запуску или не запуску ПО, в зависимости от результатов проверки. Существуют также системы, шифрующие защищаемое ПО и использующие пароль или производную от него величину как ключ дешифрации. Обычно они реализованы в виде защитного модуля и вспомогательных библиотек и устанавливаются на уже скомпилированные модули ПО.
Слабым звеном парольных защит является блок проверки правильности введенного пароля/кода. Для такой проверки можно сравнивать введенный пароль с записанным в коде ПО правильным либо с правильно сгенерированным из введенных дополнительных данных паролем. Возможно также сравнение производных величин от введенного и правильного паролей, например их хэш-функций, в таком случае в коде можно сохранять только производную величину, что повышает стойкость защиты. Путем анализа процедур проверки можно найти реальный пароль, записанный в коде ПО, найти правильно сгенерированный пароль из введенных данных либо создать программу для перебора паролей для определения пароля с нужной хэш-суммой. Кроме того, если СЗПО не использует шифрования, достаточно лишь принудительно изменить логику проверки для получения беспрепятственного доступа к ПО.
Шифрующие системы более стойки к атакам, но при использовании простейших или некорректно реализованных криптоалгоритмов есть опасность дешифрации ПО.
Для всех парольных систем существует угроза перехвата пароля при его вводе авторизованным пользователем. Кроме того, в большинстве СЗПО данного типа процедура проверки используется лишь единожды, обычно при регистрации или установке ПО, затем система защиты просто отключается, что создает реальную угрозу для НСД при незаконном копировании ПО.
Положительные стороны:
Надежная защита от злоумышленника-непрофессионала.
Минимальные неудобства для пользователя.
Возможность передачи пароля/кода по сети.
Отсутствие конфликтов с системным и прикладным ПО и АО.
Простота реализации и применения.
Низкая стоимость.
Отрицательные стороны:
Низкая стойкость большинства систем защиты данного типа.
Пользователю необходимо запоминать пароль/код.
2.3.2. Системы «привязки» ПО
Системы этого типа при установке ПО на ПК пользователя осуществляют поиск уникальных признаков компьютерной системы либо они устанавливаются самой системой защиты. После этого модуль защиты в самом ПО настраивается на поиск и идентификацию данных признаков, по которым в дальнейшем определяется авторизованное или неавторизованное использование ПО. При этом возможно применение методик оценки скоростных и иных показателей процессора, материнской платы, дополнительных устройств, ОС, чтение/запись в микросхемы энергонезависимой памяти, запись скрытых файлов, настройка на наиболее часто встречаемую карту использования ОЗУ и т. п.
Слабым звеном таких защит является тот факт, что на ПК пользователя ПО всегда запускается на выполнение, что приводит к возможности принудительного сохранения ПО после отработки системы защиты, исследование самой защиты и выявление данных, используемым СЗПО для аутентификации ПК пользователя.
Положительные факторы:
Не требуется добавочных аппаратных средств для работы защиты.
Затруднение несанкционированного доступа к скопированному ПО.
Простота применения.
«Невидимость» СЗПО для пользователя.
Отрицательные факторы:
Ложные срабатывания СЗПО при любых изменениях в параметрах ПК.
Низкая стойкость при доступе злоумышленника к ПК пользователя.
Возможность конфликтов с системным ПО.
2.3.3. Программно-аппаратные средства защиты ПО с электронными ключами
Этот класс СЗПО в последнее время приобретает все большую популярность среди производителей программного обеспечения (ПО). Под программно-аппаратными средствами защиты в данном случае понимаются средства, основанные на использовании так называемых «аппаратных (электронных) ключей». Электронный ключ — это аппаратная часть системы защиты, представляющая собой плату с микросхемами памяти и, в некоторых случаях, микропроцессором, помещенную в корпус и предназначенную для установки в один из стандартных портов ПК (COM, LPT, PCMCIA, USB) или слот расширения материнской платы. Так же в качестве такого устройства могут использоваться смарт-карты (Smart-Card). По результатам проведенного анализа, программно-аппаратные средства защиты в настоящий момент являются одними из самых стойких систем защиты ПО от НСД.
Электронные ключи по архитектуре можно подразделить на ключи с памятью (без микропроцессора) и ключи с микропроцессором (и памятью).
Наименее стойкими являются системы с аппаратной частью первого типа. В таких системах критическая информация (ключ дешифрации, таблица переходов) хранится в памяти электронного ключа. Для дезактивации та-ких защит в большинстве случаев необходимо наличие у злоумышленника аппаратной части системы защиты (перехват диалога между программной и аппаратной частями для доступа к критической информации).
Наиболее стойкими являются системы с аппаратной частью второго типа. Такие комплексы содержат в аппаратной части не только ключ дешифрации, но и блоки шифрации/дешифрации данных, таким образом при работе защиты в электронный ключ передаются блоки зашифрованной информации, а принимаются оттуда расшифрованные данные. В системах этого типа достаточно сложно перехватить ключ дешифрации, так как все процедуры выполняются аппаратной частью, но остается возможность принудительного сохранения защищенной программы в открытом виде после отработки системы защиты. Кроме того, к ним применимы методы криптоанализа. Положительные факторы:
Значительное затруднение нелегального распространения и использования ПО.
Избавление производителя ПО от разработки собственной системы защиты.
Высокая автоматизация процесса защиты ПО.
Наличие API системы для более глубокой защиты.
Возможность легкого создания демо-версий.
Достаточно большой выбор таких систем на рынке.
Отрицательные факторы:
Затруднение разработки и отладки ПО из-за ограничений со стороны СЗ.
Дополнительные затраты на приобретение СЗ и обучение персонала.
Замедление продаж из-за необходимости физической передачи аппаратной части.
Повышение системных требований из-за защиты (совместимость, драйверы).
Снижение отказоустойчивости ПО.
Несовместимость систем защиты и системного или прикладного ПО пользователя.
Несовместимость защиты и аппаратуры пользователя.
Ограничения из-за несовместимости электронных ключей различных фирм.
Снижение расширяемости компьютерной системы.
Затруднения или невозможность использования защищенного ПО в переносных и блокнотных ПК.
Наличие у аппаратной части размеров и веса (для COM/LPT = 5 х 3 х 2 см 50 г).
Угроза кражи аппаратного ключа.
2.3.4. Средства защиты ПО с «ключевыми дисками»
В настоящий момент этот тип систем защиты мало распространен, ввиду его морального устаревания. СЗПО этого типа во многом аналогичны системам с электронными ключами, но здесь критическая информация хранится на специальном, ключевом, носителе. Основной угрозой для таких СЗПО является перехват считывания критической информации, а также незаконное копирование ключевого носителя.
Положительные и отрицательные стороны данного типа СЗПО практически полностью совпадают с таковыми у систем с электронными ключами.
3. Показатели эффективности систем защиты
Необходимо отметить, что пользователи явно ощущают лишь отрицательные стороны систем защит. А производители ПО рассматривают только относящиеся к ним «плюсы» и «минусы» систем защиты и практически не рассматривают факторы, относящиеся к конечному потребителю. По результатам исследований был разработан набор показателей применимости и критериев оценки СЗПО.
Показатели применимости:
Технические — соответствие СЗПО функциональным требованиям производителя ПО и требованиям по стойкости, системные требования ПО и системные требования СЗПО, объем ПО и объем СЗПО, функциональная направленность ПО, наличие и тип СЗ у аналогов ПО — конкурентов.
Экономические — соотношение потерь от пиратства и общего объема прибыли, соотношение потерь от пиратства и стоимости СЗПО и ее внедрения, соотношение стоимости ПО и стоимости СЗПО, соответствие стоимости СЗПО и ее внедрения поставленным целям.
Организационные — распространенность и популярность ПО, условия распространения и использования ПО, уникальность ПО, наличие угроз, вероятность превращения пользователя в злоумышленника, роль документации и поддержки при использовании ПО.
Критерии оценки:
Защита как таковая — затруднение нелегального копирования и доступа, защита от мониторинга, отсутствие логических брешей и ошибок в реализации системы.
Стойкость к исследованию/взлому — применение стандартных механизмов, новые/нестандартные механизмы.
Отказоустойчивость (надежность) — вероятность отказа защиты (НСД), время наработки на отказ, вероятность отказа программы защиты (крах), время наработки на отказ, частота ложных срабатываний.
Независимость от конкретных реализаций ОС — использование недокументированных возможностей, «вирусных» технологий и «дыр» ОС.
Совместимость — отсутствие конфликтов с системным и прикладным ПО, отсутствие конфликтов с существующим АО, максимальная совместимость с разрабатываемым АО и ПО.
Неудобства для конечного пользователя ПО — необходимость и сложность дополнительной настройки системы защиты, доступность документации, доступность ин-
формации об обновлении модулей системы защиты из-за ошибок/несовместимости/нестойкости, доступность сервисных пакетов, безопасность сетевой передачи пароля/ключа, задержка из-за физической передачи пароля/ключа, нарушения прав потребителя.
Побочные эффекты — перегрузка трафика, отказ в обслуживании, замедление работы защищаемого ПО и ОС, захват системных ресурсов, перегрузка ОЗУ, нарушение стабильности ОС.
Стоимость — стоимость/эффективность, стоимость/цена защищаемого ПО, стоимость/ликвидированные убытки.
Доброкачественность — доступность результатов независимой экспертизы, доступность информации о побочных эффектах, полная информация о СЗ для конечного пользователя.
Общая картина взаимодействия агентов рынка программного обеспечения представлена на схеме рис. 2. Из четырех указанных выше видов среды взаимодействия защищающейся стороне подконтрольны три вида — организационная, техническая и экономическая среда. Важнейшей средой взаимодействия является несомненно экономическая среда, так как экономическое взаимодействие, является первопричиной и целью всего взаимодействия.
При разработке и анализе защиты программного обеспечения необходимо учитывать существующую законодательную базу, при этом нужно проводить подробный экономический анализ ситуации, применяя различные критерии оценки, а затем создавать стратегию защиты, включающую применение технических и организационных мер защиты программного обеспечения.
Рис. 2.Взаимодействие участников процесса создания и распространения ПО
Контрольные вопросы
1. Приведите классификацию систем защиты программного обеспечения.
2. Сравните основные технические методы и средства защиты программного обеспечения.
3. Назовите отличия систем защиты от несанкционированного доступа от систем защиты от несанкционированного копирования.
4. Дайте характеристику показателей эффективности систем защиты.
5. Приведите примеры взаимодействия участников процесса создания и распространения ПО.
|
|
|