分级保护域
目录
分级保护域
在计算机科学中,分层保护域(通常称为保护环)是保护数据和功能免受故障(通过提高容错性)和恶意行为(通过提供计算机安全性)的机制。
计算机操作系统提供不同级别的资源访问权限。 保护环是计算机系统体系结构中两个或多个等级或特权层之一。 这通常是由一些在硬件或微代码级别提供不同 CPU 模式的 CPU 架构硬件强制执行的。 环按从最高权限(最受信任,通常编号为零)到最低权限(最不信任,通常具有最高环号)的层次结构排列。 Ring 0 是具有最高权限的级别,允许与物理硬件直接交互,例如某些 CPU 功能和主板上的芯片。
提供环之间的特殊调用门以允许外环以预定义的方式访问内环的资源,而不是允许任意使用。 正确地控制环之间的访问可以通过防止来自一个环或特权级别的程序滥用用于另一个环中的程序的资源来提高安全性。 例如,作为 Ring 3 中的用户程序运行的间谍软件应防止在未通知用户的情况下打开网络摄像头,因为硬件访问应该是为设备驱动程序保留的 Ring 1 功能。 在较高编号环中运行的 Web 浏览器等程序必须请求访问网络,这是一种仅限于较低编号环的资源。
实施
多重保护环是 Multics 操作系统引入的xxxxxx性的概念之一,Multics 操作系统是当今 Unix 操作系统系列的高度安全的前身。 GE 645 大型计算机确实有一些硬件访问控制,但这不足以在硬件中提供对环的完全支持,因此 Multics 通过在软件中捕获环转换来支持它们; 它的继任者 Honeywell 6180 在硬件中实现了它们,支持八个环。 然而,大多数通用系统只使用两个环,即使它们运行的硬件提供了比这更多的 CPU 模式。
许多现代 CPU 体系结构(包括流行的 Intel x86 体系结构)都包含某种形式的环保护,尽管 Windows NT 操作系统(如 Unix)并未充分利用此功能。 OS/2 在某种程度上确实如此,它使用三个环:内核代码和设备驱动程序的环 0,特权代码的环 2(具有 I/O 访问权限的用户程序),非特权代码的环 3(几乎所有用户程序)。 在 DOS 下,内核、驱动程序和应用程序通常在 ring 3 上运行(但是,这仅适用于使用保护模式驱动程序和/或 DOS 扩展程序的情况;作为实模式操作系统,系统在实际上没有任何保护的情况下运行 ),而 386 内存管理器(例如 EMM386)运行在 ring 0。除此之外,DR-DOS’ EMM386 3.xx 可以选择在 ring 1 上运行一些模块(例如 DPMS)。 OpenVMS 使用四种模式,称为(按权限递减的顺序)内核、执行、主管和用户。
随着 Xen VMM 软件的普及、关于整体内核与微内核的持续讨论(特别是在 Usenet 新闻组和 Web 论坛中)、Microsoft 的 Ring-1 设计结构作为其 NGSCB 的一部分,人们对这种设计结构重新产生了兴趣 倡议和基于 x86 虚拟化的管理程序,例如 Intel VT-x(以前称为 Vanderpool)。
最初的 Multics 系统有八个环,但许多现代系统的数量更少。 在特殊机器寄存器的帮助下,硬件始终知道正在执行的指令线程的当前环。 在某些系统中,虚拟内存区域在硬件中被分配了环号。

硬件严格限制了控制从一个环传递到另一个环的方式,并且还强制限制了可以跨环执行的内存访问类型。 以 x86 为例,调用指令引用了一个特殊的门结构,它以安全的方式将控制权转移到较低级别(更可信)环中的预定义入口点; 在许多使用环形架构的操作系统中,这起到主管调用的作用。