ARM系列之ARM Trustzone 技术浅析(二)——— ARMv7-A Processor modes registers 的安全扩展
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 进程需要访问某安全资源举例,简要说明一下切换流程:
- App 通过 syscall svc 指令进入Kernel space OS(SVC mode);
- Kernel space OS 通过 smc 指令进入 monitor mode;
- 运行在 Monitor mode 的代码首先保存 Non-secure 状态下的 CPU contexts,如 lr,sp,spsr
等等,然后将 CPU NS bit 置为 0,表示进入 secure state,通过 rfe 指令(return from
exception)进入 secure OS; - secure OS 叫起 secure application 处理完相应的安全资源访问请求之后,发送 smc 指令,再次回到 monitor mode;
- 运行在 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 的安全扩展相关推荐
- ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析
ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...
- ARM系列之ARM 平台安全架构PSA 浅析
ARM系列之RM 平台安全架构PSA 浅析 1.背景 2.PSA安全认证 2.1 什么是PSA? 2.2 功能性 API 认证 2.3 PSA安全认证(待完善) 3.专用的开源安全固件代码 1.背景 ...
- ARM系列之ARM多核指令WFE、WFI、SEV原理
目录 前言 使用场景概述 WFE.SEV 与 WFI 的作用与工作原理 SEV WFE WFI The Event Register WFE伪代码 WFE wake-up events WFI伪代码 ...
- STUN和TURN技术浅析(二)
1.2 RFC5389/STUN STUN协议在RFC5389中被重新命名为Session Traversal Utilities for NAT,即NAT会话穿透效用.在这里,NAT会话穿 ...
- Armv8-R系列之ARM Cortex-R52 由来
ARM系列之ARM Cortex-R52 由来 Cortex-R52的工作原理 Cortex-R52 是 Cortex-R 系列中最先进的处理器,可提供实时功能安全性能. 作为第一款 Armv8-R ...
- 12. Arm 动态 Trustzone 技术介绍
源自 李平: 十多年来,TrustZone 一直在成功保护基于 Arm 的设备上的媒体管道.在此期间,这些设备的要求随着比特率.分辨率.帧速率.图像质量和用户界面的创新而显着增长.所有这些都在推动最初 ...
- Arm技术文档全集合(含AMBA总线,Cortex-A,Contex-M,Cortex-R系列处理器,Arm体系结构,Arm服务器,Mali GPU,Keil 开发等PDF下载)
在这里可以下载到所有Arm技术方面的文档,我们已经为大家归类好资料,方便大家学习!持续更新中,大家可点击右下角的收藏图标收藏本帖,如果大家有补充,欢迎评论~ 首发极术社区 Cortex-A系列处理器 ...
- [trustzone]-ARM trustzone技术下常见的软件框图
文章目录 常用软件框图 1.Trustzone技术下常用软件框图 2.指纹TEE采集数据的框图 3.locksetting框架 4.gatekeeper框架 5.生物认证框架 6.keymaster框 ...
- 片上总线协议学习(1)——SiFive的TileLink与ARM系列总线的概述与对比
link 片上总线协议学习(1)--SiFive的TileLink与ARM系列总线的概述与对比 finally 27 人赞同了该文章 一.背景介绍 随着超大规模集成电路的迅速发展,半导体工业进入深亚微 ...
最新文章
- 2007.04.26
- STE:中科院微生物所胡松年组揭示一年内医院ICU环境菌群的生物多样性
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用48
- Java未被捕获的异常
- mysql all_同样是MySQL的all privileges有啥不同?
- os如何读取图片_CV:基于face库利用cv2调用摄像头根据人脸图片实现找人
- 数据挖掘 股价预测_股票成交量很低,但股价跌得快,说明了什么?(此文无价)...
- qt msvc编译中文乱码解决
- width:100%以什么为基准的测试
- Log4j 2.x使用遇到的问题
- 图形变换之旋转变换公式推导
- 怎么看rx580是不是470刷的_rx580显卡怎么看是不是矿卡 rx580显卡怎么看是不是刷的...
- codeup21158 循环比赛日程表
- 用jquery获取tbody下的第一个tr的最后一个td里面的第一个a标签
- javascript内置函数是什么
- 【泡泡机器人公开课】公开课链接 机器人俱乐部
- Git工作原理_繁星漫天_新浪博客
- 【imessage苹果家庭推群发推送】软件安装iMessage海内镜像 export
- OpenGL学习笔记(二)
- easymock 图片_用easymock来mock数据
热门文章
- 详述Redis持久化方式
- hdu 1874 (flory)
- .net core桌面_适用于Windows桌面的.NET Core 3
- python学习之Flask框架(二)
- 亚马逊、temu、速卖通、国际站卖家如何利用好测评补单这张王牌?
- DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC ;功能聚乙二醇化试剂
- Windows10+UBUNTU-18.04 -20.04完整新手安装教程
- 颜色渐变、#16进制转RGB颜色(转Int)
- ko是什么意思_Ko是什么意思
- 使用扩展方法对代码的行为进行封装的例子:封装UIElement的“拖动”