3、密码学基础回顾:对称加密(AES)、非对称加密(RSA/ECC)、哈希函数、消息认证码、数字签名、密钥交换协议
嵌入式安全启动与密钥管理体系的构建,本质上是对密码学原语的工程化组合。无论是HSM(硬件安全模块)中的密钥存储策略,还是安全启动链中逐级校验的信任根传递,其底层都依赖于对称加密、非对称加密、哈希函数、消息认证码、数字签名与密钥交换协议这六大基础模块。理解这些原语的数学特性、适用场景与工程边界,是设计可靠嵌入式安全方案的前提。本章将系统回顾这些核心密码学组件,并重点剖析它们在HSM与安全启动场景中的具体应用形态。
上图展示了六大密码学组件在嵌入式安全体系中的定位与协作关系。HSM作为硬件信任根,统一调度这些算法完成密钥生命周期管理与安全启动验证。下面我们将逐一深入剖析每个组件的核心原理、工程实现要点与常见误区。
3.1 对称加密:AES的工程化应用
核心原理
AES(高级加密标准)是当前嵌入式领域最主流的对称分组密码算法,分组长度固定为128位,支持128/192/256位三种密钥长度。其核心运算在有限域GF(2^8)上进行,通过字节代换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)与轮密钥加(AddRoundKey)四类变换,迭代10/12/14轮完成加密。AES的硬件实现效率极高,在主流MCU上通常配备专用加密引擎,加解密吞吐量可达数百Mbps,且不占用CPU主频资源。
操作模式与判断方法
实际工程中,AES必须配合操作模式使用。ECB模式不安全,相同明文产生相同密文,易受模式攻击,应严格禁用。CBC模式需要初始向量(IV),适合块数据加密,但无法并行处理。CTR模式将计数器加密后与明文异或,支持随机访问与并行计算,是嵌入式固件加密的首选。GCM模式在CTR基础上增加GMAC认证标签,同时提供加密与完整性保护,推荐用于需要认证的场景。选择模式时需评估:数据长度是否固定、是否需要随机访问、是否同时需要完整性保护。
| 操作模式 | 安全性 | 并行性 | 完整性 | 嵌入式适用场景 |
|---|---|---|---|---|
| ECB | 低(禁用) | 支持 | 无 | 不推荐 |
| CBC | 中 | 不支持 | 无 | 传统兼容 |
| CTR | 高 | 支持 | 无 | 固件加密存储 |
| GCM | 高 | 支持 | 有(GMAC) | 安全通信、认证加密 |
案例拆解:固件镜像的AES-CTR加密存储
某车载T-Box产品需在外部Flash中存储升级固件,防止被逆向提取。设计采用AES-128-CTR模式,密钥由HSM内部生成并存储,明文固件在工厂产线通过安全通道注入HSM加密后写入Flash。启动时,Bootloader从HSM获取解密密钥,以4KB扇区为单位随机读取解密。关键参数:计数器初始值为设备唯一ID(32位)拼接固件版本号(32位),确保不同设备、不同版本使用不同密钥流。实测解密吞吐量达320Mbps,CPU占用率低于5%。风险点在于计数器管理,若计数器回退将导致密钥流重用,因此计数器值需存储在HSM防回滚区域。
3.2 非对称加密:RSA与ECC的选型博弈
核心原理
RSA基于大整数分解难题,密钥长度通常为2048或3072位,运算速度慢,但兼容性极好。ECC基于椭圆曲线离散对数难题,在同等安全强度下密钥长度更短(P-256曲线等效于RSA-3072),运算效率更高,尤其适合资源受限的嵌入式设备。安全启动场景中,ECC签名验证速度比RSA快3-5倍,且签名体积小(64字节 vs 256字节),可有效减少固件头开销。
判断方法与选型建议
- 性能敏感型:选择ECC P-256,签名验证延迟可控制在毫秒级,适合启动时间要求严格的场景。
- 兼容性优先:若需与旧版基础设施对接,选择RSA-2048,但需评估CPU负载。
- 密钥长度与存储:ECC公钥仅32字节,适合存储在OTP区域;RSA公钥需256字节,占用更多安全存储。
- 侧信道防护:ECC实现需关注标量乘法的时间攻击,推荐使用固定时间算法或硬件加速器。
案例拆解:ECC在安全启动链中的应用
某工业网关采用NXP i.MX8M Plus平台,安全启动链设计为:ROM代码验证SPL(Secondary Program Loader)的ECDSA P-256签名,SPL验证U-Boot签名,U-Boot验证内核签名。公钥哈希(SHA-256)烧录在eFuse中作为信任根。实测完整启动链签名验证总耗时约120ms,其中ROM验证SPL占35ms,SPL验证U-Boot占50ms,U-Boot验证内核占35ms。若改用RSA-2048,总耗时将增至450ms,超出产品500ms启动时间预算。该案例表明,ECC在嵌入式安全启动中具有显著性能优势。
3.3 哈希函数与消息认证码
核心原理
哈希函数将任意长度输入映射为固定长度输出(如SHA-256输出256位),具有单向性、抗碰撞性与雪崩效应。在安全启动中,哈希用于度量固件完整性:Bootloader计算待加载镜像的哈希值,与安全存储的基准值比对,任何比特变化都会导致哈希值完全改变。消息认证码(MAC)在哈希基础上引入共享密钥,HMAC-SHA256是主流实现,同时提供完整性保护与来源认证,防止攻击者伪造合法数据。
操作流程:安全启动中的哈希度量链
- ROM代码读取Bootloader头部,提取其哈希值并与eFuse中的基准值比对。
- 若匹配,ROM将控制权交给Bootloader,并传递平台配置寄存器(PCR)状态。
- Bootloader度量内核镜像哈希,扩展PCR值,并与存储的预期值比对。
- 内核启动后,可继续度量应用固件与关键配置文件,形成完整信任链。
案例拆解:HMAC在OTA升级包认证中的应用
某智能电表通过蜂窝网络接收OTA升级包,升级包格式为:固件镜像 + 元数据 + HMAC-SHA256标签。共享密钥由HSM生成,并预置于设备与升级服务器。设备接收完整包后,先计算HMAC并与标签比对,验证通过后才允许写入Flash。关键参数:HMAC密钥长度256位,每台设备使用独立密钥,防止批量攻击。实测HMAC计算耗时约8ms(硬件加速),升级包大小32MB,整体验证时间可接受。该方案有效防止了中间人攻击与固件篡改。
3.4 数字签名与密钥交换协议
核心原理
数字签名结合哈希与非对称加密:发送方用私钥对消息哈希签名,接收方用公钥验签。ECDSA签名由(r, s)两个整数组成,验证过程涉及椭圆曲线点乘运算。数字签名提供完整性、真实性、不可否认性三重保障,是安全启动信任链的核心机制。密钥交换协议(如ECDH)允许双方在不安全信道上协商共享密钥,结合临时密钥对可实现前向保密。
判断方法与工程要点
- 签名算法选择:ECDSA P-256是嵌入式主流,Ed25519提供更高安全性与抗侧信道能力,但需确认工具链支持。
- 密钥交换场景:HSM与主机之间建立安全通道时,使用ECDH协商会话密钥,再配合AES-GCM加密通信。
- 前向保密:使用临时ECDH密钥对(ephemeral key),会话结束后销毁,即使长期私钥泄露,历史会话仍安全。
- 防重放攻击:在密钥交换消息中加入随机数(nonce)或时间戳,防止攻击者重放旧会话。
案例拆解:HSM安全通道的ECDH+AES-GCM设计
某汽车域控制器需与远程诊断服务器建立安全通道。设计采用ECDH P-256协商会话密钥,AES-128-GCM加密通信数据。流程:设备生成临时ECDH密钥对,将公钥发送服务器;服务器生成临时密钥对,计算共享密钥;双方通过HKDF派生会话密钥与IV。关键参数:临时密钥对每次会话重新生成,会话超时时间5分钟,超过后强制重新协商。实测握手延迟约40ms,满足诊断会话实时性要求。该方案确保了诊断指令与车辆数据在传输过程中的机密性与完整性。