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 提供的服务接口间接使用。
二、安全启动链的实际执行过程
以 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 并按配置执行复位或锁定。
三、MPU 的 region 划分与越权检测
MPU 的工作方式是把 32 位地址空间切成若干 region,每个 region 有独立的权限位。典型配置如下:
| Region | 地址范围(示例) | 权限 | 归属 |
|---|---|---|---|
| R0 | 0x8000_0000 – 0x8000_FFFF | 只读 + 可执行 | BootROM |
| R1 | 0xA000_0000 – 0xA00F_FFFF | 只读 + 可执行 | 主核固件 |
| R2 | 0xA010_0000 – 0xA01F_FFFF | 读写 + 可执行 | 应用代码 |
| R3 | 0xB000_0000 – 0xB000_3FFF | 读写,禁止执行 | 共享通信缓冲 |
| R4 | 0xF000_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 边界。这种"密钥不落地"的设计,使得即使主核被攻破,攻击者也无法直接读出密钥明文。
五、把六个模块串成一条验证思路
在实际安全验证中,可以按以下顺序逐层检查:先确认调试接口是否已锁定(读 UCB 配置),再确认安全启动链是否完整(检查各级镜像签名和 SCR 状态位),然后验证 MPU region 配置是否符合预期(尝试越权访问并观察 SMU 响应),最后确认密钥是否只能通过 HSM 服务接口使用(尝试从主核直接读取密钥区地址,应触发保护异常)。这条顺序对应攻击者最可能的突破路径:先找调试口,再找启动链漏洞,再找运行时越权,最后找密钥泄露。