【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行
导读:本文介绍ACAI,其构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器,同时保持与现有应用程序的兼容性和安全性,能够实现对加速器的安全访问。
原文链接:ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture | USENIX
ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture
一、背景介绍
随着可信执行环境在CPU中的发展,机密计算取得一定成果,可以确保用户的代码和数据免受恶意租户和具有特权的管理员的侵害,但租户无法在可信执行环境的保护下安全使用GPU和FPGA等加速器。
在云计算环境下,用户希望在不可信云平台部署安全敏感应用,同时利用加速器满足大工作量需求,而当前可信执行主要在CPU层面,未延伸到加速器,这就需要解决机密计算在加速器使用上的安全和性能问题。
Arm在2021年宣布了机密计算架构(CCA)规范,它通过颗粒保护检查实现了硬件级别访问控制,隔离了机密虚拟机(Realm VMs)。作者尝试基于CCA进行设计,使得机密虚拟机可以安全地访问加速器。
二、 现状分析
为实现对加速器的安全访问,研究设立以下两个目标:
- 构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器。
- 同时保持与现有应用程序的兼容性和安全性。
现有硬件对可信执行环境的支持如Intel SGX主要是进程级抽象,且在使用加速器方面存在不足。对于加速器与机密计算的结合,一些方案存在如需要硬件修改且性能和面积受限,以及加速器无法判断主机安全和CPU端TEE需考虑安全设备访问等问题。同时,现有如加密通信的bounce-buffer设计存在内存和计算开销大、兼容性差等缺陷。因此面临以下三个问题:
- 如何在不破坏CCA保护的情况下允许外部加速器访问Realm内存?
- 如何确保来自不同加速器的访问被隔离到与其连接的相应虚拟机的指定共享区域,并阻止恶意外设的访问?
- 如何隔离所有可能的I/O和内存访问路径,防止软件和物理对手的攻击?
三、应对设计
- 选择Arm CCA:选择Arm CCA作为基础,因为它是即将推出的扩展,可在Arm的固定虚拟平台上实验,且其本身支持总线级访问控制和内存保护。CCA架构引入了粒度保护表(GPT)追踪物理地址,通过粒度保护检查(GPCs)对处理单元增强,GPCs根据GPT的限制对安全领域内存的访问进行检查,防止外部访问领域内存。同时因为有总线级别的加密性及完整性保护机制,物理攻击者无法篡改主内存的数据。
- 设计思路:提出ACAI,扩展Arm CCA的安全常量到设备端访问。为设备安全标记为realm - mode以利用隔离,使用设备侧MMU(SMMU)实现VM级隔离,重新利用硬件加密支持保护设备通信,在VM创建流程中加入设备认证。以此身份与所有权的管理、内存区域保护和设备生命周期管理。
- 身份与所有权:设备经过认证后被赋予唯一不可伪造身份,并仅能被一个realm VM访问和配置,确保设备与realm VM一对一绑定。同时保证设备与realm VM之间内存映射安全且兼容CCA,包括主机和设备侧的地址转换,以及两者的同步。
- 创建保护内存区域:再realm VM和加速器之间建立共享保护内存区域,位于realm世界内存中。通过RMM和SMMU页表确定只有指定设备和realm VM可访问,防止恶意设备和VM干扰。同时利用GPT将SMMU数据结构标记为仅在根模式下可访问,防止还有hypervisor篡改映射,同时引入SMMU接口,让hypervisor按照规则请求更新。
- 设备生命周期管理:设备连接时,在realm VM创建过程中附加加速器,确保相关内存区域符合安全常量。包括重置加速器、移动其配置空间到realm世界等操作。由monitor初始化设备并执行认证协议,确保设备正确初始化、认证、并收集报告,防止设备被篡改或替换。最后仅在realm VM销毁阶段允许hypervisor分离设备,确保设备内存和状态正确清理,防止数据泄露和安全漏洞。
- 架构图:
四、技术解析
4.1 内存保护
在内存方面,ACAI设置了realm VM和设备间的共享内存区域(保护区域),通过多种机制确保内存访问的安全,如确保设备和realm的初始状态及身份映射,以及保证内存区域的安全访问和正确的地址转换。
4.2 设备管理
在设备管理上,利用IDE确保设备有唯一身份且不重叠,通过一系列流程如在创建VM时同时进行安全的加速器连接,在设备连接和初始化过程中保证配置正确和身份认证。
在应对恶意组件时,针对不可信hypervisor、恶意的co-tenants、其他的恶意设备和物理攻击者等可能的威胁,ACAI通过多种机制如密钥保护、身份验证、内存隔离和加密等措施进行防护,确保系统安全。
ACAI的安全常量有效保证了CPU和设备TEE的安全组合,各种攻击都难以突破其防御,维系了系统的保密性和完整性。
插图:(a)-(c)潜在的攻击,(d)ACAI保护
五、验证评估
实验设置:在Arm FVP和Cortex-A35板上进行原型实现,使用Rodinia测试集的GPU基准测试和自定义的FPGA基准测试,在不同配置下进行测量,包括原始设置、加密模式、ACAI保护模式以及优化模式等。
结果展示:结果表明ACAI在系统启动、realm创建、删除、SMMU操作等方面有一定的开销,但对正常世界执行影响较小,保持安全保证的同时具有可行性。与加密模式相比,ACAI显著减少了指令数,在GPU和FPGA上有一定的性能提升。
本账号发布内容均为原创,欢迎转载,转载请注明出处。更多资讯请移步【机密计算前沿技术】服务号,欢迎交流!