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

汽车信息安全 -- 存到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 的概念,拓展了密钥导入的案例,为之后密钥管理系统的设计奠定基础。 


http://www.kler.cn/news/330380.html

相关文章:

  • some 蓝桥杯题
  • 不同版本的 Selenium 和 WebDriver 的 API 兼容性问题
  • cGANs with Projection Discriminator
  • Electron 使用 Nodemon 配置自动重启
  • PCL 点云高斯滤波
  • netty之基础aio,bio,nio
  • dcatadmin 自定义登录页面
  • webpack 和 vite 区别
  • 十一不停歇-学习ROS2第一天 (10.2 10:45)
  • Arduino UNO R3自学笔记18 之 Arduino的外部中断、定时中断介绍及应用
  • C++_23_STL容器
  • TCP --- 确认应答机制以及三次握手四次挥手
  • 【JavaScript】数组函数汇总
  • 【AI大模型-文心-思维树解读-仓颉精通之路-7】
  • 四,MyBatis-Plus 当中的主键策略和分页插件的(详细实操使用)
  • C初阶(六)--- static 来喽
  • IDEA:Properties in parent definition are prohibited
  • 系统架构设计师-英文翻译题(2022年下半年)
  • Android build子系统(01)Ninja构建系统解读
  • Python字符串string方法大全及使用方法[2]以及FastApi关闭接口文档、隐藏部分接口、关闭schemes的实现