我读过像这样的TrustZone安全白皮书文档。
它描述了所有的资源,如CPU,内存和其他资源被划分为安全的世界和正常的世界。正常世界的程序无法访问安全世界中的资源。您必须调用一个特殊的指令SMC从正常切换到安全的世界(通过监视器模式)。
我知道,像Linux这样的现代操作系统提供了内核模式和用户模式。用户进程不能访问位于内核空间的资源,只能调用系统调用。
我还知道x86的Ring0/1/2/3可以保护资源不受低权限级别进程的无效访问。
我的问题是ARM TrustZone的安全/正常世界和内核/用户模式之间有什么区别。或者TrustZone和x86的圈0/1/2/3有什么区别?
谢谢
编辑问题:在我的问题中用Ring0/1/2/3替换保护模式。
谢谢你的帮助。我花了一些时间来理解和阅读更多的文件。总之,TZ通过总线、外围设备和CPU上的NS位标志来隔离资源。
发布于 2014-12-08 18:06:28
这个问题可能已经在处理ARM信任区中得到了回答。
我的问题是ARM TrustZone的安全/正常世界和内核/用户模式之间有什么区别。或者TrustZone和x86的保护模式有什么区别?
您需要并行的x86特性可能是IOMMU。有一个DMA攻击可以侧移一个超级管理程序.您可以严格控制可以通过超级管理程序访问的外围设备.超级管理程序可以看作是允许操作系统在较低级别运行的代码.Ie,您可以在用户模式下运行Linux,而且许多事情都可以正常工作。如果没有硬件支持,需要重写mmu子系统.
DMA攻击的外部是使用不具有MMU检查的访问权限的外围DMA。因此,超级管理程序可能允许您更改帧缓冲区位置.然后,可以将帧缓冲区指向包含DRM键的物理内存。
IOMMU和TrustZone的区别在于保护的位置。维基百科绘图不显示总线控制器。使用IOMMU,将保护放置在DMA设备中。使用TrustZone,每个DMA主站和从站都有访问权限(就像管理程序中的MMU )。TrustZone仅限于安全或normal。安全外围设备只能由安全的主访问;主要么是CPU,要么是执行DMA的设备。
某些引导代码必须配置(并可能锁定)从权限和主权限。这种保护存在于总线控制器中。TrustZone的ARM CPU部分只是指CPU是否会在安全或正常的世界中运行;人们阅读CPU文档,并假设它不是完整的。
通常,DMA主机(例如以太网控制器、USB控制器、LCD控制器)有一组CPU配置的从寄存器。然后,这些从寄存器指示DMA机器代表CPU执行一些内存活动。如果我们有一个正常的DMA主机(例如以太网),那么该设备的外围寄存器也应该是正常的(我们不能设置某个DRM密钥的TCP/IP传输)。因此,TrustZone是一种将总线划分为安全和正常世界的机制。保护实际上是在CPU之外完成的。ARM CPU支持只允许代码通过monitior模式动态切换世界。
旁白:很明显,我刚买的AMD CPU含有一个TrustZone的皮质-A5。我认为这是UEFI基础设施的一部分。我喜欢把我的新CPU看作是一个四核x86,帮助ARM ;)
关于x86的概念,据说英特尔的TXT和SGX可以与这篇题为TrustZone的ASU论文解释了媲美。
https://stackoverflow.com/questions/27360019
复制相似问题