计算机科学中, 分级保护域(英语:hierarchical protection domains),[1][2],经常被叫作保护环Protection Rings),又称环型保护Rings Protection)、CPU环CPU Rings),简称Rings。这是一种用来在发生故障时保护数据和功能,提升容错度,避免恶意操作 ,提升计算机安全的设计方式。这是一种与基于能力的安全英语capability-based security完全相反的方式。[来源请求]

x86保护模式可用的特权级别

电脑操作系统提供不同的资源访问级别。在计算机体系结构中,Rings是由两个或更多的特权态组成。在一些硬件或者微代码级别上提供不同特权态模式的CPU架构上,保护环通常都是硬件强制的。Rings是从最高特权级(通常被叫作0级)到最低特权级(通常对应最大的数字)排列的。在大多数操作系统中,Ring 0拥有最高特权,并且可以和最多的硬件直接交互(比如CPU,内存)。

Rings之间的特殊门是被提供用来允许外层Ring在预定义的方式内访问内层Ring的资源用的,内层Ring可以随便使用外层Ring的资源。正确使用Rings间的门可以阻止某个Ring或者特权级的程序故意滥用其他程序的资源,提升安全性。例如,某个间谍软件作为一个在Ring 3运行的用户程序,它在不通知用户的时候打开摄像头应该会被阻止,因为访问硬件需要使用被驱动程序保留的Ring 1的方法。浏览器一类在高Ring级别运行的程序必须请求权限才能访问网络,也就是受低Ring级别限制的资源。

实现

编辑

多Rings保护机制是Multics操作系统提出的革命性概念之一,Multics是今天的Unix操作系统家族的一个高安全性的前任。 由于GE 645不支持硬件Rings, 所以Multics通过软件捕获Rings的转换[3]。 它的继承者,Honeywell 6180,硬件实现了支持8个Rings。[4] 不过,最通用的操作系统仅用了2个Rings,即使他们运行的硬件提供了更多的特权态。例如Windows 7Windows Server 2008 R2(还有之前版本的Windows)只用了2个Rings:Ring 0 对应内核模式,Ring 3对应用户模式,[5] 原因是运行Windows早期版本的硬件只支持2个保护等级。[6]

大部分现代CPU架构(包括很流行的Intel x86架构)中都有某种形式的保护环,但Windows NT或者Unix这类操作系统没有完整地利用到这个特性。相比之下OS/2使用的更多,它用了3个Rings级别[7]:Ring 0用于内核代码和驱动程序, Ring 2用于某些需要特权的代码(例如需要I/O权限的用户程序),Ring 3用于非特权代码(几乎所有的用户程序都在这一级别)。在DOS下,内核、驱动和应用程序都运行在Ring 3(然而。这也是保护模式驱动和DOS扩展专用的级别;实模式的操作系统没有有效的保护措施),而像EMM386这样的386内存管理程序运行在Ring 0。特别的,DR-DOSEMM386 3.xx可以可选地在Ring 1运行某些模块。OpenVMS使用内核模式、管理模式、监督模式和用户模式四种模式(为了递减特权)。

监控模式

编辑

计算机术语中,监控模式是一个可以通过运行在系统级的软件代码变更的硬件标志。系统级任务或线程会在它们运行时设置这个标志,而用户空间应用程序不会。这个标志决定程序是否能否执行一些诸如修改关于各种描述符表的寄存器,或禁止中断一类的机器码。监控模式下的程序应该永远不会挂掉,因为他们一挂掉整个系统就崩溃了。

在某些处理器上监控模式能够执行的所有指令,包括特权指令,也能访问到不同的地址空间,存储器管理硬件和其他外围设备,操作系统通常运行在该模式。[8]

x86虚拟化

编辑

Intel和AMD的CPU都提供了能使hypervisor存取Ring 0硬件的x86虚拟化指令集。x86虚拟化创建了一个叫Ring -1的Ring,所以虚拟机操作系统可以直接运行在Ring 0上而不影响其他虚拟机或者宿主系统。[9]

参见

编辑

引用

编辑
  1. ^ Paul A. Karger, Andrew J. Herbert, An Augmented Capability Architecture to Support Lattice Security and Traceability of Access[失效链接], sp, p. 2, 1984 IEEE Symposium on Security and Privacy, 1984
  2. ^ Walter Binder, Design and Implementation of the J-SEAL2 Mobile Agent Kernel[失效链接], saint, p. 35, 2001 Symposium on Applications and the Internet (SAINT'01), 2001
  3. ^ A Hardware Architecture for Implementing Protection Rings. [September 27, 2012]. (原始内容存档于2019-12-28). 
  4. ^ Multics Glossary - ring. [September 27, 2012]. (原始内容存档于2020-11-08). 
  5. ^ Russinovich, Mark E.; David A. Solomon. Microsoft Windows Internals 4. Microsoft Press. 2005: 16. ISBN 978-0-7356-1917-3. 
  6. ^ Russinovich, Mark. Windows Internals Part 1. 6th Ed. Redmond, Washington: Microsoft Press. 2012: 17. ISBN 978-0-7356-4873-9. The reason Windows uses only two levels is that some hardware architectures that were supported in the past (such as Compaq Alpha and Silicon Graphics MIPS) implemented only two privilege levels. 
  7. ^ Presentation Device Driver Reference for OS/2 - 5. Introduction to OS/2 Presentation Drivers. [2017-11-25]. (原始内容存档于2013-06-16). 
  8. ^ FOLDOC supervisor mode
  9. ^ Dornan, Andy. Intel VT vs. AMD Pacifica. CMP. 1 November 2005 [11 November 2012]. (原始内容存档于2013-05-30). 

延伸阅读

编辑