SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

Stella981
• 阅读 902

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

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

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

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

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

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

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

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

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的命令类似。

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

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

Occlum开源地址:

https://github.com/occlum/occlum

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

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

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

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里面。

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

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

第一,安全第一的设计原则。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

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

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

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

本文归档在 sofastack.tech。

SOFAEnclave:蚂蚁机密计算如何解决现实挑战?

本文分享自微信公众号 - 金融级分布式架构(Antfin_SOFA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
SOFAEnclave:蚂蚁金服新一代可信编程环境,让机密计算为金融业务保驾护航102年
近日,Linux基金会宣布全球多家巨头企业成立机密计算联盟(ConfidentialComputingConsortium),在对于数据安全和隐私担忧的不断增长下,基于可信执行环境技术的机密计算作为一种可行的解决方案,成为互联网巨头关注的焦点。蚂蚁金服很早就关注此类技术,并基于机密计算打造了蚂蚁金服新一代可信编程中间件SOFAEnclave,为
Wesley13 Wesley13
3年前
SGX 侧信道攻击综述
IntelSGX技术是一种新的基于硬件的可信计算技术。该技术通过CPU的安全扩展,对用户空间运行环境(enclave)提供机密性和完整性保护。即使是攻击者获得OS,hypervisor,BIOS和SMM等权限,也无法直接攻击enclave。因此,攻击者不得不通过侧信道的攻击方法来间接获取数据(比如隐私数据,加密密钥等等)。得益于enclave的强安