云原生时代,Go 语言凭借其原生支持高并发等特性,一跃成为云原生基层设施建设首选语言,荣登各大编程语言排行榜前列,成为用户增长最快的新兴编程语言之一。而相比之下,同样以取代 C/C++为目的被创造出来的另一门新语言 Rust 在很长一段时间里则不温不火,陷入“叫好不叫座”的尴尬境地。
幸运的是,随着云原生浪潮逐渐进入下半场,企业和用户对数据的安全性有了更高的要求,“可信原生”与“机密计算”等数据安全新概念被业界提出,并吸引了大批软硬件巨头入场布局, 也让 Rust 这门注重内存安全的高性能编程语言迎来了绝佳的发展机遇。
深耕金融、支付相关技术领域的蚂蚁集团是国内外机密计算技术领域的先行者,其开源的 SOFAEnclave 机密计算解决方案被包括微软在内的多家科技巨头采用,团队输出的相关技术论文也多次在国际顶会发表,受到工业界和学术界的广泛认可。为深入了解这一前沿技术领域,我们邀请到了蚂蚁集团机密计算总监闫守孟,为我们揭开机密计算的神秘面纱。
什么是机密计算strong>
随着云计算的快速发展,越来越多的关键性服务和高价值数据被迁移到了云端。云安全也因此成为学术界和工业界关注的一个焦点。
机密计算填补了当前云安全的一项空白——使用中数据(Data-in-use)的加密。过去通行的做法是对数据在存储中(比如硬盘)和传输中(比如 络)加密,而在使用中(比如内存)解密,以便处理。而机密计算可以保护使用中数据的机密性和完整性。
也就是说,通过机密计算技术,一些对数据安全性要求极高的传统企业如金融、银行、政企等客户,也可以放心地使用公有云服务。
目前,多家云计算巨头都在不约而同地推广这项技术:微软已于 2017 年 7 月宣布开始接受 Azure 机密计算的早期试用申请;IBM 于 2017 年 12 月宣布 IBM 云数据保护(Cloud Data Guard)的预览版;谷歌也于 2018 年 5 月开源了名为 Asylo 的机密计算框架。
2019 年 8 月,Linux 基金会宣布联合多家科技巨头组建“机密计算联盟(Confidential Computing Consortium,简称 CCC)”,创始成员包括阿里巴巴、Arm、百度、谷歌、IBM、英特尔、微软、红帽、瑞士通以及腾讯。让机密计算技术进入了更多开发者的视野。
那么,机密计算究竟是如何实现的呢p>
实际上,上述所有云计算巨头在实现机密计算时都离不开一种称为“可信执行环境(TEE)”的技术。
顾名思义,TEE 提供一种与不可信环境隔离的安全计算环境,正是这种隔离和可信验证机制使得机密计算成为可能。
TEE 一般是直接基于硬件实现的,比如 Intel SGX,Intel TDX,AMD SEV,ARM TrustZone,以及 RISC-V Keystone 等;基于虚拟化技术也可以构造 TEE,比如微软的 VSM,Intel 的 Trusty for iKGT & ACRN。
其中,Intel 软件防护拓展(Software Guard Extensions,简称 SGX)是目前商用 CPU 中最为先进的 TEE 实现,它提供了一套新的指令集使得用户可以定义称为 Enclave 的安全内存区域。CPU 保证 Enclave 与外界强隔离,并提供内存加密和远程证明机制,从而保护 Enclave 代码和数据的机密性、完整性和可验证性。不同于之前的 TEE 实现,比如 ARM TrustZone,SGX 每个 APP 都可以有自己独立的 TEE,甚至可以创建多个 TEE,而 TrustZone 是整个系统有一个 TEE;这里也省去了向设备厂商申请将 TA(可信应用)装入 TEE 的过程。由于 SGX 的先进性,目前云端机密计算领域甚至已公认用 Enclave 这个词来指代 TEE。
通过机密计算技术,能够解决那些业务数据敏感的用户对云原生平台不信任的问题,也由此引出了“可信原生”的概念,即让云原生基础设施在用户一侧更加可信。
机密计算应用开发难点
显然,这一技术的成熟意味着包括金融、政企等业务数据敏感的用户上云成为可能,市场前景广阔。虽然这些听起来很美,但机密计算在实际应用中仍面临很多的挑战。
-
首先,Enclave 是一个受限的环境,从编程接口到编程模型都跟开发者熟悉的 Linux 环境有很大不同。
-
其次,开发者要花力气学习市面上的多种不同 Enclave 硬件架构。
-
再有,目前主流的集群调度系统(如 K8s)还不支持 Enclave,限制了 Enclave 的大规模使用。
以基于 Intel SGX CPU 开发机密计算应用程序为例。
Occlum LibOS
Occulum 是蚂蚁开源的 TEE 操作系统,也是 CCC 机密计算联盟中第一个由中国公司发起的开源项目。
Occlum 提供 POSIX 编程接口,支持多种主流语言(C/C++, Java, Python, Go, Rust 等),支持多种安全文件系统。可以说,Occlum 提供了一个兼容 Linux 的 Enclave 运行环境,使得机密计算可以轻松支持已有的应用,也使得机密应用开发者复用原有开发技能。Occlum 不但在工业界场景中得到了广泛的应用,而且也在系统顶会 ASPLOS 2020 发表了学术论文,代表了机密计算业界的领先水平。
从架构上来看,Occlum 不但提供基本的类似 Linux 的操作系统能力,而且提供一个类似 Docker 的用户使用接口,比如这里的 Occlum build 和 Occlum run 等都跟 Docker 的命令类似。
总结一下这个虚拟化技术的特点:
第一,安全第一的设计原则。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。
KubeTEE
前面提到的 Occlum 和 HyperEnclave 都还是针对单个计算节点的技术。但是目前的互联 应用都是基于大规模集群的,尤其是基于 Kubernetes 的。Kubernetes 提供了很多基础的集群管理、调度、和监控能力,但这些能力并不能很好适用到机密计算场景。首先我们需要让Kubernetes 能够认识 Enclave 硬件,将 enclave 暴露给容器,监控 Enclave 资源,并处理Enclave 特有的事务比如远程证明等等。
闫守孟团队研发的 KubeTEE 就是 Kubernetes 和 Enclave 也就是 TEE 的有机结合。基于KubeTEE,用户可以使用 kubernetes 的工作流程来轻松管理机密计算集群,部署 Enclave 服务,使用 Enclave 中间件等等。
闫守孟是蚂蚁集团资深技术专家和负责机密计算方向的研发总监。他目前的研究兴趣是基于可信执行环境 TEE 的机密计算技术。他领导了蚂蚁集团 SOFAEnclave(Occlum、HyperEnclave、KubeTEE 等)机密计算软件栈的研发,发起并主导了国内外多项TEE标准的制定。加入蚂蚁之前,闫守孟在 Intel 中国研究院任高级主任研究员,主要从事安全隔离技术的研究,研究成果融入 Intel 相关软硬件产品。加入 Intel 之前,他在 2005 年从西北工业大学计算机学院获得博士学位。他拥有 20 余项专利,并在 ASPLOS, PLDI, FSE, MM 等顶级会议发表文章。
延伸阅读
-
人人都可以“机密计算”:Occlum 使用入门和技术揭秘 | 开源
-
WebAssembly 在 MOSN 中的实践 – 基础框架篇
-
Protocol Extension Base On Wasm——协议扩展篇
-
MOSN 的无人值守变更实践

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92459 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!