2. AURIX安全硬件基础

在英飞凌AURIX TC3xx系列中,安全能力并非由软件单独实现,而是由一组硬件安全模块与存储保护机制共同支撑。理解这些硬件单元各自负责什么、彼此如何衔接,是后续做密钥管理、安全启动与安全服务开发的前提。本节围绕HSM、CSRM、SHE、TRNG、PFLASH/SFLASH保护以及安全启动链展开,并给出密钥存储介质的映射关系。

一、HSM:独立的安全执行域

HSM(Hardware Security Module)是AURIX内部一个独立的处理器子系统,通常基于ARM Cortex-M系列内核,拥有自己的代码、数据存储区与中断控制,与主核(TriCore)在物理上隔离。它的价值在于:主核运行的应用软件即使被攻破,也无法直接读写HSM内部的密钥与安全逻辑。HSM通过共享内存或邮箱(Mailbox)与主核通信,主核只能以“请求—响应”的方式调用HSM提供的安全服务,例如加解密、签名验签、密钥派生、随机数获取。

实际工程中,HSM固件通常分为两部分:由芯片厂商提供的HSM固件(含底层驱动与基础密码算法)和用户开发的HSM应用(实现具体安全服务)。主核侧通过HSM驱动接口发起服务请求,请求参数放入共享内存,HSM处理完成后回写结果并置位状态。判断一次调用是否成功,应同时检查返回状态码与结果数据长度,而不是只看函数返回值。

二、CSRM、SHE与TRNG的定位

CSRM(Cyber Security Real-time Module)是AURIX中面向实时安全功能的硬件模块,可理解为承载SHE等安全功能的硬件载体。SHE(Secure Hardware Extension)是一套标准化的安全功能规范,定义了密钥槽结构、命令集(如CMD_ENC、CMD_MAC、CMD_LOAD_KEY)以及安全启动与密钥更新的基本流程。SHE的价值在于标准化:不同厂商的SHE实现遵循同一命令语义,便于整车厂统一管理密钥。

TRNG(True Random Number Generator)提供真随机数源,是密钥生成、挑战值、Nonce等安全数据的熵来源。它与伪随机数发生器(PRNG)的区别在于:TRNG从物理噪声中提取熵,不依赖确定性算法。工程上要注意,TRNG上电后需要一定的“熵积累”时间,首次读取前应检查其状态寄存器是否就绪,否则可能读到质量不足的数据。

AURIX安全硬件与密钥存储介质映射 主核 TriCore 应用软件 / 安全服务调用 HSM驱动接口 共享内存 / Mailbox HSM 安全域 独立内核 / 独立存储 密码算法 / 密钥管理 安全服务响应 CSRM / SHE 密钥槽 / 命令集 安全启动 / 密钥更新 标准化安全功能 服务请求 调用 TRNG 真随机数 熵源 / 密钥生成 / Nonce 熵输入 PFLASH 程序代码 / 安全启动固件 只读保护 / 读保护配置 启动时校验对象 SFLASH / DFLASH 密钥槽 / 配置数据 HSM专属数据区 受HSM访问控制保护 UCB / OTP 芯片配置 / 生命周期 安全启动使能位 一次性写入 / 不可逆 安全启动链 BootROM → HSM固件 → 主核应用

三、PFLASH与SFLASH的保护机制

AURIX的Flash分为PFLASH(Program Flash,存放程序代码)与DFLASH/SFLASH(数据Flash,存放数据与配置)。安全相关的保护主要体现在三个层面:

  • 读保护(Read Protection):通过UCB(User Configuration Block)配置,可禁止外部调试接口读取Flash内容。一旦使能,调试器无法直接读取代码与密钥区。
  • 写保护(Write Protection):对关键区域设置写保护,防止运行时被篡改。HSM固件区通常对主核只读。
  • 访问权限控制:HSM拥有独立的Flash区域,主核无法访问;SHE密钥槽存储在受保护区域,只能通过SHE命令间接操作。

需要特别注意的是,UCB中的安全配置属于一次性写入(OTP)或有限次写入,错误配置可能导致芯片永久锁定。因此在量产前必须确认配置方案,并在开发阶段使用可复位的配置模式。

四、安全启动链

AURIX的安全启动链遵循“逐级验证”的原则:

  1. BootROM阶段:芯片上电后首先执行固化在BootROM中的代码,检查启动模式与UCB配置,决定是否进入安全启动流程。
  2. HSM固件验证:BootROM验证HSM固件的完整性与真实性(通常基于CMAC或签名),验证通过后才释放HSM执行。
  3. 主核应用验证:HSM固件启动后,可对主核应用的代码段进行校验,校验通过后允许主核跳转到应用入口。

这条链的核心是:每一级在将控制权交给下一级之前,必须先验证下一级的完整性。如果某一级验证失败,系统应停留在安全状态(如进入Bootloader或复位),而不是继续执行未验证的代码。

五、密钥存储介质映射

不同安全等级的密钥应存放在不同的介质中,形成分层映射:

密钥类型 推荐存储介质 访问方式 典型用途
主密钥(Master Key) SHE密钥槽 / HSM内部存储 仅HSM/SHE可访问 密钥派生、安全启动根信任
应用密钥 SFLASH受保护区 通过HSM服务调用 通信加密、数据保护
会话密钥 RAM(运行时) 主核/HSM临时使用 单次会话加密
公钥/证书 PFLASH或外部存储 可公开读取 签名验证、身份认证
工程提示:密钥槽数量有限(SHE通常提供10个左右的密钥槽),规划时应优先保证根密钥与关键业务密钥的槽位,避免后期因槽位不足而被迫重构密钥体系。

六、实操要点:从配置到验证

以配置SHE密钥为例,典型流程如下:

1. 确认芯片处于可配置状态(未锁定)
2. 通过HSM驱动发送CMD_LOAD_KEY命令
   - 指定密钥槽ID(如KEY_1)
   - 提供密钥明文与验证码(M1/M2/M3)
3. HSM内部完成密钥写入与完整性校验
4. 读取密钥槽状态,确认写入成功
5. 使用CMD_ENC或CMD_MAC验证密钥功能正常

验证时,可构造一组已知明文与期望密文,调用SHE加密命令后比对结果。若结果不一致,应检查密钥槽ID、密钥属性(如是否允许加密)以及命令参数格式。对于安全启动,可通过修改应用镜像的一个字节,观察系统是否拒绝启动,以此确认验证链生效。

注意:调试阶段若使能了读保护,可能无法再通过调试器读取Flash,导致后续调试困难。建议在开发阶段保留调试访问,仅在量产固件中开启完整保护。