ARM CCA机密计算安全模型之安全生命周期管理

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

目录

一、固件启用的调试

二、CCA系统安全生命周期

三、重新供应

四、可信子系统与CCA HES


启用 CCA(机密计算架构)的安全系统是指 CCA 平台的实现处于可信状态。
由于多种原因,CCA 启用系统可能处于不安全状态,例如:

  • 在制造组装、测试和配置过程中
  • 在供应链配置过程中
  • 在调试、诊断和维修阶段

Secure world(安全世界)和Normal world(正常世界)的安全生命周期不属于 CCA 及本文件的范围。
预期 Normal world 或 Secure world 的调试和诊断可启用,而不影响 CCA 的安全保障。

一、固件启用的调试

CCA 固件是指可能影响 CCA 安全保障的所有固件,包括应用 PE 固件和受信子系统固件。

[R0103] CCA 固件的可信性始终可证明。
在安全系统上,CCA 仅会在启动时加载授权的 CCA 固件。
CCA 固件的功能,包括可能会妥协 CCA 安全保障的功能,总是反映在签署的固件身份元数据中,捕获在启动状态中,并包含在 CCA 平台证明中。

[R0104] 可能危及 CCA 安全保障的功能包括可能泄露 CCA 资产或影响 CCA 固件或 Realm(领域)执行流的任何功能。
例如,可能危及 CCA 安全保障的功能包括调试功能,如自托管调试和远程调试,或暴露诊断。

仅对 CCA 固件的功能进行证明,而不会证明这些功能在运行时是否被实际使用。
例如,支持调试功能的 CCA 固件可能会实施额外的授权步骤,如访问远程调试或揭示诊断的额外授权流程。但是证明的属性是这些功能的存在,而不是它们是否被实际使用。

[R0105] 依赖方始终能够通过 CCA 平台证明中的启动状态确定 CCA 固件的全部功能。
依赖方可以通过直接验证 CCA 固件测量值实现这一点。或者,它也可以通过验证签署的 CCA 固件身份元数据和受信固件签署者实现。

当前 CCA 版本不支持 CCA 派生的 Realm 密钥,也不支持 CCA 固件用于 CCA HES 以外的 CCA 密钥派生功能。
此类密钥派生功能可能会在未来版本中添加。届时,必须制定额外的规则,以确保调试启用的 CCA 固件无法派生与安全 CCA 固件相同的密钥。此类规则可能会要求在固件身份元数据中的签署者 ID 和安全版本控制,用于 CCA 密钥派生。

二、CCA系统安全生命周期

CCA 系统安全域将经历如图 10 所示的安全生命周期。


实际实现可能在供应过程中有额外的子状态,以支持更复杂的供应链和部署模型。
CCA 不限制或约束实际的供应过程,除了最终结果应具有此处描述的可证明属性。
为定义 CCA 启用系统的可证明属性,本文件使用了较为简单的模型。

生命周期从 CCA 启用系统的制造和测试开始。在此阶段,系统没有证明身份,系统的任何安全功能可能被禁用或绕过。
下一步是配置 CCA 硬件配置参数。

[R0106] 在安全配置之前,系统会进行安全锁定,确保只能运行授权的 CCA 固件,且外部诊断和调试接口已禁用或锁定,以免暴露 CCA 硬件配置参数。
例如,在启用 CCA HES 的系统上,可能只需禁用 CCA HES 主机调试即可保护 CCA 硬件配置参数。建议锁定整个系统,并可能需要保护非 CCA 的安全功能。

一旦供应完成,生命周期将进入安全状态,系统可以与实施验证者注册,以便依赖方验证部署在系统上的Realms(领域)。

[R0107] 只有当系统已完成所有CCA硬件参数的供应锁定时,供应过程才算完成。硬件参数被成功提供后,其值将不可更改。

