如题,正好看到有人问这个问题,所以来找专家咨询一下,谢谢
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...
希望上面的内容能回答您的问题
给Ethan同学点赞,谢谢