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

安全之安全(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引擎不能通过错误记录寄存器等途径泄露机密信息。

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

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

相关文章

Django之rest_framework(九)

一、分页-PageNumberPagination类 REST framework提供了分页的支持 官网:Pagination - Django REST framework 1.1、全局设置 # settings.py REST_FRAMEWORK = {DEFAULT_PAGINATION_CLASS: rest_framework.pagination.PageNumberPagination,PAGE_SIZE: 100 # 每页数目 }提示…

【YashanDB知识库】自动选举配置错误引发的一系列问题

问题现象 问题出现的步骤/操作: ● 配置自动选举,数据库备库手动发起switch over,命令会报错 ● 主、备库变为只读状态,数据库无法进行读写操作 ● shutdown immediate 停止数据库,此时发现数据库一直没有退出&…

leetCode-hot100-数组专题之子数组+二维数组

数组专题之子数组二维数组 子数组238.除自身以外数组的乘积560.和为K的子数组 二维数组48.旋转图像 子数组 数组的子数组问题是算法中常见的一类问题,通常涉及到数组的连续元素。在解决这类问题时,常用的方法有前缀和、滑动窗口、双指针,分治…

C++模拟实现stack和queue

1 stack 1.1概念 stl栈 1.2栈概念 1.3代码 2 queue 2.1概念 stl队列 2.2队列概念 2.3代码

java中,怎样用最简单方法实现写word文档

在跨平台环境中实现写word时,如果用现成的库,就会涉及跨平台兼容性问题,比如在安卓与java中实现写word的功能。还有一个问题就是,完全用程序生成word文档,工作量较大。所以采用了模板替换的方法。 docx文档本质就是一…

Thingsboard规则链:Calculate Delta节点详解

在物联网(IoT)应用中,对设备数据的实时分析和处理是优化运营、预测维护的关键。Thingsboard作为一款功能强大的物联网平台,其规则引擎提供了丰富的节点来处理和分析数据流。其中,Calculate Delta节点是一个重要的工具,用于计算连续…

数据源不同?奥威BI软件是这么做的

面对数据源不同的情况,BI(商业智能)软件如奥威BI软件通常通过一系列技术和方法来实现数据的整理。以下以奥威BI软件为例,详细解释其如何整理不同数据源的数据: 数据收集: 爬虫技术:奥威BI软件…

六面体大米装袋机在提升大米包装效率中的作用

在当今社会,随着科技的飞速发展,各行各业都在寻求创新与突破,以提升生产效率和降低成本。而在大米包装领域,六面体大米装袋机的出现,无疑为整个行业带来了革命性的变化。这种先进的机械设备不仅提高了大米的包装效率&a…

MySQL-innodb后台线程

文章目录 一、结构图二、后台线程①Master Thread②IO Thread③Purge Thread④Page Cleaner Thread 拓展知识 一、结构图 二、后台线程 InnoDB是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务 后台线程有: ①Master Thr…

文件上传巩固及流量分析

1.[GXYCTF2019]BabyUpload 1)打开题目也是没有任何提示, 2)进入环境,看到下面页面猜测是文件上传漏洞,下面开始传文件 3)首先上传一句话木马 a.php,代码如下: 下面这个代码中并没有…

Mybatis多表查询

MyBatis-多表查询-一对一查询(方式一) 一个菜品对应一个分类 直接菜品记录category对象 菜品id写入Dish,后面的分类直接写入 Category类 封装,如果sql不能封装上,那么直接使用resultmap封装 使用resultType只能封装基本属性 所以要定义一个resultmap手动封装 使用标签 要…

整理三维空间内4点的209个结构

4点的209个结构按照旋转对称的关系可分成73组 如1,72,177为一组, z y x z y x 1 72 177 1 2 10 93 4 * 4 74 39 2 * 3 73 179 5 * 5 76 178 3 * 6 75 133 6 7 77 180 7 8 8 89 34 9 11 95 35 * 35 91 …

怎么藏族翻译中文在线翻译?更好地了解藏族文化

怎么藏族翻译中文在线翻译?着全球化的发展,语言交流的重要性日益凸显。藏族,作为中国的一个古老而神秘的民族,其语言对于很多人来说充满了神秘感。然而,在今天的数字化时代,我们有了更多的工具来打破语言壁…

unity中的常用属性修饰符

unity中的常用属性修饰符 一、前言二、常用修饰符三、结语 一、前言 在做unity开发编辑脚本的时候经常会用到属性修饰符,使开发调试更加便捷。初学者见过最多的莫过于[Header("标题文本")]了吧,除此之外其实还有很多,这篇文章列举说…

CI/CD(基于ESP-IDF)

主要参考资料 B站乐鑫信息科技《【乐鑫全球开发者大会】DevCon23 #15 |通过 CI/CD 进行流水线开发》 pytest-embedded乐鑫文档: https://docs.espressif.com/projects/pytest-embedded/en/latest/api.html 目录 CI/CD简介乐鑫内部CI/CD测试GitLab CI/CDGitHub Actio…

电子阅览室解决方案

一.方案概述 “电子阅览室”概念一经提出,就得到了广泛的关注,纷纷组织力量进行探讨、研究和开发,进行各种模型的试验。随着数字地球概念、技术、应用领域的发展,电子阅览室已成为数字地球家庭的成员,为信息高速公路提…

奥利奥罚单背后的启示:企业合规与反垄断的边界

在全球化的经济环境中,企业面临着激烈的市场竞争。为了在竞争中脱颖而出,一些企业可能会采取不正当的竞争手段,如垄断、价格歧视等。然而,这些行为往往会触犯反垄断法规,给企业带来严重的法律风险。最近,奥…

Activity详解,用最通俗的语言告诉你什么是Activity(一)

大家好,我是小布丁。 今天还是分享Android基础知识,有Android基础的朋友都知道,Activity作为Android四大组件之一,掌管可视化界面。也是大多数人刚接触Android学的第一课。下面我来带大家学习/复习这部分知识,请大家不…

海尔智家牵手罗兰-加洛斯,看全球创牌再升级

晚春的巴黎西郊,古典建筑群与七叶树林荫交相掩映,坐落于此的罗兰加洛斯球场内座无虚席。 来自全球各地的数万观众,正与场外街道上的驻足者们一起,等待着全世界最美好的网球声响起…… 当地时间5月26日,全球四大职业网…

大数据技术分享 | Kylin入门系列:基础介绍篇

Kylin入门教程 在大数据时代,如何高效地处理和分析海量数据成为了企业面临的挑战之一。Apache Kylin作为一个开源的分布式分析引擎,提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,使得对超大规模数据集的分析变…