处理ARM TrustZones

Pra*_*ran 29 arm linux-kernel trustzone

ARM有一个名为TrustZone的东西.根据ARM文档,它提供了一个进程可以在安全/非安全世界中运行.

  1. 安全/非安全世界意味着什么.它与处理器执行模式有关,还是与设置内存区域或其他内容的权限有关.
  2. ARM的7种操作模式与安全/非安全世界之间是否存在任何关系.
  3. 如何在ARM中启用TrustZone.
  4. 从哪个版本的ARM引入.
  5. 是否必须使用此TrustZone.Linux内核是否使用此TrustZone扩展.

请帮助我理解这一点.

uni*_*urf 32

http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/index.html是一个非常好的介绍性文档,概述了一些有点过于复杂的内容,无法令人满意地解释通过在文本框中键入.但我会尝试回答下面的直接问题.

  1. 它指的是与执行模式正交的附加权限选项.Secure world能够将内存访问标记为安全,但也可以进行非安全访问.普通世界只能进行非安全访问.此外,某些处理器配置选项仅可供Secure world访问.目的是在一个简单的环境中隔离安全软件,在这种环境中,安全软件不能(直接)容易受到设备主操作系统或应用软件中软件漏洞的攻击.
  2. 没有,除了它增加一个额外的"监视"模式.此监控模式用于正常和安全世界之间的"上下文切换".
  3. TrustZone未启用,它已实现(或未实现).
  4. TrustZone在ARM体系结构版本6的安全扩展中引入.支持它的第一个处理器是ARM​​1176.所有Cortex-A处理器都支持它.
  5. "否",虽然因为支持TrustZone的处理器在开机时开始执行安全状态,但如果引导加载程序不做任何改变安全状态的事情,则所有软件都将作为安全运行(消除任何安全性好处).不,TrustZone环境明确地旨在与您的操作系统一起运行,而不是直接集成到它中.对于某些平台,Linux内核执行安全监视器调用以请求Secure world更改某些系统配置选项.

  • @kumar他的回答是正确的.原因是*secure*是*特权*,所以不知道*TrustZone*的代码仍然可以在没有任何修改的情况下运行(即Linux内核,VxWorks等).为了托管*普通世界*,您需要*安全世界*中的某些东西来托管它.所以默认情况下运行在*secure world*; 在某些设备上,SOC启动代码会自动切换到*normal world*,但启动代码必须配置*normal world*才能运行操作系统. (2认同)

art*_*ise 18

为了补充UnixSmurfs的答案,

安全/非安全世界意味着什么.它与处理器执行模式有关,还是与设置内存区域或其他内容的权限有关.

主要与内存区域有关.所有TrustZone兼容设备都将使用NS位标记AXI总线访问.此位指定访问是来自安全还是正常的世界.通过这种方式,甚至可以隔离在正常世界控制下的DMA外围设备.

ARM的7种操作模式与安全/非安全世界之间是否存在任何关系.

并不是的.然而,世界之间存在称为监控模式,显然它是最强大的一群. 监控模式安全正常世界之间的经纪人.它可以访问普通的世界 CP15寄存器,同时仍然具有安全世界的系统存储器视图(将该NS位推为0).

如何在ARM中启用TrustZone.

启用是一个有点过载的单词.正如unixsmurf所指出的,它内置于CPU中.默认情况下,启用TrustZone的 CPU将在安全的环境中启动.如果你什么也不做,你可能会忘记CPU是否支持TrustZone.只有通过建立一个正常的世界并对其进行控制,才能使用TrustZone ; 可能这是你的意思是由什么.

从哪个版本的ARM引入.

有两种口味:

  1. TrustZone兼容.
  2. TrustZone已启用.

TrustZone安全白皮书的第4.2节回答了这个问题.所述ARM1176JZ(F)-S,Cortex-A8的,皮质-A9,的Cortex-A9-MPCore的的Cortex-A5支持TrustZone的.所述 ARM1156T2(F)-S皮质-R4是兼容的; 它们可以是系统中的第二个核心.随着新核心的开发,它们可能会被添加到列表中; 这个问题是一个动人的目标.

是否必须使用此TrustZone.Linux内核是否使用此TrustZone扩展.

这不是强制性的.Linux内核可以扮演两个角色; 安全正常的世界.有关使用TrustZoneLinux的一些信息,请参阅svc-handler-to-smc-call.

有些事情没有回答UnixSmurf暗示的事情; 您必须确保所有BUS主设备从设备都适当地知道NS位.该信息不在 CPU信息范围内,涉及BUS仲裁员 ; 另一个像书本的话题.

请参阅:PRD29-GENC-009492C
         ARM TrustZone作为嵌入式系统中的虚拟化技术
         使用ARM TrustZone ARM可信固件的可信计算构建块