密码学基础(上):对称加密与非对称加密的区别、哈希函数与数字签名
各位同学,欢迎来到《OTA固件签名与验证》的第二讲。今天咱们聊点硬核的——密码学基础。别一听“密码学”就头大,我尽量用大白话把这事儿讲透。你想想看,OTA升级要是没有密码学撑着,那固件在传输过程中被人篡改,车机直接变砖,这后果谁扛得住?
对称加密:一把钥匙开一把锁
对称加密,说白了就是加密和解密用同一把密钥。就像你家的门锁,用这把钥匙锁上,还得用同一把钥匙打开。
它的优点是快,非常快。我在做早期嵌入式项目时,处理几百KB的数据,对称加密几乎感觉不到延迟。常用的算法有AES、DES、SM4(国密)。
但问题也很明显——密钥怎么安全地传给对方?OTA场景下,固件分发服务器和成千上万台设备,如果每台设备都用同一个密钥,一旦某台设备被破解,整个系统就全完了。如果每台设备用不同密钥,密钥管理又成了噩梦。
对称加密的核心痛点:密钥分发难题。 发送方和接收方必须在同一个安全通道里协商密钥,这在公开网络环境下几乎不可能做到。
非对称加密:公钥私钥,各司其职
非对称加密就聪明多了。它有一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开,谁都能拿到;私钥自己藏好,打死也不给别人看。
用公钥加密的数据,只能用对应的私钥解密。反过来,用私钥加密的数据,只能用对应的公钥解密。这个特性,直接解决了密钥分发问题。
常用的算法有RSA、ECC(椭圆曲线)、SM2(国密)。ECC在嵌入式设备上特别吃香,因为它的密钥短、算得快。我记得有一次优化车载T-Box的签名性能,把RSA 2048换成ECC P-256,签名时间从200ms降到了30ms,效果立竿见影。
| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个(共享密钥) | 2个(公钥+私钥) |
| 速度 | 快(适合大数据量) | 慢(适合小数据量) |
| 密钥分发 | 困难 | 简单(公钥可公开) |
| 典型算法 | AES, SM4 | RSA, ECC, SM2 |
| OTA应用 | 加密固件本体 | 加密对称密钥、数字签名 |
实战中的组合拳: 实际OTA系统很少只用一种加密。常见做法是:用非对称加密传输对称密钥,再用对称密钥加密固件。既解决了密钥分发,又保证了加密速度。
哈希函数:数据的“指纹”
哈希函数,你可以把它想象成给数据按个手印。不管输入多大,输出都是固定长度(比如SHA-256输出256位)。而且,输入稍微改一丁点,输出就面目全非。
SHA-256的特性,我总结了几条:
- 单向性: 从哈希值反推原始数据,理论上不可能。你想想看,256位的输出对应无限种输入,怎么可能逆得回去?
- 抗碰撞性: 找到两个不同输入,但哈希值相同,极其困难。SHA-256至今没有有效的碰撞攻击。
- 雪崩效应: 输入改1个比特,输出大约一半的比特会翻转。这个特性在验证数据完整性时特别有用。
在OTA中,哈希函数主要干两件事:
- 完整性校验: 下载完固件后,计算它的SHA-256值,跟服务器下发的哈希值对比。一致就说明没被篡改。
- 数字签名的预处理: 固件太大,直接用私钥签名效率太低。先对固件做哈希,再对哈希值签名,效果一样,速度快得多。
避坑指南: 我曾经遇到过一个项目,工程师用MD5做固件完整性校验。结果被攻击者伪造了固件和对应的MD5值,导致设备升级了恶意固件。MD5早已被证明不安全,OTA场景至少要用SHA-256,推荐SHA-384或SHA-512。
数字签名:签名与验签流程
数字签名,是非对称加密和哈希函数的完美结合。它解决了三个问题:
- 身份认证: 确认固件确实来自合法的发布者。
- 完整性: 确认固件没有被篡改。
- 不可否认性: 发布者不能抵赖自己签过这个固件。
流程其实不复杂,我画了张图帮你理解:
流程拆解一下:
- 签名(服务器端):
- 对固件数据计算SHA-256哈希值。
- 用服务器的私钥对哈希值加密,得到数字签名。
- 将固件和签名一起发送给设备。
- 验签(设备端):
- 对接收到的固件计算SHA-256哈希值(记为Hash1)。
- 用服务器的公钥解密数字签名,得到原始的哈希值(记为Hash2)。
- 比较Hash1和Hash2。如果一致,验签通过;否则,固件被篡改或来源不可信。
关键点: 设备端必须安全地存储公钥。如果公钥被替换,攻击者就能用自己的私钥签名恶意固件。我在项目中见过有人把公钥明文写在代码里,结果被逆向工程提取出来。正确的做法是把公钥放在安全元件(SE)或信任根(Root of Trust)中。
小结
这一讲的内容,是OTA安全的基石。对称加密快但密钥分发难,非对称加密解决了密钥问题但慢,哈希函数提供了高效的完整性校验,数字签名则把这三者结合起来,实现了身份认证和防篡改。嗯,这些概念你理解了,后面讲具体的签名方案和证书体系时,就会轻松很多。