原文:A comprehensive survey of hardware-assisted security: From the edge to the cloud
1. 引言
从在中央存储库(例如云主机)中处理收集的传感器数据的传统部署,到更高级的解决方案,例如新兴的边缘计算领域,其中分布式处理发生在终端设备中。在这两种情况下,数据都超出了用户的控制范围,在处理时尤其容易受到完整性或机密性攻击。基于软件的安全性带来的性能开销是不可忽视的,硬件支持可以减少性能开销。
硬件安全方面,解决方案是专门为唯一的硬件层设计的,这与硬件辅助安全不同,硬件辅助安全侧重于保护机器架构的更高层(例如,虚拟机管理程序、操作系统)。
主要供应商(即 AMD、ARM、Intel)发布了多种硬件辅助解决方案的架构实现,用于各种用途,例如加速安全相关处理、安全随机数生成、内存边界保护、隔离执行、视频保护或可信计算等技术。
本文提出了许多支持主机内保护的技术,这些技术适用于大多数 CPU 内部。所考虑的架构可在典型物联网部署的两端利用:终端设备和云主机。
是针对物联网终端设备或云托管服务器等环境中处理的数据进行最关键攻击的最佳方法,例如总线嗅探、超级劫持、冷启动、代码注入、iago、侧信道、代码重用、缓冲区溢出。
2.相关工作
- SoK: A study of using hardware-assisted isolated execution environments for security:比较了硬件辅助隔离执行环境的六种技术。他们从安全角度介绍了主要功能,并讨论了它们的漏洞。
- Survey of hardware-based security support for IOT/CPS systems:物联网背景下的硬件辅助安全性进行了调查。在这项工作中,注意力主要集中在可信计算上,更准确地说,是能够确保硬件信任根(HRoT)的技术。
- A comparison of software and hardware techniques for x86 virtualization:比较了 Intel 和 AMD CPU 在支持虚拟化方面的架构扩展。从性能和安全角度来看,他们将现有软件 VMM 与使用新兴硬件支持设计的 VMM 进行了比较。
- Hardware-based Control Flow Integrity (CFI):概述了硬件辅助用于控制流完整性(CFI)保护,其中硬件监视器用于检查软件的行为(即调用)。
与之前的工作不同,本文的目标是涵盖更广泛的硬件辅助安全解决方案,这些解决方案专注于物联网边缘设备和云节点。
3. 硬件辅助安全的承诺:概念、场景和分类
概念
硬件辅助安全包括使用硬件组件或扩展来支持更高计算机层(如固件或软件)的安全性的技术 ,因此包括 BIOS、操作系统、虚拟机管理程序或任何其他用户级应用程序。 硬件辅助安全不得与硬件安全相混淆,硬件安全旨在保护物理设备,而不是安装在计算机系统硬件上的软件。
主要关注的是 CPU 内部扩展,因为这些扩展是唯一能够强化应用程序以抵御特权用户实施的极其强大的攻击的扩展。其他硬件辅助技术,如可重新编程的FPGA,完全是外部设备,没有被考虑在内。
使用场景
公司和研究机构已经发布了许多物联网系统,如智能家居、智能城市或智能电网。在这些架构,理论上可以对终端设备生成的数据进行局部复杂处理。
对于需要低延迟的用例,合理的方法是依靠基于云的平台来处理、分析和存储数据集。谷歌、亚马逊、IBM 和 Microsoft 等主要供应商发布了支持物联网的云平台。示例包括 Google IoT Core、AWS IoT、IBM Watson、Azure IoT HUB。
在这些典型的部署中,两个端点端的数据都处于危险之中。这项工作中报告的技术既可以用于嵌入式终端设备(即边缘),也可以用于更通用的机器(例如云服务器),以保护数据免受主机/设备内部攻击。
分类
两类:提高性能的技术,安全增强技术。
图 2.硬件辅助安全的技术解决方案
performance boosting考虑使用硬件来提高安全处理性能或提高安全性:
- (i) 恶意软件检测,它包含用于增强异常检测扫描活动的技术;
- (ii) 加密加速,即用于提高加密处理性能的硬件辅助解决方案;
- (iii) 虚拟机 (VM) 隔离,有助于提高虚拟化环境性能的技术,同时防止超级劫持、侧信道 或 DMA 攻击等攻击。
security enhancement使用硬件实际支持安全性的技术: - (i)可信计算,可用于防止物理攻击的子集,如总线嗅探,或软件攻击,如代码注入或运行时攻击
- (ii)指针违规预防 加强系统抵御代码重用攻击 (CRA),例如 ROP 或 JOP、控制流劫持或缓冲区溢出攻击 ;
- (iii) 随机数生成能够保护主机免受加密方案的攻击
- (iv) 视频保护,使用硬件安全地显示帧并向用户播放音频。
4. 硬件辅助恶意软件检测
4.1. Intel TDT -- 威胁检测技术
对恶意软件的连续扫描操作在系统性能和功耗方面都具有很高的成本。
2018 年发布了英特尔威胁检测技术 (TDT),对基于内存的恶意软件的扫描从 CPU 卸载到英特尔集成图形处理器 (GPU)。处理负担从 CPU 转移到 Intel 集成显卡可以实现更频繁的扫描,对 CPU 性能的影响可以忽略不计。
当一些先进的新型恶意软件来袭时,英特尔 TDT 可以通过观察其行为来帮助他们快速识别它,而不是仅仅依靠签名识别。英特尔实现的基准测试显示,CPU 利用率从 20% 下降到 2%。由于英特尔 TDT 仍未经过独立研究人员和第三方的基准测试,因此必须谨慎对待此类结果。
5. 硬件辅助加密加速
5.1. 英特尔AES-NI
高级加密标准 (AES)是美国国家标准与技术研究院 (NIST) 于 2001 年制定的对称分组密码规范。2010 年,英特尔发布了对 x86 指令集架构的扩展,即 AES 新指令 (AES-NI),它允许特定的英特尔 CPU 使用 AES 方案进行极快的硬件加密和解密。
除了提高性能。AES-NI还可以提高安全性。它是能够共同提高性能和增强安全性的技术之一。特别是,AES-NI旨在减轻敏感数据(来自ring3进程)的时序和缓存侧信道泄漏。
由于所有计算都由硬件在内部执行,因此不需要查找表。因此,如果 AES 指令使用得当,AES 加密/解密以及密钥扩展将具有与数据无关的计时,并且仅涉及与数据无关的内存访问。
5.2. ARM加密扩展
ARM 处理器的加密扩展为高级 SIMD 添加了新的 A64、A32 和 T32 指令,可加速高级加密标准 (AES) 加密和解密。
5.3. 问题
与最初的AES软件实施相比,AES-NI大大降低了攻击风险。然而,高级固件级攻击可能会破坏加密方案。
Spectre了利用推测执行微码中的漏洞来创建基于硬件的侧信道,从而对AES-NI的安全性构成威胁。
LazyFP 利用浮点单元(FPU),特别是其上下文切换,来恢复任意进程或VM的FPU和SIMD寄存器集。
解密特定数据块所需的AES-NI的所有圆形密钥都保存在SSE寄存器中。SSE 寄存器是 FPU 寄存器集的一部分,因此 LazyFP 漏洞使这些寄存器能够被能够在同一系统上执行代码的对手获取。
许多最新的台式机和服务器英特尔的 CPU 都配备了 AES-NI 扩展;英特尔 AES-NI 主要用于增强云托管计算机的安全性 。大多数云提供商(如 Amazon、Google、IBM)开始提供配备此 Intel 扩展的实例,并将其作为其产品组合中的安全功能。
可以通过固件(例如 UEFI)、虚拟机管理程序(例如 Hyper-V、Xen)、开发工具(例如 gcc/g++)和应用软件(例如 OpenSSL)中提供的支持来实现。
6. 硬件辅助的虚拟机隔离
虚拟化在云环境中的快速采用 推动了新硬件技术的设计,其主要目标是优化处理器和网络 I/O 虚拟化的性能和可扩展性。
硬件辅助解决方案可用于设计针对超级劫持的高级保护机制。提供隔离,从而防止 DMA、VMM rootkit或内存重用攻击。
例如,输入/输出内存管理单元 (IOMMU) 使计算机系统能够防止外围设备 DMA 攻击。IOMMU 在外围设备上实施 CPU 控制的地址空间虚拟化,类似于 MMU 将其强加给进程的方式。它用于防止在虚拟化环境中违反guest 操作系统隔离的 DMA 攻击,从而提供操作系统间保护。
6.1. 英特尔VT
英特尔虚拟化技术(VT)是一套包含 VT-x 和 VT-d 的技术。 VT-x 提供硬件辅助虚拟化的实际技术,VT-d 支持直接直通设备(如 PCI 设备)的扩展,即 IOMMU 机制。
VT-x 的特点是 CPU 的两种操作模式:VMX 根模式和 VMX 非根模式。前者专用于虚拟机监控程序 (VMM),而后者保留给guest VM。这两种模式下运行的应用程序都可以在四个环级别中的任何一个运行。执行在非 root 模式和 root 模式之间来回切换上下文。这种转换是通过 VMEXIT 和 VMENTRY 实现的。
VT-x 包括支持内存虚拟化的英特尔扩展页表 (EPT),并减少了由于内存管理而产生的开销源。它基本上由一个完整的 64 位地址空间的分页结构组成,该地址空间在来宾和gurst物理地址之间保持映射。
VT-d 代表英特尔 VT 定向 I/O,用于隔离和限制设备对管理设备的分区所有者的设备访问。VMM 可能支持各种 I/O 虚拟化模型,包括模拟设备 API、将物理 I/O 设备分配给 VM 或允许以各种方式共享 I/O 设备。
VT-d 包括四个关键功能:
- I/O 设备分配,允许管理员将 I/O 设备分配给 VM。
- DMA 重新映射。支持设备 DMA 数据传输的地址转换。
- 中断重新映射。提供 VM 路由和设备中断隔离。
- 可靠性功能。报告和记录系统软件 DMA 和中断错误,否则可能会损坏影响 VM 隔离的内存。
6.2. AMD 支持向量机
AMD 安全虚拟机 (SVM) 与 Intel VT 非常相似。
AMD-V 是 Intel VT-x 的对应者,它在guest虚拟机和虚拟机管理程序之间创建硬件特权分离。
包含在英特尔 VT-d 中的 IOMMU 机制是 AMD-Vi 的一部分。
AMD 嵌套页表 (NPT) 在内存管理方面带来了与英特尔 EPT 类似的性能改进。
6.3. 问题
Intel VT 和 AMD SVM 的漏洞得到了证明。
一方面,硬件辅助的 VM 隔离可以确保针对一组 rootkit 的保护。然而,另一方面,如BluePill和Vitriol,它们是专门为硬件辅助虚拟化而设计的攻击。BluePill 和 Vitriol 等攻击促使在英特尔 VT 和 AMD SVM 上创建新的虚拟机监控程序检测机制,例如基于签名、基于行为、基于检测的技术。
BluePill 依赖于 AMD SVM 技术,无需修改 BIOS 或其他引导扇区即可安装。BluePill 操作内核模式内存分页以及控制虚拟机管理程序和客户机之间交互的 VMRUN 和相关 SVM 指令。这允许在不被发现的情况下,将主机操作系统动态放置在其自己的安全虚拟机中,从而可以完全控制系统,包括其他恶意软件的操纵。
此外,当中断重新映射被禁用时,英特尔 VT-d 可能会受到攻击。他们所描述的攻击通过强制相应的设备生成所谓的消息信号中断(MSI)来工作,即中断信号的入站机制。
对IOMMU的另一次攻击表明,利用Intel VT-d和AMD-Vi典型设计中的弱点可以侵犯IOMMU。该弱点与 IOMMU 的配置表有关,这些配置表在不受 DMA 访问保护的 DRAM 区域中初始化。恶意外围设备可能会利用此弱点,在 IOMMU 的硬件设置之前修改内存中的这些表。
在过去十年中,软件公司发布了对 Xen、Hyper-V、ESXi、KVM 等虚拟机管理程序的扩展,这些虚拟机管理程序能够利用硬件辅助技术。如今,这些是大多数云提供商的支持软件。
7. 硬件辅助随机数生成
在密码学中,随机数的质量直接决定了系统的安全强度。如果状态已知,则可以预测随机数生成器 (RNG) 的所有未来结果。RNG 是加密应用程序的核心。它们用于在身份验证协议中生成会话密钥、数字签名、掩码和质询。加密应用程序依赖于随机数的不可预测性,这使得 RNG 的实现对安全性至关重要。
存在两种类型的 RNG:真随机数生成器 (TRNG) 和伪随机数生成器 (PRNG)。第一种使用不可预测的物理手段来生成数字,而第二种使用完全由计算机生成的数学算法。存在许多针对PRNG的攻击,这使得使用更强的TRNG成为必要。
7.1. IntrinsicID SRAM PUF
物理不可克隆函数(PUF)越来越多地被提议作为加密协议和安全架构中的TRNG。PUF利用硬件设备的物理特性来提取随机性。
在高层次上,PUF是一种噪声功能,它嵌入到物理对象(如集成电路(IC)中,接收来自刺激器(可能是信号发生器)的挑战x,以提供最终响应y,这是一个独特的硬件指纹。
大多数PUF利用制造工艺中的缺陷来利用CMOS电路中的可变性,这些缺陷会导致集成电路的物理和电气特性(例如晶体管的金属电阻率和有效通道长度)的固有和随机变化。响应 y 总是不同的,因为 PUF 会受到其工作条件变化(例如电源电压和环境温度变化)引起的噪声的影响。
PUF 可确保以下安全属性:
- 本质上是不可克隆的 -- PUF 无法复制,因为两个相同类型的设备芯片总是提供不同的响应。
- 无法预测 -- 无法预测下一个响应。
- 防篡改 -- 如果攻击者想要对 PUF 进行物理攻击,则生成的指纹等密钥将发生变化。
PUF用来获得随机性的物理系统催生了不同类别的PUF的诞生。
- 光学PUF依赖于相干光(激光束)在不均匀材料中传播时产生的随机干涉图案
- 仲裁者PUF利用硅上导线和栅极延迟的随机变化
- SRAM PUF,它使用静态随机存取存储器(SRAM)来获得随机性
7.2. Intel 安全密钥
英特尔推出了安全密钥,其集成了称为数字随机数生成器 (DRNG) 的 RNG,英特尔 CPU 的架构中还提供了新的指令(即 RDRAND 和 RDSEED)。
现代操作系统(例如 Linux)和加密库中使用的一种常见方法是从熵源获取输入,以提供缓冲区或熵池。然后,此熵池用于提供非确定性随机数,这些随机数会定期播种加密安全 PRNG (CSPRNG)。
英特尔使用处理器驻留熵源来重复设定硬件实现的 CSPRNG。与软件方法不同,它包括一个更好的熵源实现,可以对其进行采样以重复播种 CSPRNG。正如英特尔所说,RNG 的硬件模块是独立的,并且与其内部状态的软件攻击隔离。
7.3. 问题
PUF在与老化、温度和其他类似因素相关的设备中的长期应用方面可能会受到影响。
PUF系统可能会受到攻击。一个例子是建模攻击,其中攻击者收集PUF的所有质询-响应对(CRP)的子集。然后,她试图从这些 CRP 数据中推导出一个数值模型,即一种能够以高概率正确预测 PUF 对任意挑战的响应的算法。机器学习 (ML) 技术通常是首选。
PUF 也可能成为侧信道攻击的目标。例如,Becker 和 Kumar 证明了仲裁者 PUF 像传统密码学一样遭受侧信道攻击。通过将机器学习与两个不同的侧信道相结合来显示攻击:被动电源侧信道和基于改变受控PUF电源电压的主动故障攻击。
嵌入安全密钥技术的英特尔 CPU 的特性意味着这通常可用于托管计算机。事实上,包含此类扩展的 Ivy Bridge 处理器的最新版本是云平台的核心,例如 Google Compute Engine 云计算服务、Amazon AWS 或 IBM Cloud 等其他平台。
8. 硬件辅助指针违规预防
这些技术旨在保护系统免受利用内存错误的攻击,即由无效指针操作、使用未初始化的变量或内存泄漏引起的软件错误。软件的很大一部分是用 C/C++ 等语言编写的,这些语言在内存控制和引入内存损坏错误的风险方面是不安全的。一般认为Rust是安全的,但是其应用还不广泛。
最臭名昭著的攻击例子是缓冲区溢出 (BO)和代码重用攻击 (CRA) 。在第一种情况下,写入缓冲区的数据多于分配的大小,导致覆盖相邻内存位置,并导致局部变量、指针地址、返回地址和其他数据结构等项目被覆盖。在第二种情况下,通过出于恶意目的使用和重新组合现有软件的各个部分来规避代码注入攻击的保护技术。
操作系统通常配备软件安全机制,以防止与内存相关的攻击。
8.1. Intel CET -- 控制流强制技术
英特尔控制流强制技术(CET),通过两种已知的CFI机制来防止CRA:影子堆栈(SS)和间接分支跟踪(IBT)。
SS 是程序的第二个堆栈,专门用于控制传输操作。此堆栈与数据堆栈是分开的,可以在用户模式或管理引擎模式下单独启用操作。启用影子堆栈后,CALL 指令会在数据堆栈和影子堆栈上推送返回地址。RET 指令从两个堆栈中弹出返回地址并进行比较。如果两个堆栈的返回地址不匹配,处理器将发出控制保护异常信号。影子堆栈仅保存返回地址,而不保存传递给调用指令的参数。
通过 CET 强制实施的页表保护,防止影子堆栈被篡改。为了提供此保护,对页表保护进行了扩展,以支持页面的附加属性,以将其标记为 Shadow Stack 页面。对于支持 CET 的 CPU,英特尔将引入新的指令,同时将改变传统的控制传输指令以支持 RET、JMP、INT、CALL。
8.2. Intel MPX -- 内存保护扩展
英特尔 MPX 的唯一目的是透明地向传统 C/C++ 程序添加边界检查,从而面临通过缓冲区溢出执行的攻击。对于熟悉英特尔编译器中指针检查器功能的开发人员来说,迁移到英特尔 MPX 将是一个容易的过程,因为只有一个新的编译器开关、一些新的内部函数和一个支持英特尔 MPX 的 C 运行时库。
英特尔 MPX 提供 7 条新指令和一组 128 位边界寄存器。此类寄存器存储指针的下限和上限。每当使用指针时,都会根据指针的关联边界检查请求的引用,从而防止越界内存访问(如缓冲区溢出和溢出)。越界内存引用会启动异常,然后可以以适当的方式处理该异常。
与SoftBound等基于软件的保护不同,英特尔MPX引入了。单独的边界寄存器,以降低通用寄存器(GPR)文件上的寄存器压力。当一组函数参数被扩展为包含指针边界时,基于软件的方法不能修改调用约定并诉诸函数克隆。
8.3. ARM PA -- 指针身份验证
2016年,ARM宣布在ARMv8-A架构中增加一项安全功能,即指针身份验证(PA),其用途是检测由外部实体创建的指针。
从本质上讲,它将加密签名附加到指针值;在使用指针之前,可以验证这些签名。缺少用于创建签名的密钥的攻击者不太可能创建用于漏洞利用的有效指针。
ARM PA 背后的理念是 64 位架构中的实际地址空间小于 64 位。指针值中有未使用的位,我们可以使用这些位来放置此指针的指针身份验证代码 (PAC)。我们可以在将 PAC 写入内存之前将 PAC 插入到我们想要保护的每个指针中,并在使用之前验证其完整性。想要修改受保护指针的攻击者必须找到/猜测正确的 PAC 才能控制程序流。
8.4. 问题
英特尔 MPX 已被证明非常难以利用。他们声称在运行了一些微基准测试后,性能开销仍然很高(平均为 50%),并且支持基础设施存在可能导致编译或运行时错误的错误。它无法检测临时错误,从而在多线程代码中带来误报和漏报的风险,并且它对内存布局的限制需要对某些程序进行大量代码更改。
还存在影响 ARM PA 的潜在问题。更准确地说,如果攻击者可以猜出密钥或获得与目标进程具有相同密钥的进程的控制权,则攻击者可以伪造指针。
虽然英特尔 MPX 最初似乎是物联网领域中一个很有前途的硬件辅助解决方案,适用于主机或边缘设备,引起了社区的兴趣,但现在它似乎正在失去优势。如果没有上游 GCC 编译器支持,内核代码也没有得到太多关注,英特尔很可能会在未来删除此功能。
公司开始采用 ARM PA HW 辅助解决方案。作为ARM处理器的扩展,很明显,它的使用将用于从Smatphone到更通用的物联网微控制器的嵌入式系统。2018 年 9 月,Apple 宣布新一代 iPhone 配备了新版本的 ARM 架构 ,即 ARMv8.3,并开始使用 PA 功能。
9. 硬件辅助可信计算
可信组件可用于构建安全系统,但信任本身并不意味着安全性,而只是可预测的行为。根据公司联盟,即可信计算组织 (TCG),"如果一个实体始终以预期的方式为预期目的行事,则可以将其视为受信任的实体"。
可信计算基于信任链 (CoT) 的概念。通过验证从最终实体到信任根 (RoT) 的硬件和软件的每个组件来建立信任链。在硬件辅助 TC 中,信任锚通常位于硬件的一部分中。它也可能在软件组件中,但安全性会降低。
硬件辅助TC能够保证安全,免受强大的攻击者的攻击,例如那些完全控制系统的攻击者,例如,升级托管操作系统root权限的恶意用户。用户的信任植根于芯片,攻击者更难修改硬件功能。
TC 基于以下公认的功能:
- 可信启动,允许系统启动到已定义且受信任的配置。
- 密封存储,允许软件保留加密安全的秘密。
- Curtained Memory,将提供强大的内存隔离;其他进程(包括操作系统和调试器)无法读取的内存。
- 证明,允许受信任的设备向远程各方提供有关其正在运行的软件的可靠证据。
- 完整性测量,能够计算可执行代码、配置数据和其他系统状态信息的哈希值。
TC被用于不同的安全相关目的,从特权恶意软件实施的运行时攻击到数字版权管理(DRM)的保护。可信平台模块(TPM)与CPU在物理上是分开的,而在可信执行环境(TEE)的情况下,一切都集成在CPU中。
9.1. TPM -- 可信的 Platorm 模块
TPM 是 CPU 外部的专用芯片,旨在提供之前定义的 TC 功能的子集。
TPM 提供三种类型的 RoT。
- (i) 用于测量的RoT,即哈希算法的可信实现,负责平台上的第一次测量,无论是在启动时,还是为了将平台置于特殊的可信状态;
- (ii) 用于存储的 RoT,即一个或多个密钥的受信任的屏蔽位置实现,可能是存储根密钥 (SRK);
- (iii) 用于报告的 RoT,即受信任的屏蔽位置实现,以保存代表唯一平台身份的密钥,即认可密钥 (EK)。SRK 和 EK 都是 2048 位 RSA 公钥和私钥对,它们在制造时在芯片上随机创建。无法迁移或删除这些密钥。
图 3.TPM 安全性。
英特尔 TXT -- 可信执行技术
借助 TXT,英特尔芯片组旨在与之配合使用,包括:特殊的 TXT 寄存器、增强的架构、对 TPM 的受控访问。
英特尔 TXT 包括静态和动态 RoT 测量。静态信任链测量平台配置,动态信任链测量系统软件、软件配置和软件策略。
英特尔 TXT 附带对 TXT 硬件的软件支持,称为可信启动 (tboot)。这是一个可以添加到 Linux 发行版以启用各种 TXT 功能的软件包。
AMD PSP
Platform Security coProcessor (PSP) 是 AMD 基于 TPM 的解决方案。PSP 使用 ARM TrustZone 扩展作为 TPM 硬件。PSP 是集成到 AMD SoC 中的物理独立内核,具有专用 SRAM 和对加密协处理器 (CCP) 的专用访问。
PSP 提供不可变的硬件 RoT,可用作选择性地提供从硬件到操作系统的信任链的基础。CCP 引入了一个 RNG、多个加密引擎(如 AES、RSA 等)和一个密钥存储块。密钥存储块包含两个密钥存储区域:一个专用于存储可由特权软件使用但永远无法读取的系统密钥;另一个可以在正常操作期间通过在 PSP 或主操作系统上运行的软件加载、使用和逐出密钥。在启动期间,SoC 唯一密钥将分发到 CCP 系统密钥存储块。
9.2. TEE -- 可信执行环境
TEE 是连接设备主处理器的安全区域,可确保敏感数据在隔离且可信的环境中存储、处理和保护。因此,它可以针对特权操作系统环0中生成的软件攻击提供保护。TEE 是 CPU 芯片组上的一个区域,其工作方式类似于 TPM,但与芯片的其余部分没有物理隔离。它嵌入在 CPU 中,因此确保了对物理攻击(例如,总线嗅探或冷启动)的更高保护。此外,与 TPM 相比,TEE 提供了更广泛的 TC 功能。
ARM 信任区
TrustZone 是 ARM 提出的一种灵活的硬件辅助安全技术,通过区分安全和正常世界中的执行上下文来划分片上系统的硬件和软件资源。后者也被称为非安全世界。
这种分离是通过扩展的系统总线设计实现的,将所谓的非安全位添加到总线地址中。TrustZone Protection Controller 用于将资源配置为安全或非安全,而 TrustZone 地址空间控制器将内存区域分配给安全端或非安全端。在安全世界中,可以通过直接写入 CPSR 来额外进入监控模式。总的来说,支持 TrustZone 的处理器可以在五种模式之间切换,如图 4 和图 5 所示。切换世界时,必须保存切换世界的上下文。
图 4.ARM TrustZone 安全性。
图 5.ARM TrustZone 执行模式。
所谓的监控模式是一种机制,允许在虚拟处理器内核之间进行上下文切换或更好的世界切换。
从正常情况来看,监控模式可以通过三种例外进入:正常中断、触发定时器、输入设备等;外部中止,通常是内存错误;专用 SMC 指令的调用(图 6)。
图 6.英特尔 SGX 安全性。
英特尔 SGX -- 软件防护扩展
软件防护扩展 (SGX):一种基于"反向沙箱"机制的 TEE,其中敏感进程的地址空间在 CPU 级别受到保护,甚至针对操作系统。通过使用安全飞地来保护选定的代码和数据不被泄露或修改,即,其内容受到保护(通过加密和散列)免受飞地外部任何软件(包括特权软件)影响。只有 enclave 代码可以访问地址空间的任何部分,但属于其他 enclave 的区域除外。enclave 部分和非 enclave 部分之间的边界由处理器控制,该处理器阻止来自未经授权的进程的任何访问尝试。
增强了处理数据的安全性,例如在云中处理的数据。但是,这些敏感内容通过 Internet 到达云端。因此,新交所提供了一种机制,即远程证明(RA),它使服务提供商能够配置应用程序,并确信他们的秘密得到了适当的保护。RA的想法是通过第三个远程实体来证明在特定飞地中运行的软件的优点。此类 enclave 必须让另一个 enclave (与其通信) 相信它具有有效的度量哈希值,在安全环境中运行并且未被篡改。相互验证是使用处理器密钥执行的,该密钥只能通过称为 Quoting Enclave 的特殊 enclave 访问。远程证明服务通过执行 Diffie-Hellman 密钥交换在两个 enclave 之间构建安全通道。
AMD MET -- 内存加密技术
内存加密技术 (MET)是 AMD 最近发布的硬件辅助 TEE 解决方案,用于加密和保护系统内存。AMD MET 在 SoC 内部引入了 AES-128 加密引擎,当数据穿过 SoC 时,该引擎会透明地加密和解密数据。在MET中,AMD发布了两个主要的安全功能,即安全内存加密(SME)和安全加密虚拟化(SEV)。
SME 和 SEV 均由操作系统或虚拟机管理程序管理,无需更改应用程序软件。加密密钥管理(例如生成、存储和交付密钥)由 AMD 安全处理器执行,并且加密密钥对平台的不受信任部分隐藏。
SME 是用于面对物理攻击的安全机制。它使用由 AMD 安全处理器随机生成的加密密钥,并在启动时加载到内存控制器中以加密内存。访问敏感内存页面将定向到 AMD 内存加密引擎。在 SME 设计中,所有设备都可以通过 DMA 访问加密的内存页。
SEV 被认为通过提供加密的 VM 隔离来面对特权攻击。SEV 不需要更改用户遗留软件,即内存加密是透明的。SEV 利用内存加密引擎,负责对同一平台上的不同 VM 内存空间进行加密和解密。在 SEV 中,唯一的加密密钥与每个guest虚拟机相关联。当代码和数据到达 SoC 时,SEV 会在缓存中标记与guest VM 关联的所有代码和数据,并将访问权限限制为仅所有者。启动客户机时,必须先对其内存进行加密,然后才能在硬件中为此客户机启用 SEV。
9.3. 问题
对于 TPM,必须说这不是为了提供运行时保护而设计的,而只是为了提供启动时保护。也就是说,它可以防御代码注入等攻击。TPM 无法防止运行时攻击,例如攻击者在运行时更改内存中已有的代码的 CRA。此外,TPM 位于 CPU 外部,因此会受到总线嗅探攻击等硬件攻击。
关于 TEE,AMD SEV 和 Intel SGX 等技术解决方案已被证明容易受到微架构攻击,这些攻击可能会创建侧信道来窃取受保护的数据。Spectre 和 Meltdown 这两个名称代表了同一技术的不同变体,该技术利用现代 CPU 的推测执行来执行侧信道攻击并窃取敏感数据。AMD 和 Intel CPU 都受到 Spectre/Meltdown 的影响,可以利用它来获取其 TEE 中受保护的数据。
除了攻击风险外,SGX 或 TrustZone 等 TEE 还存在可用性问题。这些通常需要对软件进行多次更改,使其难以采用。如果不应用特定的代码修改,传统应用将无法轻松迁移到英特尔 SGX。英特尔 SGX 提供强大的安全保护,使其成为需要增强安全保护的应用的理想 TEE。相反,AMD MET 可实现透明保护。它适用于保护比 SGX 更复杂和遗留的应用程序。
SGX 最初旨在保护小型应用程序,但后来一些研究工作和公司开始将英特尔 SGX 用于更复杂的工作负载,例如企业级服务甚至公共云应用程序。IBM在其云产品中宣布,可以在IBM Cloud上的所有区域部署Intel SGX裸机服务器,以保护正在使用的数据。或者更多,Microsoft Azure提出了Azure Confidential Computing,它使用Intel SGX以透明的方式保护在云中处理的数据。甚至,阿里云也提出了一个云产品,其中使用SGX来确保数据使用中的安全性。
相反,AMD MET是专门为公有云环境而生的。在过去的几年里,许多供应商,如亚马逊、甲骨文、谷歌已经开始采用包含AMD MET技术的EPYC处理器。
TrustZone扩展在边缘设备中有许多应用。ARMv8-M 架构用于不同的嵌入式设备,其 TEE 对知识产权保护具有重要意义。设备制造商可以使用 ARMv8-M 的 TrustZone 将知识产权存储在安全内存中,同时仍然允许非安全应用程序通过 API 访问它。他们还使用它来安全存储关键信息,例如用户数据、身份信息和安全密钥。甚至保护与物联网网关的端到端通信。适用于 ARMv8-M 的 TrustZone 支持智能公用事业和智慧城市等市场中的可穿戴设备或电池供电的边缘节点等节能设备。
10. 结论
AMD、ARM,尤其是英特尔已经发布了许多硬件支持安全机制的产品。我们注意到,在过去几年中,公司已经推动了两类解决方案,即硬件辅助的可信计算和硬件辅助的指针违规预防。
图 7.硬件辅助安全解决方案涵盖的攻击。