ARM TrustZone的安全/普通世界与OS的内核/用户模式或x86的Ring0/1/2/3?

KyL*_*KyL 2 security embedded arm trustzone

我阅读了像TrustZone Security白皮书这样的文档.

它描述了所有资源,如CPU,内存和其他资源被安全世界普通世界划分.普通世界中的程序无法访问Secure World中的资源.你必须调用一个特殊的instrustion SMC来从Normal转换到Secure世界(通过Monitor Mode).

据我所知,像Linux这样的现代操作系统提供了内核模式用户模式.用户进程无法访问位于内核空间中的资源,但会调用系统调用.

我也知道x86的Ring0/1/2/3可以保护资源免受来自较低权限级别进程的无效访问.

我的问题是ARM TrustZone的Secure/Normal World内核/用户模式之间的区别是什么.或者TrustZone和x86的ring0/1/2/3有什么区别?

谢谢

编辑问题:在我的问题中用Ring0/1/2/3替换保护模式.


谢谢你的帮助.我花了一些时间来理解和阅读更多文档.总结,TZ通过总线,外设和CPU上的NS位标志提供资源绝缘.

Not*_*hat 8

你在这里混淆了三件完全不同的东西.

内核模式/用户模式是关于执行权限:x86使用"环"的术语,而ARM具有烘焙到其处理器模式的权限级别 - 您可以在环3和USR模式之间绘制粗略的并行,以及环0和SVC模式(显然,建筑差异意味着它真的没有那么直接了.

内存保护是一个不同的概念,涉及将硬件用螺栓固定到CPU以限制其内存和MMIO访问定义的映射,否则引发故障(这样可以进一步开发,如需求分页的虚拟内存).在这方面,x86上的"保护模式"与"实模式"几乎相当于打开或关闭MMU/MPU.显然,将这​​个想法与第一个想法相结合是很有意义的,允许特权/非特权内存的概念,但x86架构及其进化遗产使人工强大的耦合 - 在ARM上你仍然拥有MMU时的所有处理器模式已关闭.

另一方面,TrustZone是关于整个不同级别的安全性和身份验证- 在系统供应商/运营商和用户之间.在x86系统中,你通常可能有东西像安全密钥存储或引导验证硬件TPM -任何主处理器可以访问不能被认为是安全的,因为用户可能会替换运行有任何软件(正常执行特权机制不因为帮助用户只需将整个内核切换为恶意内核即可.TrustZone的重点在于整个系统的硬件支持,可实现在"正常"系统之上安全处理器/内存/外设的虚拟化,而不需要为其提供额外的硬件.例如,你可以简单地分隔出的RAM块作为物理*从正常的世界不可访问,并实施了"TPM"纯粹作为验证安全世界中的软件甚至最有特权的正常世界中的代码不能干扰.

在x86世界中,您应该将英特尔的可信执行技术视为最接近的相关事物,它解决了(在给定外部TPM支持的情况下)在ARM SoC中使用TrustZone的一些用例.请注意,这不是直接的比较 - TXT的以CPU为中心的特性意味着它实际上只是一个安全的启动解决方案.TrustZone的是全系统的,更重要基石-你可以建立一个安全的启动解决方案和/或在其上的TPM,但你可以建立之类的终端到终端的安全内容的路径,一个CPU为中心的方法简单地不能.

*请注意,从软件的角度来看,我的意思是"物理" - 即它是在硬件中,如果正确实施,没有什么软件可以解决它.TrustZone显然不是一个真正的物理安全解决方案 - 它不会,也不打算提供任何保护,以防止确定的人从芯片中取出封装并直接探测芯片.