Д. С. ВАРГАНОВ
Московский инженерно-физический институт (государственный университет)
Научный руководитель – к. т.н., доцент Н. П. ВАСИЛЬЕВ
КЛАССИФИКАЦИЯ СРЕДСТВ ЗАЩИТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
В докладе приведена классификация существующих средств защиты (СЗ) программного обеспечения (ПО) с целью определения их недостатков, особенностей, а также оптимальных путей решения реальных практических задач. Необходимость использования средств защиты ПО обусловлена следующим рядом проблем: несанкционированное использование ПО (копирование); незаконное использование алгоритмов, являющихся интеллектуальной собственностью автора, при написании аналогов продукта (промышленный шпионаж); несанкционированная модификация ПО (внедрение вредоносного кода); незаконный сбыт ПО (пиратство).
Средства защиты ПО можно классифицировать по ряду признаков:
· по используемому механизму защиты (юридический, технический);
· по методу установки (устанавливаемые на скомпилированные модули, внедряемые в исходный код, комбинированные);
· по используемым методам при реализации систем защиты (использующие шифрование, использующие сложные логические механизмы, комбинированные);
· по методу реализации (программные, аппаратные);
· по типу вредоносного воздействия (от обратной инженерии, от несанкционированного доступа (НСД), от несанкционированного копирования);
· по типу средства анализа злоумышленника (СЗ от статического анализа, СЗ от динамического анализа, СЗ от снятия дампа памяти в оперативной памяти ОП).
По используемому механизму защиты
Возможно два подхода решения проблемы защиты ПО. Один - это решение проблемы с помощью технических средств защиты. Включать СЗ в состав ПО. Другой – использование юридической защиты. ПО не содержит технические СЗ, а сопровождается информацией об управлении правами.
По методу установки
Для производителей ПО удобней всего использовать защиту, устанавливаемую на скомпилированные модули. Но такая защита наименее стойка к атакам. Системы с внедрением СЗ в исходный код неудобны для производителей, так как им приходится обучать персонал работе с СЗ, возможно появление новых ошибок в уже оттестированном ПО и ряд других неудобств. Лучшим решением является использование СЗ комбинированного типа.
По используемым методам при реализации систем защиты
Системы защиты могут использовать шифрование ПО. Исполняемый код программы хранится в зашифрованном виде. Перед тем, как отправится на выполнение, зашифрованный код копируется в буфер, производится процедура дешифрования и исполнение полученного кода. Для дезактивации таких защит необходимо определение ключа дешифрации ПО.
Другой подход – это использование сложных логических механизмов для реализации системы защиты. Для защиты ПО используется следующий набор методов: алгоритмы запутывания, алгоритмы мутации, наложение локальных переменных на код программы, компрессия данных, вычисление сложных математических выражений в процессе отработки механизма защиты, методы затруднение дизассемблирования, метода затруднения отладки, эмуляции процессоров и операционных систем (ОС), нестандартные методы работы с аппаратным обеспечением (АО), нестандартное использование ресурсов ОС.
Самыми стойкими к атакам являются комбинированные системы. Шифрование и упаковка значительно увеличивают стойкость логических механизмов защиты.
По методу реализации
Методы защиты можно разделить на программные и аппаратные. К программным относятся методы, реализуемые с использованием только программных средств, в них не затрагиваются физические характеристики носителей информации, специальное оборудование. К аппаратным относятся методы, использующие специальное оборудование (электронные ключи) или физические особенности носителей информации.
По типу вредоносного воздействия
Для противодействия обратной инженерии используются упаковщики/шифраторы и сложные логические механизмы.
Несанкционированный доступ предотвращается путем использования парольных защит (аутентификация пользователя), систем привязки ПО (к серийному номеру жесткого диска, контрольной сумме BIOS), использованием электронных ключей (идентификация при помощи специальной платы с микропроцессором, предназначенной для установки через один из стандартных портов) и ключевых дисков (идентификационная информация хранится на специальном носители). Использование электронных ключей с памятью и микропроцессором в настоящий момент являются одними из самых стойких систем защиты ПО от НСД.
Защита от несанкционированного копирования осуществляется путем "привязки" ПО к дистрибутивному носителю. Это реализуется следующими способом: диск каким-либо способом уникально идентифицируется (нанесение физических меток, нестандартная разметка носителя, запись пароля), затем создается модуль, который идентифицирует носитель информации. Другим способом является нанесение на диск специальных меток, которые не копируются обычными методами. Данный способ не надёжен, поскольку уже существуют программы "продвинутого" копирования. Нанесение физических меток на диск является достаточно эффективным способом защиты ПО от несанкционированного распространения. При этом нужно учесть, что физические метки могут успешно эмулироваться специальными драйверами и нужно работать с устройствами чтения/записи на низком уровне, когда невозможно перехватить вызовы к оборудованию.
По типу средства анализа злоумышленника
Динамическое исследование программ (основной принцип борьбы – все средства анализа оставляют «следы»): борьба с отладчиками, программами-мониторами, эмуляторами.
От статического исследования программ: затруднение дизассемблирования, шифрование, компрессия и т. д.
От снятия дампа в ОП: постоянное перемещение программы в ОП, затирание, шифрование, пометка физической страницы памяти как недоступной.
Список литературы:
1. . Интегрированная среда для исследования "обфускации" программ. Доклад на конференции, посвящённой 90-летию со дня рождения . Россия, Новосибирск, 8-11 октября 2001 года. http://www. ict. *****/ws/Lyap2001/2350/
2. G. Hachez, C. Vasserot. State of the Art in Software Protection. Project FILIGRANE (Flexible IPR for Software Agent Reliance) deliverable/V2. http://www. dice. ucl. ac. be/crypto/filigrane/External/d21.pdf
3. C. Wang, J. Davidson, J. Hill, J. Knight. Protection of Software-based Survivability Mechanisms. Department of Computer Science, University of Virginia, 2001. http://www. cs. virginia. edu/~jck/publications/dsn_distribute. pdf


