SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
  Стандартная версия

Безопасность как базовая характеристика микроядра QNX Neutrino

Юджин Бэсик (Eugen Bacic)
Директор Emerging Technology
Bell Security Solutions Inc.

Подготовлено компанией Cinnabar Networks

Перевод компании SWD Software Ltd.

1. ВВЕДЕНИЕ

Безопасные системы. Эта фраза навевает мысль о системе, которая настолько закрыта, что ее трудно использовать или пользователи просто избегают применять ее. Безопасность, фактически, стала синонимом “недружелюбия к пользователю”. Однако дело обстоит по-другому, когда понятие безопасности должным образом осмыслено и правильно реализовано.

В данном документе показано, что такое безопасная система и что от нее ожидают, а также необходимые действия для ее реализации. Также будет продемонстрировано, как операционная система реального времени (ОСРВ) QNX® Neutrino® отвечает, с одной стороны, требованиям безопасности, а с другой стороны — ожиданиям пользователей. Данная тема будет рассмотрена с точки зрения специалистов в области безопасности, а также исходя из той концепции безопасности системы, которая была разработана на основе многолетнего практического опыта и путем анализа всех типов систем, больших и малых.

2. ОСНОВЫ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ

Основы компьютерной безопасности можно отнести к периоду Project MAC и Multic, первоначальных разработок в сфере безопасности, выполненных под руководством Роджера Шелла (Roger Schell) из Национального компьютерного центра безопасности (NCSC). Разработка Multic привела непосредственно к созданию "Оранжевой книги" (Orange Book)1 и формулировке многих основных принципов компьютерной безопасности.

Главными среди этих принципов были понятия, изложенные Джеймсом Андерсоном (James Anderson) в 1972 году, а также Джеромом Зальцером (Jerome Saltzer) и Майклом Шредером (Michael Schroeder) в 1974 году. Эти принципы все еще служат основой для хорошей компьютерной безопасности и образуют основу различных оценочных критериев, начиная с "Оранжевой книги", ITSEC2 и CTCPEC3 и заканчивая существующими сегодня "Общими критериями" (Common Criteria).

2.1. ПРИНЦИПЫ МОНИТОРА ДОСТУПА

В 1972 году Джеймс Андерсон (James Anderson) в своей основополагающей работе Computer Security Technology Planning Study4 определил безопасность как понятие, состоящее из трех основных принципов:

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

Андерсон объединил эти принципы в отдельный базовый механизм, названный им Монитором доступа (Reference Monitor). Как видно из этой работы, эти принципы также являются основными компонентами оптимальной разработки программного обеспечения, в том числе и качественной разработки ядра. В действительности современные эксперты в области безопасности приравнивают “Монитор доступа” к основным механизмам безопасности ядра. Как ни странно, грамотная разработка и безопасность, по сути, являются синонимами.

Роль такого фундаментального механизма безопасности состоит в проверке всех попыток доступа к ресурсам (данным, внешним устройствам, программам и т. д.) со стороны любого процесса. Андерсон определил, каким образом механизм безопасности внутри ядра должен обеспечивать доступ к ресурсу не просто для соответствующего процесса, но и для работы с соответствующими данными и в соответствующем контексте.

Как будет видно далее, реализация ядра операционной системы QNX Neutrino на основе стандарта POSIX и неизменное использование блока управления памятью (MMU) обеспечивает требуемую функциональность в соответствии с основным определением безопасности, сформулированным в “Мониторе доступа” Андерсона.

2.2. ОПРЕДЕЛЕНИЕ БЕЗОПАСНОСТИ СИСТЕМЫ

В 1974 году Джером Зальцер (Jerome Saltzer) и Майкл Шредер (Michael Schroeder) дополнили труд Андерсона, определив так называемые "Восемь принципов безопасности" (The Eight Principles of a Security Design) в своей работе под названием "Защита информации в компьютерных системах" (The Protection of Information in Computer Systems)1.

