编者按:龙蜥社区云原生机密计算 SIG 定位于云原生机密计算底层基础设施,专注于机密计算底层技术。在阿里巴巴开源开放周中, 龙蜥社区机密计算 SIG Maintainer、Intel 产品安全专家张顺达分享了《Intel 机密计算技术在龙蜥社区的实践》,帮助开发者龙蜥社区机密计算 SIG,以及 Intel 在 SIG 当中的工作和进展。以下为本次分享内容:
一、龙蜥社区云原生机密计算 SIG 背景介绍
机密计算通过在基于硬件的可信执行环境(TEE)中执行计算的方式来保护使用中的数据。 这些安全的、隔离的环境可防止对使用中的应用程序和数据进行未经授权的访问或篡改,从而提升相关组织在管理敏感数据和受监管数据方面的安全级别。TEE目前流行的技术有 Intel 的SGX、TDX,AMD 的 SEV 及 ARM 的 TrustZone 等等。当前,Intel 在龙蜥社区主要提供了 SGX 和 TDX 支持,以及在 SGX 和 TDX 上构建的运行时虚拟机以及容器等一些列机密计算应用。英特尔软件防护扩展(Intel Software Guard Extensions,SGX)是一组安全相关的指令,它被内置于一些现代 Intel 中央处理器(CPU)中。它们允许用户态将特定内存区域设置为私有区域,此区域也被称作飞地(Enclaves)。其内容受到保护,不能被用户应用本身以外的任何进程存取,包括以更高权限级别运行的进程。CPU 对受 SGX 保护的内存进行加密处理。受保护区域的代码和数据的加解密操作在 CPU 内部动态(on the fly)完成。因此,处理器可以保护代码不被其他代码窥视或检查。SGX 使用的威胁模型如下:Enclaves 是可信的,但 Enclaves 之外的任何进程都不可信(包括操作系统本身和任何虚拟化管理程序),所有这些不可信的主体都被视为有存在恶意行为的风险。Enclaves 之外代码的任何代码读取受保护区域,只能得到加密后的内容,由于 SGX 不能防止针对运行时间等侧信道信息的测量和观察,所以在 SGX 内部运行的程序本身必须能抵抗侧信道攻击。SGX 被设计用于实现安全远程计算、安全网页浏览和数字版权管理(DRM)。其他应用也包括保护专有算法和加密密钥。英特尔® Trust Domain Extension (TDX) 正在推出新的架构元件,以帮助部署称为信任域 (TD)的硬件隔离虚拟机 (VM)是 SGX 的下一代产品。龙蜥社区云原生机密计算 SIG(Special Interest Group)宗旨是构建一个云原生的机密计算开源技术栈,降低机密计算的使用门槛,简化在云上的部署和应用难度,拓展使用场景及创新方案,主要定位于底层的基础设施,为广大开发者提供基础的支撑。
SIG 目前主要的活跃的项目有海光 CSV 机密容器、Inclavare Containers 机密容器、Intel SGX 和 TDX 基础架构的适配,以及阿里云 JavaEnclave、蚂蚁 Occlum,和其他社区 SIG 也有密切的合作,比如 Cloud Kernel、海光 Arch、Intel Arch、虚拟化、云原生等。二、Intel 机密计算在龙蜥社区的实践以及规划
目前机密计算领域有一些普遍的、共性的问题,云原生机密计算 SIG 都有相应的应对和解决方法:首先是用户的心智不足,普遍对这项技术认知感不足,甚至不知道机密计算,也缺少需求。我们就通过龙蜥大讲堂等直播演讲的形式来推广,并且也通过龙蜥实验室让外部用户能够体验机密计算。
其次是技术门槛相对偏高。比如 SGX 和 TrustZone 的编程模型比较复杂,学习和使用门槛比较高;但机密虚拟机形态的 SEV 及 TDX 仍需要近一步推广。
针对这个问题,我们会在 Anolis 中引入机密计算让用户使用,也会提升机密计算的可用性,支持多种硬件,提供多种部署形态和技术栈,尽量满足用户的不同需求。
再次是应用产品缺乏普适性。例如目前的使用场景通常都是特定行业,特别是有壁垒的行业,如金融行业等。因此我们要提升通用性,提出更多具有通用性的解决方案。
最后就是信任根和信任模型的的问题。国内用户对国外 CPU 的信任根问题存在担忧,另外租户也可能希望将云厂商及第三方从自己的 TCB 中完全移除。应对这个问题,云原生机密 SIG 将会发布机密计算技术白皮书,通过远程证明体系来做一些澄清,增加用户信心。
那 Intel 在针对以上问题作出的解决方案有以下 3 方面:- 降低技术门槛方面,会尽量提供便捷的编程接口,例如 SGX 支持 LibOS 的方案:
关于 LibOS 方案:在 SGX 编程模型中,可信部分一般需要用户自己移植到 Enclave 当中,使用特定的编程接口来操作。Gramine 和 Occlum 使用 LibOS,将用户程序直接全部放到一个大 Enclave 当中,为用户提供系统调用、IO 等支持。也将 SGX SDK/PSW(平台软件/Intel提供的基础服务),DCAP 的相关安装包和库,适配到 Anolis 当中,使得用户可以更方便地使用。
在通用性支持上面,我们对容器和虚拟机做最大限度的支持,保证通用性方案可以很好的在上面运行。
在可信支持方面,Intel 也会提供基础的远程证明框架,帮助澄清误会和增加用户的信心。
下图是龙蜥社区打造一体化解决方案示意图。从图中可以看到龙蜥社区承接芯片厂商、支撑 OSV、整机厂、ISV 和终端用户。在云原生机密计算 SIG 活跃项目中,Intel 提供了 SGX Stack,并支持Inclave container,另外还有 JavaEnclave、Occlum 也是基于 SGX 技术。所以 Intel 在龙蜥社区相关工作可以分为 4 大类:首先是机密计算和可信环境的一个基础的支撑,主要包括SGX SDK、SGX PSW/DCAP 安装包的适配和 Anolis 的集成。
其次是基于 LibOS 的运行时支持,目前使用该项技术的有 Intel 的 Gramine 和蚂蚁的 Occlum。
然后还有虚拟化和容器,SGX 虚拟化 SGX、SGX 和 TDX 机密容器。
最后是对同态加密的支持,包括软件和硬件(例如 QAT 硬件加速)等等。
目前 Intel 在龙蜥社区中的各个项目都在稳步推进,像海光 CSV 机密容器是已交付, Intel SGX 软件包、SGX LibOS 解决方案,SGX 虚拟化以及 TDX 远程证明也会在下文中作为主要的例子来展开讲一下。在机密计算产品和技术图中, Intel 产品在各个产品当中主要提供基础机密计算能力的支撑,Intel SGX 和 TDX DCAP 能够向上支撑运行时、虚拟机、容器等具体的使用,最终让用户方便地将自己的 workload 运行到一个可信的机密计算环境当中。Intel 为 Anolis OS 提供了适配和优化过的 SGX SDK/PSW/DCAP 以及 TDX DCAP 软件安装包和运行时库。将它们集成到龙蜥操作系统(Anolis OS)之后,可以让用户更加方便高效地使用,为上层的机密计算应用如机密虚拟机和机密容器等提供服务。关于 Gramine 的 Stack,Gramine 使用 Intel SGX 技术,集成到龙蜥操作系统(Anolis OS)之后,用户可以更加方便地部署具体的应用,例如机器学习等 Workload,无需修改或者重新编译。Gramine 作为基础支撑模块,为 Enclave 机密容器提供 SGX 运行环境。Occlum 也是类似的思路。Enclave 机密容器及其他 SGX 机密容器 /Workload 也可以选择 Occlum 作为运行 SGX 的环境。SGX 虚拟化,在VM或者VM Pod当中SGX SDK/PSW/DCAP都起到了一个基础支撑的作用,服务于具体的 Runtime。TDX 主要提供了远程证明支持,用户在 TDX 当中跑 Workload 相对比较容易,由于整个 OS/VM 都是加密的,也不用再移植任何代码。但是远程证明是一个非常重要的点 -- 用户怎么信任他的 VM 运行在一个有 TDX 能力的硬件平台上?我们提供了一套软件和服务,使得 TDX VM 可以高效和安全地完成远程证明。关于同态加密,Intel 也有相关的软件和库,另外提供了硬件支持。图中 ICX 是最新的一代服务器芯片,SPR 是下一代服务器芯片,QAT 则是加解密加速硬件。我们将目前的一些交付流程(如 SGX 和 TDX DCAP 的软件包适配流程)分为几个阶段:首先是在 Intel 方面完成所有的测试,然后是在 Intel 仓库中发布,下一个阶段就是开源 Build spec,这样客户可以有一个标准的 Build spec 来自己进行 build,最后是集成到 Anolis 的仓库中。目前我们以及顺利地完成了测试,并将陆续发布在 Intel 和 Anolis 的软件仓库里。 三、总结
通过龙蜥社区机密计算 SIG,推广机密计算技术,提高可用性和通用性,增加用户使用机密计算的信息,Intel 在这个过程中也将机密计算如 SGX 和 TDX 技术落地,服务于龙蜥社区的用户。Intel 目前提供了以 SGX SDK/PSW/DCAP, TDX DCAP 软件包为代表的 TEE 基础架构支撑,和基于 LibOS 的运行时支持 Gramine。并以这些为基础支持了其他 LibOS 运行时如蚂蚁的 Occlum,以及更高层次的机密计算应用,例如 SGX 虚拟化及 SGX/TDX 机密容器。另外 Intel 也提供了同态加密软硬件技术 Inte HE Stack,和加解密硬件加速技术 QAT,支持更多样的机密计算使用场景。