ARM系列之ARM Trustzone 技术浅析(二)

  • Processor modes
  • Registers

ARM 引入 Trustzone 技术,最重要的改动就是 CPU 架构的调整。ARM trustzone security whitepaper 中对 Processor 的介绍是基于 ARMv7。为了支持 Trustzone,CPU 架构的调整包括了很多部分,翻开 Cortex-A7 Technical Reference Manual 关于 Security Extensions 的介绍零散分布在各个章节。我觉得比较重要的有:Processor modes & registers;Exception & Interrupt handling;MMU;Cache。本文介绍 Processor modes & registers 相关的 security extensions。

Processor modes

ARMv6 之前的 Processor 有 6 种 privilege mode:FIQ,IRQ,Supervisor(SVC),Abort(ABT),Undefined(UND),System(SYS),以及一种 non-privilege mode:User(USR)。引入 Trustzone 之后,CPU core 被虚拟出 secure state 和 non-secure state,那么很自然就需要一个能够切换两种 state 的开关,由此在 7 种 CPU mode 之外,新增了 monitor(MON)mode,如下图所示:
也就是说 secure world 和 normal world 的切换需要CPU 先进入 monitor mode。与 userspace 通过 svc 指令可以从 USR mode 切换到 SVC mode 类似,ARM 也提供了一条可以进入 monitor mode 的软中断指令: smc。需要说明的是 monitor mode 也是一种 secure state,下图是通过 monitor mode 切换 secure 和 normal world 的示意图:

以 userspace application 进程需要访问某安全资源举例,简要说明一下切换流程:

  1. App 通过 syscall svc 指令进入Kernel space OS(SVC mode);
  2. Kernel space OS 通过 smc 指令进入 monitor mode;
  3. 运行在 Monitor mode 的代码首先保存 Non-secure 状态下的 CPU contexts,如 lr,sp,spsr
    等等,然后将 CPU NS bit 置为 0,表示进入 secure state,通过 rfe 指令(return from
    exception)进入 secure OS;
  4. secure OS 叫起 secure application 处理完相应的安全资源访问请求之后,发送 smc 指令,再次回到 monitor mode;
  5. 运行在 Monitor mode 的代码同样首先保存 secure 状态下的 CPU contexts,如 lr,sp,spsr
    等等,然后将 CPU NS bit 置为 1,表示进入 non-secure state,然后恢复 Non-secure state下的
    CPU contexts,通过 rfe 指令(reture from exception)重新回到 non-secure OS;

tips:由于 monitor mode 也是一种 secure state,所以 monitor mode 部分的代码一般会跟 secure OS 和 App 的 binary 打包在一起,很少会有独立的 binary。

除了 smc 指令触发的software exception 会进入 monitor mode,也可以配置某些硬件中断触发进入 monitor mode,如 FIQ,IRQ,external data abort,external prefetch abort。都可以通过配置 system register 来决定哪些 hardware exception 可以触发 cpu 陷入 monitor mode。这部分会留在 exception handling 和 GIC 的章节介绍,接下来先介绍一下 security extension 相关的寄存器。

Registers

首先介绍一下 banked registers 的概念。我们最熟悉的 32位 CPU 寄存器就是通用寄存器 R0 - R15。其中 R13 - R15 有特殊含义,分别表示 sp,lr 和 pc。在不同的 CPU mode 下,sp,lr 的值是不同的,在切换 cpu mode 前后必须保存和恢复 sp 和 lr 的信息,才能保证代码的正常运行,所有这些名字相同但根据cpu mode 不同值不同的寄存器就是 banked register,也可以理解为常说的 cpu contexts。常用的 banked registers 如下:
HYP mode 是 ARM 为虚拟化扩展引入的 Hypervisor mode,与 Trustzone 无关,不再细说。

另外还有一类寄存器为 CP15 协处理器,主要用于系统配置,例如配置异常向量表,开关MMU 等等,一般 OS 初始化的代码都会首先配置这些寄存器。CP15 寄存器的读写有特定指令,在 32位 OS 中一般使用 mrc 指令读,mcr指令写,根据读写不同的寄存器有规定读写语句格式如下:

MRC p15, Op1, Rt, CRn, CRm, Op2 ; //read a CP15 register into an ARM register
MCR p15, Op1, Rt, CRn, CRm, Op2 ; //write a CP15 register from an ARM register

下面简单介绍一下与 security extension 相关两个重要的寄存器:

以上寄存器只能在 secure state 下才能修改。

tips: SCR 的 ns bit 虽然 secure OS 也能修改,但一般只会在 CPU 处于 monitor mode 才会修改。这是因为一旦 ns bit 置为 1,系统就会立马切换到 non-secure,此时 pipeline 中缓存的 secure state 下运行的指令,以及 data register 中保存的 secure data 会变成 non-secure 可见,会影响安全性。所以硬件虽然支持 secure OS 修改 ns bit,但软件上通常并不会在 secure OS 中直接操作 ns bit!

