4. 密码学基础

S32G 作为面向车载网关与域控制器的安全处理器,其可信启动、安全刷写、安全通信与密钥管理都建立在密码学原语之上。理解对称加密、非对称加密、哈希、消息认证码(MAC)与数字签名这五类基础工具,是读懂 HSE(Hardware Security Engine)固件、S32G 启动镜像签名校验以及车载以太网安全通信的前提。本节从“它们各自解决什么问题”出发,再落到 S32G 上的具体使用位置。

一、五类密码学原语的核心定位

密码学原语不是互相替代的关系,而是各司其职。对称加密解决“机密性”,非对称加密解决“密钥分发与身份绑定”,哈希解决“完整性摘要”,MAC 解决“带共享密钥的完整性认证”,数字签名解决“可公开验证的来源与完整性”。在 S32G 的可信启动链中,通常先用哈希压缩镜像,再用非对称签名验证来源,最后用对称密钥保护运行期数据。

  • 对称加密:同一密钥加解密,速度快、适合大数据量,如 AES-128/256、SM4。S32G HSE 支持 AES 硬件加速,用于安全存储与安全通信会话密钥。
  • 非对称加密:公钥加密、私钥解密,或私钥签名、公钥验签,如 RSA、ECC、SM2。S32G 启动镜像签名常用 ECC P-256 或 RSA-2048/3072。
  • 哈希算法:单向压缩,输出固定长度摘要,如 SHA-256、SHA-384、SM3。用于度量启动各阶段镜像,形成可信度量值。
  • 消息认证码:基于共享密钥的完整性校验,如 HMAC-SHA256、CMAC-AES。用于 HSE 与主核之间的命令认证、SecOC 报文认证。
  • 数字签名:私钥签名、公钥验签,具备不可否认性。用于 BootROM 验证 HSE 固件、HSE 验证应用镜像。

二、S32G 可信启动中的密码学数据流

下图给出 S32G 从 BootROM 到应用镜像的典型密码学处理链路。可以看到哈希、签名、MAC 与对称加密并非孤立使用,而是按“先度量、再验签、后解密/认证”的顺序协同工作。

S32G 可信启动密码学数据流 BootROM 内置根公钥 SHA-256 + ECC 验签 HSE 固件 哈希度量 + 签名校验 建立信任根 Bootloader CMAC 校验配置 AES 解密镜像 应用镜像 签名验证通过后运行 SecOC 保护通信 哈希算法 SHA-256 / SM3 生成镜像摘要 数字签名 ECDSA / RSA / SM2 验证镜像来源 消息认证码 HMAC / CMAC 命令与报文认证 对称加密 AES-128/256 / SM4 保护数据机密性 关键原则: 私钥永不离开 HSE 安全区;哈希用于度量,签名用于验证来源,MAC 用于会话认证,对称加密用于批量数据保护。

三、方法流程:从镜像到可信运行的校验步骤

以 S32G 的 HSE 固件加载为例,典型校验流程如下:

  1. BootROM 读取 HSE 固件头部,提取签名、证书链与镜像长度。
  2. BootROM 用内置根公钥验证证书链,确认 HSE 固件签名公钥合法。
  3. 对固件镜像计算 SHA-256 摘要,并用签名公钥验证 ECDSA 签名。
  4. 验签通过后,BootROM 将控制权交给 HSE 固件,信任根建立。
  5. HSE 固件继续用相同机制验证 Bootloader 与应用镜像。
  6. 运行期,HSE 用 CMAC 校验配置数据,用 AES 保护安全存储,用 HMAC 认证主机命令。

关键点:哈希本身不提供来源认证,必须与签名或 MAC 结合;签名验证的是“摘要 + 私钥”,因此镜像任何一字节变化都会导致验签失败。

四、S32G 上的典型参数与配置示例

在 HSE 固件配置与安全启动脚本中,常见参数包括密钥类型、曲线、摘要算法与密钥句柄。以下为示意配置片段:

# HSE 安全启动配置示例(示意)
key_type        = ECC_P256
hash_algo       = SHA256
signature_algo  = ECDSA
root_key_slot   = 0
hse_key_handle  = 0x0001
image_auth      = ENABLE
cmac_algo       = AES_CMAC
secure_boot     = STRICT

在车载以太网 SecOC 场景中,报文认证通常使用 AES-CMAC 或 HMAC-SHA256,配合新鲜度值防止重放。S32G 的 HSE 可提供硬件加速,降低主核负载。

五、对比与选型清单

原语 典型算法 密钥关系 S32G 中的主要用途 性能特征
对称加密 AES-128/256、SM4 同一密钥 安全存储、会话加密 快,适合大数据量
非对称加密 RSA、ECC、SM2 公钥/私钥 密钥分发、签名验签 慢,适合小数据
哈希 SHA-256、SHA-384、SM3 无密钥 镜像度量、完整性摘要 快,单向
消息认证码 HMAC-SHA256、CMAC-AES 共享密钥 命令认证、SecOC 报文 较快,需共享密钥
数字签名 ECDSA、RSA-PSS、SM2 私钥签/公钥验 可信启动、镜像签名 慢,可公开验证

六、常见误区与复盘

误区一:用哈希代替签名。哈希只能证明数据未被篡改,但攻击者可同时替换数据和哈希值。可信启动必须使用签名或 MAC。

误区二:对称密钥硬编码在应用代码中。S32G 应利用 HSE 密钥槽与安全区,密钥不出安全边界,避免被固件提取。

误区三:忽略新鲜度值。SecOC 中仅用 CMAC 无法防重放,必须结合新鲜度值或计数器。

误区四:验签通过即认为系统安全。验签只保证镜像来源与完整性,还需配合调试口锁定、生命周期管理、安全日志等机制。

复盘来看,S32G 的密码学应用应遵循“根密钥保护、逐级度量、验签后执行、运行期认证”的闭环。对称加密、非对称加密、哈希、MAC 与数字签名各自承担不同职责,只有组合使用,才能构建从 BootROM 到应用层的完整信任链。