【第二部分:結構】ARM Realm Management Monitor specification

目錄

  • 概念
    • 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.pswp.cn/news/163845.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163845.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163845.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

洞悉今日,把握明日:咨詢公司的關鍵策略揭秘

在快節奏且充滿不確定性的商業環境中,能夠洞悉當前市場動態并預測未來趨勢的企業更有可能獲得成功。咨詢公司在這個過程中扮演著關鍵角色,本文將探討咨詢公司如何幫助企業洞悉現狀并把握未來趨勢,以及他們運用的關鍵策略。 咨詢公司的市場洞察…

百度地圖,地市區域描邊

描邊首先需要各個點的經緯度數據 json數據下載 直接復制粘貼進入頁面ctrls保存就可以了。 如果需要某省中的各個地市描邊可以點擊這個省的進行下載,這里以山東為例,我是先下載了山東的json數據,但是發現只有山東省下各個市的描邊,于是又下了中…

Mac下載的軟件顯示文件已損壞,如何解決文件已損壞問題,讓文件可以正常運行

Mac下載的軟件顯示文件已損壞,如何解決文件已損壞問題,讓文件可以正常運行 設備/引擎:Mac(11.6)/Mac Mini 開發工具:終端 開發需求:讓顯示已損壞的文件順利安裝到電腦 大家肯定都遇到過下載…

ESP32 MicroPython 顏色及二維碼識別?

ESP32 MicroPython 顏色及二維碼識別? 1、顏色識別2、二維碼識別 1、顏色識別 使用AI顏色識別功能,可以實現顏色辨別、顏色追蹤等應用。顏色識別模型內置有9種常見的顏色識別和一種顏色學習識別模式。他們分別是: ai.COLOR_RED 表示識別紅色 ai.COLOR…

【Linux】關系運算符、shell判斷腳本執行時是否有傳參、判斷文件/文件夾是否存在、判斷字符串是否相等、判斷上個命令執行是否正常、判斷字符串是否為空

🦄 個人主頁——🎐個人主頁 🎐?🍁 🪁🍁🪁🍁🪁🍁🪁🍁 感謝點贊和關注 ,每天進步一點點!加油!&…

全網最詳細的安裝pytorch GPU方法,一次安裝成功!!包括安裝失敗后的處理方法!

文章目錄 前提---查看是否有NVIDIV英偉達顯卡【笑哭】一、查看電腦的顯卡驅動版本方法一:在cmd命令窗口中輸入nvidia-smi,可以發現版本為12.2方法2:點擊NVIDIA控制面板→系統信息 二、安裝CUDA方法1: 在pytorch官網https://pytorc…

Redis高可用之主從復制及哨兵模式

一、Redis的主從復制 1.1 Redis主從復制定義 主從復制是redis實現高可用的基礎,哨兵模式和集群都是在主從復制的基礎之上實現高可用; 主從復制實現數據的多級備份,以及讀寫分離(主服務器負責寫,從服務器只能讀) 1.2 主從復制流…

學習Python和深度學習基礎

1. Python基礎知識 學習Python的基本語法、數據類型、控制流等基礎知識。掌握常用的Python庫,如NumPy和Pandas,它們在深度學習中經常被使用。 2. 深度學習基礎 了解深度學習的基本概念,包括神經網絡、前向傳播、反向傳播等。學習深度學習框…

Disasm 示例程序改寫和適配

Disasm 示例程序改寫和適配 簡介 用途 可用于反匯編x86的二進制匯編文件&#xff0c;展示出來內部的反匯編原理和流程。原由 最近在看<<C 反匯編與逆向分析技術揭秘>>這本書籍&#xff0c;在第一張的簡介中我們可以看到ProViem這個反匯編開源工具的內容&#x…

無線收發器芯片Si24R1 兼容替代NRF24L01

