ARM-V9 RME(Realm Management Extension)系统架构之系统能力的内存隔离和保护

news2024/11/13 10:52:18

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

目录

一、内存隔离和保护

1、颗粒PAS过滤Granular PAS filtering

2、Cache的一致性维护

2.1 物理别名点 Point of Physical Aliasing (PoPA)

2.2 加密点

3、内存(DRAM)保护

3.1 内存加密和完整性

3.2 DRAM scrubbing


本博客探讨 RME 所需的系统能力,以保证 Arm CCA 对于 Realms 的安全性和隔离特性。

一、内存隔离和保护

架构上独立的物理地址空间的概念使得形成强大的内存保护隔离边界成为可能。

本节定义了使用物理地址空间保证内存隔离的规则,以及通过这些空间将资源映射到安全状态的方法。

可以从每个安全状态访问的物理地址空间在下表中定义,即 PAS 访问表:

资源是一个可寻址物理实体。RME 系统中的资源仅在与资源物理地址空间 (Resource PAS) 关联时才可访问。

资源与资源 PAS 的关联由 SSD 或 MSD 控制。

资源与资源 PAS 的关联可以由隔离硬件静态设置,也可以在运行时由 MSD 固件更改

对资源的访问与以下内容相关联:

  • 根据 PAS 访问表,访问 PAS。
  • MECID。

对于通过第一级或第二级 MMU 访问资源的请求者,根据 PAS 访问表分配访问 PAS 由 MMU SSD 硬件强制执行。 对于不通过第一级或第二级 MMU 访问资源的请求者,例如通用中断控制器 (GIC) 或调试访问端口,分配访问 PAS 和 MECID 并符合上述要求由请求者端的 SSD 硬件强制执行。

SSD 硬件是不可变的或由 SSD 组件专门控制的硬件,例如受信任子系统。

附加到请求的 PAS 标签传达其相关的访问 PAS。

ARM架构参考手册和ARM SMMU架构规范定义了从每个安全状态设置访问 PAS 的编程模型。

通过非第一级或第二级 MMU/SMMU 访问内存映射资源的请求者必须支持一种方法,该方法由 SSD 硬件强制执行,以根据 PAS 访问表标记访问的访问 PAS。

例如:

  • 调试访问端口 (DAP) 可以向外部调试器暴露一个编程寄存器,允许为任何访问主内存或 APB 外设的操作设置一个访问 PAS 到一个允许的值,这取决于调试认证接口的状态。
  • 如果调试认证接口允许 RMSD 外部调试但不允许安全外部调试,则 DAP 硬件会拒绝将寄存器编程为访问 PAS == Secure 的尝试。
    • 此外,如果调试认证接口允许 RMSD 外部调试,则 DAP 硬件可以允许访问 PAS == Realm 的访问来指定编程的 MECID。

一旦分配,访问 PAS 的值不能更改。

系统不得暴露任何允许覆盖访问 PAS 值的寄存器或调试机制。

PAS 过滤器通过仅允许访问与该资源关联的资源 PAS 匹配的访问 PAS 来强制执行 PAS 保护检查。

系统中的每个请求者都必须接受 PAS 保护检查。

在此上下文中,请求者包括以下任何一种:

  • 处理单元(PEs),由主操作系统或管理程序用来执行用户应用程序或内核线程。
    • 本规范中还使用术语“应用 PEs”来区分主机软件可见的处理单元和嵌入系统设备中的处理单元。
  • 非 PE 请求者,可能是完全一致的、IO 一致的或非一致的(fully coherent, IO-coherent, or Non-coherent)。
    • 这包括任何支持发起内存访问的设备,如缓存预取器(cache prefetchers)、通用中断控制器 (GIC) 或调试访问端口(DAP)。
    • 其他示例包括外围设备,包括 PCIe 设备或可能包含非应用 PEs 的控制处理器。