Экономия механизмов Уменьшение сложности для устранения неожиданных побочных эффектов или поведения
Отказоустойчивые настройки по умолчанию Доступ должен быть явно разрешен и неявно запрещен
Полная опосредованность Постоянно действующий, надежный механизм, защищающий заданные ресурсы
Открытая архитектура Отказ от обеспечения безопасности с помощью создания неясности
Разделение задач Многофакторный контроль доступа
Минимизация привилегий Права доступа позволяют выполнять только указанную задачу, но не более
Минимизация общих механизмов Прозрачное разделение ресурсов
Психологическая приемлемость Система должна быть понятна пользователю

Хотя Зальцер и Шредер вели свое исследование с точки зрения определения безопасности операционных систем, фактически они описали то, что сегодня обычно называется “грамотное программирование” и “качественная разработка программного обеспечения”.

2.3. ОСНОВЫ СОВРЕМЕННОЙ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ

Исходя из базовых принципов безопасности, определенных в начале 1970-х годов Андерсоном, Зальцером и Шредером, современные специалисты в области безопасности разработали методологии и критерии оценки (в том числе по факторам риска и уязвимости) и многие другие формальные методы определения уровня безопасности приложения, системы или сети.

В данном документе приведен краткий обзор того, как компания QNX Software Systems с помощью своих жестких методик и функциональных требований к операционной системе реального времени QNX Neutrino реализует принципы Андерсона, Зальцера и Шредера, формирующие основы современной компьютерной безопасности.

3. БЕЗОПАСНОСТЬ. ОСНОВА МИКРОЯДРА QNX NEUTRINO

3.1. МИКРОЯДЕРНАЯ АРХИТЕКТУРА

Для выполнения основных задач в микроядерной операционной системе ядро предоставляет минимальный набор примитивов, или системных вызовов (см. рисунок 1). В число основных задач обычно входят: управление адресным пространством, управление потоками и межзадачное взаимодействие. Все другие службы — которые, в случае обычного, монолитного ядра, как правило, выполняются внутри него — реализуются в пользовательском пространстве как самостоятельные процессы или программы.

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

Микроядерная архитектура создает основу для более безопасной и надежной системы благодаря тому, что основной компонент безопасности — микроядро — является компактным и простым для понимания с точки зрения исторически сложившейся концепции безопасной релевантности (security relevant). Например, поскольку микроядро позволяет любой доступ к системным службам осуществлять только через его прозрачные интерфейсы, оно само по своей сути реализует безопасность. Более того, поскольку эти службы являются самостоятельными и независимыми, в целом повышается не только удобство эксплуатации, но и безопасность и надежность системы.

Операционная система реального времени QNX Neutrino основана на микроядре.


Рисунок 1. Микроядерная архитектура QNX Neutrino.

3.2. ТРИ ПРИНЦИПА АНДЕРСОНА

Основная цель работы Андерсона под названием "О вопросе планирования технологии компьютерной безопасности" (Computer Security Technology Planning Study) состояла в том, чтобы определить, как обеспечивается безопасность компьютерного продукта, независимо от его типа. Андерсон убежден, что понятие безопасности может быть сведено к нескольким ключевым принципам, которые при централизованном контроле могут обеспечить функциональную безопасность, проверяемую третьей стороной. Для достижения этого им было введено понятие Монитора доступа.

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

Далее мы рассмотрим, как эти три ключевых принципа обеспечиваются в реализации микроядра QNX Neutrino.

3.2.1. ЗАЩИТА ОТ НЕСАНКЦИОНИРОВАННОГО ВМЕШАТЕЛЬСТВА

Монитор доступа должен быть полностью защищен во время работы. Это требование относится ко всем методам, которые могут повлиять на его работу программно или вручную. Если эта целостность может быть нарушена по злонамеренному умыслу, случайно или из-за собственных структурных дефектов системы, то система становится непригодной с точки зрения ожиданий пользователя и не в состоянии работать корректно (т. е. в соответствии с ожиданиями пользователя).