Si24R1是一款工作在2.4-2.5GHz世界通用ISM頻段的單片無線收發器芯片。無線收發器包括&#xff1a;頻率發生器、集成嵌入式ARQ基帶協議引擎、功率放大器、晶體振蕩器調制器、解調器。輸出功率頻道選擇和協議的設置可以通過SPI接口進行設置。是目前2.4G無線射頻芯片中&#xff0c…

Java 文件處理工具類詳解

在軟件開發中,文件處理是一個常見的任務,我們經常需要讀取、寫入和管理文件。為了更便捷地處理文件相關操作,我們編寫了一個 FileUtils 工具類,提供了一些有用的文件處理方法。 工具類介紹 FileUtils 工具類包含了一些常用的文件處理方法,主要功能如下: 獲取統一的文件…

Git本地庫操作

對本地庫的操作很少&#xff0c;我們學習1~6節即可&#xff0c;其他了解下。我們可以在idea中完成對本地庫還有遠程庫的操作&#xff0c;可視化界面用起來更加舒適而且也不會混淆。 1. Git概述 Git 是一個免費的、開源的分布式版本控制系統&#xff0c;可以快速高效地處理從小…

[個人筆記] Windows配置OpenSSH免密連接

Windows - 運維篇 第七章 Windows配置OpenSSH免密連接 Windows - 運維篇系列文章回顧Windows配置OpenSSH免密連接參考來源 系列文章回顧 第一章 遷移WinSrv系統到虛擬機 第二章 本地安全策略xcopy實現實時備份文件夾內容 第三章 利用cmd自帶的icacls命令導出文件的ACL權限 第四…

JavaScript啟動本地應用程序

JavaScript調起本地應用程序 以下內容&#xff0c;自定義部分我也還未經過實際驗證&#xff0c;酌情查看。 文章目錄 JavaScript調起本地應用程序確定協議調用協議傳參自定義寫入協議獲取參數 在瀏覽器中通過 JavaScript調起本地應用程序的一個可行方法就是 通過協議調起。 …

git 文件被莫名其妙的或略且無論如何都查不到哪個.gitignore文件忽略的

先說解決辦法&#xff1a;git check-ignore -v [文件路徑] 這個命令會返回一個忽略規則&#xff0c;以及該規則在哪個文件中定義的&#xff0c;該規則使得指定的文件被忽略。 1.遇到的問題 同項目組&#xff0c;其他同學都可以正常的提交.meta文件&#xff0c;我的提交就出現以…

Oracle通過MyBatis執行批量插入與更新問題

最近看一個老項目&#xff0c;使用的Oracle數據庫&#xff0c;發現要使用MyBatis執行批量操作還是不太一樣。 下面我們來看一下&#xff0c;Oracle數據庫&#xff0c;如何使用MyBatis來批量插入和更新。 批量插入 因為Oracle和MySQL的insert還不太一樣&#xff0c;Oracle不能…

canal本地安裝和使用

1、組件版本 canal.deployer-1.1.7 kafka_2.13-2.6.0 jdk8 apache-zookeeper-3.6.0-bin mysql5.7 2、解壓canal.deployer-1.1.7 2.1、修改canal.properties配置文件 ##改為kafka canal.serverModekafka## 改為instance canal.destinations instance## 改為true&#x…

STM32——獨立看門狗

文章目錄 一、看門狗基礎介紹&#xff08;一&#xff09;看門狗概述&#xff1a;&#xff08;二&#xff09;看門狗的作用&#xff1a;&#xff08;三&#xff09;看門狗的原理&#xff1a;&#xff08;四&#xff09;為什么需要使用看門狗來提高系統的可靠性&#xff1a;&…

Linux 中的 rm 命令及示例

Linux 中的 rm 命令及示例 rm命令是Linux中最常見、最基礎的命令之一。即使您對 Linux 的使用經驗有限&#xff0c;您也很可能聽說過它。該命令的主要目的是刪除文件和目錄。使用此命令刪除文件和目錄無法撤消。 這意味著您應該謹慎使用此命令&#xff0c;因為如果沒有備份&am…