General overview of AMD SEV-SNP and Intel TDX
可信执行环境( TEEs )对于安全关键代码的执行已经变得越来越普遍。AMD SEV - SNP和Intel TDX是为虚拟机提供可信执行而开发的新硬件扩展。通过提供额外的完整性保证,并在以前的安全扩展的基础上,它们能够在云环境中进行保密计算,而不会对敏感的用户数据造成风险。
1.介绍
如今,软件公司越来越多地将其应用程序迁移到云环境中,而不是在本地托管它们。这可能会对机密的用户数据构成风险,因为云服务提供商( CSP )可以直接访问运行潜在安全关键应用程序的硬件。TEE提供了一种安全执行代码的方法,而不存在敏感数据被披露给恶意行为者的风险。SGX的工作方式是将应用程序划分为一个由飞地安全保护的可信部分和一个正常运行的不可信部分。这降低了开发体验,因为开发人员需要了解安全模型并相应地拆分应用程序,而保护VM不需要调整应用程序代码。
为了防止信息泄露和保护机密数据,出现了从虚拟机管理程序锁定访问的虚拟机( virtual machine,VM )的需求。AMD和英特尔公司目前正在迭代其先前的可信计算CPU扩展,如AMD SEV-ES和英特尔SGX,以提高虚拟机完整性保证并最小化可信计算基( TCB )为目的。利用这些新扩展引入的能力,云服务用户( CSU )能够安全地依赖在云环境中运行的应用程序。
AMD SEV-SNP和Intel Trust Domain Extensions ( TDX )是两种基于硬件的CPU扩展,旨在增加内存虚拟机数据的机密性和完整性。它们建立在较早的扩展( e.g. Intel SGX , AMD SEV- SEM)之上,无法提供足够的完整性保证。这些保证是通过允许虚拟机限制对其内存页的写访问以及对安全关键CPU指令的输出进行加密验证来实现的。此外,虚拟机现在可以相信安全关键组件报告的固件版本与实际运行的版本相匹配,这对于防止利用固定问题进行回滚攻击至关重要。
与它们的前身扩展AMD SEV - ES和Intel SGX类似,AMD SEV - SNP和Intel TDX提供了远程证明能力。生成的证明报告包括VM提供的VM的状态和定制数据,允许CSU确认它们的VM启动和执行正确。
虽然自2021年3月以来,每款AMD EPYC 7003系列处理器都已经推出了AMD SEV-SNP,但目前任何一代处理器都无法使用英特尔TDX。AMD SEV - SNP和Intel TDX的Linux内核支持是在2022年7月的5.19版本中引入的,由于体系结构的相似性,它们共享一些新增加的代码。
2 背景
在这一部分中,我们对以前的VM扩展及其功能进行了解释。此外,由于内存完整性的重要性,还概述了在现代系统中访问内存的过程。
2.1 虚拟机CPU扩展的历史
此前AMD和Intel开发了多个CPU扩展以支持更可靠、性能更好的虚拟机。其中包括AMD - V Nested Paging(NP)和Intel Extended Page Table(EPT )。
AMD安全内存加密( SME ) 为通用计算提供内存加密,AMD安全加密虚拟化( SEV )为AMD - V Nested Paging加速的虚拟机带来了更高的机密性保证。所需的内存加密密钥由集成的低功耗AMD Secure ( Co - ) Processor ( AMD SP )处理,以进一步减少可信组件的数量。AMD还通过引入AMD SEV-ES ( Encrypted State )对其AMD SEV扩展进行迭代,在虚拟机终止时对虚拟机的寄存器状态进行加密。由于AMD SEV - ES已经为VM的寄存器内容提供了完整性保证,因此AMD SEV - SNP中的VM状态不需要额外的硬件支持。
目前还没有可用于英特尔处理器的硬件辅助VM内存加密,但在英特尔TDX扩展中有所涉及。虽然SGX可以在虚拟机中使用,以确保虚拟化应用( vSGX )的安全,但它并不理想,因为启用后一些VM功能是不可用的。
当前一代处理器会向(恶意)虚拟机管理器( virtual machine manager,VMM )提供客户机内存(通过依靠SEV)的加密内容,但不会阻止对VM页的写访问。这使得上述恶意虚拟机管理程序能够破坏虚拟机的状态,并带来各种重放攻击的风险。重放攻击是一种攻击向量,恶意攻击者在给定时刻检索密文,并在以后的时间点用此数据替换未受保护的内存。
2.2 CPU能力自我报告和安全敏感寄存器
现代处理器为运行中的系统提供了各种方式来收集当前CPU的信息。这主要是通过调用CPU ID指令来完成的,它报告了CPU可用的硬件扩展,寄存器大小和其他一些配置明细。虽然模拟和调整该指令的输出通常由VMM执行,以缓解VM迁移并限制VM的功能,但这也可能被恶意的管理程序滥用。虽然这种干扰在大多数情况下只会导致客户机的拒绝服务,但它也可能导致缓冲区溢出,因为x86中包含的扩展保存区的错误值被报告。
模型相关寄存器( Model-specific-registers,MSR )是处理器用来提供硬件调试能力、性能监视/跟踪数据和有关可用CPU特性的附加信息的各种控制寄存器。管理程序可以对这些寄存器进行不受限制的访问,从而使VM执行过程中潜在的干预成为可能,例如强制调试断点以中断客户的控制流。类似地,硬件扩展使用的CPU微代码补丁级别和CPU组件的固件版本也可以从软件中查询。如果信任域( TD )不能依赖安全关键硬件组件运行某个预定的版本,则不能保证之前解决的问题和发现的缺陷在这些组件中得到解决。
2.3 威胁模型
早期的CPU扩展( e.g. AMD SEV和AMD SEV - ES)所依赖的威胁模型包含了更多需要信任的组件。这是由于缺乏内存完整性保证,使得恶意实体能够篡改VM的内存造成的。由于SEV - SNP和TDX防止了这一点,以前由于能够写入VM内存(如hypervisor、DMA )的PCI设备而被认为是可信的组件,现在可以安全地假定为不可信。
2.4 调页
在典型的x86 _ 64系统中,内存是通过页来访问的。调页用于为每个进程模拟一个完整的虚拟地址空间,而不需要在计算机上使用太多的内存。它通常用于页面级的内存保护,为每个进程提供自己的一组页面。因此,用户空间进程无法读写属于不同进程或系统内核的页面。调页功能由内存管理单元( Memory Management Unit,MMU )处理,MMU将应用程序使用的虚拟地址转换为硬件可用的底层真实物理地址。通过将地址在不同部分进行拆分,将地址映射到页面中。通常最重要的位对应页面目录项,接下来的位表示页表项,其余的位包含页面内的偏移量和操作系统设置的各种标志位。AMD SEV提供客户虚拟机,使用VM特定的加密密钥对内存页进行选择性保护和加密,限制外部来源(如同VMM)的读访问。
3 架构
SEV - SNP和TDX利用多种硬件技术为虚拟机提供更安全的TEE。这一过程是如何实现的,以及在这一过程中涉及到哪些组件,下面将进行阐述。
3.1 安全关键组件
SEV - SNP和TDX的架构改进是通过引入新创建的CPU集成组件和模块来实现的。虽然AMD的SEV - SNP的实现依赖于CPU内置的安全处理器来为虚拟机提供安全环境,但Intel TDX采用了多组件架构,由以下几项组成:
- 英特尔TDX模块提供了一种在执行各种安全策略的同时管理TDs的安全方法
- 英特尔认证代码模块用于在受保护内存中加载和验证TDX模块
- 使用英特尔SGX创建用于远程证明的TD Quoting Enclave( TDQE )
这些组件提供了虚拟机管理程序创建和配置虚拟机所需的管理接口,负责拦截针对受SEVSNP或TDX保护的虚拟机的任何攻击。与AMD的SP通信使用新颖的VM管理API接口,而英特尔依赖于额外的CPU指令。这些组件使用的数据结构由于其安全关键用途而无法被外部行为体访问,例如在系统上运行的软件或启用DMA的设备。这些数据结构包含了CPU集成的安全模块所需要的管理信息。这些数据结构包括由SEV - SNP提供的加密虚拟机保存区( VMSA )或由VMM使用TDX为每个TD颁发的虚拟机控制结构( VMCS )。
3.2 内存完整性保护
内存完整性保护是AMD SEV - SNP和Intel TDX推出的主要改进之一。SEV - SNP和TDX都建立了共享(未加密)和私有(加密)内存页之间的分离。一个页面是否被认为是共享的或私有的,由虚拟地址的最重要位表示,并在page table walks中验证。共享页面仍然可以使用属于虚拟机管理程序的密钥进行加密,但从虚拟机的角度来看应该被认为是不可信的。私有(访客)页面总是使用VM特定的密钥进行加密,使得外部观察者无法读取内存内容。
3.2.1 AMD SEV-SNP
AMD SEV - SNP的完整性改进的关键原则是保证已分配私有内存页的VM始终读取其写入该页的最后一个内存值。SEV - SNP不仅保证了内存的正常读写,而且当内存页交换到持久化存储或整个虚拟机迁移到另一台主机时,SEV - SNP也保证了这种行为。因此,依赖先前读取的密文替换VM内存的重放攻击和通过将不相关的数据写入VM页而损坏VM内存的拒绝服务攻击不再可能。
这是通过添加一个跨系统共享的反向映射表( reverse map table,RMP )数据结构来实现的,它跟踪每个可分配给VM的页面的所有者。当RMP条目属于启用SNP的VM所拥有的页面时,也会保存该页面应映射到的访客物理地址( gPA )。此外,每个RMP条目都包含一个验证位,器在VM创建页面之前清除。每当对SNP - VM的页面进行内存写访问时,无论是VMM还是VM本身,都会执行RMP检查,以确保只有拥有该页面的实体才能修改该页面。从外部参与者(如虚拟机管理器或其他访客)读取内存的访问不需要使用RMP进行验证,因为私有页的内存总是使用VM的特定私钥加密的。
只要访问的页面不属于启用了SEV - SNP的客户,虚拟机管理程序的表遍历不受RMP的影响。如果恶意的虚拟机管理程序试图覆盖这样一个页面的内存内容,那么表遍历将导致一个页面错误( # PF )并且被寻址的页面不受影响。RMP检查在常规页表遍历( PTW )结束时执行,其条目使用系统的物理地址进行索引。
对于启用了SEV - SNP的虚拟机,页表遍历更加复杂。利用AMD - V提供的加速嵌套页表遍历,进行从客户虚拟地址( g VA )到客户物理地址,最后到主机系统物理地址( s PA )的初始地址转换。然后调用RMP检查,验证页面:
- 属于一个VM,而不是管理程序
- 由发起表遍历的特定客户机拥有
- 映射在正确的gPA
这种附加嵌套页表遍历的PTW修改版在图1中进行了可视化展示。
如果访客正确地验证了其私有页面,这些内存完整性保证可以防止页面重映射攻击。为了确保这些完整性违规行为被RMP检查捕获,客人必须确保任何gPA只验证一次。实现这一点可以通过在VM启动时执行所有页面验证或通过对所有先前验证的gPA进行访客跟踪来完成。如果gPAs和sPAs之间的这种内射性质成立,那么当试图访问重新映射的gPA (由于RMPUPDATE清除了验证)时,由一个被破坏的管理程序发起的任何恶意嵌套页表更改都将导致客户接收到VM通信( # VC )异常。客户机应谨慎对待# VC例外,因为它是攻击发生的标志。
3.2.2 Intel TDX
英特尔TDX具有与AMD SEV - SNP类似的内存完整性能力。CPU内置的TDX模块为虚拟机管理程序提供了间接管理虚拟机的接口,并为虚拟机的启动和恢复提供了新的指令VMLAUNCH - VMX和VMRESUME。TDX不是在系统范围内跟踪每个内存页的所有者,而是依赖于为虚拟机管理程序保留一个共享的扩展页表和为每个虚拟机(被Intel称为TD)保留多个私有的扩展页表。由于这些固有的结构差异,从TD内部发起的PTW与SEV - SNP使用的PTW工作方式截然不同。如图2所示,包含TDX的系统通过为给定地址选择合适的EPT来解决gVAs。
私有EPT的初始化由Intel TDX模块处理,该模块将VMM提供的内存页转换为TD所需的私有页。类似于SEV - SNP,提供了对页面的完整性保护。然而,英特尔TDX并不依赖客户来验证其私有页面本身,而是跟踪页面到其关联的gPA的映射在TD内部是唯一的,并且额外地跨越TD边界,以避免任何内存混叠相关的漏洞。
通过为每个缓存行添加1 - bit TD标识符和可选的包含1 - bit标识符的28 - bit消息认证码( Message Authentication Code,MAC )来实现共享和私有内存的区分,以确保检测到对内存的任何未授权的更改。如果攻击者要写入受TDX模块保护的页面,那么下一次TD试图从受影响的内存中读取时,就会发生MAC验证失败。如果使用逻辑完整性模式而不使用密码学MAC,这样的读访问反而会导致TD所有权检查失败。与AMD的实现相反,客户对这些故障的处理方式没有影响。
3.3 权限等级和访问控制
AMD SEV - SNP和Intel TDX依靠不同类型的权限等级来保证其完整性。
3.3.1 AMD SEV - SNP的特权概念
由于默认情况下不再允许管理程序操作修改启用SEV SNP的VM的状态或内存,SP需要评估这些请求,包括标准的VM管理命令,如启动和恢复或暂停和终止VM,这些操作以前完全由管理程序处理。远程证明和引用也由SP执行,为已经启动证明过程的VM使用适当的密钥。
除了将安全敏感操作移动到安全处理器之外,SEV - SNP还支持4个额外的可选虚拟机权限级别( VMPL )。它们的编号从VMPL0到VMPL3,其中VMPL0表示最高的访问权限,VMPL3表示最低的访问权限。这些可以用于进一步划分RMP提供的新获得的访问控制,例如在SEV - SNP启用的客户机内部实现硬件辅助的地址空间隔离。每个分配给客户的虚拟CPU ( vCPU )运行在一个VMPL中,其中每个VMPL只能授予与其当前拥有的权限相当的权限。这是通过调用RMPADJUST指令来完成的,RMPADJUST指令会相应地更新必要的RMP条目。使用PVALIDATE进行初始页面验证只授予VMPL0完整的读、写和执行权限。在嵌套表游走过程中执行的页表权限检查的限制性性质意味着多个页权限需要对等,才能被访问者访问。因此,页面权限验证既可以在AMD - V提供的客户管理页表和管理程序管理嵌套页表中进行,也可以通过权限较高的VMPL管理的RMP表进行。
利用这些不同的VMPL提供的这种更细粒度的访问控制,SEV - SNP客户机可以创建一个限制性更强的仿真环境。以前由管理程序处理的APIC虚拟化,可以由运行在VMPL0中的软件执行,并将结果传递给运行在客户内部的低权限VMPL。进一步的任务可以委托给具有最高特权级别的中间层执行。结合VMPL提供的所有这些特性,可以将遗留的(非SEV - SNP)虚拟机嵌套在VMPL0中包含中间代码的SEV - SNP客户机中。虽然由于该转换执行的额外模拟而略有性能下降,但它可以使遗留的工作负载安全地运行。在图3中对此进行了概述。
3.3.2 Intel TDX访问控制所需的组件
由于Intel TDX采用的是多组件架构,VM管理和通信涉及的步骤较多。Intel TDX模块被托管在CPU的安全仲裁模式( SEAM )保护的环境中,分配尽可能多的预留内存,如在SEAM范围注册( SEAMRR )中配置。SEAM内存的机密性和完整性保证类似于Intel TDX安全虚拟机。任何外部设备(如所有软件(不管是在VM内运行还是在VMM内运行)或具有DMA能力的设备)的内存访问都是被禁止的。但SEAM模式下的CPU并不具有完全的特权,因为它不允许访问其他安全的内存区域,如英特尔SGX飞地使用的安全内存区域或CPU的系统管理模式。
该TDX模块的安装和加载由新引入的SEAM Loader ( SEAMLDR )完成,SEAMLDR是集成在Intel可信执行技术( TXT )栈中的一个额外的认证代码模块( ACM )。它负责验证并随后将英特尔TDX模块加载到上述SEAM内存范围( SEAMMR )中,并由VMM调用。此外,SEAMLDR通过SEAMMR内部的硬件测量寄存器传递安全版本号( SVN ),并将TDX模块置于SEAM - VMX根模式中。在此初始化过程之后,VMM可以通过执行SEAMCALL指令对TDX模块进行通信和控制。TDX模块使用SEAMRET指令将执行返回到虚拟机管理程序,从而执行所请求的操作(例如,创建、删除或启动TD)。虚拟机的启动或恢复是通过VMLAUNCH和VMRESUME指令来完成的,VMRESUME指令将TDX模块移入SEAMVMX的非根操作中,然后将控制传递给TD。
与AMD的单模块架构不同,远程证明由单独的SGX TDQE来处理。
3.4 安全能力报告
如2.2节所述,VMM在使用RDMSR控制CPUID提供的信息或从MSR读取信息时存在一些问题。SEV - SNP和TDX试图阻止虚拟机管理程序向虚拟机提供使用上述指令检索到的错误CPU能力信息。
启用SEV - SNP的客户机可以指示AMD SP验证管理程序传递的CPUID数据不包含主机上不可用的功能,并且安全临界大小信息正确。这种过滤既可以在CPUID被调用时进行,也可以在VM启动时进行。当这应该在启动时处理时,两个特殊的页面被SP插入到客户的内存中。一个页包含加密密钥用于客户机和SP之间的通信,而另一个则持有经过验证的CPUID值。前一个页面被访问者的私有内存加密密钥安全地加密,以防止VMM的任何不需要的访问。由于验证过程只在VM启动时进行一次,并不是每次CPUID都被调用,所以它是性能更好的解决方案。
使用Intel TDX CPUID的客户机默认情况下进行验证,不需要显式配置。与SEVSNP类似,TDX模块阻止VMM报告比主机系统实际支持的更大的能力。然而,当CPUID被执行时,TDX客户可以无条件地抛出虚拟化异常,从而允许VM的操作系统( OS )完全控制VM内部的软件如何接收请求的CPUID信息。
SEV - SNP和TDX都通过禁止VMM写入这些安全敏感寄存器来防止对客户的MSR (例如硬件调试寄存器)的干扰。这是自动处理的,不需要对客户的操作系统进行任何修改。
3.5 TCB回滚预防
回滚攻击依赖于对可信计算基础( TCB )中包含的组件版本进行降级,或者恶意报告组件的旧版本并随后利用最近版本中已经修复的bug。
在SEV - SNP系统上,SP确保其固件不会降级到当前运行版本以下。此外,每个TCB组件(如SP )的固件版本与融合到处理器中的芯片背书Key ( CEK )进行加密合并。由于这些改进,客户所有者现在可以可靠地相信他们的VM不会以低于预先设置的最低版本阈值的误报固件版本启动。
一个由TDX模块管理的TCB只被认为是最新的,如果TCB中包含的每个组件报告的SVN高于组件作者设定的阈值。这些SVN从硬件寄存器加载到SEAM Loader管理的内存中,除了TDX模块外,任何人都无法访问这些寄存器,使其免受外部行为体的操作。因此,任何低于此前设定版本的模块的降级都可能导致TCB失去其最新状态。如果一个VM的启动策略确实需要一个现代的TCB版本而不存在,则该VM不会启动。
3.6 中断和异常注入
传统上,通过管理程序随时可以注入中断和异常。一般来说,这不会导致VM出现问题,因为所有主要的VM操作系统都支持适当的中断和异常处理。其中一些VM操作系统包含关于如何以及何时发生中断和异常的内置假设,这是因为VM通常试图尽可能地模拟裸机硬件。客户操作系统可能假设在执行有效指令后不会抛出未知的操作码异常( # UD ),这与实际硬件的情况相同。然而,它们可以随时被VMM注入。
AMD SEV - SNP提供了两种可选的配置模式,防止在操作系统中处理这种不常见的事件时仍未被发现的问题,使客户能够限制通常不受保护的中断和异常接口。交替注入提供了默认的虚拟化中断注入和排队接口,因为它们通常被管理程序使用,但只允许从VM内部调用它们。这避免了恶意的管理程序完全干扰客户机的OS,因为用于保存中断信息的字段只能被其他可以与客户机的数据一起工作的实体所访问。类似于如何使用VMPL0作为中间层实现嵌套虚拟化,如3.3 . 1小节所述,使用VMPL0权限运行的软件可以方便地进行中断和异常处理。但是,客户机可能不希望完全阻止管理程序注入中断和异常,因此SEV - SNP提供了一个额外的接口,称为受限注入。启用该模式的来宾可以完全阻止虚拟中断从VMM排队,并严格限制哪些中断可以被注入。新引入的异常称为虚拟机管理程序注入异常( # HV ) ,它不需要将必要的中断直接传递给VM,而是通知VMM的客户机中断。通信VM处理t所需的扩展信息。虚拟机处理该事件所需的扩展信息可以通过共享内存页在虚拟机管理程序和客户之间传递。
英特尔TDX同样跟踪虚拟机控制结构内部的虚拟中断信息和APIC数据,并对虚拟机管理程序进行保护。用于保存这些信息的页面是在TD启动时使用VM的相关私钥提供的。由于虚拟中断和注入中断由CPU硬件管理,Intel VM - X被调整以防止异常传递到信任域。确保VM的操作系统对中断优先级和掩码做出的假设也由TD的虚拟中断虚拟化来处理。所有这些保证都是在不需要对客户的操作系统进行任何修改的情况下提供的。
3.7 远程认证
远程证明是CSU所需的一个重要特性,因为CSU需要验证其部署的VM是否按照CSU的要求运行且未被篡改。证明报告由CPU内置组件生成,如AMD系统上的SP或Intel主机上的TDQE,包含关于VM本身的各种信息(在启动后和运行时收集)。以往的扩展只允许在可信执行环境启动后进行证明,但SEV - SNP和TDX也支持运行时证明。
认证过程总是由客户机发起的。SEVSNP虚拟机通过使用SNP _ GUEST _ REQUEST固件API调用请求SP为其生成报告,而TDX客户则调用TDX模块的TDCALL指令。SEV - SNP客户只需要与SP进行通信,不需要其他实体进行认证。这与TDX TDs不同,TDX TDs会首先向TDX模块请求一份通用的证明报告,然后请求VMM使用TDQE来引用它。引证飞地不能被TDX模块直接使用,因为它运行在一个SGX飞地内,SEAM无法进入。通常这些信息包括VM启动时收集的元数据,系统的一般信息,安全敏感元件(如TDX模块或SP的固件程序)的版本和TD提供的任意数据。在启用SEV - SNP的系统中,客人的所有者可以在启动后额外签发一个IDB ( Signed Identity Block )来区分客人,并使用提供的校验和来验证开机。TDX认证报告还包括在认证过程中创建的TDINFO _ STRUCT中识别TD所有者的字段。VM所填充的任意数据往往被用来向另一方提供VM的公钥,以安全的方式进行通信。CSU可以相信认证报告是正确生成的,因为包含了参与认证的每个组件的版本和安全敏感CPU特性(例如:同时多线程、SEM等)的状态。该报告使用版本化的芯片背书密钥( VCEK )进行签名,VCEK对于每个执行SEV - SNP认证的AMD芯片是唯一的,或者依赖于为Intel TDX客户提供的配置认证飞地( PCE )提供的签名密钥。之后,这些报告可以由请求认证的一方通过使用公司提供的签名来验证报告。对于SEV - SNP客户,生成和传输认证报告所需的过程在图4中进行了概述。
由于上述TDX的多组件架构,认证报告的成功传递需要更多的步骤,如图5所示。起初,TDX虚拟机负责TDX模块生成认证报告(图5.1 ),类比负责SEV - SNP客户如何向SP请求报告。利用这个新创建的报告(图5.2 ),TD将其向上传递给管理程序进行签名过程(图5.3 )。VMM将认证数据转发给TDQE (图5.4 ),负责对报告进行加密验证。随后将签名信息传回管理程序(图5.5 )和信任域(图5.6 ),最后将报告传回远程方。
3.8 VM迁移和封闭
由于信任域可能希望保存跨VM执行的数据,因此将数据安全地写入持久化存储是SEVSNP和TDX的一部分。SEV - SNP客户机可以简单地要求SP生成本地加密密钥,VM可以信任不会被恶意参与者篡改,并用于加密不受SEV - SNP内存保证保护的数据。
SEV - SNP引入了一个名为迁移代理( migration agent,MA )的新CPU组件来执行客户迁移。该代理运行在同一台主机上的SEV - SNP VM中,负责验证迁移能否安全进行。由于代理是在每个系统的基础上活动的,它需要运行在客户机应该迁移到的源物理机器上和它应该迁移到的目标机器上。TDX还使用一个称为迁移TD ( MigTD )的特定服务信任域进行机密的虚拟机迁移,它以类似于AMD的MA的安全方式处理进程。几乎所有的现代CSP都支持(运行)虚拟机的迁移,以减轻维护工作并允许动态负载平衡。实时迁移由运行在两个系统上的代理进行管理,代理处理从源移动到目的的数据的再加密[ 6 ]。客人需要确保他们的静息态数据,例如不在内存中的数据,通过其他方式加密,如全磁盘加密,因为TDX和SEV - SNP都不处理这些数据的保护。
4. 相关工作
虽然SEV - SNP引入的完整性保证解决了先前SEV - ES扩展中发现的多个问题,但针对SEV - SNP系统的新型攻击载体已经出现。攻击SP的故障注入漏洞可以被利用来提取SEV - SNP秘密并解密假定为私有的内存。由于这严重影响了远程证明过程,因此无法在当前代AMD处理器上依赖远程证明创建安全报告。额外的侧信道攻击是可能的,因为SEV - SNP不会阻止对(加密) VM私有页的读取访问,可以用于泄漏客户寄存器值或恢复密钥。目前还没有针对英特尔TDX的已知漏洞,因为还没有实现硬件。
在TEE中运行应用程序而不需要修改应用程序的高需求也导致了Gramine和Secure CONtainer Environment (SCONE)的产生。两者都以SGX飞地为依托,利用机密性保障提供安全环境。Gramine是一个库操作系统,它可以封装应用程序,同时保持较低的内存占用,并处理应用程序可能需要的所有操作系统功能。SCONE允许应用程序在安全的Docker容器中运行,并通过提供一个C库来保持TCB较小。
IBM正致力于为使用基于VM的TEE (称为受保护执行设施)的Power ISA计算机提供由SEV - SNP和TDX保证的可比较的完整性保证。它支持自2017年以来的IBM POWER9芯片,增加了访问控制限制,并依赖于现有的几种技术,因为它利用了安全启动和可信平台模块。
5 结论
SEV - SNP和TDX是在SEV - SEM和SGX提供的内存机密性保证的基础上,通过增加额外的完整性保证来实现的。在基于虚拟机的TEE中运行应用程序的转换是由减少的开发工作量驱动的,因为不需要对应用程序的代码进行调整。这些新技术允许在由外部参与者管理的系统上安全地处理敏感的用户数据,并标志着向云中可信执行环境不断推进的重要里程碑。
相关资料
AMD. 2008. AMD-V™ Nested Paging
AMD. 2020. AMD SEV-SNP: Strengthening VM Isolation with Integrity Protection and More.
AMD. 2020. Secure Encrypted Virtualization API Version 0.24.
AMD. 2021. AMD EPYC™ 7003 series processors.
AMD. 2022. AMD64 Architecture Programmer’s Manual Volume 3: GeneralPurpose and System Instructions.
AMD. 2022. SEV Secure Nested Paging Firmware ABI Specification.
2017. Protecting VM register state with SEV-ES.
2016. Intel SGX explained. Cryptology ePrint Archive (2016).
2022. A Systematic Look at Ciphertext Side Channels on AMD SEV-SNP.
Intel. 2021. White Paper: Intel Trust Domain Extensions.
Intel. 2022. Architecture Specification: Intel® Trust Domain Extensions (Intel® TDX) Module.
Intel. 2022. Device Attestation Model in Confidental Computing Environment.
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论