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

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

Для проведения статистического анализа результатов эксперимента, вве-

дем критерий уровня выполнения задания [39]:

1-й уровень - задача выполнена, т.е. респондент справился с заданием;

2-й уровень - задача выполнена частично, т.е. респондент получил про­межуточные результаты, но с заданием не справился;

3-й уровень - задача не выполнена, т.е. респондент не справился с зада­нием.

Тогда результаты эксперимента можно представить в следующем виде (таб. 4.2, рис. 4.6).

Таблица 4.2. - Результаты эксперимента по порядковой шкале.

 

Уровень

выполнения

задания

Задача№1

Задача№2

Задача№3

Задача№4

Задача№5

1

6 чел.

9 чел.

6 чел.

12 чел.

-

2

12 чел.

-

21 чел.

-

6 чел.

3

12 чел.

21 чел.

3 чел.

18 чел.

24 чел.



90



* 0


□              Задача №1

■              Задача №2

□  Задача №3

□  Задача №4

■              Задача №5



1

Уровень выполнения задания

Рисунок 4.6 - Гистограмма результатов выполнения задания. Из проведенного эксперимента можно сделать следующие выводы:

-         большая трудность восприятия текстов программ;

-         трудность восприятия меток и переменных;

-         большое количество затрачиваемого времени на анализ программ. Среднее время, затрачиваемое на анализ, составляет 3.5 часа, при этом

не получено ни каких данных о программе (переменных и участков програм­мы, в которых заключены основные алгоритмы).

4.4.3 Результаты дизассемблирования

Для дизассемблирования использовалась программа WinHexl2.3. В ре­зультате полученный размер текста программы обычных сортировок в ас­семблерном виде [32] составил несколько тысяч строк ассемблерного кода.

При проведении анализа ассемблерного кода запутанных и исходных программ получены следующие результаты:

увеличение количества строк в запутанных программах по срав­нению с исходными тексами в среднем на 15 091 строк;

увеличение количества переходов в среднем в 4 раза (использо­вание внутренних меток) и уменьшение длинны участков программы между метками и, как следствие, большое ветвление запутанной программы;



91 увеличение количества команд по работе с памятью и данными пересылок в среднем в 2 раза, в результате больше работы со стеком.

Проведение данного анализа показало, что при компиляции программ не весь «мертвый код» определяется компилятором, использование массивов приводит к увеличению операций при работе с памятью. Использование большого числа операций и использование лишних сравнений приводит к большому ветвлению программы. В результате, даже при удачной декомпи-ляции, в тексте программы сохраняется «мертвый код», лишние сравнения и дополнительные переходы. Следовательно, декомпиляция и анализ получен­ных результатов не эффективны и очень трудоемки.

4.5 Определение размера требуемых ресурсов вычислительной системы

Критериями при выполнении численных экспериментов для сравнения и анализа запутывающих преобразований были взяты: среднее время обра­ботки и среднее количество операций, выполняемых в программе, количест­во элементов для сортировки менялось в заданном интервале, массив элемен­тов заполнялся случайными числами [9]. Запутанные программы тестирова­лись на ПК с характеристиками: процессор Intel Pentium М/ Celeron М 1,3 ГГц, оперативная память 256 МБ.

Для программ были применены все преобразования, описанные выше (добавление «мертвого кода» в программу путем внесения 100 переприсваи­ваний, добавление 15 меток и т.д.).

Количество элементов для метода «пузырька» изменялось в интервале от 2 500 - 25 000. При этом время выполнения исходной программы - от 0,05 до 9,12 сек. Количество операций в зависимости от числа использованных элементов лежит в интервале от 60 * 106- 1 523* 106.

В результате преобразований при том же диапазоне изменения количе­ства элементов, были получены следующие результаты:

-       время выполнения изменялось в пределах 0,16 - 14,23 сек;



92 -       количество операций изменялось в пределах 60 * 106 - 3 460* 106. Результаты сравнения исходной программы и измененной преобразова­ниями по этим критериям представлены на рис 4.5 и в таблице 4.1.

