2. AURIX硬件安全基础
AURIX TC3xx 的安全启动链并不是纯软件逻辑,它依赖一组硬件安全模块在复位释放后的不同时间窗口内依次“接管”信任判断。理解这些模块的角色,比记住它们的名字更重要:HSM 负责可编程的信任根与密钥运算,SHE 提供轻量、固定的安全服务接口,TRNG 为密钥和挑战值提供真随机源,安全存储(DFlash/HSM 私有存储)决定密钥与配置的持久化边界,访问保护机制(UCB、MPU、SMPU、寄存器保护)则决定“谁能读、谁能写、何时可改”。本节按启动链的时间顺序,说明每个模块在什么阶段起作用、配置时最容易出错的地方在哪里。
HSM:启动链中的可编程信任根
HSM(Hardware Security Module)是 AURIX 内部一个独立于主核 TriCore 的处理器子系统,拥有自己的 CPU、RAM、定时器、中断和独立外设总线。它的关键价值在于:主核在启动早期把控制权交给 HSM,由 HSM 用内部密钥验证主核固件的完整性和真实性,验证通过后才释放主核继续执行。因此 HSM 是启动链中第一个“可信执行环境”。
配置要点集中在三处。第一,HSM 固件本身必须先被信任,它由芯片出厂时的 Boot ROM 或用户烧写的 HSM 固件镜像加载,HSM 固件的入口地址和校验信息存放在 UCB(User Configuration Block)中,一旦 UCB 被锁死(确认写入),后续无法回退。第二,HSM 与主核之间的通信通过共享内存和中断完成,共享内存区域必须在 SMPU 中显式配置为 HSM 可写、主核只读或不可访问,否则主核可能篡改 HSM 的验证结果。第三,HSM 的启动超时和看门狗需要与主核启动时序匹配,若 HSM 验证耗时超过主核等待窗口,主核会进入复位循环,表现为“上电后反复重启”。
SHE:固定功能的安全服务接口
SHE(Secure Hardware Extension)是一套标准化的安全服务规范,在 AURIX 中通常由 HSM 或专用安全模块实现。它提供一组固定命令:加密/解密、MAC 生成与验证、密钥更新、随机数获取等。与 HSM 的可编程性不同,SHE 的密钥槽数量和用途是固定的,例如 MASTER_ECU_KEY、BOOT_MAC_KEY、KEY_1 到 KEY_N 等。
在启动链中,SHE 的典型角色是提供 BOOT_MAC 验证:主核固件被划分为若干块,每块计算 MAC 并与存储在 SHE 密钥槽中的参考值比较。配置时要注意,SHE 密钥槽一旦写入并锁定,不能明文读出,只能通过 SHE 命令使用。因此密钥注入必须在产线完成,且注入后立即锁定。若调试阶段需要更换密钥,只能使用未锁定的密钥槽,或通过密钥更新协议(用 MASTER_ECU_KEY 授权)完成。
TRNG:启动早期就必须可用的熵源
TRNG(True Random Number Generator)在启动链中的作用常被低估。SHE 的 BOOT_MAC 验证通常需要一次性挑战值(challenge),如果挑战值可预测,攻击者可以重放旧的 MAC 响应。AURIX 的 TRNG 基于环形振荡器采样,输出经过健康检测(health test)后供 HSM 和 SHE 使用。配置时要注意两点:一是 TRNG 的启动时间,它需要在 HSM 开始验证前就绪,若 HSM 固件在 TRNG 未稳定时读取随机数,可能得到全零或低熵值;二是健康检测的告警处理,当熵源异常时,HSM 应拒绝继续验证并保持主核复位,而不是降级使用伪随机数。
安全存储:密钥与配置的持久化边界
AURIX 的安全存储分为几个层次。UCB 位于 Flash 的固定区域,存放芯片级配置,包括 HSM 使能、调试接口保护、生命周期状态等。DFlash 用于存放用户密钥和参考 MAC,但并非所有 DFlash 区域都受保护,只有被 SMPU 或 HSM 明确划入安全区的部分才具备访问控制。HSM 私有 RAM 则在每次启动时由 HSM 固件从 DFlash 加载密钥,运行期间主核不可见。
一个常见的配置错误是把参考 MAC 和密钥放在同一可写区域。正确做法是:参考 MAC 存放在只读区域,密钥存放在 HSM 私有区域,两者通过不同的 SMPU 区域描述符隔离。若使用 SHE 密钥槽,则密钥本身不暴露在地址空间中,只能通过 SHE 命令间接使用,这比直接存放密钥更安全。
访问保护机制:让“不该访问的访问不了”
访问保护是启动链的“执行边界”。SMPU 负责共享内存的分区权限,MPU 负责主核内部的代码与数据隔离,寄存器保护则针对安全外设(如 HSM 控制寄存器、TRNG 控制寄存器)设置写保护。配置顺序很重要:先配置 SMPU 和 MPU,再释放 HSM 复位,最后才允许主核访问共享内存。若顺序颠倒,主核可能在保护生效前读取到 HSM 的中间状态。
判断访问保护是否生效,可以在启动后由主核尝试读取 HSM 私有区域,预期结果是总线错误(Bus Error)或读取到固定掩码值,而不是真实密钥。若读取成功,说明 SMPU 区域描述符未覆盖该地址,需要检查区域基址、大小和权限位的对齐关系。AURIX 的 SMPU 区域通常要求基址按区域大小对齐,例如 4 KB 区域基址必须是 4 KB 的整数倍,这一点在配置时容易忽略。
把上述模块串起来看,启动链的信任传递路径是:Boot ROM 读取 UCB → 加载并校验 HSM 固件 → HSM 使用 TRNG 挑战值和 SHE 密钥验证主核固件 → 验证通过后释放主核 → 主核在 SMPU/MPU 约束下运行。任何一个环节的配置缺失,都会让后续环节的信任假设失效。因此配置时不要孤立地看某个模块,而要沿着这条路径逐段确认“输入是否可信、输出是否被保护”。