2. AURIX硬件安全架构解析

AURIX TC3xx 系列之所以能作为高安全等级 ECU 的主控芯片,核心在于它把多个独立的安全机制集成在同一硅片上,并让它们彼此配合形成一条从"上电"到"运行"再到"被攻击"的完整防护链。理解这条链,比单独记住每个模块的名字更重要。本节按"启动顺序 + 攻击面"两条线索,把 HSM、SCR、SMU、MPU、安全启动链、调试接口保护和密钥存储串成一个整体。

一、六个安全模块各自的职责边界

HSM(Hardware Security Module)是芯片内一颗独立的、与主核 TriCore 隔离运行的协处理器(通常基于 ARM Cortex-M 或专用核),拥有自己的 Flash、RAM、定时器和加密加速器(AES-128/256、SHA-256、ECC、TRNG)。它不直接参与车辆控制逻辑,而是作为"可信根的执行者",负责密钥运算、签名验证、安全启动校验和诊断安全访问(UDS Security Access)的种子密钥计算。

SCR(Safety Core / Standby Control Regulator 相关安全控制寄存器组)在 TC3xx 语境下通常指与安全状态、复位源、看门狗和 SMU 联动的安全控制寄存器集合。它记录"谁触发了复位""当前处于哪种安全状态",是判断系统是否被异常中断的关键证据来源。

SMU(Safety Management Unit)是安全事件的汇聚与响应单元。芯片内各模块(CPU、Flash、SRAM、时钟、电压监控、ECC 逻辑)检测到故障后,把 alarm 上报给 SMU,SMU 再按预配置的 reaction 执行动作:仅中断、触发 NMI、复位内核、复位整个芯片,或进入安全状态。SMU 是"故障→响应"的决策中枢。

MPU(Memory Protection Unit)负责运行时的内存访问隔离。它把地址空间划分为若干 region,为每个 region 指定读/写/执行权限和特权级。HSM 的代码与密钥区、主核的应用区、共享通信缓冲区被划入不同 region,任何越权访问都会触发保护异常并上报 SMU。

安全启动链是上述模块协同的"时间线":BootROM → HSM 固件 → 主核固件 → 应用。每一级在把控制权交给下一级之前,先用上一级持有的公钥或哈希验证下一级镜像的完整性,验证失败则停在安全状态,不进入应用。

调试接口保护与密钥存储是攻击面收口的两端:DAP/JTAG 在量产阶段必须被锁定(通过 UCB 中的调试保护配置和密码),否则攻击者可直接读写内存;密钥则存放在 HSM 专属 Flash 或 OTP 区域,主核不可见,只能通过 HSM 提供的服务接口间接使用。

AURIX TC3xx 安全启动链与攻击面收口 启动链(时间线,自上而下) ① BootROM 固化不可改,校验 HSM 固件 ② HSM 固件 持有根公钥,校验主核固件 ③ 主核固件 校验应用镜像签名 ④ 应用运行 MPU 生效,SMU 监控 验证失败 停在安全状态,不启动 运行时防护模块 MPU 地址 region 划分 读/写/执行权限隔离 SMU 汇聚 alarm 信号 按 reaction 响应 SCR 记录复位源 锁定安全状态 HSM 密钥运算 / 签名验证 与主核隔离运行 攻击面收口 调试接口 DAP/JTAG UCB 密码锁定 密钥存储 HSM 专属 Flash OTP 区,主核不可见 固件更新 签名校验 回滚保护 SMU 响应动作(按严重程度递增) 仅中断上报 触发 NMI 复位内核 复位整芯片 进入安全状态并锁定 启动链负责"进入前验证",运行时模块负责"运行中监控",攻击面收口负责"堵住旁路" 三者缺一不可:只做安全启动不做 MPU,运行期仍可被篡改;只做 MPU 不做调试锁定,攻击者可直接绕过

二、安全启动链的实际执行过程