不可更改意味着CCA硬件参数在整个CCA安全生命周期内不会改变。一些实现可能支持硬件恢复机制,例如允许系统在维修中心进行重新供应后获得新身份。在CCA平台安全生命周期中,这等同于退役先前身份并重新启动新身份的安全供应状态。

系统原则上可以在CCA安全供应状态下进行验证,只要它能够派生出有效的CPAK(平台认证密钥)。但是,这种状态下的系统不应被信任,因为它可能尚未完全供应或锁定。因此,系统只有在进入安全状态后才能与验证者注册。

从安全状态,系统可以进入启用可能破坏CCA安全保证的调试或诊断状态。这可以通过加载支持调试的CCA固件或启用外部调试或诊断接口来实现。

为了系统保持可验证,其验证状态在运行时不能改变。

[R0108] 在安全系统上,只有在系统重启后、初始启动代码完成之前,才能启用CCA固件启用的调试或外部调试功能。

[R0109] 在安全系统上,只有CCA HES可以启用外部调试或诊断接口。

[R0110] 只有经过明确授权,外部调试或诊断接口才能启用。

[R0111] 授权只能由可信源发出,并由CCA HES验证。

CCA未规定特定的硬件级调试授权协议,但任何此类协议应至少与CCA验证启动的加密安全性相当。

调试状态可以是可恢复的,也可以是不可恢复的。

[R0112] 系统只能在重启后恢复到安全状态。

[R0113] CCA HES确保所有调试接口在恢复到安全状态之前已关闭,并且只能加载授权的CCA固件。

[R0114] 领域管理调试状态代表影响领域世界的外部或CCA固件调试功能。它既可验证也可恢复。

[R0115] 根调试状态代表影响监控器安全域和CCA系统安全域的外部或CCA固件调试功能。在支持CCA HES的CCA系统上,这种状态既可验证也可恢复。

[R0116] 退役状态代表影响CCA HES的外部或CCA固件调试功能。

[R0117] Arm建议在CCA安全系统上永久禁用所有影响CCA HES的调试功能。

[R0118] 在进入退役状态之前,至少应将CCA硬件参数永久置于无法使用的状态。

退役状态不可验证且不可逆。

[R0124] 对于退役系统,CCA验证身份必须撤销,无法恢复或重复使用。

当前版本的CCA不支持派生的Realm密钥,也不支持CCA固件在CCA HES外部的密钥派生。这些功能可能会在未来版本中添加,届时将引入额外的规则,确保在调试状态下派生的密钥与安全状态下的密钥不同。例如,可以通过在CCA密钥派生中包含CCA平台安全生命周期状态来实现。

三、重新供应

严格来说,CCA系统安全生命周期定义了不可变的CCA系统安全域属性的生命周期。这包括不可变的初始启动代码、安全供应的硬件参数,以及CCA系统安全域不可变的硬件元素的安全属性。

不可变的CCA系统安全域属性构成了CCA启用系统最根本的信任根。

[R0138] 不可变的属性通过CCA平台验证密钥和身份间接验证。这意味着这些属性以及相关的CCA平台验证密钥必须在CCA系统安全生命周期的任何可验证状态下保持不变。

进入任何不可验证状态可能会撤销或使不可变的安全声明无效,并且验证者无法确定CCA平台的可信度。

[R0139] 不可变的CCA系统安全域属性只能在供应状态下或在特定的实现恢复过程中(如退役后)被修改。对不可变属性的任何更改都构成重新供应事件,因为CCA平台验证密钥和身份必须更改以反映新的不可变安全属性。

这也包括当CCA平台验证密钥和身份本身发生更改时(例如更新安全算法或恢复被破坏的CCA平台密钥后)。任何重新供应事件都会撤销先前的CCA平台验证密钥和身份,并发放新的CCA平台验证密钥和身份。

Arm CCA不定义供应、重新供应或恢复过程,这些是特定实现和生态系统相关的内容,不在本规范的范围内。