某些受信任的请求者遵循 PAS 保护检查,而无需经过 PAS 过滤器。

  • PAS 过滤器可以直接访问根 PAS 中的资源,如存储在 DRAM 中的保护表。
  • 内存保护引擎 (MPE) 可以直接访问根 PAS 中的资源,如存储在 DRAM 中的完整性标签。
  • 受信任的子系统可以使用硬连线映射直接访问外围寄存器或 SMEM,将资源与根 PAS 关联。

术语“completer ”指包含资源并响应访问的组件。

对于某些资源,如外围设备或 SMEM,PAS 过滤器可以位于completer侧。对于其他资源,如 DRAM,PAS 过滤器必须附加到所有访问该资源的请求者上。RME 系统架构规则保证无论哪种结构,都能保持隔离。

MSD 资源位于根 PAS 中,由在 EL3 运行的软件管理。

对根 PAS 的访问仅允许受信任的请求者进行。

受信任的请求者包括:

  • 在根安全状态 (EL3) 下执行的 PE。
  • 受信任的子系统。例如,受信任的 SCP 或托管 HES 的子系统。
  • 内存保护引擎。
  • PAS 过滤器。

RMSD 资源位于 Realm PAS 中(RMSD Resources are in the Realm PAS),由在 Realm 安全状态下 EL2 运行的软件管理。

术语“资源 X 位于 PAS Y”表示资源 X 仅在 PAS Y 中可访问,除非明确允许资源在多个 PAS 中可访问。

1、颗粒PAS过滤Granular PAS filtering

颗粒 PAS 过滤是以页面(物理粒度)的粒度将资源与 PAS 进行可编程关联。

颗粒 PAS 过滤器根据颗粒保护表(GPT)指定的物理粒度资源 PAS 检查访问 PAS。如果检查失败,则访问将被中止,并报告粒度保护错误(GPF)。

在满足以下条件时,可以使用颗粒保护表将资源与 PAS 关联:

  • 每个 PAS 中只有一个物理地址(PA)可以访问资源,并且该 PA 的值在所有物理地址空间中相同。
  • 资源可以以页面粒度分配给 PAS。

术语粒度保护检查(GPC)指代请求者侧的颗粒 PAS 过滤器,此类过滤器可以附加到 MMU 或 SMMU 上。

GPC 是请求者侧的 PAS 过滤器。在系统构建中,来自应用 PE 或附加到 SMMU 的请求者的任何访问首先经过请求者侧的 PAS 过滤器,然后才能到达完成者侧的 PAS 过滤器。因此,GPT 的编程必须考虑特定资源的完成者侧 PAS 过滤器的潜在存在。

对于由完成者侧 PAS 过滤器保护的资源,可以省略粒度保护检查,在这种情况下,资源在 GPT 中标记为“允许所有访问”。

MSD 保证所有受粒度保护检查约束的请求者看到的一致的粒度保护表视图。

内存加密规则意味着当粒度的 PAS 关联更改时,粒度内容不会被保留。然而,软件不能依赖粒度过渡到新 PAS 作为隐式清除事件,必须在将粒度过渡到非安全 PAS 之前显式清除粒度内容。

片上资源的粒度保护检查只能依赖于存储在片上或存储在具有同等级别的完整性和重放保护的片外粒度保护表。

适用于非幂等位置的粒度保护检查不允许在访问的粒度保护检查完成之前对非幂等位置进行任何推测性访问。

一个非幂等位置的例子是读取敏感的内存映射外围寄存器。对非幂等内存的推测性读取访问可能导致不可预测的行为。因此,使用 GPC 将非幂等位置分配给 Realm、安全或根 PAS 的系统必须在允许访问非幂等位置之前完成对其的 GPC。

如果请求者侧的颗粒 PAS 过滤器处于复位状态,则与其关联的任何请求者都处于复位状态或被阻止访问内存。

这允许在初始化系统时实现可预测的访问控制行为。

2、Cache的一致性维护

