3. 密码学基础

在车载密钥生产与产线安全工程中,密码学不是抽象理论,而是贯穿密钥生成、注入、存储、传输、校验和审计全过程的“工程材料”。理解六类基础原语的分工,才能正确设计产线密钥体系,避免把加密、认证、完整性保护混为一谈。

一、核心原理:六类原语的分工

对称加密使用同一把密钥完成加密和解密,典型算法有 AES-128/256、SM4。它的优势是速度快、适合大数据量,例如加密 ECU 固件包、诊断日志或密钥备份文件。难点在于密钥分发:产线设备与后台服务器必须预先共享同一密钥,且密钥数量随节点增加而膨胀。

非对称加密使用公钥加密、私钥解密,或私钥签名、公钥验签,典型算法有 RSA、ECC、SM2。它解决了密钥分发问题,但运算慢,通常只用于保护对称密钥、协商会话密钥或做数字签名,不直接加密大块数据。

哈希函数把任意长度输入压缩成固定长度摘要,如 SHA-256、SM3。它具备单向性和抗碰撞性,用于校验固件完整性、生成密钥指纹、构建消息认证码。哈希本身不提供机密性,也不能单独证明来源。

消息认证码(MAC)在共享密钥下对消息生成认证标签,如 HMAC-SHA256、CMAC-AES。它同时保证完整性和来源认证,但通信双方共享同一密钥,因此无法向第三方证明“是谁发的”。

数字签名用私钥签名、公钥验签,如 ECDSA、SM2 签名。它提供不可否认性,适合产线授权文件、密钥注入许可、固件发布清单等场景。

密钥派生函数(KDF)从一个主密钥或共享秘密派生出多个用途隔离的子密钥,如 HKDF、PBKDF2、SP800-108 KDF。它让“一把主密钥”安全地扩展为加密密钥、MAC 密钥、会话密钥,避免密钥复用。

车载密钥生产中的密码学原语分工 对称加密 AES / SM4 固件包、日志、备份 非对称加密 RSA / ECC / SM2 保护会话密钥 哈希函数 SHA-256 / SM3 完整性、指纹 消息认证码 HMAC / CMAC 完整 + 来源认证 数字签名 ECDSA / SM2 不可否认、授权 密钥派生函数 HKDF / PBKDF2 主密钥 → 子密钥 产线密钥生产核心链路 主密钥 → KDF 派生子密钥 → 对称加密保护数据 → MAC/签名认证 → 哈希校验完整性 工程原则: 加密不替代认证,哈希不替代签名,MAC 不提供不可否认性;密钥必须按用途隔离,禁止一钥多用。

二、方法流程:从主密钥到产线可用密钥

车载密钥生产通常遵循“根密钥不出安全边界、子密钥按需派生、用途严格隔离”的流程。典型步骤如下:

  1. 在 HSM 或安全服务器中生成或导入根密钥,根密钥永不导出明文。
  2. 使用 KDF 从根密钥派生“产线加密密钥”“产线 MAC 密钥”“诊断会话密钥”等子密钥,并绑定用途标签和产线编号。
  3. 用对称密钥加密密钥材料,用 MAC 或数字签名保护注入指令,用哈希校验固件与配置清单。
  4. 将密文、认证标签、签名和摘要一并下发到产线工装,工装验签、验 MAC、解密后写入 ECU。
  5. 记录密钥指纹、派生路径、操作时间和操作员,形成可审计日志。

关键点:KDF 的输入应包含上下文信息,如产线 ID、ECU 序列号、用途标签,使同一主密钥在不同场景下派生出不同子密钥,即使某一子密钥泄露,也不会危及其他用途。

三、案例/场景:产线密钥注入的密码学组合

假设某 ECU 产线需要向 10 万台控制器注入唯一密钥。后台使用 SM4 加密密钥包,使用 HMAC-SM3 保护注入指令完整性,使用 SM2 签名授权“本批次允许注入”,使用 SM3 校验固件摘要,使用 HKDF 从主密钥派生每台设备的传输密钥。

主密钥 MK
  ├─ HKDF(MK, "line-A/enc")  → 产线加密密钥 K_enc
  ├─ HKDF(MK, "line-A/mac")  → 产线认证密钥 K_mac
  └─ HKDF(MK, "ecu-0001/session") → 设备会话密钥 K_sess

注入包 = SM4(K_enc, 密钥材料) || HMAC-SM3(K_mac, 指令头)
授权文件 = SM2_Sign(产线私钥, 批次清单)
校验值 = SM3(固件镜像)

工装收到注入包后,先验 SM2 签名确认批次合法,再验 HMAC 确认指令未被篡改,然后用 K_enc 解密密钥材料,最后用 SM3 校验固件。四类原语各司其职,缺一不可。

四、误区与复盘

常见误区 后果 正确做法
用哈希代替签名 无法证明来源,攻击者可替换摘要 需要来源认证时使用数字签名或 MAC
用 MAC 代替数字签名 共享密钥导致无法向第三方举证 需要不可否认性时使用非对称签名
同一密钥既加密又做 MAC 密钥复用增加攻击面 用 KDF 派生用途隔离的独立子密钥
KDF 不带上下文标签 不同产线派生出相同子密钥 绑定产线 ID、设备 ID、用途标签
只校验哈希不校验签名 固件被替换后哈希也会被同步替换 哈希与签名、MAC 组合使用

复盘提醒:产线安全工程中最危险的不是算法强度不足,而是原语用错位置。加密解决机密性,MAC 和签名解决完整性与来源,哈希解决摘要与指纹,KDF 解决密钥扩展与隔离。设计时先问“我要防什么”,再选原语,而不是先选算法再找用途。

实践建议:在密钥生产系统中为每类原语建立独立密钥域和独立审计字段;对 KDF 的输入、输出长度、盐值和上下文做版本化管理;所有签名和 MAC 验证失败必须记录失败原因和原始摘要,便于产线排障与安全追溯。