作为业界首个面向机密计算场景的开源容器运行时,Inclavare Containers 项目于 2020 年 5 月开源,短短一年多时间内发展势头非常迅猛,吸引了众多领域专家和工程师的关注与贡献。2021 年 9 月 15 日,云原生计算基金会(CNCF)宣布通过全球 TOC 投票接纳 Inclavare Containers 成为 CNCF 官方沙箱项目,成为机密计算技术在云原生领域第一个进入 CNCF 的项目。
不过,如果你对机密计算领域不太关注,可能对 Inclavare Containers 还没有做过太深入的了解。别着急,本文为你详细的梳理一次 Inclavare Containers 项目的发展脉络,解读它的核心思想和创新技术。
首先,什么是 Inclavare Containers?
一言以蔽之,Inclavare Containers 是业界首个面向机密计算场景的开源容器运行时。可是,什么是机密计算呢?Inclavare Containers 跟机密计算又是什么关系?它能帮助我们解决什么问题?
数据安全与机密计算
数据在整个生命周期有三种状态:At-Rest(静态)、In-Transit(传输中)和 In-Use(使用中)。
- At-Rest 状态下,一般会把数据存放在硬盘、闪存或其他的存储设备中。保护 At-Rest 状态的数据有很多方法,比如对文件加密后再存放或者对存储设备加密。
- In-Transit 是指通过公网或私网把数据从一个地方传输到其他地方,用户可以在传输之前对文件加密或者采用安全的传输协议保证数据在传输中的安全,比如HTTPS、SSL、TLS、FTPS 等。
- In-Use 是指正在使用的数据。即便数据在传输过程中是被加密的,但只有把数据解密后才能进行计算和使用。也就意味着,如果数据在使用时没有被保护的话,仍然有数据泄露和被篡改的风险。
在这个世界上,我们不断地存储、使用和共享各种敏感数据:从信用卡数据到病历,从防火墙配置到地理位置数据。保护处于所有状态中的敏感数据比以往任何时候都更为重要。如今被广泛使用的加密技术可以用来提供数据机密性(防止未经授权的访问)和数据完整性(防止或检测未经授权的修改),但目前这些技术主要被用于保护传输中和静止状态的数据,目前对数据的第三个状态“使用中”提供安全防护的技术仍旧属于新的前沿领域。
机密计算指使用基于硬件的可信执行环境(Trusted Execution Environment,TEE)对使用中的数据提供保护。 通过使用机密计算,我们现在能够针对“使用中”的数据提供保护。
机密计算的核心功能有:
- 保护 In-Use 数据的机密性。未经授权的实体(主机上的应用程序、主机操作系统和Hypervisor、系统管理员或对硬件具有物理访问权限的任何其他人。)无法查看在TEE中使用的数据,内存中的数据是被加密的,即便被攻击者窃取到内存数据也不会泄露数据。
- 保护 In-Use 数据的完整性。防止未经授权的实体篡改正在处理中的数据,度量值保证了数据和代码的完整性,使用中有任何数据或代码的改动都会引起度量值的变化。
- 可证明性。通常 TEE 可以提供其起源和当前状态的证据或度量值,以便让另一方进行验证,并决定是否信任 TEE 中运行的代码。最重要的是,此类证据是由硬件签名,并且制造商能够提供证明,因此验证证据的一方就可以在一定程度上保证证据是可靠的,而不是由恶意软件或其他未经授权的实体生成的。
机密计算的现状与困境
业界内的诸多厂商就已经开始关注并投入到机密计算中。各大芯片厂家和云服务提供商(Cloud Service Provider,简称 CSP)都在机密计算领域投入研发资源,并组建了“机密计算联盟”。该联盟专门针对云服务及硬件生态,致力于保护计算时的数据安全。
目前支持TEE的硬件平台主要有 3 个:Intel® SGX、ARM TrustZone 和 AMD SEV,他们有不同的应用场景和实现方式。
1、ARM TrustZone 把硬件资源分为安全世界和非安全世界两部分,所有需要保密的操作在安全世界执行,其余操作在非安全世界执行,安全世界和非安全世界通过一个名为 Monitor Mode 的模式进行转换。典型的应用场景有移动支付、数字钱包等。
2、AMD 利用 SEV(AMD Secure Encrypted Virtualizationn),SME(AMD Secure Memory Encryption)和SEV-ES(Secure Encrypted Virtualization-Encrypted State)等技术实现虚拟机的 Guest 内存加密和安全隔离。
3、Intel® SGX 是 Intel 提供的一组指令,用于提高应用的代码和数据的安全性。Intel® SGX 程序由不可信代码和可信 Enclave 组成,敏感的代码和数据放入到 Enclave 中。Intel® SGX 指令在一个特定的加密内存区域(EPC)中创建和执行 Enclave,该