ARM-V9 RME(Realm Management Extension)系统架构之系统初始化流程
安全之安全(security²)博客目录导读
目录
一、重置取消
二、应用处理单元(PE)初始启动
三、MSD初始化
四、GPT初始化
五、初始启动退出(由所有应用PE执行)
六、RMSD初始化
七、PE进入丢失上下文的低功耗状态
本博客提供了RME系统初始化流程的示例,并描述了系统组件之间的关系以及系统启动序列的相应安全注意事项,不包括有关安全启动序列或软件测量流程的具体细节。
一、重置取消
- RME系统重置取消。
- SMMU连接的GPC(GPCs)假定默认策略,阻止所有内存访问。
- 这不会阻止诸如HES之类的受信任请求方访问系统资源。
- MMU连接的GPC假定默认策略,允许MSD访问系统。
- MPE处于重置状态。硬件将表格、寄存器或缓存中的所有机密加密上下文设置为零,有效地清除DRAM内容。
- SMMU连接的GPC(GPCs)假定默认策略,阻止所有内存访问。
- HES开始执行并测量SSD状态,例如受信任子系统的固件镜像。
- 受信任的SCP开始执行并进行系统初始化,包括DRAM配置。
二、应用处理单元(PE)初始启动
- 由应用PE初始启动代码执行,例如在EL3上执行的PE启动ROM和HES。在以下示例中,PE启动ROM执行MSD固件的测量。
- HES释放应用PE重置。
- PE启动ROM将MSD固件镜像加载到MSD SMEM锁中,进行测量,并将MSD测量结果提交给HES。
- PE启动ROM验证MSD固件,例如使用MSD验证密钥,并启动MSD。
- MSD确定是否需要全局初始化,例如在cold reset后是否为主PE。
- 如果需要,执行MSD初始化。否则,在完成本地PE初始化后跳过至初始启动退出。
- 在MMU启用之前,所有PE内存访问都在Root PAS中。
三、MSD初始化
- MSD固件完成系统初始化操作。这包括:
- 配置未由受信任SCP或HES配置的任何MPR。
- 作为可选步骤,启动S-EL2固件镜像以执行系统初始化操作,例如DRAM和互连配置:
- 首先,执行GPT初始化,但仅配置包含“允许所有访问”的块描述符的0级GPT条目。 · 这保持了在EL2或更低异常级别执行时GPC始终启用的行为。
- 其次,加载、验证并启动S-EL2镜像。S-EL2固件执行并将控制权返回给MSD初始化。
- 锁定并验证系统中的所有可测量寄存器。
- 执行GPT初始化。
四、GPT初始化
- 系统中的SMMU附加GPC和MPE通过MSD资源发现进行识别。
- MSD配置系统的SMMU附加GPC和MPE,以启用GPT的安全初始化。
- 使系统中所有在PoPA之前的数据/统一缓存失效,包括私有和共享缓存,以防止使用脏缓存行的GPT损坏。
- 如果GPT初始化在重置后立即发生,系统默认行为可能会确保这一点,无需显式失效。
- 确保MPE执行Root PAS主内存(如DRAM)的必要加密和完整性属性。
- 确保在GPT初始化期间非受信任请求方被阻止访问DRAM。
- 使系统中所有在PoPA之前的数据/统一缓存失效,包括私有和共享缓存,以防止使用脏缓存行的GPT损坏。
- MSD初始化GPT:
- 解析系统物理地址空间大小、主内存范围和物理粒度大小。
- 这可以使用来自固件表的信息完成。
- 解析为GPT分配的可用Root PAS SMEM和DRAM资源,例如通过MSD资源发现。
- GPT分配的示例: · Level 0 GPT在SMEM中,其大小由受保护物理地址大小和0级GPT条目的窗口大小定义。例如,如果受保护物理地址大小为8TB,则Level 0 GPT需要64KB的SMEM。 · Level 1 GPT在DRAM中,其大小由系统中的DRAM总量定义。
- 初始化0级GPT默认值。例如:
- DRAM区域的0级条目:配置1级GPT表描述符。
- 非DRAM区域的0级条目:配置为“允许所有访问”。
- 初始化1级GPT默认值。
- 在存储GPT本身的地址范围内,分配给Root PAS。
- 可选地,将DRAM carve-out内存范围分配给Realm PAS和Secure PAS。
- 对于其余的主内存地址范围,分配给非安全PAS。
- MSD通过以下操作完成GPC配置:
- 启用MMU附加GPC和SMMU附加GPC。
- 使所有GPT缓存失效,以实施新的GPT配置。
- 在启用MMU附加GPC后,MMU可以启用。
- 解析系统物理地址空间大小、主内存范围和物理粒度大小。
五、初始启动退出(由所有应用PE执行)
- 在允许其他安全状态的启动操作之前:
- 清除可能包含RMSD或Realm状态的任何PE寄存器,除非PE热重置或冷重置能保证其重置为常量值。
- 清除之前启动时可能分配给RMSD的任何SMEM内容。
- 使PE GPT缓存失效,以在GPC启用前刷新陈旧状态。
- 一旦主PE完成GPT初始化,启用MMU附加GPC。
- 在GPC启用后,可以启用MMU。
- 对于主PE,确保所有PE TLB、私有缓存和共享缓存都已失效。这样可以清除之前启动的任何潜在机密。
- 对于所有其他PE,确保所有PE TLB和私有缓存都已失效。这样可以清除之前启动的任何潜在机密。
六、RMSD初始化
- 在MSD加载、验证和启动RMSD镜像之前,它执行以下操作:
- 从RNVS读取系统属性,并验证是否满足启用RMSD功能的最低条件。
- 分配所需的RMSD SMEM和DRAM资源。DRAM资源可能已经在GPT初始化期间分配。
- 确定RMSD的外部调试状态。这会影响RMSD启动状态的派生方式。
- 使用RNVS参数派生RMSD启动状态,如[2]中定义。
- RMSD在启动过程中执行以下操作:
- 查询MSD,获取分配给RMSD的SMEM和DRAM资源的位置和大小。
- 使用RMSD启动状态初始化RMSD。
七、PE进入丢失上下文的低功耗状态
- MSD镜像执行操作,确保PE在进入低功耗状态时退出一致性域,而不在任何将要断电的缓存中留下脏拷贝。
- 然后,MSD镜像可以在PE进入低功耗状态之前禁用其GPC。
在低功耗状态期间,PE不进行访问。退出低功耗状态时,指令执行从MSD开始。
相关文章:
ARM-V9 RME(Realm Management Extension)系统架构之系统初始化流程
安全之安全(security)博客目录导读 目录 一、重置取消 二、应用处理单元(PE)初始启动 三、MSD初始化 四、GPT初始化 五、初始启动退出(由所有应用PE执行) 六、RMSD初始化 七、PE进入丢失上下文的低功耗状态 本博客提供了R…...

