- •Основные понятия и определения информационной безопасности
- •Классификация методов защиты информации
- •Защита программного обеспечения основанная на идентификации аппаратно и программной среды
- •Криптографические методы защиты информации.
- •Ассиметричные криптосистемы
- •Сравнение симметричных и ассиметричных алгоритмов
- •Реализация алгоритмов шифрования
- •Основные типы криптоаналитических атак
- •Количественный подход к информационной безопасности
- •Электронная цифровая подпись
- •Этапы генерации эцп:
- •Организация защиты программных систем от исследования
- •Защита информации в компьютерных сетях
- •§ 1. Общие сведенья о компьютерных и вычислительных сетях
- •§ 2. Типовые уровни сетевой архитектуры
- •§ 3. Объекты защиты информации в компьютерной сети
- •Методы защиты информации в интернет
- •Частные виртуальные сети
- •Классификации vpn
Организация защиты программных систем от исследования
Простейший подход при организации защиты выглядит следующим образом.
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 можно оценить по формуле:
Если учесть тираж то: