- •1. Основные понятия программно-аппаратной защиты информации......................... 8
- •2. Идентификация пользователей кс-субъектов доступа к данным ........................... 55
- •3. Средства и методы ограничения доступа к файлам ........................................................... 78
- •4. Аппаратно-программные средства криптографической защиты информации
- •5. Методы и средства ограничения доступа к компонентам эвм................................ 132
- •6. Защита программ от несанкционированного копирования...................................... 145
- •7. Управление криптографическими ключами .......................................................................... 162
- •7.6 Контрольные вопросы ..................................................................................................................................... 185
- •8. Защита программных средств от исследования ................................................................. 186
- •1. Основные понятия программно-аппаратной
- •1.1 Предмет и задачи программно-аппаратной защиты информации
- •1.2 Основные понятия
- •1.3 Уязвимость компьютерных систем.
- •1.4 Политика безопасности в компьютерных системах. Оценка
- •1.5 Механизмы защиты
- •1.6 Контрольные вопросы
- •2. Идентификация пользователей кс-субъектов
- •2.1. Основные понятия и концепции
- •2.2. Идентификация и аутентификация пользователя
- •2.3. Взаимная проверка подлинности пользователей
- •2.4. Протоколы идентификации с нулевой передачей знаний
- •2.5 Схема идентификации Гиллоу-Куискуотера
- •2.6 Контрольные вопросы
- •3. Средства и методы ограничения доступа к
- •3.1 Защита информации в кс от несанкционированного доступа
- •3.2. Система разграничения доступа к информации в кс
- •3.3. Концепция построения систем разграничения доступа
- •3.4. Организация доступа к ресурсам кс
- •3.5 Обеспечение целостности и доступности информации в кс
- •3.6 Контрольные вопросы
- •4. Аппаратно-программные средства
- •4.1 Полностью контролируемые компьютерные системы
- •4.2. Основные элементы и средства защиты от несанкционированного
- •2,5...8 Кбайт
- •1) Уровень приложений;
- •2) Уровень, обеспечивающий интерфейс приложений с драйвером;
- •3) Уровень ядра ос.
- •4.3. Системы защиты информации от несанкционированного доступа
- •4.4. Комплекс криптон-замок для ограничения доступа к компьютеру
- •4.5 Система защиты данных Crypton Sigma
- •4.6 Контрольные вопросы
- •5. Методы и средства ограничения доступа к
- •5.1 Защита информации в пэвм
- •5.2 Защита информации, обрабатываемой пэвм и лвс, от утечки по сети
- •5.3 Виды мероприятий по защите информации
- •5.4 Современные системы защиты пэвм от несанкционированного
- •5.5 Контрольные вопросы
- •6. Защита программ от
- •6.1 Методы, затрудняющие считывание скопированной информации
- •6.2 Методы, препятствующие использованию скопированной информации
- •6.3 Основные функции средств защиты от копирования
- •6.4 Основные методы защиты от копирования
- •6.5 Методы противодействия динамическим способам снятия защиты
- •6.6 Контрольные вопросы
- •7. Управление криптографическими ключами
- •7.1 Генерация ключей
- •7.2 Хранение ключей
- •7.3 Распределение ключей
- •7.4 Протокол аутентификации и распределения ключей для симметричных
- •7.5 Протокол для асимметричных криптосистем с использованием
- •7.6 Контрольные вопросы
- •8. Защита программных средств от
- •8.1 Классификация средств исследования программ
- •8.2 Методы защиты программ от исследования
- •8.3 Общая характеристика и классификация компьютерных вирусов
- •8.4 Общая характеристика средств нейтрализации компьютерных вирусов
- •8.5 Классификация методов защиты от компьютерных вирусов
- •8.6 Контрольные вопросы
7.6 Контрольные вопросы
1. Чем отличаются симметричные криптосистемы от асимметричных?
2. Какие основные функции включает управление ключами?
3. Генерация ключей для асимметричных криптосистем с открытыми
ключами много сложнее, потому что эти ключи должны обладать
определенными математическими свойствами, какими?
4. Перечислите носители ключевой информации.
5. Понятие концепции иерархии ключей.
6. Для чего нужен мастер-ключ?
7. Почему
процесс
распределения
ключей
самый
ответственный
в
управлении ключами, какие требования к нему предъявляются?
8. Какие
протоколы
аутентификации
и
распределения
ключей
для
симметричных криптосистем вы можете назвать?
9. Опишите суть алгоритма Диффи-Хеллмана, чем обусловлена его
безопасность?
185
8. Защита программных средств от
ИССЛЕДОВАНИЯ
Изучение логики работы программы может выполняться в одном из двух
режимов: статическом и динамическом. Сущность статического режима
заключается в изучении исходного текста программы. Для получения
листингов
исходного
текста
выполняемый
программный
модуль
дизассемблируют, то есть получают из программы на машинном языке
программу на языке Ассемблер.
Динамический режим изучения алгоритма программы предполагает
выполнение трассировки программы. Под трассировкой программы понимается
выполнение программы на ЭВМ с использованием специальных средств,
позволяющих выполнять программу в пошаговом режиме, получать доступ к
регистрам,
областям
памяти,
производить
остановку
программы
по
определенным адресам и т. д. В динамическом режиме изучение алгоритма
работы программы осуществляется либо в процессе трассировки, либо по
данным трассировки, которые записаны в запоминающем устройстве.
Средства противодействия дизассемблированию не могут защитить
программу от трассировки и наоборот: программы, защищенные только от
трассировки, могут быть дизассемблированы. Поэтому для защиты программ от
изучения
необходимо
иметь
средства
противодействия
как
дизассемблированию, так и трассировке.
Существует несколько методов противодействия дизассемблированию:
шифрование;
архивация:
использование самогенерирующих кодов;
«обман» дизассемблера.
Архивацию можно рассматривать как простейшее шифрование. Причем
архивация может быть объединена с шифрованием. Комбинация таких методов
186
позволяет
получать
надежно
закрытые
компактные
программы.
Зашифрованную
программу
невозможно
дизассемблировать
без
расшифрования.
Зашифрование
(расшифрование)
программ
может
осуществляться аппаратными средствами или отдельными программами. Такое
шифрование используется перед передачей программы по каналам связи или
при хранении ее на ВЗУ. Дизассемблирование программ в этом случае
возможно только при получении доступа к расшифрованной программе,
находящейся в ОП перед ее выполнением (если считается, что преодолеть
криптографическую защиту невозможно).
Другой подход к защите от дизассемблирования связан с совмещением
процесса
расшифрования
с
процессом
выполнения
программ.
Если
расшифрование
всей
программы
осуществляется
блоком,
получающим
управление первым, то такую программу расшифровать довольно просто.
Гораздо сложнее расшифровать и дизассемблировать программу, которая
поэтапно расшифровывает информацию, и этапы разнесены по ходу
выполнения программы. Задача становится еще более сложной, если процесс
расшифрования разнесен по тексту программы.
Сущность метода, основанного на использовании самогенерируемых
кодов, заключается в том, что исполняемые коды про граммы получаются
самой программой в процессе ее выполнения. Самогенерируемые коды
получаются в результате определенных действий над специально выбранным
массивом данных. В качестве исходных данных могут использоваться
исполняемые коды самой программы или специально подготовленный массив
данных. Данный метод показал свою высокую эффективность, но он сложен в
реализации.
Под «обманом» дизассемблера понимают такой стиль программирования,
который вызывает нарушение правильной работы стандартного дизассемблера
за счет нестандартных приемов использования отдельных команд, нарушения
общепринятых
соглашений.
«Обман»
дизассемблера
осуществляется
несколькими способами:
187
нестандартная структура программы;
скрытые переходы, вызовы процедур, возвраты из них и из
прерываний;
переходы и вызовы подпрограмм по динамически изменяемым
адресам;
модификация исполняемых кодов.
Для
дезориентации
дизассемблера
часто
используются
скрытые
переходы, вызовы и возвраты за счет применения нестандартных возможностей
команд.
Маскировка скрытых действий часто осуществляется с применением
стеков.
Трассировка программ обычно осуществляется с помощью программных
продуктов, называемых отладчиками. Основное назначение их - выявление
ошибок в программах. При анализе алгоритмов программ используются такие
возможности отладчиков как пошаговое (покомандное) выполнение программ,
возможность останова в контрольной точке.
Покомандное выполнение осуществляется процессором при установке
пошагового режима работы. Контрольной точкой называют любое место в
программе, на котором обычное выполнение программы приостанавливается, и
осуществляется переход в особый режим, например, в режим покомандного
выполнения.
Для
реализации
механизма
контрольной
точки
обычно
используется прерывание по соответствующей команде ЭВМ (для IВМ-
совместных ПЭВМ такой командой является команда INТ). В современных
процессорах можно использовать специальные регистры для установки
нескольких контрольных точек при выполнении определенных операций:
обращение к участку памяти, изменение участка памяти, выборка по
определенному адресу, обращение к определенному порту ввода-вывода и т. д.
При наличии современных средств отладки программ полностью
исключить возможность изучения алгоритма программы невозможно, но
188
существенно
затруднить
трассировку
возможно.
Основной
задачей
противодействия трассировке является увеличение числа и сложности ручных
операций, которые необходимо выполнить программисту-аналитику.
Для противодействия трассировке программы в ее состав вводятся
следующие механизмы:
изменение среды функционирования;
модификация кодов программы;
«случайные» переходы.
Под изменением среды функционирования понимается запрет или
переопределение прерываний (если это возможно), изменение режимов работы,
состояния управляющих регистров, триггеров и т. п. Такие изменения
вынуждают аналитика отслеживать изменения и вручную восстанавливать
среду функционирования.
Изменяющиеся коды программ, например, в процедурах приводят к тому,
что каждое выполнение процедуры выполняется по различным ветвям
алгоритма.
«Случайные» переходы выполняются за счет вычисления адресов
переходов. Исходными данными для этого служат характеристики среды
функционирования, контрольные суммы процедур (модифицируемых) и т. п.
Включение таких механизмов в текст программ существенно усложняет
изучение алгоритмов программ путем их трассировки.