Автор: Пользователь скрыл имя, 23 Марта 2012 в 03:04, дипломная работа
Актуальность работы. Многие направления науки и техники, имеющие отношение к получению, обработке, хранению и передаче информации, в значительной степени ориентируются на развитие современных компьютерных систем (КС) [30]. Такие системы представляют разнообразную и весьма сложную совокупность вычислительных устройств, систем обработки информации, телекоммуникационных технологий, программного обеспечения и высокоэффективных средств его проектирования и в общем случае представляющие гетерогенную программно-аппаратную среду.
Введение 4
Глава 1. Анализ методов защиты программных средств 11
1.1 Методы защиты информации с помощью аппаратных средств 12
1.2 Программные средства защиты информации 16
1.3 Анализ программных средств как объекта защиты 21
1.4 Анализ структуры программных систем защиты информации 24
1.5 Выводы 26
Глава 2. Построение методов защиты программных средств с помощью,
запутывающих преобразований 28
2.1 Понятие запутывающих преобразований для реализации защиты
программных средств вне доверенной вычислительной среды 29
2.2 Классификация запутывающих преобразований 32
2.2.1 Преобразования форматирования 32
2.2.2 Преобразования структур данных 33
2.2.3 Преобразования потока управления .34
2.3 Классификация методов анализа программ .44
2.3.1 Методы статического анализа .45
2.3.2 Методы статистического и динамического анализа 47
2.4 Классификация способов запутывания к применяемым методам анализа и распутывания программ 48
2.5 Оценка эффективности применения запутывающих преобразований 50
2.6 Выводы .51
ГлаваЗ. Построение метода защиты программных средств с помощью
запутывающих преобразований ;.53
3.1 Построение графа потока управления 56
з
3.2 Преобразование графа потока управления 60
3.5 Теоретическое обоснование устойчивости метода 68
3.6 Практическое обоснование устойчивости мето да 71
3.7 Выводы 72
Глава 4. Решение практических задач защиты программных средств 74
4.1 Анализ характеристик методов защиты программных средств 74
4.2 Выбор объектов тестирования 74
4.3 Методика оценки эффективности защиты 75
4.3.1 Оценка эффективности программных средств 80
4.4 Оценка устойчивости метода к ручному анализу и дизассемблированию85
4.4.1 Подготовка эксперимента 85
4.4.2 Описание результатов эксперимента 86
4.4.3 Результаты дизассемблирования 90
4.5 Определение размера требуемых ресурсов вычислительной системы 91
4.6 Показатели применимости разработанного метода защиты программных средств 99
4.7 Выводы 101
Заключение 103
Список использованной литературы 106
Недостаток этих двух методов в том, что они не устойчивы к методам статического и динамического анализа программ, что может привести к удалению, искажению и эмулированию новых водяных знаков и отпечатков пальца.
18
Установка подлинности кода (tamper-proofing) заключается в том, что в программу помещается процедура проверки целостности самой программы, что позволяет определить, была ли программа изменена (были ли внесены какие либо изменения в ее код). Если эта процедура обнаруживает, что в программу внесены изменения, она делает ее не функциональной. Это позволяет защитить программный продукт, от изменений со стороны злоумышленника.
Недостаток этого метода состоит в том, что достаточно определить точку вызова процедуры проверки, изменить условие проверки или обойти его.
Шифрование (enciphering) программного кода используется для того чтобы предотвратить вмешательство в программу, а также усложнить изучение злоумышленником того, как устроена программа, как она работает, какой реализован в ней метод защиты и т.д.
Данный метод защиты предусматривает зашифровывание кода программы, после чего она в зашифрованном виде поставляется пользователям. При запуске зашифрованной программы выполняется процедура расшифровки программы, которой потребуется ключ для расшифровки запускаемой программы. Ключ обычно представляет собой последовательность байтов (символов), которая генерируется в результате определенных (математических) операций. Он может быть привязан к уникальным характеристикам компьютера пользователя. При этом такой способ генерации ключа, создает определенные неудобства для пользователей, так как могут возникнуть трудности при использовании такой программы, на другом компьютере.
Способ шифрования программ имеет недостатки, одним из которых является то, что у злоумышленника есть возможность, после приобретения лицензионной копии программы, произвести извлечение расшифрованных частей программы в процессе ее работы из памяти.
В большинстве случаев для обхода защиты, злоумышленнику требуется изучить принцип работы ее кода, и то, как она взаимодействует с самой защищаемой программой, этот процесс изучения называется процессом реверсивной (обратной) инженерии.
19
Обфускация (obfiiscation - запутывание) - это один из методов защиты программного кода, который позволяет усложнить процесс реверсивной инженерии кода защищаемого программного продукта [70].
Суть процесса заключается в том, чтобы запутать программный код и устранить большинство логических связей в нем, то есть трансформировать его так, чтобы он был очень труден для изучения и модификации посторонними лицами.
Запутывание, как метод защиты ПС, можно считать сравнительно новым и перспективным. Обфускация соответствует принципу экономической целесообразности, так как ее использование не значительно увеличивает стоимость программного продукта, и позволяет при этом снизить потери от пиратства, а также плагиата в результате кражи уникального алгоритма работы защищаемого программного продукта [92].
Так как код, получаемый после осуществления запутывания, над одной и той же программой разный, то процесс запутывания можно использовать для быстрой локализации нарушителей авторских прав. Для этого определяют контрольную сумму каждой копии программы прошедшей запутывание и записывают ее вместе с информацией о покупателе в соответствующую базу данных. После этого для определения нарушителя, достаточно будет, определив контрольную сумму нелегальной копии программы, сопоставить ее с информацией хранящейся в базе данных.
Процесс запутывания может быть осуществлен на:
- низком уровне, когда процесс осуществляется над ассемблерным кодом программы, или даже непосредственно над двоичным файлом программы хранящим машинный код;
- высоком уровне, когда процесс осуществляется над исходным кодом программы, написанном на языке высокого уровня.
Осуществление запутывания на низком уровне считается трудно реализуемым по причине того, что должны быть учтены особенности работы
большинства процессоров, так как способ запутывания, приемлемый на одной архитектуре, может оказаться неприемлемым на другой.
Проведенный анализ существующих известных методов позволил провести их условную классификацию. Все вышеперечисленные программные методы защиты информации, их преимущества и недостатки приведены в табл. 1.1.
Таблица 1.1- Программные методы защиты информации. Преимущест-
ва и недостатки.
Методы | Преимущества | Недостатки |
Водяные знаки (software watermark) | Не искажают исходный файл (с точки зрения пользователя просматривающего информацию), при этом автор может однозначно определить свою метку | Не устойчив к методам статического и динамического анализа программ. Возможно искажение, эмуляция, удаление и замена информации. |
Отпечаток пальца (software fingerprint) | Использует уникальный идентификационный код, присваиваемый каждому покупателю программы, что позволяет отследить нарушителя авторского права | Не устойчив к методам статического и динамического анализа программ. Возможно искажение, эмуляция, удаление и замена информации. |
Установка подлинности кода (tamper-proofing) | Происходит проверка целостности самой программы, что позволяет определить, была ли программа изменена | При определении места вызова процедуры (при использование статического анализа) проверки можно обойти условие проверки |
Шифрование (enciphering) | Позволяет зашифровывать наиболее важные, критические, участки кода, а не весь код программы | Исследование подсистем шифрования под отладчиком или дизассемблированием позволяют понять алгоритм криптографической защиты и повторить его. Поэтому шифрование должно применяться совместно с защитой кода от статического и динамического анализа |
Обфускация (obfuscation) | Соответствует принципу экономической целесообразности и уменьшает возможность плагиата в результате кражи уникального алгоритма работы защищаемого программного продукта, для анализа и понимания исходного текста требуется длительное время и дополнительные ресурсы | Увеличение объема требуемых ресурсов вычислительной системы и времени выполнения защищенного программного продукта. Определяется индивидуальными качествами разработчика программного обеспечения. |
21
1.3 Анализ программных средств как объекта защиты
При анализе ПС как объекта защиты будем использовать понятия, определенные в стандартах [18, 91]. Стоит отметить, что понятия объект защиты, нарушитель и средства защиты тесно связаны между собой.
Поскольку защита ПС вне доверенной вычислительной среды исключает возможность использования вспомогательных аппаратных средств и может опираться только на свойства самого ПС, первостепенное значение приобретает объект защиты и его свойства.
Сущность объекта защиты и его взаимосвязь с остальными субъектами и объектами безопасности может быть раскрыта через группы свойств уязвимости и защищенности [3, 68, 69].
Большинство свойств ПС определяются их двойственной природой: ПС обладают как свойствами алгоритмов - в процессе выполнения реализуют некоторую функцию, так и данных - хранятся в файле на магнитном носителе или занимают некоторую область оперативной памяти [55, 62, 68, 69]. Соответственно различают понятия функции и текста ПС.
Свойствами уязвимости ПС являются: легкость модификации и копирования текста ПС, отсутствие независимости функционирования, открытость семантики текста ПС на уровне операторов и обращений к операционной системе [62].
Эти свойства обуславливаются тем, что к тексту ПС применимы все операции, выполняемые над данными. ПС не являются самостоятельно функционирующими объектами, для их функционирования, в том числе для реализации функций защиты, необходимо интерпретирующее средство (процессор), другие вспомогательные программные и аппаратные средства, образующие среду исполнения, или вычислительную среду. Текст ПС должен интерпретироваться в вычислительной среде. Для универсальной вычислительной среды правила интерпретации общеизвестны, следо-
22 вательно, семантика операторов становится доступной пользователю, контролирующему вычислительную среду.
Свойствами защищенности ПС являются: семантический разрыв ме
жду функцией ПС и функцией операторов, динамичность структуры ПС,
£ способность к самоинтерпретации и самомодификации.[3, 68]
Семантика функций ПС и семантика операторов, составляющих ис
ходный текст ПС различны. Любое ПС предназначено для решения задачи
некоторой предметной области. Соответственно алгоритм ПС оперирует
объектами этой области. В то же время, интерпретирующее устройство
оперирует кодированными представлениями этих объектов (кодами). Ко
ды объектов различной природы представляются одинаково и различаются
Ф только по контексту использования. Таким образом, наблюдается разрыв
между семантикой данных и их представлением. Соответственно существует разрыв между семантикой функции ПС и семантикой операторов, составляющих текст ПС.
Свойство динамичности структуры обуславливается наличием в язы
ках программирования конструкций, реализующих динамические связи.
Такими конструкциями являются косвенный переход (переход по вычис
ленному адресу) и косвенное обращение к данным (обращение по вычис-
"* ленному адресу).
Свойство самоинтерпретации и самомодификации является следствием двойственной природы ПС. С одной стороны, ПС являются способом задания алгоритмов и могут описывать правила интерпретации данных. С другой стороны, ПС сами представляют собой данные. В результате ПС
могут обрабатывать (интерпретировать) сами себя.
І
Для ПС вне доверенной вычислительной среды актуальны следующие
угрозы:
23
- несанкционированный отказ в доступе - нарушитель может отказать в предоставлении ресурса, необходимого для реализации функции ПС;
- несанкционированная модификация - нарушитель может заменить, добавить или удалить некоторые символы ПС, что приводит к искажению алгоритма или данных ПС;
- несанкционированное копирование - нарушитель может создать копию текста ПС, что ставит под угрозу авторские права на ПС;
- несанкционированное ознакомление - нарушитель может ознакомиться с деталями реализации структуры ПС и функционирования.
Исходя из рассмотренных свойств ПС как объекта защиты и угрозах актуальных для ПС можно утверждать, что вне доверенной вычислительной среды защита ПС от несанкционированного отказа в доступе невозможна из-за отсутствия независимости функционирования. Защита от угроз несанкционированной модификации, копирования и ознакомления может быть обеспечена при условии скрытности деталей реализации ПС.
Таким образом, основной проблемой защиты ПС вне доверенной вычислительной среды является обеспечение скрытности деталей реализации ПС. Эффективным способом решения проблемы защиты ПС программными методами является применение преобразований текста ПС или запутывающие преобразования.
Для решения задачи получения несанкционированной модификации, копирования и ознакомления применяются средства анализа программного кода. Рассмотрим средства анализа программного кода, которые используют при исследовании ПС.
В настоящее время используется следующая классификация средств анализа программного кода [55]:
- инструменты динамического исследования;
24
- инструменты статического исследования;
- прочие инструменты.
К инструментам динамического исследования относятся отладчики [43, 88], программы-мониторы для мониторинга активности исследуемой программы и эмуляторы, представляющие собой виртуальную машину для выполнения исследуемых функций.
К инструментам статического анализа относятся дизассемблеры, преобразующие двоичный код программы в мнемотическое представление [31], программы получения статической информации об образе исполняемого файла.
К прочим инструментам относятся статистический анализ, программы для получения двоичного образа программы из памяти для его последующего анализа путем статического или динамического инструмента [48, 67].
1.4 Анализ структуры программных систем защиты информации
Программная система защиты от несанкционированного доступа [26] представляет собой комплекс средств, предназначенный для затруднения несанкционированного доступа. Структурная схема программной системы защиты от несанкционированного доступа [17, 42, 48, 49, 74] приведена на рисунке 1.1.
Подсистема внедрения управляющих механизмов представляет собой комплекс программных средств, предназначенный для подключения внедряемого защитного кода к защищаемому программному модулю.
Внедряемый защитный код - это программный модуль для противодействия попыткам нелегального доступа.
Подсистема реализации защитных функций представляет собой программную секцию, решающую задачу распознавания легальности доступа.
25
Блок защиты логики работы от анализа предназначен для противодействия применяемым для анализа системы защиты средствам исследования.
Блок установки характеристик среды устанавливает факт легальности доступа к защищаемой программе.
Блок сравнения характеристик среды проверяет наличие оригинальной для ЭВМ информации.
Блок ответной реакции реализует ответные действия системы защиты на попытки несанкционированного доступа.
*
L
Система защиты от НСД
I —
Подсистема внедрения управляющих механизмов
Внедряемый защитный код
Подсистема реализации защитных функций
і
Блок защиты логики работы от анализа
Блок установки
характеристик
среды
Блок сравнения характеристик среды
Информация о работе Метод защиты программных средств на основе запутывающих преобразований