购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 机密计算和可信执行环境技术纵览

近几年,为了满足不同应用领域的安全保护需求,例如移动设备、物联网、云计算、汽车电子和人工智能等,各大芯片厂商相继推出了基于不同芯片架构的可信执行环境技术。不同计算架构(如ARM、x86、RISC-V及GPGPU)的特性不同,在机密计算架构实现,尤其是与芯片紧密相关的程序的可信执行环境方案的构建上,存在显著差异,如表3-1所示。

表3-1 不同芯片架构下的典型可信执行环境方案

img

接下来,深入介绍在这些架构下,机密计算,特别是可信执行环境技术的实现方式、核心特性,一同探索它们如何在各自的领域为数据安全保驾护航。

3.3.1 ARM架构

ARM处理器最早在ARMv8微架构中引入Trust Zone功能,用于数字版权管理、支付和安全固件等场景。Trust Zone在硬件层面增加新的安全模式(Secure World),该模式的物理地址空间与宿主机所运行的正常模式(Normal World)的物理地址空间隔离,通过特权模式(S_EL1)和用户模式(S_EL0)分别运行操作系统和用户态应用程序。针对安全负载的多样化和动态加载的需求,Trust Zone在安全模式下引入虚拟化的概念,即硬件引入特权模式(S_EL2),在该模式下,具有虚拟机监控器的软件组件安全分区管理器(Secure Partition Manager,SPM)负责调度多个操作系统的安全分区(Secure Partitions,SP)。Trust Zone的使用场景更多的是与硬件平台紧耦合在一起的,所以参与方以芯片生产方或者OEM为主。为了更好地利用现有支持Trust Zone特性的ARM资源,华为公司开创性地提出VirtCCA架构,实现可扩展的机密虚拟化架构。VirtCCA基于S-EL2实现,软兼容ARM CCA机密虚拟机架构API。此外,针对ARM v8.4之前不支持的S-EL2版本,VirtCCA亦可通过适配实现功能支持。

为了适应通用的可信执行环境技术,让更多的上层业务迁移到云上,并保护业务负载的数据不被计算资源的提供方窥探,ARM v9-A微架构引入了可信执行环境的实现方案——ARM CCA,在硬件层面增加了领域管理扩展(Realm Management Extension,RME)。领域(Realm)本质上是一种虚拟机的实例,在ARM CCA实现中,Realm虚拟机的内存和状态都在TCB范围内,不会被TCB之外的宿主机看到。RME与运行在EL2模式下的领域管理监控器(Realm Management Monitor,RMM)交互,由于硬件资源还是由正常模式下的宿主机管理的,因此,Realm的创建、销毁及调度都是宿主机通过EL3模式下的安全监控器来实现的,RMM会为宿主机侧提供领域管理接口(Realm Management Interface,RMI),而RMM也会为Realm虚拟机提供领域服务接口(Realm Service Interface,RSI),进而提供远程认证等功能。ARM机密计算架构如图3-2所示。

img

图3-2 ARM机密计算架构

当前处理器的状态是根据SCR_EL3的NS(Bit0)和NSE(Bit62)位决定的。如表3-2所示,NS和NSE两个比特位共同决定当前处理器的运行模式,对应的特权等级分类,以及能够访问的物理地址空间(Physical Address Space,PAS),如表3-3所示。可以看到,Root模式下的安全等级最高,在该模式中,处理器能够访问所有物理地址空间。

表3-2 NS和NSE位对应的处理器状态

img

表3-3 不同安全状态下访问物理地址空间的权限

img

关于内存的完整性,Realm虚拟机和宿主机,以及安全模式下的可信操作系统(Trusted OS,TOS)和Realm虚拟机之间的隔离都是通过粒度保护表(Granule Protection Table,GPT)实现的,如图3-3所示。粒度保护表负责跟踪记录物理内存的安全属性,在地址翻译的最后阶段,当前处理器的运行模式所允许的访问权限会与GPT中记录的该物理页的安全属性对比,例如,如果宿主机试图访问属于Realm虚拟机的内存,硬件就会触发GPF检查异常。

img

图3-3 粒度保护表机制

在ARM RME扩展架构中,处理器的每个运行模式(如Real模式、Secure模式和Root模式)下的地址空间都需要内存加密的功能,每个地址空间内部都使用全局唯一密钥进行内存加解密。RME内存上下文(Memory Encryption Context,MEC)扩展了内存机密性的粒度,RME扩展架构MEC如图3-4所示,它在MEC基础之上的多个Realm虚拟机上具有独立的密钥,以此实现深度防御。内存保护引擎(Memory Protection Engine)维护密钥表,RME扩展架构MPE如图3-5所示,密钥的索引为MECID。MECID支持的最大可配置值为16比特,对应页表项预留的比特位。因此,MEC能够使用不同的MECID实现多个Realm虚拟机之间的内存机密性隔离,也可以使用同一个MECID实现Realm虚拟机之间的内存共享。