四、可信子系统与CCA HES

预计可信子系统将遵循与主CCA系统安全生命周期相同的模式和规则。

[R0145] 可信子系统可以将其安全生命周期管理委托给另一个可信子系统。例如,电源管理子系统可以将其安全生命周期管理委托给CCA HES主机。

[R0119] 任何CCA可信子系统都不受根调试影响。

[R0120] 任何影响CCA可信子系统的外部或CCA固件启用的调试功能只能在系统重置后启用。

[R0121] 任何影响CCA可信子系统的外部或CCA固件启用的调试功能只能由CCA HES启用。

[R0122] Arm建议在CCA安全系统上永久禁用所有影响CCA HES的调试功能。

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

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

相关文章

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群,zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志,发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法: 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…

Golang的并发编程框架比较

# Golang的并发编程框架比较 中的并发编程 在现代软件开发中,处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言,提供了丰富的并发编程框架和工具,使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…

【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历

明天开始考试周,百无聊赖开了一把CTF,还顺带体验了下二开工具,让无聊的Z3很开心🙂 CachedVisitor这题 大概描述一下:从main.lua加载一段visit.script中被##LUA_START##(.-)##LUA_END##包裹的lua代码 main.lua loca…

单纯形法的学习笔记

文章目录 A. 单纯形法概述1. 优化模型示例 B. 理论基础C. 算法思想D. 实现算法1. 线性规划的标准型2. 顶点解的理解及表示2.1 在标准型中变量取值为零的意义2.2 顶点解的表示 3. 最优性判断4. 解的更新5. 完成迭代过程 E. 单纯形法的基本概念与本文对照F. 文档源码 前言&#x…

【VBA】【EXCEL】将某列内容横向粘贴到指定行

Sub CopyRowToColumn()On Error GoTo ErrorHandler 添加错误处理Application.ScreenUpdating FalseApplication.Calculation xlCalculationManualApplication.EnableEvents False 禁用事件处理Dim lastCol As LongDim lastRow As LongDim i As Long, colCount As LongDim …

JS进阶--JS听到了不灭的回响

作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 作用域分为局部和全局 局部作用域 局部作用域分为函数和块 那 什么是块作用域呢? 在 JavaScript 中使用 { } 包裹的代码称为代码块…

计算机网络 (26)互联网的路由选择协议

一、路由选择协议的基本概念 路由选择协议是计算机网络中用于确定数据包在网络中传输路径的一种协议。它帮助路由器构建和维护路由表,以便根据目的地址将数据包转发到正确的下一跳路由器。路由选择协议分为静态路由选择协议和动态路由选择协议两大类。 二、静态路由…

Spring项目创建流程及配置文件bean标签参数简介

1. 项目搭建流程 1. pom.xml中引入依赖Spring-webMVC <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><…

左神算法基础巩固--2

文章目录 稳定性选择排序冒泡排序插入排序归并排序快速排序堆排序 哈希表链表解题 稳定性 稳定性是指算法在排序过程中保持相等元素之间相对顺序的特性。具体来说&#xff0c;如果一个排序算法是稳定的&#xff0c;那么对于任意两个相等的元素&#xff0c;在排序前它们的相对顺…

UART串口数据分析

串口基础知识详细介绍&#xff1a; 该链接详细介绍了串并行、单双工、同异步、连接方式 https://blog.csdn.net/weixin_43386810/article/details/127156063 该文章将介绍串口数据的电平变化、波特率计算、脉宽计算以及数据传输量的计算。 捕获工具&#xff1a;逻辑分析仪&…

机器学习模型评估指标

模型的评估指标是衡量一个模型应用于对应任务的契合程度&#xff0c;常见的指标有&#xff1a; 准确率&#xff08;Accuracy&#xff09;: 正确预测的样本数占总样本数的比例。适用于类别分布均衡的数据集。 精确率&#xff08;Precision&#xff09;: 在所有被预测为正类的样…