软件工程考试题备考
文章目录 前言一、二、1.2 总结 前言 一、 B D C 类图、对象图、包图 其他系统及用户 功能需求 用例 人、硬件或其他系统可以扮演的角色7. D C 数据 原型/系统原型;瀑布 A 功能;功能需求 D 数据存储;圆形/圆角矩形;矩形 C T;T;F C C B C D C …...

一款基于WordPress开发的高颜值的自适应主题Puock
主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优化策略 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的SEO功能 评论Ajax加载 文章点赞、打赏 支持Twemoji集成 支持QQ登录 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板 支持评论…...
浙教版 七年级下册 科学复习干货
七年级下册 浙教版科学 复习干货 文章目录 七年级下册 浙教版科学 复习干货第 I 章人类 H u m a n Human Human人类生殖系统胚胎发育、娩出过程青春期 动物 A n i m a l Animal Animal生长时期有性生殖无性生殖 植物 P l a n t Plant Plant种子结构种子萌发芽花有性生殖无性…...
罗盘时钟lua迷你世界
--罗盘时钟 --星空露珠工作室制作 --作者:韩永旗 --数字换中文 local zhChar {一,二,三,四,五,六,七,八,九} function formatNumber( num ) if type(num)~number then return num..is not a num end if num>99 then return num..不是两位数 end if num0 then return 零 el…...

【Java】Java基础语法
一、注释详解 1.1 注释的语法: // 单行注释/*多行注释 *//**文档注释 */ 1.2 注释的特点: 注释不影响程序的执行,在Javac命令进行编译后会将注释去掉 1.3 注释的快捷键 二、字面量详解 2.1 字面量的概念: 计算机是用来处理…...

利用golang_Consul代码实现Prometheus监控目标的注册以及动态发现与配置
文章目录 前言一、prometheus发现方式二、监控指标注册架构图三、部分代码展示1.核心思想2.代码目录3、程序入口函数剖析4、settings配置文件5、初始化配置文件及consul6、全局变量7、配置config8、公共方法目录common9、工具目录tools10、service层展示11、命令行参数12、Make…...

