TEE可信执行

研究Intel SGX,ARM Trustzone,AMD SEV的安全机制与应用转化

Intel SGX

项目位置链接
https://github.com/intel/linux-sgx
https://github.com/intel/SGXDataCenterAttestationPrimitives
入门必读:Intel SGX Explained
学术论文:SGX-papers
开源项目:Awesome-SGX-Open-Source
在这里插入图片描述

英特尔软件防护扩展(Intel Software Guard Extensions,SGX)是一组安全相关的指令,它被内置于一些现代Intel 中央处理器(CPU)中。它们允许用户态及内核态代码定义将特定内存区域,设置为私有区域,此区域也被称作飞地(Enclaves)。其内容受到保护,不能被本身以外的任何进程存取,包括以更高权限级别运行的进程。CPU对受SGX保护的内存进行加密处理。受保护区域的代码和数据的加解密操作在CPU内部动态完成。因此,处理器可以保护代码不被其他代码窥视或检查。

SGX提供了硬件指令级安全保障,保障了运行时的可信执行环境, 使恶意代码无法访问与篡改其他程序运行时的保护内容。Intel从第六代CPU开始支持SGX,SGX已经成为学术界的热点,各大云厂商也开始在云上部署基于SGX的应用。

Intel TDX

Intel TDX:Intel TDX
TDX和SGX的区别:SGX-vs-TDX
在这里插入图片描述

Intel Trust Domain Extensions(简称TDX)引入了一种新的、基于硬件隔离的虚拟机工作负载形态,所谓的Trust Domain(简称TD)。TDX是一种典型的机密计算技术,可以在在租户不可信的云基础设施上,为租户的工作负载提供一个系统级(相比Intel SGX机密计算技术提供的应用级粒度)的安全可信的执行环境,同时保证租户运行环境的机密性和完整性。为此,需要将当前租户的TD,与CSP控制的特权级系统组件(比如VMM/hypervisor)、VM以及其他租户的TD都隔离开来,并将它们排除出当前租户的TCB,以确保当前租户的TD不受上述组件的影响。

与VM相比,TD额外增加了以下能力:

  • 提供了VM内存的机密性和完整性保护
  • 地址转换完整性保护
  • CPU状态机密性和完整性保护
  • 对安全中断和异常的分发机制
  • 远程证明
  • TDX技术综合了MKTME(多密钥全加密内存)与VMX虚拟化技术,再添加新的指令集、处理器模式和强制实施的访问控制等设计。

ARM TrustZone/CCA

ARM Trustzone
ARM CCA

项目位置链接
Veracuz: https://github.com/veracruz-project/veracruz
VERAISON-VERificAtIon of atteStatiON: https://github.com/veraison/veraison

在这里插入图片描述

TrustZone是Arm为设备安全提供的一个安全架构,通过硬件隔离和权限分层的方式将系统内分为安全世界(Secure world)和正常世界(Normal / Non-Secure world)。

在安全环境中,通过底层硬件隔离,不同执行级别,安全鉴权方式等方式,从最根本的安全机制上提供基于信任根(Root of Trust)的可信执行环境TEE(Trusted Execution Environment),通过可信服务(Trusted Services)接口与和通用环境REE(Rich Execution Environment)进行安全通信,可以保护TEE中的安全内容不能被非安全环境的任何软件,包括操作系统底层软件等所访问,窃取,篡改和伪造等。因此一些安全的私密数据,比如一些安全密钥,密码,指纹以及人脸数据等都是可以放在安全世界的数据区中进行保护。当前,Trustzone机制已经非常成熟稳定,并得到大规模的应用,并以开源的方式给业界提供实现参考。可以访问https://www.trustedfirmware.org/ 获取更多信息。

然而,TrustZone所提供的安全机制和TEE环境只能提供硬件级别的安全隔离。通常情况下,安全物理地址空间的内存在系统引导时静态分配,适用于数量有限的平台。对于大规模云服务器的机密计算,旨在允许任何第三方开发人员保护他们的虚拟机(VM)或应用程序,必须能够在运行时保护与VM或应用程序关联的任何内存,而不受限制或分割。

在这里插入图片描述

Arm CCA引入了一种新的机密计算世界:机密领域(Realm)。在Arm CCA中,硬件扩展被称为Realm Management Extension (RME),RME 会和被称之为机密领域管理监控器 (Realm Management Monitor, RMM),用来控制机密领域的专用固件,及在 Exception level 3 中的 Monitor 代码交互。

Realm是一种Arm CCA环境,能被Normal world主机动态分配。主机是指能管理应用程序或虚拟机的监控软件。Realm及其所在平台的初始化状态都可以得到验证。这一过程使Realm的所有者能在向它提供任何机密前就建立信任。因此,Realm不必继承来自控制它的Non-secure hypervisor的信任。主机可以分配和管理资源配置,管理调度Realm虚拟机。然而,主机不可以监控或修改Realm执行的指令。在主机控制下,Realm可以被创建并被销毁。通过主机请求,可以增加或移除页面,这与hypervisor管理任何其他非机密虚拟机的操作方式类似。

Arm CCA技术能够从根本上解决用户敏感应用数据的安全计算问题。它充分利用软硬件实现的信任根提供的数据和程序的物理隔离、保护、通信和认证体系,并在传统TrustZone的基础上,增加了被称为领域(Realm)的隔离区域,从最底层的安全机制和原理上解决用户程序和数据的隔离需求。

