2. AURIX HSM硬件架构与安全子系统
要理解产线灌装与生产测试,必须先看清 AURIX 芯片内部 HSM 到底“长在哪里、连到哪里、管着什么”。AURIX 的 HSM(Hardware Security Module)并不是一颗外挂芯片,而是集成在同一硅片上的独立安全子系统:它拥有自己的 CPU 核、独立 RAM、独立 ROM、专用外设与独立总线通道,与主 TriCore 域在物理上共享芯片、在逻辑上相互隔离。这种“同片异构、分区自治”的结构,是后续所有密钥灌装、安全启动和访问控制得以成立的基础。
一、HSM 核与 TriCore 核的关系
AURIX 内部通常存在两类执行主体:主域中的 TriCore CPU(可能多核,如 TC3xx 的 CPU0~CPU5)负责应用逻辑与实时控制;HSM 域中的 HSM 核(基于 ARM Cortex-M 系列的安全核,如 TC3xx 使用 Cortex-M3)负责密码运算、密钥管理与安全状态机。两者不是主从调用关系,而是对等但受控的协作关系:TriCore 不能直接读写 HSM 内部 RAM,只能通过受控的通信接口向 HSM 发起服务请求。
典型交互路径有三条:
- HSM 服务请求通道:TriCore 通过共享邮箱寄存器(Mailbox)或共享内存区向 HSM 提交命令与数据,HSM 处理完成后回写状态与结果。这是产线灌装时下发密钥、触发验签的主要通道。
- 中断与事件通知:HSM 完成操作或检测到异常时,通过中断线通知 TriCore,主域据此决定是否继续启动或进入安全状态。
- 共享资源访问:HSM 可访问部分片上存储与外设(如 Flash、CAN、HSM 专用定时器),但访问范围由硬件防火墙(Firewall)与访问权限寄存器限定,而非全权访问。
需要特别强调的是:HSM 核的固件(HSM Firmware)通常存放在独立的安全 Flash 区或 HSM 专用 ROM 中,主域无法直接改写。产线灌装时写入的密钥、证书和配置数据,也存放在 HSM 专属的密钥存储区,而不是普通用户 Flash。这一隔离边界决定了灌装工具必须通过 HSM 提供的服务接口操作,而不能像写普通 Flash 那样直接烧写。
二、片上安全模块与密钥存储
AURIX HSM 内部集成了若干关键安全模块,它们共同构成密钥生命周期管理的硬件底座:
- 密码算法加速器:支持 AES、SHA、ECC、RSA 等算法的硬件加速,产线灌装时用于生成或校验密钥、计算证书摘要、执行安全启动验签。
- 真随机数发生器(TRNG):为密钥生成、挑战应答和会话密钥提供熵源。产线灌装若涉及芯片内生成密钥,TRNG 的健康状态必须首先通过自检。
- 密钥存储区(Key Store):通常划分为多个密钥槽(Key Slot),每个槽可存放对称密钥、私钥、公钥或证书。部分槽位支持“只写不可读”属性,密钥一旦写入,主域和调试接口均无法读出明文,只能通过 HSM 内部调用使用。
- 安全状态与控制寄存器:记录芯片生命周期状态(如 virgin、personalized、secured)、调试口锁定状态、安全启动结果等,是产线判断“灌装是否完成、是否可出货”的直接依据。
密钥存储的访问控制机制通常包含三层:硬件防火墙限定哪些总线主设备可访问 HSM 区域;密钥槽权限属性限定每个槽可被哪些服务调用、是否可导出、是否可覆盖;生命周期状态机限定在不同阶段允许执行的操作。例如,在 virgin 阶段允许灌装密钥,进入 secured 阶段后密钥槽通常不可再改写,调试接口也被永久或条件性锁定。
三、产线视角下的关键交互与判断依据
从产线灌装与测试的角度看,上述架构直接决定了操作方式与判据。灌装工具通常运行在 PC 或测试机上,通过调试接口(如 DAP/JTAG)或引导加载程序(BSL)与芯片建立连接,再由主域 TriCore 转发 HSM 服务请求。整个过程中,工具并不能“直接写密钥”,而是调用 HSM 固件提供的服务命令,例如:
示例命令序列(示意,非真实 API):
1. HSM_OPEN_SESSION // 建立与 HSM 的会话
2. HSM_GET_STATUS // 读取生命周期状态,确认处于 virgin/personalized
3. HSM_LOAD_KEY(slot, type, data) // 向指定密钥槽写入密钥
4. HSM_VERIFY_KEY(slot) // 校验密钥写入结果
5. HSM_LOCK_SLOT(slot) // 锁定槽位,禁止后续改写
6. HSM_SET_LIFECYCLE(secured) // 推进生命周期状态
7. HSM_CLOSE_SESSION // 关闭会话
每一步的返回状态都需要记录并判断。例如,若 HSM_GET_STATUS 返回的状态不是预期的 virgin 或 personalized,说明芯片可能已被灌装或已锁定,此时继续写入会失败甚至触发安全告警。若 HSM_VERIFY_KEY 返回摘要不匹配,则必须重新灌装该槽位,而不能直接进入锁定步骤。这些判断依据全部来自 HSM 内部的安全状态寄存器与密钥槽属性,而不是主域软件自行维护的变量。
四、访问控制机制的实际含义
访问控制不是一句抽象口号,而是由具体硬件行为体现的。以密钥槽为例,一个槽位通常具有以下属性位:可写、可读、可导出、可覆盖、绑定生命周期阶段。产线灌装时,若某槽位被配置为“只写不可读”,则灌装完成后任何读取命令都返回权限错误,这恰恰是安全的预期行为;测试人员不应将其视为故障。相反,如果某个本应不可读的槽位居然能读出明文,那才是严重的安全异常,需要立即停止产线并排查配置。
同样,调试接口的锁定状态也是访问控制的一部分。在进入 secured 阶段后,DAP/JTAG 可能被永久禁用或仅允许受限访问。这意味着产线灌装必须在锁定之前完成,且锁定操作本身通常是不可逆的。因此,灌装流程设计时必须把“确认所有密钥槽写入并校验通过”作为锁定前的强制关卡,任何一项未通过都不得推进生命周期状态。
综上,AURIX HSM 的硬件架构可以概括为:主域 TriCore 负责应用与请求发起,HSM 核负责安全运算与密钥管理,两者通过受控邮箱与中断交互;密钥存储区、密码加速器、TRNG 和安全状态寄存器构成片上安全底座;硬件防火墙、密钥槽属性和生命周期状态机共同实现访问控制。理解这张结构关系,是后续设计灌装脚本、判断测试结果和排查安全异常的前提。