分級保護域

維基百科,自由的百科全書
x86保護模式可用的特權級別

計算機科學中, 分級保護域(英語:hierarchical protection domains),[1][2],經常被叫作保護環Protection Rings),又稱環型保護Rings Protection)、CPU環CPU Rings),簡稱Rings。這是一種用來在發生故障時保護數據和功能,提升容錯度,避免惡意操作 ,提升計算機安全的設計方式。這是一種與基於能力的安全英語capability-based security完全相反的方式。[來源請求]

電腦作業系統提供不同的資源訪問級別。在計算機體系結構中,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). 

延伸閱讀[編輯]