2. AURIX硬件安全基础

在AURIX平台上做安全OTA,第一步不是写升级协议,而是先弄清芯片内部有哪些“不可绕过的硬件规则”。这些规则决定了密钥放在哪里、固件由谁验签、哪些Flash区域可以被改写、升级失败后能否回滚。本节围绕HSM、SHE、TRNG、安全启动链、Flash保护、UCB与DFlash六个对象展开,并落到它们对OTA升级的具体约束上。

HSM与SHE:两个不同层级的安全执行环境

AURIX的HSM(Hardware Security Module)是一个独立于主核的安全子系统,通常包含独立的CPU、RAM、ROM、定时器和密码加速器,通过共享内存或邮箱与主核通信。它的关键价值在于:密钥和验签逻辑运行在与应用核隔离的域内,主核即使被攻破,也无法直接读取HSM内部密钥。OTA升级中,HSM承担镜像验签、密钥派生、安全计数器和访问授权判断。

SHE(Secure Hardware Extension)则更接近一个轻量级安全规范,定义了密钥槽、命令集和基于AES-128的CMAC/Miyaguchi-Preneel压缩结构。在AURIX上,SHE功能可以由HSM实现,也可以由专门的SHE模块提供。SHE的密钥槽数量有限(典型为10个或更多,取决于配置),每个槽有固定的用途属性,例如MASTER_ECU_KEY、BOOT_MAC_KEY、KEY_1到KEY_N。OTA升级若使用SHE做镜像认证,必须提前规划:哪个槽放验签密钥、哪个槽放解密密钥、哪个槽用于更新授权,且槽一旦写入通常不可明文读回。

TRNG:安全启动与密钥生成的熵源

TRNG(True Random Number Generator)为AURIX提供真随机数,用于生成会话密钥、挑战值、nonce和密钥材料。它与伪随机数发生器(PRNG)的区别在于熵源来自物理噪声,而不是确定性算法。OTA升级中,TRNG的典型用途包括:升级会话的随机挑战、AES密钥的随机生成、安全启动时的随机化校验。若TRNG未就绪或健康检查失败,安全启动链可能拒绝进入安全状态,OTA升级也会被阻断。因此,在升级流程开始前,固件应检查TRNG状态寄存器,确认熵源可用。

安全启动链:从BootROM到应用核的逐级信任

AURIX的安全启动链通常从BootROM开始,依次验证HSM固件、主核启动代码、应用固件。每一级在跳转前,用上一级提供的公钥或哈希对下一级镜像做验签或CMAC校验。验证通过后,才把控制权交给下一级。这个链条的关键约束是:OTA升级后的镜像必须仍然满足每一级的验签规则。如果升级只改了应用固件,但应用固件的签名密钥与BootROM中固化的公钥不匹配,启动会在验签阶段失败,芯片可能进入恢复模式或停止启动。

AURIX 安全启动链与 OTA 升级约束关系 BootROM 固化公钥 / 启动模式 HSM 固件 验签 / 密钥管理 主核启动代码 CMAC / 哈希校验 应用固件 OTA 目标 验签 验签 验签 OTA 升级必须满足的硬件约束 密钥槽约束 SHE 密钥槽不可明文读回 验签密钥必须与 BootROM 匹配 更新授权需 MASTER_ECU_KEY Flash 保护约束 PFlash 写保护需先解锁 DFlash 用于 UCB 与备份 擦除粒度影响升级时间 启动链约束 每级镜像必须验签通过 HSM 固件不可随意替换 失败可能进入恢复模式 升级结果判读 成功:启动链逐级验签通过,应用固件运行,HSM 计数器更新 失败:BootROM 拒绝跳转,芯片停留在恢复模式或回退到备份镜像

Flash保护机制:PFlash与DFlash的写入门槛

AURIX的Flash分为PFlash(程序Flash)和DFlash(数据Flash)。PFlash存放启动代码和应用固件,DFlash存放UCB、配置数据和备份镜像。Flash保护通过写保护寄存器、安全端和HSM访问权限共同实现。OTA升级要改写PFlash中的应用固件,必须先满足以下条件:目标扇区未被永久写保护;当前运行模式允许擦写;HSM或安全端授权了写操作。若某扇区被配置为永久保护,OTA无法覆盖它,只能通过备份镜像或外部更新方式处理。

DFlash中的UCB(User Configuration Block)是OTA升级中最容易被忽视、却最关键的约束来源。UCB存放启动模式、Flash保护配置、HSM使能状态、调试接口权限等。UCB通常有多个副本,写入时需要同时更新并校验,否则芯片可能进入不可启动状态。OTA升级若需要修改启动配置,必须通过HSM或安全命令更新UCB,且更新过程不可中断。

对OTA升级的约束汇总

把上述对象放在一起,可以得到几条硬约束:第一,升级镜像的签名密钥必须与BootROM或HSM中已固化的信任根一致,否则验签失败;第二,SHE密钥槽的用途和数量有限,升级方案必须在设计阶段就确定密钥分配;第三,TRNG必须可用,否则会话密钥和挑战值无法生成;第四,PFlash的写保护状态决定哪些区域可被OTA覆盖;第五,UCB的更新必须原子化,且需要HSM授权;第六,DFlash的备份镜像和UCB副本是升级失败后的恢复基础。

在工程实践中,建议在OTA升级前先读取HSM状态、TRNG健康状态、PFlash保护寄存器和UCB校验结果,把这些值作为升级前置条件。若任一条件不满足,升级流程应直接拒绝,而不是尝试写入后再回滚。

一个可参考的升级前置检查清单

检查项 观察对象 通过条件 不通过时的处理
信任根匹配 BootROM公钥 / HSM密钥槽 升级镜像签名密钥与固化信任根一致 拒绝升级,更换签名密钥
TRNG就绪 TRNG状态寄存器 熵源健康,随机数可读 等待或复位TRNG,重试
PFlash可写 写保护寄存器 / 扇区状态 目标扇区未永久保护,擦写使能 改用备份镜像或外部更新
UCB一致 UCB副本校验值 多副本一致,校验通过 先修复UCB,再升级
HSM授权 HSM命令响应 写授权和安全计数器更新成功 检查密钥槽权限和会话

这张清单不是固定模板,而是一个检查思路:把“能不能升级”拆成可观察的硬件状态,而不是等到写入失败后再排查。实际项目中,还应结合具体AURIX型号的HSM固件版本、SHE密钥槽定义和UCB布局做细化。只有先尊重这些硬件约束,OTA升级方案才具备可实施性。