汽车信息安全 -- 存到HSM中的密钥还需包裹吗?
目录
1.车规芯片的ROM_KEY
2.密钥加密与包裹
3.瑞萨RZ\T2M的密钥导入
4.小结
在车控类ECU中,我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。
所以大家默认在HSM内部存储的数据等都是可信的,例如CycurHSM方案中使用HSM硬件存储认证启动所需要的公钥,保证该公钥不被篡改;vHSM同理。
但是,最近交流听说有工具可以将某芯片的所有Flash全部dump出来,首先我对这个保持怀疑,其次结合之前从实际调试来看,有部分OEM或者Tier1以明文形式将存储这些密钥信息(最多加个厂家自定义混淆算法)存储在HSM独占DFlash中。假设这个工具是确实存在,那这些明文形式的密钥就有泄露的风险。
所以今天就来看看关于密钥包裹的一系列话题。
1.车规芯片的ROM_KEY
目前国外大多数车规MCU的HSM设计雏形都来源于SHE(Secure Hardware Extensions)。所以我们首先来回顾下,SHE长什么样,如下图所示:

从上图可以看到,SHE中的RAM、NvM、ROM用于存储密钥, 密钥槽定义格式如下:

其中,SECRET_KEY存储在ROM中,是由芯片厂在流片时固化到SHE中,仅能有SHE读取,用户端只能通过索引引用。
这个做法也沿用到了现在的芯片上,例如英飞凌TC3xx的HSM AES引擎中包含了两个Key,分别是PRIVATE_KEY(UID)和SECRET_KEY,如下图:

瑞萨RH850-U2A的AES引擎包含了3个ROM_KEY供其使用;

同样的,NXP S32K3内部也包含了ROM KEY作为设备的信任根,如下图:

一般来说,ROM_KEY 主要是用于密钥的导入、导出和派生。
2.密钥加密与包裹
回到我们开头的话题,如果说工具真能DUMP出HSM内部Flash的数据,那么密钥就会存在泄露的风险,因此就需要对密钥进行数据混淆处理。
首先大家想到的肯定是对密钥进行加密后再存储到Flash中,如下图:

使用的时候再解密出来,但这有个问题,如果存在Flash中的密钥由于ECC等错误造成了加密后的数据出现错误,那么解密出来的数据就不是原来的密钥的呀。

为此,我们需要做什么?
当然是再添加一个完整性,这也就是所谓的密钥包裹(Wrap)。
Key Wrapping = Encryption + Intergrity
这一点我们可以在TC3xx的HSM中得到印证。
TC3xx HSM中的AES引擎前两个密钥槽给到的是Private Key和Secret Key,如何保证数据完整性和机密性?如下图所示:

首先在HSM BootRom里有两个MASK Key和IV,其中Mask-Key2用于解密Encrypted Private Key\Secret Key,Mask-Key1和IV用于计算上述区域的MAC(Hash),完成比对后再把Key进行加载,这样最大限度保证了数据的机密性和完整性。
3.瑞萨RZ\T2M的密钥导入
有了上述ROM KEY、Key Wrapping、Key Encryption的概念后,最后我们来拓展拓展芯片厂自研的一些密钥管理系统。其实主要还是关心用户密钥是如何灌装到芯片内部的。
以瑞萨RZ/T2M为例,它是一款行业领先的高性能、多功能MPU,可实现 AC 伺服系统和工业电机等工业设备的高速处理、高精度控制和功能安全。
RZ/T2M 具有最大频率为 800 MHz 的双 Arm® Cortex®-R52 内核,可进行实时控制,而且还拥有能够与 CPU 直接连接的大容量TCM (576KB),以实现高性能实时处理。 此外,它还可以将电机控制的外设布置到能直接连接至 CPU 的 LLPP(低延迟外设端口)上,来实现较低的延迟访问。它本身还包含Security,因此有一套很完善的密钥管理工具,可以帮助用户端安全导入密钥。
其大致步骤如下:
- 用户端首先设置自己的256bit密钥(User Flash Programming Key--UFPK),然后使用瑞萨设备生命周期管理服务器包裹出W-UFPK,如下图:

