【TEE】【Intel TDX 白皮书】 Intel® Trust Domain Extensions
长期以来,为企业和云环境中的数据提供更好的保护一直是 IT 部门、政府和个人服务用户的高度关注点。大型技术提供商现在正在将隐私转化为一种可销售的优势,而对第三方处理供应商的不信任度也越来越高。2015 年英特尔® Software Guard Extensions (SGX) 的发布引发了一种范式和竞赛,称这种范式为机密计算。这种范式背后的主要前提是,那些控制平台的人和那些在平台上处理数据的人是两
文章目录
1 介绍
长期以来,为企业和云环境中的数据提供更好的保护一直是 IT 部门、政府和个人服务用户的高度关注点。大型技术提供商现在正在将隐私转化为一种可销售的优势,而对第三方处理供应商的不信任度也越来越高。
2015 年英特尔® Software Guard Extensions (SGX) 的发布引发了一种范式和竞赛,称这种范式为机密计算。这种范式背后的主要前提是,那些控制平台的人和那些在平台上处理数据的人是两个独立的实体。在典型的安装中,平台所有者对平台上正在处理的内容具有完全访问权限。这就是现代计算平台上内存管理和访问控制的层次结构。
在本文中,我们将介绍英特尔信任域扩展(英特尔 TDX)。一种体系结构技术,用于部署称为信任域 (TD) 的硬件隔离虚拟机 (VM)。英特尔 TDX 旨在将 TD 虚拟机与主机平台上的虚拟机管理器 (VMM)、虚拟机管理程序和其他非 TD 软件隔离开来。英特尔 TDX 可用于帮助保护 TD 免受各种软件攻击,从而增强机密计算,还有助于减少 TD 可信计算基 (TCB)。英特尔 TDX 旨在增强平台用户对数据安全和 IP 保护的控制。英特尔 TDX 还可以增强云服务提供商 (CSP) 提供托管云服务的能力,而不会将租户数据暴露给对手。
在本文中,我们将介绍英特尔 TDX 技术,以及它如何成为机密计算产品的支柱之一。我们详细介绍了它如何帮助提供内存机密性和完整性、地址转换完整性、CPU 状态机密性和完整性、安全中断和异常传递以及远程证明支持。最后,我们总结了 TDX 提供的威胁模型和针对常见软件和硬件攻击的缓解措施。
2 Intel TDX 技术
英特尔-TDX 解决方案结合了英特尔虚拟机扩展指令集架构 (ISA) 扩展、英特尔总内存加密多密钥 (Intel TME-MK) 技术和 CPU 认证软件模块。英特尔 TDX 解决方案可为 TD 提供以下功能:
- 内存和 CPU 状态的机密性和完整性,有助于保护敏感的 IP 和工作负载数据免受大多数基于软件的攻击和许多基于硬件的攻击。现有一个工具,支持将云平台的固件、软件、设备和运营商排除在可信计算基 (TCB) 之外。工作负载可以使用此工具来促进对 CPU 指令、安全性、调试和其他技术的更安全访问。现在,无论用于部署工作负载的云基础结构如何,工作负载都可以具有此功能。
- 远程证明使得依赖方(工作负载的所有者或工作负载提供的服务的用户)能够在提供该工作负载数据之前确定工作负载正在位于 TD 中的支持 Intel-TDX 的平台上运行。远程证明旨在允许服务的所有者和使用者以数字方式确定他们所依赖的 TCB 版本,以帮助保护其数据。
英特尔 TDX 还增强了 TD 的防御能力,可抵御使用对平台内存进行物理访问的部分攻击,例如离线动态随机存取内存 (DRAM) 分析(例如冷启动攻击)和 DRAM 接口的主动攻击,包括捕获、修改、重定位、拼接和混叠内存内容。英特尔 TDX 不会通过物理攻击来防御内存重放。
Figure 1 Trust Boundaries for TDX
VMM 仍然是资源管理器,TD 没有拒绝向 VMM 提供服务的权限。保护 TD 免受 VMM 拒绝服务不是英特尔 TDX 的安全目标。
为了帮助实施 TD 的安全策略,引入了一种称为安全仲裁模式 (SEAM) 的新 CPU 模式,用于托管 Intel 提供的、经过数字签名但未加密的安全服务模块。英特尔 TDX 模块托管在 SEAM 范围寄存器 (SEAMRR)已识别的预留内存空间中。在该设计下,CPU 只允许在 SEAM 内存范围内执行的软件访问 SEAM 内存范围,并且所有其他软件访问和从设备到此内存范围的直接内存访问 (DMA) 都将中止。SEAM 还被设计为对平台中其他受保护的内存区域没有任何内存访问权限,包括系统管理模式 (SMM) 内存或英特尔®软件防护扩展 (Intel® SGX) 受保护的内存(图 2)。
Figure 2 SEAM Module Flow
内存完整性可以通过(默认的)加密完整性保护方案或逻辑完整性保护方案来实现。加密完整性方案使用基于SHA - 3的消息认证码( MAC ) ( 28-bit ),有助于防止主机/系统软件访问,并检测来自软件和一些硬件攻击的状态篡改。逻辑完整性保护方案的目的是防止主机/系统软件的单独访问。
为了给英特尔TDX安装该模块,提供了一个新的英特尔®可信执行技术( Intel TXT )认证代码模块( ACM ),称为SEAM Loader ( SEAMLDR ),用于帮助验证英特尔TDX模块上的数字签名,并将其加载到SEAM -内存范围内。通过设计,模块的测量和安全版本号( SVN )被SEAMLDR记录到硬件测量寄存器中,然后响应VMM调用SEAMLDR ACM加载到SEAM - memory范围中,从而实现对模块的加载,该模块不具有持久性。
针对VMM设计了SEAMCALL指令,将CPU置于SEAM - VMX - root操作中并调用模块。英特尔TDX模块旨在为VMM提供创建、删除和调度TD执行的接口。英特尔TDX模块作为可信中介,帮助实现TD的安全策略、动作和必要的缓解措施。
作为TD创建的一部分,VMM为TD代码、数据以及与TD相关的元数据结构(如虚拟机控制结构VMCS )提供了内存页,并在TD未执行时提供了用于保存TD状态的状态保存区。
英特尔TDX采用包括VMX架构在内的英特尔® 64架构来帮助管理TD。Intel - TDX模块设计为执行VM进入SEAM - VMX,非root操作使用VMRESUME和VMLAUNCHVMX指令执行TD。
Intel - TDX模块帮助确保为TD活动的执行控件不允许VMM或其他不可信实体拦截TD访问TD分配的资源,如控制寄存器、特定于模型的寄存器( model-specific registers,MSRs )、调试寄存器、性能监视计数器、时间戳计数器等。TDX模块旨在实现TD的安全策略。这种策略的一个例子是,在切换TD时使用间接分支预测屏障( IBPB )模块,以帮助TD -间接转移预测不受先前执行的TD中代码的影响。
如果TD在创建时获得授权,TD将充分利用调试和性能监控功能。如果它们没有被授权,这些功能将在TD执行时被禁用。TD的调试和性能监控属性包含在TD认证报告中。
Intel TDX的设计目的是允许VMM限制TD提供的功能,因为各种原因,如虚拟化硬件能力。英特尔TDX可以限制VMM隐藏或允许TD使用该特性的能力。如果VMM选择允许TD使用该功能,则英特尔TDX试图阻止VMM在TD访问时修改CPUID、能力MSR和控制寄存器等指令提供的枚举和信息。TD的目标是可靠地使用这些硬件指令,而不需要特殊的操作系统修改,但具有类似于传统虚拟机中软件所期望的性能。
Intel TDX的设计目的是在TD上执行执行控制,以导致在TD中执行某些指令,如IN / OUT,HLT,RD / WRMSR等,然后导致TD OS的虚拟化异常( # VE ),以便这些指令可以被TD OS以安全的方式模拟为TD软件。
其本意是VM退出进入SEAM - VMX - root操作是为了响应SEAM - VMX -非Root操作中的某些指令和事件而发生的。提供了TDCALL指令,通过使VM退出模块来帮助TD调用服务。
当一个TD退出到该模块时,该模块被设计为将寄存器(例如,通用寄存器、控制寄存器、MSR寄存器、调试寄存器、性能监测计数器、扩展状态寄存器以及与TD相关的其他CPU状态)保存到为该TD分配的状态保存区域中。然后,该模块在将执行控制返回给VMM之前对这些寄存器进行擦除,以防止TD状态的泄漏。当随后恢复一个TD时,TD的CPU状态将从此恢复。
为英特尔TDX模块引入SEAMREPORT指令,以帮助创建一个证据结构- -一个用MAC加密绑定到平台硬件的报告。随后,SEAMREPORT创建的报告结构有助于生成远程证明引用。
该模块引入SEAMRET指令,将执行控制返回给VMM。
英特尔TDX 1.0旨在为TD提供以下功能:
- A 内存机密性和完整性
- B 地址转换一致性
- C CPU状态机密性和完整性
- D 安全中断和异常传递
- E 远程验证
未来的更新将着眼于为英特尔TDX模块带来新的功能,即:
- F 动态迁移
- G TD划分
- H VM保留更新
A 内存机密性和完整性
加密
英特尔TDX使用TME - MK引擎启用内存加密,并通过增加完整性保护模式进行增强。除了AESXTS 128位存储器加密外,Intel TDX还可以在每个缓存行上使用基于SHA - 3的MAC ( 28位)来实现密码学完整性保护模式。在这种模式下,SHA-3- 256 ( KECCAK [ 512 ] )作为MAC生成的底层函数,将256b的输出截断为28b进行存储和验证。为了防止密文泄露,在每个缓存行中维护一个1位的TD所有权标签,以识别该行是否与分配给TD的内存页相关联。在这种模式下,TD ownership - bit被包含在MAC中。可选的是,可以使用逻辑完整性模式,它维护1 - bit TD所有权标签,然而在逻辑完整性模式中,没有每行缓存维护的密码学MAC。
TME - MK支持的Ach密钥由一个KeyID或密钥标识符来标识。CPU的设计目的是提供Intel - TDX模块使用的PCONFIG指令,为每个KeyID编程一个CPU生成的、唯一的、短暂的AES - XTS 128位密钥。TME - MK中的密钥是定制的,不能通过软件或使用SOC的外部接口来访问。
KEY ID的功能共享
TME - MK支持的KeyID ( s )集合可以划分为两组KeyID ( s ) - -私有KeyID ( s )集合和共享KeyID ( s )集合。PCONFIG的设计目的是在从SEAM模式(即通过TDX - SEAM模块)调用时,仅允许私有KeyID使用密钥进行编程。
B 地址转换一致性
C CPU状态机密性和完整性
D 安全中断和异常传递
E 远程验证
F 动态迁移
G TD划分
H VM保留更新
3 威胁模型概述
4 总结
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)