trust zone 学习

1. 系统模式切换

基于trust zone的系统有三种状态,安全状态、非安全状态以及用于二者切换的Monitor状态。

1. 非安全世界到Monitor模式的切换

    处理器从非安全世界进入 Monitor Mode 的操作由系统严格控制,而且所有这些操作在 Monitor Mode 看来都属于异常。从非安全世界到 Monitor Mode 的操作可通过以下方式触发:

     软件执行 SMC (Secure Monitor Call)指令

    Monitor Mode 内执行的代码依赖于具体的实现,其功能类似于进程切换,不同的是这里是不同模式间 CPU 状态切换。软件在 Monitor Mode 下先保存当前模式的状态,然后恢复下一个模式的状态。操作完成后以从异常返回的方式开始运行下一个模式的代码。

2. 为什么安全模式和非安全模式不能直接切换?

    非安模式无权访问 CP15 的 SCR 寄存器,所以无法通过设置NS来直接切换到安全模式,只能先转换到 Monitor Mode,再到安全模式。

     如果软件运行在安全模式(非Monitor Mode)下,通过将 CP15 的 NS 位设置 1,安全世界可以直接跳转到非安全世界,由于此时 CPU 的流水线和寄存器还遗留了安全世界的数据和设置,非安全模式下的应用可以获取到这些数据,会有极大的安全风险。因此,只建议在 Monitor Mode 下通过设置 NS 位来切换到非安全模式。

综上,安全世界和非安全世界不存在直接的切换,所有切换操作都通过 Monitor Mode 来执行。

2. 隔离机制

        除了 CPU 执行时实行安全世界和非安全世界的隔离外,AMBA3 AXI 总线提供了外设隔离的基础。

内存隔离机制

        这里的内存指外部的 DDR 和片上的 ROM 以及 SRAM,其隔离和保护通过总线组件 TZASC 和 TZMA 的设置来实现。

        TZASC (TrustZone Address Space Controller)可以把外部 DDR 分成多个区域,每个区域可以单独配置为安全或非安全区域,非安全的代码和应用只能访问非安全区域。TZASC 只能用于内存设备,不适合用于配置块设备,如 Nand Flash。

        TZMA (TrustZone Memory Adapter)可以把片上 ROM 和 SRAM 隔离出安全和非安全区域。TZMA 最大可以将片上存储的低 2MB 配置为安全区域,其余部分配置为非安全区域。大小划分上,片上安全区域可以在芯片出厂前设置为固定大小,或运行时通过 TZPC 动态配置。TZMA 使用上有些限制,其不适用于外部内存划分,而且也只能配置一个安全区域。

外设隔离机制

        外设上,基于 APB 总线的设备不支持 AXI 总线的 NS 控制信号,所以 AXI 到 APB 总线需要 AXI-to-APB bridge 设备连接,除此之外,还需要TZPC (TrustZone Protection Controller) 来向 APB 总线上的设备提供类似 AXI 上的 NS 控制信号。

        由于 TZPC 可以在运行时动态设置,这就决定了外设的安全特性是动态变化的,例如键盘平时可以作为非安全的输入设备,在输入密码时可以配置为安全设备,只允许安全模式访问。

隔离机制示意图

此图来源于网上,实际上 TZPC 还连接到片内的 ROM/RAM 设备上,用于配置片上存储的安全区域。

3. 安全启动

        AMBA3 AXI 总线机制隔离出安全世界和非安全世界,但这是系统启动之后的事情。如何确保系统本身是安全的呢?这就涉及到系统启动的过程。

        系统上电复位后,先从安全世界开始执行。安全世界会对非安全世界的 bootloader 进行验证,确保非安全世界执行的代码经过授权而没有被篡改过。然后非安全世界的 bootloader 会加载非安全世界的 OS,完成整个系统的启动。

        在非安全系统的 bootloader 加载 OS 时,仍然需要安全世界对 OS 的代码进行验证,确保没有被篡改。

图7是典型的 TrustZone 芯片的启动流程:

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值