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 的 HSE 固件加载为例,典型校验流程如下:
- BootROM 读取 HSE 固件头部,提取签名、证书链与镜像长度。
- BootROM 用内置根公钥验证证书链,确认 HSE 固件签名公钥合法。
- 对固件镜像计算 SHA-256 摘要,并用签名公钥验证 ECDSA 签名。
- 验签通过后,BootROM 将控制权交给 HSE 固件,信任根建立。
- HSE 固件继续用相同机制验证 Bootloader 与应用镜像。
- 运行期,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 到应用层的完整信任链。