ARM系列之ARM Trustzone 技术浅析(二)——— ARMv7-A Processor modes registers 的安全扩展相关推荐

  1. ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析

    ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...

  2. ARM系列之ARM 平台安全架构PSA 浅析

    ARM系列之RM 平台安全架构PSA 浅析 1.背景 2.PSA安全认证 2.1 什么是PSA? 2.2 功能性 API 认证 2.3 PSA安全认证(待完善) 3.专用的开源安全固件代码 1.背景 ...

  3. ARM系列之ARM多核指令WFE、WFI、SEV原理

    目录 前言 使用场景概述 WFE.SEV 与 WFI 的作用与工作原理 SEV WFE WFI The Event Register WFE伪代码 WFE wake-up events WFI伪代码 ...

  4. STUN和TURN技术浅析(二)

    1.2      RFC5389/STUN STUN协议在RFC5389中被重新命名为Session Traversal Utilities for NAT,即NAT会话穿透效用.在这里,NAT会话穿 ...

  5. Armv8-R系列之ARM Cortex-R52 由来

    ARM系列之ARM Cortex-R52 由来 Cortex-R52的工作原理 Cortex-R52 是 Cortex-R 系列中最先进的处理器,可提供实时功能安全性能. 作为第一款 Armv8-R ...

  6. 12. Arm 动态 Trustzone 技术介绍

    源自 李平: 十多年来,TrustZone 一直在成功保护基于 Arm 的设备上的媒体管道.在此期间,这些设备的要求随着比特率.分辨率.帧速率.图像质量和用户界面的创新而显着增长.所有这些都在推动最初 ...

  7. Arm技术文档全集合(含AMBA总线,Cortex-A,Contex-M,Cortex-R系列处理器,Arm体系结构,Arm服务器,Mali GPU,Keil 开发等PDF下载)

    在这里可以下载到所有Arm技术方面的文档,我们已经为大家归类好资料,方便大家学习!持续更新中,大家可点击右下角的收藏图标收藏本帖,如果大家有补充,欢迎评论~ 首发极术社区 Cortex-A系列处理器 ...

  8. [trustzone]-ARM trustzone技术下常见的软件框图

    文章目录 常用软件框图 1.Trustzone技术下常用软件框图 2.指纹TEE采集数据的框图 3.locksetting框架 4.gatekeeper框架 5.生物认证框架 6.keymaster框 ...

  9. 片上总线协议学习(1)——SiFive的TileLink与ARM系列总线的概述与对比

    link 片上总线协议学习(1)--SiFive的TileLink与ARM系列总线的概述与对比 finally 27 人赞同了该文章 一.背景介绍 随着超大规模集成电路的迅速发展,半导体工业进入深亚微 ...

最新文章

  1. 2007.04.26
  2. STE:中科院微生物所胡松年组揭示一年内医院ICU环境菌群的生物多样性
  3. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用48
  4. Java未被捕获的异常
  5. mysql all_同样是MySQL的all privileges有啥不同?
  6. os如何读取图片_CV:基于face库利用cv2调用摄像头根据人脸图片实现找人
  7. 数据挖掘 股价预测_股票成交量很低,但股价跌得快,说明了什么?(此文无价)...
  8. qt msvc编译中文乱码解决
  9. width:100%以什么为基准的测试
  10. Log4j 2.x使用遇到的问题
  11. 图形变换之旋转变换公式推导
  12. 怎么看rx580是不是470刷的_rx580显卡怎么看是不是矿卡 rx580显卡怎么看是不是刷的...
  13. codeup21158 循环比赛日程表
  14. 用jquery获取tbody下的第一个tr的最后一个td里面的第一个a标签
  15. javascript内置函数是什么
  16. 【泡泡机器人公开课】公开课链接 机器人俱乐部
  17. Git工作原理_繁星漫天_新浪博客
  18. 【imessage苹果家庭推群发推送】软件安装iMessage海内镜像 export
  19. OpenGL学习笔记(二)
  20. easymock 图片_用easymock来mock数据

热门文章

  1. 详述Redis持久化方式
  2. hdu 1874 (flory)
  3. .net core桌面_适用于Windows桌面的.NET Core 3
  4. python学习之Flask框架(二)
  5. 亚马逊、temu、速卖通、国际站卖家如何利用好测评补单这张王牌?
  6. DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC ;功能聚乙二醇化试剂
  7. Windows10+UBUNTU-18.04 -20.04完整新手安装教程
  8. 颜色渐变、#16进制转RGB颜色(转Int)
  9. ko是什么意思_Ko是什么意思
  10. 使用扩展方法对代码的行为进行封装的例子:封装UIElement的“拖动”