[armv9]-Introducing-Arm-Confidential-Compute-Architecture
1. 學(xué)習(xí)目標(biāo):
? 機(jī)密計(jì)算的定義
? 描述一個(gè)復(fù)雜的系統(tǒng)信任鏈
? 了解 Realm 是 Arm CCA 引入的受保護(hù)執(zhí)行環(huán)境
? 解釋如何在 Arm CCA 的實(shí)施中創(chuàng)建、管理和執(zhí)行領(lǐng)域
? 定義可信執(zhí)行環(huán)境 (TEE) 和領(lǐng)域之間的區(qū)別
? 解釋 Realm 所有者如何在 Realm 中建立信任
相關(guān)文檔:
<Introducing-Arm-Confidential-Compute-Architecture.pdf>
AArch64 Exception model
AArch64 Memory management
AArch64 virtualization
Introduction to security
2 What is Confidential Computing?
機(jī)密計(jì)算是通過在可信賴的硬件支持的安全環(huán)境中執(zhí)行計(jì)算來保護(hù)使用中的數(shù)據(jù)。
這種保護(hù)保護(hù)代碼和數(shù)據(jù)免受特權(quán)軟件和硬件代理的觀察或修改。
在機(jī)密計(jì)算環(huán)境中執(zhí)行的任何應(yīng)用程序或操作系統(tǒng)都可以與系統(tǒng)的其余部分隔離地執(zhí)行。 未經(jīng)明確許可,在該平臺(tái)上執(zhí)行的任何其他參與者都無法觀察到隔離執(zhí)行生成或消耗的任何數(shù)據(jù)
2.1 Arm CCA requirements
在 Arm CCA 系統(tǒng)中執(zhí)行的代碼不必信任在環(huán)境或任何可能影響環(huán)境的外圍設(shè)備上執(zhí)行的大型復(fù)雜軟件堆棧,例如支持 DMA 的設(shè)備。 Arm CCA 消除了與軟件堆棧或硬件開發(fā)人員的許多關(guān)系的需要
如果安全架構(gòu)師在云服務(wù)器系統(tǒng)上部署負(fù)載,他們可能不知道該系統(tǒng)的虛擬機(jī)管理程序的開發(fā)人員是誰,他們可能會(huì)考慮 Arm CCA。 由于虛擬機(jī)管理程序未知,這可能導(dǎo)致在沒有 Arm CCA 的平臺(tái)上執(zhí)行缺乏信任
Arm CCA 允許應(yīng)用程序開發(fā)人員安全地部署工作負(fù)載,而無需信任底層軟件基礎(chǔ)設(shè)施,例如安全世界中的虛擬機(jī)管理程序、內(nèi)核或核心。
為了允許 Arm CCA,平臺(tái)必須提供以下內(nèi)容:
? 提供與所有不受信任的代理隔離的執(zhí)行環(huán)境
? 建立執(zhí)行環(huán)境已初始化為可信賴狀態(tài)的機(jī)制。 初始化將要求執(zhí)行環(huán)境擁有自己的信任鏈,獨(dú)立于平臺(tái)中并行不可信環(huán)境使用的信任鏈
3 Arm CCA extensions
Arm CCA 允許您部署應(yīng)用程序或虛擬機(jī) (VM),同時(shí)防止更有特權(quán)的軟件實(shí)體(例如管理程序)進(jìn)行訪問。但是,通常管理內(nèi)存等資源的正是這些特權(quán)軟件實(shí)體。在這種情況下,特權(quán)軟件實(shí)體(例如管理程序)確實(shí)可以訪問應(yīng)用程序或 VM 的內(nèi)存。
Arm CCA 允許您控制 VM,但刪除了訪問該 VM 使用的代碼、寄存器狀態(tài)或數(shù)據(jù)的權(quán)利。
通過創(chuàng)建名為 Realms 的受保護(hù) VM 執(zhí)行空間來實(shí)現(xiàn)分離。 Realm 在代碼執(zhí)行和數(shù)據(jù)訪問方面與正常世界完全隔離。 Arm CCA 通過結(jié)合架構(gòu)硬件擴(kuò)展和固件來實(shí)現(xiàn)這種分離。
在 Arm CCA 中,Arm 應(yīng)用程序 PE 上的硬件擴(kuò)展稱為領(lǐng)域管理擴(kuò)展 (RME)。 RME 與領(lǐng)域控制的專業(yè)固件交互,稱為領(lǐng)域管理監(jiān)視器 (RMM),以及異常級(jí)別 3 中的監(jiān)視器代碼。
我們?cè)?Arm CCA 硬件架構(gòu)和 Arm CCA 軟件架構(gòu)中描述了這些元素。
3.1 Realms
Realm 是一個(gè) Arm CCA 環(huán)境,可以由 Normal world Host 動(dòng)態(tài)分配。主機(jī)是管理應(yīng)用程序或虛擬機(jī) (VM) 的監(jiān)控軟件。 Realm 及其執(zhí)行平臺(tái)的初始狀態(tài)可以被證明。證明允許 Realm 所有者在向 Realm 提供任何機(jī)密之前建立對(duì) Realm 的信任。 Realm 不必從控制它的非安全虛擬機(jī)管理程序繼承信任。主機(jī)可以分配和管理資源分配。 Host 可以管理 Realm VM 操作的調(diào)度。但是,Host 無法觀察或修改 Realm 執(zhí)行的指令。領(lǐng)域可以在主機(jī)控制下創(chuàng)建和銷毀。可以通過主機(jī)請(qǐng)求以類似于管理任何其他非機(jī)密 VM 的管理程序的方式添加或刪除頁面。
要運(yùn)行 CCA 系統(tǒng),需要修改 Host。主機(jī)繼續(xù)控制非機(jī)密虛擬機(jī),但需要與 Arm CCA 固件通信,特別是領(lǐng)域管理監(jiān)視器 (RMM)。 RMM 的操作在 Arm CCA 軟件擴(kuò)展中討論。
3.2 Realm world and Root world
Armv8-A TrustZone 擴(kuò)展允許安全執(zhí)行代碼和隔離數(shù)據(jù),通過兩個(gè)獨(dú)立的世界,安全世界和正常世界。世界是 PE 的安全狀態(tài)和物理地址空間的組合。 PE 正在執(zhí)行的安全狀態(tài)決定了 PE 可以訪問哪些物理地址空間。在安全狀態(tài)下,PE 可以訪問安全和非安全物理地址空間,而在非安全狀態(tài)下,它只能訪問非安全物理地址空間。正常世界通常用于指代非安全狀態(tài)和非安全物理地址空間的組合。作為 Armv9-A 的一部分提供的 Arm CCA 引入了領(lǐng)域管理擴(kuò)展或 RME。這個(gè)擴(kuò)展引入了兩個(gè)額外的世界,Realm 世界和 Root 世界:
? Root world 引入了Root 安全狀態(tài)和Root 物理地址空間。 PE 在異常級(jí)別 3 中運(yùn)行時(shí)處于根安全狀態(tài)。根 PA 與安全 PA 是分開的。這是與 Armv8-A TrustZone 的主要區(qū)別,其中異常級(jí)別 3 代碼沒有私有地址空間,而是使用安全 PA。后者仍然被 S_EL2/1/0 使用。 Monitor 在 Root 世界中運(yùn)行。
? Realm 世界類似于 TrustZone Secure 世界。 Realm 世界由 Realm 安全狀態(tài)和 Realm PA 組成。 Realm 狀態(tài)代碼可以在 R_EL2、R_EL1 和 R_EL0 執(zhí)行,并且在 Realm 世界中運(yùn)行的控制固件可以訪問 Normal 世界中的內(nèi)存以允許共享緩沖區(qū)。
下圖顯示了四個(gè)基于 RME 的世界,以及它們與 SCR_EL3 NS 和 NSE 位的關(guān)系:
Root world允許可信啟動(dòng)執(zhí)行和不同世界之間的切換。 PE 重置為 Root 世界。 Realm 世界為 VM 提供了一個(gè)與正常和安全世界隔離的執(zhí)行環(huán)境。在正常世界中,VM 需要來自主機(jī)的控制。為了完全控制 Realm 創(chuàng)建和執(zhí)行,Arm CCA 系統(tǒng)提供:
? 領(lǐng)域管理擴(kuò)展,這是架構(gòu)所需的硬件擴(kuò)展,以允許隔離的領(lǐng)域虛擬機(jī)執(zhí)行
? 領(lǐng)域管理監(jiān)視器,它是固件的一部分,用于根據(jù)普通世界主機(jī)的請(qǐng)求管理領(lǐng)域的創(chuàng)建和執(zhí)行
我們?cè)?Arm CCA 硬件架構(gòu)和 Arm CCA 軟件架構(gòu)中更詳細(xì)地描述了這些組件。非 RME PE 中的世界切換由 SCR_EL3.NS 位控制。異常級(jí)別 3 軟件在切換到安全世界時(shí)設(shè)置 NS = 0,在切換到正常世界時(shí)設(shè)置 NS = 1。 RME 實(shí)現(xiàn)的 PE 中的世界切換通過添加到 SCR_EL3 寄存器的新 SCR_EL3.NSE 位進(jìn)行擴(kuò)展。下表顯示了這些位如何控制四個(gè)世界之間的執(zhí)行和訪問:
3.3 What is the difference between Arm TrustZone extensions and Arm RME?
所有 Arm A-Profile 處理器都可以選擇實(shí)現(xiàn) Arm TrustZone 架構(gòu)擴(kuò)展。這些擴(kuò)展允許開發(fā)獨(dú)立的執(zhí)行和數(shù)據(jù)環(huán)境。像可信操作系統(tǒng) (TOS) 這樣的元素可以為可信應(yīng)用程序提供服務(wù),這些應(yīng)用程序獨(dú)立執(zhí)行,以服務(wù)來自正常世界中運(yùn)行的富操作系統(tǒng)的安全請(qǐng)求。
Armv8.4-A 在安全世界中添加虛擬化,讓您可以在安全世界中管理多個(gè)安全分區(qū)。此功能可以允許將多個(gè) TOS 應(yīng)用于一個(gè)系統(tǒng)。在 S_EL2 執(zhí)行的安全分區(qū)管理器 (SPM) 是安全分區(qū)的管理器。 SPM 具有與普通世界中的虛擬機(jī)管理程序類似的功能。
在操作中,Trusted OS 通常是信任鏈的一部分,它由更高權(quán)限的固件驗(yàn)證,在某些系統(tǒng)中這可能是 SPM。這意味著 TOS 依賴于與更高權(quán)限固件開發(fā)人員的關(guān)系。
有兩種方法可以啟動(dòng) TOS 的執(zhí)行:
? Rich OS yielding,Rich OS進(jìn)入空閑循環(huán),執(zhí)行SMC指令通過Monitor調(diào)用TOS
? 以可信操作系統(tǒng)為目標(biāo)的中斷。安全類型 1 中斷用于執(zhí)行 TOS。在正常世界執(zhí)行期間斷言的安全類型 1 中斷通過監(jiān)視器調(diào)用 TOS。
Realm 虛擬機(jī)不同于 Trusted OS 或 Trusted 應(yīng)用程序,因?yàn)?Realm VM 是由 Normal world Host 控制的。在創(chuàng)建和內(nèi)存分配等方面,Realm VM 的行為與任何其他受主機(jī)控制的 VM 一樣。 Realm VM 執(zhí)行和 Trusted OS 執(zhí)行之間的區(qū)別在于 Realm 沒有啟用任何物理中斷。 Realm 的所有中斷都由管理程序虛擬化,然后通過傳遞給 RMM 的命令發(fā)送給 Realm。這意味著受損的管理程序可能會(huì)阻止 Realm VM 的執(zhí)行,因此無法保證 Realm 的執(zhí)行
Realm 執(zhí)行和內(nèi)存訪問由控制主機(jī)軟件(例如管理程序)初始化。 Realm 不必由主機(jī)驗(yàn)證。 Realm 可以繞過任何信任鏈,因?yàn)樗梢允褂?RME 初始化證明。有關(guān)更多信息,請(qǐng)參閱證明。 Realm 也與控制軟件完全隔離。如果 Realm 由 Host 初始化,則 Host 無法查看 Realm 的數(shù)據(jù)或數(shù)據(jù)存儲(chǔ)器。
Realms 和 TOS 的使用之間的主要區(qū)別在于安全執(zhí)行和 Realm 執(zhí)行之間的設(shè)計(jì)意圖。
可信應(yīng)用程序用于接近系統(tǒng)開發(fā)的參與者所擁有的平臺(tái)特定服務(wù),例如有機(jī)硅供應(yīng)商 (SiP) 和原始設(shè)備制造商 (OEM)。
Realm 執(zhí)行的目的是允許一般開發(fā)人員在系統(tǒng)上執(zhí)行代碼,而無需與計(jì)算系統(tǒng)中的開發(fā)人員建立復(fù)雜的業(yè)務(wù)關(guān)系。
Arm CCA 允許在普通世界主機(jī)的控制下按需創(chuàng)建和銷毀領(lǐng)域。可以從 Realms 動(dòng)態(tài)添加或檢索資源。這為更多應(yīng)用程序和用戶帶來了與設(shè)備相關(guān)的服務(wù)可用的隔離優(yōu)勢(shì)。
信任通常根據(jù)機(jī)密性、完整性和真實(shí)性進(jìn)行定義,并在以下列表中進(jìn)行了解釋:
? 由于機(jī)密性,Arm CCA 環(huán)境的代碼數(shù)據(jù)或狀態(tài)無法被同一設(shè)備上運(yùn)行的其他軟件觀察到,即使該軟件具有更高的特權(quán)
? 由于完整性,Arm CCA 環(huán)境的代碼數(shù)據(jù)或狀態(tài)無法被同一設(shè)備上運(yùn)行的其他軟件修改,即使該軟件具有更高的特權(quán)
? 具有真實(shí)性,同一設(shè)備上運(yùn)行的其他軟件可以修改代碼或數(shù)據(jù),但可以識(shí)別任何更改
可信應(yīng)用程序和 TOS 可以為系統(tǒng)提供機(jī)密性、完整性和真實(shí)性。 Realm 執(zhí)行可以為系統(tǒng)提供機(jī)密性和完整性
Arm CCA系統(tǒng)提供的四世界環(huán)境,讓Secure世界和Realm世界完全分離。這意味著可信應(yīng)用程序不必關(guān)心任何領(lǐng)域虛擬機(jī)的執(zhí)行,領(lǐng)域虛擬機(jī)也不關(guān)心任何可信應(yīng)用程序的執(zhí)行
4 Arm CCA hardware architecture
4.1 Realm world requirements
和其它的security state一樣,Realm world也有3個(gè)exception levels: R_EL0、 R_EL1、 and R_EL2. 其中:
Realm VMs 運(yùn)行在R_EL1和R_EL0.
Realm Management Monior (RMM)運(yùn)行在R_EL2
總結(jié)
以上是生活随笔為你收集整理的[armv9]-Introducing-Arm-Confidential-Compute-Architecture的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [问答]-EL1t和EL1h中的后缀t和
- 下一篇: TEEC_Context和TEEC_In