2.1 物理别名点 Point of Physical Aliasing (PoPA)

物理别名点(PoPA)是cache维护操作的参考位置。

以可以缓存的内存为目标的PA与PAS相关联,直到到达PoPA。(A PA that targets memory that can be cached is associated with a PAS until reaching the PoPA. )

当 PA 与 PAS 关联时,任何 PA 比较操作都包括 PAS。这适用于系统的任何层次结构级别(包括L1数据和指令缓存)上位于PoPA之前(在请求者和PoPA之间)的任何缓存或snoop filter。这是维护将分离的物理地址空间作为系统全局安全属性的原则所必需的。

RME系统支持按照ARM架构参考手册对PoPA进行缓存维护操作。对PoPA (PoPA CMO)的缓存维护操作的范围是Outer Shareable可共享域。

PoPA CMO 影响系统中具有指定 {PAS, PA} 的任何缓存副本,无论以下条件如何:

  • 缓存时的共享域。
  • 系统支持单个还是多个外部共享性域。
  • 在具有 MEC 的系统中缓存时的 MECID。

例如,实现必须保证从一个PE发送的PoPA CMO会影响被其他PE分配为不可共享的缓存行。这种保证通常需要snoop过滤器注册任何分配到位于颗粒保护检查之后的完全一致缓存的分配,而不管导致分配的访问的可共享性属性。

实现可以通过让应用 PE 人为地将非共享可缓存访问转换为内部共享可缓存或外部共享可缓存来支持这一点,但必须保证当其他请求者继续使用非共享属性访问相同位置时,内存一致性和连贯性语义得以保留。

非 PE 请求者在分配到粒度保护检查之前的缓存时,可以继续使用非共享可缓存属性,因为这种缓存的后续回写总是通过 PAS 保护检查。

2.2 加密点

加密点(PoE)是缓存维护操作的参考位置。带有 MEC 的 RME 系统支持PoE 缓存维护操作。

对可缓存内存位置的访问与 MECID 关联,直到达到 PoE。

当一个位置的副本分配到缓存中时,它将存储分配访问的 MECID。

缓存清理操作(由于缓存维护操作和自然清除)导致的内存访问使用缓存条目的MECID。

3、内存(DRAM)保护

3.1 内存加密和完整性

有几种内存加密和完整性方案适用于RME系统。

基本的加密要求是支持对外部内存进行加密,对于每个PAS使用单独的加密密钥或tweak,并使用地址tweak提供空间隔离。RME防止运行时软件访问外部内存中的密文。

加密内存的完整性和新鲜度是额外的、依赖于威胁模型的能力,用于ARM机密计算安全模型中规定的Arm CCA安全保证。

使用术语Memory Protection Engine(MPE)来描述提供外部内存加密和完整性服务的组件。 在ARM机密计算安全模型中定义了一种可用于Arm CCA系统的内存保护方案分类方法。

分配给安全PAS、领域PAS或根PAS的外部内存必须使用提供至少以下全部内容的方法进行加密

  • 对于每个PAS的唯一加密上下文。
  • 对于每个加密数据块(如128位内存块)的唯一地址tweak调整。
  • 如果不支持加密内存完整性,则使用确保加密数据块上的比特扩散的加密模式。
  • 在具有MEC的系统中,在领域PAS中为每个MECID使用不同的加密上下文。

在写入外部内存或位于PoPA之后的任何共享缓存之前对数据进行加密。

在具有MEC的系统中,在写入外部内存或位于PoE之后的任何共享缓存之前对数据进行加密。

在具有MEC的系统中,MECID用于标识加密上下文,例如加密密钥或调整值,这些可能存储在MECID索引表或MECID标记的缓存中。

存储加密上下文的内存映射数据结构必须位于根PAS中的SMEM中,例如MSD SMEM。

3.2 DRAM scrubbing

使用术语“scrubbing”来描述一种操作,保证了先前的内存位置的内容不再可读。

