KubeTEE = Kubernetes + TEE


在数据安全和隐私保护越来越受到重视的今天,机密计算(Confidential Computing)作为具备广泛应用前景的前沿技术领域,受到国内外互联网公司重视。蚂蚁基于在机密计算方面的探索和实践,打造了SOFAEnclave机密计算解决方案,下面就让我们系统的来了解一下SOFAEnclave技术栈里都包括哪些组成部分,以及它是如何解决落地问题的。

云原生的概念这两年逐渐深入人心,越来越多的应用从设计之初就是面向云环境的。但是,据统计,仍然有很大一部分应用由于各种原因没有上云,尤其是那些较为重要、敏感的应用。我们认为,用户不上云的一个重要原因是对云平台的信任不足,不确定自己的重要应用跑在云上是否有安全保证。为了解决这个问题,我们提出来可信原生的概念,让基础设施更加可信。

可信原生技术包括了平台的可信、存储和通讯的安全,以及我们今天要讲的主题——机密计算。利用芯片提供的可信执行环境或者叫做Enclave,机密计算使得应用不再担心来自其他应用、操作系统、其他租户的威胁。

听起来很美。但是,今天机密计算在实际应用中仍面临较多的挑战。

首先,Enclave是一个受限的环境,从编程接口到编程模型都跟我们熟悉的Linux环境有很大不同。

其次,开发者要花力气学习市面上的多种不同Enclave架构。

再有,目前主流的集群调度系统还不支持Enclave,限制了Enclave的大规模使用。

为了解决这些挑战,蚂蚁开发了SOFAEnclave机密计算软件栈,分为如图所示的三个部分,下面我逐一介绍。

1. Occlum:让人人都可以“机密计算”

首先介绍一下我们的开源项目Occlum LibOS。Occlum提供POSIX编程接口,支持多种主流语言(C/C++, Java, Python, Go, Rust等),支持多种安全文件系统。可以说,Occlum提供了一个兼容Linux的Enclave运行环境,使得机密计算轻松支持已有应用,也使得机密应用开发者复用原有开发技能。Occlum不但在工业界场景中得到了广泛的应用,而且也在系统顶会ASPLOS2020发表了学术论文,代表了机密计算的领先水平。

从架构上来看,Occlum不但提供基本的类似Linux的操作系统能力,而且提供一个类似Docker的用户使用接口,比如这里的Occlum build和Occlum run等都跟docker的命令类似。

社区方面,Occlum是阿里巴巴Inclavare Containers的缺省运行时,也在与Hyperledger Avalon等其他社区项目合作。同时,Occlum已经捐赠给机密计算联盟CCC,目前是唯一一个来自中国的开源项目。另外,值得一提的是,微软Azure Cloud在今年的Microsoft Ignite(类似阿里云栖大会)大会上公开推荐在Azure上基于Occlum开发机密计算应用。

Occlum开源地址:https://github.com/occlum/occlum

Occlum也在探索新的特性,比如我们提供了Occlum embedded mode,分割型应用可以把Occlum当作一个库(而不是OS)按需链接特定代码到应用里,兼顾TCB小和接口丰富之间的平衡。

2. HyperEnclave:提供统一的Enclave抽象

我们一开始就提到市场上目前有多种Enclave硬件平台。这些Enclave各有特点,但也给开发者带来了较大的学习负担。作为这些硬件的用户,我们其实希望有一个统一的Enclave抽象。另外,我们也希望能对Enclave的启动和证明有更多的控制,能一定程度上抵御困扰硬件Enclave的侧信道攻击。

针对上述问题,我们提出了HyperEnclave。这是一个统一的enclave平台。作为抽象层,它既能映射到现有的各种Enclave硬件实现,也能使用未来的硬件能力,比如Intel MKTME/TDX。它支持现有的Enclave SDK,比如Intel SGX SDK。它甚至可以支持没有Enclave扩展的机器,在这种机器上我们基于虚拟化技术实现了隔离机制——我们开发了一个Type 1.5的hypervisor用来创建和管理基于虚拟化的enclave。在可信方面,我们基于可信计算技术(如TPM等)实现了可信启动和远程证明。基于HyperEnclave,我们甚至可以在AMD的机器上跑SGX Enclave Apps。加上AMD SEV或者Intel MKTME等内存加密硬件能力,HyperEnclave也可以防护物理攻击。

我们详细看一下这个系统的生命周期各界段。首先Linux系统像往常一样启动。接着,我们的hypervisor模块开始加载。Hypervisor加载完毕之后,会把原来的Linux host降级为一个不被信任的guest。

这个Hypevisor支持创建Enclave虚拟机。Enclave虚拟机支持传统机密计算SDK提供的分割式编程模型。Enclave虚拟机也支持利用Occlum将整个应用运行在Enclave里面。

我们总结一下这个虚拟化技术的特点。

第一,安全第一的设计原则。TCB是一个非常小的、可形式化验证的、用内存安全语言RUST开发的hypervisor。

第二,支持基于TPM/TXT的Enclave可信启动和远程证明。

第三,兼容Linux已有生态。前面提到这是一个Type 1.5 Hypervisor,顾名思义这是一个兼具Type 1 & Type 2 特点的Hypervisor,更明确地说就是,它boot like type 2, 但run like type 1。这样一来我们可以很好地适应目前主流的Linux部署方式。另外,这个Hypervisor也可以跟demoted Linux里面的KVM很好地配合。

第四,我们可以比较容易地引入硬件提供的内存加密能力,比如Intel MKTME/TDX或者AMD SEV。

3. KubeTEE:让机密计算支持大规模k8s集群

前面提到的Occlum和HyperEnclave都还是针对单个计算节点的技术。但是目前的互联网应用都是基于大规模集群的,尤其是基于Kubernetes的。Kubernetes提供了很多基础的集群管理、调度、和监控能力,但这些能里并不能很好适用到机密计算场景。首先我们需要让Kubernetes能够认识Enclave硬件,将enclave暴露给容器,监控Enclave资源,并处理Enclave特有的事务比如远程证明等等。

我们研发的KubeTEE就是Kubernetes和Enclave也就是TEE的有机结合。基于KubeTEE,用户可以使用kubernetes的工作流程来轻松管理机密计算集群,部署Enclave服务,使用Enclave中间件等等。

KubeTEE开源地址:https://github.com/SOFAEnclave/KubeTEE

KubeTEE也包含一个叫做AECS的组件,基于机密计算的远程证明机制,简化集群内Enclave的密钥分发和部署过程。

最后总结一下。我们发现机密计算在实际应用中面临很多挑战,而我们希望SOFAEnclave机密计算软件栈能帮助大家解决这些挑战,希望降低机密计算的门槛,促进云原生到可信原生的演进。SOFAEnclave的三个组件中,Occlum、KubeTEE已经开源,HyperEnclave也将开源。希望跟业界加强交流合作,谢谢!

- END -