01
背景
机密计算是一种在受信任的硬件基础上,通过构建加密、隔离、可证明的可信执行环境(Trusted execution environment),保证 TEE 内数据、代码以及运算过程的机密性和完整性的计算模式。
机密计算技术可以广泛应用于区块链,数据租赁,密钥管理,AI,多方计算,金融,边缘计算等应用场景中。 目前主流的CPU厂商都提供了对应的机密计算技术,比如Intel SGX、AMD SEV、Intel TDX、ARM CCA 等。
目前机密计算正处于百花齐发和百家争鸣的阶段,市场和商业化潜力非常巨大。但机密计算在云原生场景中还有一些不足:
1. 用户普遍对机密计算这项新技术的认知感不足。
2. 技术门槛高。用户需要对业务进行改造,令很多开发者望而生畏。
3. 应用场景缺乏普适性。
4. 信任根和信任模型问题。
为了解决以上四个问题,龙蜥社区云原生机密计算 SIG (以下简称“机密计算 SIG”)应运而生。
机密计算 SIG 致力于通过开源社区合作共建的方式,为业界提供开源和标准化的机密计算技术以及安全架构,推动云原生场景下机密计算技术的发展。SIG 组将围绕下述核心项目构建云原生机密计算开源技术栈 ,降低机密计算的使用门槛,简化机密计算在云上的部署和应用步骤,拓展使用场景及方案。
经过两年多的努力,机密计算 SIG 在 2023 年四月份,发布了云原生机密计算最佳实践白皮书,涵盖从机密计算平台、编程框架、运行时底座、解决方案全方面的机密计算技术解读,汇聚多家伙伴的合作成果,展示丰富的应用场景和用户实践案例,由浅入深,助力读者更好地理解和应用机密计算技术。
CSV 是中科海光自主研发的安全虚拟化技术,采用国密算法实现。经过龙蜥社区和海光的合作开发,为龙蜥社区用户提供了 CSV 技术的全栈支持和解决方案。
02
龙蜥 CSV 技术栈
海光 CPU 支持安全虚拟化技术 CSV(China Secure Virtualization),CSV 的设计目标是通过 CSV 虚拟机提供可信执行环境。CSV 是硬件级内存加密方案,采用国密 SM4 算法,不同的 CSV 虚拟机使用不同的加密密钥,密钥由海光安全处理器管理,主机无法解密虚拟机的加密内存。CSV 虚拟机支持安全启动、远程认证、磁盘加密、异构加速、机密容器等安全特性。在商业化方面,海光 CSV 技术是目前唯一规模商业化的国产 CPU 机密计算技术,联合合作伙伴发布了 10 余款隐私计算一体机。
海光 CSV 技术按照 CSV1、CSV2 和 CSV3 进行技术演进。最先商业化的是海光 2 号 CPU,支持 CSV1 技术,CSV1 虚拟机内存数据被硬件加密,CPU 内的安全处理器固件管理 CSV 虚拟机的运行流程和内存加密密钥,支持镜像度量和远程证明功能。今年产品化的的海光 3 号 CPU,支持 CSV2 技术,CSV2 技术在 CSV1 的基础上支持了对虚拟机寄存器数据加密的保护,保护了虚拟机状态。年底产品化的海光 4 号 CPU,支持了 CSV3 技术,在前二代技术的基础上继续增强,在 CPU 内部实现了虚拟机数据的安全隔离,禁止主机操作系统对虚拟机内存的读写,保证了虚拟机数据的完整性。CSV3 技术实现了云计算环境下的数据机密性和完整性的双重安全,与 Intel TDX、AMD SEV-SNP 等国际主流机密计算技术相当。
CSV 兼容主流的虚拟化软件,支持 Openstack、K8s 等管理工具。龙蜥社区已发布支持 CSV 虚拟机的 Qemu、 KVM、 OVMF 等软件,用户可以在海光 CPU 机器上,通过安装 Anolis OS,快捷简单的启动 CSV 虚拟机,实践 CSV 虚拟机的内存加密、磁盘加密、异构加速等功能。更多的指南请参考 Hygon Arch SIG。下面简单介绍一下 CSV 虚拟机的安全启动、远程认证、磁盘加密、异构加速等安全特性。
2.1 安全启动
安全处理器校验 CSV 虚拟机启动参数,保证虚拟机不被篡改,具体流程如下:
1.用户生成运行虚拟机需要的 OVMF、内核、 initrd 等文件。
2.用户使用虚拟机文件计算虚拟机启动参数,并使用用户私钥对启动参数签名。
3.用户将虚拟机文件和启动参数提供给海光处理器,处理器使用用户公钥对启动参数验签, 并校验虚拟机文件的 MAC 值,确保虚拟机文件没有被篡改。
4.处理器将计算的启动度量值返回给用户,用户校验度量值,确保是合法的海光处理器后运行 CSV 虚拟机。
2.2 磁盘加密
磁盘加密用来保护存储在虚拟机磁盘上的数据,确保即使攻击者获取了物理磁盘或底层基础设施的访问权限,他们也无法在没有解密密钥的情况下访问加密的数据。具体流程如下:
1.用户对虚拟机镜像进行加密,内核保存在启动分区,应用数据保存在数据分区。
2.CSV 虚拟机进行安全启动(参考上一个小节),安全启动过程中会对虚拟机文件进行度量。
3.度量成功后,安全处理器注入磁盘密钥,固件使用注入的密钥对磁盘进行解密。
2.3 远程证明
远程证明用于对机密计算环境和机密计算应用程序进行完整性和真实性验证,远端程序在提供机密数据之前通过远程认证证明 CSV 虚拟机的身份是合法的,具体流程如下:
1.认证程序(verifier)向 CSV 虚拟机(Attester)发起认证请求,请求数据中包含用户数据 user_data。
2.Attester 收到认证请求后将user_data作为参数,调用KVM_HC_VM_ATTESTATION hypercall,向固件发起 ATTESTATION 命令。
3.海光处理器收到 ATTESTATION 命令后使用芯片密钥对认证报告签名,认证报告中包含 user_data、虚拟机度量值、版本号等信息。
4.Verifier 收到签名后的认证报告,首先校验 user_data,通过后从认证报告中取出芯片 ID,根据芯片 ID 从海光证书服务器下载对应的芯片证书链,使用芯片证书中的公钥完成认证报告的验签。
2.4 异构加速
某些应用场景需要在 CSV 虚拟机中运行图像识别、机器学习等算法,这些场景下使用 DCU(Deep Computing Unit) 加速卡可以极大地提高计算性能,CSV 虚拟机支持设备直通,可以将 DCU 卡直通给 CSV 虚拟机使用。CPU 和 DCU 之间传输的数据被加密,阻止恶意程序窃取传输的数据。具体流程如下:
1.机密应用程序与 DCU 进行密钥协商,生成会话密钥。
2.机密应用程序向 DCU 发送加密的计算指令和数据,加密的计算指令和数据经主机操作系统传递给异构设备。
3.DCU 接收加密指令和数据后,首先使用会话密钥进行解密并执行计算,然后将计算结果进行加密,经主机操作系统返回给机密计算应用程序。
4.机密应用程序使用会话密钥进行解密,获取计算结果。
03
CSV 技术解决方案
基于 CSV 虚拟机的安全特性,结合龙蜥社区软件生态,机密计算 SIG 为用户提供了包含机密容器、龙蜥远程证明服务、Confidential vTPM 等技术解决方案。
3.1 机密容器
机密容器项目的目标是在容器级别标准化机密计算,并简化其在 Kubernetes 的使用。这是为了让 Kubernetes 用户能够使用熟悉的工作流和工具部署机密容器工作负载,而无需深入了解底层机密计算技术。机密容器将支持多种环境,包括公共云、本地和边缘计算。
CSV 机密容器基于 Kata Containers 项目,最大区别是将基于普通虚拟化技术实现的轻量级 Sandbox Pod 替换为基于机密计算技术实现的轻量级 TEE Pod,目的是将特定租户的整个 Pod 以及其中的容器运行在受 CPU TEE 保护的执行环境中。除此之外,TEE Pod 内部还额外集成了 image-rs 和 attestation-agent 等组件,它们负责实现容器镜像的拉取、授权、验签、解密、远程证明以及秘密注入等安全特性。具体可以查看Confidential Containers:云原生机密计算基础设施。
CSV 机密容器解决方案为敏感工作负载在部署时和运行时提供端到端的全链路安全解决方案,保证了应用镜像安全、启动安全和运行安全。龙蜥社区提供了 CSV机密容器解决方案,部分用户觉得本地部署 Replying Party 门槛高,带来了负担。为了解决这个痛点问题,CNCC SIG 提供了龙蜥远程证明服务,为用户提供一个安全高效的远程证明免部署解决方案。
3.2 OpenAnolis Attestation Service
OAAS 是龙蜥社区为社区用户与合作伙伴提供的公共机密计算远程证明服务。该服务旨在为使用机密计算的用户提供一个安全高效的远程证明免部署解决方案,解决目前TEE远程证明系统存在本地部署门槛高、软件流程复杂和不同平台差异性大的问题。
OAAS 具有以下特点:
- 简单易用:可通过社区网页端入口进行服务实例的一键创建和工具下载,避免本地部署远程证明系统带来的额外复杂性和维护成本。
- 安全高效:OAAS 运行在机密可信执行环境中,以统一的数据格式和使用流程兼容多种 TEE 硬件平台类型。
- 灵活的策略机制:OAAS 在基础的平台验证之外提供了可深度定制的策略机制,能够满足在各类机密计算应用场景下的多种核心信任需求。
TEE 通过访问 OAAS 的 RESTful API 执行远程证明,验证通过后获得一个令牌(JWT 格式),令牌中包含了序列化后的 TEE 证据内容和 OAAS 的签名,该令牌表征了 OAAS 对 TEE 可信性的认证结果。验证的具体流程如下:
1.验证的核心逻辑发生于 Attestation 后端,OAAS 会通过插件化的形式抽象不同 TEE 平台类型在厂商签名背书的验证过程,并在基本的厂商签名背书验证通过后,将解析出的证据内容输入策略引擎 (使用 OPA 实现) 进行进一步验证。
2.策略引擎对证据的验证策略可由用户通过访问 OAAS 的 API 进行自行设置,若用户未设置自定义策略,则默认使用龙蜥社区提供的基本策略进行验证。
3.全部验证过程完成后,Attestation 后端会将解析出的证据内容序列化并签名,生成 JWT 格式的令牌返回给 TEE。验证该令牌的实体(如为 TEE 提供数据的其他资源服务器)可对令牌的内容和签名进行进一步的验证。
3.3 Confidential vTPM 方案
许多云安全产品中的软件 TPM 解决方案可以为 Guest 提供可信计算的功能。这些方案基于硬件和虚拟信任根,在服务器硬件可信的基础上,将信任链从 Host 延伸到 Guest,构建了安全体系。然而,这些虚拟 TPM 方案在敏感数据安全方面无法满足租户的要求。针对这个问题,机密计算(例如 CSV TEE)技术提供的安全隔离性能大幅度缓解甚至消除来自 host 的供给面,增强 TPM 模拟器的安全性。
CSV 机密容器为 Guest 实例提供了增强的安全能力,但是 TEE 技术具有以下三个限制:
1. TEE 技术不能提供细粒度的度量。TPM 技术可以提供精细的度量记录,以便进行更为细致的验证和认证。
2. TEE 技术的生态尚不够成熟,需要更多的研究和开发工作才能达到与TPM同样的成熟度。
3. 套用 TPM 的远程证明流程可以解决异构 TEE 的机密互联的问题。
为了能够更好地将可信计算技术与机密计算技术相结合使用,我们提出了Confidential vTPM 方案,旨在利用 TEE 技术加强对软件 TPM 后端设备实例的保护能力。即使在最坏情况下,如 Host 环境遭到攻击或基础设施 owner 有意泄露租户数据,租户的敏感数据也能得到保护,不会被泄露。Confidential vTPM 方案的目标是部分消除租户担心软件 TPM 后端设备实例泄露敏感数据并进一步导致数字资产遭泄露的安全风险。
Confidential vTPM 的解决方案由四个部分组成:前端、后端、认证服务和可信CA。
- attestation 服务和可信 CA 是运营商或用户部署的第三方可信服务,用于提供数字身份验证和认证,确保用户身份的真实性和数据的机密性。
- 通过重新设计一套认证注册流程,该流程不仅验证了平台是否受到 TPM 的保护,还验证了平台是否运行在 TEE 环境中。通过这个流程,可以为实现多平台 TEE 的机密互联打下了坚实的基础,提供了更高的安全性和可信度。
- 后端是一个 TEE 化的 swtpm/swtcm,要求进程运行在 TEE 内。是负责处理软件 TPM 计算任务的核心组件,它提供了一个安全的执行环境,可以确保敏感数据和代码在计算过程中的保密性和完整性。
- 在后端处理过程中,将软件 TPM ( swtpm/swtcm) 要求在具有安全保护的可信执行环境 (TEE) 中。这种部署方式确保了敏感信息在后端设备实例中的机密性。通过引入了第三方证书颁发机构 (CA) 来管理虚拟 TPM EK 证书,提高了证书的合法性和可信度。
- 前端由是负责提供虚拟化环境的组件,它可以启动机密虚拟机或普通虚拟机。虚拟机内的进程可以运行在 TEE 内,以提供更高级别的安全保护。
- 在前端处理过程中,采用了虚拟I/O (virtio) 技术,对涉及到可信平台模块 (TPM) 消息传递的 qemu/edk2/kernel 组件进行了增强。这种改进确保了来自Guest OS 的消息在传递到 qemu 之前已经被加密,从而提升了消息的机密性。
04
总结与未来规划
龙蜥社区采用 SIG 共建的方式,来繁荣国产化机密计算安全生态。与 Cloud Kernel SIG 共建 ANCK 内核,目前支持 CSV 1、2全功能(包括启动、迁移等),CSV 3 预计年底支持。与云原生 SIG 共建 CSV 机密容器,目前支持了 kata 2.0 机密容器,正在开发 Kata 3.0 机器容器的支持。与虚拟化 SIG 共建的虚拟化组件(Qemu、KVM、EDK2)已经支持 CSV1、CSV2 和 CSV3。与 Hygon Arch SIG 共建 CSV 虚拟机的常用特性使用指南,包括 CSV 虚拟机常用的 DCU 直通、全盘加密、Attestation、机密容器等功能。与可信 SIG 共建的基于 CSV 的 vTPM 架构正在架构设计与开发中。与国密 SIG 合作共建国密生态,希望能够提供全栈的国密生态解决方案。
通过调研和收集社区用户的需求,结合实际的开发情况,龙蜥社区后续将从以下几点进行持续的迭代和开发,请大家多多关注。
- 龙蜥社区国产化第三方远程证明服务。
- HMS:基于 CSV 的可信 KMS 服务。
- 国密支持:支撑国产的 Attestation。
- 机密容器:Kata 3.0 机密容器。
- ConfidentialvTPM:可信计算技术提供统一的 attestation,动态度量能力。
相关地址:
云原生机密计算 SIG 主页地址:
https://openanolis.cn/sig/coco
Hygon Arch SIG 主页地址:
https://openanolis.cn/sig/Hygon-Arch
《云原生机密计算最佳实践白皮书》下载链接:
https://openanolis.cn/assets/static/confidentialComputing.pdf
—— 完 ——
关于龙蜥
龙蜥社区是立足云计算打造面向国际的 Linux 服务器操作系统开源根社区及创新平台。龙蜥操作系统(Anolis OS)是龙蜥社区推出的 Linux 发行版,拥有三大核心能力:提效降本、更加稳定、更加安全。
目前, Anolis OS 23 已发布,全面支持智能计算,兼容主流 AI 框架,支持一键安装 nvidia GPU 驱动、CUDA 库等,完善适配 Intel、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密支持。
加入我们,一起打造面向云时代的操作系统!