Python爬虫介绍
Python 作为一种广泛应用的编程语言,在 Web 开发、大数据开发、人工智能开发和嵌入式开发等领域都有着重要的应用。 Python 的易学性、清晰性和可移植性等特点使它得到很多技术人士的喜爱。对于数据科学和机器学习领域的程序员来说,Python 提供了强大的…...

Linux 进程管理
一、查看进程 使用ps -aux进行查看,其中a表示列出所有进程信息,u以用户格式显示进程信息,x显示后台进程参数,也可以使用| grep 进行进程的筛选 以下是显示进程后的示意 USER为进程执行的用户 PID为进程号 %CPU为该进程的cpu占用…...

【车载测试】CAN协议、CAN- FD协议和FlexRay协议 区别
【上半场电动化,下半场智能化】 一、CAN协议 和 CAN- FD协议的区别 CAN(Controller Area Network)协议是一种广泛用于汽车和工业控制系统等领域的现场总线协议。CAN- FD(Flexible Data Rate)协议是对CAN协议的扩展&am…...

对日期的处理
对日期的处理 对编码进行统一,在脚本最开始: # -*- coding: utf-8 -*-这里涉及到两个操作,一个是将数据进行标准化,比如有些日期是2024/05/06这并不符合日期的标准格式,需要转换成这样的2024-05-06 def tran_std(st…...

赵丽颖纯白茉莉绽放温柔之美
赵丽颖纯白茉莉,绽放温柔之美在这个繁忙喧嚣的娱乐圈,赵丽颖以其独特的魅力,成为了无数人心中的白月光。近日,赵丽颖工作室发布了一组live图,她身着一袭温柔白裙,宛如一朵盛开的纯白茉莉花,美得…...

软考高级论文真题“论湖仓一体架构及其应用”
论文真题 随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP…...

CentOS系统查看版本的各个命令
cat /etc/centos-release 查看CentOS版本 uname -a 命令的结果分别代表:当前系统的内核名称、主机名、内核发型版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称 cat /proc/version 命令用于查看Linux内核的版本信息。执行该命令后…...

[保姆级教程]uniapp实现底部导航栏
文章目录 前置准备工作安装HBuilder-X新建uniapp项目教程使用HBuilder-X启动uniapp项目教程 实现底部导航栏package.json中配置导航栏详细配置内容 前置准备工作 安装HBuilder-X 详细步骤可看上文》》 新建uniapp项目教程 详细步骤可看上文》》 使用HBuilder-X启动uniapp项…...

STM32多功能交通灯系统:从原理到实现
一、功能说明 本交通灯系统采用先进的stm32f103c8t6微处理器为核心控制单元。系统设置东南西北四个方向各配置两位数码管,用以精准展示5至99秒的时间范围,并且允许用户根据实际需求进行灵活调整。 在信号灯配置方面,每个方向均配备左转、直…...

Pip换源秘籍:让你的Python包飞行起来!
在Python的包管理中,Pip是最重要的工具之一。它允许开发者从Python Package Index (PyPI)安装包,但有时由于网络问题或服务器负载过高,直接从PyPI安装包可能会非常慢。这时,更换Pip源到一个更快的镜像站点是一个常见的解决方案。本…...

Flutter TIM 项目配置
目录 1. 设计说明 2. 参考资料索引 Flutter SDK 服务端 Rest API 腾讯后台 其他 3. TIM 整体架构 第一部分:APP 端 第二部分:腾讯服务器 第三部分:三方服务 第四部分:你自己的服务器 4. TIM SDK 集成 TUIK 含 UI 集成…...

【深海王国】小学生都能玩的单片机?零基础入门单片机Arduino带你打开嵌入式的大门!(8)
Hi٩(๑o๑)۶, 各位深海王国的同志们,早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督继续为大家带来系列——小学生都能玩的单片机!带你一周内快速走进嵌入式的大门,let’s go! (8&#x…...
第5天:视图与模板进阶
第5天:视图与模板进阶 目标 掌握视图逻辑和模板渲染,包括不同类型的视图、自定义模板标签和过滤器,以及模板继承和包含的概念。 任务概览 学习函数视图和类视图的使用。编写自定义模板标签和过滤器。理解模板的继承和包含机制。 详细步骤…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...