Автор: Пользователь скрыл имя, 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
Согласно рассмотренной в разделе 4.3. методики оценки эффективности защиты, выражение для расчета вероятности того, что программа не будет «взломана» в заданный момент времени, имеет следующий вид:
р(0 = А(^^)Р2^^2) = (1-^0АГ(О(1-^^ехрфг(')
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 |
Информация о работе Метод защиты программных средств на основе запутывающих преобразований