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

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


72

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

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

-         Использование меток представляет большую трудность для анализа программы.

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

-         В результате применения метода, даже для относительно простых ал­горитмов сортировок, увеличивается объем кода программы в 1.5 раза, следовательно, увеличивается количество операндов и машинных ко­манд, что делает сложным ручной анализ программы.

-         В результате преобразования графа потока управления появляются до­полнительные переходы, что приводит к запутанности графа. Графиче­ское отображение графа управления, трассировка переходов програм­мы делает такой анализ сложным как в ручном, так и в автоматическом режиме.

3.7 Выводы

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

- При применении предложенного метода происходит разветвление дерева графа потока управления, изменяются его свойства. На примере применения метода для программы сортировки методом «Шелла» граф потока управления исходной программы имеет свойство конечного графа 13-го порядка размерностью 15, а граф



73 запутанного кода программы имеет свойство конечного графа 32-го порядка размерностью 43.

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

Метод предполагает создание массива переменных, который явля­ется динамической структурой, следовательно, устойчив к извест­ным методам статического анализа программ. Метод устойчив к ручному анализу, т.к. такой анализ предполага­ет точное определение назначения каждой команды и операнда в модуле программы. В общем случае в запутанной программе от­сутствует модульность и увеличивается объем машинных команд и операндов.



74

Глава 4. Решение практических задач защиты программных средств

4.1              Анализ   характеристик   методов   защиты   программных
средств

Выделим основные характеристики для методов защиты ПС. В случае защиты ПС вне доверенной вычислительной среды с помощью запутываю­щих преобразований основными характеристиками являются эффективность защиты (эффективность запутывающих преобразований) и размер требуемых ресурсов вычислительной системы (ВС).

Размер требуемых ресурсов ВС на защиту выражаются увеличением объема текста ПС и времени выполнения ПС. Размер таких ресурсов может быть определен с помощью экспериментов с ПС или их моделями.

Эффективность защиты формально определить сложнее. Основная про­блема при оценке эффективности защиты состоит в неопределенности дейст­вий со стороны нарушителя по преодолению защиты - это связано с недоста­точной формализацией методов защиты, применяемых на практике [29]. Формальный характер предложенного в настоящей работе метода позволяет утверждать, что одним из определяющих критериев эффективности защиты, наряду с другими критериями, предложенными в разных методиках, будет уровень запутанности программы. Для качественной оценки предложенного метода будут рассмотрена методика оценки эффективности защиты [48].

4.2              Выбор объектов тестирования

В качестве объекта для тестирования выбраны стандартные программы сортировки методом «вставки», «пузырька», «выборки» и «Шелла». Данный выбор сделан по той причине, что эти программы в своей реализации исполь­зуют зависимость по данным и возможно использование массивов сортиров­ки размерностью 10б элементов, для анализа количественной оценки тре­буемых ресурсов ВС.



75 Тестирование проводилось на операционной системе Windows ХР Ноте Edition.

Для тестирования были выбраны следующие средства анализа, приме­няемые при анализе защиты ПС:

-         средства динамического анализа - отладчики WinDbg для Win­dows ХР;

-         средства статического анализа - дизассемблер IDA v 4.20, дизас­семблер WinHexl2.3;

-              ручной анализ, основанный на анализе потока управления.
Выбор средств анализа для тестирования осуществлялся по принципу

обеспечения полного тестирования разработанных способов противодейст­вия.

На тестировании вынесены следующие способы противодействия:

-         противодействие методам динамического анализа;

-         противодействие методам статического анализа;

-         противодействие ручному анализу.

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

В процессе тестирования не выявлено ошибок функционирования объ­ектов защиты, а так же не было выявлено конфликтов с операционной систе­мой и поддерживаемым программным обеспечением.

4.3 Методика оценки эффективности защиты

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

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



76 В ряде случаев их можно интерпретировать случайными числами, кото­рые оцениваются по результатам тестирования (статистическая оценка), либо экспертными оценками. При этом методика, которая рассматривает два спо­соба «снятия» защиты - автоматическое и ручное, использует следующие понятия:

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

множество средств исследования программного кода, облегчаю­щих анализ защищенной программы;

вероятность наличия у пользователя средства на момент времени t множества средств автоматического снятия защиты;

