当前位置: 首页 > article >正文

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.kler.cn/a/467861.html

相关文章:

  • C语言 扫雷程序设计
  • 【Elasticsearch】文档操作:添加、更新和删除
  • 谷歌浏览器的书签同步功能详解
  • 【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析
  • Swift White Hawkstrider
  • Docker 容器内部如何访问本机的服务
  • 自定义有序Map
  • 【Java基础】力扣3、4
  • java项目之读书笔记共享平台(源码+文档)
  • ros常用命令记录
  • GOGOGO 抽象
  • 「Mac畅玩鸿蒙与硬件51」UI互动应用篇28 - 模拟记账应用
  • 大数据技术(七)—— HBase数据结构与架构
  • java接口下载zip,不生成中间文件,返回前端文件流
  • Fabric部署-docker安装
  • exam0-试卷整理
  • 小试牛刀-SpringBoot集成SOL链
  • 信息科技伦理与道德1:研究方法
  • Codeforces Round 995 (Div.3)
  • 探索 Google Test: 从基础断言到高级 Mock 技巧
  • js canvas绘制五星红旗
  • Outlook2024版如何回到经典Outlook
  • Windows 11 上通过 WSL (Windows Subsystem for Linux) 安装 MySQL 8
  • html+css+js网页设计 美食 美食天下2个页面(里面包含php和mysql)
  • Launcher3主页面加载显示流程分析
  • ROS节点架构设计:提高模块化与可扩展性