《learn_the_architecture_-_trustzone_for_aarch64_102418_0101_03_en》学习笔记

1.TrustZone是Arm A-profile架构中安全架构的名称。TrustZone首次在Armv6K中引入,Armv7-A和Armv8-A也支持。TrustZone提供两个执行环境,它们之间具有系统范围的硬件强制隔离。在Arm架构中,有两种安全状态:安全和非安全。在EL0、EL1和EL2处,处理器可以处于安全状态或非安全状态,这由SCR_EL3.NS位控制(该位为0则位于安全状态,为1则位于非安全状态)。无论SCR_EL3.NS位的值如何,EL3始终处于安全状态。

2.如果PE 处于NS(Non-secure)状态并且想要移至S(secure)状态,其必须通过EL3,包括修改SCR_EL3.NS位,保存和恢复相关寄存器:

Trusted Firmware提供了安全监控器的参考实现,部分寄存器根据处理器的安全状态有两个副本,分别用于安全状态(S)和非安全状态(NS)。处理器会根据当前状态自动选择相应的寄存器副本,例如用于中断抢占控制的ICC_BPR1_EL1寄存器,是否拥有两个副本在处理器的架构参考手册中会明确指出。(S)和(NS)用于区分不同安全状态下的寄存器版本,如ICC_BPR1_EL1 (S)和ICC_BPR1_EL1 (NS)。

3.在ARM架构中,存在针对安全状态(Secure)和非安全状态(Non-secure)不同的地址转换机制(translation regimes),例如S.EL1:0x8000 和 NS.EL1:0x8000 是两个不同且独立的虚拟地址。在非安全状态下,虚拟地址始终转换为非安全物理地址。这意味着处于非安全状态的软件只能看到非安全资源,而永远看不到安全资源。如下所示:

在安全状态下,软件可以访问安全和非安全物理地址空间。转换表条目中的NS位控制虚拟内存块或页转换到哪个物理地址空间,如下图所示:

与虚拟地址一样,通常使用前缀来标识所引用的地址空间。对于物理地址,这些前缀是NP:和SP:,如NP: 0x8000表示非安全物理地址空间中的地址0x8000,SP:0x8000表示安全物理地址空间中的地址0x8000。安全和非安全是不同的地址空间,而不仅仅是可读或可写等属性,即NP:0x8000和SP:0x8000是不同的内存位置,并且被处理器视为不同的内存位置。

4.当软件在EL1或EL2发出TLB失效指令(TLBI)时,操作会针对当前的安全状态。例如,如果在安全状态下发出TLBI ALLE1指令(这个指令使所有EL1级别的TLB条目失效,因为是安全状态下发出,则只会使S状态条目失效),这将使与S.EL0/1翻译机制相关的所有缓存条目失效,S代表安全状态。EL3始终处于安全状态,无论SCR_EL3.NS位的状态如何。虽然在EL0/1/2特权级中,SCR_EL3.NS位控制处理器处于安全状态还是非安全状态,但在EL3中,这个位控制的是TLB失效操作针对的是哪个安全状态的缓存条目。因此,当在EL3执行TLBI操作时,SCR_EL3.NS位决定操作作用于安全状态的缓存条目还是非安全状态的缓存条目。

5.SMC指令即Secure Monitor Call,它是ARM架构中用于进行安全监控调用的指令,主要用于在非安全世界和安全世界之间进行通信。EL0无法特权下无法使用SMC指令。

6.Armv7-A中首次引入虚拟化时,仅在非安全状态下添加虚拟化。在Armv8.3之前,Armv8也是如此,如下图所示:

Armv8.4-A开始在安全状态下引入对EL2的支持,支持S.EL2时,可以通过SCR_EL3.EEL2 位来启用或禁用S.EL2。支持S.EL2的架构如下图所示:

7.在ARM处理器中,总线安全访问表示对安全物理地址空间的访问,而总线非安全访问则指对非安全地址空间的访问。在安全状态下,软件可以访问两种地址空间,表明总线访问的安全性与处理器的安全状态不一定相同。使用AMBA AXI和ACE协议时,AxPROT[1]信号用于指示正在访问的地址空间,0表示安全空间,1表示非安全空间。系统理论上可拥有两个独立的内存系统,但通常情况下,物理地址空间作为属性控制对不同设备的访问。设备分为两类:TrustZone感知设备(如通用中断控制器GIC)会根据安全访问呈现不同的中断视图;而非TrustZone感知设备(如定时器)则不利用访问的安全性,只能是安全或非安全其中之一。

8.TrustZone Address Space Controller(TZASC)是一种硬件组件,用于在ARM TrustZone架构中管理安全(Secure)和非安全(Non-secure)内存区域。它能够有效地将内存划分为不同区域,确保安全和非安全世界之间的数据隔离,防止未授权访问。控制TZASC的寄存器仅限安全访问,仅允许安全软件对内存进行分区。

