一. 概述
ARM CCA(ARM Confidential Compute Architecture)[1]是ARM的新一代机密计算框架,旨在其架构上提供符合机密计算标准的机密计算支持。islet项目为对ARM CCA的一种实现,该项目由三星公司发起,使用ARMv9 CCA在ARM架构设备上实现机密计算,该项目属于机密计算联盟开源项目之一。机密计算联盟(Confidential Computing Consortium,CCC)[2]是linux基金会的一个项目社区,致力于定义和加速机密计算的采用。联盟主要成员包括arm、谷歌、华为、英特尔、微软等巨头企业,目前CCC拥有11个项目。关于islet项目若想了解更多可访问项目github仓库[3]。
二. TrustZone与CCA
ARM CCA与ARM TrustZone技术都是为提高ARM架构下设备的安全性而设计的技术。其中ARM TrustZone主要技术原理是在处理器上引入了两个硬件隔离的保护域,分别为普通区域与安全区域,这种隔离将处理器、内存、系统等资源隔离为两个世界,每个处理器同时只能在一个区域中运行。普通区域可以运行常规操作系统,该环境一般被称为REE(Rich Execution Environment),而安全区域则使用独立的安全内核,提供TEE(Trusted Execution Environment)环境,如图一所示。注意这里的TEE并不直接等价于一般场景中所说用于机密计算的TEE,一般各厂商会基于TrustZone技术来推出用于机密计算的TEE能力,比较出名的项目有OP-TEE等。
图1 TrustZone技术示意图
而随着机密计算需求的增长,ARM在TrustZone的基础上推出了机密计算架构CCA,成为了ARM v9架构的重要组成部分,提供了ARM架构下的机密计算底座,其类似于AMD SEV或英特尔TDX技术,可以提供虚拟机级别的TEE能力。从其官方文档可以看出,ARM CCA在TrustZone的基础上引入了一个称为Realm的隔离空间,在这个空间内在代码执行与数据访问方面与正常空间完全隔离,这种隔离性硬件扩展和特殊固件实现的,其中硬件扩展被称为Realm管理扩展(Realm Management Extension,REM),特殊固件则被称为Realm管理监视器(Realm Management Monitor,RMM)。
Realm环境可以由正常空间的Host动态分配,却无需对所用操作系统或Hypervisor产生信任依赖,Host可以管理Realm VM操作的调度而无法窃取或修改Realm执行的指令。Realm和硬件平台的初始状态可以提供可信证明,Realm的拥有者可以在验证其机密环境的真实性后再提供机密信息以及执行工作负载。此外,CCA还引入了一个被称为根世界(Root World)的区域,监视器运行在根世界中,其架构如图2所示。而在软件层面,CCA可以提供安全虚拟化能力,管理程序可以在普通空间内生成Realm虚拟机,但虚拟机内工作负载的执行则是在Realm空间中。Realm虚拟机由RMM负责管理通信与上下文切换,对普通空间中的管理程序请求做响应,并在Realm虚拟机中执行,并通过与根世界中的监视器通信,控制Realm内存管理。
图2 CCA系统架构
三. islet项目所做工作
islet项目是对CCA的一种实现,其由rust语言编写,旨在增强CCA为移动设备用户提供更好的安全性保障。其主要工作内容包括如下:
●重写RMM:用rust重写RMM,实现对Realm的管理;
●强硬件安全(Hardware Enforced Security,HES):用于执行设备启动度量,生成平台证明报告,以及管理除主应用处理器之外的安全硬件的密钥封印功能。
●机密计算API标准化:支持构建机密计算程序,开发者可以使用islet提供的rust api完成远程证明报告生成、机密信息封印等功能。
基于RMM与HES,islet提供了机密虚拟机的运行平台,并提供SDK用于机密计算程序的开发,其架构图如3所示。由于该项目还处于早期,其SDK功能并不丰富,目前已有的功能仅包括认证、安全信道、与封存机密信息。其中认证功能是指对Realm内数据、操作或实体的真实性与完整性证明能力,安全信道则是支持多个机密虚拟机间建立安全信道并进行数据传输交互,封存机密信息则是可以将敏感数据存储至安全环境中,防止未经授权实体的访问与篡改。
图3 islet架构图
四. 总结与展望
本文主要介绍了ARM CCA架构,并介绍了开源项目islet对CCA的实现情况。可以看出,在ARM架构下通过CCA实现机密计算,可以对标AMD SEV与英特尔TDX,提供机密虚拟机的机密计算能力,也从侧面反映出安全虚拟化是未来机密计算的主要发展方向。CCA通过统一架构,使得不同硬件厂商在ARM架构下实现机密计算时有了统一架构标准,而islet选择rust作为开发语言,也是为了增强CCA的安全性(rust被誉为安全性较高的开发语言)。尽管islet项目还处于早期,其功能还较为有限,但有关机密计算的度量、远程证明、机密封印等能力已经具备,有较大的参考价值。该项目用例中也提到了使用islet为机器学习与联邦学习提供隐私保护能力,在可用性上或许并不局限于移动端设备。因此,该项目具有较高的参考价值,未来或许可将该项目部署在更多ARM架构设备上,便于开发人员进行机密计算平台与应用的开发。
参考文献
[1]. https://developer.arm.com/documentation/den0125/latest
[2]. https://confidentialcomputing.io/
[3]. https://github.com/islet-project/islet
内容编辑:创新研究院 王拓
责任编辑:创新研究院 陈佛忠
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...