汽车信息安全--如何理解TrustZone(1)

devtools/2024/9/25 1:47:53/

目录

TrustZone-toc" style="margin-left:0px;">1.车规MCU少见TrustZone

TrustZone-toc" style="margin-left:0px;">2. 什么是TrustZone

TrustZone%E9%9A%94%E7%A6%BB%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F-toc" style="margin-left:40px;">2.1 TrustZone隔离了什么?

2.2 处理器寄存器和异常处理

3.小结


TrustZone">1.车规MCU少见TrustZone

在车规MCU里,谈到信息安全大家想到的大多可能都是御三家的HSM方案:英飞凌的HSM\SHE+、瑞萨的ICU、恩智浦的HSE/CSE,这些都被称为HTA(Hardware Trust Anchors)。

这三家的MCU架构里,Host和HSM分别有自己独立的CPU、密码算法硬件加速器、独占Flash等,如下图:

而当我Review Vector培训材料时,发现了以前经常听到但没有深入研究过的TrustZone也被当做了HTA:

 那么什么是TrustZone?它与HSM区别在哪里?今天就通过Cortex-M33来分析一下。

TrustZone">2. 什么是TrustZone

根据Arm官方介绍,TrustZone最先是Arm A核的一种安全架构的统称,它在SOC系统级别提供硬件隔离机制将系统分成了两个运行环境:TEE(Trusted Execution Environment)和REE( Rich Execution Environment):

在REE中,通常执行复杂且功能丰富的应用软件,意味着其攻击面广,更易遭受网络攻击;在TEE中通常为REE提供授信服务,例如加解密、密钥管理等等,这与HSM/SHE的理念比较相似。

后来随着IoT的发展,M核的处理器也提出了相应的信息安全需求,所以TrustZone在ARM V8-M中作为Security Extension被引入。

TrustZone%E9%9A%94%E7%A6%BB%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F">2.1 TrustZone隔离了什么?

在Armv8-M架构下引入安全扩展后,从CPU、到系统外设资源再到访问方式上都做了隔离和新的设计。

从内核角度来看,与安全扩展相关的组件包括Processor Core、SAU、SMPU和NSMPU、BusMatrix,总结如下图:

对于Processor Core的运行状态,引入了Non-Secure和Secure状态:

SAU用于定义和识别存储器地址的安全区域和非安全区域,在Secure和Non-Secure状态下分别有各自的MPU

通常情况下,CPU进行数据访问时,根据当前内核运行处于安全或非安全,从而索引到SMPU或者NSMPU的配置,如下图:

当CPU取指时,通过SAU中配置的目标地址安全属性,从而索引到SMPU或者NSMPU,如下:

既然内核、SAU和MPU有Secure和Non-Secure之分,那么在存储器、外设等属性上也应该有该分类。在M33里使用了AMBA5 AHB5,该总线携带安全、非安全访问标记,可实现安全和为安全的访问,因此,在芯片设计之初,从内核到芯片级别的完整硬件隔离机制可按如下示例实现:

2.2 处理器寄存器和异常处理

当安全扩展引入后,处理器分为了Secure和Non-Secure两种状态,因此对应状态的寄存器相应也有变化。如下图所示:

  • R0-R12:Secure和Non-Secure状态共用一套;
  • SP:包含MSP(Main)和PSP(Process)(针对Handler和Thread Mode),在不同状态下有两组Banked寄存器,后缀为S、NS;
  • PSPLIM、MSPLIM:新增寄存器,用于限制MSP和PSP堆栈,在不同状态各有一套;

同样的,在异常也可以被指定为Secure和Non-Secure。那么从软件角度来看,中断向量表也需要分为安全和非安全两个,如下图:

可以看到,Secure和Non-Secure都有各自的Handler,有些中断是Banked,但也有些异常是只有Secure才有,如SecureFault。

需要注意的是,所有外设中断上电默认都指向Secure 向量表,但是我们可以在Secure状态运行的代码里修改权限,将外设指向Non-Secure向量表。

3.小结

本文讲解了什么是Trustzone,下文我们继续讲解与HSM的区别、


http://www.ppmy.cn/devtools/16423.html

相关文章

XTuner微调LLM:1.8、多模态和Agent-作业四

本次课程由XTuner 贡献者李剑锋、汪周谦、王群老师讲解【XTuner 微调 LLM:1.8B、多模态和 Agent】课程。分别是: 微调理论讲解及 XTuner 介绍XTuner 微调小助手个人认知实战XTuner 微调 llava 图片理解多模态模型实战 课程视频:https://b23…

vscode 创建代码模版

在vscode中快捷创建代码模版 1.在VSCode中,按下Ctrl Shift P(Windows/Linux)或Cmd Shift P(Mac)打开命令面板。 2.然后输入"Preferences: Configure User Snippets"并选择该选项。打开一个json文件用户…

GaussianCube:使用最优传输构造高斯溅射用于3D生成建模

GaussianCube: Structuring Gaussian Splatting using Optimal Transport for 3D Generative Modeling GaussianCube:使用最优传输构造高斯溅射用于3D生成建模 Bowen Zhang1⁣*    Yiji Cheng2⁣*   Jiaolong Yang3   Chunyu Wang3 张博文 1⁣* 程一季 2⁣* …

Dockerfil 构建上下文 build -f 选项 加快构建速度

理解构建上下文(Build Context) 当运行 docker build 命令时,当前工作目录被称为构建上下文,docker本身会将工作目录里面所有的文件都上传给docker daemon,在这个基础之上再去构建容器镜像。(如果你在根目…

Nginx下载安装,什么是nginx,什么是反向代理,Windows下、linux下安装nginx(保姆级教程)

文章目录 一、Nginx简介为什么要使用NginxNginx的特点Nginx的相关概念正向代理反向代理动静分离负载均衡 二、Nginx安装1. Windows安装2. Linux安装 一、Nginx简介 Nginx 是一个高性能的 HTTP(静态资源服务器) 和 反向代理 Web 服务器。 为什么要使用N…

【学习笔记之vue】idealTree:appsite: sill idealTree buildDeps

当拷贝一个新的vue项目,下载库的时候发现卡在idealTree:appsite: sill idealTree buildDeps不动了怎么办? 下面熟悉一下命令 清除npm的缓存:npm cache verify 切换下载源命令(新):npm config set registry…

USB设备的音频类UAC

一、UAC简介 UAC(USB Audio Class)是USB设备的音频类,它定义了USB音频设备与主机计算机通信的方式。UAC标准是USB规范的一部分,并受到各种操作系统(包括Windows、macOS和Linux)的支持。 UAC是基于libusb,实…

Golang实现一个批量自动化执行树莓派指令的软件(4)上传

简介 话接上篇 Golang实现一个批量自动化执行树莓派指令的软件(3)下载 , 继续实现上传 环境描述 运行环境: Windows, 基于Golang, 暂时没有使用什么不可跨平台接口, 理论上支持Linux/MacOS 目标终端:树莓派DebianOS(主…