【第二部分:结构】ARM Realm Management Monitor specification

news2024/9/30 11:37:02

目录

  • 概念
    • Realm
      • 概述
      • Realm执行环境
        • Realm寄存器
        • Realm内存
        • Realm处理器功能
        • IMPDEF系统寄存器
      • Realm属性
      • Realm活性
      • Realm生命周期
        • 状态
        • 状态转换
      • Realm参数
      • Realm描述符
    • 颗粒Granule
      • 颗粒属性
      • 颗粒所有权
      • 颗粒生命周期
        • 状态
        • 状态转换
        • 颗粒抹除
    • Realm执行上下文
      • 概述
      • REC属性
      • REC指数和MPIDR值
      • REC生命周期
        • 状态
        • 状态转换
  • 参考文献

概念

本章介绍了以下是RMM体系结构的核心概念:

Realm

本节描述了一个Realm的概念。

概述

Realm是一种执行环境,它不受非安全和安全安全状态下的代理和其他Realm的影响。

Realm执行环境

Realm的执行环境是EL0 + EL1环境,如a型文件架构[3]的《ARM架构参考手册》中所述。

Realm寄存器

在第一次进入Realm VPE时,PE状态根据A形架构参考手册[3]中的“重置为AArch64状态”初始化,但主机在Realm创建过程中指定的GPR和PC值除外。

保证了一个Realm VPE的通用用途和SIMD /浮点寄存器的保密性。

保证了其他Realm VPE寄存器状态(包括堆栈指针、程序计数器和EL0 / EL1系统寄存器)的保密性。

这保证了一个Realm VPE的通用用途和SIMD /浮点寄存器的完整性。

保证了其他Realm VPE寄存器状态(包括堆栈指针、程序计数器和EL0 / EL1系统寄存器)的完整性。

Realm可以使用主机调用向主机传递参数,并接收来自主机的结果。

Realm内存

一个Realm能够确定一个给定的IPA是受到保护还是不受保护。

通过受保护地址访问的内存内容保证机密性。非正式地说,这意味着CCA平台之外的任何代理都无法观察到该内存位置内容的更改。

这保证了通过一个受保护的地址访问的内存内容的完整性。非正式地说,这意味着该Realm不遵守要更改的位置的内容,除非该Realm本身对该位置写了不同的值,或同意RMM要求违反该位置的完整性。

Realm处理器功能

从读取特性寄存器返回到一个Realm的值在架构上是有效的,它描述了在该Realm的执行环境中存在的一组特性。

如果将底层硬件平台支持的特性暴露导致安全漏洞,则RMM可能会抑制底层硬件平台支持的特性。

IMPDEF系统寄存器

从实现定义的系统寄存器中读取或写入的Realm会导致该Realm发生未知异常。

Realm属性

本节描述了一个Realm的属性。

Realm属性是一个Realm的一个属性,它可以通过主机或Realm来观察或修改其值。

Realm属性的一个示例是RMM命令的结果。

在下表中总结了一个Realm的属性。
在这里插入图片描述
Realm初始测量(RIM)是在激活时对Realm的配置和内容的测量。

Realm可扩展测量(REM)是一个在Realm的生命周期内可以扩展的测量值。

一个Realm的属性包括一个测量值的数组。这个数组中的第一个条目是一个RIM。这个数组中的其余条目是REMs。

在领域创建过程中,主机提供ipa_width、rtt_level_start和rtt_num_start值作为Realm参数。根据VMSA,rtt_num_start值在架构上被定义为ipa_width值和rtt_level_start值的函数。因此,可以设计领域创建界面,使主机只提供了ipa_width值和rtt_level_start值。但是,这可能会允许成功地创建一个Realm,但其配置与主机的意图不匹配。因此,我们决定,主机应该显式地指定所有三个值,如果值不一致,Realm创建将失败。详情请参见A-配置文件体系结构[3]的ARM体系结构参考手册。

一个Realm的VMID值由主机选择。VMID必须在硬件平台支持的范围内。RMM确保系统上的每个Realm都有一个唯一的VMID。

Realm个性化值(RPV)是由主机提供的,用于区分具有相同Realm初始度量,但行为不同的Realm。

