Метод защиты программных средств на основе запутывающих преобразований

Автор: Пользователь скрыл имя, 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

Файлы: 1 файл

диссер.doc

— 2.60 Мб (Скачать)

Недостаток этих двух методов в том, что они не устойчивы к методам статического и динамического анализа программ, что может привести к уда­лению, искажению и эмулированию новых водяных знаков и отпечатков пальца.



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              —



 



Подсистема внедрения управляющих механизмов


Внедряемый защитный код



 



Подсистема реализации за­щитных функций

і             


Блок защиты логики работы от анализа



 



Блок установки

характеристик

среды


Блок сравнения ха­рактеристик среды

Информация о работе Метод защиты программных средств на основе запутывающих преобразований