ОСРВ QNX Neutrino реализует Монитор доступа непосредственно внутри ядра. Ядро, т. е. Монитор доступа, неизменяемо во время исполнения и работает "только по чтению", благодаря MMU-механизму, который защищает его от вмешательства извне. Если образ ядра изменяется при попытке атаки или в случае непреднамеренного действия, то оно не загрузится в рабочий режим: при запуске ядро выполняет процедуры проверки своей целостности, которые должны подтвердить нормальное состояние ядра и отсутствие в нем повреждений или изменений. Так как известно, что во время работы ядро не может быть изменено и не может запуститься при наличии каких-либо изменений, можно быть уверенным, что факт успешного запуска ядра означает полную корректность и безопасность его работы.

3.2.2. СОСТОЯНИЕ НЕПРЕРЫВНОЙ РАБОТЫ

Независимо от того, какой ресурс запрашивается, важно, чтобы Монитор доступа всегда был активизирован. Этот механизм должен применяться ко всем областям, связанным с распределением ресурсов, независимо от источника запроса. Архитектура QNX Neutrino устроена таким образом, чтобы все запросы ресурсов происходили через ядро. Благодаря своему расположению внутри ядра Монитор доступа всегда находится в активном состоянии и может обработать все запросы ресурсов на основе структуры POSIX и строгого применения MMU.

3.2.3. КОМПАКТНОСТЬ И ПРОСТОТА

Корректность работы Монитора доступа является необходимой. Основной принцип проверяемости заключается в достижении максимально простой архитектуры системы, способной реализовать весь требуемый набор функциональных возможностей. Если система слишком сложна, от внимания проектировщиков могут ускользнуть изъяны системы, которые могут быть преднамеренно или случайно использованы пользователями. QNX Neutrino, как истинная микроядерная операционная система, имеет простую, эффективную и полностью функциональную архитектуру и реализацию. В ее архитектуре нет компонентов, которые не отвечают строгим требованиям простоты, и содержатся только те компоненты, которые необходимы для правильной работы. Кроме того, процессы проектирования, принятые в компании QNX Software Systems, гарантируют, что никакая часть системы не может пройти мимо аудиторской проверки на каждом этапе: от разработки и реализации до поставки1.

3.3. ВОСЕМЬ ПРИНЦИПОВ ЗАЛЬЦЕРА И ШРЕДЕРА

Зальцер и Шредер дополнили труд Андерсона о Мониторе доступа и вышеописанных трех принципах восемью собственными принципами.

3.3.1. ЭКОНОМИЯ МЕХАНИЗМОВ

Экономичное использование механизмов по сути означает принцип простоты: система должна выполнять только то, для чего она предназначена. Другими словами, система реализована настолько эффективно и просто насколько это возможно, и не более. Несмотря на то, что это требование безопасности может показаться “очевидным”, слишком большое количество ядер операционных систем чрезмерно сложны и трудны для понимания. Некоторые ядра состоят из миллионов строк исходного кода, каждая из которых должна корректно работать, иначе безопасность всего продукта оказывается под вопросом.

Основная философия ОСРВ QNX Neutrino заключается в модульности, простоте и компактности. Программная база спроектирована таким образом, чтобы реализовать базовые функциональные возможности настолько компактно, насколько возможно. Этот подход помогает обеспечить простую и понятную реализацию системы и минимизировать ее сложность для возможности простой аудиторской проверки во время реализации. Благодаря компактности и модульности микроядра QNX Neutrino, разработчикам на основе QNX Neutrino намного проще устранять некорректные (и неизвестные) пути доступа.