以 TC3xx 为例,上电或复位后,CPU 首先从 BootROM 的固定入口开始执行。BootROM 是掩膜 ROM,不可修改,它做的第一件事是检查启动模式引脚(BMHD 配置),确定从哪个 Flash 地址加载 HSM 固件。随后 BootROM 用固化在芯片内的哈希对 HSM 固件做完整性校验,校验通过才把 HSM 核从复位中释放。

HSM 固件启动后,它持有的是"根公钥"(Root Public Key),通常以哈希形式烧录在 UCB(User Configuration Block)中。HSM 读取主核固件镜像的头部,提取签名和证书链,用根公钥逐级验证,确认镜像未被篡改且版本合法(防回滚)。验证通过后,HSM 通过内部寄存器释放主核复位,主核才开始执行自己的启动代码。

主核固件启动后,再用同样的方式验证应用镜像。整个链条中,每一级的验证结果都会写入 SCR 的相应状态位,供后续诊断读取。如果任何一级验证失败,HSM 不会释放下一级,系统停在安全状态,SMU 会收到一个 alarm 并按配置执行复位或锁定。

实际项目中,根公钥的哈希一旦烧入 UCB 就不可更改。这意味着密钥管理必须在量产前完成规划:如果根密钥泄露或需要轮换,只能通过 UCB 中预留的多个 key slot 切换,而不是重新烧录。

三、MPU 的 region 划分与越权检测

MPU 的工作方式是把 32 位地址空间切成若干 region,每个 region 有独立的权限位。典型配置如下:

Region地址范围(示例)权限归属
R00x8000_0000 – 0x8000_FFFF只读 + 可执行BootROM
R10xA000_0000 – 0xA00F_FFFF只读 + 可执行主核固件
R20xA010_0000 – 0xA01F_FFFF读写 + 可执行应用代码
R30xB000_0000 – 0xB000_3FFF读写,禁止执行共享通信缓冲
R40xF000_0000 – 0xF000_1FFF仅 HSM 可访问HSM 密钥区

当主核代码试图写入 R1(只读固件区)或执行 R3(禁止执行的缓冲区)时,MPU 立即产生保护异常,该异常被路由到 SMU。SMU 根据预配置的 reaction 决定是仅记录、触发 NMI 还是复位。调试时可以通过读取 SCR 中的异常状态寄存器确认是哪个 region、哪种权限被违反。

四、调试接口保护与密钥存储的工程落地

TC3xx 的调试接口(DAP)在量产阶段必须锁定。锁定方式是在 UCB 的调试保护配置中写入密码(通常为 128 位),并设置保护级别。上电后,调试工具必须提供正确密码才能建立连接;密码错误达到一定次数后,芯片可配置为永久锁定。这一步如果遗漏,攻击者可以直接通过 DAP 读写 Flash 和 RAM,前面所有安全机制形同虚设。

密钥存储方面,HSM 拥有独立的 Flash 扇区和 OTP 区域,主核通过 MPU 被禁止访问这些地址。应用需要用到密钥时,只能向 HSM 发送服务请求(如"用密钥 K 对数据 D 做 AES 加密"),HSM 在内部完成运算后只返回结果,密钥本身从不离开 HSM 边界。这种"密钥不落地"的设计,使得即使主核被攻破,攻击者也无法直接读出密钥明文。

常见误区:把密钥放在主核 Flash 中再用 MPU 保护。MPU 只防越权访问,不防物理读取(如通过调试接口或侧信道)。密钥必须存放在 HSM 专属区域,且调试接口必须锁定,两者缺一不可。

五、把六个模块串成一条验证思路

在实际安全验证中,可以按以下顺序逐层检查:先确认调试接口是否已锁定(读 UCB 配置),再确认安全启动链是否完整(检查各级镜像签名和 SCR 状态位),然后验证 MPU region 配置是否符合预期(尝试越权访问并观察 SMU 响应),最后确认密钥是否只能通过 HSM 服务接口使用(尝试从主核直接读取密钥区地址,应触发保护异常)。这条顺序对应攻击者最可能的突破路径:先找调试口,再找启动链漏洞,再找运行时越权,最后找密钥泄露。