AMD SEV介绍

本文介绍了AMD的Secure Memory Encryption (SME)和Secure Encrypted Virtualization (SEV)技术,详细阐述了它们的工作原理、使用场景及优势。SEV通过硬件加密保护虚拟机内存,防止物理和跨虚拟机攻击,尤其适用于云计算环境。SEV-ES进一步增强了安全性,保护了虚拟机的寄存器状态。此外,文章还提到了SEV-SNP技术,用于防止完整性攻击,确保内存一致性。

AMD EPYC(霄龙)处理器引入了两个硬件安全组件:

  • AES-128硬件加密引擎:嵌入在内存控制器内,用于对内存数据进行加解密。
  • AMD Secure Processor(AMD-SP):负责安全密钥的生成和管理。

Secure Memory Encryption (SME):AMD在DRAM的控制器中添加了加解密模块,用来控制内内存数据的加密和解密。

Secure Encrypted Virtualization (SEV) :将主内存加密功能与现有的AMD-V虚拟化体系结构来支持加密的虚拟机。 加密虚拟机不仅可以让虚拟机免受物理威胁,还可以免受其他虚拟机甚至是hypervisor本身。 因此,SEV代表了一种新的虚拟化安全范例,特别适用于虚拟机不需要完全信任其主机的hypervisor和管理员的云计算系统。 与SME一样,不需要修改应用程序软件即可支持SEV。

linux-4.16,Libvirt-4.5,qemu-2.12已经合入对SEV的支持。

SME介绍

每个内存控制器包含高性能的高Advanced Encryption Standard(AES)引擎,可在将数据写入DRAM时对其进行加密,并在读取时将其解密,如图1所示。数据加密使用了额外的基于物理地址的调整方式,以防止密文块移动攻击。

image

SME的AES引擎使用的加密密钥是在每次系统重置时随机生成的,并且对软件不可见。密钥由集成在AMD SOC上的微控制器AMD Secure Processor(AMD-SP)(32位ARM Cortex A5)进行管理。密钥是由板载的符合SP 800-90的硬件随机数生成器生成,并存储在专用的硬件寄存器中,永远不会暴露在SOC之外。与稍后描述的SEV模同,SME不需要软件参与密钥管理。

OS或者Hypervisor可以指定哪些页进行加密。启动内存加密后,物理地址的第47位(又名C-bit,C代表enCrypted)用于标记该页是否被加密,对加密页进行访问时,加密和解密将由AES引擎自动完成。

image

通过AES引擎对内存进行加密和解密确实会导致DRAM存储器访问的额外延迟。这种延迟对软件的影响主要取决于系统负载,但估计对系统性能的总体影响很小。如果仅对一部分内存进行加密,则对性能的影响将较小,因为通常未加密的访问不会产生额外的延迟。

SME使用场景

  • 全部内存加密
  • 部分内存加密:在云计算场景下,可以仅将虚拟机使用的内存进行加密。

Transparent SME

SME需要OS或Hypervisor的支持。AMD提供了叫Transparent SME(TSME)的模式,该模式下,所有内存都被加密(不管C-bit位是否为1)。TSME可以通过BIOS进行设置,当TSME开启时,其余的内存加密特性(包括SEV)均不可用。

SEV介绍(2016年)

SEV主要的思想是为虚拟机内存进行加密保护,而且不同虚拟机之间以及宿主机不能直接读取或者窃取到虚拟机内存数据。SEV提供的虚拟机内存数据的加密功能,可以保护虚拟机内存免受物理攻击,跨虚拟机

05-08
### AMD SEV 技术概述 AMD 安全加密虚拟化(Secure Encrypted Virtualization, SEV)是一种硬件辅助的安全功能,旨在提高虚拟机的保密性和安全性。它通过利用 AMD 的安全处理器来管理内存加密密钥,从而实现对运行在虚拟机监控程序(Hypervisor)上的每个虚拟机实例的数据保护。 #### 基本原理 SEV 使用 AES-128 加密算法为每个虚拟机创建独立的内存加密密钥[^1]。这些密钥由集成的低功耗 AMD Secure Processor (SP) 处理并存储,减少了外部攻击面和信任链长度。当启用了 SEV 功能时,虚拟机的内存数据会被自动加密解密,而无需任何软件干预或性能开销显著增加的情况。 #### 配置选项与扩展特性 除了基础版 SEV 提供的标准内存加密外,还有两个重要的增强版本: - **SEV-ES**: 此模式不仅加密了 VM 的 RAM 数据,还包括其 CPU 寄存器的状态信息。这意味着即使是在暂停或者迁移过程中,敏感信息也不会暴露给 Hypervisor 或其他潜在威胁者。 - 启动条件包括设置 VMCB 控制结构中特定标志位:`offset 90h bit 2` 表明启用 SEV-ES;同时还需要激活 `bit 1` 对应的基础 SEV 支持以及开启 Last Branch Record(LBR) 虚拟化的 `b8h offset bit 0`[^2]。 - **SEV-SNP(Secure Nested Paging)**: 进一步加强隔离措施,防止恶意 hypervisors 访问受保护区域内的资源。由于 SEV-ES 已经提供了足够的完整性验证机制,所以在某些情况下可能不再需要额外依赖专门针对 SNP 设计的新指令集架构变化。 以下是用于检测当前系统是否支持 SEV 及其变体的一个简单 Python 实现: ```python import os def check_sev_support(): with open("/proc/cpuinfo", 'r') as f: cpu_info = f.read() sev_supported = any(["sev" in line for line in cpu_info.splitlines()]) seves_supported = any(["sev-es" in line for line in cpu_info.splitlines()]) return {"SEV": sev_supported, "SEV-ES": seves_supported} print(check_sev_support()) ``` 此脚本读取 `/proc/cpuinfo` 文件查找是否存在表示支持 SEV 和/或 SEV-ES 的标记字符串,并返回字典形式的结果。 ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值