Введение
Модель компьютерной безопасности
Многоуровневая или многоуровневая система (MSL) – это способ разделения различных уровней данных посредством использования отдельных компьютеров или виртуальных машин для каждого уровня. Она призвана обеспечить некоторые преимущества многоуровневой безопасности без необходимости внесения специальных изменений в операционную систему или приложения, но с затратами на дополнительное оборудование. Стремление к разработке операционных систем MLS было серьезно заторможено резким снижением стоимости обработки данных в начале 1990-х годов. До появления персональных компьютеров пользователи, которым требовалась обработка конфиденциальной информации, должны были либо тратить значительные средства на выделенный компьютер, либо использовать компьютер с установленной операционной системой MLS. Однако в течение 1990-х годов многие организации в оборонной и разведывательной сферах воспользовались снижением стоимости вычислительной техники для развертывания персональных систем, классифицированных для работы только на самом высоком уровне секретности, используемом в их организации. Эти персональные компьютеры работали в режиме "system high" и были подключены к локальным сетям, передающим трафик на том же уровне секретности, что и сами компьютеры. Такие реализации MSL изящно избегали сложностей MLS, но обменивали техническую простоту на неэффективное использование ресурсов. Поскольку большинству пользователей в классифицированных средах также требовались неклассифицированные системы, пользователи часто имели как минимум два компьютера, а иногда и больше (один для неклассифицированной обработки и один для каждого уровня секретности). Кроме того, каждый компьютер был подключен к своей собственной локальной сети соответствующего уровня секретности, что подразумевало использование нескольких отдельных кабельных систем (с существенными затратами на установку и обслуживание).
Пределы MSL по сравнению с MLS
Очевидный недостаток MSL (по сравнению с MLS) заключается в том, что он не поддерживает смешивание различных уровней классификации каким-либо образом. Например, возможность объединения потока данных с уровнем SECRET (полученного из файла SECRET) с потоком данных с уровнем TOP SECRET (прочитанного из файла TOP SECRET) и направления результирующего потока данных TOP SECRET в файл TOP SECRET не поддерживается. По сути, систему MSL можно рассматривать как набор параллельных (и совместно расположенных) компьютерных систем, каждая из которых ограничена работой только на одном уровне безопасности. Фактически, отдельные операционные системы MSL могут даже не понимать концепцию уровней безопасности, поскольку они функционируют как системы единого уровня. Например, хотя одна из совместно расположенных ОС MSL может быть настроена на добавление строковой метки "SECRET" ко всем выходным данным, эта ОС не имеет представления о том, как чувствительность и критичность этих данных соотносятся с данными, обрабатываемыми ее аналогом, который добавляет метку "UNCLASSIFIED" ко всем своим выходным данным. Работа с двумя или более уровнями безопасности, следовательно, требует использования методов, выходящих за рамки возможностей самих "операционных систем" MSL и нуждающихся в участии человека, называемом "ручной проверкой". Например, может быть предоставлен независимый монитор (не в понимании Бринча Хансена) для поддержки переноса данных между несколькими MSL-узлами (например, копирования файла данных из узла UNCLASSIFIED в узел SECRET). Хотя каких-либо строгих требований, установленных федеральным законодательством, касательно этой проблемы не существует, было бы целесообразно, чтобы такой монитор был небольшим, специализированным и поддерживал лишь ограниченное количество строго определенных операций, таких как импорт и экспорт файлов, настройка выходных меток и другие задачи обслуживания/администрирования, требующие обработки всех совместно расположенных MSL-узлов как единого целого, а не как отдельных систем единого уровня. Также может быть целесообразно использовать архитектуру гипервизора, например VMware, для предоставления набора MSL "ОС" в виде отдельных виртуализированных сред, поддерживаемых базовой ОС, доступ к которой разрешен только администраторам, имеющим допуск ко всем данным, управляемым любым из узлов. С точки зрения пользователей, каждый узел должен представлять сеанс входа в систему или X-дисплей-менеджера, логически неотличимый от пользовательской среды базовой "системы обслуживания".
Прогресс в области МСЛ
Затраты и сложность, связанные с поддержанием отдельных сетей для каждого уровня классификации, побудили Агентство национальной безопасности (АНБ) начать исследования в области сохранения концепции MSL – выделенных систем высокого уровня – при одновременном сокращении физических затрат, необходимых для нескольких сетей и компьютеров. Обработка по периодам стала первым шагом в этом направлении, установив протоколы, позволяющие организациям подключать компьютер к сети с определенным уровнем доступа, обрабатывать информацию, очищать систему и подключать ее к другой сети с другим уровнем доступа. Модель обработки по периодам обещала использование одного компьютера, но не решала проблему множества кабельных сетей и оказалась крайне неудобной для пользователей, что ограничило ее распространение. В 1990-х годах развитие технологий виртуализации изменило ситуацию для систем MSL. Внезапно появилась возможность создавать виртуальные машины (ВМ), которые функционировали как независимые компьютеры, но работали на общей аппаратной платформе. Благодаря виртуализации АНБ увидело возможность реализовать обработку по периодам на виртуальном уровне, устранив необходимость физической очистки системы путем выполнения всей обработки в выделенных ВМ высокого уровня. Однако для реализации MSL в виртуальной среде необходимо было найти способ безопасного управления виртуальным менеджером сеансов и обеспечить, чтобы любые компрометирующие действия, направленные на одну ВМ, не могли скомпрометировать другую.
Философские аспекты, простота использования, гибкость
Интересно рассмотреть философские последствия "пути решения" MSL. Вместо предоставления возможностей MLS в классической ОС, выбранное направление заключается в создании набора "виртуальных ОС" компонентов, которые могут управляться, как по отдельности, так и коллективно, базовой реальной ОС. Если основная ОС (введем термин – операционная система обслуживания, или MOS) должна обладать достаточным пониманием семантики MLS для предотвращения серьезных ошибок, таких как копирование данных из MSL-компонента с уровнем TOP SECRET в MSL-компонент с уровнем UNCLASSIFIED, то MOS должна иметь возможность: представлять метки; связывать метки с сущностями (здесь мы строго избегаем терминов "субъект" и "объект"); сравнивать метки (строго избегая термина "референсный монитор"); различать контексты, в которых метки имеют смысл, и те, в которых они не имеют смысла (строго избегая термина "доверенная вычислительная база" [TCB]); список можно продолжать. Легко заметить, что проблемы архитектуры и проектирования MLS не были устранены, а лишь перенесены на отдельный уровень программного обеспечения, которое невидимо управляет принудительным контролем доступа, освобождая верхние уровни от этой задачи. Эта концепция – не что иное, как архитектурная концепция двойственности (взятая из отчета Андерсона), лежащая в основе доверенных систем в стиле Министерства обороны. Положительным достижением набора абстракций MSL-компонентов стало радикальное ограничение области применения программных механизмов, осведомленных о MAC, до небольшого, лежащего в основе MOS. Однако это было достигнуто ценой утраты любых практических возможностей MLS, даже самых элементарных, например, когда пользователь с допуском SECRET добавляет неклассифицированный абзац, взятый из неклассифицированного файла, в свой отчет SECRET. Реализация MSL, очевидно, потребует репликации каждого "многократно используемого" ресурса (в данном примере, файла UNCLASSIFIED) во всех MSL-компонентах, которым он может быть полезен, что приведет либо к избыточному расходу памяти, либо к непосильной нагрузке на администратора, способного выполнять такую репликацию по запросу пользователей. (Разумеется, поскольку пользователь с допуском SECRET не может "просматривать" неклассифицированные ресурсы системы, кроме как путем выхода из системы и повторного входа в систему с уровнем UNCLASSIFIED, это свидетельствует о еще одном серьезном ограничении функциональности и гибкости.) В качестве альтернативы, менее конфиденциальные файловые системы можно смонтировать через NFS в режиме "только для чтения", чтобы более надежные пользователи могли просматривать их содержимое, но не изменять его. Однако MSL-компонент ОС не будет иметь фактических средств для определения (например, с помощью команды просмотра каталога), что ресурсы NFS находятся на другом уровне конфиденциальности, чем локальные ресурсы, и не будет надежных средств для предотвращения несанкционированного потока конфиденциальной информации, кроме примитивного механизма "все или ничего" – монтирования NFS в режиме "только для чтения". Чтобы продемонстрировать, насколько серьезным препятствием является такое радикальное применение "совместного использования файлов между уровнями", рассмотрим систему MLS, поддерживающую данные UNCLASSIFIED, SECRET и TOP SECRET, и пользователя с допуском TOP SECRET, вошедшего в систему на этом уровне. Структуры каталогов MLS построены на принципе сдерживания, который, в общих чертах, предписывает, что более высокие уровни конфиденциальности находятся глубже в дереве: обычно уровень каталога должен соответствовать или доминировать над уровнем его родительского каталога, а уровень файла (точнее, любой ссылки на него) должен соответствовать уровню каталога, в котором он каталогизирован. (Это строго верно для MLS UNIX: альтернативы, поддерживающие различные концепции каталогов, записей каталогов, i-узлов и т. д. – такие как Multics, добавляющая абстракцию "ветви" к парадигме каталогов – допускают более широкий набор альтернативных реализаций.) Ортогональные механизмы предусмотрены для общедоступных и временных каталогов, таких как /tmp или C:\TEMP, которые автоматически и невидимо разделяются ОС, а запросы пользователей на доступ к файлам автоматически "перенаправляются" в соответствующий раздел каталога с соответствующей меткой. Пользователь TOP SECRET может свободно просматривать всю систему, его единственное ограничение заключается в том, что во время входа в систему на этом уровне ему разрешено создавать новые файлы TOP SECRET только в определенных каталогах или их подкаталогах. В альтернативе MSL, где любое просматриваемое содержимое должно быть конкретно и кропотливо реплицировано во все применимые уровни полностью проверенным администратором – то есть, в данном случае, все данные SECRET должны быть реплицированы в MSL-компонент ОС TOP SECRET, а все данные UNCLASSIFIED – в компоненты SECRET и TOP SECRET – легко понять, что чем выше допуск пользователя, тем более разочаровывающим будет его опыт совместного использования вычислительных ресурсов. В классическом теоретическом смысле доверенных систем – опираясь на терминологию и концепции, взятые из "Оранжевой книги", основы доверенных вычислений – система, поддерживающая MSL-компоненты, не может достичь уровня заверения выше (B1). Это связано с тем, что критерии (B2) требуют, среди прочего, как четкого определения периметра TCB, так и существования единого, идентифицируемого органа, обладающего полномочиями и правом решать вопросы доступа ко всем данным, представленным во всех доступных ресурсах ADP-системы. В очень реальном смысле применение термина "высокая надежность" в качестве описателя реализаций MSL бессмысленно, поскольку термин "высокая надежность" правильно относится к системам уровней (B3) и (A1) – и, с некоторой снисходительностью, к системам уровня (B2).
Межобластные решения
Системы MSL, будь то виртуальные или физические, предназначены для обеспечения изоляции между различными уровнями классификации. Следовательно, (в отличие от систем MLS), среда MSL не обладает встроенными возможностями для перемещения данных с одного уровня на другой. Для обеспечения обмена данными между компьютерами, работающими на разных уровнях классификации, на таких объектах развертываются кросс-доменные решения (CDS), которые обычно называют шлюзами или охранниками. Охранники, которые часто сами используют технологии MLS, фильтруют трафик, проходящий между сетями; однако, в отличие от коммерческого интернет-файрвола, охранник строится с соблюдением гораздо более строгих требований к надежности, а его фильтрация тщательно разрабатывается для предотвращения любой несанкционированной утечки секретной информации между локальными сетями, работающими на разных уровнях безопасности. Технологии односторонней передачи данных широко используются там, где требуется ограничить потоки данных одним направлением между уровнями, с высокой степенью уверенности в том, что данные не будут передаваться в обратном направлении. В целом, они подвержены тем же ограничениям, которые создавали проблемы для других решений MLS: строгая оценка безопасности и необходимость предоставления электронного эквивалента заявленной политики для перемещения информации между классификациями. (Перемещение информации на более низкий уровень классификации особенно сложно и обычно требует одобрения нескольких лиц.) По состоянию на конец 2005 года многочисленные платформы с высокой степенью надежности и приложения-охранники были одобрены для использования в защищенных средах. Следует отметить, что термин "высокая степень надежности", используемый здесь, следует оценивать в контексте DCID 6/3 (читайте "dee skid six three") – квазитехнического руководства по разработке и внедрению различных систем обработки секретной информации, лишенного как точной юридической строгости критериев "Оранжевой книги", так и фундаментальной математической обоснованности. ("Оранжевая книга" основана на и вытекает из логической "цепочки рассуждений", построенной следующим образом: [a] "безопасное" состояние математически определено и построена математическая модель, операции в которой сохраняют безопасное состояние, так что любая мыслимая последовательность операций, начинающаяся с безопасного состояния, приводит к безопасному состоянию; [b] отображение тщательно отобранных примитивов в последовательности операций на модели; и [c] "описательная спецификация верхнего уровня", которая отображает действия, которые могут быть выполнены в пользовательском интерфейсе (например, системные вызовы) в последовательности примитивов; но не доходит до [d] формального доказательства того, что живая программная реализация правильно реализует указанные последовательности действий; или [e] формального утверждения о том, что исполняемая, теперь "доверенная" система генерируется корректными и надежными инструментами [например, компиляторами, библиотекарями, компоновщиками].)