论文原文链接
原文都是英文的,先翻译一遍,在翻译的过程中阅读和理解。
HyperEnclave:一个开放的跨平台可信执行环境
摘要
学术界和工业界已经提出了许多可信执行环境(TEEs)。然而,它们中的大多数都需要特定的硬件或固件更改,并且绑定到特定的硬件供应商(如Intel、AMD、ARM和IBM)。在本文中,我们提出了HyperEnclave,这是一个开放的、跨平台的基于进程的TEE,它依赖于广泛可用的虚拟化扩展来创建隔离的执行环境。HyperEnclave特别支持灵活的enclave操作模式,以满足各种enclave工作负载下的安全性和性能需求。我们提供的enclave SDK可以在HyperEnclave上运行现有的SGX程序,只需很少或不需要更改源代码。我们已经在AMD商用服务器上实现了HyperEnclave,并在一家世界领先的金融科技公司部署了该系统,以支持现实世界的隐私保护计算。对微基准测试和应用程序基准测试的评估表明,HyperEnclave的设计只引入了很小的开销。
介绍
近年来,由于对能够处理大量数据样本的隐私保护数据处理技术的高需求,可信执行环境(TEEs)作为一种新的计算范式出现,被称为机密计算。TEEs提供硬件强制的内存分区,可以安全地处理敏感数据。现有TEE设计支持不同级别的TEE抽象,例如基于进程的(Intel的Software Guard eXtensions (SGX))、基于虚拟机的(AMD的SEV)、独立世界(ARM的TrustZone)和混合的(Keystone)。目前,TEEs最突出的例子是Intel SGX,它广泛应用于商用现货(COTS)桌面和服务器处理器中。
动机。今天的大多数TEE技术都是封闭的,需要特定的硬件或固件更改,它们难以审计,发展缓慢,因此不如加密替代方案(如同态加密),后者基于公共算法和广泛可用的硬件。此外,大多数现有的TEE设计限制了 enclaves(即受保护的TEE区域)只能在固定模式下运行。TEE难以满足需要保护的各种类型的应用程序的性能和安全需求。例如,Intel SGX enclaves以用户模式运行,不能访问特权资源(如文件系统、IDT和页表)和处理特权事件(中断和异常)。因此,运行I/O密集型和内存密集型任务会导致显著的性能下降。
为了填补这一空白,在本文中,我们提出了HyperEnclave的设计,以支持机密云计算,可以在云中随时可用的传统服务器和正在上升的ARM(或未来的RISC-V)服务器上安全运行,而不需要特定的硬件功能。为此,我们的设计提供了一个基于流程的TEE抽象,使用广泛可用的虚拟化扩展(用于隔离)和TPM(用于信任根和随机性等)。为了更好地满足特定enclave工作负载的需求,HyperEnclave支持灵活的enclave操作模式,即,enclave可以以不同的特权级别运行,并且可以访问某些特权资源。
设计细节。 在我们的设计中,系统运行在三种模式下。一个名为RustMonitor(用Rust编写的安全监视器)的可信软件层以监视器模式运行,该模式映射到VMX根模式。RustMonitor负责执行隔离,并且是可信计算基础(TCB)的一部分。不受信任的操作系统(称为主操作系统)为应用程序的不受信任部分提供执行环境;不受信任的操作系统和应用部分在正常模式下运行,映射到VMX非root模式。应用中受信任的部分(如enclave)运行在安全模式下,可以灵活映射到VMX非根模式的ring-3或ring-0,或者VMX根模式的ring-3。
内存隔离是通过内存管理单元(MMU)的基于硬件的内存保护来实现的。正如我们观察到的那样,现有的基于进程的 TEE(例如,Inktag和Intel SGX)容易受到基于页表的攻击,我们的内存隔离方案选择完全通过可信代码来管理enclave的页表和页错误事件,从而消除了主操作系统的参与。该设计还可以防止某些类型的enclave恶意软件攻击。
为了最小化攻击面,我们采用了一种称为延迟启动的方法:首先启动主操作系统内核;然后,在主操作系统中作为内核模块实现的一段特殊内核代码运行,以最高特权级别(即监视器模式)初始化RustMonitor,并将主操作系统降级为普通模式。在引导过程中测量所有引导的组件,并将其扩展到TPM平台配置寄存器(PCRs)。由于TPM认证保证了 PCRs不能回滚,因此该设计确保了RustMonitor被安全启动;否则,在远程认证期间将检测到对TPM报价的违反。
我们已经在AMD商用服务器上实现了HyperEnclave。总的来说,RustMonitor包含大约7500行Rust代码。我们的enclave SDK的 APIs与SGX官方SDK兼容。因此,为SGX编写的代码可以很容易地移植到HyperEnclave上运行,只需对源代码进行很少(或没有)更改即可重新编译代码。我们已经移植了许多SGX应用程序,以及Rust SGX SDK和Occlum库操作系统到HyperEnclave。微基准测试显示,eccall和occall的开销分别< 9,700和< 5,260周期(在Intel SGX上分别为14,432和12,432周期)。对一组实际应用程序的评估表明,开销很小(例如,SQLite上的开销仅为5%)。
贡献。 综上所述,本文提出了HyperEnclave的设计,并做出了以下贡献:
- 一个开放的、跨平台的、基于处理的TEE,具有最低的硬件要求(虚拟化扩展和TPM),可以运行现有的SGX程序,只需很少或不需要更改源代码,这使得可以重用英特尔SGX的丰富工具链和生态系统。
- 支持灵活的enclave操作模式,无需更改硬件或固件即可满足enclave应用程序的各种安全性和性能需求。
- 一种内存隔离方案,使enclave的页表和页错误完全由信任代码管理,减轻了基于页表的攻击和enclave恶意软件的攻击。
- 一种经过测量的后期发射方法,结合基于 TPM的认证来减少攻击面。
- 使用内存安全语言Rust在商品服务器上的实现(大部分),并在真实服务器上进行评估。硬件和应用程序,证明所建议的设计是实用的,并且只有很小的开销。
背景
可信执行环境
可信执行环境(TEE)旨在确保敏感数据在隔离的可信环境中进行存储、处理和保护。