4

我阅读了类似TrustZone Security Whitepaper的文档。

它描述了所有资源,如 CPU、内存等,都被Secure WorldNormal World划分。Normal World 中的程序无法访问 Secure World 中的资源。你必须调用一个特殊的委托 SMC 从正常世界切换到安全世界(通过监控模式)。

据我所知,像 Linux 这样的现代操作系统提供了Kernel ModeUser Mode。用户进程不能访问位于内核空间的资源,但可以调用系统调用。

我也知道 x86 的Ring0/1/2/3可以保护资源免受来自较低权限级别进程的无效访问。

我的问题是 ARM TrustZone 的Secure/Normal Worldkernel/user mode有什么区别。或者 TrustZone 和 x86 的 ring0/1/2/3 有什么区别?

谢谢

编辑问题:在我的问题中用Ring0/1/2/3替换保护模式。


谢谢你的帮助。我花了一些时间来理解和阅读更多的文件。总结,TZ 通过总线、外设和 CPU 上的 NS 位标志提供资源隔离。

4

2 回答 2

9

你在这里混淆了 3 种完全不同的东西。

内核模式/用户模式与执行权限有关:x86 使用“环”的术语,而 ARM 的处理器模式具有特权级别 - 您可以在环 3 和 USR 模式、环 0 和 SVC 模式之间画出一个粗略的平行关系(显然,架构差异意味着它远没有那么简单)。

内存保护是一个不同的概念,涉及将硬件连接到 CPU 以限制其内存和 MMIO 访问在定义的映射内,否则会引发故障(然后可以进一步开发,如按需分页虚拟内存)。在这方面,x86 上的“保护模式”与“实模式”几乎等同于打开或关闭 MMU/MPU。显然,将这​​个想法与第一个想法结合起来是很有意义的,以允许特权/非特权内存的概念,但是 x86 架构及其进化遗产使得这种耦合人为地强 - 在 ARM 上,当 MMU 时,您仍然拥有所有处理器模式已关闭。

另一方面,TrustZone 是关于完全不同级别的安全和身份验证- 在系统供应商/运营商和用户之间。在 x86 系统上,您通常可能有一个硬件 TPM,用于安全密钥存储或启动验证等 - 主处理器可以访问的任何内容都不能被认为是安全的,因为用户可以替换在那里运行的任何软件(正常的执行权限机制没有帮助,因为用户可以简单地将整个内核切换为恶意内核)。TrustZone 的重点是整个系统的硬件支持这使得虚拟化可以在“正常”系统之上保护处理器/内存/外围设备,而不是需要为其塞入大量额外的硬件。例如,您可以简单地将一块 RAM 分区,使其在物理上*无法从正常世界访问,并将“TPM”纯粹作为经过验证的安全世界软件,即使是最高特权的正常世界代码也无法干扰。

在 x86 世界中,您应该将英特尔的可信执行技术视为最相关的东西,它解决了(在外部 TPM 支持的情况下)在 ARM SoC 中使用 TrustZone 的一些用例。请注意,这不是直接比较——TXT 以 CPU 为中心的性质意味着它实际上只是一个安全启动解决方案。TrustZone 是系统范围的,更像是一个基本构建块 - 您可以在其上构建安全启动解决方案和/或 TPM,但您也可以构建诸如端到端安全内容路径之类的东西,这是一种以 CPU 为中心的方法不能。

* 请注意,从软件的角度来看,我的意思是“物理”——即它在硬件中,如果正确实施,软件无法绕过它。TrustZone 显然不是一个实际的物理安全解决方案——它没有也无意提供任何保护,以防止有决心的人从芯片上取下包装并直接探测硅片。

于 2014-12-08T15:38:42.253 回答
1

在处理 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 具有可比性。

于 2014-12-08T18:06:28.673 回答