Встроенные средства защиты. Принципы модульности и перемещаемости. Проверка привилегированности сегмента, страница 2

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

Уровни привилегий используются для защиты сегментов ОС и сегментов отдельных задач от несанкционированного доступа со стороны других пользовательских задач.

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

Тип сегмента  помогает процессору проверять соответствие сегмента исполняемой команде. В частности, в сегмент кода нельзя записывать, а с сегментом таблицы LDT  и сегментом TSS нельзя явно производить операции считывания, записи и выполнения. 

Права,  которыми  может быть помечен  дескриптор, ограничивают множество операций, которое можно производить с его сегментом. Например, исполняемый сегмент кода дополнительно может быть отмечен как  читаемый, а доступный для чтения сегмент данных  как  сегмент с разрешенной записью.

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

Рассмотрим отдельные аспекты защиты подробнее.

1. Проверка привилегированности сегмента назначения при межсегментных переходах.

В защищенном режиме для индивидуальной защиты сегментов используют уровни привилегий.

Привилегии - это свойство, которое определяет, какие программы можно выполнять и к каким данным возможен доступ в каждый конкретный момент времени. Безопасность системы поддерживается на уровне целостности информации. Привилегии  и защита стали необходимы программистам в условиях множественного использования оборудования. Концепция привилегий является центральной для нескольких аспектов защиты. В приложении к процедурам привилегии являются степенью доверия данной процедуре, при которой не делаются ошибки, которые могут повлиять на другие процедуры и данные. В приложении к данным привилегии являются той степенью защиты, которой следует обладать структуре данных, чтобы не пострадать от процедуры с меньшей степенью доверия. Таким образом, уровень привилегий программы определяет конкретное подмножество сегментов адресного пространства, к которому программа может обращаться. Попытка задачи использовать сегмент с более высоким уровнем привилегий приводит к особому случаю защиты.

Привилегии устанавливаются программами операционной системы в байте доступа дескриптора сегмента при заполнении дескрипторных таблиц. В защищенном режиме процессора установлены четыре уровня привилегий: 0, 1, 2  и 3 (0 - самый привилегированный). Уровни привилегий удобно интерпретировать в виде колец защиты. Чем выше уровень привилегий, тем более привилегированна программа и тем защищенные данные.

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