Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационная безопасность1.docx
Скачиваний:
6
Добавлен:
24.09.2019
Размер:
78.16 Кб
Скачать

Организация защиты программных систем от исследования

Простейший подход при организации защиты выглядит следующим образом.

if идентификатор < > значение

then Ошибки (Работа запрещена)

else работа разрешена

Если в программном коде (на асемблере), найти это место, изменить знак <> на = то вся конструкция работает с точностью, наоборот.

На ассемблере эта конструкция выглядит следующим образом:

Je (jump if equal)

Jne (jump if not equal)

В данном случае необходимо сделать так, что бы конструкцию выше, вообще нельзя было бы найти.

Для организации защиты программных систем от исследования применяют следующие подходы:

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

2) Усложнение алгоритма исполняемого кода программы, и внесения в него неопределенности.

Первый подход. Он включает в себя следующие направления:

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

Недостатки: может случиться, что программа переставить функционировать.

б) Изменение начала (шапки) защищаемой программы, таким образом , что бы дизассемблирования, не приводила к корректным результатам.

Второй подход. Для реализации второго подхода, существуют следующие направления:

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

б) Включение в тело программы, переходов по динамически изменяемым адресам и прерыванием.

в) Внесение неопределенности в тело программы (изощренное программирование)

Для реализации изощренного программирования существуют разные методы:

  • Динамическая перестройка

  • Выполнение отдельных модулей всей программной системой

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

……………………

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

- Генерация отдельных команд использую принцип взаимозаменяемости команд микропроцесса. Существует целый набор взаимозаменяемых команд:

CALL->PUSH; JMP

MOV->PUSH; POP

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

Для организации оценки надежности защиты алгоритма от исследования, введем следующие обозначение:

A1

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

A2

Множество специальных средств, облегчающих пользователю анализ защищаемой программы и системы защиты.

r1(t)

Вероятность наличия у злоумышленника средств из множества A1 на момент времени t.

r2(t)

Вероятность наличия у злоумышленника средств из множества A2 на момент времени t.

L1

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

L2

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

L

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

m1(t)

Популярность (тираж) защищаемой программой на момент времени t.

m2(t)

Популярность (тираж) самой системы защиты на момент времени t.

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

Если учесть тираж то: