Trustzone硬件架构详解
扫描二维码
随时随地手机看文章
一、硬件架构
1、AXI总线
(1)通过系统总线的NS位保护,为1表示Non-Secure,为0代表Secure
(2)通过AXI-to-APB bridge保护外设安全,安全的连接外设
(3)内存混叠:cache增加了一个tag位,标志着Secure和Non-Secure,由32位地址扩充到33位地址(要注意保持数据的连贯性),数据分两份分别保存在Secure和Non-Secure中,在修改的时候要注意保持数据的一致。
2、处理器架构
2.1 世界切换:
(1) 用时间片划分的方式使用两个虚拟内核,通过monitor mode进行切换。
(2) 通过SMC指令、IRQ、FIQ或者异常(需要配置)进入monitor mode
(3) Monitor用于保存上下文,恢复被切换的世界
(4) 除非位于monitor,否则CP15中的SCR中的NS位标志着world。当位于monitor mode时,都是处于安全世界,但是当NS为1时,可以接受normal world的数据。
(5) 如果在Secure模式中把NS置为1,将会变为normal模式,使得normal看见secure中的敏感数据(不建议)。
2.2 L1高速缓存系统:
(1) L1 memory中最主要的部分是MMU,对两个世界的虚拟地址进行映射,分别独立。
(2) Non-Secure在进行地址映射时,忽略NS位(因为它只能读取到NS=1的数据),Secure选择一个memory进行读取,这使得secure可以读取到Non-Secure世界和Secure世界的数据。
(3) 为了快速转换世界,在TLB上标记了入口,不同世界执行不同路径,切换世界之后不用重置TLB。
(4) Cache上加了一个tag位,可动态改变,Cache动态更新时,Secure和Non-Secure可以任意驱逐。
(5) Non-Secure和Secure通过World-shared memory共享数据,使得可以不用重置cache。
(6) TCM:紧耦合内存,和Cache功能差不多,程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然TCM永远不会被踢出主存储器,因此,他会有一个被用户预设的性能,而不是象cache那样是统计特性的性能提高。 TCM对于以下几种情况的代码是非常有用、也是需要的:可预见的实时处理(中断处理)、时间可预见(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代码(编解码功能)。它有两个独立块,可以分别分给Secure和Non-Secure,也可以分别独立控制。
(7) ACP:加速一致性接口,允许过程化语言对CPU存储空间的一致性访问,是AXI的衍生接口。ACP代表着处理器处理外部(可选),使ARM处理器中Cache层次定位到外设,减少了对Cache的清理,改善了与外设共享信息的软件的执行速度,如DMA。
(8) AXI衍生系统通过ARIDMx、AWIDMx区分processor内部处理和以ACP为代表的外部处理。
2.3 安全中断:
(1) 允许对安全中断进行灵活的配置,安全中断不能被normal世界复制,建议用IRQ进入normal world,用FIQ进入secure world,如果处理器正在使用正确的内核,那么monitor不用切换世界。
(2) 为了防止恶意软件掩盖安全世界的敏感中断,CP15中有一个配置寄存器,防止更改F(FIQ mask)位和A(external abort mask)位,这个控制寄存器只能被Secure world接触。
(3) 有三个额外的中断表,分别代表Normal world、Monitor、Secure world。
(4) Secure world的基地址使用VINITHI重置,未维护的话是0x00000000,否则就是0xFFFF0000
(5) 各个向量表可以在运行时变化,通过VBAR实现。
(6) V位可以控制搞地质向量能否被使用,如果设置了V位,处理器异常总是从staring(0xFFFF0000)开始,V位是堆积的,是得Normal world和Secure可以独立配置向量表,而Monitor异常表总是被明确定义在MVBAR中。
(7) 各种配置选项被当作是敏感数据,只有Secure可以修改,Normal只能read,而设置是非敏感的,可以被任意世界加载,使得各个世界可以独立控制。有一些只有安全世界可以修改的全局配置,但是可以影响Norma world。尤其是在一些低级硬件中,比如Cache lockdown,合法的软件在normal world中执行时需要的很少或者不用改变。
(8) ARM可以支持多处理器(1-4),可选SMP和AMP模式,都需要维护数据一致性。多处理器系统一般有ACP,每个世界都有Secure和Normal,通过MMU进行独立控制。
(9) 一个明确的软件回喜安智安全世界的并发执行,减少安全风险,一致性硬件会使用Cache tag,要Secure和Norma保持一致。
(10) SCU(侦测控制单元)中有一个决定自己配置的配置寄存器,SCU中的ACR决定哪个处理器可以改变SCU配置寄存器以及是否可以重新编制。
(11) TrustZone-aware允许处理Secure和Non-secure中断,禁止非安全内存读取或修改安全中断配置,当一个中断被配置为安全世界的中断,Non-secure就不能修改配置了,安全世界中断的优先级大于normal中断,防止Secure使用中断时被normal world攻击。
(12) 只产生FIQ和IRQ中断,其他中断可以被配置为FIQ和IRQ。
2.4 调试架构:
分处理器调试和系统调试,debug control signal可以配置为全局允许或不允许,但是debug需要很多资源,为了防止被攻击,建议全局不允许。
(1) 处理器中断可以分别独立控制为SPIDEN、SPNIDEN、SUIDEN、SUNIDE,具体见3-17。
(2) 全局调试允许信号,DBGEN/NIDEN,着可以使核的可视化调试不可用,包括normal world的调试。
(3) 多处理器系统中,各个处理器独立控制,在SMP模式下,侵略性debug处理器可以修改不可侵略debug处理器的数据。
(4) 执行分析:CP15中有一个执行监视器,在运行时间对代码计时和对处理器事件计数,如Cache的调入调出。
(5) System debug用的是ARM CoreSight和跟踪技术,CoreSight不用标准的AXI-to-APB,它需要接受Non-secure内存事物。
(6) Debug模式会使normal直接影响secure和monitor。