Иллюстрированный самоучитель по программированию систем защиты

Сравнительный анализ способов реализации защиты

В табл. 11 дается сравнительный анализ реализаций средств защиты относительно следующих факторов:

Объем контролируемых данных.
Этот фактор определяет, какие данные проходят через средство защиты, и, следовательно, могут им контролироваться и обрабатываться.

Сложность реализации.
Определяет сложность реализации средства защиты, как с точки зрения ее недокументированности, так и сложности отладки. Этот фактор оценивается по 3-х бальной шкале: высокая, средняя, низкая. Низкая сложность означает, что при разработке средства защиты используются хорошо документированные интерфейсы и доступные средства отладки. Средняя – означает, что используются документированные интерфейсы, но отладка средства защиты уже не столь проста, в связи с тем, что данное средство исполняется в режиме ядра, а, следовательно, большинство ошибок в нем приводят к падению ОС, и, кроме того, при отладке приходится иметь дело с ассемблерным кодом. Высокая сложность означает, что к проблемам с отладкой прибавляется еще частичное или полное отсутствие документации для разработки средства защиты.

Возможность встраивания защиты.
Этот фактор определяет, предоставляет ли операционная система возможность встраивания средства защиты и расширения своей функциональности на данном уровне.

Прозрачность защиты.
Означает, должен ли пользователь предпринять какие-либо действия для того, чтобы защитить свои данные с помощью средства защиты.

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

Таблица 11. Сравнительный анализ реализаций средств защиты.

Реализация защиты на уровне: Объем контролируемых данных Сложность реализации Возможность встраивания защиты Прозрачность защиты Возможности, предоставляемые ОС
Приложения Только данные самого приложения Низкая Да   Минимальные
Собственной DLL Данные приложений, использующих эту DLL Низкая Да   Минимальные
Системной DLL Данные приложений, использующих сис темную DLL Высокая Нет + Зависит от способа реализации
Сетевого сервиса Зависит от сетевого сервиса Высокая Нет + Зависит от способа реализации
"Родного" API Данные всех приложений Высокая Нет + Максимальные
Драйвера файловой системы Данные приложений, использующих соответствующее сетевое API Высокая Да + Максимальные
Транспортного драйвера Данные приложений, использующих этот транспорт + приложений, взаимодействующих с др. транспорта напрямую Высокая Да + Максимальные
Драйвера Ndis.sys Данные всех приложений Высокая Нет + Максимальные
Промежуточного драйвера Данные приложений, использующих транспорты, привязанные снизу к этому промежуточному драйверу + приложений, взаимодействующих с промежуточным драйвером напрямую Средняя Да + Максимальные
Драйвера сетевого устройства Данные всех приложений Средняя Да + Максимальные

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

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

Следовательно, относительно этого фактора логично оценивать средства защиты по 2-х бальной системе: если средство защиты реализуется как компонент уровня ядра, то ему будут предоставлены максимальные возможности со стороны ОС, если средство защиты реализуется как компонент уровня пользователя, то – минимальные.

Если для реализации защиты на уровне системной DLL или сетевого сервиса был разработан компонент, исполняющийся в режиме ядра, то это средство защиты также может использовать максимальные возможности, предоставляемые ОС. Для реализации защиты на уровне "родного" API в любом случае должен использоваться компонент уровня ядра.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.