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