值得注意是蓝色的密钥为硬件根密钥,这个就是一个系列MCU的密钥。
这一系列交互是在瑞萨提供的DLM服务器上完成,如下图:

- 使用UFPK 对用户真正的密钥进行加密和MAC计算,得到包裹好的用户密钥 W-EUK:

- 最后,用户将W-UFPK和W-EUK通过编程接口刷写进芯片中,如下图:

在该步骤中,我们可以看到还使用了HUK(Hardware Unique Key)在SCE内部进一步包裹,目的是为了增加另一种防御措施--克隆保护。经由HUK包裹的密钥只能由当前MCU\MPU打开,所以即使攻击者获取到了DFlash中的密钥,在其他MCU里也无法克隆使用。如下图:

4.小结
本文简单描述了密钥加密Key Encryption和包裹Key Wrapping 的概念,拓展了密钥导入的案例,为之后密钥管理系统的设计奠定基础。
相关文章:
汽车信息安全 -- 存到HSM中的密钥还需包裹吗?
目录 1.车规芯片的ROM_KEY 2.密钥加密与包裹 3.瑞萨RZ\T2M的密钥导入 4.小结 在车控类ECU中,我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。 所以大家默认在HSM内部存储的数据等都是可信的,例如CycurHSM方案中使用HSM…...
【PostgreSQL】入门篇——SELECT、INSERT、UPDATE 和 DELETE 语句,SQL 中最常用的四种操作用法
1. SELECT 语句 描述 SELECT 语句用于从数据库中查询数据。可以选择特定的列或所有列,并可以通过条件过滤结果。 语法 SELECT column1, column2, ... FROM table_name WHERE condition;示例 假设我们有一个名为 employees 的表,结构如下:…...
【Ubuntu】安装常用软件包-mysql
我的几个服务是部署在docker的同一个网络里,这样相互访问就可以通过docker容器的名字访问,比如容器A访问容器B,就可以http://B:8080/xxx 这样访问,不用关心ip是多少。 所以mysql前面文章给安装到主机里,感觉有点坑自己…...
幂等性及技术解决方案
文章目录 定义幂等性 为什么需要幂等性幂等性设计注意事项幂等性的范围分布式锁解决幂等性 设计 延伸阅读 定义幂等性 简单地说,我们可以多次执行幂等运算而不改变结果或者使用相同的输入参数中被调用多次,则不具有额外效果的操作,也就是多…...
正向代理 反向代理
正向代理 正向代理是一种网络服务,它作为客户端和目标服务器之间的中间人,代表客户端向目标服务器发送请求并接收响应。以下是关于正向代理的详细解释: 工作原理 客户端配置: 客户端(如浏览器)配置为使用…...
【分布式微服务云原生】如何在ActiveMQ中优雅处理提前支付的延时订单
摘要 本文将深入探讨在ActiveMQ中如何处理用户提前支付的延时订单问题。我们将介绍如何通过更新订单状态、检查延迟任务、取消延迟消息、使用死信队列、消息选择性消费、设置合理的超时时间以及及时反馈和日志记录等策略,来确保系统的一致性和及时响应用户操作。文…...
Easy Excel从入门到精通!!!
目录 1.文件导入 1.1基本方式读取excel文件内容 1.2注解模型映射器读取excel 1.3多行表头读取 1.4文件上传读取 2.文件导出 2.1基本方式导出 2.2模型映射导出 2.3设置行高、列宽等内容 2.4合并单元格 2.5导出设置超链接、批注、公式 2.6模板填充对象导出 2.7模板填…...
简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值
在开篇,还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&…...
【算法】---归并排序(递归非递归实现)
参考 左程云算法 算法导论 前言 本篇介绍 归并排序分治法 前置知识 了解递归, 了解数组。 引入 归并排序 归并排序最早是由公认的现代计算机之父John von Neumann发明的, 这是一种典型的分治思想应用。 我们先介绍分治思想 分治思想 分治思想的…...
UniVue大版本更新:UniVue2.0.0-preview
大版本发布说明 距离上次更新好像已经过去很久了,最近太忙了没时间维护新版本,也是自己在使用的过程中发现了很多问题也有了更多的灵感,由于和之前的版本区别太大,决定重新开一个大版本。这个UniVue2之后的版本追求是性能…...
RabbbitMQ篇(环境搭建 - 下载 安装)(持续更新迭代)
目录 一、Windows 1. 下载安装程序 2. 安装配置erlang 3. 安装rabbitMQ 4. 验证 二、Linux 1. 下载rpm包 1.1. 下载Erlang的rpm包 1.2. 下载socat的rpm包 1.3. 下载RabbitMQ的rpm包 2. 安装 2.1. 安装Erlang 2.2. 安装socat 2.3. 安装RabbitMQ 3. 启动RabbitMQ服…...
C++基础补充(02)C++其他控制语句break continue goto等
文章目录 1. break2. continue 语句3. goto 语句goto的存在 4. 跳出多重循环4.1 goto 直接跳转4.2 C11及其后版本的 return 语句4.3 使用标志变量 在C中,控制语句用于管理程序的执行流程。常见有 break、continue 和 goto。 1. break break语句主要用于在循环或者s…...
决策树中联合概率分布公式解释说明
学习决策树时书本中有一公式 7-3 是: P ( X x i , Y y j ) p i j ( i 1 , 2 , … , m , j 1 , 2 , … , n ) P(X x_i, Y y_j) p_{ij} \quad (i 1, 2, \dots, m, \ j 1, 2, \dots, n) P(Xxi,Yyj)pij(i1,2,…,m, j1,2,…,n) 这个公式表示的是随机变…...
计算机毕业设计 农场投入品运营管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
php email功能实现:详细步骤与配置技巧?
php email发送功能详细教程?如何使用php email服务? 无论是用户注册、密码重置,还是订单确认,电子邮件都是与用户沟通的重要手段。AokSend将详细介绍如何实现php email功能,并提供一些配置技巧,帮助你更好…...
MapBox Android版开发 6 关于Logo
MapBox Android版开发 6 关于Logo Logo的显示查看源码及思路(Logo)第一步第二步 隐藏Logo示例查看源码及思路(Info)第一步第二步 隐藏Logo和Info示例 看到有网友留言问如何移除Logo,今天看了下V9源码,发现M…...
2024年房市
24年8月15日,国家统计局公布,“7月末,商品房待售面积73926万平方米”。(原文链接:https://www.stats.gov.cn/sj/zxfb/202408/t20240815_1955982.html) 7.39亿平方存量商品房,估价均价1万每平,总价约&am…...
index索引
index索引: create index 【1】on 【2】(【3】) 1为索引名,通常为id_表名_列名。2为表名。3为列名。 CREATE INDEX id_account_id ON account(id); -- 根据id创建索引 CREATE INDEX id_account_idname on account(id,name); -- 创建组合索引 索…...
理解互联网链路:从本地ISP到Tier 1 ISP运营商
1. 互联网服务提供商(ISP) 互联网服务提供商(ISP)是指提供互联网接入服务的公司或组织。它们负责将用户连接到互联网,并提供相关的服务,如电子邮件、网站托管和其他在线服务。ISP可以分为不同的层级&#…...
基于元神操作系统实现NTFS文件操作(三)
1. 背景 本文主要介绍DBR的读取和解析,并提供了基于元神操作系统的实现代码。由于解析DBR的目的是定位到NTFS磁盘分区的元文件$Root进行文件操作,所以只解析了少量的部分,其它部分可以参考相关文档进行理解。 DBR存在于磁盘分区的第一个扇区…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