img

图3-4 RME扩展架构MEC

img

图3-5 RME扩展架构MPE

3.3.2 x86架构

1.AMD可信执行环境技术栈

AMD SME在内存控制器中增加AES引擎,可以通过内存控制器对数据加解密。加解密需要的密钥由硬件在每次系统启动时随机生成,为全局密钥,并且对软件不可见。SME密钥由遵循NIST SP800-90标准的随机数产生器生成,存储于专用的系统寄存器中,保证不会暴露给SOC外部的组件。如图3-6所示,该密钥由AMD安全处理器(AMD-SP)管理,不需要在CPU之上的软件管理。AMD-SP最初是32位的ARM Cortex-A5处理器,内嵌在AMD SOC内部。

img

图3-6 AMD SME内存访问

SME加密内存的粒度是按页面大小来确定的。如图3-6所示,在页表项定义第47位为C(enCrypted)比特的情况下,操作系统可以设置页表项中对应的C比特来控制当前的映射关系是否通过SME进行特殊的加解密操作。全透明SME,即T-MSE在BIOS中设置,不需要CPU中的任何软件,即可默认对所有内存访问请求进行加解密操作。

SEV作为AMD-V的扩展,从硬件层面提供一种能力,即用全局的地址空间标识符(Address Space Identifiers,ASID)标记每个SEV虚拟机的代码和数据,ASID可以溯源数据从属关系,从而在SOC内部阻止非数据所有者对数据的非法访问。当SEV虚拟机访问外部存储器上的数据时,与ASID关联的密钥会对进出SOC的数据进行加解密。每个SEV虚拟机,也包括Hypervisor,都有对应的ASID,数据的访问仅限于同一个ASID域内,跨ASID的访问仅能看到密文数据(SEV虚拟机和Hypervisor之间的I/O数据通过共享内存的方式进行交换)。这样,在SEV虚拟机之间,以及SEV虚拟机和Hypervisor之间,存在硬件层面提供的强隔离功能。

如图3-7所示,SEV-ES的目标是保证SEV虚拟机在虚拟机的执行被打断,退到VMM侧时,SEV的vCPU寄存器的状态信息被硬件按需进行加密,以防止VMM获取敏感数据信息。

img

图3-7 SEV-ES

图3-8展示了从虚拟机中窃取AES密钥的过程。SEV-ES通过在如图3-9所示的虚拟机控制块(Virtual Machine Control Block,VMCB)中引入新的域来存放虚拟机退到VMM侧时vCPU的状态信息,并需要以密文形式保存。这些信息在vCPU重新执行时再从内存中的密文状态被恢复至vCPU对应的寄存器中。

img

图3-8 从虚拟机中窃取AES密钥

img

图3-9 虚拟机控制块

在SEV-ES中,虚拟机执行敏感指令后,硬件会将#VC异常注入虚拟机中,然后#VC处理程序会把需要由VMM侧模拟的特殊指令所访问的寄存器信息复制到客户机与管理程序通信块(Guest Hypervisor Communication Block,GHCB)中,VMM无须访问的寄存器信息都会由CPU以密文的形式存放在VMCB的“保存区域”中。VMM侧处理完虚拟机退出后,当vCPU再次执行时,之前保存在“保存区域”的密文状态信息又被恢复到vCPU关联的寄存器中,vCPU得以继续执行,如图3-10所示。

img

图3-10 NAE示例流程

SEV-SNP是在SEV和SEV-ES的基础上构建的,意在提供更完善的完整性保护特性。例如防止数据重放、内存重映射等攻击手段。除此之外,SEV-SNP还新增虚拟机特权等级(Virtual Machine Privilege Level,VMPL),针对中断及侧信道攻击提供更好的保护。

