Аникин_Катасёв_Кривилёв_ПАЗИ_Конспекты_лекций_2008. Конспект лекций по дисциплине Программноаппаратная защита информации специальность 090104 Комплексная защита объектов информатизации
Скачать 1.34 Mb.
|
Аппаратное обеспечение средств защитыПод аппаратным обеспечение средств защиты ОС понимается совокупность средств и методов, используемых для решения следующих задач: Управление оперативной и виртуальной памятью компьютера. Распределение процессорного времени между задачами в многозадачной ОС. Синхронизация выполнения параллельных задач в многозадачной ОС. Обеспечение корректности совместного доступа задач к ресурсам ОС. Исключение тупиковых ситуаций в процессе совместного доступа задач к ресурсам ОС. Большая часть из этих задач в значительной степени решаются с помощью аппаратно-реализованных функций процессоров и других узлов компьютера. Управление оперативной памятьюОсновная угроза оперативной памяти заключается в том, что один процесс, выполняющийся в многозадачной системе, несанкционированно получает доступ к оперативной памяти другого процесса, выполняющегося параллельно. Данная угроза представляет опасность не только с точки зрения обеспечения надежности ОС, но и с точки зрения обеспечения ее безопасности. Существуют 2 способа защиты ОЗУ процесса от несанкционированного доступа со стороны других процессов. 1. При каждом обращении процессора к ОЗУ осуществляется проверка корректности доступа. Теоретически, это позволяет создать абсолютно надежную защиту от НСД процесса к чужой памяти. Если выделить каждому процессу отдельную область памяти и блокировать все обращения за ее пределы, доступ процесса к чужой памяти становится невозможным. Однако, при этом становится практически невозможным и взаимодействие процессов. Это в значительной повышает требования к объему оперативной памяти и понижает эффективность функционирования процессов (нужно, чтобы они взаимодействовали). В применяемых на практике ОС, значительная часть ОЗУ, выделяемой процессу, является разделяемой, т.е. доступной другим процессам. Например, в Windows все копии выполняющейся программы имеют общий код. То есть различные процессы имеют доступ к одной и той же памяти. 2. Альтернативный подход к обеспечению защиты оперативной памяти заключается в выделении каждому процессу индивидуального адресного пространства, аппаратно изолированного от других процессов. При этом, по какому бы адресу ОЗУ не обратился процесс, он не сможет обратиться к памяти, выделенной другому процессу, поскольку одному и тому же адресу в разных адресных пространствах соответствуют разные физические адреса оперативной памяти. В данном случае процессор должен поддерживать виртуальный режим. Виртуальные адреса преобразуются в физические незаметно для процесса. Данный подход обеспечивает защиту от случайных обращений процессов к оперативной памяти других процессов, но если защита реализуется преднамеренно, то такого рода подход не всегда позволяет защитить память. В данном подходе значительная часть физической памяти является разделяемой, то есть проецируется сразу в несколько адресных пространств. При этом опять существует опасность преднамеренного несанкционированного воздействия одного процесса на другой. Кроме этого, для предотвращения несанкционированного использования отладчиков, обычно выдвигается требование, согласно которому политика безопасности, принятая в защищенной ОС не должна позволять запуск отладчиков. Управление планированием задач. Возможности атаки и защита. Планирование задач в многозадачной ОС заключается в распределении ОС времени ЦП между параллельно выполняемыми задачами. Неэффективное планирование задач может негативно сказаться как на эффективности и надежности функционирования ОС, так и повлиять на ее защищенность. Планирование задач может быть двух типов. Вытесняющее. Не вытесняющее. Во втором случае, выполнение задачи может быть прервано только по инициативе самой задачи. Задача, выполнив необходимые действия, должна самостоятельно прервать свое выполнение (Win 3.1). Здесь пока задача не завершила обработку сообщения, другие задачи не могут получить управления. Если задача зациклилась, то другие задачи никогда не получат управления – ОС зависает. Вывести из строя такую ОС можно просто написав пустой цикл. Обычно ОС с не вытесняющим планированием содержат спец. средства аварийного завершения задач в экстренных случаях, но эти средства никогда не работают достаточно надежно. При планировании задач с вытеснением, выполнение любой задачи может быть прервано в любой момент. Это реализуется, как правило, с помощью специальных функций процессора. На программном уровне это реализовано в OS/2 и данная реализация негативно сказывается на производительности ОС. Основная угроза подсистеме планирования задач заключается в том, что злоумышленник может приостановить или прекратить выполнение задач, критичных для обеспечения безопасности, операционной системы. Для нейтрализации этой угрозы операционная система должна обладать следующими свойствами: Поддерживается вытеснение задач. Создание высокоприоритетных задач доступно только привилегированным пользователям. Критичные для обеспечения безопасности системы задачи защищены от несанкционированного вмешательства в ход их выполнения (например, от несанкционированного снижения приоритета подсистем защиты). Фатальный сбой в процессе функционирования одной из задач, критичных для обеспечения безопасности, должен вызывать крах ОС. Обеспечение корректности совместного доступа к объектам В процессе функционирования многозадачной ОС часто возникает ситуация, когда две или более задач одновременно обращается к одному и тому же объекту ОС. Если при этом режим доступа хотя бы одной задачи допускает изменение данных объекта, не исключено, что обращения других задач к данному объекту будет выполнены некорректно. Например, две пишут враз, одна пишет - другая читает. В данном случае, если какая-то задача изменяет данные, то доступ к этим данным должен быть запрещен другим задачам. Единственное исключение – все задачи, изменяющие один и тот же объект открывают его в режиме, допускающем совместное изменение данных. Открывая объект таким образом, задача тем самым заявляет ОС, что она полностью берет на себя ответственность за все действия, связанные с обеспечением корректности совместного доступа к данным. Предотвращение тупиковых ситуаций Тупиковая ситуация может возникнуть тогда, когда несколько программ одновременно пытаются открыть несколько одних и тех же объектов в режиме монопольного доступа. Если одна программа открыла одну часть объектов, а другая – другую, то ни одна из программ сможет открыть остальные объекты до тех пор, пока другая программа их не закроет. Если функции закрытия объектов не предусмотрены ни в одной из программ, ситуация становится тупиковой – каждая программа ждет, пока другая закроет открытые ею объекты. Один из методов борьбы с тупиковыми ситуациями состоит в следующем: если программа для выполнения некоторой операции должна открыть в монопольном режиме несколько объектов ОС, но не смогла этого сделать, так как некоторые из этих объектов уже открыты в монопольном режиме другой программой, то она должна закрыть все уже открытые объекты, подождать некоторое время и повторить операцию сначала. Наилучшие результаты – если время ожидания случайно. Уровни привелигированности Для реализации защитных механизмов на Intel могут использоваться уровни привилегированности. Уровень привилегированности - это числовой идентификатор, принимающий значения от 0 до 3, который определяет возможности задачи выполнять команды процессора, модифицировать регистры и области ОЗУ и т.д. Чем меньше идентификатор уровня, тем более полный доступ имеет задача к аппаратным возможностям процессора. Множество задач, обладающих некоторым конкретным уровнем привилегированности- кольцо защиты. Например, если программа имеет уровень 3, то третье кольцо. Обычно код программы – в третьем кольце, а код ОС – в нулевом. Первое и второе – редко (OS/2). RISC – 2 кольца. Лекция № 17 Защищенные механизмы в NT Ядро и драйверы устройств в NT – в нулевом кольце, весь остальной код ОС и программы – в третьем. 1 и 2 - не используются. Планирование задач Каждый поток может находиться в одном из трех состояний – Выполняющемся. Ожидающем – ожидает сигнала от внешнего устройства. Прерванном – поток готов выполняться и ожидает своей очереди. Многозадачность – вытесняющая. Для вытеснения – аппаратное прерывание от таймера. Каждый поток имеет приоритет – от 1 до 31. Чем выше приоритет, тем больше шансы у процесса получить квант времени. Для присвоения потокам приоритетов в NT применяется двухступенчатая система – абсолютный приоритет потока вычисляется на основе Класса приоритета процесса. Относительного приоритета потока. Каждый процесс имеет базовый приоритет, определяемый классом приоритета процесса. Базовые приоритеты имеют следующие значения: Фоновый (idle): 4 Нормальный (normal): 9 если процесс обслуживает активное окно и 7 в противном случае. Высокий (high): 13. Реального времени (real-time): 24. Обычно хранители экрана – фоновый класс приоритета, прикладные программы – нормальный класс и системные процессы – высокий. Реальное время – редко. Относительные приоритеты могут быть следующими: Фоновый (idle): 16 если процесс имеет класс приоритета реального времени и 1 в противном случае. Низший (lowest): на 2 ниже базового приоритета процеса. Пониженный (below normal): на 1 ниже базового приоритета процесса. Нормальный (normal): совпадает с базовым приоритетом процесса. Повышенный: на 1 выше базового приоритета процесса. Высший: на 2 выше базового приоритета процесса. Критичный: 31, если базовый - приоритет реального времени или 16 в ином случае. В NT поддерживается временное повышение приоритета, для потоков, которые долгое время ожидают сигнала от медленнодействующих устройств (FD, Modem). Обеспечение корректности совместного доступа к объектам. В NT одновременный доступ нескольких процессов к одному объекту разрешается только в том случае, когда все процессы открывают объект для чтения. Исключение составляют только объекты типа файл, которые можно открывать в режиме совместной записи. В режиме совместной записи файл должны открывать все процессы. Каждый процесс при записи/чтении должен заблокировать соответствующий участок файла. Для обеспечения корректности совместного доступа к данным, не являющимся объектами ОС, в NT применяются мьютексы, критические секции и семафоры. Мьютексы Мьютекс представляет собой объект файловой системы, который может быть либо свободным, либо принадлежать одному из потоков ОС. Два потока не могут одновременно владеть одним и тем же мьютексом. NT поддерживает функции, которые позволяют создать мьютекс либо освободить его. Каждый поток, перед тем, как обратиться к совместно используемым данным, пытается завладеть мьютексом. Если мьютекс в настоящее время занят, поток ждет его освобождения. Если несколько запросов на захват - то в порядке очереди вне зависимости от приоритета. Мьютекссы могут эффективно использоваться для организации совместного доступа к оперативной памяти, разделяемым между несколькими процессами. Аудит Аудит - регистрация в специальном журнале безопасности потенциально опасных событий для ОС. Необходимость ведения данного журнала обусловлена следующими причинами: 1. Подсистема защиты ОС не обладая интеллектом, не способна отличить случайные ошибки пользователей от злонамеренных действий (неправильный ввод пароля - случайность или взлом). 2. Необходимо хранить предисторию. 3. Если произошла атака, то администратор должен выяснить, когда была начата атака и каким образом она осуществлялась. Требования к аудиту 1. Только ОС может добавлять записи в журнал безопасности ОС. 2. Ни один субъект доступа, в том числе и ОС не имеет возможности редактировать или удалять отдельные записи в журнале аудита. 3. Только пользователи-аудиторы, обладающие соответстующей привелегией, могут просматривать журнал аудита. 4. Только пользователи-аудиторы могут очищать журнал аудита. Запись об этом событии вносится в журнал. 5. При переполнении журнала аудита ОС аварийно завершает работу. После перезагрузки работать с ОС могут только аудиторы. Политика аудита - совокупность правил, то, какие события должны регистрироваться в журнале аудита. Для адекватной политики безопасности, в журнале аудита должны обязательно регестрироваться следующие события 1. Попытки входа-выхода пользователей из системы. 2. Попытки изменения списка пользователей. 3. Попытки изменения политики безопасности, в том числе, и политики аудита. Выбор остальных событий определяется администратором. В некотрых ОС реализована возможность оповещения аудиторов о наиболее важных событиях, которые произошли в системе. В ОС UNIX поддерживается регистракция следующих событий: 1. Загрузка-выгрузка системы. 2. Успешный вход и выход из системы. 3. Создание-уничтожение процесса. 4. Сделать объект доступным (открыть файл, сообщение, смонтировать файловую систему и т.д.). 5. Отобразить объект в субъект (выполнение программы). 6. Модификация объекта (запись в файл). 7. Сделать объект недоступным (закрыть файл, размонтировать файловую систему и т.д.). 8. Создание объекта (файла,...). 9. Удаление объекта. 10. Изменение разграничения доступа. 11. Отказ доступа. 12.Действия системных администраторов и операторов. 13. Процессы, которые пытаются превысить свои полномочия. 14. Отказы в рессурсах (отсутствие файла, переполнение памяти, и т.д.). 15. Посылка сигналов и сообщений процессам. 16. Модификация процесса. 17. События системы контроля. 18. События базы данных (изменение базы данных безопасности и ее целостности). 19. События подсистемы (использование защищенных подсистем). 20. Использование привилегий (контроль действий с использованием различных привилегий). Разграничение доступа в NT Операционная система NT поддерживает 22 метода доступа субъектов к объектам. Шесть из них представляют собой стандартные методы доступа и поддерживаются для объектов всех типов. Удаление объекта. Получение и изменение атрибутов защиты объекта Изменение владельца объекта. Получение и изменение параметров аудита в отношении объекта. Синхранизация – ожидание сообщения от объекта. Для каждого типа объекта поддерживается до 16 специфичных методов доступа. Следующие методы доступа в NT требуют наличия у субъектов доступа специальных превилегий. Создание нового сервиса. Блокирование списка сервисов. Запуск сервиса. Останов сервиса. Приостановка/возобновление сервиса. Назначение процессу маркера доступа. Получение или изменение параметров аудита в отношении объекта. Привилегии субъектов в NT. В NT каждый субъект доступа обладает некоторым набором привилегий. Привилегии представляют собой права на выполнение субъектом действий, касающихся системы в целом, а не отдельных ее объектов. Назначать привилегии субъектам доступа может только администратор. Существуют следующие привилегии: Привилегия завершать работу ОС и перезагружать компьютер. Привилегия устанавливать системное время. Привилегия анализировать производительность одного процесса. Привилегия анализировать производительность всей ОС. Привилегия создавать постоянные объекты в ОЗУ. Привилегия создавать резервные копии информации, хранящей на жестких дисках. Привилегия восстанавливать информацию из резервных копий. Привилегия назначать процессам и потокам высокие приоритеты. Привилегия изменять системные переменные среды. Привилегия отлаживать программы. Привилегия загружать и выгружать системные драйверы и сервисы. Привилегия аудита. Привилегия объявлять себя владельцем любого объекта. Привилегия добавлять записи в журнал аудита. Привилегия создавать маркеры доступа. Привилегия назначать процессам маркеры доступа. Привилегия выступать как часть ОС. Привилегия получать оповещения от файловых систем. Назначать привилегии нужно очень осмотрительно. Некоторые из перечисленных привилегий позволяют обойти подсистемы защиты. Привилегия создавать в оперативной памяти постоянные объекты позволяет пользователю отключать механизм автоматического освобождения оперативной памяти при завершении процесса. Привилегия создавать резервные копии информации и восстанавливать ее позволяет пользователю игнорировать разграничение доступа по чтению/записи и т.д. Привилегия назначения процессам высокого уровня приоритета позволяет ему завесить ОС, создав процесс с высоким приоритетом и введя его в вечный цикл. Пользователь, обладающий привилегией изменять системные переменные среды, может изменив значения переменных path и windir добиться того, чтобы поиск ОС исполняемых модулей начинался с его директории и поместить туда программную закладку. Привилегия отлаживать программы позволяет пользователю обращаться к любому процессу по любому методу доступа, что присваивает ему неограниченные полномочия. Привилегия загружать и выгружать драйверы и сервисы позволяет пользователю выполнять произвольный код от имени и с правами ОС. Пользователь может внедрить программную закладку под видом драйвера или сервиса. Так как драйверы могут игнорировать большинства защитных функций NT, то эта возможность дает неограниченные полномочия. Привилегия аудитора дает пользователю возможность маскировать свои несанкционированные действия. Привилегия выступать как часть ОС позволяет пользователю выполнять потенциально опасные воздействия, брать на себя функции ОС, связанные с идентификацией, аутентификацией и авторизацией пользователя. |