ARM-V9 RME(Realm Management Extension)系统架构之系统初始化流程

2024-06-23 20:20

本文主要是介绍ARM-V9 RME(Realm Management Extension)系统架构之系统初始化流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安全之安全(security²)博客目录导读

目录

一、重置取消

二、应用处理单元(PE)初始启动

三、MSD初始化

四、GPT初始化

五、初始启动退出(由所有应用PE执行)

六、RMSD初始化

七、PE进入丢失上下文的低功耗状态


本博客提供了RME系统初始化流程的示例,并描述了系统组件之间的关系以及系统启动序列的相应安全注意事项,不包括有关安全启动序列或软件测量流程的具体细节。

一、重置取消

  • RME系统重置取消。
    • SMMU连接的GPC(GPCs)假定默认策略,阻止所有内存访问。
      • 这不会阻止诸如HES之类的受信任请求方访问系统资源。
    • MMU连接的GPC假定默认策略,允许MSD访问系统。
    • MPE处于重置状态。硬件将表格、寄存器或缓存中的所有机密加密上下文设置为零,有效地清除DRAM内容。
  • 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。
  • 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)系统架构之系统初始化流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088184

相关文章

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。