2、硬件安全基础(HSM/SHE):硬件安全模块架构、密钥存储策略、真随机数发生器原理
聊到嵌入式安全,很多人第一反应是“加个加密算法”。但说实话,算法只是安全链条上的一环。真正决定系统是否牢靠的,是底层的硬件安全根基。今天我们就来拆解这个根基——HSM、SHE、密钥怎么存、随机数怎么来。
2.1 硬件安全模块(HSM)架构
HSM,全称 Hardware Security Module。你可以把它理解成一个“黑匣子”。这个黑匣子专门干一件事:安全相关的运算。它有自己的CPU、内存、甚至独立的真随机数发生器。主芯片想加解密数据?把原始数据丢给HSM,HSM算完把结果吐出来。密钥?全程不出HSM的门。
我最早接触HSM是在一个T-Box项目上。当时客户要求“密钥必须硬件保护”,我们一开始想用软件模拟,结果安全评审直接被毙。后来老老实实上了HSM芯片,才明白硬件隔离的价值。
HSM的典型内部结构
- 安全CPU核:通常是一个低功耗的ARM Cortex-M或RISC-V核,专门跑安全固件。
- 安全存储器:包括SRAM(存临时密钥)、ROM(存BootROM)、Flash(存安全固件)。
- 硬件加速器:AES、RSA、ECC、SHA等算法的硬核加速模块。
- 真随机数发生器(TRNG):产生高质量的随机种子。
- 密钥存储区:一次性可编程(OTP)或eFuse阵列,用于存储根密钥。
- 安全DMA:在安全域和非安全域之间搬运数据,不暴露密钥。
嗯,这里要注意:HSM不是一颗独立的芯片,它通常作为SoC内部的一个安全岛存在。比如NXP的S32K系列、Infineon的TC3xx系列,都内置了HSM。
2.2 SHE(安全硬件扩展)规范
SHE,全称 Secure Hardware Extension。它其实是HSM的一个“轻量版”规范,由AUTOSAR组织定义。说白了,SHE就是给那些不需要完整HSM、但又需要基本安全能力的MCU用的。
我记得有一次给一个车身控制器做OTA方案,MCU资源有限,上不了完整的HSM。后来查资料发现它支持SHE规范,正好满足密钥存储和固件校验的需求。省了一颗外部安全芯片,成本降了不少。
| 对比项 | HSM | SHE |
|---|---|---|
| 安全等级 | 高(EVITA Full/Medium) | 中(EVITA Light) |
| 密钥槽数量 | 可配置(通常16~64个) | 固定10个(SHE规范定义) |
| 支持的算法 | AES、RSA、ECC、SHA等 | 仅AES-128 |
| 真随机数发生器 | 通常内置 | 可选 |
| 典型应用 | 网关、域控制器、T-Box | 车窗、座椅、雨刷等节点 |
SHE规范里定义了10个密钥槽(Key Slot),每个槽有固定的用途。比如密钥槽0是用于安全启动的根密钥,密钥槽1~9可以用于固件加密、MAC计算等。这种“固定分工”的设计,其实降低了使用门槛——你不需要自己设计密钥管理策略,照着规范来就行。
2.3 密钥存储策略
密钥存储,是硬件安全里最容易踩坑的地方。你想想看,算法再强,密钥被人读走了,一切白搭。
密钥的生命周期
- 密钥生成:在安全环境中(如HSM内部或产线安全服务器)生成。
- 密钥注入:在产线阶段,通过安全通道写入OTP或eFuse。
- 密钥使用:运行时,密钥只在HSM内部使用,不出安全边界。
- 密钥销毁:设备退役或密钥泄露时,通过硬件机制擦除。
常见的密钥存储介质
- eFuse(电子熔丝):一次性编程,写入后不可更改。适合存根密钥。我见过一个项目,产线烧录时eFuse电压没控制好,导致整批芯片的密钥位熔断不全,直接报废。嗯,产线工艺参数一定要验证。
- OTP(一次性可编程存储器):和eFuse类似,但通常面积更大。适合存少量密钥和配置信息。
- 安全Flash:可擦写,但需要配合访问控制。适合存会话密钥或派生密钥。
- SRAM(易失性存储器):掉电即失,适合存临时密钥。但要注意防侧信道攻击。
密钥派生策略
实际项目中,我们不会直接用根密钥加密每一帧数据。而是用根密钥派生出一组会话密钥。比如:
// 伪代码:基于根密钥和计数器派生会话密钥
session_key = AES_CMAC(root_key, counter || "OTA_SESSION")
// 用会话密钥加密固件包
encrypted_firmware = AES_CTR(session_key, firmware_data)
这样做的好处是:即使某个会话密钥泄露,根密钥依然安全。而且可以定期更换会话密钥,降低长期风险。
2.4 真随机数发生器(TRNG)原理
随机数,是密码学的“维生素”。没有好的随机数,密钥生成、签名、挑战-响应认证全都会出问题。
伪随机数发生器(PRNG)靠算法生成随机数,但种子一旦被猜到,整个序列就暴露了。真随机数发生器(TRNG)则不同,它从物理噪声中提取随机性。比如:
- 热噪声:利用半导体中载流子的随机热运动。
- 振荡器抖动:利用环形振荡器的相位噪声。
- 量子效应:比如隧穿二极管的随机电流。
我调试过一个TRNG模块,输出总是“不够随机”。后来发现是PCB布局问题——数字信号串扰进了模拟采样电路。重新布局后,随机性测试(NIST SP 800-22)全部通过。硬件设计里,TRNG的模拟部分一定要和数字部分隔离。
TRNG的典型工作流程
- 噪声源:物理过程产生原始随机比特流。
- 数字化:将模拟噪声转换为数字信号(通常通过比较器或ADC)。
- 后处理:用算法(如Von Neumann校正、哈希提取)消除偏差。
- 健康检测:持续监控噪声源是否正常,防止攻击者注入确定性信号。
2.5 本章知识体系总览
下面这张图,把HSM、SHE、密钥存储和TRNG的关系串起来了。你可以把它当作本章的“思维导图”。
这张图里,HSM和SHE是“骨架”,密钥存储是“血液”,TRNG是“心脏”。缺了任何一个,安全体系都不完整。