- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读this document来自 TrustZone 上的 ARM,有些事情我不清楚。
事实上,Hypervisor 提供了一种特殊的 CPU 模式,并且对于 TrustZone,处理器附带了一个额外的第 33 位:模式不也是一个特定的位设置吗?那么,额外的一点是如何在安全性方面产生如此大的差异的呢?我确实知道额外的位可以为两个单独的 32 位地址空间让路,但除此之外,我无法将两个和两个放在一起。有人可以清楚地解释为什么 TrustZone 比虚拟机管理程序更安全吗?
最佳答案
典型的管理程序仅限于CPU。它不能防止其他 DMA 主设备。请参阅维基百科 DMA Attack网页了解更多相关信息。其他攻击,例如Cold boot ,需要其他机制如zeroizable memory以防止剥削。也就是说,TrustZone 不是一个全部安全解决方案,而是其中的一个重要部分。由于ARM只是一个CPU,因此控制其他BUS Master的机制未指定。除了DMA Master之外,备用CPU也对内存分区构成威胁。为了解决这个问题,一些辅助 CPU 可以识别 TrustZone。即,他们总是使用 NS 位(33rd 位)来标记交易。
相比之下,虚拟机管理程序很少局限于两个世界。 管理程序托管任意数量的操作系统。 TrustZone 只有两个世界;安全且正常。尽管每个世界可以有一个控制监督者操作系统,具有许多独立的线程、任务或进程 在操作系统允许的情况下。
DMA 攻击解释:与硬件位相比,管理程序通常使用 CPU MMU 来限制软件访问。这不会阻止替代总线主控器访问内存。如果管理程序受限软件可以控制单独的总线主设备,那么它们就可以获取要保护的内存。 DMA 使用物理地址并绕过 MMU 和一般虚拟机管理程序保护。
DMA 攻击通过使用 CPU 外部的东西访问内存来规避 CPU 保护。通过TrustZone,保护不在 CPU 中,而是在总线 Controller 中。请参阅:NIC301举个例子 ARM TrustZone CPU 仅允许 CPU 支持四种模式; 安全主管、安全用户、普通主管和普通用户。普通的 ARM CPU 仅支持用户和管理程序分离,并且管理程序的所有托管操作系统都在用户模式下运行;通常,所有 DMA 外设都以管理程序特权运行,并且该值通常硬编码在 SOC 中。
<小时/>更新:原始问题不包括 IOMMU。
Hypervisor + IOMMU 可以完成一些针对 DMA 攻击的防护。然而,这意味着在“世界切换”上,IOMMU 表必须更新。这将防止针对该外设的 DMA 攻击。每个需要这种保护的外设都需要 IOMMU。
在某些情况下,“正常世界”设备可能会访问安全设备以执行“安全操作”。例如,请求在不访问 key 的情况下解密数据。
管理程序 + IOMMU 并不等同于信任区域。 Trustzone 受总线矩阵保护,包括所有外设和主设备。大师可以处于任一世界状态;即,在多CPU系统上,一个可以正常,另一个可以安全。意义计算可以在两者上进行。 HV+IOMMU方案相当于抢占式多任务。当系统进入该模式时,必须切换 IOMMU。
同样,TZ 的弱点是仅支持两个“世界”。 HV+IOMMU 可以支持多个“ guest ”。
关于security - TrustZone 与虚拟机管理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17485367/
假设有这样一段代码。 MOV [0x1234], EAX (intel assembly) 假设 CPU 要处理这条指令。假设没有管理程序。我们只是在 linux 环境中使用普通的 x86 CPU(保
我尝试在 Linux 上按照这篇文章安装英特尔硬件辅助虚拟化(管理程序): How to Start Intel Hardware-assisted Virtualization (hyperviso
我是一名优秀的程序员,十分优秀!