4. AURIX硬件安全模块HSM架构解析
在英飞凌AURIX TC3xx系列MCU中,HSM(Hardware Security Module,硬件安全模块)并不是一个外挂芯片,而是集成在芯片内部、与Host CPU(主核TriCore)物理隔离的独立安全子系统。理解HSM的关键,是把它看成一个"芯片内的小型安全计算机":它有自己的处理器内核、自己的RAM/ROM、自己的随机数发生器、自己的加解密加速器,以及一套受保护的存储区。Host CPU无法直接读写HSM内部资源,只能通过受控的通信接口向HSM"请求服务"。本节围绕HSM内核、TRNG、AES/SHA加速器、安全存储、HSM与Host CPU通信机制以及HSM固件启动流程六个方面展开。
HSM内核与整体架构
HSM内部通常采用一颗ARM Cortex-M系列内核(如Cortex-M3)作为安全处理器,运行独立的HSM固件。它与TriCore主核在时钟、电源域和总线层面都做了隔离:主核复位不会自动复位HSM,HSM可以拥有独立的复位与低功耗状态。这种隔离带来两个直接好处:一是主核被攻破时,攻击者仍难以直接访问HSM内部的密钥与安全逻辑;二是HSM可以独立完成安全启动校验、密钥管理和加解密运算,不占用主核实时算力。
HSM内部资源大致分为四类:计算资源(HSM内核、AES/SHA加速器)、熵源(TRNG)、存储资源(HSM专用RAM、安全NVM/密钥存储区)、通信资源(HSM与Host之间的桥接接口)。下图给出HSM与Host CPU的架构关系与数据流方向。
TRNG:真随机数发生器
HSM内置TRNG,用于产生密钥、初始化向量(IV)、挑战值(Challenge)等对随机性要求极高的数据。TRNG基于物理熵源(如环形振荡器抖动)产生不可预测的随机比特,而不是像伪随机数发生器(PRNG)那样由确定性算法推导。在ISO 21434语境下,TRNG的质量直接决定密钥的不可预测性,因此HSM固件通常会对TRNG输出做健康检测(如重复计数、熵评估),一旦检测异常就拒绝输出并上报错误。实际使用中,应用并不直接读取TRNG原始比特,而是通过HSM提供的密钥生成或随机数服务接口获取,由HSM内部完成熵收集与后处理。
AES/SHA加速器
HSM集成专用加解密加速器,典型包括AES和SHA。AES用于对称加解密与CMAC消息认证,常见模式有ECB、CBC、CTR、GCM;SHA用于哈希与HMAC,常见为SHA-256。加速器的意义在于:安全启动校验、SecOC报文认证、密钥派生等操作如果全部由主核软件实现,会消耗大量实时算力,而HSM硬件加速可以在独立域内高效完成。以AES-128为例,一次分组加密在硬件加速器上通常只需几十个时钟周期量级,远快于纯软件实现。HSM固件负责管理加速器的密钥句柄,密钥本身不离开安全存储区,Host只能提交明文/密文和句柄,无法直接接触密钥。
安全存储
HSM拥有独立的安全存储区,用于保存密钥、证书、安全计数器、配置数据等敏感信息。这些数据对Host CPU不可见,只能由HSM固件访问。安全存储通常结合芯片的Flash保护机制(如HSM专属Flash扇区、读保护、调试口锁定)实现。密钥在写入时往往以加密或受保护形式存放,使用时由HSM解密到内部RAM。安全计数器(如用于防回滚的单调计数器)也存放在此,保证固件版本只能前进不能回退。
HSM与Host CPU通信机制
Host与HSM之间通过共享内存加桥接接口通信,典型流程是:Host把命令、参数和输入数据写入约定的共享缓冲区,然后通过HSM桥接寄存器触发命令并(可选)使能中断;HSM内核读取命令、调用相应安全服务(如AES加密、SHA哈希、密钥操作),把结果写回共享缓冲区,再通过状态寄存器或中断通知Host。整个过程Host不能直接访问HSM内部RAM和密钥区,只能看到共享缓冲区中的输入输出。通信协议通常由HSM固件定义,包含命令ID、长度、状态码等字段。下面给出一个典型的命令交互示例(参数为教学示例,非实测值):
Host 侧伪代码(示例):
1. 将明文写入共享缓冲区 tx_buf,长度 32 字节
2. 填写命令结构:cmd_id = AES_CBC_ENCRYPT,key_handle = 0x01,iv = ...
3. 写 HSM 命令寄存器,触发请求
4. 等待 HSM 状态寄存器变为 DONE 或等待中断
5. 从 rx_buf 读取密文,检查状态码 == 0x00(成功)
HSM固件启动流程
HSM固件启动与Host启动相互配合,典型顺序是:芯片上电后,HSM先由内部ROM引导代码启动,ROM代码从HSM专属Flash加载HSM固件,并校验其完整性与真实性(如通过SHA-256哈希比对和签名验证);校验通过后,HSM固件初始化TRNG、AES/SHA加速器和安全存储,进入服务就绪状态。随后Host CPU启动,在安全启动流程中可请求HSM校验Host固件签名,只有HSM返回校验通过,Host才继续放行应用。如果HSM固件校验失败,HSM会进入受限或错误状态,Host侧安全启动也应相应阻断,避免在安全基础不可信的情况下运行。