我正在阅读ARM关于TrustZone的文档this document,但是有些内容不太清楚。
虚拟机监控程序(Hypervisor)提供了特殊的CPU模式,而对于TrustZone,处理器额外增加了一个 33位 :难道模式不也是特定的位设置吗?那么额外的一位如何在安全方面产生区别呢?我确实理解这个额外的位为两个独立的32位地址空间腾出位置,但除此之外我无法将它与其他信息联系起来。有人能清楚地解释TrustZone为什么比虚拟机监控程序更安全吗?
我正在阅读ARM关于TrustZone的文档this document,但是有些内容不太清楚。
虚拟机监控程序(Hypervisor)提供了特殊的CPU模式,而对于TrustZone,处理器额外增加了一个 33位 :难道模式不也是特定的位设置吗?那么额外的一位如何在安全方面产生区别呢?我确实理解这个额外的位为两个独立的32位地址空间腾出位置,但除此之外我无法将它与其他信息联系起来。有人能清楚地解释TrustZone为什么比虚拟机监控程序更安全吗?
更新:原始问题中未包括IOMMU。
类型 | 优点 |
---|---|
TZ | 总线开关,缓解主设备和外围设备的影响 |
HV | 没有DMA缓解,单主设备(CPU) |
IOMMU | IOMMU是从设备缓解,需要在“world switch”时进行更新 |
虚拟机监视程序+IOMMU可以防范一些DMA攻击。但是,这意味着在“world switch”时必须更新IOMMU表。这将防止针对该外围设备的DMA攻击。每个需要此保护的外围设备都需要一个IOMMU。
可能存在这样的情况:普通世界设备可能会访问安全设备以执行“安全操作”。例如,请求解密数据而无需访问密钥。
“hypervisor + IOMMU”不等同于Trustzone。Trustzone是通过总线矩阵保护,包括所有外设和主控器。主控器可以处于任何世界状态;例如,在多CPU系统上,一个可以处于正常状态,另一个可以处于安全状态。这意味着计算可以在两个状态下进行。HV+IOMMU解决方案相当于抢占式多任务处理。在进入该模式时,必须切换IOMMU。再次强调,TZ的弱点在于只支持两个“worlds”。HV+IOMMU可以支持多个“guests”。