Смекни!
smekni.com

Программно-аппаратная защита информации (стр. 10 из 12)

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

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

Управление планированием задач. Возможности атаки и защита.

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

Планирование задач может быть двух типов.

1. Вытесняющее.

2. Не вытесняющее.

Во втором случае, выполнение задачи может быть прервано только по инициативе самой задачи. Задача, выполнив необходимые действия, должна самостоятельно прервать свое выполнение (Win 3.1). Здесь пока задача не завершила обработку сообщения, другие задачи не могут получить управления. Если задача зациклилась, то другие задачи никогда не получат управления – ОС зависает. Вывести из строя такую ОС можно просто написав пустой цикл. Обычно ОС с не вытесняющим планированием содержат спец. средства аварийного завершения задач в экстренных случаях, но эти средства никогда не работают достаточно надежно.

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

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

1. Поддерживается вытеснение задач.

2. Создание высокоприоритетных задач доступно только привилегированным пользователям.

3. Критичные для обеспечения безопасности системы задачи защищены от несанкционированного вмешательства в ход их выполнения (например, от несанкционированного снижения приоритета подсистем защиты).

4. Фатальный сбой в процессе функционирования одной из задач, критичных для обеспечения безопасности, должен вызывать крах ОС.

Обеспечение корректности совместного доступа к объектам

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

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

Предотвращение тупиковых ситуаций

Тупиковая ситуация может возникнуть тогда, когда несколько программ одновременно пытаются открыть несколько одних и тех же объектов в режиме монопольного доступа. Если одна программа открыла одну часть объектов, а другая – другую, то ни одна из программ сможет открыть остальные объекты до тех пор, пока другая программа их не закроет. Если функции закрытия объектов не предусмотрены ни в одной из программ, ситуация становится тупиковой – каждая программа ждет, пока другая закроет открытые ею объекты.

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

Уровни привелигированности

Для реализации защитных механизмов на Intel могут использоваться уровни привилегированности. Уровень привилегированности - это числовой идентификатор, принимающий значения от 0 до 3, который определяет возможности задачи выполнять команды процессора, модифицировать регистры и области ОЗУ и т.д. Чем меньше идентификатор уровня, тем более полный доступ имеет задача к аппаратным возможностям процессора. Множество задач, обладающих некоторым конкретным уровнем привилегированности- кольцо защиты. Например, если программа имеет уровень 3, то третье кольцо. Обычно код программы – в третьем кольце, а код ОС – в нулевом. Первое и второе – редко (OS/2). RISC – 2 кольца.

Лекция № 17

Защищенные механизмы в NT

Ядро и драйверы устройств в NT – в нулевом кольце, весь остальной код ОС и программы – в третьем. 1 и 2 - не используются.

Планирование задач

Каждый поток может находиться в одном из трех состояний –

1. Выполняющемся.

2. Ожидающем – ожидает сигнала от внешнего устройства.

3. Прерванном – поток готов выполняться и ожидает своей очереди.

Многозадачность – вытесняющая. Для вытеснения – аппаратное прерывание от таймера.

Каждый поток имеет приоритет – от 1 до 31. Чем выше приоритет, тем больше шансы у процесса получить квант времени. Для присвоения потокам приоритетов в NT применяется двухступенчатая система – абсолютный приоритет потока вычисляется на основе

1. Класса приоритета процесса.

2. Относительного приоритета потока.

Каждый процесс имеет базовый приоритет, определяемый классом приоритета процесса. Базовые приоритеты имеют следующие значения:

· Фоновый (idle): 4

· Нормальный (normal): 9 если процесс обслуживает активное окно и 7 в противном случае.

· Высокий (high): 13.

· Реального времени (real-time): 24.

Обычно хранители экрана – фоновый класс приоритета, прикладные программы – нормальный класс и системные процессы – высокий. Реальное время – редко.

Относительные приоритеты могут быть следующими:

· Фоновый (idle): 16 если процесс имеет класс приоритета реального времени и 1 в противном случае.

· Низший (lowest): на 2 ниже базового приоритета процеса.

· Пониженный (belownormal): на 1 ниже базового приоритета процесса.

· Нормальный (normal): совпадает с базовым приоритетом процесса.

· Повышенный: на 1 выше базового приоритета процесса.

· Высший: на 2 выше базового приоритета процесса.

· Критичный: 31, если базовый - приоритет реального времени или 16 в ином случае.

В NT поддерживается временное повышение приоритета, для потоков, которые долгое время ожидают сигнала от медленнодействующих устройств (FD, Modem).

Обеспечение корректности совместного доступа к объектам.

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

Исключение составляют только объекты типа файл, которые можно открывать в режиме совместной записи. В режиме совместной записи файл должны открывать все процессы. Каждый процесс при записи/чтении должен заблокировать соответствующий участок файла.

Для обеспечения корректности совместного доступа к данным, не являющимся объектами ОС, в NT применяются мьютексы, критические секции и семафоры.

Мьютексы

Мьютекс представляет собой объект файловой системы, который может быть либо свободным, либо принадлежать одному из потоков ОС. Два потока не могут одновременно владеть одним и тем же мьютексом. NT поддерживает функции, которые позволяют создать мьютекс либо освободить его. Каждый поток, перед тем, как обратиться к совместно используемым данным, пытается завладеть мьютексом. Если мьютекс в настоящее время занят, поток ждет его освобождения. Если несколько запросов на захват - то в порядке очереди вне зависимости от приоритета. Мьютекссы могут эффективно использоваться для организации совместного доступа к оперативной памяти, разделяемым между несколькими процессами.

Аудит

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

1. Подсистема защиты ОС не обладая интеллектом, не способна отличить случайные ошибки пользователей от злонамеренных действий (неправильный ввод пароля - случайность или взлом).