В ОСРВ QNX Neutrino используется легкий для понимания и стандартный механизм привилегий: стандарт POSIX. Данная базовая структура позволяет QNX Neutrino обеспечить реализацию следующей концепции: выполняться должны только необходимые действия, не требуя излишней сложности, которая может привести к скрытым дефектам и изъянам. Этот индустриальный стандарт является известным и понятным и дает пользователям четкое понимание и предсказуемое описание того, как работает система. Главное заключается в том, что пользователи знают чего ожидать, а система отвечает этим ожиданиям. В ОСРВ QNX Neutrino это достигается с помощью стратегического соответствия стандарту POSIX.

В действительности эта стратегия удовлетворяет и основным принципам системной безопасности.

3.3.2. НАДЕЖНЫЕ НАСТРОЙКИ ПО УМОЛЧАНИЮ

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

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

Аналогичным образом в процессе инициализации QNX Neutrino атрибуты безопасности устанавливаются не просто в настройки по умолчанию, но в "заранее известные и надежные настройки по умолчанию". Поэтому при создании новых объектов или субъектов, их атрибуты безопасности назначаются “достоверно надежные” начальные настройки по умолчанию. Таким образом гарантируется, что никакая информация от предыдущих пользователей или процессов, не относящихся к владельцу нового объекта, не служит для повторного использования или доступа. Кроме того, это обеспечивает предсказуемое поведение процессов просто потому, что все присоединяемые ресурсы получают заранее известные параметры настройки.

Другими словами, создание объектов в ОСРВ QNX Neutrino специально спроектировано таким образом, чтобы гарантировать установку каждого нового объекта (например, процесса, области памяти и т. д.) в известное, нейтральное состояние, так чтобы исключить непредусмотренную передачу информации.

Несмотря на то, что при таком подходе любой процесс, включая и саму систему QNX Neutrino в целом, начинается с заранее известных и надежных настроек по умолчанию, иногда возможно "откатить" назад (или отменить) последнюю операцию или серию операций, ограниченных некоторым пределом (например, по периоду времени), таким образом возвратив систему или процесс к некоторому предыдущему известному “исправному” состоянию. ОСРВ QNX Neutrino обеспечивает такую возможность "отката" или отмены результатов операции (или серии операций) с сохранением целостности системы.

3.3.3. ПОЛНАЯ ОПОСРЕДОВАННОСТЬ

Когда обычно задумываются о “компьютерной безопасности” или о чем-то, что считается “безопасным”, сразу же возникает мысль об управлении доступом, или, по терминологии, принятой в сфере компьютерной безопасности, полной опосредованности (complete mediation).

Понятие полной опосредованности означает, что доступ процесса к данному ресурсу полностью опосредуется (то есть, разрешается) только через ядро. Эта опосредованность осуществляется внутри ядра, что обеспечивает прохождение каждого запроса на доступ через один механизм верификации, независимо от характера запроса или запрашивающего процесса. Данную опосредованность невозможно игнорировать, и все запросы на доступ постоянно и прозрачно оцениваются во время работы для определения допустимости без каких-либо исключений.

Выражаясь более формально, управление доступом состоит в разрешении или запрете для субъектов (пользователей, процессов, узлов и т. д.) выполнять определенные операции по отношению к объектам (ресурсам, управляемым системой). Разрешение или запрет основывается исключительно на атрибутах безопасности, присвоенных данным субъектам и объектам. Как было упомянуто ранее, эти атрибуты безопасности установлены в заранее известные и надежные настройки по умолчанию, чтобы всегда обеспечивать запуск ОСРВ QNX Neutrino в известное исправное состояние, которое устойчиво работало в разных сеансах инициализации.

В ОСРВ QNX Neutrino типичный запрос на доступ определяется, как правило, следующим образом:

    субъект с атрибутом owner = admin
    может выполнять операции чтения, записи, создания и удаления
    со всеми объектами с атрибутом type = file

В данном примере owner и type – атрибуты безопасности.

Благодаря изначальному следованию требованиям POSIX и защите оборудования на системном уровне (через MMU), микроядерная операционная система QNX Neutrino обеспечивает описанный выше механизм управления доступом. Правила доступа, интегрированные в ядро, невозможно ни игнорировать, ни изменить. Таким образом гарантируется надежность работы системы и предсказуемость ее поведения для пользователя.