9.通用中断控制器 (GIC) 支持 TrustZone,每个中断源(在 GIC 规范中称为 INTID)被分配给三个组之一:Secure Group0主要用于处理底层系统管理功能的安全中断,由EL3固件负责,表示为FIQ。Secure Group1则用于处理其他安全中断源,通常由S.EL1或S.EL2软件处理,以IRQ或FIQ表示。Non-secure Group1则负责处理来自非安全环境的中断,以IRQ或FIQ表示。中断的分配和控制是通过软件在安全状态下对特定寄存器(GIC[D|R]_IGROUPR<n>和GIC[D|R]_IGRPMODR<n>)进行配置,安全中断只能通过安全总线修改,而非安全中断则可以通过安全和非安全总线进行修改。安全组的中断只能在安全状态下处理,非安全组的中断只能在非安全状态下处理。产生中断时,如果对应中断的INTID属于Secure Group 0,则产生FIQ中断,必须陷入EL3进行处理;如果属于Secure Group 1,且当前PE处于EL3以下的安全状态则产生IRQ中断,如果当前PE处于EL3以下的不安全状态则产生FIQ中断;如果属于Non-secure Group 1,且当前PE处于EL3以下的安全状态则产生FIQ中断,如果当前PE处于EL3以下的不安全状态则产生IRQ中断。而若当前PE处于EL3,则产生的中断必定是FIQ。综上所述,如果产生的是FIQ中断则必须陷入EL3,然后在EL3处理或者在EL3切换安全状态后再返回后处理。

10.OP-TEE(Open Portable Trusted Execution Environment)是一个开源的可信执行环境(TEE)解决方案,专门为Arm架构设计。它提供了一种安全的平台,能够运行受信任的应用程序和服务,确保在执行敏感操作时的安全性和机密性。如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel | 空格分隔的行怎么导入excel?

准备工作&#xff1a;windows&#xff0c;一个记事本程序和微软的Excel软件。 打开记事本&#xff0c;选中所有内容&#xff0c;按CtrlA全选&#xff0c;然后复制(CtrlC)。 在Excel中&#xff0c;定位到你想粘贴的单元格&#xff0c;按CtrlV进行粘贴。粘贴后&#xff0c;你会在…

南京观海微电子----GH7009国宇测试盒使用

1. SPI接线 针对7009&#xff1a; 2. 国宇上位机代码准备 在主函数首尾两端加入IO2时序控制的代码、以及国语SPI有效位控制的代码&#xff08;请注意7009和其他700x使用的有效位控制不一致&#xff0c;需要用哪一款加入哪一行即可&#xff09;&#xff1a; 三、国宇SPI读的使…

Arduino Uno简介与使用方法

目录 一、Arduino Uno概述 1. 硬件特性 2. 开发环境 二、Arduino Uno的基本使用方法 1. 硬件连接 2. 软件编程 三、Arduino Uno编程基础 1. 基本语法 2. 常用函数 四、Arduino Uno应用举例 1. LED闪烁 2. 温度检测 3. 超声波测距 五、Arduino Uno的扩展与应用 1…

使用命令行管理git项目

# 初始化一个新的Git仓库 git init # 添加文件到暂存区 git add <file> # 提交暂存区的更改到仓库 git commit -m "commit message" # 查看当前仓库的状态 git status # 查看提交历史 git log # 查看文件的改动 git diff <file> # 创建一个新…

网络安全的学习与实践经验(附资料合集)

学习资源 在线学习平台&#xff1a; Hack This Site&#xff1a;提供从初学者到高级难度的挑战任务&#xff0c;适合练习各种网络安全技术。XCTF_OJ&#xff1a;由XCTF组委会开发的免费在线网络安全网站&#xff0c;提供丰富的培训材料和资源。SecurityTube&#xff1a;提供丰…

基于STM32的热带鱼缸控制系统的设计

文章目录 一、热带鱼缸控制系统1.题目要求2.思路3.电路仿真3.1 未仿真3.2 开始仿真&#xff0c;显示屏显示水温、浑浊度、光照强度等值3.3 当水温低于阈值&#xff0c;开启加热并声光报警3.4 当浑浊度高于阈值&#xff0c;开启自动换水并声光报警3.5 当光照低于阈值&#xff0c…

【DevOps】Jenkins项目发布

Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…

SSM-SpringMVC

目录 “为什么要学 SpringMVC&#xff1f;它和 Servlet 是什么关系&#xff1f;” “什么是异步&#xff1f;为什么异步交互中常用 JSON 格式&#xff1f;异步请求和 JSON 如何配合&#xff1f;” 一、概述 SpringMVC主要负责 1 SpringMVC的常用组件 2 SpringMVC的工作流程…

