3、密钥生成与注入:TRNG、PRNG 与全生命周期策略

密钥管理的第一步,也是最关键的一步——密钥从哪来?

很多人觉得生成密钥不就是调个随机数函数吗?其实没那么简单。在 AUTOSAR 架构下,密钥的生成与注入涉及硬件、密码学、生产流程和 OTA 安全,任何一个环节出问题,整个安全体系都可能崩塌。

我个人习惯把密钥生成分成三个层次来看:随机数源、生成策略、注入流程。咱们一个一个拆开讲。

3.1 真随机数生成器 (TRNG) 与伪随机数生成器 (PRNG)

随机数是密钥的“原材料”。原材料质量不行,密钥就是纸糊的。

3.1.1 TRNG:硬件熵源

TRNG 依赖物理过程产生随机数,比如热噪声、时钟抖动、半导体噪声。它的输出不可预测,是密钥生成的理想种子源。

我在项目中遇到过一个问题:某款 MCU 的 TRNG 在高温下输出熵值下降,导致生成的密钥出现可预测模式。后来我们加了健康检测机制,每次取随机数前先检查熵源状态。

特性TRNGPRNG
熵源物理过程(硬件)算法 + 种子(软件)
输出可预测性不可预测种子已知则可预测
速度慢(通常 kbps 级别)快(Mbps 级别)
AUTOSAR 典型用途生成种子、密钥派生初始值批量密钥生成、会话密钥

3.1.2 PRNG:算法扩展

PRNG 用确定性算法从种子扩展出随机序列。AUTOSAR 中常用 CTR_DRBG(基于 AES-CTR)或 Hash_DRBG(基于 SHA-256)。

你想想看,如果 PRNG 的种子被猜中,所有派生密钥就全废了。所以 AUTOSAR 规范要求:PRNG 种子必须来自 TRNG,且每次上电重新生成。

核心原则:TRNG 产种子,PRNG 产密钥。种子质量决定密钥安全上限。

3.2 密钥生成策略:三种典型路径

密钥怎么生成?不是拍脑袋决定的。根据应用场景和安全等级,AUTOSAR 定义了三种主流策略。

3.2.1 工厂注入

最传统的方式。ECU 在产线上通过安全硬件接口(如调试端口、专用烧录器)写入密钥。

  • 优点:物理隔离,无网络暴露风险;密钥可预先生成并审计。
  • 缺点:产线管理复杂;密钥更新困难;一旦泄露影响全批次。
  • 我建议:工厂注入的密钥只用作“根密钥”或“设备身份密钥”,不要直接用于通信加密。

3.2.2 OTA 下发

车辆出厂后,通过安全通道从云端下发密钥。这是目前智能汽车的主流方式。

我曾经帮客户排查过一个 OTA 密钥下发失败的问题——原因是 ECU 的 HSM 内存不足,无法同时存储新旧两套密钥。嗯,这里要注意:OTA 下发必须支持“原子切换”,要么新密钥生效,要么回滚到旧密钥,不能出现中间态。

3.2.3 本地派生

ECU 利用已有密钥(如根密钥)和上下文信息(如计数器、UID),通过 KDF(密钥派生函数)生成新密钥。

说白了,这就是“密钥生密钥”。AUTOSAR 中常用 AES-CMAC 或 HMAC-SHA256 作为 KDF 算法。

实战建议:本地派生适合生成会话密钥或临时密钥。派生时一定要加入“用途标签”(如 0x01 用于加密,0x02 用于认证),防止密钥误用。

3.3 密钥注入流程与安全考量

密钥注入不是简单的“写进去”三个字。它是一套完整的协议,涉及身份认证、通道保护、状态机管理。

3.3.1 注入流程四步走

  1. 身份认证:注入工具与 ECU 互相验证身份。常用方法:证书链验证 + 挑战响应。
  2. 安全通道建立:协商会话密钥,加密后续传输。AUTOSAR 中常用 TLS 或 SecOC 扩展。
  3. 密钥传输:加密后的密钥数据通过安全通道下发。注意:密钥必须分段传输并加 MAC 校验。
  4. 密钥安装与验证:ECU 解密后写入 HSM 安全存储,然后回传校验值确认。

3.3.2 安全考量清单

我在多个项目中总结过密钥注入的常见坑,列出来供你参考:

  • 回滚攻击:攻击者注入旧密钥。对策:注入时带版本号,ECU 拒绝版本低于当前值的密钥。
  • 重放攻击:截获注入报文重复发送。对策:使用一次性 nonce 或时间戳。
  • 侧信道泄露:注入过程中功耗/电磁辐射泄露密钥。对策:使用掩码技术,HSM 内完成解密。
  • 产线安全:烧录工具被篡改。对策:工具必须硬件加密,且每次使用前向服务器认证。

警告:千万不要在生产环境中使用“测试密钥”或“默认密钥”。我曾经见过某 OEM 的产线脚本里写死了测试密钥,结果 10 万台车用了同一个密钥——这等于没锁门。

3.4 密钥生成与注入全流程框架图

下面这张图概括了从随机数生成到密钥注入的完整链路。我习惯把它贴在项目白板上,每次评审都过一遍。

密钥生成与注入全流程框架 密钥生成与注入全流程框架 TRNG(硬件熵源) 热噪声 / 时钟抖动 PRNG(算法扩展) CTR_DRBG / Hash_DRBG 种子注入 工厂注入 产线烧录 / 物理隔离 OTA 下发 安全通道 / 原子切换 本地派生 KDF / 用途标签 密钥注入流程 ① 身份认证 ② 安全通道 ③ 密钥传输 ④ 安装与验证 安全考量 回滚攻击 重放攻击 侧信道泄露 产线工具安全

3.5 小结:密钥生成与注入的核心原则

讲到这里,我想强调几个关键点:

  • TRNG 是根,PRNG 是叶。没有好的种子,再强的算法也白搭。
  • 策略选择看场景。工厂注入保底,OTA 下发灵活,本地派生高效。三者可以组合使用。
  • 注入流程必须可审计。每次密钥注入都要记录日志,包括时间、工具 ID、密钥指纹。
  • 安全考量要前置。不要等量产了才发现回滚攻击没防住——那代价太大了。

我的习惯:每次设计密钥注入方案时,先画一张类似上面的框架图,然后对着每个节点问自己三个问题——这个节点被攻击会怎样?攻击面在哪?怎么防御?问完一圈,方案基本就稳了。