TrustZone 与虚拟机管理程序

use*_*152 4 security arm hypervisor trustzone

我刚刚在TrustZone上阅读ARM 的这份文档,有些事情我不清楚。

事实上,Hypervisor提供了一种特殊的 CPU 模式,并且对于TrustZone来说,处理器附带了一个额外的第 33 位:模式不是也是一个特定的位设置吗?那么,额外的一点是如何在安全性方面产生如此大的差异的呢?我确实知道额外的位可以为两个单独的 32 位地址空间让路,但除此之外,我无法将两个和两个放在一起。有人可以清楚地解释为什么TrustZone比 Hypervisor 更安全吗?

art*_*ise 6

典型的虚拟机管理程序仅限于 CPU。它不能防止其他DMA 主设备的攻击。有关详细信息,请参阅 Wikipedia DMA Attack网页。其他攻击(例如冷启动)需要其他机制(例如可清零内存)来防止利用。也就是说,TrustZone不是一个完整的安全解决方案,而是其中的一个重要部分。由于 ARM 只是一个 CPU,因此控制其他BUS Master 的机制未指定。除了DMA Master之外,备用 CPU 也会对内存分区构成威胁。为了解决这个问题,一些辅助 CPU 可以识别TrustZone。即,他们总是用NS位(第33来标记交易。

相比之下,虚拟机管理程序很少局限于两个世界虚拟机管理程序托管任意数量的操作系统。 TrustZone只有两个世界;安全且正常。尽管每个世界都可以有一个控制主管操作系统,并且在操作系统允许的情况下具有许多单独的线程任务进程。

DMA 攻击解释:与硬件位相比,Hypervisor通常使用 CPU MMU来限制软件访问。这不会阻止替代总线主控器访问内存。如果管理程序受限软件可以控制单独的总线主设备,那么它们就可以获取要保护的内存。DMA 使用物理地址并绕过 MMU 等常规管理程序保护。

DMA攻击通过使用 CPU 外部的东西访问内存来绕过 CPU 保护。使用TrustZone时,保护不在CPU 中,而是在总线控制器中。请参阅:NIC301示例 ARM TrustZone CPU 仅允许 CPU 支持四种模式;安全管理员安全用户普通管理员普通用户。普通的 ARM CPU 仅支持用户管理员分离,虚拟机管理程序的所有托管操作系统都在用户模式下运行;通常,所有 DMA 外设都以管理员特权运行,并且该值通常硬编码在 SOC 中。


更新:原来的问题不包括 IOMMU。

类型 优点
泰兹 总线开关,减轻主控和外设的负担
高压 无 DMA 缓解,单主控 (CPU)
IOMMU IOMMU 是一种从属缓解措施,需要更新“世界切换”

Hypervisor + IOMMU 可以完成一些针对 DMA 攻击的防护。然而,这意味着在“世界切换”上,IOMMU 表必须更新。这将防止针对该外设的 DMA 攻击。每个需要这种保护的外设都需要 IOMMU。

在某些情况下,“正常世界”设备可能会访问安全设备以执行“安全操作”。例如,请求在不访问密钥的情况下解密数据。

Hypervisor + IOMMU并不等同于信任区。Trustzone 受总线矩阵保护,包括所有外设和主设备。大师可以处于任一世界状态;即,在多CPU系统上,一个可以正常,另一个可以安全。意义计算可以在两者上进行。HV+IOMMU方案相当于抢占式多任务。当系统进入该模式时,必须切换 IOMMU。

同样,TZ 的弱点是仅支持两个“世界”。HV+IOMMU 可以支持多个“访客”。