3.3.4. ОТКРЫТАЯ АРХИТЕКТУРА

ОСРВ QNX Neutrino соответствует стандарту POSIX. Кроме того, в большой степени она реализует принципы открытой архитектуры с помощью прозрачности и предсказуемости поведения API. В обширном комплекте документации QNX эти API имеют довольно подробное описание.

Компания QNX Software Systems применяет общепринятые стандарты и предоставляет хорошо документированные API, благодаря чему пользователи, системные разработчики и архитекторы могут заранее иметь довольно четкое представление о поведении разрабатываемой системы. Можно сказать, что стратегия реализации стандарта POSIX — это философия, которая лежит в основе всех аспектов операционной системы, при этом исключается ложная безопасность посредством запутанности или неясности.

3.3.5. УРОВНИ ПРИВИЛЕГИЙ

При необходимости доступа к определенным ресурсам механизм защиты, реализованный в ОСРВ QNX Neutrino, обеспечивает уровни обязанностей (или привилегий). Это дает большую надежность системы и предотвращает случайные или намеренные сбои (см. таблицу 1).

  Поток пользовательского процесса
(uid !=-0)
Поток суперпользовательского процесса
(uid=0)
Суперпользовательский поток с привилегированным режимом ввода-вывода
Максимальный приоритет потока максимальный для пользователя (по умолчанию 64) 255 255
Разделение виртуальной памяти Основывается на правах доступа Да Да
Доступ к физической памяти Нет Да Да
Операции ввода/вывода Нет Нет (x86) Да
Присоединение к линии запроса прерывания Нет Нет Да
Отключение прерываний Нет Нет Да

Таблица 1. Уровни привилегий в ОСРВ QNX Neutrino.

3.3.6. ПРИНЦИП НАИМЕНЬШЕЙ ПРИВИЛЕГИИ

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

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

3.3.7. СОКРАЩЕНИЕ КОЛИЧЕСТВА ОБЩИХ МЕХАНИЗМОВ (ЗАЩИТА РЕСУРСОВ)

Из принципов минимальной привилегии и уровней разрешений следует принцип защиты ресурсов от неявного совместного использования. ОСРВ QNX Neutrino использует внутренние механизмы безопасности не только для надлежащего распределения ресурсов, но и для обеспечения защиты ресурсов и процессов посредством MMU. Таким образом, QNX Neutrino гарантирует недопустимость неявного или несанкционированного разделения или доступа к защищенным ресурсам и процессам.

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

Кроме того, ОСРВ QNX Neutrino дает пользователям возможность запрашивать явную очистку ресурсов при их освобождении. Таким образом отдельные потоки, способные самостоятельно управлять своей собственной информацией, могут гарантированно исключить возможность произвольного получения этой информации даже в пределах одного и того же процесса. Такой подход эффективно устраняет возможность несанкционированного получения ранее сохраненных данных в пределах одного и того же приложения. Это важно, например, в тех случаях, когда в приложениях предусмотрены подключаемые (plug-in) платформы, позволяющие динамически подключать к приложению модули или инструменты третьих сторон.

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

Более того, ОСРВ QNX Neutrino управляет распределением ресурсов посредством технологии "Адаптивной декомпозиции" (adaptive partitioning). Помимо обычного планирования потоков и процессов, эта технология позволяет организовать группы потоков или процессов в блоки, которые используют не более заданного количества процессорного времени. Кроме того, эта технология позволяет гарантировать, что блок получит выделенное для него количество процессорного времени. Если же какое-то количество процессорного времени, выделенное данному блоку, не используется, оно не тратится впустую, а динамически перераспределяется другим блокам.

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

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


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

3.3.8. ПСИХОЛОГИЧЕСКАЯ ПРИЕМЛЕМОСТЬ

