Методы защиты в процессорах семейства Х86, страница 2

                          3. Защита по привилегиям.

Сутью защиты по привилегиям является то, что в процессе работы процессор постоянно контролирует, достаточно ли привилегированна текущая программа для того, чтобы:

·  выполнять некоторые привилегированные команды;

·  обращаться к данным других программ и к общим данным;

·  передавать управление программам типа FAR, т.е. программам, находящихся в других сегментах.

При этом под привилегиями понимаются права или возможности, которые обычно не разрешаются.

3.1   Защита по привилегиям сегментов.

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

В основе защиты по привилегиям сегментов лежит принцип иерархической структуры привилегий. Иерархическая структура  дает возможность защитить высокопривилегированные сегменты от сегментов менее привилегированных. Эта структура в процессорах семейства Х86 включает в себя четыре уровня привилегий, которые могут присваиваться используемым сегментам. Таким образом, все объекты программного обеспечения распределены по четырем областям, каждой из которых присваивается свой уровень привилегий. Обычно эти уровни изображают в виде кольцевой диаграммы, почему они получили название колец защиты (рис.VI.2). Уровень защиты обозначается цифрами 0, 1, 2, 3, причем наивысший уровень присвоен кольцу 0, а наиболее низкий – кольцу 3. Таким образом, наиболее важные программы – операционная система или ее ядро, обычно располагаются на нулевом уровне привилегий, в нулевом кольце, а такие, как пользовательские программы обычно имеют низший, третий уровень привилегий.

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

 

Рис.VI.2. Изображение уровней привилегий процессоров семейства Х86.

Заметим, что не все операционные системы поддерживают все четыре уровня привилегий, которые предусматривают процессоры семейства Х86 в защищенном режиме работы. Так, операционная система Unix поддерживает только два уровня привилегий: 0 и 3 (Супервизор/пользователь). Операционная система OS/2 поддерживает три уровня привилегий: 0 – ядро операционной системы; 2 – специальные процедуры для обращения к устройствам ввода/вывода; 3 – прикладные программы пользователя.

Операционная система Windows поддерживает все четыре уровня.

Если же процессор семейства Х86 используется для создания специализированного контроллера, в котором пользовательская программа не изменяется или изменяется очень редко, то достаточно задействовать один уровень привилегий – 0, разместить там и пользовательскую программу, разрешив ей, тем самым, доступ ко всем командам процессора, включая команды ввода/вывода и загрузки/сохранения системных регистров.

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

Таким образом, защита программного обеспечения, в основном программ операционной системы, при помощи разделения всего программного обеспечения компьютера по уровням привилегий (кольцам защиты), заключается в жестко определяемых правилах связи между программными объектами, расположенными на разных уровнях, т.е. в разных кольцах защиты. При этом наиболее привилегированные программные объекты расположены в кольце 0, а наименее привилегированные – в кольце 3.

Атрибуты привилегий, т.е. указатели уровня привилегий данного объекта присваивается таким объектам как задачи, дескрипторы и селекторы.

                                                                                             Таблица VI.1

Специализированный

контроллер

Супервизор/

пользователь

Операционная система с ядром

Уровень 0

Все программы

и данные

Операционная

система

Ядро операционной системы (процедуры инициализации, управление памятью, управление временем, управление задачами, процедуры защиты, процедуры тестирования)

Уровень 1

Специализированные процедуры обслуживания (СУБД, библиотеки стандартных программ, системные функции и т.п.)

Уровень 2

Другие программы системного обслуживания (процедуры ввода/вывода, трансляторы, редакторы связей и т.п.)

Уровень 3

Прикладные

пользовательские

программы

Прикладные пользовательские программы

Таким образом, в системе защиты определены:

·  Атрибут уровня привилегий текущей задачи (процесса) –

     CPL (Current Privilege Level).

·  Атрибут уровня привилегий дескриптора –

DPL (Descriptor Privilege Level).

·  Атрибут уровня привилегий селектора (или запроса) –

RPL (Request Privilege Level).

               Атрибут уровня привилегий задачи (CPL).