文章目录
- 介绍
- ARM Trustzone的安全扩展简介
- 1.1 AXI AxPROT 介绍
- 1.1.1 AXI 对 Trustzone的支持
介绍
ARMv8 架构中的AXI(Advanced eXtensible Interface)总线与NS(Non-Secure)位密切相关。NS位是指在ARM TrustZone安全扩展中定义的一种状态,用于区分安全和非安全的处理器执行环境。AXI总线可以通过NS位来实现安全和非安全处理器之间的隔离和通信。具体来说,AXI总线上的每个事务都包括一个NS位,用于指示该事务所属的处理器执行环境。当一个非安全处理器向一个安全设备发起事务时,该事务的NS位应该设置为非安全。如果一个安全处理器向一个非安全设备发起事务,该事务的NS位也应该设置为非安全。通过这种方式,AXI总线可以实现安全和非安全处理器之间的数据传输和通信,确保系统的安全性和可靠性。
— 来自ChatGPT
ARM Trustzone的安全扩展简介
ARM Trustzone 不具体指一个硬件,也不是一个软件,而是一个技术架构,在支持ARM Trustzone的SOC中,需按照ARM Trustzone技术对各个子模块进行设计。如下便展示了一个SOC的Trustzone架构下的设计框图
其中:
- AMBA-AXI 总线的扩展, 增加了标志 secure 读和写地址线:
AWPROT[1]
和ARPROT[1]
- Processor 的扩展(或者说master的扩展),在ARM Core内部增加了SCR.NS比特位,这样ARM Core发起的操作就可以被标记“是以secure身份发起的访问,还是以non-secure身份发起的访问”;
- TZPC 扩展,在AXI-TO-APB端增加了 TZPC,用于配置 apb controller 的权限(或者叫secure controller),例如将efuse(OTP Fuse)配置成安全属性后,那么Processor 以 non-secure 发起的访问将会被拒绝,非法的访问将会返回给 AXI 总线一个错误;
- TZASC扩展,在DDRC(DMC)之上增加一个memory filter,现在一般都是使用 TZC400,它的作用一般就是配置DDR的权限, 如果配置了DDR中某块 region 为安全属性,那么 Processor 以 non-secure 发起的访问将会被拒绝;
- MMU/Cache对安全扩展的支持
在软件架构的设计中,分为:- Non-secure EL0&1 Transslation Regime
- Secure EL0&1 Transslation Regime,
即normal world和secure world侧使用不同的Transslation Regime,其实就是使用不同的 TTBRx_ELn寄存器,使用不同得页表。
注意:- 在armv7上,TTBRx_EL0、TTBRx_EL1是banked by Security State,也就是说在安全世界和非安全世界各有一组这样的寄存器,所以在linux和tee中可以各自维护一张自己的内存页表.
- 在armv8/armv9上,TTBRx_EL0、TTBRx_EL1不再是banked了,但是world switch时会在ATF中switch cpu context, 所以从hypervisror或os的视角来看,依然还是两套不同的TTBRx_ELn寄存器,linux和tee各有各的页表。
- 在TLB中,又为每一个entry增加了Non-secure属性位,即标记当前翻译出的物理地址是secure还是non-secure;
- cache 的扩展:在 cache 的 entry 中的 TAG 中,有一个 NON-Secure Identifier 标记为,表示当前缓存数据的物理地址是属于non-secure还是secure。
- GIC 对安全扩展的支持,在gicv2、gicv3的版本中,都增加了对安全扩展的支持. 以gicv3为例,将中断划分成了group0、secure group1和non-secure group1. 在软件的配置下,group0和secure group1的中断将不会target到REE(linux)中处理
1.1 AXI AxPROT 介绍
AXI(Advanced eXtensible Interface)总线中的AxPROT是一种保护机制,用于控制总线上的访问权限。具体来说,AxPROT可以用于指示一个事务的访问类型和访问权限,包括读/写访问、特权/非特权访问、安全/非安全访问等。为了阻止恶意程序越权访问的关键外设,AXI 协议设计了访问控制信号 AxPROT,配合其他安全机制,限定不同应用的访问权限。
需要注意的是,AxPROT的具体功能和配置可能会因芯片型号和厂商而有所不同,具体细节需要参考相应的处理器手册和AXI规格书。
此外,协议规定 AxLOCK、AxPROT 信号是不可改变的。
1.1.1 AXI 对 Trustzone的支持
读写事务的 AxPROT 信号位宽均为 3 比特,
ARPROT[2:0]
和 AWPROT[2:0]
分别是读通道和写通道中的关于权限的信号,例如它们中的 BIT[1] 则分别表示正是进行secure身份的读或secure身份的写操作。
推荐阅读:
https://blog.csdn.net/weixin_42135087/article/details/109272384