• 机密计算的定义
• 描述一个复杂的系统信任链
• 了解 Realm 是 Arm CCA 引入的受保护执行环境
• 解释如何在 Arm CCA 的实施中创建、管理和执行领域
• 定义可信执行环境 (TEE) 和领域之间的区别
• 解释 Realm 所有者如何在 Realm 中建立信任
相关文档:
AArch64 Exception model
AArch64 Memory management
AArch64 virtualization
Introduction to security
机密计算是通过在可信赖的硬件支持的安全环境中执行计算来保护使用中的数据。
这种保护保护代码和数据免受特权软件和硬件代理的观察或修改。
在机密计算环境中执行的任何应用程序或操作系统都可以与系统的其余部分隔离地执行。 未经明确许可,在该平台上执行的任何其他参与者都无法观察到隔离执行生成或消耗的任何数据
在 Arm CCA 系统中执行的代码不必信任在环境或任何可能影响环境的外围设备上执行的大型复杂软件堆栈,例如支持 DMA 的设备。 Arm CCA 消除了与软件堆栈或硬件开发人员的许多关系的需要
如果安全架构师在云服务器系统上部署负载,他们可能不知道该系统的虚拟机管理程序的开发人员是谁,他们可能会考虑 Arm CCA。 由于虚拟机管理程序未知,这可能导致在没有 Arm CCA 的平台上执行缺乏信任
Arm CCA 允许应用程序开发人员安全地部署工作负载,而无需信任底层软件基础设施,例如安全世界中的虚拟机管理程序、内核或核心。
为了允许 Arm CCA,平台必须提供以下内容:
• 提供与所有不受信任的代理隔离的执行环境
• 建立执行环境已初始化为可信赖状态的机制。 初始化将要求执行环境拥有自己的信任链,独立于平台中并行不可信环境使用的信任链
Arm CCA 允许您部署应用程序或虚拟机 (VM),同时防止更有特权的软件实体(例如管理程序)进行访问。但是,通常管理内存等资源的正是这些特权软件实体。在这种情况下,特权软件实体(例如管理程序)确实可以访问应用程序或 VM 的内存。
Arm CCA 允许您控制 VM,但删除了访问该 VM 使用的代码、寄存器状态或数据的权利。
通过创建名为 Realms 的受保护 VM 执行空间来实现分离。 Realm 在代码执行和数据访问方面与正常世界完全隔离。 Arm CCA 通过结合架构硬件扩展和固件来实现这种分离。
在 Arm CCA 中,Arm 应用程序 PE 上的硬件扩展称为领域管理扩展 (RME)。 RME 与领域控制的专业固件交互,称为领域管理监视器 (RMM),以及异常级别 3 中的监视器代码。
我们在 Arm CCA 硬件架构和 Arm CCA 软件架构中描述了这些元素。
Realm 是一个 Arm CCA 环境,可以由 Normal world Host 动态分配。主机是管理应用程序或虚拟机 (VM) 的监控软件。 Realm 及其执行平台的初始状态可以被证明。证明允许 Realm 所有者在向 Realm 提供任何机密之前建立对 Realm 的信任。 Realm 不必从控制它的非安全虚拟机管理程序继承信任。主机可以分配和管理资源分配。 Host 可以管理 Realm VM 操作的调度。但是,Host 无法观察或修改 Realm 执行的指令。领域可以在主机控制下创建和销毁。可以通过主机请求以类似于管理任何其他非机密 VM 的管理程序的方式添加或删除页面。
要运行 CCA 系统,需要修改 Host。主机继续控制非机密虚拟机,但需要与 Arm CCA 固件通信,特别是领域管理监视器 (RMM)。 RMM 的操作在 Arm CCA 软件扩展中讨论。
Armv8-A TrustZone 扩展允许安全执行代码和隔离数据,通过两个独立的世界,安全世界和正常世界。世界是 PE 的安全状态和物理地址空间的组合。 PE 正在执行的安全状态决定了 PE 可以访问哪些物理地址空间。在安全状态下,PE 可以访问安全和非安全物理地址空间,而在非安全状态下,它只能访问非安全物理地址空间。正常世界通常用于指代非安全状态和非安全物理地址空间的组合。作为 Armv9-A 的一部分提供的 Arm CCA 引入了领域管理扩展或 RME。这个扩展引入了两个额外的世界,Realm 世界和 Root 世界:
• Root world 引入了Root 安全状态和Root 物理地址空间。 PE 在异常级别 3 中运行时处于根安全状态。根 PA 与安全 PA 是分开的。这是与 Armv8-A TrustZone 的主要区别,其中异常级别 3 代码没有私有地址空间,而是使用安全 PA。后者仍然被 S_EL2/1/0 使用。 Monitor 在 Root 世界中运行。
• Realm 世界类似于 TrustZone Secure 世界。 Realm 世界由 Realm 安全状态和 Realm PA 组成。 Realm 状态代码可以在 R_EL2、R_EL1 和 R_EL0 执行,并且在 Realm 世界中运行的控制固件可以访问 Normal 世界中的内存以允许共享缓冲区。
下图显示了四个基于 RME 的世界,以及它们与 SCR_EL3 NS 和 NSE 位的关系:
Root world允许可信启动执行和不同世界之间的切换。 PE 重置为 Root 世界。 Realm 世界为 VM 提供了一个与正常和安全世界隔离的执行环境。在正常世界中,VM 需要来自主机的控制。为了完全控制 Realm 创建和执行,Arm CCA 系统提供:
• 领域管理扩展,这是架构所需的硬件扩展,以允许隔离的领域虚拟机执行
• 领域管理监视器,它是固件的一部分,用于根据普通世界主机的请求管理领域的创建和执行
我们在 Arm CCA 硬件架构和 Arm CCA 软件架构中更详细地描述了这些组件。非 RME PE 中的世界切换由 SCR_EL3.NS 位控制。异常级别 3 软件在切换到安全世界时设置 NS = 0,在切换到正常世界时设置 NS = 1。 RME 实现的 PE 中的世界切换通过添加到 SCR_EL3 寄存器的新 SCR_EL3.NSE 位进行扩展。下表显示了这些位如何控制四个世界之间的执行和访问:
所有 Arm A-Profile 处理器都可以选择实现 Arm TrustZone 架构扩展。这些扩展允许开发独立的执行和数据环境。像可信操作系统 (TOS) 这样的元素可以为可信应用程序提供服务,这些应用程序独立执行,以服务来自正常世界中运行的富操作系统的安全请求。
Armv8.4-A 在安全世界中添加虚拟化,让您可以在安全世界中管理多个安全分区。此功能可以允许将多个 TOS 应用于一个系统。在 S_EL2 执行的安全分区管理器 (SPM) 是安全分区的管理器。 SPM 具有与普通世界中的虚拟机管理程序类似的功能。
在操作中,Trusted OS 通常是信任链的一部分,它由更高权限的固件验证,在某些系统中这可能是 SPM。这意味着 TOS 依赖于与更高权限固件开发人员的关系。
有两种方法可以启动 TOS 的执行:
• Rich OS yielding,Rich OS进入空闲循环,执行SMC指令通过Monitor调用TOS
• 以可信操作系统为目标的中断。安全类型 1 中断用于执行 TOS。在正常世界执行期间断言的安全类型 1 中断通过监视器调用 TOS。
Realm 虚拟机不同于 Trusted OS 或 Trusted 应用程序,因为 Realm VM 是由 Normal world Host 控制的。在创建和内存分配等方面,Realm VM 的行为与任何其他受主机控制的 VM 一样。 Realm VM 执行和 Trusted OS 执行之间的区别在于 Realm 没有启用任何物理中断。 Realm 的所有中断都由管理程序虚拟化,然后通过传递给 RMM 的命令发送给 Realm。这意味着受损的管理程序可能会阻止 Realm VM 的执行,因此无法保证 Realm 的执行
Realm 执行和内存访问由控制主机软件(例如管理程序)初始化。 Realm 不必由主机验证。 Realm 可以绕过任何信任链,因为它可以使用 RME 初始化证明。有关更多信息,请参阅证明。 Realm 也与控制软件完全隔离。如果 Realm 由 Host 初始化,则 Host 无法查看 Realm 的数据或数据存储器。
Realms 和 TOS 的使用之间的主要区别在于安全执行和 Realm 执行之间的设计意图。
可信应用程序用于接近系统开发的参与者所拥有的平台特定服务,例如有机硅供应商 (SiP) 和原始设备制造商 (OEM)。
Realm 执行的目的是允许一般开发人员在系统上执行代码,而无需与计算系统中的开发人员建立复杂的业务关系。
Arm CCA 允许在普通世界主机的控制下按需创建和销毁领域。可以从 Realms 动态添加或检索资源。这为更多应用程序和用户带来了与设备相关的服务可用的隔离优势。
信任通常根据机密性、完整性和真实性进行定义,并在以下列表中进行了解释:
• 由于机密性,Arm CCA 环境的代码数据或状态无法被同一设备上运行的其他软件观察到,即使该软件具有更高的特权
• 由于完整性,Arm CCA 环境的代码数据或状态无法被同一设备上运行的其他软件修改,即使该软件具有更高的特权
• 具有真实性,同一设备上运行的其他软件可以修改代码或数据,但可以识别任何更改
可信应用程序和 TOS 可以为系统提供机密性、完整性和真实性。 Realm 执行可以为系统提供机密性和完整性
Arm CCA系统提供的四世界环境,让Secure世界和Realm世界完全分离。这意味着可信应用程序不必关心任何领域虚拟机的执行,领域虚拟机也不关心任何可信应用程序的执行
和其它的security state一样,Realm world也有3个exception levels: R_EL0、 R_EL1、 and R_EL2. 其中:
Realm VMs 运行在R_EL1和R_EL0.
Realm Management Monior (RMM)运行在R_EL2