ACAI: Extending Arm CCA Protection from CPUs to Accelerators

渗透技巧 8个月前 admin
135 0 0

ACAI: Extending Arm CCA Protection from CPUs to Accelerators

今天分享的论文是arxiv上的一篇论文《ACAI: Extending Arm CCA Protection from CPUs to Accelerators》,作者是来自ETH Zurich的Supraja Sridhara等人,主要研究如何改进ARM中基于虚拟机的隔离,以实现对GPU和FPGA加速器的机密访问。
一、背景
TEE-enabled CPU虽然保证了机密计算,但是要求外部设备不得访问敏感数据,这阻止了云平台中的用户使用外部加速器,因为加速器的设计或操作方式可能会威胁数据的安全性和机密性CCA通过GPC实现基于硬件的访问控制从而隔离机密VMs与hypervisor,GPC从CPU内核扩展到总线事务以及IO操作的地址转换,允许启用CCA设安全地访问VMs,为加速机密计算提供了新的选择。
二、动机
对于嵌入式加速器而言,它们没有自己的主存,而是与CPU核心一起访问主内存。由于这些组件在连接到主存储器的共享总线上运行,因此在总线级别运行的CPU隔离访问控制机制也可以应用于集成加速器。这一方式要求:所有设备严格通过总线,且设备执行自己的访问控制。CCA通过GPC将GPT限制转换为访问检查。GPC可以应用于访问内存的组件,如CPU核心、缓存、TLB和SMMU。为了允许设备访问Realm内存,CCA要求设备实现一个设备端GPC,这样来自设备的任何访问在允许在总线上传播之前都会按照GPT进行过滤,如图1(a)所示。
大多数云部署使用PCIe将强大的CPU核心连接到专用加速器;独立加速器有一个专用内存(例如,64GB DDR5), CPU内核可以通过内存映射IO或DMA请求访问它。总线级别的访问控制不会扩展到设备上。当前在加速器与VM之间是通过正常世界的不安全空间实现的通信(VM将发送给加速器的数据加密,后者使用特定逻辑解密,如图1(b)所示),需要进行多次加解密与数据copies,开销较大。内存复制和加密的成本并不令人惊讶,但本文的动机并非优化性能问题,而是利用CCA提供从新的角度加速机密计算。由于CCA规范足够灵活,因此可以允许VM和设备访问一个共享内存区域,该区域不受所有软件和其他设备的影响,如图1(c)所示。而CCA实现的内存保护引擎(MPE)能透明地加密和解密CPU内核和内存之间的所有通信。此外,在新的PCIe规范中,PCIe总线配备了完整性和数据加密(IDE),对通过PCIe总线传输的所有数据执行加密/解密。这两种加密机制都在硬件中实现,可以实现线性化性能。这使得外部设备和虚拟机之间能够实现安全访问。

ACAI: Extending Arm CCA Protection from CPUs to Accelerators

图1 Access Modes of Accelerator
三、ACAI设计
作者考虑并实现了以上三种加速模式。对于嵌入式与加密模式,依赖现有的CCA机制实现访问。为了实现保护模式,ACAI将CCA的访问控制与加密解耦。首先在正常世界内存区域为Realm VM与设备之间创建共享内存区域(保护区域)。接着利用CCA访问控制机制来保护该区域,以便只允许来自Realm与Root世界的内核访问;而对于设备来说,该内存看起来像是在正常世界中映射的,因此允许访问。但是这种世界级别的隔离粒度不够。RMM使用2阶段转换来在Realm VM之间实现页级隔离,但是它并不会阻止Realm访问正常世界中其它VM的内存。因此,ACAI需要扩展2阶段页表来保护该共享内存。CCA中基于GPC的世界隔离与基于页表的Realm VM隔离是CPU级别的隔离,不能阻止设备对正常世界的DMA访问(绕过CPU级别的保护)。为了控制设备对正常世界的访问,ACAI利用SMMU及其2阶段转换表来执行设备隔离。
对于共享保护内存区域的创建,作者考虑了图2中的几种情形。(a)是将共享区域置于Realm空间,但是这阻止了外部设备的访问;(b)是将共享区域置于正常世界,但是这为不可信的软件提供了访问机会,无法保证机密性。因此作者考虑维护两个GPT创建加速器与Realm VM均能访问的共享保护内存区域来加速机密计算。一个用于CPU core,一个用于外部设备。其中用于CPU core的GPT使用默认CCA设置,共享内存标记为Realm世界,以防止不可信软件的访问。用于外部设备的GPT中共享内存被标记为正常世界,并将其分配给加速器以允许其访问共享内存。每当监视器对core GPT进行更改时,ACAI都会更新外部设备GPT,以确保加速器无法访问任何核心无法访问的受保护内存或领域内存。

ACAI: Extending Arm CCA Protection from CPUs to Accelerators

图2 在Core与设备之间实现内存隔离的不同方式
当将加速器连接到正确的Realm VM时,ACAI必须确保它处于正确的状态,然后允许它访问共享内存。为了防止攻击者控制的加速器获取敏感信息,ACAI使用认证并在PCIe上建立一个安全的通信通道。
ACAI不要求更改CCA或ARM架构,只需要扩展现有机制的监控器与RMM软件即可。为了适应现有机制,在ACAI中,监控器在引导期间设置了2个GPT:核心GPT和设备GPT。在执行期间,当监控器接收到set_pas SMC时,它会更新这两个GPT。
四、评估
本文在加密和保护模式下对GPU和FPGA进行基准测试。结果表明:① ACAI的加密模式平均产生49倍的开销,而保护模式平均产生0.7倍的开销。② ACAI不会减慢系统其余部分的执行速度,并且在未受保护的执行中只会产生4.2%的最小开销。③ 将ACAI移植到Arm v8板上,并估计其性能成本,发现加密模式产生的开销是保护模式的80倍。
五、总结
ACAI的保护模式允许基于CCA的机密虚拟机直接使用加速器,该模式旨在使用现有的CCA机制强制执行强隔离保证,同时避免在主机和加速器上使用昂贵的数据副本和基于软件的加密。

原文始发于微信公众号(COMPASS Lab):ACAI: Extending Arm CCA Protection from CPUs to Accelerators

版权声明:admin 发表于 2023年9月15日 下午3:51。
转载请注明:ACAI: Extending Arm CCA Protection from CPUs to Accelerators | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...