Система, которая ведет себя в соответствии с фактическими ожиданиями пользователя, характеризуется т. н. психологической приемлемостью. Другими словами, она не производит неожиданных действий. Выражаясь более специализированным языком, система работает детерминированным образом. Это означает, что система работает корректно и полностью согласно документации. Такая работа системы достигается благодаря тому, что ОСРВ QNX Neutrino использует известные и общепринятые стандарты в качестве основы для своей модели безопасности. Данная модель включает в себя определение поведения QNX Neutrino во время инициализации, самотестирования, восстановления и надёжной работы.

4. СОВРЕМЕННЫЕ ДОПОЛНЕНИЯ К ПРИНЦИПАМ БЕЗОПАСНОСТИ

За годы, прошедшие со времени публикации основополагающей работы Андерсона, Зальцера и Шредера по вопросу безопасности систем, было сформулировано несколько дополнительных принципов. Главные из них определяются как контроль доступа, применение приоритетов к ресурсам и процессам, самотестирование и отказоустойчивость. Компания QNX Software Systems положила эти элементы безопасности в саму основу ОСРВ QNX Neutrino, чтобы усилить аспекты безопасности ее микроядерной архитектуры.

4.1. ОБЕСПЕЧЕНИЕ УЧЕТА

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

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

Для того чтобы ОСРВ QNX Neutrino отвечала существующим и новым требованиям по контролю доступа и конфиденциальности, ее средства аудита были основаны на надёжном и прозрачном механизме.

В QNX Neutrino всем событиям может быть присвоена временная метка. Эти временные метки генерируются системными часами реального времени и в некоторых случаях обеспечивают разрешение до наносекунд. Временные метки производятся ядром и не могут быть изменены или переконфигурированы, что гарантирует невозможность использования искажений времени по отношению к подсистемам аудита и т. п. Этот подход обеспечивает дополнительный уровень безопасности, так как зарегистрированные и прошедшие аудит системные события не могут быть аннулированы относительно времени их происхождения. ОСРВ QNX Neutrino реализует этот ключевой аспект безопасности, необходимый в любой надёжной и всесторонней системе безопасности.

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

4.2. ПРИОРИТЕТ СУБЪЕКТОВ И ПРИОРИТЕТ ОПЕРАЦИЙ

Эти составные части используются для описания и проверки системного контроля над операциями таким образом, чтобы субъекты или операции с высоким приоритетом могли работать без вмешательства или задержки, вызванной низкоприоритетными субъектами или операциями. (Под субъектами подразумеваются потоки и процессы, выполняющие операции от имени пользователей — людей или др.) В самой своей архитектуре ОСРВ QNX Neutrino содержит строгий протокол, который диктует, что при недостатке ресурсов (то есть когда запросов становится больше, чем доступных потоков ядра), только запросы с самым высоким приоритетом поднимаются на верх очереди для обработки.

Системные запросы (например, аппаратные прерывания) также подчинены строгому протоколу приоритетов, что гарантирует невозможность “подавления” высокоприоритетных запросов событиями с более низким приоритетом. ОСРВ QNX Neutrino гарантирует обработку высокоприоритетных запросов в первую очередь, что делает эту операционную систему чрезвычайно устойчивой к ошибкам в средах высокой готовности и критического назначения (например, SCADA-системах).

4.3. САМОТЕСТИРОВАНИЕ

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

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

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

4.4. ОТКАЗОУСТОЙЧИВОСТЬ

Отказоустойчивость, а также тесно связанное с этим понятием требование об отказоустойчивых настройках по умолчанию, помогает гарантировать то, что система сохранит корректную работу даже в случае сбоя. Если сбой происходит, система должна быть способна должным образом восстановиться в "известное исправное" состояние. Микроядро QNX Neutrino с помощью самотестирования может после восстановления перейти в это "известное исправное" состояние.

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

5. ЗАКЛЮЧЕНИЕ

