第二章 Introduction
Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构 [1] 增加了对安全流的第二阶段翻译的支持,以补充 Armv8.4 PE 中的安全 EL2 翻译体制。这些架构特性使得可以在安全状态下将彼此不信任的软件组件隔离开来。隔离是实现最小权限原则的机制:
一个软件组件必须只能访问物理地址空间中和系统资源中(例如 GIC 中的中断)对其正常运行必要的区域。
在安全状态下的虚拟化以以下方式应用这一原则:
EL3 中的固件可以与 S-EL1 中的软件(例如受信任的操作系统)进行隔离。
EL3 中的固件组件可以通过将供应商特定的组件迁移到 S-EL1 或 S-EL0 中的沙盒来相互隔离。
正常世界的软件可以与 S-EL1 中的软件隔离,以减轻特权升级攻击的风险。
此规范描述了一种软件架构,实现了以下目标:
利用虚拟化扩展来隔离来自不同供应商的软件镜像。
描述了标准化各种软件镜像之间通信的接口。这包括安全世界和正常世界中的镜像之间的通信。
泛化了软件镜像与安全状态下的特权固件之间的交互。
这个软件架构是 Arm® A-profile 处理器的固件框架1。术语“框架”和缩写“FF-A” 在本规范中可以互换使用,指的都是固件框架。
此框架还超越了前述目标,以确保以下几点:
在安全状态下没有虚拟化扩展的情况下使用。这为现有的安全世界软件镜像迁移到实施安全状态下虚拟化扩展的系统提供了迁移路径。
在正常世界由虚拟机监视器(Hypervisor)管理的虚拟机之间使用。安全状态下的虚拟化扩展与非安全状态下的虚拟化扩展相对应(另见 [2])。因此,虚拟机监视器可以使用固件框架来实现虚拟机之间的通信和隔离管理。
关于在安全状态下引入虚拟化扩展以及固件框架的目标的更多理论基础信息可以在标题为“在安全世界中使用虚拟化进行隔离”的白皮书 [3] 中找到。