在完整性保护方面,SEV-SNP引入了反向映射表(Reverse Mapping Table,RMP)。RMP是系统启动时由BIOS预留的一段内存,RMP中的RMP项用于跟踪对应物理内存的状态信息,这些状态信息记录了对应物理页的所有者及其对应的映射关系。从微架构层面来看,在CPU MMU页表及IOMMU页表遍历结束后,增加了该访问请求针对RMP的额外检查。如图3-11所示,VMM侧的写访存请求通过MMU翻译得到的物理地址会在RMP中找到对应的条目,如果RMP中记录的物理地址不属于VMM侧,那么CPU会触发#PF异常。同样,在SEV-SNP VM的读写访存请求中,客户机虚拟地址(Guest Virtual Address,GVA)通过嵌套页表(Nested Page Table,NPT)被翻译为客户机物理地址(Guest Physical Address,GPA),然后被翻译为宿主机物理地址(Host Physical Address,HPA),最后判断HPA在RMP中对应的GPA是否与翻译得到的GPA一致,如果一致,则访问被允许,否则CPU触发#NPF异常。

img

图3-11 SEV-SNP中的RMP

为了管理RMP,SEV-SNP引入了专用的指令来更新RMP。例如RMPUPDATE、PVALIDATE等,如图3-12所示。VMM通过RMPUPDATE设置物理内存的状态信息,SEV-SNP虚拟机通过PVALIDATE来验证RMPUPDATE声明的映射信息的有效性,之后该映射关系变为可用。

img

图3-12 RMP更新机制

2.英特尔可信执行环境技术栈

英特尔在保护运行时数据的机密性方面给出了两种不同级别的技术栈——SGX和TDX。其中,SGX就像保险箱,把应用程序中的一段虚拟地址空间中对应的数据和代码放到可信执行环境飞地(Enclave)中,该功能适用于应用程序层面的机密数据和代码保护。当然,借助库操作系统(Library Operation System,LibOS),用户可以在不改动应用程序的情况下直接将应用程序运行在SGX功能之上。另外,Intel TDX拓展了多密钥全内存加密功能和虚拟化技术,提供虚拟机层面的可信执行环境,保证整个虚拟机运行环境的机密性和完整性,其架构如图3-13所示。可信域(Trust Domain,TD)实际上是具备内存数据和CPU状态机密性和完整性保护的虚拟机实例,可信域之间可以通过使用不同的密钥加密进行隔离。TDX模块为运行在新的SEAM模式的安全固件,负责为宿主机提供构建可信域、上下文状态切换的功能,为可信域提供远程认证和Hypercall功能。

img

图3-13 Intel TDX架构图

3.海光CSV可信执行环境技术栈

海光CSV(China Secure Virtualization)是中国海光信息技术有限公司开发的基于硬件的虚拟化技术,类似于国际主流的虚拟化技术,如Intel VT-x和AMD-V,主要用于支持在海光处理器上运行虚拟机,实现硬件资源的高效分配和隔离。CSV实现的安全虚拟化技术采用国密算法,CSV虚拟机在访问内存时由硬件自动完成加解密操作,每个CSV虚拟机都拥有不同的密钥。海光CPU使用ASID(Address Space ID)来区分不同的CSV虚拟机和宿主机,标记CPU缓存和TLB等资源,实现CSV虚拟机之间,以及CSV虚拟机和宿主机之间的隔离。另外,CSV支持磁盘加密远程认证等功能。CSV的技术架构现已演进出CSV1、CSV2、CSV3三个系列,其中,CSV1实现基础的CSV虚拟机内存加密保护功能,CSV2在CSV1的基础上实现CPU状态的保护,CSV3提供增强数据完整性的功能。CSV实例的运行时状态(如内存数据)均受到CPU硬件的加密保护,云厂商和外部攻击者无法监控或定向篡改CSV实例的内部运行状态(如运行的进程、计算中的敏感数据等)。

3.3.3 RISC-V架构

RISC-V架构采用精简指令集架构,具备指令集开源、模块化设计的特点,可以根据具体场景选择合适的指令集架构,从传感器中的CPU,到工控CPU、家用电器CPU及服务器CPU,RISC-V都能够很好地实现扩展。

RISC-V虚拟化扩展了特权模式(Supervisor Mode),并引入超级特权模式(Hypervisor-extended Supervisor Mode,HS Mode),如图3-14所示。在超级特权模式下,通过新增的指令集和控制状态寄存器实现内存虚拟化。在地址翻译过程中,引入G阶段页表来控制虚拟机物理地址和宿主机物理地址的映射关系。

img

图3-14 具有虚拟机监控器扩展的RISC-V超级特权模式

在RISC-V的特权等级分层中,用户(User,U)模式运行用户态应用程序。特权模式和超级特权模式运行操作系统内核。机器(Machine,M)模式运行固件程序,这种模式的优先级最高。当前的运行级别可以通过调用ECALL进入高一层的运行等级来申请所需服务,可以调用MRET从机器模式返回特权模式,可以调用SRET从特权模式返回用户模式。虚拟机内核运行在虚拟特权(Virtual Supervisor,VS)模式,虚拟机用户态程序运行在虚拟用户(Virtual User,VU)模式。RISC-V特权等级和虚拟化模式如表3-4所示。

