TrustZone与Hypervisor

时间:2013-07-05 09:19:18

标签: security arm hypervisor trust-zone

我只是在 TrustZone 上阅读ARM的this document,有些事情我不清楚。

Hypervisor 提供特殊的CPU模式,而 TrustZone ,处理器附带 33位:Isn 't模式也是特定的位设置?那么如何在安全性方面做出更多改变呢?我确实理解额外的位为两个独立的32位地址间隔让路,但除此之外,我无法将两个和两个放在一起。有人可以清楚地解释为什么 TrustZone 比Hypervisor更安全吗?

2 个答案:

答案 0 :(得分:4)

典型的 Hypervisor 仅限于CPU。它不能防止其他 DMA主设备。有关详细信息,请参阅Wikipedia DMA Attack网页。其他攻击(例如Cold boot)需要其他机制(如zeroizable memory)来防止攻击。那就是 TrustZone 不是安全解决方案,而是其中很大一部分。由于ARM只是一个CPU,因此未指定控制其他 BUS Masters 的机制。除了 DMA Masters 之外,备用CPU还会对内存分区构成威胁。为了解决这个问题,一些辅助CPU可以识别 TrustZone 。即,他们将始终使用 NS 位( 33 rd )标记交易。

相比之下, Hypervisor 很少仅限于两个世界管理程序托管任意数量的操作系统。 TrustZone 只有两个世界;安全和正常。虽然每个 world 都可以拥有一个控制主管操作系统,但有许多单独的线程任务进程,因为操作系统允许。

DMA攻击说明:与硬件位相比,虚拟机管理程序通常使用CPU MMU 来限制软件访问。这并不妨碍替代的BUS Masters进入内存。如果Hypervisor受限软件可以控制单独的BUS主设备,那么它们可以获取要保护的内存。 DMA使用物理地址并通过MMU以及一般的 Hypervisor 保护。

DMA攻击通过使用CPU外部的内容来访问内存,从而绕过CPU保护。使用 TrustZone ,CPU中的保护是 NOT ,但是在BUS控制器中。请参阅:NIC301了解样本 ARM TrustZone CPU只允许CPU支持四种模式; 安全主管安全用户普通主管普通用户。普通ARM CPU仅支持用户 supervisor 用户模式下运行的虚拟机管理程序的所有托管操作系统分离;通常所有DMA外设都以 supervisor 特权运行,并且该值通常在SOC中进行硬编码。

答案 1 :(得分:2)

在英特尔和SystemMMU上使用IOMMU可以至少在国外范围内绕过ARM DMA攻击。基于TrustZone和基于管理程序的系统安全性之间的主要区别之一是,虚拟机管理程序通常通过修改CPU MMU和添加外围MMU(IOMMU,SystemMMU)来保护系统的页面粒度

在基于trustZone的系统中,每个单个事务(访问)被标记为安全或非安全(通过附加的总线地址线第33位),因此通常在处理器字大小级别提供更精细的粒度的安全性。