3. 安全启动的密码学基础
Microchip 安全启动(Secure Boot)不是单一算法,而是一条由多种密码学原语串联而成的信任链。理解每个原语在链中的位置,比记住算法名称更重要。本节以 Microchip 器件(如 SAM、PIC32、CEC 系列)的典型安全启动流程为背景,说明 SHA-256、ECDSA、ECDH、AES、HMAC、TRNG 各自承担什么角色,以及密钥长度与性能之间的取舍。
一、各原语在信任链中的角色
SHA-256 是整条链的“度量尺”。固件镜像在签名前先做 SHA-256 摘要,得到 32 字节哈希值;启动时引导程序对同一镜像重新计算摘要,与签名中解出的摘要比对。SHA-256 本身不提供机密性和认证,它只保证“内容变了,摘要一定变”。在 Microchip 安全启动中,摘要通常覆盖整个镜像或按段(如 Header、Code、Config)分别计算。
ECDSA 是“签名与验签”的核心。Microchip 安全启动普遍采用 ECDSA P-256(secp256r1)或 P-384。签名方用私钥对固件摘要签名,器件端用固化在 OTP 或安全区中的公钥验签。验签通过,才认为固件来源可信且未被篡改。ECDSA 只做认证,不做加密。
ECDH 用于“密钥协商”,常见于安全启动后的安全通信或固件加密传输场景。器件与主机各自持有 ECDH 私钥,交换公钥后推导出共享密钥。它不直接参与启动验签,但为后续加密通道提供密钥材料。
AES 负责“机密性”。当固件需要加密存储或加密传输时,使用 AES-128/256(CBC 或 GCM 模式)加密镜像。安全启动中,AES 通常与 ECDH 协商出的密钥配合,或使用预置密钥。AES-GCM 还能同时提供完整性校验,但 Microchip 安全启动中更常见的是“先解密、再 SHA-256 验签”的分层结构。
HMAC 是“带密钥的完整性校验”。与 ECDSA 不同,HMAC 使用对称密钥,速度快、资源占用小,适合在资源受限的 MCU 上做快速完整性检查,或用于安全启动过程中的命令认证、防重放。HMAC-SHA256 是常见组合。
TRNG 是“随机性源头”。ECDSA 签名、ECDH 密钥生成、AES 密钥、HMAC 密钥、防重放 nonce 都依赖高质量随机数。Microchip 器件通常内置 TRNG(真随机数发生器),配合 DRBG 使用。TRNG 质量差会导致私钥可预测,直接摧毁整条信任链。
二、密钥长度选择:安全强度与资源开销
Microchip 安全启动中,密钥长度不是越大越好,而是要与器件资源、启动时间、安全等级匹配。下表给出常见组合的参考。
| 算法 | 常用长度 | 安全强度(约) | Microchip 场景建议 |
|---|---|---|---|
| SHA-256 | 256 bit | 128 bit | 默认选择,摘要长度固定 32 字节 |
| ECDSA | P-256 / P-384 | 128 / 192 bit | P-256 适合多数 MCU;P-384 用于高安全等级 |
| ECDH | P-256 / P-384 | 128 / 192 bit | 与 ECDSA 曲线保持一致,便于密钥管理 |
| AES | 128 / 256 bit | 128 / 256 bit | AES-128 速度更快;AES-256 用于长期密钥 |
| HMAC | SHA-256 | 128 bit | 密钥长度建议 ≥ 256 bit,与 SHA-256 匹配 |
| TRNG | — | 熵源质量 | 必须通过 NIST SP 800-90B 评估 |
选择时重点看三点:第一,器件是否带硬件加密加速器(如 CryptoEngine),带加速器时 P-384 与 AES-256 的开销可接受;第二,启动时间预算,ECDSA P-256 验签在 100 MHz Cortex-M4 上约几毫秒到十几毫秒,P-384 约 2~3 倍;第三,密钥存储空间,OTP 中公钥、哈希、配置字都要占位。
三、性能权衡与工程实践
在 Microchip 安全启动中,性能瓶颈通常不在 SHA-256,而在 ECDSA 验签和 AES 解密。SHA-256 有硬件加速时吞吐可达几十 MB/s,纯软件也有几 MB/s。ECDSA P-256 验签是公钥运算,涉及模逆和点乘,是启动阶段最耗时的单步。AES-256 解密若用硬件 AES 引擎,速度远快于软件实现。
一个实用的工程策略是“分层校验”:Boot ROM 只验签最小引导段(含公钥和下一级摘要),引导段再验签完整应用镜像。这样既保证信任链,又避免每次启动都对大镜像做完整公钥运算。HMAC 则用于启动后的命令通道,用对称密钥快速校验,不占用公钥运算资源。
TRNG 自检命令确认熵源正常;再在开发板上测量 P-256 验签耗时,确认满足启动时间要求;最后把公钥哈希烧入 OTP,并锁定安全配置位。
总结来说,SHA-256 负责度量,ECDSA 负责认证,ECDH 负责协商,AES 负责机密性,HMAC 负责快速完整性,TRNG 负责随机性。六者各司其职,缺一不可。密钥长度选择要在安全强度、器件资源和启动时间之间取平衡,P-256 + AES-128 + SHA-256 + HMAC-SHA256 是多数 Microchip MCU 安全启动的稳妥起点,高安全场景再升级到 P-384 + AES-256。