2. 密码学基础
在嵌入式密钥系统的量产交付中,密码学算法不是抽象概念,而是直接决定密钥如何生成、如何分发、如何验证、如何存储的工程约束。理解五类基础密码学原语的定位与代价,才能在资源受限的 MCU、安全芯片和产线设备之间做出正确取舍。
一、五类原语的核心定位
密码学原语可以按“是否可逆”和“是否带密钥”两个维度划分。对称加密与非对称加密解决机密性;哈希算法解决完整性;消息认证码解决完整性与来源认证;数字签名解决不可否认性与身份认证。
- 对称加密:同一密钥加解密,速度快、资源占用低,适合大批量数据加密,但密钥分发困难。
- 非对称加密:公钥加密、私钥解密,解决密钥分发问题,但运算慢、功耗高,通常只用于加密会话密钥。
- 哈希算法:单向压缩,输出固定长度摘要,用于完整性校验和密钥派生,不提供机密性。
- 消息认证码:带密钥的哈希,验证数据未被篡改且来自持有密钥的一方,常用于固件包和指令认证。
- 数字签名:私钥签名、公钥验签,提供不可否认性,是安全启动和固件升级的信任根。
二、嵌入式场景的选型约束
嵌入式设备与服务器不同,算法选型必须同时考虑算力、内存、功耗和密钥存储安全。下表给出常见算法在典型 Cortex-M4 平台上的工程参考。
| 算法类别 | 典型算法 | RAM 占用 | 相对速度 | 嵌入式适用场景 |
|---|---|---|---|---|
| 对称加密 | AES-128-CTR | 约 1–2 KB | 快 | 固件加密、通信数据加密 |
| 非对称加密 | ECC P-256 | 约 4–8 KB | 慢 | 密钥协商、会话密钥封装 |
| 哈希算法 | SHA-256 | 约 1 KB | 中 | 完整性校验、密钥派生 |
| 消息认证码 | HMAC-SHA256 | 约 2 KB | 中 | 固件包认证、指令认证 |
| 数字签名 | ECDSA P-256 | 约 4–8 KB | 慢 | 安全启动、固件签名验证 |
三、量产交付中的典型组合流程
在产线烧录环节,通常采用“非对称签名 + 哈希 + 对称加密”的组合方案。以下是一个典型的固件包保护与验证流程:
1. 产线工具生成随机 AES 会话密钥 K_session
2. 使用 K_session 对固件镜像执行 AES-128-CTR 加密
3. 对密文计算 SHA-256 摘要
4. 使用产线私钥对摘要执行 ECDSA 签名
5. 将密文、签名、签名证书打包为交付固件包
6. 设备端使用预置公钥验签,确认摘要一致
7. 使用安全存储中的密钥解密 K_session,再解密固件
8. 解密后再次计算哈希,与签名中的摘要比对
关键点:签名保护的是摘要,摘要来自密文,因此签名同时覆盖了完整性和来源认证。设备端必须使用安全存储中的公钥,且公钥本身不能被篡改。
四、常见误区与复盘
- 误区一:用哈希代替加密。哈希是单向的,不能恢复明文,不能用于需要解密的固件保护场景。
- 误区二:用对称加密代替签名。对称加密双方共享密钥,无法提供不可否认性,产线内部人员可以伪造固件。
- 误区三:忽略密钥生命周期。量产密钥一旦泄露,所有已交付设备都面临风险,必须设计密钥轮换和吊销机制。
- 误区四:纯软件实现高安全等级算法。在无硬件加速的 MCU 上,AES 和 ECC 的侧信道防护很难保证,建议使用安全芯片或硬件加密引擎。
排障提示:如果设备验签失败,优先检查公钥是否被正确烧录、签名数据是否包含长度字段、哈希计算是否覆盖了完整密文。量产阶段建议在产线工具中增加签名自检步骤,避免批量烧录后才发现密钥配置错误。
五、小结
对称加密、非对称加密、哈希、消息认证码和数字签名在嵌入式密钥系统中各有不可替代的位置。量产交付的核心不是选择“最强”的算法,而是根据设备算力、安全等级和产线流程,组合出可验证、可追溯、可轮换的密钥保护方案。理解每类原语的边界,才能避免把哈希当加密、把对称密钥当签名密钥使用等常见工程错误。