ARM CCA机密计算安全模型之固件更新

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

目录

1、远程更新

2、本地更新

3、鲁棒性


1、远程更新

Arm欢迎关于CCA固件更新需求的反馈。一般而言,CCA固件更新过程可以描述如下:

  1. CCA固件更新客户端使用固件更新协议与远程更新服务通信。
  2. CCA固件更新客户端将下载的CCA固件复制到临时暂存位置。
  3. 系统重启,并在启动过程中使用更新。

[R0134] Arm建议固件更新协议元数据的签名和验证应独立于固件签名和固件验证。
固件更新协议的选择不在CCA的范围内。例如,固件更新协议可能包含安全功能,如更新目标控制和防回滚计数器控制。这些功能可能包括协议级固件更新控制消息,以及固件负载。
固件更新客户端应验证CCA固件更新或CCA固件更新控制消息来自授权的更新源。在这种情况下,源通常不同于镜像签名者。例如,镜像可能由CCA固件分发者签名,而更新过程可能由服务提供商或托管提供商单独控制。
只有在重启后,更新才会生效。重启的范围可能会根据更新的范围有所不同。
CCA固件更新的示例范围包括:

  • 根更新:影响Monitor安全域或CCA系统安全域中的一个受信子系统
  • Realm世界更新:仅影响Realm世界
  • RMM更新:仅影响Realm世界中的CCA组件

本文档使用“执行更新”一词描述固件更新客户端将更新提供给CCA固件后,验证、安装和执行更新的过程。更新影响CCA的可信性,CCA固件有责任确保只有授权的更新才能被执行。
固件更新只能由更受信的安全域或安全域中最受信的组件执行。

[R0142] 根更新只能由CCA HES主机执行。

[R0143] Realm世界更新可以由Monitor执行。

[R0144] RMM更新可以由RMM执行。

根更新需要系统完全重启,Realm世界更新仅需要Realm世界的重启。
RMM更新可能只需要重启RMM,而不需要重启所有Realms。这样的Realm世界动态更新不在当前CCA版本范围内,但可能在后续版本中解决。

[R0094] 至少更新的有效性应始终在执行更新时进行验证。
根据生态系统的需求,有效更新可能是任何正确签名并符合防回滚策略的更新。或者系统可能需要通过安全固件更新协议进行显式更新授权后才能执行更新。

暂存位置通常是通用的外部存储。根据生态系统的需求,可能需要额外的完整性控制以防止未经授权的替换。例如,可能的要求是使用本地哈希锁定方案,或在显式更新授权消息中实现防重放机制。

[R0098] 在将身份元数据复制到暂存区之前,必须知道并验证至少加载已签名的CCA固件身份元数据所需的内存。

[R0135] 必须在将镜像负载复制到片上内存或受保护的外部内存之前,知道并验证所需的内存。

[R0136] 必须在从外部存储复制数据之前,确保分配并可用所需内存。
例如,签名的固件身份元数据和固件负载可以组合成一个固定最大大小的镜像。然后实现可以确保在复制之前始终有一个至少该大小的固定缓冲区可用。

或者,签名的固件身份元数据可以是固定大小,并包含负载的大小。然后,身份元数据可以复制到固定缓冲区并在那里验证,然后基于已验证的负载大小分配第二个动态缓冲区。

[R0137] 数据不能复制超出暂存区的边界。这防止缓冲区溢出攻击。

[R0099] 重启后,启动过程的相关部分检测到可用的更新,并尝试以正常方式加载它。
系统在任何更新后必须保持可认证性。
根更新后系统始终是可认证的,因为它需要系统完全重启。它不会在运行时更改依赖方所认证的系统启动状态。
Realm世界更新后,Realm世界将重启,包括所有的Realms,确保更新后的Realms根据新的Realm世界状态进行认证。
在动态RMM更新的情况下,系统的启动状态在运行时发生了变化,与依赖方在更新之前认证的状态相比有所不同。RMM执行动态更新的能力必须反映在最初对依赖方的认证中。例如,作为服务级别协议的一部分,针对固件版本和测量值,或者针对已签名的固件身份元数据。
在动态RMM更新的情况下,无法可靠地更新任何已认证的Realms的状态。这也是为什么执行动态更新的能力必须是最初认证契约的一部分。

然而,任何动态RMM更新后的认证请求必须反映CCA平台的新状态。
同样,在动态RMM更新的情况下,更新后的状态可能会影响CCA派生的Realm密钥。
动态RMM更新和CCA派生的Realm密钥不在当前CCA版本范围内,可能会在后续版本中解决。

[R0101] 依赖方可以确定CCA平台的实现是否具备世界更新或Realm世界增量更新的能力。

2、本地更新

本地更新是指需要物理访问系统的更新。例如,通过USB更新、串行链路更新或启动过程中的救援加载程序功能。
总体过程及其安全属性应与远程更新的情况相同。例如,USB或串行链路更新可以视为固件更新协议的不同传输方式。或者救援加载程序可以视为CCA固件更新客户端的特殊情况。

3、鲁棒性

[R0100] 任何CCA固件更新机制必须能够应对更新失败。
防回滚和恢复应按照CCA固件启动的定义进行管理。

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

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

相关文章

Assimp的ReadFileFromMemory函数踩坑

使用ReadFileFromMemory函数加载模型的问题 使用ReadFileFromMemory函数无法加载obj和md3等模型数据分散在多个文件中的模型。obj模型通常有一部分数据(如纹理数据)在mtl文件中保存,如果只把obj文件加载到内存中,并通过ReadFileF…

机组的概述

计算机系统组成 硬件系统和软件系统 计算机硬件 1.冯诺依曼机基本思想 特点 1.采用“存储程序”工作方式 2.硬件系统由运算器,存储器,控制器,输入输出设备组成 3.指令和数据存在存储器中,形式无区别 4.指令和数据用二进制代…