基层医联体医院患者历史检验检查数据的快速Python编程分析

​​​​​​​ 一、引言 1.1 研究背景与意义 在当今数字化医疗时代,医疗数据呈爆炸式增长,涵盖患者的基本信息、病史、检验检查结果、治疗方案等各个维度。这些海量且复杂的数据蕴含着巨大价值,为精准医疗决策提供了关键依据。通过对患者历史检验检查数据的深入对比分析…

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标&#xff1a;  网络应用的 原理&#xff1a;网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例&#xff1a;互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…

Fabric环境部署-Git和Node安装

一.安装Git&#xff08;v2.43.0&#xff09; Git 是一个开源的分布式版本管理系统&#xff08;也是全球最大的开源软件存储服务器&#xff09;&#xff0c;用于敏捷高效地处理任何或小或大的项目。搭建区块链需要使用Git&#xff0c;因为区块链的开发和部署需要使用版本控制工…

SAP MM物料管理模块常见BAPI函数清单

【SAP系统研究】 #SAP #MM #物料管理 #函数 #BAPI 1、物料主数据 BAPI_MATERIAL_SAVEDATA 创建/更改物料主数据 BAPI_MATERIAL_SAVEREPLICA 物料主数据视图扩充 BAPI_MATERIAL_EXISTENCECHECK 检查物料主数据是否存在 BAPI_MATERIAL_GETLIST 显示物料主数据明细 BAPI_MATERIALG…

Windows11安装Oracle11g以及plsqldev工具连接配置

文章目录 一、安装Oracle数据库软件二、配置数据库三、配置监听&#xff08;listener.ora&#xff09;四、本地网络服务名配置&#xff08;tnsnames.ora&#xff09;五、网络服务名配置以及监听文件路径六、plsqldev工具连接Oracle配置 一、安装Oracle数据库软件 点击“setup.…

unity学习6:unity的3D项目的基本界面和菜单

目录 1 unity界面的基本认识 1.1 file 文件 1.2 edit 编辑/操作 1.3 Assets 1.4 gameobject 游戏对象 1.5 组件 1.6 windows 2 这些部分之间的关系 2.1 关联1&#xff1a; Assets & Project 2.2 关联2&#xff1a;gameobject & component 2.3 关联3&#xf…

HTML5新特性|06 文本效果text-shadowword-wrap自定义字体

文本效果 1、CSS3包含多个新的文本特性 属性: text-shadow:水平阴影 垂直阴影 模糊距离 阴影颜色 word-wrap&#xff1a;用于指定当文本溢出其容器的边界时如何处理换行的问题 浏览器支持: Internet Explorer 10、Firefox、 Chrome、 Safari 以及Opera支持text-shadow属性…

【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数

这个地方基本没有任何文档记录&#xff0c;在学习的过程中屡屡碰壁&#xff0c;因此记录一下这部分的内容&#xff0c;懒得看可以直接跳到总结看结论。 踩坑步骤 首先来看看书上让我们怎么写&#xff1a; //main.scala object Start {def main(args:Array[String]) {try {v…

【路径跟踪】PIDMPC

路径跟踪&#xff08;Path Tracking&#xff09;是指在实际行驶过程中&#xff0c;根据预先规划好的路径进行控制&#xff0c;能够沿着设定的路径行驶。常见的路径跟踪算法包括基于模型的控制方法&#xff08;如PID控制器&#xff09;、模型预测控制&#xff08;Model Predicti…

python3GUI--智慧交通监控与管理系统 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&技术难点1.软件组成结构2.技术难点3.项目结构 四&#xff0e;总结 大小&#xff1a;35.5 M&#xff0c;软件安装包放在了这里! 一&#xff0e;前言 博主高产&#xff0c;本次给大家带来一款我自己使…

HP 电脑开机黑屏 | 故障判断 | BIOS 恢复 | BIOS 升级

注&#xff1a;本文为 “HP 电脑开机黑屏 | 故障判断 | BIOS 恢复 | BIOS 升级” 相关文章合辑。 引文图片 csdn 转储异常&#xff0c;重传。 篇 1&#xff1a;Smart-Baby 回复中给出故障现象判断参考 篇 2、篇3 &#xff1a;HP 官方 BIOS 恢复、升级教程 开机黑屏&#xff0c…

三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇

一、引言 1.1 研究背景与意义 在当今医疗领域,三甲医院作为医疗服务的核心载体,肩负着保障民众健康、推动医学进步的重任。随着信息技术的飞速发展,数据已成为医院运营管理、医疗质量提升以及科学决策的关键要素。三甲医院等级评审作为衡量医院综合实力与服务水平的重要标…