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

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

Согласно рассмотренной в разделе 4.3. методики оценки эффективности защиты, выражение для расчета вероятности того, что программа не будет «взломана» в заданный момент времени, имеет следующий вид:

р(0 = А(^^)Р2^^2) = (1-^0АГ(О(1-^^ехрфг(')              (4.11)



81 Согласно [48], неизменные для Ргх и Рг2 параметры имеют следующие

значения:

-         значение параметров тх(t) = m2(t) = \ - это следует из того, что расчет выполняется для одной копии защищенной программы;

-         значение параметра Ц = 0;

-         значение параметра Z2 =0.17;

-         значение параметра N0 =9900;

-         значение параметра к определяется цикломатическим числом Мак-кейба по формуле (4.8).

Неизменность параметра N0 для запутанной и не запутанной программы

означает, что средства анализа (в момент времени t = 0) не могут быть при­менимы для автоматического «снятия» защиты.

Так как для запутанной и исходной программы значение параметра Lx = 0 (применение средств, для автоматического снятия защиты не дает ре­зультата), то левая часть произведения (4.10) всегда равна единице. Таким образом, с учетом значения Ц выражение (4.10) может быть представлено следующим образом:

p(t) = p2(t,m2) = (l-L2^exp(j))              (4.11)

N        к

Выражение (4.11) определяет вероятность того, что рассматриваемая программа не будет «взломана» в заданный момент времени. Следовательно, вероятность взлома определяется по формуле:

Рв(0 = 1-р(0 = (1-^^ехрф) = (Х2^ехрф)              (4.12)

Так как m2(t) = 0, то выражение (4.12) примет вид:

Л(0 = А^ехр(})              (4.13)

N        к

Выражение (4.13) определяет вероятность того, что одна копия про­граммы будет «взломана» в определенный момент времени.



82 С помощью выражения (4.10) выполним оценку рассматриваемых про­грамм Ргх и Рг2 для каждого из методов сортировки и сравним полученные

результаты. Графическое отображение расчета вероятностей pz(t) для про­граммы Ргг и p.(t) для Ргх приведено на рисунках 4.1-4.4.

Объем в инструкциях для исходной программы Ргх сортировки методом «пузырька», т.е. значения параметра JV=5602, коэффициент сложности ана­лиза к =2. Для запутанной программы Рг2, значение N =22980, коэффициент

£=10.

Рисунок 4.1 - Расчет вероятностей для программ сортировки методом «пузырька»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ Объем в инструкциях для исходной программы Ргх сортировки методом

«выборки» - значение параметра N=6171, коэффициент сложности анализа к=2. Для запутанной программы  Рг2, значение  N =26390, коэффициент

сложности анализа £=8.



83

Рисунок 4.2 - Расчет вероятностей для программ сортировки методом «выборки»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ Объем в инструкциях для исходной программы Ргх сортировки методом

«вставки» - значение параметра N=5165, коэффициент сложности анализа к =2. Для запутанной программы  Рг2, значение   N=23192, коэффициент

сложности анализа к =1.

t , час

Рисунок 4.3 - Расчет вероятностей для программ сортировки методом «вставки»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ



84 Объем в инструкциях для исходной программы Ргх сортировки методом

«шелла» - значения параметра N=16000, коэффициент сложности анализа к =4. Для запутанной программы   Рг2, значение  N =20740, коэффициент

сложности анализа А:=13.

P(t)

Рисунок 4.4 - Расчет вероятностей для программ сортировки методом «шел­ла»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ Из приведенного графического отображения и сравнения количествен­ных характеристик для исходных и запутанных программ Ргх и Рг2 видно,

что на анализ исходного текста программ будет затрачено меньше времени, чем запутанного кода. Это следует из того, что для любого момента времени величина p(t) для Рг2 больше, чем вероятность p{t) для Ргх.

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

Для этого анализа проведем оценку запутывающих преобразований предложенного в данной работе метода и алгоритма запутывания С. Wang's рассмотренного в разделе 2.2.3, применимые для программы сортировки ме­тодом «Шелла».



85 Объем в инструкциях для исходной программы Ргх сортировки методом

«Шелла» - значение параметра N=16000, коэффициент сложности анализа к =4. Для запутанной программы   Рг2, значение  N =20740, коэффициент

сложности анализа к=13. Для запутанной программы алгоритмом С. Wang's Prw параметр TV =40480, коэффициент к=12.

1

0.5

О

Рисунок 4.4 - Расчет вероятностей для программ сортировки методом «Шел­ла»: сплошная линия - для разработанного метода, пунктирная линия - для исходного текста программ, большая пунктирная линия - для С. Wang's Вариант запутывания с помощью алгоритма С. Wang's не устойчив по сравнению с предложенным автором методом запутывания. Кроме того, сравнивая значения параметра N видно, что размер требуемых ресурсов ВС для этого алгоритма в два раза выше, чем у разработанного метода.

4.4 Оценка устойчивости метода к ручному анализу и дизас-семблированию

4.4.1 Подготовка эксперимента

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



86 Для проведения эксперимента была выбрана экспериментальная группа, состоящая из 30 человек. В экспериментальную группу вошли студенты VI-V курсов, обучающиеся по специальности «Программное обеспечение вычис­лительной техники и автоматизированных систем», участники областной предметной студенческой олимпиады по программированию и информатики. В экспериментальную группу так же вошли программисты с профессиональ­ной подготовкой и представляющие различные учреждения по разработке пакетов ПО. Основным критерием при формировании экспериментальной группы было знание языков объектно-ориентированного программирования и ассемблера, умение работать со стандартными пакетными приложениями, хорошее знание архитектуры ПЭВМ. Группе было предложено задание:

1.   Для файлов l.xxx, 2.ххх, З.ххх, 4.ххх определить, что выполняет про­цедура select (для каждого файла написать результат анализа). Описать проблемы, возникшие при анализе. Определить сколько времени потрачено на каждый файл, даже если не определено, что выполняет процедура select.

2.   Для файлов l.xxx, 2.ххх, З.ххх, 4.ххх найти соответствие с файлами предложенных сортировок (для каждого файла написать результаты сопос­тавления и (или) предположения о сопоставлении, сколько времени было по­трачено. Описать возникшие трудности).

3.   Для файлов l.xxx, 2.ххх, З.ххх, 4.ххх привести их к исходному тексту (при этом приводить промежуточные результаты, в случае если попытки не удаются, описать возникшие трудности).

4.4.2 Описание результатов эксперимента

Эксперты при первичном анализе сталкивались с метками, которые представляют трудность для анализа программы, в результате чего эксперты затратили 1-1,5 часа на общий анализ программы. При этом 40% смогли раз­делить исходный текст программы по меткам, не определив, что выполняет



87 программа. 20% экспертов определили, что данные программы производят сортировки. 20% после одного часа эксперимента отказались от дальнейшего анализа.

37,5% (9 из 24 экспертов) выделили участок программы, в котором за­ключен основной алгоритм, смогли справиться с задачей. Основной пробле­мой при выполнении задания эксперты отметили большое количества опера­ций присвоения (большое количество мертвого кода). При этом эксперты по­тратили 2-2,5 часа.

При сопоставлении запутанных текстов программ с исходными текстами получены следующие значения (для анализа предлагались программы сорти­ровок методами «пузырька», «выборки», «вставки» и «Шелла» в запутанном и исходном виде):

1.   50% правильно сопоставить сортировку методом «пузырька».

2.   На программах сортировки методом «выборки» и «вставки» получены одинаковые результаты. 40% экспертов четко выделили обе сортировки, но при этом возникла трудность определения соответствия. При этом выделено два запутанных и два исходных алгоритма, но определить какой из них соот­ветствует сортировкам методами «выборки» и «вставки» составило труд­ность.

3.   20% сопоставили сортировку методом «Шелла». При сопоставлении эксперты отметили сравнительно большой объем операций как исходной, так и запутанной программы по сравнению с остальными программами сортиро­вок.

При перенесении запутанного текста программы с бумажного носителя в любой текстовый редактор (напечатать) ни один из экспертов не справился с заданием с первого раза. Попытки найти ошибку заканчивались отрица­тельным результатом (приходилось заново набирать текст). При этом 40% справились с заданием, потратив 20-40 минут.



88 Попытки вернуться к исходному виду так же привели к отрицательному результату. 60% экспертов сразу отказались от выполнения задания, 20% от­казались от дальнейшего анализа после 1,5-2 часов.

10% из экспертов, потратив при этом более 4 часов, частично восстано­вили порядок процедур и устранили мертвый код (путем удаления и переза­пуска программы), определили значение некоторых переменных (путем трас­сировки и отслеживание значений переменных, на различных стадиях вы­полнения программы).

В результате потенциальный злоумышленник мог отслеживать некото­рые вспомогательные переменные и значения некоторых констант, при этом:

-          не восстановлен ни один цикл (в привычном его восприятии);

-          не определен весь мертвый код;

-          не распознаны все переменные (счетчики циклов и т.п.). Результаты эксперимента приведены в таблице 4.1.

Таблица 4.1 - результаты эксперимента.

 

Задание

% выполнивших задание

Время, потра­ченное на вы­полнение, час.

1.

Провести анализ про­грамм. Определить назна­чение процедуры select. Указать время потраченное на анализ.

-              20% - определили, что
программы произво­
дят сортировки;

-              40% - разделили ис­
ходный текст про­
граммы по меткам;

-              40% - не справились с
задачей.

1-1.5

2.

Выделить участок про­граммы, в котором за­ключен основной алго­ритм.

-              37,5%) - справились с
задачей;

-              62,5% - не справились
с задачей.

2-2.5



89 Продолжение Таблицы 4.1

 

Задание

% выполнивших задание

Время, потра­ченное на вы­полнение, час.

3.

Сопоставить запутанные тексты программ с исход­ными

-              20% - сопоставили все
тесты программ;

-              70% - сопоставили
только три програм­
мы;

-              10% - сопоставили
менее двух программ.

-

4.

Перенести запутанный текст программы с бу­мажного носителя в лю­бой текстовый редактор

-              40%- справились с
задачей;

-              60% - после несколь­
ких попыток отказа­
лись от задания.

0.2-0.4

5.

Вернуться к исходному варианту текста програм­мы

-              20% - попытались
представить исходный
текст;

-              80% - отказались от
выполнения задания.

1.5-2

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