RPV的可能用途包括:
A GUID
Realm所有者的哈希值为公钥
“个性化文件”的散列,通过侧带(例如,通过NS内存)提供给Realm,并包含Realm软件使用的配置信息。

RMM将RPV视为一个不透明的值。

RPV作为一个单独的声明被包括在该Realm的认证报告中。

Realm活性

Realm活性是一种属性,它意味着存在一个或多个颗粒,除了RD和起始级RTTs,它们属于Realm。

如果一个Realm是活的,它就不能被摧毁。

如果存在以下任何一项,则一个Realm是有效的:
该Realm所拥有的RECs数量不为零
该Realm的起始级别RTT是实时的

如果一个Realm拥有非零数量的数据颗粒,这意味着它有一个起始级别的RTT,它是活的,因此该领域本身是活的。

Realm生命周期

状态

一个Realm的状态列出如下。
在这里插入图片描述
NEW 正在建设中。不符合执行资格。
ACTIVE 符合执行条件。
SYSTEM_OFF 系统已被关闭。不符合执行资格。

状态转换

允许的Realm状态转换如下表所示。最右边的列列出了可能导致相应状态转换的事件。

从伪状态NULL进行的转换表示Realm对象的创建。向伪状态NULL的转换表示对Realm对象的破坏。
在这里插入图片描述
允许的Realm状态转换如下图所示。每个圆弧都标记有可能导致相应状态转换的事件

从伪状态NULL进行的转换表示RD的创建。向伪状态NULL的转换表示RD的破坏。
在这里插入图片描述

Realm参数

Realm参数是主机在Realm创建过程中提供的值。

Realm描述符

Realm描述符(RD)是一种存储Realm属性的RMM数据结构。

一个RD的大小是一个颗粒Granule。

颗粒Granule

本节描述了颗粒体的概念。

颗粒存储器是一个大小为4KB的物理内存单位。

颗粒可用于储存以下颗粒之一:
主机使用的代码或数据
处于安全安全状态的软件使用的代码或数据
一个Realm所使用的代码或数据
RMM用于管理一个Realm的数据

颗粒的使用反映在其生命周期状态中。

如果颗粒可以由主机委托给RMM或领域使用,那么它是可委托的。

在典型的实现中,以RAM形式呈现给主机的所有内存都是可委托的。不可委托内存的示例可能包括:
为根世界、RMM或安全世界使用的内存
设备内存

颗粒属性

本节将介绍颗粒体的属性。

颗粒属性是颗粒的一个属性,其值可以被主机或领域观察或修改

可观察到的颗粒属性的方法的示例包括RMM命令的结果,以及内存访问是否产生故障。

下表中总结了一个颗粒体的属性。

在这里插入图片描述
物理地址空间集为:NS, REALM, OTHER

RMM不能区分一个颗粒是在安全PAS中还是在根PAS中,所以这两个值被合并为OTHER。

如果颗粒的状态不是未授权UNDELEGATED的,那么颗粒的PAS就是REALM

如果颗粒的状态未被授权UNDELEGATED,那么颗粒的PAS就不是REALM

如果一个颗粒的状态未被委托UNDELEGATED,那么RMM并不会阻止该颗粒的PAS被另一个代理更改为除REALM以外的任何值。

NS颗粒是一种PAS为NS的颗粒。

颗粒所有权

既不未授权也不授权的颗粒属于Realm所有。

颗粒的所有者由Realm描述符(RD)的地址标识。

对于状态为RD的颗粒,所有权关系是递归的:拥有Realm由RD本身的地址标识。

状态为RTT的颗粒是以下情况之一:
一个起始水平的RTT。此RTT的地址存储在所拥有Realm的RD中。
一个非启动水平的RTT。此RTT的地址存储在其父RTT中,并存储在一个状态为表的RTT条目中。递归地遵循父关系,导致了拥有Realm的RD。

一个状态为DATA的颗粒被映射到一个受保护的IPA上,在一个状态被分配的RTT条目中。拥有RTT的Realm是数据颗粒的所有者。

REC具有一个“所有者”属性,该属性指向拥有Realm的RD。

REC没有映射到受保护的IPA上。因此,需要明确地记录它的所有权

