在計算機科學中, 分級保護域(英語:hierarchical protection domains),[1][2],經常被叫作保護環(Protection Rings),又稱環型保護(Rings Protection)、CPU環(CPU Rings),簡稱Rings。這是一種用來在發生故障時保護數據和功能,提升容錯度,避免惡意操作 ,提升計算機安全的設計方式。這是一種與基於能力的安全完全相反的方式。[來源請求]
電腦作業系統提供不同的資源訪問級別。在計算機體系結構中,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 7和Windows 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-DOS的EMM386 3.xx可以可選地在Ring 1運行某些模塊。OpenVMS使用內核模式、管理模式、監督模式和用戶模式四種模式(為了遞減特權)。
監控模式
計算機術語中,監控模式是一個可以通過運行在系統級的軟件代碼變更的硬件標誌。系統級任務或線程會在它們運行時設置這個標誌,而用戶空間應用程式不會。這個標誌決定程序是否能否執行一些諸如修改關於各種描述符表的寄存器,或禁止中斷一類的機器碼。監控模式下的程序應該永遠不會掛掉,因為他們一掛掉整個系統就崩潰了。
在某些處理器上監控模式能夠執行的所有指令,包括特權指令,也能訪問到不同的地址空間,存儲器管理硬件和其他外圍設備,作業系統通常運行在該模式。[8]
x86虛擬化
Intel和AMD的CPU都提供了能使hypervisor存取Ring 0硬件的x86虛擬化指令集。x86虛擬化創建了一個叫Ring -1的Ring,所以虛擬機作業系統可以直接運行在Ring 0上而不影響其他虛擬機或者宿主系統。[9]
參見
引用
延伸閱讀
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.