在处理 ARM Trust-zone时可能已经回答了这个问题。
我的问题是 ARM TrustZone 的安全/正常世界和内核/用户模式有什么区别。或者 TrustZone 和 x86 的保护模式有什么区别?
您需要并行的 x86 功能可能是IOMMU。有一种DMA 攻击可以绕过管理程序。您可以严格控制可以通过管理程序访问的外围设备。可以将管理程序视为让操作系统在较低级别模式下运行的代码。即,您可以在用户模式下运行 Linux,并且许多事情都可以正常运行。如果没有硬件支持,则需要重新编写mmu子系统。
DMA 攻击的出局是使用没有 MMU 检查访问权限的外设 DMA。因此,管理程序可能允许您更改帧缓冲区位置。然后,您可以将帧缓冲区指向一些包含 DRM 密钥的物理内存。
IOMMU和 TrustZone的区别在于保护的位置。维基百科绘图未显示总线控制器。使用IOMMU,保护位于 DMA 设备中。使用 TrustZone,每个 DMA 主机和从机都具有访问权限(就像管理程序中的 MMU)。TrustZone 仅限于安全或正常。安全外围设备只能由安全主机访问;主机是CPU 或执行 DMA 的设备。
一些引导代码必须配置(并且可能锁定)从属和主控权限。保护存在于总线控制器中。TrustZone 的 ARM CPU 部分只是 CPU 会指示它是在安全世界还是正常世界中运行;人们阅读 CPU 文档并假设它是完整的故事,而事实并非如此。
通常,DMA 主机(想想以太网控制器、USB 控制器、LCD 控制器)有一组 CPU 配置的从机寄存器。然后这些从寄存器指示 DMA 机器代表 CPU 执行一些内存活动。如果我们有一个正常的DMA 主机(比如以太网),那么该设备的外围寄存器也应该是正常的(我们无法设置某些 DRM 密钥的 TCP/IP 传输)。所以 TrustZone 是一种将总线划分为安全和正常世界的机制。保护实际上是在 CPU 之外完成的。ARM CPU 支持仅允许代码通过监控模式动态切换世界。
旁白:显然我刚买的 AMD CPU包含一个带有 TrustZone 的 Cortex-A5。我认为它是 UEFI 基础设施的一部分。我喜欢将我的新 CPU 视为辅助 ARM 的四核 x86 ;)
关于 x86 概念,这篇题为“TrustZone 解释”的 ASU 论文称 Intel TXT 和 SGX 具有可比性。