вероятность наличия у пользователя средства на момент времени t множества средств, облегчающих анализ;

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

вероятность того, что пользователь опробует имеющиеся у него средства для исследования защитного механизма защищенной про­граммы;

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

популярность метода защиты (тираж) на момент времени t. Вероятность того, что защита не будет снята с одной копии защищенной программы ни одним из средств автоматического снятия на момент времени /, будет определяться по формуле:

л(0 = 1-/1(0+1(0-0-А).              (4Л)

где rx{t) - вероятность наличия у пользователя средства на момент вре­мени t из множества средств снятия защиты;



77 ly - вероятность, что пользователь опробует имеющиеся у него средства

для автоматического снятия защиты с защищаемой программы.

С учетом количества выпущенных копий защищенной программы -m\{t) соответственно:

px{t,m,) = {\-rx(t)-LxT(t)              (4.2)

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

Для получения численной экспертной оценки надежности защитного механизма автор методики вводит качественные понятия «Уровень Понима­ния Программного Продукта (УППП)» исследователем - U.

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

где L2  - вероятность, что пользователь опробует имеющиеся у него

средства для исследования ПСЗИ защищенной программы; U{t) - УППП на момент времени t;

N - объем защищенной программы в машинных командах. С учетом количества выпущенных копий ПС - rriiit) копий, соответст­венно:



78

ft(^2) = (i-^r<",              (4'4)

Понимание экспертом каждой анализируемой команды или операнда программного продукта во многом определяется тем, как он смог освоить уже исследованную часть модуля (если эксперт продолжает исследовать про­грамму в течении времени dt, то его уровень понимания изменится на dU ), т.е. можно представить в виде:

U(t)dt = kdU,              (4.5)

Отсюда следует:

kU(t)-U(t) = 0,              (4.6)

1              (4.7)

U(t) = NQek,

где N0 - значение начального УППП N0<N;

к - коэффициент сложности анализа.

При этом U(t) имеет смысл только тогда, когда его значение меньше или равно JV, т.е.

0<U(t)<N

Коэффициент сложности анализа к определяется наличием у исследова­теля возможности использовать различные средства анализа, талантом ис­следователя.

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



79 Для вычисления цикломатического числа Маккейба применяется фор­мула:

k = e-v + 2ju,              (4.8)

где

е - число дуг ориентированного графа,

v - число вершин,

ju - число компонент связанности графа.

Таким образом, формула (4.4) может быть представлена в виде:

Nn  1              (4.9)

p2(t,m2) = (\-L2-^-ek)m2(t),(0<p2<\),

Ценность выражения (4.9) в том, что в нем взаимоувязаны важнейшие для практической деятельности характеристики:

-         уровень подготовки исследователя ( N0);

-         объем исследуемого программного продукта (N);

-         сложности исследуемого продукта ( к).

Таким образом, при длительном исследовании программного продукта (/—»оо) эксперт рано или поздно доберется до всех слабостей программы. Единственный путь помешать ему заключается в создании механизмов, по­зволяющих рассматривать коэффициент сложности анализа к не как кон­станту, а как зависящую от времени переменную, или увеличивать до беско­нечности объем программы N.

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



80 случае проведение анализа защиты станет невыгодным с экономической точ­ки зрения.

Таким образом, окончательная формула выглядит следующим образом:
P(t) = P,(t,ml)-P2(t,ml),              (4.10)

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

Построение моделей весьма затруднительно, так как параметры, связан­ные с использованием средств анализа, зависят от трудноформализуемых факторов (квалификация исследователя, наличие у него необходимых средств анализа).

4.3.1 Оценка эффективности программных средств

По вышеприведенной методике проведем оценку надежности защиты ПС, предложенного в данной работе метода.

Для оценки эффективности выполним следующие расчеты:

-              рассчитаем вероятность «взлома» для одной копии запутанной
программы (Рг2). Расчет выполним для временного интервала,

значения которого, получены путем анализа экспертных данных для программ защиты логики работы;

-              полученные при расчетах результаты отобразим на графике, для
сравнения вероятности «взлома» программы исходного (Рг{) и за­
путанного текста. По результатам выполненного отображения
можно судить об эффективности метода защиты ПС.

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