Таблица 4.1 - Сравнительные данные для программы сортировки мето­дом «пузырька»

 

Кол-во

элемен­тов

Время вы­полнения исходной

программы, сек.

N\, число

операций

исходной

программы,

*106

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

N2, число

операций

запутанной

программы,

*106

Отноше­ние

N2IN\

2500

0,05

60

0,16

60

1

5000

0,32

120

0,54

130

0,923077

7500

0,82

243

1,2

270

1,111111

10000

1,48

342

2,25

483

1,412281

12500

2,25

468

3,4

758

1,619658

15000

3,29

622

5

1096

1,762058

17500

4,45

807

6,86

1496

1,853779

20100

5,82

1015

8,95

2030

2

22500

7,41

1255

11,42

2640

2,103586

25000

9,12

1523

14,23

3460

2,271832



о              о              о              о

о              о              о              о

О              Ю              О              1Л

ю              г-»              о              см

см    m см    см

*


ф о

к

5 X

ф

I с; о

с

А СО

К

ф О.

ш


оооооооооо оооооооооо

ЮОЮОЮОЮт-ЮО

смтг-осмюг^осмю

т-              т-        т-              т-              CM              CN              СМ

Количество элементов


4000


Количество элементов



 



• исходное


измененое


• исходное


измененое



Рисунок 4.5 -Зависимость критериев анализа от количества элементов для сортировки для метода «пузырька»



93 Отношение количества операций преобразованной программы к исход­ной приведено на рис.4.6.

2500       5000       7500      10000     12500     15000     17500     20100     22500     25000

Количество элементов

Рисунок 4.6 - Отношение количества операций для метода «пузырька»

Количество элементов для метода «выборки» изменялось в интервале от 2 500 - 30 000. При этом время выполнения исходной программы - от 0,05 до 4,2 сек. Количество операций в зависимости от числа использованных эле­ментов лежит в интервале от 9 * 106- 1 350* 106.

В результате преобразований при том же диапазоне изменения количе­ства элементов, были получены следующие результаты:

-              время выполнения изменялось в диапазоне 0,109 - 9,4 сек;

-              количество операций в диапазоне 19 * 106 - 2 702* 106.
Результаты сравнения исходной программы и измененной преобразова­
ниями по этим критериям представлены на рис 4.7 и в таблице 4.2.



94 Таблица 4.2 - Сравнительные данные для программы сортировки мето­дом «выборки»

 

Кол-во элементов

Время вы­полнения исходной

программы, сек.

Ni, число

операций

исходной

программы,

*106

Время вы­полнения запутанной программы,

сек.

Л^2, число

операций

запутанной

программы,

*106

Отношение

N2INX

2500

0,05

9

0,109

19

2,111111

5000

0,109

37

0,219

75

2,027027

7500

0,27

84

0,604

169

2,011905

10000

0,49

150

1,04

300

2

12500

0,715

234

1,65

469

2,004274

15000

1,04

337

2,36

676

2,005935

17500

1,428

459

3,24

920

2,004357

20000

1,86

600

4,17

1200

2

22500

2,362

760

5,32

1520

2

25000

2,91

938

6,53

1877

2,001066

27500

3,51

1135

7,91

2271

2,000881

30000

4,2

1350

9,4

2702

2,001481



I

і

m

0)

Q. СО


f  3000

о

L- 2500



 



Количество элементов


Количество операций



 



■ полученное


исходное


■полученное


исходное



Рисунок 4.7 -Зависимость критериев анализа от количества элементов для

сортировки для метода «выборки»



95 Отношение количества операций преобразованной программы к ис­ходной приведено на рис.4.8.

 

2,1 •

 

 

 

 

 

-I-::..

2,08 J

 

 

 

 

 

 

g  2,06 -І  2,04 J о  2,02

—_,               r_^ —•             

              •             

              •—

 

 

'\

О       2

1,98

 

 

—•             

              •             

 

 

1,96

 

 

 

 

 

 

1.94 J

              1—              1              1              1             

              1             

              1              1             

              f—

              1             

              1             

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