Как уже было сказано, ОСРВ QNX Neutrino основана на строгих принципах безопасности, которые реализованы в самой архитектуре базовых структур и процедур ее микроядра. Компания QNX Software Systems ведет непрерывную работу для улучшения уровня безопасности, надежности и защищенности операционной системы реального времени QNX Neutrino для клиентских решений.

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

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

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

В действительности формулировки, данные Зальцером и Шредером в качестве определения безопасности, идеально подходят для микроядер. Минимизация привилегий, экономия механизмов, опосредованность, открытая архитектура, уровни привилегий — именно эти понятия довольно точно определяют микроядро. И хотя работа Андерсона, Зальцера и Шредера была сосредоточена на разработке концепции безопасной системы, сегодня очевидно, что их определения описывают методы качественного программирования и качественного проектирования программного обеспечения в целом.

Микроядро QNX Neutrino воплощает в себе те необходимые функциональные возможности, которые отвечают основополагающим принципам безопасности, сформулированным Андерсоном, Зальцером и Шредером, — тем принципам, которые сохраняют актуальность и по сей день.

ОБ АВТОРЕ

Юджин Бейсик (Eugen Bacic) является директором подразделения Emerging Technology компании Bell Security Solutions Inc. Он возглавляет научно-исследовательские работы в области безопасности. В течение 20 лет он является ведущим разработчиком технологии информационной безопасности, в том числе в научно-исследовательских работах в области брандмауэров, шифрования с открытым ключом, надежного контроля, сетевой и инфраструктурной безопасности, обнаружения вредоносных программ, компонуемых систем, механизмов применения политик и критериев безопасности.

До того как занять пост в компании Bell, Бейсик занимался исследованиями в области безопасности в компании Texar Corporation, специализирующейся на управлении информацией и политиками безопасности. До работы в Texar он был старшим научным сотрудником по информационной безопасности в компании CSE. Его большой вклад во время этой работы был признан специалистами в области ИТ-безопасности по всему миру. Он являлся одним из авторов "Канадских критериев безопасности" (Canadian Criteria), был единственным иностранным гражданином в подкомитете конгресса США, разрабатывавшем Федеральные критерии безопасности США вместо т. н. "Оранжевой книги" (US Orange Book), а также являлся ведущим канадским автором "Общих критериев безопасности" (Common Criteria). Бейсика часто приглашали в специальные группы по проблемам безопасности в Канаде и Соединенных Штатах.


1 Критерии оценки безопасности доверенных компьютеров (Trusted Computer Security Evaluation Criteria), опубликованные в 1983 году и обновленные в 1985 году, в обиходе были известны как Оранжевая книга (Orange Book) благодаря своей ярко-оранжевой обложке. В дальнейшем на смену им пришли недолговечные Федеральные критерии Соединенных Штатов (US Federal Criteria) и, в конечном счете, всемирно признанные Общие критерии (Common Criteria). Для получения дополнительной информации посетите сайт http://en.wikipedia.org/wiki/TCSEC.

2 Критерии оценки безопасности информационных технологий (Information Technology Security Evaluation Criteria, ITSEC) были составлены специалистами Франции, Германии, Нидерландов и Великобритании на основе совместной разработки критериев. Эти критерии сосредоточены, прежде всего, на гарантиях.

3 Канадские критерии оценки доверенных компьютерных продуктов (Canadian Trusted Computer Product Evaluation Criteria, CTCPEC) составили первые модульные критерии оценки, позволяющие создавать профили, определяющие функциональность, по отношению к которой выполнялась бы оценка. Эти идеи были включены в Общие критерии (Common Criteria).

4 Собрание ранних документов по компьютерной безопасности Национального института стандартов и технологий США (NIST) можно найти на сайте http://csrc.nist.gov/publications/history/.

5 На сайте Вирджинского университета можно загрузить электронную версию документа: http://www.cs.virginia.edu/~evans/cs551/saltzer/.

6 См. техническое описание компании QNX “Engineering Confidence through Assurance Techniques”.