面试题解,JVM中的“类加载”剖析

一、JVM类加载机制说一下 其中&#xff0c;从加载到初始化就是我们的类加载阶段&#xff0c;我们逐一来分析 加载 “加载 loading”是整个类加载&#xff08;class loading&#xff09;过程的一个阶段&#xff0c;加载阶段JVM需要完成以下 3 件事情&#xff1a; 1&#xff0…

腾讯云AI代码助手编程挑战赛-古诗词学习

一、作品介绍 在科技与文化深度交融的当下&#xff0c;“腾讯云 AI 代码助手编程挑战赛 - 每日古诗词” 宛如一颗璀璨的新星&#xff0c;闪耀登场。它绝非一场普通的赛事&#xff0c;而是一座连接编程智慧与古典诗词韵味的桥梁。 这项挑战赛以独特的视角&#xff0c;将每日古…

GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界

马萨诸塞州沃尔瑟姆-2025年1月6日-触觉智能技术领军企业Gelsight宣布&#xff0c;旗下Gelsight Mini视触觉传感器迎来凝胶触头的更新。经内部测试&#xff0c;新Gel凝胶触头耐用性提升40%&#xff0c;外观与触感与原凝胶触头保持一致。此次升级有效满足了客户在机器人应用中对设…

【C++入门】详解(上)

目录 &#x1f495;1.C中main函数内部———变量的访问顺序 &#x1f495;2.命名空间域namespace &#x1f495;3.命名空间域&#xff08;代码示例&#xff09;&#xff08;不要跳&#xff09; &#x1f495;4.多个命名空间域的内部重名 &#x1f495;5.命名空间域的展开 …

Ungoogled Chromium127 编译指南 MacOS篇(八)- 开始编译

1. 引言 完成了所有依赖包的安装后&#xff0c;我们终于来到了最关键的编译阶段。在开始编译之前&#xff0c;有一些重要的配置信息需要了解。本文将指导您完成整个编译过程。 2. 签名相关说明 虽然在我们的测试编译中不需要进行签名操作&#xff0c;但了解官方的签名要求仍…

使用uniapp 微信小程序一些好用的插件分享

总结一下自己在开发中遇见的一问题&#xff0c;通过引入组件可以快速的解决 1.zxz-uni-data-select 下拉框选择器(添加下拉框检索&#xff0c;多选功能&#xff0c;多选搜索功能&#xff0c;自定义 下拉框插件&#xff0c;使用这个的原因是因为 uniui uview 组件库下拉框太…

腾讯云AI代码助手编程挑战赛-有趣的冷知识分享

作品简介 有趣的冷知识这一编程主要用于对于小朋友的探索力的开发&#xff0c;让小朋友在一开始就对学习具有探索精神。在信息化时代下&#xff0c;会主动去学习自己认知以外的知识&#xff0c;同时丰富了眼界&#xff0c;开拓了新的知识。 技术架构 使用python语言的TK库…

使用 SQL 和表格数据进行问答和 RAG(7)—将表格数据(CSV 或 Excel 文件)加载到向量数据库(ChromaDB)中

将表格数据&#xff08;CSV 或 Excel 文件&#xff09;加载到向量数据库&#xff08;ChromaDB&#xff09;中。这里定义的类 PrepareVectorDBFromTabularData&#xff0c;它的主要功能是读取表格数据文件到DataFrame中、生成嵌入向量、并将这些数据存储在向量数据库的集合中&am…

攻防世界 wtf.sh-150

点进去&#xff0c;发现是一个类似于论坛的网站&#xff0c;并且对报错等做了处理 用御剑扫描一下 ​ 发现是php形式的文件&#xff0c;但点进去访问不了。看看wp&#xff0c;发现此题存在路径穿越漏洞&#xff0c;就是&#xff08;如果应用程序使用用户可控制的数据&#xff0…