AXI-5.5 Memory protection and the Realm Management Extension
AxPROT & AxNSE
AXI协议中的内存保护和领域管理扩展(RME)涉及硬件层面的安全设计。
Memory protection还可以通过Realm Management Extension (RME)进行扩展。该扩展提供基于硬件的隔离,允许执行上下文在不同的安全状态中运行,并在系统中共享资源。当使用 RME 时,它会扩展物理地址和未转换事务的地址空间,影响缓存维护操作,并扩展 MPAM 信号。
RME与内存保护信号举例
为了直观理解,我们以一个云服务器场景为例。一台服务器同时运行着:
-
一个客户的隐私数据库(属于一个Realm领域)
-
云平台自身的监控程序(属于Root根状态)
此时,硬件需要确保:
-
客户的数据库内容绝对隔离,云平台自身也无法访问。
-
云平台的监控程序需要稳定运行,不受客户程序影响。
这就是RME和内存保护信号发挥作用的地方。
物理地址空间扩展:AWNSE/ARNSE信号
在引入RME之前,系统主要区分安全(Secure) 和非安全(Non-secure) 状态。RME在此基础上新增了Realm和Root状态,构成了四个物理地址空间。
-
Realm状态:用于客户的安全敏感工作负载。
-
Root状态:用于云平台自身的监控程序。
AWNSE/ARNSE (Non-Secure Extension) 信号位宽为1,用于帮助扩展物理地址空间。它们与原有的安全属性信号结合,共同确定一次内存访问属于哪个物理地址空间(Root, Realm, Secure, Non-secure)。
工作方式:
-
当CPU核心访问客户的"隐私数据库"时,RME硬件会确保事务携带Realm状态的标识(通过AxNSE等信号)。
-
内存系统中的内存保护引擎(MPE) 会检查这些信号。
-
如果云平台的监控程序(Root状态)试图访问一个标记为Realm的地址,MPE会直接阻止并产生错误。
-
这样就实现了硬件级的隔离,客户的隐私数据即使云平台也无法触及。
-
访问属性保护:AWPROT/ARPROT信号
AWPROT/ARPROT (Protection) 信号位宽为3,定义了事务的访问属性。这3个比特位的含义通常是:
-
Bit 0:权限标识(0=特权模式,1=用户模式)
-
Bit 1:读写标识(0=写,1=读)
-
Bit 2:数据/指令标识(0=数据访问,1=指令访问)
工作方式:
-
假设客户的Realm环境中,一个运行在用户模式的应用程序(低权限)试图直接写入内核才能管理的系统控制寄存器(高权限存储区)。
-
在发起写请求时,CPU会将该事务的
AWPROT信号设置为"用户模式"(Bit 0=1)和"数据访问"(Bit 2=0)。 -
当这个事务到达内存系统或负责该寄存器所在地址范围的外设时,保护电路会检查
AWPROT信号。 -
发现这是来自"用户模式"的访问,而该寄存器只允许"特权模式"访问,保护电路会阻止此次写入,并返回错误。
MPAM信号扩展
MPAM (Memory Partitioning and Monitoring) 用于监控和管理不同工作负载(如不同客户或应用)对共享内存资源(如缓存、内存带宽)的使用。在支持RME的系统中:
-
MPAM的分区ID (PARTID) 空间从4个物理地址空间扩展为4个独立的PARTID空间。
-
这意味着,Realm、Root、Secure和Non-secure状态各自拥有独立的资源监控分区。
-
好处:云服务商可以精确监控每个客户(Realm)实际消耗的内存带宽,同时避免使用共享PARTID空间可能产生的侧信道攻击。
为何如此设计?
-
硬件强制隔离是安全的基石:通过RME在硬件层面划分Root、Realm等物理地址空间,为可信固件(Root)和敏感任务(Realm)提供了硬性隔离。这种隔离无法通过软件配置绕过,极大提升了系统安全基线。
-
最小权限原则的细化落实:
AxPROT信号细化了访问权限控制,确保用户态应用不能越权访问内核态数据,指令取指也不能伪装成数据访问,这有效遏制了某些类型的攻击。 -
资源管理与安全性的结合:MPAM与RME的结合,使得在保证隔离的前提下,能进行精细化的资源监控和管理。这对于多租户的云环境至关重要,既能保证公平性,又能消除通过资源使用模式推断敏感信息的侧信道风险。
技术诞生背景
-
应对云与数据中心的安全需求:现代云计算需要在一个物理系统上安全地运行多个互不信任客户的工作负载。传统的软件虚拟化在安全边界存在性能开销和潜在风险,促使了RME这类硬件辅助的机密计算技术出现,旨在确保客户数据在使用时(而不仅仅是存储时)的机密性和完整性。
-
Arm v9架构的机密计算战略:RME是Arm v9架构机密计算架构 (CCA) 的核心组成部分。AXI-K规范对RME的支持,是Arm将这一架构特性从处理器核心扩展到整个片上互联和系统IP的关键步骤,旨在为基于Arm v9的系统构建端到端的信任基础。
-
应对日益复杂的硬件攻击:如Spectre和Meltdown等侧信道攻击表明,软件层面的隔离不足以保证安全。RME和相关的内存保护机制是在硬件层面进行重新设计,力图从根源上阻断这类攻击媒介。
PROT_Present 和 RME_Support
这两个属性的设计,体现了协议在保证功能完整性的同时,为满足不同应用场景的复杂度和成本需求而提供的灵活性。
1. 举例说明
这两个属性本质上是 AXI 接口的 “功能开关”,允许设计者为不同的组件“按需付费”,只实现其必需的功能。
PROT_Present 属性
这个属性决定了 AxPROT 信号在接口上是否存在。
-
PROT_Present = True(默认)-
行为:
AWPROT和ARPROT信号存在于接口上。 -
举例:一个 CPU 或一个 复杂的系统级互联(System MMU)。CPU 需要运行操作系统,必须在用户模式和特权模式之间切换,并防止用户程序访问内核空间。因此,它必须使用
AxPROT信号来标记每次访问的权限级别(特权/用户)和类型(指令/数据)。系统 MMU 需要检查这些信号来执行内存保护。
-
-
PROT_Present = False-
行为:
AWPROT和ARPROT信号从接口上省略。 -
举例:一个简单的 DMA 控制器 或一个 UART(串口)控制器。
-
DMA 控制器 通常只在特权模式下由驱动程序操作,它发起的所有的传输都被视为数据访问。它没有“用户模式”或“取指令”的概念。因此,它可以省略这些信号,硬件上将其接口固定连接到表示“特权数据访问”的电平上,或者直接忽略这些信号。
-
UART 控制器 作为从设备,它只关心数据是否正确写入其寄存器,而不关心是谁(用户程序还是内核)写的。因此,它也可以省略这些输入信号,简化自身设计。
-
-
RME_Support 属性
这个属性决定了 Realm Management Extension (RME) 相关的信号(主要是 AxNSE)在接口上是否存在。
-
RME_Support = True<
