论文HyperEnclave An Open and Cross-platform Trusted Execution Environment学习

news/2024/11/19 18:57:40/文章来源:https://www.cnblogs.com/binbinzhidao/p/18555416

论文原文链接
原文都是英文的,先翻译一遍,在翻译的过程中阅读和理解。

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)旨在确保敏感数据在隔离的可信环境中进行存储、处理和保护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836941.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解进程调度时机跟踪分析进程调度与进程切换的过程

张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000 实验八——理解进程调度时机跟踪分析进程调度与进程切换的过程 一、理解Linux系统中进程调度的时机 在 Linux 内核中,schedule() 函数是核心的进程调度机制。它的主要作…

李继刚Lisp提示词灵感之源:压缩推动进步

探秘李继刚Lisp提示词压缩表达的灵感来源:德国计算机科学家尤尔根施密德胡伯提出,智能系统通过学习新技能来更高效地预测或压缩信息,这种内在动力推动了好奇心和创造力的发展,适用于从婴儿探索世界到科学家发现新规律的各种场景。前面在文章《 访谈李继刚:从哲学层面与大模…

java:找不到符号 符号:变量:log

原文链接:https://blog.csdn.net/zhanghaoninhao/article/details/129180810问题:java:找不到符号 符号:变量:log环境:springboot idea解决方法:在idea中,点击file-Settings,打开配置页面,如图红框位置,输入: -Djps.track.ap.dependencies=false

【SolidWorks 2024下载与安装教程】

‌SolidWorks 2024是一款由达索系统(Dassault Systemes)开发的三维CAD软件,广泛应用于机械设计、产品开发、工程设计、制造等领域。‌ 该软件以其强大的功能和易学易用的特点,深受工程师和设计师的喜爱。SolidWorks 2024在2024版本中引入了一系列新功能和改进,旨在提高设计效…

20222315 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1、实验内容 1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工…

编程命名规范(网文)

一个好的变量或函数命名,应该能起到自解释的作用,甚至能减少我们代码的注释。 naming-cheatsheet是一个命名备忘录,记录一些常见的规范约定,并提供简单的例子说明。如果能够严格遵守这些规范,相信我们的代码可读性会大大提升,下面就来介绍 naming-cheatsheet 提供的一些建…

MyBatis 学习笔记

MyBatis 执行器 JDBC 的执行过程分为四步:获取数据库连接(Connection) 预编译 SQL(PrepareStatement) 设置参数 执行 SQL(ResultSet)MyBatis 提供了执行器 Executor 将这一过程进行封装,对外提供 SqlSession 让用户通过调用其 API 直接操作数据库,因为 SqlSession 持有…

机器学习:线性回归

章节安排背景介绍 均方根误差MSE 最小二乘法 梯度下降 编程实现背景生活中大多数系统的输入输出关系为线性函数,或者在一定范围内可以近似为线性函数。在一些情形下,直接推断输入与输出的关系是较为困难的。因此,我们会从大量的采样数据中推导系统的输入输出关系。典型的单输…

20222322 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 掌握使用Metasploit和nmap等工具进行前期渗透的方法,并利用四种特定的漏洞对靶机进行攻击。 (1)掌握Metasploit和nmap的用法 学习并熟悉Metasploit框架的基本操作,包括模块搜索(Search)、使用(Use)、展示选项(Show)、设置参数(Set)以及执行攻击(Exploi…

ETL之kettle 专业陪伴群,1元开启kettle精进之旅

1、为啥收取1元? 确保只有真正感兴趣或有意愿的用户才会加入。减少无关人员的加入,保持群组的专业性和活跃度。 付费入群可以减少垃圾信息的发送,因为发垃圾信息的人不太可能愿意为发送广告付费。 2、送人玫瑰手留余香自从公众号连载了90+篇关于kettle的干活文章,不到半年时…

SpringBoot:SpringBoot集成E-mail邮件发送功能

前言今天做项目时有个需求是:用公司邮箱给客户发送邮件通知,然后上网冲浪找到一些不错的文章,通过优化并实现功能后,写这篇文章记录一下,也提供给大家做参考。 前期准备 在编写代码前,我们需要获取到一些信息用于后续邮件发送功能,需要获取的信息为:协议服务器地址、邮…