2、安全基础概念:对称加密、非对称加密、哈希、消息认证码、数字签名、密钥管理等核心术语
在深入MCU硬件安全模块(HSM)的工程实现之前,必须先建立一套统一的安全术语体系。汽车电子领域的网络安全(Cybersecurity)与功能安全(Functional Safety)不同,它关注的是攻击者主动发起的恶意行为,而非随机硬件故障。本章将围绕对称加密、非对称加密、哈希函数、消息认证码(MAC)、数字签名和密钥管理这六大核心概念展开,并结合HSM硬件加速器的实际工作方式,说明这些算法在车规级MCU中如何落地。理解这些基础术语,是后续学习密钥协商、安全启动、安全通信和固件升级的基础。
上图展示了本章六个核心概念在HSM体系中的位置。对称加密和非对称加密解决机密性问题,哈希函数解决完整性问题,消息认证码同时解决完整性和数据源认证问题,数字签名则进一步提供不可否认性。密钥管理是所有密码算法的支撑,它决定了密钥从生成到销毁整个生命周期的安全性。下面逐一展开。
2.1 对称加密:AES算法与硬件加速
核心原理:对称加密使用同一个密钥进行加密和解密。发送方用密钥K将明文P加密为密文C,接收方用同一个密钥K将密文C解密为明文P。在MCU环境中,最常用的对称加密算法是AES(高级加密标准),支持128位和256位密钥长度。AES-128的密钥长度为16字节,AES-256为32字节。AES算法在硬件实现上非常高效,现代车规MCU的HSM模块通常内置AES硬件加速器,可以在几个时钟周期内完成一个数据块的加解密。
判断方法与操作流程:在HSM开发中,选择对称加密时需考虑以下因素:
- 密钥长度:车规级应用推荐AES-128或AES-256。AES-128已满足大多数场景,AES-256用于高安全等级场景。
- 工作模式:ECB模式不推荐用于多数据块,CBC模式需要初始向量(IV),GCM模式同时提供加密和完整性校验。
- 硬件加速:确认HSM是否支持AES硬件加速,以及是否支持DMA传输,避免CPU参与大量数据搬运。
// 伪代码示例:使用HSM的AES-GCM模式加密
hsm_aes_gcm_encrypt(
key_id = KEY_STORAGE_1, // 密钥存储在HSM内部
iv = 12_byte_nonce, // 随机数
plaintext = data_buf, // 明文数据
ciphertext = out_buf, // 密文输出
tag = auth_tag // 128位认证标签
);
实战场景:在车载以太网通信中,SHE(安全硬件扩展)或HSM模块使用AES-128-CMAC作为消息认证码,同时使用AES-128-CBC或GCM加密诊断数据。例如,UDS诊断服务中的安全访问(SecurityAccess)功能,ECU使用AES-128加密种子(Seed)生成密钥(Key),防止未经授权的诊断操作。
2.2 非对称加密:ECC与RSA的工程选择
核心原理:非对称加密使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分发,私钥必须严格保密。用公钥加密的数据只能用私钥解密,反之亦然。在MCU环境中,RSA和ECC(椭圆曲线密码)是两种主流算法。RSA基于大整数分解难题,密钥长度通常为2048位或3072位;ECC基于椭圆曲线离散对数难题,密钥长度短得多,256位ECC即可提供与3072位RSA相当的安全强度。对于资源受限的MCU,ECC在计算速度和存储占用上具有明显优势。
判断方法与操作流程:选择非对称算法时,需评估以下维度:
| 对比维度 | RSA-2048 | ECC P-256 | 适用场景 |
|---|---|---|---|
| 密钥长度 | 2048位(256字节) | 256位(32字节) | ECC节省存储空间 |
| 签名速度 | 较慢(毫秒级) | 较快(微秒级) | ECC适合高频签名 |
| 验签速度 | 较快 | 较慢 | RSA验签有优势 |
| 硬件支持 | 部分HSM支持 | 现代HSM普遍支持 | 新平台优先ECC |
实战场景:在安全启动(Secure Boot)流程中,Bootloader使用存储在OTP(一次性可编程)或HSM中的公钥验证应用固件的数字签名。由于验签操作发生在启动阶段,对时间敏感,许多设计选择RSA-2048验签,因为RSA验签(使用公钥)比ECC验签更快。而在V2X(车联网)通信中,由于消息频率高、数据量大,通常使用ECDSA签名,因为签名速度快且密钥短。
2.3 哈希函数:SHA-2家族与完整性校验
核心原理:哈希函数将任意长度的输入数据映射为固定长度的输出值(摘要)。理想的哈希函数具有以下特性:单向性(无法从摘要反推原始数据)、抗碰撞性(难以找到两个不同输入产生相同摘要)、雪崩效应(输入微小变化导致输出巨大变化)。在MCU安全领域,SHA-256和SHA-384是最常用的哈希算法,分别产生32字节和48字节的摘要。
判断方法与操作流程:哈希函数在HSM中的典型应用包括:
- 固件完整性校验:计算固件镜像的SHA-256哈希值,与出厂时存储的参考值比对。
- 密钥派生:使用HKDF(基于HMAC的密钥派生函数)从主密钥派生会话密钥。
- 数字签名预处理:对消息先做哈希,再对摘要进行签名,提高效率。
// 使用HSM计算SHA-256哈希
uint8_t hash[32];
hsm_sha256_compute(
data = firmware_image,
length = image_size,
digest = hash
);
实战场景:在OTA(空中下载)升级中,下载完成后ECU首先计算整个固件包的SHA-256哈希,与服务器下发的哈希值比对。如果一致,说明固件在传输过程中未被篡改;如果不一致,则丢弃固件包并记录错误事件。这个操作通常在HSM内部完成,确保哈希计算过程不被恶意软件干扰。
2.4 消息认证码:CMAC与HMAC的差异
核心原理:消息认证码(MAC)是一种带密钥的哈希函数,它同时提供完整性和数据源认证。只有持有相同密钥的通信双方才能计算和验证MAC值。CMAC(基于分组密码)和HMAC(基于哈希函数)是两种主要实现方式。CMAC底层使用AES算法,输出长度与分组大小相同(128位);HMAC底层使用SHA-256等哈希函数,输出长度与哈希长度相同。
判断方法与操作流程:选择CMAC还是HMAC,取决于硬件支持和应用场景:
- CMAC:适合HSM已集成AES硬件加速器的场景,计算速度快,密钥管理统一。
- HMAC:适合需要更长输出(如256位)的场景,或已有SHA硬件加速器的情况。
实战场景:在CAN FD总线通信中,ECU之间使用CMAC保护关键控制消息。例如,刹车控制单元向发动机控制单元发送扭矩请求时,附带一个基于共享密钥的CMAC值。接收方使用相同的密钥计算CMAC并比对,防止攻击者注入伪造的刹车指令。
2.5 数字签名:ECDSA与不可否认性
核心原理:数字签名是公钥密码学的核心应用。签名者使用私钥对消息摘要进行签名,验证者使用公钥验证签名。数字签名提供三个安全属性:完整性(消息未被篡改)、认证性(消息确实来自私钥持有者)、不可否认性(签名者无法否认签名行为)。在车规级应用中,ECDSA(椭圆曲线数字签名算法)是主流选择,基于NIST P-256曲线。
判断方法与操作流程:数字签名的典型流程:
- 签名生成:发送方计算消息的SHA-256哈希,使用私钥对哈希进行ECDSA签名,将消息和签名一起发送。
- 签名验证:接收方计算消息的SHA-256哈希,使用发送方的公钥验证签名。验证通过则确认消息完整且来源可信。
实战场景:在安全启动中,Bootloader使用存储在HSM中的根公钥验证应用固件的签名。这个公钥在芯片出厂时烧录到一次性可编程(OTP)存储器中,无法被修改。攻击者即使篡改了固件,也无法生成有效的签名,因为私钥存储在OEM的HSM中,物理隔离。
2.6 密钥管理:从生成到销毁的全生命周期
核心原理:密钥管理是密码系统的基石。即使算法再强,如果密钥泄露,整个安全体系将崩溃。密钥管理涵盖密钥的生成、存储、分发、使用、更新、撤销和销毁。在MCU HSM中,密钥管理由硬件强制实施:密钥以密文形式存储在HSM内部或受保护的非易失性存储器中,CPU无法直接读取明文密钥。
判断方法与操作流程:密钥管理的关键操作:
| 生命周期阶段 | 操作内容 | HSM硬件支持 |
|---|---|---|
| 密钥生成 | 使用TRNG生成随机密钥 | 硬件TRNG,密钥直接写入密钥槽 |
| 密钥存储 | 密钥加密后存储 | 密钥槽(Key Slot),硬件隔离 |
| 密钥使用 | 加解密、签名、MAC计算 | 硬件加速,CPU不接触明文密钥 |
| 密钥更新 | 定期更换会话密钥 | 支持密钥导入/导出(加密形式) |
| 密钥销毁 | 删除不再使用的密钥 | 硬件擦除,防止数据残留 |
实战场景:在车载网络通信中,ECU之间使用会话密钥加密数据。会话密钥由主密钥(Master Key)派生,主密钥存储在HSM的密钥槽中。每次车辆启动时,ECU通过密钥协商协议(如Diffie-Hellman)生成新的会话密钥,会话结束后立即销毁。这样即使某次会话密钥泄露,也不会影响其他通信。
2.7 常见误区与总结复盘
在MCU HSM开发中,工程师常犯以下错误:
- 误区一:认为哈希函数可以替代MAC。哈希不包含密钥,无法验证数据来源。
- 误区二:在CPU中处理密钥运算。这会导致密钥暴露在内存中,被调试器或恶意软件读取。
- 误区三:忽略密钥更新机制。长期使用同一密钥会增加泄露风险。
- 误区四:使用ECB模式加密多块数据。ECB模式相同明文产生相同密文,泄露数据模式。