Realm内运行的代码将管理机密数据或运行机密算法,这些代码需要确保正在运行真正的Arm CCA平台,而不是冒充者。这些代码还需要知道自己已经被正确地加载,没有遭到篡改。并且,这些代码还需要知道整个平台或Realm并不处于可能导致机密泄露的调试状态。建立这种信任的过程被称为“证明”。ARM正在与包括机密计算联盟成员在内的主要行业合作伙伴合作,定义这一证明机制的属性,确保在不同的产品和设备上使用常见的平台真实性和来源方法。Arm主导的开源软件Veracuz是一个框架,用于在一组相互不信任的个人之间定义和部署协作的、保护隐私的计算;VERAISON-VERificAtIon of atteStatiON构建可用于证明验证服务的软件组件。

Armv9-A架构引入了Arm CCA的RME功能特性,采用对应架构的芯片也将拥有此项功能。此外,基于CCA的软件支持已经在虚拟硬件平台上进行开发、测试和验证,将在硬件设备问世的同时实现同步支持。更多信息,可以访问 https://arm.com/armcca 获取更多信息。

AMD SEV

White Papers
项目位置链接
https://github.com/AMDESE/AMDSEV

AMD SEV技术基于AMD EPYC CPU,将物理机密计算能力传导至虚拟机实例,在公有云上打造一个立体化可信加密环境。
在这里插入图片描述

SEV可保证单个虚拟机实例使用独立的硬件密钥对内存加密,同时提供高性能支持。密钥由AMD平台安全处理器 (PSP)在实例创建期间生成,而且仅位于处理器中,云厂商无法访问这些密钥。

AMD SEV提供了硬件级的内存加密方案, 用以实现安全加密的虚拟化:

内存控制器中集成了AES-128硬件加速引擎: 客户操作系统通过页表选择要加密的页, 对终端用户的应用程序没有任何改变。

AMD安全内存加密(SME): 所有内存由单一的密钥进行加密, 仅仅在BIOS中开启就可以实现(TSME)。

AMD安全加密虚拟化(SEV): 每台虚拟机都会被分配自己的独立加密密钥, 宿主机和客户虚拟机之间相互加密隔离。

Confidential Virtual Machine也可以称作Secure Virtual Machine (SVM),是最终实现机密计算的实体,本身作为一个可信域存在,SVM自身和在其中运行的用户程序可以不受来自SVM之外的非可信特权软件和硬件的的攻击,从而实现对用户的机密数据和代码的保护。

因为是整个虚拟机作为一个可信域,所以对运行于其中的用户程序可以做到透明,无需重构用户程序,对最终用户而言可以实现零成本可信 (Trust Native).

RISC-V Keystone

文档
项目
论文

海光CSV

项目位置链接
https://gitee.com/anolis/cloud-kernel
https://gitee.com/anolis/hygon-edk2
https://gitee.com/anolis/hygon-qemu
https://github.com/inclavare-containers/librats
https://github.com/inclavare-containers/rats-tls

项目归属SIG
云原生机密计算SIG

容器技术的出现,使应用程序的打包、分发变得非常简单易用,Kubernetes等容器编排技术的出现,进一步加速了容器生态的普及和发展,目前容器已经逐渐成为云计算的主要运行单元。但是由于传统容器共享操作系统内核,在隔离性和安全性上比传统虚拟机差。为了解决这个问题,Kata容器应运而生,Kata容器运行在轻量级虚拟机里,比起传统容器提供了更好的隔离性和安全性,使Kata容器同时具有容器技术带来的易用性和虚拟机技术带来的安全性。随着机密计算需求的出现,CPU厂商纷纷推出了硬件TEE技术,传统虚拟机技术已无法满足机密计算的需要,Kata容器的安全性需要进一步增强以便应用于机密计算场景。

虚拟化是云计算的底层基础技术,随着云计算的发展而被广泛应用。由于虚拟机的全部资源被主机操作系统和虚拟机管理器管理和控制,虚拟化本身有较严重的安全缺陷,主机操作系统和虚拟机管理器可任意读取和修改虚拟机资源且虚拟机无法察觉。主机操作系统和虚拟机管理器有权读写虚拟机代码段,虚拟机内存数据,虚拟机磁盘数据,并有权重映射虚拟机内存等。攻击者可利用主机操作系统和虚拟机管理器的安全缺陷获取操作系统的权限后攻击虚拟机,给虚拟机最终用户造成重大损失。

CSV是海光自主研发的安全虚拟化技术,采用国密算法实现,CSV虚拟机在写内存数据时CPU硬件自动加密,读内存数据时硬件自动解密,每个CSV虚拟机使用不同的密钥。海光CPU内部使用ASID(Address Space ID)区分不同的CSV虚拟机和主机,每个CSV虚拟机使用独立的Cache、TLB等CPU资源,实现CSV虚拟机、主机之间的资源隔离。CSV虚拟机使用隔离的硬件资源,支持启动度量、远程认证等功能,是安全的硬件可信执行环境。

CSV机密容器技术将安全虚拟化技术与Kata容器技术结合,实现容器运行环境的度量和加密,容器中的程序可以使用远程认证功能实现身份证明。CSV机密容器和普通容器的接口完全兼容,用户可以使用Docker或者Kubernetes启动机密容器,实现对容器数据的隔离和保护。

CSV技术构建了以安全加密虚拟机为基础的可信执行环境。在安全加密虚拟机保证了虚拟机数据机密性的基础上,更进一步保证了虚拟机数据的完整性,主机操作系统和虚拟机管理无法通过改写虚拟机嵌套页表对虚拟机实施重映射攻击。

参考文献
[1] https://houhuiting.github.io/cncc-sig-white-paper/cc_platform/hygon_csv.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