术语“ECC-scrubbing”用于描述刷新DRAM ECC状态的操作。

在系统启动时,可能已经被分配给安全PAS、领域PAS或根PAS的内存必须在非受信任的请求者被授予对该内存的访问权限之前进行擦除。因为RME系统支持内存加密,所以在RME系统重置时,通过重置所有存储的内存加密密钥来隐式执行擦除。

位于PoPA之后的ECC-scrubbing引擎不能通过错误记录寄存器等途径泄露机密信息。

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

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

相关文章

PHP:IntelliJ IDEA 配置 PHP 开发环境及导入PHP项目

在创建PHP项目之前我们需要安装PHP插件,安装步骤如下:Windows:IntelliJ IDEA Ultimate 安装 PHP 插件-CSDN博客 1、导入已有PHP项目,导入之后选择,File > Setting 选择对应 CLL Interpreter,如果没有操…

基于GO 写的一款 GUI 工具,M3u8视频下载播放器-飞鸟视频助手

M3u8视频下载播放器-飞鸟视频助手 M3u8视频飞鸟视频助手使用m3u8下载m3u8 本地播放 软件下载地址m3u8嗅探 M3u8视频 M3u8视频格式是为网络视频播放设计,视频网站多数采用 m3u8格式。如腾讯,爱奇艺等网站。 m3u8和 mp4的区别: 一个 mp4是一个…

软件游戏缺失d3dcompiler_47.dll如何解决,简单有效的五种解决方法分享

在现代游戏中,我们经常会遇到一些错误提示,其中之一就是“缺少d3dcompiler47.dll文件”。这个问题通常会导致游戏无法正常运行或出现崩溃的情况。为了解决这个问题,我总结出了以下五种解决方法。希望这些方法能够帮助到遇到相同问题的玩家。 …

LangChain入门开发教程(一):Model I/O

官方文档:https://python.langchain.com/docs/get_started/introduction/ LangChain是一个能够利用大语言模型(LLM,Large Language Model)能力进行快速应用开发的框架: 高度抽象的组件,可以像搭积木一样&a…

AI大模型日报#0529:杨红霞创业入局“端侧模型”、Ilya左膀右臂被Claude团队挖走

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE 4.0)、“零一万物”(Yi-34B)生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff0…

原神抽卡点名程序教程(直接下载用)