颗粒生命周期

状态

一个颗粒的状态列出如下。
在这里插入图片描述
在这里插入图片描述

状态转换

允许的颗粒状态转换如下表所示。最右边的列列出了可能导致相应状态转换的事件。
在这里插入图片描述
允许的颗粒状态转变如下图所示。每个圆弧都标记有可能导致相应状态转换的事件。
在这里插入图片描述

颗粒抹除

当颗粒的状态从P过渡到委托状态DELEGATED,然后过渡到任何其他状态时,任何与P相关的内容都已被删除。

通过委托状态DELEGATED的任何颗粒状态转换序列都会导致颗粒内容被删除。这是必要的,以确保信息不会从一个Realm泄漏到另一个Realm,或从一个Realm泄漏到主机。请注意,在委托颗粒的状态DELEGATED时,任何代理都不能观察颗粒的内容。

擦除是一种将内存位置的可观测值从X改变为Y的操作,使得不能从值Y确定值X的操作。

擦除内存位置并不会直接或间接地显示任何机密的领域数据。

不保证擦拭可以被实现为零填充。

Realm软件不应该假设未初始化的内存(即,由使用RMI_DATA_CREATE_UNKNOWN创建的数据颗粒支持的Realm IPA空间)的初始内容为零。

Realm执行上下文

本节介绍了Realm执行上下文(REC)的概念。

概述

Realm执行上下文(REC)是一个与领域VPE相关联的R-EL0和1执行上下文。

REC对象是一种RMM数据结构,它是用来存储REC的寄存器状态的

REC属性

本节将介绍REC的属性。

REC属性是REC的一个属性,其值可以由主机或拥有REC的Realm域来观察或修改。

可以观察到REC属性的方法的示例包括RMM命令的结果和Realm条目之后的PE状态

下表中总结了REC的属性。
在这里插入图片描述
在这里插入图片描述
REC的aux属性是一个辅助颗粒的列表。

REC所需的辅助颗粒数由RMI_REC_AUX_COUNT命令返回。

根据CCA平台和Realm的配置,REC所需的存储空间量可能超过单个颗粒。

REC所需的辅助颗粒数量在CCA平台上的Realm之间有所不同。

REC所需的辅助颗粒的数量是一个给定Realm的生命周期内的一个常数

REC的gprs属性是一组通用寄存器值,在退出REC时由RMM保存,在进入REC时由RMM恢复。

REC的mpidr属性是一个可用于识别与REC关联的VPE的值。

REC的pc属性是程序计数器,它在退出REC时由RMM保存,在进入REC时由RMM恢复。

REC的可运行标志决定了REC是否适合执行。只有当标志的值可运行时RUNNABLE,RMI_REC_ENTER命令才会导致REC条目。

REC的可运行标志由该Realm控制。它的初始值反映在Realm的初始测量中,在Realm执行期间,它的值可以通过执行PSCI_CPU_ON和PSCI_CPU_OFF命令来改变

REC的状态属性由主机通过执行RMI_REC_ENTER命令来控制。

REC的sysregs属性是一组系统寄存器值,这些值在从REC退出时由RMM保存,在进入REC时由RMM恢复。

REC指数和MPIDR值

REC索引是由MPIDR字段串联生成的无符号整数值:

index = Aff3:Aff2:Aff1:Aff0[3:0]

这一点如下表所示。

在这里插入图片描述
在这里插入图片描述
REC MPIDR值的Aff0[7:4]是RES0字段,以便与GICv3兼容。

当在一个Realm中创建第n个REC时,主机需要使用与REC索引n对应的MPIDR。

REC生命周期

状态

在这里插入图片描述

状态转换

允许的REC状态转换如下表所示。最右边的列列出了可能导致相应状态转换的事件。

从伪状态NULL进行的转换表示REC对象的创建。向伪状态NULL的转换表示对REC对象的破坏。
在这里插入图片描述
在这里插入图片描述
允许的REC状态转换如下图所示。每个圆弧都标记有可能导致相应状态转换的事件。

从伪状态NULL进行的转换表示REC的创建。向伪状态NULL的转换表示REC的破坏。
在这里插入图片描述

参考文献

