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