介绍
2016年,AMD推出了第一个x86技术- -安全加密虚拟化( Secure Encrypted Virtualization,SEV ),旨在将虚拟机与虚拟机管理程序隔离。虽然虚拟机管理程序在传统上是虚拟化安全模型中的可信组件,但许多市场可以从不同的VM信任模型中获益。例如,在云中,客户可能希望基于VM的工作负载免受云管理员的损害,以保持数据机密性,并尽量减少暴露在云提供商的基础设施中的缺陷。这就导致了在硬件级别上将 “虚拟机” 与 “虚拟机管理程序和可能在物理服务器上共存的其他代码” 隔离的需求。
AMD开始通过在SEV中使用主存加密来应对这一挑战。通过该技术,可以为单个VM分配唯一的AES加密密钥,用于自动加密其正在使用的数据。当管理程序等组件试图读取访客内部的内存时,它只能看到加密的字节。
2017年,AMD推出了SEV - ES ( Encrypted State )特性,为CPU寄存器状态增加了额外的保护。在SEV - ES中,每个虚拟机管理程序变迁上的虚拟机寄存器状态都被加密,这样虚拟机管理程序无法看到虚拟机正在主动使用的数据。与SEV一起,SEV - ES可以通过帮助保护内存中数据的机密性来减少VM的攻击面。
本白皮书介绍了下一代SEV - SNP (Secure Nested Paging)。SEV - SNP在现有SEV和SEV - ES功能的基础上,增加了新的基于硬件的安全防护。SEV - SNP增加了强大的内存完整性保护,以帮助防止数据重放、内存重映射等基于虚拟机管理程序的恶意攻击,从而创建隔离的执行环境。此外,SEV - SNP引入了一些额外的可选安全增强,旨在支持额外的VM使用模型,提供更强的中断行为保护,并提供更多的保护来抵御最近披露的侧信道攻击。
本文将SEV、SEV - ES和SEV - SNP统称为AMD SEV技术。
完整性介绍
与AMD SEV技术结合使用的AES加密提供了更高的内存机密性保护。不知道加密密钥的攻击者无法破译存储在DRAM中的VM数据。SEV内存加密密钥本身由硬件随机数发生器产生,存储在软件无法直接读取的专用硬件寄存器中。此外,硬件的设计使得相同的明文在不同的内存位置会有不同的加密方式。
尽管进行了加密,但即使不知道加密密钥,攻击者也可能试图改变内存中的值。这些类型的攻击被称为完整性攻击,因为内存中的值与VM的意图不一样。攻击者无法在不知道加密密钥的情况下轻易地将已知数据放入VM的内存中,但他们可能会破坏内存,使VM看到随机值或进行重放攻击。在重放攻击中,攻击者在某一时间点捕获密文,然后用先前捕获的数据替换内存。如果攻击者知道原始数据是什么,这种类型的攻击更加有效。
完整性攻击本身并不会直接危害VM,VM内部的软件必须利用不正确的数据导致信息泄露。这样的攻击是否成功取决于VM内部的软件以及它在遇到这种泄露的数据时的行为。由于VM中的软件通常不知道其内存完整性是否已受损,因此其在这种情况下的行为可能具有挑战性。
SEV - SNP旨在防止基于软件的完整性攻击,并降低与内存完整性受损相关的风险。SEV - SNP完整性的基本原理是,如果一个VM能够读取一个私有(加密)的内存页,那么它必须始终读取上一次写入的值。这意味着,如果VM向内存位置X写入一个值A,那么每当它以后读取X时,它必须要么看到值A,要么必须得到一个异常,表明该内存不能被读取。SEV - SNP的设计是为了使VM不能看到与内存位置X不同的值。
在典型的用例中,虚拟机既要执行自己的任务,又要通过I / O与外部实体进行通信。这可能包括通过网络链路、与存储服务器或其他组件进行通信。在SEV架构中,这种通信是使用共享(未加密)内存完成的。VM希望提供的任何传出数据都被放置在内存的共享页中,任何传入数据也必须被放置在共享页中。由于共享内存不使用虚拟机的特定密钥进行加密,因此I/O流的安全性需要使用合适的软件加密协议,如HTTPS。
MD SEV虚拟机使用客户页表中的加密位( en Crypted bit,C-bit )控制内存页是私有还是共享。共享(未加密)内存被VM标记为C = 0,表明它不必用VM的内存加密密钥进行加密。私有(加密)内存页用于该VM的独占使用,并标记为C = 1。在一个典型的虚拟机中,大多数页面被标记为私有的,只有用于外部通信的选择页面被标记为共享的。与SEV的机密性保证一样,SEV - SNP的完整性保证只适用于私有的客户页面。
威胁模型细节
与之前的SEV和SEV - ES特征一样,在SEV - SNP下,AMD片上系统( SOC )硬件、AMD安全处理器( AMD-SP )和VM本身都被视为完全可信。VM负责保护自身及其接口,对于它使用的任何I/O数据,如网络流量、硬盘数据等,都应该遵循标准的最佳实践。为此,AMD强烈建议使用带有受保护VM的全磁盘加密( Full Disk Encryption,FDE )解决方案,因为所有的SEV技术只保护正在使用的数据。FDE保护静态数据并且存在许多流行的商业解决方案。
在SEV - SNP下,所有其他CPU软件组件和PCI设备被视为完全不可信,如图2所示。包括主机系统上的BIOS、虚拟机管理程序、设备驱动程序、其他VM等。完全不可信是指这些组件被认为是恶意的,可能与其他不可信组件合谋,以损害SEV - SNP VM的安全保证。

SEV - SNP威胁模型包含了比以往AMD SEV技术更多的用于抵御额外威胁的特征。SEV和SEV - ES采用"良性但脆弱"的管理程序威胁模型。在这种威胁模型中,管理程序并不被认为是100 %安全的,但它被信任以良性的意图行事。也就是说,管理程序虽然没有积极地试图对其下方的SEV虚拟机进行损害,但其本身可能存在可利用的漏洞。通过阻止或增加某些攻击的难度,SEV和SEV - ES技术有助于限制某些类别管理程序bug的潜在暴露或显著提高利用难度。SEV - SNP解决了额外的攻击向量和VM安全的潜在威胁。在表1中总结了各种SEV技术所面临和未解决的威胁。


机密性:机密性威胁是基于硬件的内存加密来处理的。SEV - ES技术为VM寄存器状态增加了机密性保护,在VM退出到虚拟机管理程序时对该状态进行加密。这种保护作用同样存在于SEV - SNP中。
完整性:SEV - SNP技术旨在防止完整性攻击,包括数据重放、损坏、重新映射和基于别名的攻击。
可用性:任何虚拟化平台都有两个方面的可用性。首先,确保管理程序保留对系统的控制,并且客户VM不能拒绝管理程序的运行,否则将导致物理机器不可用。所有的SEV技术都支持这种级别的可用性,并保证管理程序在需要时总

本文介绍了AMD SEV - SNP技术,它在SEV和SEV - ES基础上增加新的硬件安全防护。该技术能防止基于虚拟机管理程序的恶意攻击,创建隔离执行环境,还可抵御侧信道攻击。SEV - SNP增强了虚拟机的安全性、隔离性和架构灵活性,为云计算提供更安全保障。
最低0.47元/天 解锁文章
1223

被折叠的 条评论
为什么被折叠?