[1] Introducing Arm CCA. (ARM DEN 0125) Arm Limited.
[2] Arm Architecture Reference Manual Supplement, The Realm Management Extension (RME), for Armv9-A.
(ARM DDI 0615 A.d) Arm Ltd.
[3] Arm Architecture Reference Manual for A-Profile architecture. (ARM DDI 0487 I.a) Arm Ltd.
[4] Arm CCA Security model. (ARM DEN 0096) Arm Limited.
[5] Arm Generic Interrupt Controller (GIC) Architecture Specification version 3 and version 4. (ARM IHI 0069
G) Arm Ltd.
[6] Concise Binary Object Representation (CBOR).
[7] CBOR Object Signing and Encryption (COSE).
[8] Entity Attestation Token (EAT).
[9] Concise Data Definition Language (CDDL).
[10] IANA Hash Function Textual Names.
[11] SEC 1: Elliptic Curve Cryptography, version 2.0.
[12] RME system architecture spec. (ARM DEN 0129) Arm Ltd.
[13] Arm SMC Calling Convention. (ARM DEN 0028 D) Arm Ltd.
[14] Arm Specification Language Reference Manual. (ARM DDI 0612) Arm Ltd.
[15] Secure Hash Standard (SHS).
[16] Arm Power State Coordination Interface (PSCI). (ARM DEN 0022 D.b) Arm Ltd.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElementPlusError: [ElOnlyChild] no valid child node found

突然发现页面报了一堆黄色的错误提示 查了下原来是这里导致的,只需要把v-if 挪到popover那层即可 解决

thingsboard3.6的mailConfigTemplateController错误

