Введение
Операционная система, основанная на возможностях (Capability based operating system) – операционная система, разработка которой началась в 1991 году в Университете Пенсильвании, а затем продолжалась в Университете Джона Хопкинса и The EROS Group, LLC. К её особенностям относятся автоматическое сохранение данных и процессов, частичная поддержка работы в реальном времени и безопасность, основанная на возможностях. EROS является исключительно исследовательской операционной системой и никогда не применялась на практике. В 2005 году разработка была остановлена в пользу системы-преемницы CapROS.
Extremely Reliable Operating System (EROS) is an operating system developed starting in 1991 at the University of Pennsylvania, and then Johns Hopkins University, and The EROS Group, LLC. Features include automatic data and process persistence, some preliminary real time support, and capability based security. EROS is purely a research operating system, and was never deployed in real world use. as of 2005, development stopped in favor of a successor system, CapROS.
Основные понятия
Главная цель системы EROS (и ее производных) — обеспечить надежную поддержку на уровне операционной системы для эффективной реструктуризации критически важных приложений в небольшие взаимодействующие компоненты. Каждый компонент может взаимодействовать с другими только через защищенные интерфейсы и изолирован от остальной системы. Защищенный интерфейс в данном контексте — это интерфейс, обеспечиваемый самым низким уровнем операционной системы, ядром. Ядро — единственная часть системы, способная передавать информацию между процессами. Оно также обладает полным контролем над машиной и (при правильной реализации) не может быть обойдено. В EROS ядро предоставляет механизм, посредством которого один компонент именует и вызывает сервисы другого, используя межпроцессное взаимодействие (IPC). Принудительное использование защищенных интерфейсов гарантирует, что все сообщения, поступающие в процесс, приходят через намеренно экспортированный интерфейс. Оно также гарантирует, что вызов невозможен, если вызывающий компонент не обладает действующей возможностью (capability) для вызываемого компонента. Защита в системах, основанных на возможностях, достигается путем ограничения распространения возможностей между компонентами, часто посредством политики безопасности, называемой ограничением (confinement). Системы, основанные на возможностях, естественным образом способствуют компонентной программной архитектуре. Этот организационный подход аналогичен концепции объектно-ориентированного программирования, но выполняется на более крупном уровне гранулярности и не включает понятие наследования. При реструктуризации программного обеспечения таким образом возникают следующие преимущества:
Отдельные компоненты наиболее естественно структурируются как циклы обработки событий. Примеры систем, обычно структурированных таким образом, включают системы управления полетом воздушных судов (см. также DO 178B «Рекомендации по программному обеспечению в бортовых системах и оборудовании») и телефонные коммутаторы (см. коммутатор 5ESS). Программирование, управляемое событиями, выбирается для этих систем главным образом из-за простоты и надежности, которые являются важнейшими атрибутами в системах, критичных для жизни и миссии. Компоненты становятся меньше и индивидуально тестируемыми, что облегчает изоляцию и выявление дефектов и ошибок. Изоляция каждого компонента от других ограничивает масштаб любого ущерба, который может возникнуть в случае сбоя или некорректной работы программного обеспечения. В совокупности эти преимущества приводят к значительно более надежным и безопасным системам. Plessey System 250 — это система, первоначально разработанная для использования в телефонных коммутаторах, в которой архитектура, основанная на возможностях, была выбрана специально из-за ее надежности. В отличие от многих предыдущих систем, в EROS возможности являются единственным механизмом для именования и использования ресурсов, что делает ее иногда называемой «чистой системой возможностей». IBM i, напротив, является примером коммерчески успешной системы, основанной на возможностях, но не является чистой системой возможностей. Чистые архитектуры, основанные на возможностях, поддерживаются хорошо протестированными и зрелыми математическими моделями безопасности. Они использовались для формального доказательства того, что системы, основанные на возможностях, могут быть безопасными при правильной реализации. Так называемое «свойство безопасности» было показано как разрешимое для чистых систем возможностей (см. Липтон). Ограничение, являющееся фундаментальным строительным блоком изоляции, было формально проверено как применимое к чистым системам возможностей и реализовано на практике конструктором EROS и фабрикой KeyKOS. Для других примитивных механизмов защиты подобная проверка отсутствует. В литературе существует фундаментальный результат, показывающий, что безопасность математически неразрешима в общем случае (см. HRU, но обратите внимание, что она, конечно, доказуема для неограниченного набора ограниченных случаев). Более практическое значение заключается в том, что безопасность оказалась ложной для всех примитивных механизмов защиты, поставляемых с современными коммерческими операционными системами. Безопасность является необходимым условием успешного применения любой политики безопасности. На практике это означает, что в принципе невозможно обеспечить безопасность современных коммерческих систем, но потенциально возможно обеспечить безопасность систем, основанных на возможностях, при условии их тщательной реализации. Ни EROS, ни KeyKOS никогда не были успешно взломаны, и их механизмы изоляции никогда не были успешно обойдены внутренним злоумышленником, но неизвестно, были ли обе реализации достаточно тщательными. Одной из целей проекта Coyotos было продемонстрировать, что изоляция и безопасность компонентов были окончательно достигнуты посредством применения методов верификации программного обеспечения. L4.sec, являющаяся преемницей семейства микроядер L4, — это система, основанная на возможностях, и на нее оказали значительное влияние результаты проекта EROS. Влияние взаимно, поскольку работа EROS над высокопроизводительным вызовом была сильно мотивирована успехами Jochen Liedtke с семейством микроядер L4.
История
Основным разработчиком EROS был Джонатан С. Шапиро. Он также был движущей силой Coyotos, который представлял собой «эволюционный шаг» по сравнению с операционной системой EROS. Проект EROS начался в 1991 году как воссоздание в чистой комнате более ранней операционной системы KeyKOS. KeyKOS была разработана компанией Key Logic, Inc. и являлась прямым продолжением работы над более ранней системой Great New Operating System In the Sky (GNOSIS), созданной компанией Tymshare, Inc. Обстоятельства, связанные с прекращением деятельности Key Logic в 1991 году, сделали лицензирование KeyKOS невозможным. Поскольку KeyKOS в любом случае не работала на популярных коммерческих процессорах, было принято решение восстановить её на основе общедоступной документации. К концу 1992 года стало ясно, что архитектура процессоров значительно изменилась с момента появления концепции возможностей, и практичность компонентно-ориентированных систем стала сомнительной. Системы на основе микроядра, которые также отдают предпочтение большому количеству процессов и IPC, сталкивались с серьезными проблемами производительности, и было неясно, можно ли их успешно решить. Архитектура x86 явно становилась доминирующей, но высокая задержка переключения между режимами пользователя и ядра на процессорах 386 и 486 создавала серьезные проблемы для изоляции на основе процессов. Проект EROS превратился в исследовательскую работу и был перенесен в Университет Пенсильвании, где стал темой диссертации Шапиро. К 1999 году была продемонстрирована высокопроизводительная реализация для процессора Pentium, которая напрямую конкурировала по производительности с семейством микроядер L4, известным своей исключительной скоростью IPC. Механизм ограничения EROS был формально верифицирован, в процессе чего была создана общая формальная модель для безопасных систем, основанных на возможностях. В 2000 году Шапиро присоединился к преподавательскому составу факультета компьютерных наук Университета Джона Хопкинса. В Хопкинсе целью было показать, как использовать возможности, предоставляемые ядром EROS, для создания безопасных и устойчивых к атакам серверов на уровне приложений. EROS, финансируемый Агентством передовых исследовательских проектов Министерства обороны и Исследовательской лабораторией ВВС, использовался в качестве основы для надежной оконной системы, высокопроизводительного и устойчивого к атакам сетевого стека, а также для разработки безопасного веб-браузера. Он также использовался для изучения эффективности легковесной статической проверки. В 2003 году были обнаружены серьезные уязвимости, присущие любой системной архитектуре, основанной на синхронных примитивах IPC (в частности, EROS и L4). Работа над EROS была приостановлена в пользу Coyotos, которая решила эти проблемы. По состоянию на 2006 год EROS и его преемники являются единственными широко доступными системами, основанными на возможностях, которые работают на стандартном оборудовании.
Статус
Работа над EROS и Coyotos первоначальной командой прекращена, но существует система-преемник. Система CapROS разрабатывается непосредственно на основе кодовой базы EROS. Ожидается, что CapROS будет выпущен в различных коммерческих проектах.