2. 密码学基础

在固件签名验签与启动认证工程中,密码学原语是整条信任链的“砖石”。理解对称加密、非对称加密、哈希函数、数字签名和消息认证码(MAC)这五类基础工具的原理与边界,才能正确设计启动镜像的完整性保护、来源认证和防回滚机制。本节从“密钥形态”和“安全目标”两个维度切入,帮助你在后续章节中准确选择算法与密钥管理策略。

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

对称加密使用同一把密钥完成加密与解密,典型算法有 AES-128/256、SM4。它运算快、适合大数据量加密,但密钥分发是难点:设备与服务器必须预先共享密钥,一旦某台设备密钥泄露,整个批次都可能受影响。在固件场景中,对称加密常用于加密固件镜像本身,防止逆向与窃取。

非对称加密使用公钥与私钥配对:公钥可公开,私钥严格保密。RSA、ECC、SM2 是常见算法。它的优势是解决了密钥分发问题,但运算速度远低于对称加密,通常不直接加密大块数据,而是用于加密对称密钥或做数字签名。

哈希函数把任意长度输入压缩为固定长度摘要,如 SHA-256 输出 256 位。它具备单向性、抗第二原像和抗碰撞性。哈希本身不提供密钥,只用于检测数据是否被篡改,是完整性校验的基础。

数字签名是“私钥签名、公钥验签”的机制:先对消息做哈希,再用私钥对摘要签名;验证方用公钥解密签名得到摘要,与本地重新计算的摘要比对。它同时提供完整性、来源认证和不可否认性,是固件签名验签的核心。

消息认证码(MAC)使用共享密钥对消息计算认证标签,如 HMAC-SHA256、CMAC。它提供完整性和来源认证,但不提供不可否认性,因为验证方也持有同一把密钥,无法向第三方证明“只有发送方能生成”。

五类密码学原语:密钥形态与安全目标 对称加密 AES / SM4 密钥:同一把共享密钥 目标:机密性 速度:快,适合大数据 固件用途:加密镜像 风险:密钥分发与泄露 非对称加密 RSA / ECC / SM2 密钥:公钥 + 私钥 目标:机密性 / 密钥交换 速度:慢,不直接加密大块 固件用途:加密会话密钥 风险:私钥保护与算法参数 哈希函数 SHA-256 / SM3 密钥:无密钥 目标:完整性 输出:固定长度摘要 固件用途:镜像摘要比对 风险:碰撞与长度扩展攻击 数字签名 RSA-PSS / ECDSA / SM2 密钥:私钥签名,公钥验签 目标:完整性 + 来源认证 + 不可否认 速度:慢,仅对摘要运算 固件用途:签名固件镜像 风险:私钥泄露、随机数复用 消息认证码 MAC HMAC-SHA256 / CMAC 密钥:双方共享密钥 目标:完整性 + 来源认证 速度:快,适合实时校验 固件用途:安全启动阶段校验 风险:无不可否认性 哈希是签名前置 哈希是 MAC 前置

二、安全目标与密钥形态的对应关系

选择密码学工具时,先问两个问题:要保护什么(机密性、完整性、来源认证、不可否认性),双方是否共享密钥。对称加密和 MAC 属于“共享密钥”体系,签名和非对称加密属于“公私钥”体系,哈希则完全无密钥。下表给出五类原语在固件场景中的定位。

原语 密钥形态 主要安全目标 典型算法 固件场景
对称加密 共享密钥 机密性 AES-256、SM4 加密固件镜像
非对称加密 公钥/私钥 机密性、密钥交换 RSA-OAEP、ECC 保护会话密钥
哈希函数 无密钥 完整性 SHA-256、SM3 镜像摘要比对
数字签名 私钥签名/公钥验签 完整性、来源认证、不可否认 ECDSA、RSA-PSS、SM2 固件签名验签
消息认证码 共享密钥 完整性、来源认证 HMAC-SHA256、CMAC 启动阶段校验

三、方法流程:从镜像到可信启动

在固件签名验签工程中,五类原语通常按以下流程协同工作:

  1. 构建阶段:对固件镜像计算 SHA-256 摘要,得到 digest。
  2. 签名阶段:使用私钥对 digest 执行 ECDSA 签名,生成 signature,与镜像一起打包。
  3. 分发阶段:镜像可选用 AES 加密保护机密性,密钥通过非对称加密或安全通道下发。
  4. 启动阶段:BootROM 用公钥验签 signature,重新计算摘要并比对,通过后才加载下一级。
  5. 运行时校验:对关键配置或分区使用 HMAC 校验,防止运行期篡改。
# 构建侧:生成摘要并签名
openssl dgst -sha256 -sign private.pem -out firmware.sig firmware.bin

# 设备侧:验签并比对摘要
openssl dgst -sha256 -verify public.pem -signature firmware.sig firmware.bin
# 输出:Verified OK

四、案例与场景:安全启动中的组合使用

某工业网关的安全启动方案中,BootROM 内置公钥哈希,一级引导使用 ECDSA 验签二级引导;二级引导使用 HMAC-SHA256 校验应用分区;应用固件本身用 AES-256-CTR 加密,密钥由设备唯一私钥解密获得。这样既保证了来源可信,又保护了固件机密性,同时用 MAC 降低了运行期校验开销。

工程提示:签名只保护“摘要”,因此哈希算法的抗碰撞性直接决定签名安全性。SHA-1 已不推荐用于新设计,优先选择 SHA-256 或 SM3。

五、常见误区与复盘

  • 误区一:用哈希代替签名。哈希无密钥,攻击者可同时替换镜像和摘要,无法证明来源。
  • 误区二:用 MAC 代替签名。MAC 双方共享密钥,验证方也能伪造标签,不具备不可否认性。
  • 误区三:对称加密密钥硬编码。一旦固件被提取,密钥即泄露,所有设备失守。
  • 误区四:忽略随机数质量。ECDSA 签名中随机数复用会直接暴露私钥,必须使用安全随机源。
  • 误区五:只验签不校验版本。攻击者可回滚到旧版有漏洞固件,需结合防回滚计数器。
复盘要点:密码学原语没有“万能药”。机密性用对称加密,密钥交换用非对称加密,完整性用哈希,来源认证与不可否认用签名,共享密钥场景下的完整性用 MAC。明确安全目标,再选工具,才能构建可靠的固件信任链。