1、bug内容 使用3.6版本的tb代码进行打包生成boot的jar包,在启动的时候会报错mailConfigTemplateController bean初始化找不到文件路径。 Error creating bean with name mailConfigTemplateController defined in URL [jar:file:/D:/yuxinwei/AE/thingsboard/thingsboard-3…

ajax请求方式处理

1、前置准备 1.1、SpringBoot项目下:写一个controller RestController public class TestController {RequestMapping("/yyy")public void test(HttpServletRequest request, HttpServletResponse response){String yang request.getParameter("y…

三十分钟学会Shell(上)

Shell ​ Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux&#x…

甲方使用外包真的能节约成本吗?

语:外包作为一种常见的业务模式,被广泛应用于各行各业。然而,甲方在选择外包时,是否真的能够实现成本节约呢?本文将从多个角度进行探讨。 正文: 降低人力成本:外包通常是将某些业务环节或项目交…

【8】Spring Boot 3 集成组件:安全组件 spring security【官网概念篇】

目录 【8】Spring Boot 3 集成组件:安全组件 spring securitySpring Security 简介先决条件引入依赖身份验证密码存储密码存储历史DelegatingPasswordEncoder密码存储格式密码加解密类自定义密码存储 体系结构 ArchitectureServlet 过滤器DelegatingFilterProxyFilt…

史诗级云故障敲响警钟,应用保障不能没有“连续键”!

近日,知名云服务商出现一次史诗级的云故障:全球所有区域/所有服务同时异常,故障持续长达3小时之多,云上众多应用受到极大影响。 如今,在一个充满不确定性和复杂性的数字化时代,哪怕是顶级云服务商亦不能避…

【原创分享】Mentor PADS PCB导入Altium Designer软件PCB详细教程

Mentor PADS PCB导入Altium Designer软件PCB详细教程 1、PADS软件绘制的PCB文件需要导出文件,用PADS软件打开PCB文件,单击“Export”,在参数设置界面,选择所有的元素。“Format”选择较低的版本,一般推荐选择5.0版本&…

idea手动导入maven包

当maven仓库中没有包时&#xff0c;我们需要手动导入jar到maven项目中 1.这里的maven设置成你自己安装的maven 2.查看pom.xml文件中maven&#xff0c;以下面为例 <dependency><groupId>com.jdd.pay</groupId><artifactId>mapi-sdk-v3</artifactId&…

【VSCode】VSCode 使用

目录 文章目录 目录插件配置设置代码不显示 git 提示 "xxx months ago | 1 author"设置打开项目不自动选择 CMakeLists 插件 以下插件为 C 开发偏好设置。 C/CCMakeCMake ToolsGitLensRemote DevelopmentRemote Explorer 配置 设置代码不显示 git 提示 “xxx mon…

安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市

信创是数字中国建设的重要组成部分&#xff0c;也是数字经济发展的关键推动力量。作为云基础软件企业&#xff0c;云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施&#xff0c;ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级&#xff0c;是其中唯一兼容四种…

PC8250(CC-CV控制)5V/8A同步降压恒流恒压软启动带EN功能只需极少外围元件

概述 PC8250是一个同步降压转换器输出电流至8A。它的设计允许操作电源电压范围从9V到42V。外部关闭功能可以通过逻辑电平来控制COMP/EN引脚下降&#xff0c;然后进入待机模式。外部补偿使反馈控制具有良好的线路和负载调节&#xff0c;外部设计灵活。PC8250在CC&#xff08;恒定…

关于植物单细胞转录组提核还是制备原生质体的思考

目前植物单细胞转录组测序主流平台的输入都是原生质体悬液或者细胞核悬液。 那么到底采用哪种更好呢&#xff1f; 啥&#xff1f; 成年人少做选择&#xff1f; 看看账上&#xff0c;摸摸兜里&#xff0c;得有财力支持啊&#xff01; 本期&#xff0c;聊聊这个主题&#xff0…

Java面试-微服务篇-SpringCloud

Java面试-微服务篇-SpringCloud SpringCloud 常见组件注册中心Eureka, Nacos负载均衡Ribbon服务雪崩, 熔断降级微服务的监控来源 SpringCloud 常见组件 通常情况下 Eureka: 注册中心Ribbon: 负载均衡Feign: 远程调用Hystrix: 服务熔断Zuul/Gateway: 网关 SpringCloudAlibaba…

景区智慧旅游智能化系统方案:PPT全文58页,附下载

关键词&#xff1a;智慧景区解决方案&#xff0c;智慧文旅解决方案&#xff0c;智慧旅游解决方案&#xff0c;智慧文旅综合运营平台 一、景区智慧旅游智能化系统建设背景 近年来&#xff0c;随着信息技术的快速发展和普及&#xff0c;以及旅游市场的不断扩大和升级&#xff0…

低压配电柜浪涌保护器综合选型方案

地凯科技低压配电柜是指在额定电压不超过1000V的交流电力系统中&#xff0c;用于接受和分配电能&#xff0c;控制、保护和监测电路的装置。低压配电柜广泛应用于工业、商业、住宅等领域&#xff0c;是电力系统的重要组成部分。 然而&#xff0c;低压配电柜也面临着来自外部和内…

视频剪辑有妙招:批量置入封面,轻松提升视频效果

随着社交媒体的兴起&#xff0c;视频已经成为分享和交流的重要方式。无论是专业的内容创作者还是普通的社交媒体用户&#xff0c;都要在视频剪辑上下一番功夫&#xff0c;才能让视频更具吸引力。而一个吸引的封面往往能在一瞬间抓住眼球&#xff0c;提高点击率。还在因如何选择…

CSGO搬砖项目全面讲解 ,CSGO搬砖注意事项

Steam/CSGO游戏搬砖全套操作流程之如何选品&#xff08;第二课&#xff09; 一个游戏只要能搬&#xff0c;只要体量不够大&#xff0c;很快就会货币价格暴跌&#xff0c;直接凉凉。市面上的能稳定手动搬砖的游戏越来越少。所以对于兼职赚点外快的散人搬砖党来说&#xff0c;找一…

广播组播、本地套接字通信、wireshark、以太网帧格式、三次握手四次挥手

广播&#xff08;使用 UDP 套接字&#xff09; 广播地址&#xff1a;主机号最大的地址。 广播&#xff1a;给所在局域网的所有主机发送数据报。&#xff08;之前的数据报发送方式是单播。&#xff09; 以下情况中使用广播&#xff1a; 局域网 搜索协议。 比如家中的智能产品&a…

安卓毕业设计基于安卓android微信小程序的培训机构系统

项目介绍 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对培训机构管理系统进行需求分析&#xff0c;得出培训机构管理系统主要功能。接着对培训机构管理系统 进行…