随着 Intel 新一代数据中心级处理器 Ice Lake 的发布,由 Intel SGX 保护的可信应用的性能已经可以比肩普通应用,让我们来看看这一切是如何通过硬件进步与软件优化变为可能?
北京时间 2021 年 04 月 07 日凌晨,Intel 发布了第 3 代至强可拓展处理器(代号为 Ice Lake)。这是 Intel 首次发布基于 10nm 制程的数据中心芯片,带来了更快的单核性能(声称 20% 的 IPC 提升)、更多的核心数(最多 40 x 2 个),8 通道 DDR4 内存支持,以及面向 AI 和密码学的加速指令。除了上述性能提升以外,Intel 还高调宣布了在 Ice Lake 上带来重要的安全特性——下一代 Intel SGX 技术。蚂蚁集团的安全计算团队在正式发布的数月前,通过与阿里云和 Intel 的合作,拿到了 Icelake 的测试芯片,并对其性能做了详尽的测评。因此,我们抢先给大家带来了干货满满的下一代 Intel SGX 的性能测评,并分享我们提出的软件性能优化方法。3、下一代 Intel SGX 性能优化(在 Occlum 项目中)本文的部分内容整理自作者在 OC3 会议(Open Confidential Computing Conference)上的技术演讲,补充了此前无法在 Intel 正式发布 Icelake 之前公开的实测数据。这是业界首个对下一代 Intel SGX 的性能评估和优化报告。OC3 会议是机密计算领域开源项目的第一次线上大聚会:15 名演讲嘉宾,来自 Alibaba、Ant Group、Baidu、Intel、Google、Microsoft 等业界主流软硬件厂商;超过 650 名与会者,有来自 66 个国家和地区。蚂蚁集团的安全计算团队也受邀做了报告,介绍了我们在 Occlum 项目中如何通过引入多种异步技巧、在下一代 Intel SGX 取得 10X 性能提升的工作。Intel Software Guard Extensions (SGX)是一种内存隔离技术,它可以将用户选定的程序和数据放入被称为飞地(Enclave)的私有内存中保护起来,使得任何飞地外的(潜在恶意的)软硬件都无法窥探或者窃取飞地内的信息。
SGX 是目前测试最充分的可信执行环境(TEE)技术之一,也是实现机密计算(Confidential Computing)的最主流技术手段,可应用于多方安全计算、云计算、区块链、隐私保护等诸多场景。那 Icelake 平台上的下一代 Intel SGX(后简称“新 SGX”)带来了哪些改进呢?新 SGX 解决了旧 SGX 上的两大可扩展性问题:1. 核数:旧 SGX 此前可用的最高端芯片是 Xeon E3,而该芯片只有 6 个物理核。显然,这个数量对于数据中心场景的负载来说是完全不够用的。而新 SGX 的 Icelake 平台支持至多 80 个物理核(160 个逻辑核),带来了 CPU 计算资源的跨越式提升!2. SGX 上可信内存容量只有 256 MB。当这个容量无法满足飞地中的程序时,飞地对可信内存的访问延迟就会大幅增加( 1 - 2 个数量级),严重影响性能。而新 SGX 的 Icelake 平台将可信内存容量提升到了 1 TB,一举解决了旧 SGX 在大内存应用方面的困扰!下表总结了旧 SGX(在 Pentium Silver 和 Xeon E3 上)和新 SGX 的差别:但天下没有免费的午餐。新 SGX 在可信内存容量上的可扩展性提升是以牺牲一定的安全性为代价的:新 SGX 弱化了安全模型,放弃了对部分物理攻击的防御(即通过物理手段对内存做篡改或重放)。当然,新 SGX 对软件攻击的防御并未削弱。关于新 SGX 的设计与安全性的更详细信息可以见 Intel 的白皮书。总的来看,根据我们对实际应用场景的理解和与客户交流获得的反馈,我们认为新 SGX 提供了一个在安全和性能之间更切实际的权衡。理论上讲,新 SGX 内存访问的开销是大幅降低的。但其他方面的开销呢?是有改进,抑或是有倒退?带着这些疑问,我们测试了在三款不同的 Intel CPU 上 SGX 的性能开销,以横向比较新旧 SGX 的性能差异。1. 可信内存访问。如前所述,当飞地的可信内存用量很大时,飞地的可信内存访问开销会大幅提升。2. 动态内存管理(Encalve Dynamic Memory Management,简称 EDMM)。由于做了更多安全检查和处理,飞地中动态增减可信内存的开销要比飞地外增减普通内存更大。3. 飞地切换(Enclave Switching)。CPU 进入或退出飞地的过程叫做飞地切换(可以类比进程的上下文切换)。出于安全原因,飞地切换会带来不小的性能开销。结论:新 SGX 的可信内存访问开销几乎可以忽略不计,远优于旧 SGX。结论:新 SGX 的动态内存管理开销一般略优于旧 SGX,但开销仍然不小。结论:新 SGX 的飞地切换开销显著优于旧 SGX,但开销仍然不小。根据上面的性能测试结果,我们看到虽然新 SGX 已经消灭了可信内存访问开销了,但在动态内存管理和飞地切换方面仍然有着不小的开销。前者会拖累飞地中的可信应用在内存管理方面的效率,而后者会大幅增加可信应的 I/O 开销( I/O 通常要触发飞地切换)。那么,软件层面是否可以做一些优化,避免、缓解、或掩盖 SGX 的这些硬件开销?答案是肯定的。蚂蚁集团在机密计算(包括 Intel SGX )方向有着深厚的技术积累。我们的一个代表性工作是 Occlum 项目(https://github.com/occlum/occlum),一款蚂蚁集团自主研发、适用于 SGX 的开源库操作系统,可以使得 Linux 应用无需修改即可运行于 SGX 中,大大降低了 SGX 的使用门槛。为了优化 Occlum 在新 SGX 上的性能表现,我们早在半年前就内部启动了 Next-Gen Occlum(简称 NGO)项目,探索可能的软件优化手段。最终,我们决定在 NGO 中采用一种“以异步为中心”的新设计重新架构 Occlum。“以异步为中心”的设计使得 Occlum 可以最大化的利用 Icelake 的大内存和多核心的硬件优势,提高执行的并行性,从而避免、降低或掩盖 SGX 的硬件开销。
图. NGO 基于 Linux io_uring 的高效异步 I/O根据我们的性能测试,NGO 采用的性能优化手段是非常有效的——NGO 在多项性能指标上达到——甚至超过了——Linux 的水平!Icelake 平台上的下一代 SGX 带来了可扩展性的质变,对实际应用意义巨大。下一代 SGX 虽然未能消灭全部的硬件开销,但通过恰当的软件优化手段(如 Next-Gen Occlum 中所展示的),SGX 飞地中的可信应用性能已经可以比肩飞地外的普通应用。Next-Gen Occlum 中的优化会于近期开源,并合并入 Occlum 的主干。欢迎持续关注Occlum项目(https://github.com/occlum/occlum)。报告的 YouTube 视频:https://www.youtube.com/watch?v=3qQHrUEzFX4SOFAChannel#20 《用安全计算保护关键业务》将于 05 月 19 日(周三) 19:00 开播。
随着全社会对隐私保护越来越关注,安全计算也成了近期的热点,本期将会介绍蚂蚁集团在安全计算方面的一些方法和实践,期待与你相见!
线上互动参与,有机会获得“SOFA 三周年纪念礼物“大奖,报名请点击“阅读原文”。