表3-4 RISC-V特权等级和虚拟化模式

img

RISC-V机密虚拟机扩展(Confidential Virtual Machine Extension,CoVE)在原来的虚拟机架构基础之上引入了可信执行环境安全管理器(Trusted Execution Environment Security Manager,TSM)来管理业务的安全特性。TSM和宿主机的隔离由运行在最高安全等级机器模式的TSM驱动,使用新增指令集控制。TSM实施各种安全隔离策略,通过G阶段地址翻译机制来控制机密虚拟机之间的隔离。

RISC-V可信执行环境的TCB包括TSM、TSM驱动及处理器微架构逻辑。TSM和TSM驱动都被信任根(Root-of-Trust,RoT)度量。

CoVE引入内存跟踪表(Memory Tracking Table,MTT)实现TSM和宿主机之间的隔离。宿主机作为资源管理、调度的角色没有变,可以设置CoVE虚拟机的加密内存区域,或者为其添加物理页。而内存跟踪表由TSM和TSM driver更新维护,记录跟踪CoVE虚拟机物理内存的安全属性。内存跟踪表被用于地址翻译的最后一步来实现内存隔离的功能。当RISC-V硬件线程(Hardware Thread,Hart)运行在可信执行环境模式时,该线程的访存操作都会用一个机密比特位来标记,即Confidential-mode qualifier(C Bit),并根据不同的地址翻译配置。此外,借助物理内存保护(Physical Memory Protection,PMP)硬件机制,可以限制机器模式和用户模式对物理内存地址的访问权限,从而提高系统的安全性和稳定性,如表3-5所示。

虚拟机中的地址被翻译成系统的物理地址时,都会强制与内存跟踪表比对,如图3-15所示。比对条件之一是被访问内存的安全属性,被访问的物理内存的属性记录在内存跟踪表中,即被访问的内存是机密内存(C)还是共享内存(NC)。比对条件之二是当前Hart是否处于可信执行环境模式,即机密模式(Confidential Mode)是否被置位。如果当前Hart处于可信执行环境模式,那么访问机密内存是合法的,允许访存操作继续执行,否则该访存操作被禁止,触发相应的异常。除了运行在机器模式,硬件都会被强制检查访存操作与内存跟踪表记录的内存安全属性是否一致,以此来实现完整的宿主机、机密虚拟机及TSM的隔离。

表3-5 Hart机密限定符和特权模式

img
img

图3-15 Hart地址翻译流程

内存跟踪表不仅可以用作CPU端Hart访问内存的内存完整性隔离,还可以用于设备直通CoVE虚拟机场景,实现设备访问内存的完整性隔离。RISC-V IOMMU扩展了支持CoVE的安全接口,为宿主机提供设置IOMMU的接口,当设备访问内存时,IOMMU进行地址翻译的最后阶段也需要与内存跟踪表进行比对。除此之外,还需要配合链路层的标准协议,例如TDISP、SPDM、PCIe/CXL的IDE协议,实现完整的CPU可信执行环境和设备可信执行环境之间的链路层保护,如图3-16所示。

img

图3-16 MTT内存隔离机制

综上所述,RISC-V CoVE的整体架构如图3-17所示。TH-ABI定义的接口为宿主机提供TSM实现的安全功能,例如构建、销毁CoVE虚拟机的接口,而TG-ABI为CoVE虚拟机提供远程认证、声明MMIO空间、动态转换加密内存和共享内存的接口。TH-ABI和TG-ABI的指令集层面的实现是依靠ECALL、MRET完成的。内存的机密性可以通过CPU Hart的机密模式实现,并配合更多元数据在SoC内部标记数据,实现CoVE虚拟机和宿主机的数据在缓存、网络结构中的隔离,并在内存控制器层面做多密钥加密。

img

图3-17 RISC-V CoVE架构

3.3.4 特性差异

本节横向对比这些不同的可信执行环境特性差异,如表3-6所示。

表3-6 可信执行环境特性差异

img

①Trust Zone可结合其他软件技术实现部分功能(如动态度量及虚拟化等)。 uPAp/8wiYsk/KdRxlg+/+2rTktj5FFuADWi602zWKvxMxItQtJhmyg0l9IoWT7Gy

点击中间区域
呼出菜单
上一章
目录
下一章
×