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

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

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

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

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

Средства защиты уровня ядра могут использовать внутренние интерфейсы для взаимодействия с компонентами исполнительной системы. Модуль защиты, исполняющийся в режиме ядра, может повышать или понижать текущий IRQL процессора, маскируя тем самым прерывания с равными или меньшими IRQL.
Модуль защиты, исполняющийся в режиме пользователя, не может получить доступа к системным данным иначе, как, вызвав предоставляемые операционной системой функции, которые в свою очередь вызывают системные сервисы, осуществив предварительную проверку параметров вызова.
Следовательно, относительно этого фактора логично оценивать средства защиты по 2-х бальной системе: если средство защиты реализуется как компонент уровня ядра, то ему будут предоставлены максимальные возможности со стороны ОС, если средство защиты реализуется как компонент уровня пользователя, то - минимальные.
Если для реализации защиты на уровне системной DLL или сетевого сервиса был разработан компонент, исполняющийся в режиме ядра, то это средство защиты также может использовать максимальные возможности, предоставляемые ОС. Для реализации защиты на уровне «родного» API в любом случае должен использоваться компонент уровня ядра.