后端开发入门超完整速成路线(算法篇)

引言 后端开发是软件开发中不可或缺的一部分,它涉及到服务器、数据库、API等核心组件的构建和维护。对于初学者来说,掌握算法和数据结构是进入后端开发领域的基础。本文将为你提供一个超完整的算法学习路线,帮助你快速入门,并在文…

主键有多种设计

1. 自增ID id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID 优点: 简单直观自动生成递增有序,对索引友好 缺点: 可能暴露业务信息分布式系统下需要特殊处理合并数据时可能冲突 2. UUID/GUID id char(36) NOT NULL COMMENT 主键ID …

【面试】后端开发面试中常见数据结构及应用场景、原理总结

在后端开发面试中,常见的数据结构包括数组、链表、栈、队列、二叉树、平衡树、堆、图和哈希表等。以下是这些数据结构的总结,包括它们的应用场景、优缺点。 常见数据结构及其应用场景 数据结构应用场景数组存储固定大小的数据集合,如学生成…

TypyScript从入门到精通

TypyScript从入门到精通 TypyScript 是什么?增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型:3.…

Tableau数据可视化与仪表盘搭建-安装教程

下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录,去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装,会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…

049_小驰私房菜_MTK Camera debug,通过adb 命令读写Camera sensor寄存器地址的值

一、读取/写入 某个寄存器地址的值 设备先adb root 1)读取寄存器地址的值 /proc/driver # echo "0x0a34" > camsensor && dmesg |grep -i a34 2)往寄存器地址写值 /proc/driver # echo "0x3304 0x66” > camsensor && dmesg |grep -…

Scala_【4】流程控制

第四章 分支控制if-else单分支双分支多分支返回值嵌套分支 For循环控制包含边界不包含边界循环守卫循环步长嵌套循环循环返回值 While循环Break友情链接 分支控制if-else 单分支 双分支 多分支 返回值 嵌套分支 For循环控制 Scala也为for循环这一常见的控制结构提供了非常多的…

Flink源码解析之:Flink On Yarn模式任务提交部署过程解析

Flink源码解析之:Flink On Yarn模式任务提交部署过程解析 一、Flink on Yarn部署模式概述 Apache Hadoop YARN 在许多数据处理框架中都很流行。 Flink 服务提交给 YARN 的 ResourceManager,后者会在 YARN NodeManagers 管理的机器上生成容器。 Flink 将…

Backend - C# 的日志 NLog日志

目录 一、注入依赖和使用 logger 二、配置记录文件 1.安装插件 NLog 2.创建 nlog.config 配置文件 3. Programs配置日志信息 4. 设置 appsettings.json 的 LogLevel 5. 日志设定文件和日志级别的优先级 (1)常见的日志级别优先级 (2&…

ESP32自动下载电路分享

下面是一个ESP32系列或者ESP8266等电路的一个自动下载电路 在ESP32等模块需要烧写程序的时候,需要通过将EN引脚更改为低电平并将IO0引脚设置为低电平来切换到烧写模式。 有时候也会采用先将IO接到一个按键上,按住按键拉低IO0的同时重新上电的方式进入烧写…

QML自定义数值编辑框SpinBox样式

代码展示 import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.1Window {visible: truewidth: 640height: 480title: qsTr("Hello World")SpinBox {id: controlvalue: 50editable: truecontentItem: TextInput {z: 2text: control.textFromVal…

魅族手机调用tts失败解决

安装了阅读、MultiTTS之后,发现阅读的时候一直tts初始化失败,换了多个tts软件也不行。。。 解决方法:tts软件设置后台运行权限 打开“手机管家”权限管理后台管理找到自己安装的tts软件(比如我是MultiTTS)&#xff0c…

1-markdown转网页样式页面 --[制作网页模板] 【测试代码下载】

markdown转网页 将Markdown转换为带有样式的网页页面通常涉及以下几个步骤:首先,需要使用Markdown解析器将Markdown文本转换为HTML;其次,应用CSS样式来美化HTML内容。此外,还可以加入JavaScript以增加交互性。下面我将…

Eplan 项目结构(高层代号、安装地点、位置代号)

Eplan中的项目结构分为3个层次: (1)功能面结构。指明这个系统的功能,有什么用途。在EPlan中,指的就是"高层代号()"。 一般指的是线体。 (2)位置面结构。指明该…

《Armv8-A virtualization》学习笔记

1.MAIR 的全称是 Memory Attribute Indirection Register。它是ARM架构中的一种寄存器,用于定义内存的属性,并提供一种间接访问内存属性的机制。MAIR寄存器包含多个字段,这些字段指示不同类型内存的属性,例如是否可以缓存、是否为…

NLP 复习大纲

CH3 激活函数意义 增强网络表达能力,引入非线性因素 连续可导的非线性函数 尽可能简单 导数的值域要在合适的范围内 为什么会发生梯度消失 误差传播的迭代公式为: 其中需要用到激活函数的导数,而激活函数的导数值小于1时,误差经过…

如何使用OBS Studio录制屏幕?

可以进入官网或github进行下载: https://obsproject.com/download 安装包解压后进入bin 进入64-bit 选择obs 64 进入OBS Studio后在来源内右键,选择添加 选择添加显示器采集即可录取整个屏幕,窗口采集可选择窗口进行录制 选择对应显示器即配置…

深入理解连接池:从数据库到HTTP的优化之道

在现代应用开发中,高效的资源管理是关键,其中连接池(Connection Pool)技术起到了至关重要的作用。本文将带你深入了解连接池的概念及其在数据库和HTTP通信中的应用,结合 JDBC 与 Druid 的关系,以及 HttpURL…