Обеспечивается только при CR0.PE =1(защищенный режим). Защита может осуществляться на уровне страниц и на уровне сегментов.
Защита на уровне сегментов и на уровне страниц обеспечивается либо по атрибутам дескриптора сегмента, либо по атрибутам строки таблицы страниц. При защите на уровне сегментов влияет соотношение уровней привилегий:
RPL – запрашиваемый уровень (при помещении селектора в сегментный регистр);
DPL – уровень привилегий дескриптора, фиксируется при первом обращении к данным дескриптора и является минимальным уровнем, при котором данный сегмент доступен.
CPL – текущий уровень привилегий, который соответствует уровню кодового сегмента текущей программы.
Виды защиты на уровне сегментов:
1. Контроль типа не зависит от уровня привилегий, определяется дескриптором
2. Контроль границ
3. Ограничение адресной области памяти
4. Ограничение точек входа в процедуру зависит от RPL, DPL, CPL
5. Ограничение набора команд
Контроль типа выполняется:
1.На этапе загрузки селектора в регистр сегмента (проверка типа сегмента, для которого осуществляется загрузка селектора)
2.На этапе обращения к сегменту.
Примеры: В CS может быть загружен только программный дескриптор; в DS не может быть загружен селектор дескриптора, который не доступен для чтения.
При обращении:
1. Нельзя записать в кодовый сегмент.
2. Нельзя записать в сегмент данных, если бит записи равен нулю.
3. Нельзя читать кодовый сегмент, если бит чтения равен нулю.
Контроль границ. Предотвращает выход за пределы сегмента.
Ограничение адресуемой области памяти. Доступ к памяти возможен при условии
{RPL, CPL} ≤ DPL (численно).
Ограничение точек входа в процедуру.
Если CPL = DPL, то возможен вход в процедуру по Call, Jump.
Если CPL ≥ DPL (численно), то возможен только доступ по Call через специальный дескриптор, называемый «вентиль вызова».
Ограничение набора команд. Все команды по уровню доступа на выполнение делятся на 3 группы:
1. Свободные команды (непривилегированные) – выполняются в любом режиме.
2. Привилегированные команды – выполняются на уровне ядра.
3. Чувствительные команды, зависят от уровня привилегий, но могут выполняться в любом режиме супервизора (от 0 до 2). В основном это команды ввода-вывода.
Виды защиты на уровне страниц:
1. Контроль типа.
2. Ограничение адресной области памяти.
На уровне страниц защита зависит только от битов режима U/S и доступа R/
Кольца защиты
Кольца привилегий архитектуры x86 в защищённом режиме
Кольца защиты— архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, т.н. "кольцо 0"), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно семейство микропроцессоров x86 обеспечивает четыре кольца защиты.
Архитектуре колец защиты обычно противопоставляют системы, основанные на мандатной адресации, обеспечивающей доступ к объекту по его описанию (англ. Capability-based security).