今天我要给大家分享一个在抖音上特别火的视频——原神抽卡点名程序教程。 (要源码的私信扣31) 废话不多说,直接上效果图 : 步骤1: 步骤2:(写名单,前面加数字代表星级,用…

【OrangePi AIpro】开箱初体验以及OAK深度相机测试

1. 简介 Orangepi AIPRO 是一款采用昇腾AI技术路线,集成4核64位处理器AI处理器的单板计算机,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接eMMC模块,支持双4K高清输出。 Orange Pi AIpr…

网上打印资料A4纸一般多少钱一张

我们知道,在打印需求上A4纸(210mmx297mm)是较为常见的打印用纸,同时因为纸张的不同在价格上也存在一定的差异。当然,因在网上打印平台打印资料,能够降低一定的租金个人工成本。 因此,在网上打印…

有限元之抛物型方程初边值问题解法

目录 一、原方程的变分形式 二、有限元法进行空间半离散 三、差分法进行时间全离散 四、相关量的数值计算 五、编程时的说明 六、算例实现 6.1 C代码 6.2 计算结果 本节我们将采用有限元法联合差分法来数值求解抛物型方程的初边值问题: 其中常数。 一、原方…

cf练习5.29

A ac代码 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);using namespace std;int main() {IOSint t;cin>>t;while(t--){int ans0;int a,b;cin>>a>>b;if(b0){if(a%150) ansa/15;else ansa/151;}else if(b!0…

软件架构设计属性之三:结构性属性浅析

文章目录 引言一、结构性属性的定义二、结构性属性的关键要素1. 组件化2. 模块化3. 层次化4. 接口定义5. 数据流6. 依赖管理 三、结构性属性的设计原则1. 高内聚低耦合2. 松耦合3. 清晰的接口4. 可维护性5. 可扩展性 四、结构性属性的实现策略1. 组件划分2. 模块化设计3. 接口设…

Photoshop粘贴 lorem-ipsum 占位符文本

Photoshop在使用文字工具的时候&#xff0c;点击画布会自动出现一段英文“Lorem Ipsum”&#xff0c;这是占位文本&#xff0c;除了响应速度慢外&#xff0c;目前我也没发现它有什么太大意义。 那么要如何操作才能取消占位文本的填写呢&#xff1f;在菜单栏点 编辑-首选项-文字…

【Linux】如何优雅的检查Linux上的用户登录、关机和重启日志

在诸如Ubuntu、Debian、Linux Mint、Fedora和Red Hat等广受欢迎的Linux发行版中&#xff0c;系统会忠实记录用户的登录、关机、重启以及运行时长信息。这些信息对管理员调查事件、排查故障或汇总用户活动报告极为宝贵。 Linux系统及应用程序日志通常保存在/var/log/目录下&…

100个投资者99个选择使用这款EA,WeTrade发现1个事实

为什么100个投资者会有99个选择使用这款EA&#xff0c;是因为这款EA能提供两个版本吗?是因为能控制风险吗?都不是&#xff0c;WeTrade发现1个事实才是这么多投资者选择的原因&#xff0c;那就是能实现100%的盈利率。 我们都知道外汇狙击手EA提供两种版本&#xff0c;分别是标…

debian11安装留档@VirtualBox

因为debian12无法安装tpot&#xff0c;所以又把11重新安装一遍&#xff0c;以前的安装文档&#xff1a;安装Debian 11 留档-CSDN博客 下载光盘 华为云地址&#xff1a;https://repo.huaweicloud.com/debian-cd/11.0.0/amd64/iso-cd/ 使用了debian11 教育版&#xff0c;比较有…

NSSCTF-Web题目4

[SWPUCTF 2021 新生赛]hardrce 1、题目 2、知识点 rce&#xff1a;远程代码执行、url取反编码 3、解题思路 打开题目 出现一段代码&#xff0c;审计源代码 题目需要我们通过get方式输入变量wllm的值 但是变量的值被过滤了&#xff0c;不能输入字母和\t、\n等值 所以我们需…

操作系统真象还原:一些你可能正感到迷惑的问题

第0章-一些你可能正感到迷惑的问题 这是我看操作系统真象还原这本书的一些记录&#xff1a; 4 软件是如何访问硬件的 硬件在输入输出上大体分为串行和并行&#xff0c;相应的接口也就是串行接口和并行接口。串行硬件通过串行接口与 CPU 通信&#xff0c;反过来也是&#xff…

antd table列选中效果实现

前言 开发中有一个需要呈现不同时间点各个气象要素的值需求&#xff0c;我觉得一个table可以实现这类数据的展示&#xff0c;只是因为时间点时关注的重点&#xff0c;所以需要列选中效果&#xff0c;清晰的展示时间点下的要素数据。我选择的是antd的table组件&#xff0c;这个…

每日复盘-20240529

20240529 六日涨幅最大: ------1--------300956--------- 英力股份 五日涨幅最大: ------1--------301361--------- 众智科技 四日涨幅最大: ------1--------301361--------- 众智科技 三日涨幅最大: ------1--------300637--------- 扬帆新材 二日涨幅最大: ------1--------30…

【busybox记录】【shell指令】rmdir

目录 内容来源&#xff1a; 【GUN】【rmdir】指令介绍 【busybox】【rmdir】指令介绍 【linux】【rmdir】指令介绍 使用示例&#xff1a; 删除空目录 - 默认 删除dirname下的所有空目录&#xff0c;包括因删除其他目录而变为空的目录 常用组合指令&#xff1a; 指令不…