Защитное кольцо
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( февраль 2015 г. ) |
В информатике доменов защита иерархическая [ 1 ] [ 2 ] Часто называемые кольцами защиты — это механизмы защиты данных и функций от сбоев (путем повышения отказоустойчивости ) и вредоносного поведения (путем обеспечения компьютерной безопасности ).
Компьютерные операционные системы предоставляют разные уровни доступа к ресурсам. Защитное кольцо — это один из двух или более иерархических или слоев привилегий в уровней архитектуре компьютерной системы . Обычно это аппаратно обеспечивается некоторыми ЦП архитектурами , которые обеспечивают различные режимы ЦП оборудования или микрокода на уровне . Кольца расположены в иерархии от наиболее привилегированных (наиболее доверенных, обычно с нулевым номером) до наименее привилегированных (наименее доверенных, обычно с самым высоким номером кольца). В большинстве операционных систем кольцо 0 — это уровень с наибольшим количеством привилегий и наиболее непосредственно взаимодействует с физическим оборудованием, таким как определенные функции ЦП (например, регистры управления) и контроллеры ввода-вывода.
Предусмотрены специальные механизмы, позволяющие внешнему кольцу получать доступ к ресурсам внутреннего кольца заранее определенным образом, а не разрешать произвольное использование. Правильное ограничение доступа между кольцами может повысить безопасность, предотвращая неправомерное использование программами одного кольца или уровня привилегий ресурсов, предназначенных для программ в другом. Например, шпионскому ПО, работающему как пользовательская программа в Ring 3, следует запретить включение веб-камеры без уведомления пользователя, поскольку доступ к оборудованию должен быть функцией Ring 1, зарезервированной для драйверов устройств . Такие программы, как веб-браузеры, работающие в кольцах с более высокими номерами, должны запрашивать доступ к сети, ресурсу, ограниченному кольцом с меньшим номером.
X86S, недавно опубликованная архитектура Intel, имеет только кольцо 0 и кольцо 3. Кольцо 1 и 2 будут удалены из X86S, поскольку современные операционные системы никогда их не используют. [ 3 ]
Реализации
[ редактировать ]Множественные кольца защиты были одной из самых революционных концепций, представленных операционной системой Multics , высокозащищенной предшественницей современного Unix семейства операционных систем . Мэйнфрейм GE 645 имел некоторый контроль доступа к оборудованию, включая те же два режима, что и другие машины серии GE-600, и разрешения на уровне сегмента в его блоке управления памятью («Добавляющий блок»), но этого было недостаточно для обеспечить полную поддержку колец аппаратно, поэтому Multics поддерживала их, улавливая переходы между кольцами в программном обеспечении; [ 4 ] его преемник, Honeywell 6180 , реализовал их аппаратно, с поддержкой восьми колец; [ 5 ] Кольца защиты в Multics были отделены от режимов ЦП; код во всех кольцах, кроме кольца 0, и некоторых кодов кольца 0, работал в подчиненном режиме. [ 6 ]
Однако большинство систем общего назначения используют только два кольца, даже если аппаратное обеспечение, на котором они работают, обеспечивает большее количество режимов ЦП . Например, Windows 7 и Windows Server 2008 (и их предшественники) используют только два кольца: кольцо 0 соответствует режиму ядра , а кольцо 3 — пользовательскому режиму . [ 7 ] потому что более ранние версии Windows NT работали на процессорах, поддерживающих только два уровня защиты. [ 8 ]
Многие современные архитектуры ЦП (включая популярную архитектуру Intel x86 ) включают в себя ту или иную форму кольцевой защиты, хотя операционная система Windows NT , как и Unix, не использует эту функцию в полной мере. OS/2 в некоторой степени использует три кольца: [ 9 ] Звонок 0 для кода ядра и драйверов устройств, звонок 2 для привилегированного кода (пользовательские программы с правами доступа к вводу-выводу) и звонок 3 для непривилегированного кода (почти все пользовательские программы). В DOS ядро, драйверы и приложения обычно работают на кольце 3 (однако это касается только случая, когда используются драйверы защищенного режима или расширители DOS; в качестве ОС реального режима система работает практически без защиты), тогда как 386 менеджеров памяти, такие как EMM386, работают на кольце 0. В дополнение к этому DR-DOS 'EMM386 3.xx может дополнительно запускать некоторые модули (например, DPMS ) на кольце 1. OpenVMS использует четыре режима, которые называются (в порядке убывания привилегий) «Ядро», «Исполнительный», «Супервизор» и «Пользователь».
этой структуре проектирования возникло с распространением программного обеспечения Xen VMM , постоянным обсуждением монолитных Возобновление интереса к и микроядер (особенно в группах новостей Usenet и на веб-форумах ), структурой проектирования Microsoft Ring-1 в рамках их инициативы NGSCB и гипервизоры на основе виртуализации x86, такие как Intel VT-x (ранее Vanderpool).
В оригинальной системе Multics было восемь колец, но во многих современных системах их меньше. Аппаратное обеспечение всегда сохраняет информацию о текущем кольце потока исполняемых команд с помощью специального машинного регистра. В некоторых системах областям виртуальной памяти вместо этого аппаратно назначаются кольцевые номера. Одним из примеров является Data General Eclipse MV/8000 , в котором три старших бита счетчика программ (PC) служили кольцевым регистром. Таким образом, код, выполняющийся, например, с виртуальным ПК, установленным на 0xE200000, автоматически окажется в кольце 7, а вызов подпрограммы в другом разделе памяти автоматически вызовет кольцевую передачу.
Аппаратное обеспечение строго ограничивает способы передачи управления от одного кольца к другому, а также налагает ограничения на типы доступа к памяти, которые могут осуществляться между кольцами. На примере x86 существует специальный [ нужны разъяснения ] структура шлюза , на которую ссылается инструкция вызова , которая передает управление безопасным способом [ нужны разъяснения ] к заранее определенным точкам входа в кольца более низкого уровня (более доверенные); это действует как вызов супервизора во многих операционных системах, использующих кольцевую архитектуру, . Аппаратные ограничения предназначены для ограничения возможностей случайных или злонамеренных нарушений безопасности. Кроме того, наиболее привилегированному кольцу могут быть предоставлены специальные возможности (например, адресация реальной памяти в обход оборудования виртуальной памяти).
Архитектура ARM версии 7 реализует три уровня привилегий: приложение (PL0), операционная система (PL1) и гипервизор (PL2). Необычно то, что уровень 0 (PL0) является уровнем с наименьшими привилегиями, а уровень 2 — уровнем с наибольшими привилегиями. [ 10 ] Версия ARM 8 реализует четыре уровня исключений: приложение (EL0), операционная система (EL1), гипервизор (EL2) и безопасный монитор/прошивка (EL3) для AArch64. [ 11 ] : D1-2454 и AArch32. [ 11 ] : G1-6013
В некоторых системах кольцевую защиту можно комбинировать с режимами процессора главного/ядра/привилегированного/ ( режим супервизора в сравнении с подчиненным/непривилегированным/пользовательским режимом). Операционные системы, работающие на оборудовании, поддерживающем оба типа защиты, могут использовать обе формы защиты или только одну.
Эффективное использование кольцевой архитектуры требует тесного взаимодействия между оборудованием и операционной системой. [ почему? ] Операционные системы, предназначенные для работы на нескольких аппаратных платформах, могут лишь ограниченно использовать кольца, если они присутствуют не на каждой поддерживаемой платформе. Часто модель безопасности упрощается до «ядра» и «пользователя», даже если аппаратное обеспечение обеспечивает более тонкую детализацию посредством колец.
Режимы
[ редактировать ]Режим супервизора
[ редактировать ]С компьютерной точки зрения режим супервизора — это аппаратно-опосредованный флаг, который можно изменить с помощью кода, запускаемого в программном обеспечении системного уровня. Задачи или потоки системного уровня могут [ а ] установите этот флаг во время работы, тогда как приложения пользовательского уровня не будут этого делать. Этот флаг определяет, можно ли будет выполнять операции машинного кода, такие как изменение регистров для различных таблиц дескрипторов или выполнение таких операций, как отключение прерываний. Идея использования двух разных режимов работы исходит из того, что «чем больше мощности, тем больше ответственности» - программа в режиме супервизора никогда не выйдет из строя, поскольку сбой может привести к сбою всей компьютерной системы.
Режим супервизора — это «режим выполнения на некоторых процессорах, который позволяет выполнять все инструкции, включая привилегированные инструкции. Он также может предоставлять доступ к другому адресному пространству, оборудованию управления памятью и другим периферийным устройствам. Это режим, в котором операционная система обычно бежит». [ 12 ]
В монолитном ядре операционная система работает в режиме супервизора, а приложения — в пользовательском режиме. Другие типы операционных систем , например, с экзоядром или микроядром , не обязательно разделяют такое поведение.
Несколько примеров из мира ПК:
- Linux , macOS и Windows — три операционные системы, использующие режим супервизора/пользователя. Для выполнения специализированных функций код пользовательского режима должен выполнить системный вызов в режиме супервизора или даже в пространство ядра, где доверенный код операционной системы выполнит необходимую задачу и вернет выполнение обратно в пользовательское пространство. Дополнительный код может быть добавлен в пространство ядра с помощью загружаемых модулей ядра , но только пользователем с необходимыми разрешениями, поскольку на этот код не распространяются ограничения контроля доступа и безопасности пользовательского режима.
- DOS (пока не загружен менеджер памяти 386, такой как EMM386 ), а также другие простые операционные системы и многие встроенные устройства постоянно работают в режиме супервизора, что означает, что драйверы могут быть написаны непосредственно как пользовательские программы.
Большинство процессоров имеют как минимум два разных режима. Процессоры x86 имеют четыре разных режима, разделенных на четыре разных кольца. Программы, работающие в кольце 0, могут делать все, что угодно с системой , а код, работающий в кольце 3, должен иметь возможность дать сбой в любой момент без воздействия на остальную часть компьютерной системы. Кольцо 1 и Кольцо 2 используются редко, но их можно настроить с разными уровнями доступа.
В большинстве существующих систем переключение из пользовательского режима в режим ядра связано с высокими затратами производительности. Было измерено, по основному запросу getpid
, на большинстве машин будет стоить 1000–1500 циклов. Из них только около 100 предназначены для фактического переключения (70 из пользовательского в пространство ядра и 40 обратно), остальное — «накладные расходы ядра». [ 13 ] [ 14 ] В микроядре L3 минимизация этих накладных расходов снизила общую стоимость примерно до 150 тактов. [ 13 ]
Морис Уилкс писал: [ 15 ]
... в конечном итоге стало ясно, что иерархическая защита, обеспечиваемая кольцами, не совсем соответствует требованиям системного программиста и практически не улучшает простую систему, имеющую только два режима. Кольца защиты поддаются эффективной аппаратной реализации, но о них мало что можно сказать. [...] Привлекательность детальной защиты сохранялась даже после того, как стало ясно, что кольца защиты не дают ответа... Это снова оказалось тупиком...
Чтобы повысить производительность и детерминированность, некоторые системы помещают в режим ядра функции, которые, скорее всего, будут рассматриваться как логика приложения, а не как драйверы устройств; приложения безопасности ( контроль доступа , межсетевые экраны в качестве примеров приводятся и т. д.) и мониторы операционной системы. По крайней мере, одна встроенная система управления базами данных, e X treme DB Kernel Mode , была разработана специально для развертывания в режиме ядра, чтобы предоставить локальную базу данных для функций приложений на основе ядра и исключить переключение контекста , которое в противном случае могло бы произойти при взаимодействии функций ядра. с системой базы данных, работающей в пользовательском режиме. [ 16 ]
Функции также иногда перемещаются по кольцам в другом направлении. Ядро Linux, например, внедряет в процессы раздел vDSO , содержащий функции, которые обычно требуют системного вызова, то есть кольцевого перехода. Вместо системного вызова эти функции используют статические данные, предоставляемые ядром. Это позволяет избежать необходимости кольцевого перехода и поэтому более легковесно, чем системный вызов. Функцию gettimeofday можно реализовать таким образом.
Режим гипервизора
[ редактировать ]Последние процессоры Intel и AMD предлагают инструкции по виртуализации x86 для гипервизора для управления доступом к оборудованию Ring 0. Хотя они взаимно несовместимы, как Intel VT-x (под кодовым названием «Vanderpool»), так и AMD-V (под кодовым названием «Pacifica») позволяют гостевой операционной системе запускать операции Ring 0 изначально, не затрагивая других гостей или ОС хоста.
До аппаратной виртуализации гостевые операционные системы работали под кольцом 1. Любая попытка, требующая для выполнения более высокого уровня привилегий (кольцо 0), будет вызывать прерывание, а затем обрабатываться с помощью программного обеспечения, так называемого «Trap and Emulate».
Чтобы способствовать виртуализации и снизить накладные расходы, вызванные вышеуказанной причиной, VT-x и SVM позволяют гостю работать в кольце 0. VT-x представляет корневую/некорневую операцию VMX: гипервизор работает в корневом режиме VMX, обладая самым высоким привилегия. Гостевая ОС работает в режиме работы VMX без полномочий root, что позволяет им работать на кольце 0 без реальных аппаратных привилегий. Операции VMX без полномочий root и переходы VMX контролируются структурой данных, называемой управлением виртуальной машины. [ 17 ] VT-x позволяет как гипервизору, так и гостевой ОС работать под кольцом 0, что делает принцип «ловушка и эмуляция» устаревшим и повышает производительность виртуализации.
Уровень привилегий
[ редактировать ]Уровень привилегий в x86 наборе команд контролирует доступ программы, выполняющейся в данный момент на процессоре, к таким ресурсам, как области памяти, порты ввода-вывода и специальные инструкции. Существует 4 уровня привилегий: от 0 (самый привилегированный) до 3 (наименее привилегированный). Большинство современных операционных систем используют уровень 0 для ядра/исполнительной системы и уровень 3 для прикладных программ. Любой ресурс, доступный уровню n, также доступен уровням от 0 до n, поэтому уровни привилегий представляют собой кольца. Когда процесс с меньшими привилегиями пытается получить доступ к процессу с более высокими привилегиями, общей ошибки защиты в ОС сообщается об исключении .
Нет необходимости использовать все четыре уровня привилегий. Современные операционные системы с широкой долей рынка, включая Microsoft Windows , macOS , Linux , iOS и Android, в основном используют механизм подкачки с одним битом для указания уровня привилегий: супервизора или пользователя (бит U/S). Windows NT использует двухуровневую систему. [ 18 ] Программы реального режима в 8086 выполняются на уровне 0 (самый высокий уровень привилегий), тогда как виртуальный режим в 8086 выполняет все программы на уровне 3. [ 19 ]
Потенциальное будущее использование нескольких уровней привилегий, поддерживаемых семейством x86 ISA, включает контейнеризацию и виртуальные машины . Ядро основной операционной системы может использовать инструкции с полным доступом привилегий ( режим ядра ), тогда как приложения, работающие в гостевой ОС на виртуальной машине или контейнере, могут использовать самый низкий уровень привилегий в пользовательском режиме. Ядро виртуальной машины и гостевой ОС сами могут использовать промежуточный уровень привилегий инструкций для вызова и виртуализации операций режима ядра, таких как системные вызовы, с точки зрения гостевой операционной системы. [ 20 ]
ИОПЛ
[ редактировать ]Флаг IOPL ( уровень привилегий ввода-вывода ) присутствует на всех процессорах x86, совместимых с IA-32 . Он занимает биты 12 и 13 в регистре FLAGS . В защищенном режиме и длинном режиме отображается уровень привилегий ввода-вывода текущей программы или задачи. Текущий уровень привилегий (CPL) (CPL0, CPL1, CPL2, CPL3) задачи или программы должен быть меньше или равен IOPL, чтобы задача или программа могли получить доступ к портам ввода-вывода .
IOPL можно изменить с помощью POPF(D)
и IRET(D)
только тогда, когда текущий уровень привилегий равен Ring 0.
Помимо IOPL, разрешения порта ввода-вывода в TSS также принимают участие в определении возможности задачи получить доступ к порту ввода-вывода.
Разнообразный
[ редактировать ]В системах x86 аппаратная виртуализация x86 ( VT-x и SVM ) называется «кольцом -1», режим управления системой называется «кольцом -2», Intel Management Engine и процессор безопасности платформы AMD иногда называются «кольцом -2». «кольцо −3». [ 21 ]
Использование аппаратных возможностей
[ редактировать ]Многие аппаратные архитектуры ЦП обеспечивают гораздо большую гибкость, чем та, которую используют операционные системы , которые они обычно используют. Правильное использование сложных режимов ЦП требует очень тесного взаимодействия между операционной системой и ЦП и, таким образом, имеет тенденцию привязывать ОС к архитектуре ЦП. Когда ОС и ЦП специально разработаны друг для друга, это не проблема (хотя некоторые аппаратные функции все еще могут оставаться неиспользованными), но когда ОС спроектирована так, чтобы быть совместимой с несколькими разными архитектурами ЦП, большая часть функции режима ЦП могут игнорироваться ОС. Например, причина, по которой Windows использует только два уровня (кольцо 0 и кольцо 3), заключается в том, что некоторые аппаратные архитектуры, которые поддерживались в прошлом (например, PowerPC или MIPS ), реализовали только два уровня привилегий. [ 7 ]
Multics была операционной системой, разработанной специально для специальной архитектуры ЦП (которая, в свою очередь, была разработана специально для Multics), и она в полной мере использовала доступные ей режимы ЦП. Однако это было исключение из правил. Сегодня такая высокая степень взаимодействия между ОС и оборудованием часто не является экономически эффективной, несмотря на потенциальные преимущества в плане безопасности и стабильности.
В конечном счете, целью отдельных режимов работы ЦП является обеспечение аппаратной защиты от случайного или преднамеренного повреждения системной среды (и соответствующих нарушений безопасности системы) программным обеспечением. Только «доверенные» части системного программного обеспечения могут выполняться в неограниченной среде режима ядра, и то, в парадигматических проектах, только в случае крайней необходимости. Все остальное программное обеспечение выполняется в одном или нескольких пользовательских режимах. Если процессор генерирует состояние сбоя или исключения в пользовательском режиме, в большинстве случаев стабильность системы не затрагивается; если процессор генерирует ошибку или исключение в режиме ядра, большинство операционных систем останавливают работу системы с неисправимой ошибкой. При наличии иерархии режимов (кольцевая безопасность) сбои и исключения на одном уровне привилегий могут дестабилизировать только уровни привилегий с более высокими номерами. Таким образом, ошибка в кольце 0 (режим ядра с наивысшими привилегиями) приведет к сбою всей системы, но ошибка в кольце 2 повлияет только на кольца 3 и далее и самое большее на само кольцо 2.
Переходы между режимами осуществляются на усмотрение исполняющего потока , когда происходит переход с уровня высоких привилегий на уровень с низкими привилегиями (как из режима ядра в пользовательский режим), но переходы с более низких уровней привилегий на более высокие могут происходить только через безопасный режим. , аппаратно-управляемые «ворота», которые проходят путем выполнения специальных инструкций или при получении внешних прерываний.
Операционные системы на основе микроядра пытаются свести к минимуму объем кода, выполняемого в привилегированном режиме, в целях безопасности и элегантности , но в конечном итоге жертвуя производительностью.
См. также
[ редактировать ]- Вызов шлюза (Intel)
- Сегментация памяти
- Защищенный режим – доступен на x86-совместимых процессорах 80286 и новее.
- IOPL (директива CONFIG.SYS) – директива OS/2 для запуска кода DLL на кольце 2 вместо кольца 3.
- Дескриптор сегмента
- Инструкция по вызову супервизора
- Режим управления системой (SMM)
- Принцип наименьших привилегий
Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Каргер, Пол А.; Герберт, Эндрю Дж. (1984). Архитектура расширенных возможностей для поддержки решетчатой безопасности и отслеживания доступа . Симпозиум IEEE 1984 года по безопасности и конфиденциальности. п. 2. дои : 10.1109/SP.1984.10001 . ISBN 0-8186-0532-4 . S2CID 14788823 .
- ^ Биндер, В. (2001). «Проектирование и реализация ядра мобильного агента J-SEAL2». Материалы симпозиума 2001 г. по приложениям и Интернету . стр. 35–42. дои : 10.1109/SAINT.2001.905166 . ISBN 0-7695-0942-8 . S2CID 11066378 .
- ^ «Представление упрощенной архитектуры Intel будущего» . Интел . Проверено 28 мая 2024 г.
- ^ «Аппаратная архитектура для реализации защитных колец» . Коммуникации АКМ . 15 (3). Март 1972 года . Проверено 27 сентября 2012 г.
- ^ «Мультикс-словарь — кольцо» . Проверено 27 сентября 2012 г.
- ^ Виртуальная память Multics, часть 2 (PDF) . Информационные системы Honeywell. Июнь 1972 г., стр. 160–161.
- ^ Перейти обратно: а б Руссинович, Марк Э.; Дэвид А. Соломон (2005). Внутреннее устройство Microsoft Windows (4-е изд.). Майкрософт Пресс. стр. 16 . ISBN 978-0-7356-1917-3 .
- ^ Руссинович, Марк (2012). Внутреннее устройство Windows, часть 1 (6-е изд.). Редмонд, Вашингтон: Microsoft Press. п. 17. ISBN 978-0-7356-4873-9 .
Причина, по которой Windows использует только два уровня, заключается в том, что некоторые аппаратные архитектуры, которые поддерживались в прошлом (например, Compaq Alpha и Silicon Graphics MIPS ), реализовали только два уровня привилегий.
- ^ «Справочник по драйверам презентационных устройств для OS/2 – 5. Знакомство с драйверами презентаций OS/2» . Архивировано из оригинала 15 июня 2015 года . Проверено 13 июня 2015 г.
- ^ Справочное руководство по архитектуре ARM версии ARMv7-A и ARMv7-R . ООО "Арм" с. Б1-1136.
- ^ Перейти обратно: а б Справочное руководство по архитектуре Arm Armv8, для архитектуры A-профиля . Арм, ООО
- ^ «режим супервизора» . ФОЛДОК . 15 февраля 1995 г.
- ^ Перейти обратно: а б Йохен Лидтке (декабрь 1995 г.). «О построении µ-ядра» . Учеб. 15-й симпозиум ACM по принципам операционных систем (SOSP) .
- ^ Оустерхаут, Дж. К. (1990). Почему операционные системы не становятся быстрее, чем аппаратное обеспечение? . Летняя конференция Usenix А. Нахайм, Калифорния. стр. 247–256.
- ^ Морис Уилкс (апрель 1994 г.). «Операционные системы в меняющемся мире» . Обзор операционных систем ACM SIGOPS . 28 (2): 9–21. дои : 10.1145/198153.198154 . ISSN 0163-5980 . S2CID 254134 .
- ^ Горин, Андрей; Криволапов, Александр (май 2008 г.). «Базы данных режима ядра: технология СУБД для высокопроизводительных приложений» . Журнал доктора Добба .
- ^ Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 3C (PDF) . Intel Сотрудничество (опубликовано в сентябре 2016 г.). 2016. стр. 1–3.
- ^ Руссинович, Марк Э.; Соломон, Дэвид А. (2005). Внутреннее устройство Microsoft Windows (4-е изд.). Майкрософт Пресс. п. 16. ISBN 978-0-7356-1917-3 .
- ^ Сунил Матур. Микропроцессор 8086: Архитектура, программирование и интерфейс (изд. Восточной экономики). Обучение PHI.
- ^ Андерсон, Томас; Далин, Майкл (21 августа 2014 г.). «2,2». Операционные системы: принципы и практика (2-е изд.). Рекурсивные книги. ISBN 978-0985673529 .
- ^ Де Гелас, Йохан. «Аппаратная виртуализация: гайки и болты» . АнандТех . Проверено 13 марта 2021 г.
- Справочник программиста Intel 80386
Дальнейшее чтение
[ редактировать ]- Дэвид Т. Роджерс (июнь 2003 г.). Структура динамической подрывной деятельности (PDF) (MSc). Военно-морская аспирантура . hdl : 10945/919 .
- Уильям Дж. Каэлли (2002). «Переобучение «доверенным системам» в эпоху НИИП: уроки прошлого для будущего» . Архивировано из оригинала (PDF) 20 апреля 2015 года.
- Харуна Р. Иса; Уильям Р. Шокли; Синтия Э. Ирвин (май 1999 г.). «Многопоточная архитектура для многоуровневой безопасной обработки транзакций» (PDF) . Материалы симпозиума IEEE по безопасности и конфиденциальности 1999 года . Окленд, Калифорния. стр. 166–179. hdl : 10945/7198 .
- Иван Келли (8 мая 2006 г.). «Портирование MINIX на Xen» (PDF) . Архивировано из оригинала (PDF) 27 августа 2006 года.
- Пол Бархэм; Борис Драгович; Кейр Фрейзер; Стивен Хэнд; Тим Харрис; Алекс Хо; Рольф Нойгебауэр; Ян Пратт; Эндрю Уорфилд (2003). «Xen и искусство виртуализации» (PDF) .
- Прическа Маркуса; Юцюнь Чен; Пол Ингланд; Джон Манферделли. «NGSCB: надежная открытая система» (PDF) . Архивировано из оригинала (PDF) 4 марта.
- Майкл Д. Шредер ; Джером Х. Зальцер (1972). «Аппаратная архитектура для реализации защитных колец» .
- «Руководство разработчика программного обеспечения для архитектуры Intel, том 3: Системное программирование (номер для заказа 243192)» (PDF) . Глава 4 «Защита»; раздел 4.5 «Уровни привилегий». Архивировано из оригинала (PDF) 19 февраля 2009 года.
- Ци-кер Чиуэ; Ганеш Венкитачалам; Прашант Прадхан (декабрь 1999 г.). «Интеграция сегментации и защиты подкачки для безопасных, эффективных и прозрачных программных расширений» . Материалы семнадцатого симпозиума ACM по принципам операционных систем . Раздел 3: Аппаратные возможности защиты в архитектуре Intel X86; подраздел 3.1 Проверки защиты. дои : 10.1145/319151.319161 . ISBN 1581131402 . S2CID 9456119 .
- Такахиро Синагава; Кенджи Коно; Такаши Масуда (17 мая 2000 г.). «Использование механизма сегментации для защиты от вредоносного мобильного кода» (PDF) . Глава 3. Реализация; раздел 3.2.1 Защита кольца. Архивировано из оригинала (PDF) 10 августа 2017 года . Проверено 2 апреля 2018 г.
- Боберт, Уильям Эрл; Р. Кейн (1985). Практическая альтернатива иерархическим политикам добросовестности . 8-я Национальная конференция по компьютерной безопасности.
- Горин, Андрей; Криволапов, Александр (май 2008 г.). «Базы данных режима ядра: технология СУБД для высокопроизводительных приложений» . Журнал доктора Добба .