醉枕江山大袋鼠 · 2020年03月23日

Arm的Trustzone是怎样保证硬件安全的?

如题,正好看到有人问这个问题,所以来找专家咨询一下,谢谢

2 个回答 得票排序 · 时间排序
Asher · 2020年03月23日

Hi

这个问题比较泛,如果能问的细化一些,可能会回答的更准确,假设您的问题时TrustZone是如何实现硬件隔离,来保证系统的安全性?

TrustZone是系统级的安全方案,其中Armv7-A,Armv8-A,以及Armv8-M上都支持TrustZone,但是具体实现都有差异,下面我们以Armv8.2-A为例来解释。

首先Armv8-A的CPU支持4个Exception level,EL0,EL1,EL2和EL3,CPU有两个安全状态,其中EL0和EL1分别有安全状态和非安全状态,EL2只有非安全状态,EL3只有安全状态,当CPU运行在非安全状态时只能发出非安全的访问,当CPU运行在安全状态时可以结合MMU来发出安全访问或非安全访问。

MMU也支持安全特性,在安全和非安全切换时,修改指向页表的寄存器,可以简单实现在安全状态和非安全状态下分别各自的页表配置,同事页表里面有个NSbit来执行对应内存的安全属性。

GIC也支持安全特性,例如GICv2时,可以对中断进行分组,安全中断配置到Group0,非安全配置都配置到Group 1,其中Group0的中断可以配置成FIQ,Group 1只能配置成IRQ,来区分中断是给安全世界还是非安全世界。

Bus也支持安全特性,例如AXI总线支持TrustZone,其中有个bit来标识安全access还是非安全access,来区别访问的安全特性。

内存和外设不一定支持安全特性,如果支持TrustZone的话,可以直接相应Bus的安全标识来做出相应的回应,如果不支持的话会,一般会加个安全的过滤器来支持安全特性。

安全调试也是重要的一部分,架构上支持安全特性有4个信号来却分调试的权限,例如及时在debug状态下,也没办法调试安全世界。

也需要软件的配合,其中大部分公司都支持TF-M,https://git.trustedfirmware.o...

更多资料可以参考社区资料

Arm的TrustZone, CryptoCell, 以及Cryptoisland到底什么关系?
https://aijishu.com/a/1060000...

Cortex-A和Cortex-M之间的差异:
https://aijishu.com/a/1060000...

希望上面的内容能回答您的问题

醉枕江山大袋鼠 · 2020年03月23日

给Ethan同学点赞,谢谢

你的回答