密码学基础:对称加密与非对称加密、哈希函数、数字签名原理
说实话,很多做IoT的工程师一听到「密码学」三个字就头大。我当年也一样,总觉得这是数学博士该操心的事。直到有一次,我负责的一个智能门锁项目因为加密选型失误,被安全团队直接打回重做……嗯,从那以后我才真正意识到:不懂密码学,做IoT安全就是纸上谈兵。
这一章,咱们不聊复杂的数学公式。我会用实际项目中踩过的坑,把对称加密、非对称加密、哈希函数和数字签名这几个核心概念讲清楚。你想想看,设备证书注入体系里,每一步都离不开这些基础工具。
3.1 对称加密:一把钥匙开一把锁
对称加密,说白了就是加密和解密用同一把密钥。就像你家的门锁,用同一把钥匙锁门和开门。
我习惯把对称加密比作「快递柜」:你把东西放进柜子,用密码锁上;收件人用同一个密码打开柜子。整个过程只有一个密码,谁拿到谁就能开。
3.1.1 常用算法
| 算法 | 密钥长度 | 特点 | IoT适用场景 |
|---|---|---|---|
| AES | 128/192/256 bit | 硬件加速支持好,速度快 | 数据加密传输、固件加密 |
| ChaCha20 | 256 bit | 软件实现效率高,无硬件加速也快 | 低端MCU、无AES硬件的设备 |
| SM4 | 128 bit | 国密标准,国内项目必用 | 国内IoT设备合规需求 |
3.1.2 工作模式
对称加密还有个坑——工作模式选不对,加密等于白加密。我见过有人用ECB模式加密设备固件,结果密文里还能看出固件的结构轮廓……
- ECB(电子密码本模式):相同明文块生成相同密文块。别用,真的别用。
- CBC(密码分组链接模式):每个明文块与前一个密文块异或后再加密。需要初始向量IV。
- GCM(伽罗瓦/计数器模式):同时提供加密和完整性校验。IoT里我推荐这个。
3.2 非对称加密:公钥私钥,各司其职
非对称加密的思路就巧妙多了——它用一对密钥:公钥公开,私钥保密。公钥加密的数据只有私钥能解;私钥签名的数据,公钥能验。
你想想看,在设备证书注入场景里,这简直就是天作之合。生产线上给设备注入证书时,我们只需要把CA的公钥烧进去,私钥留在服务器端。设备用公钥验证服务器下发的证书签名,服务器用私钥签发证书。
3.2.1 主流算法对比
| 算法 | 密钥长度 | 签名速度 | 验证速度 | IoT适用性 |
|---|---|---|---|---|
| RSA | 2048/4096 bit | 慢 | 快 | 有硬件加速的芯片可用 |
| ECDSA | 256/384 bit | 快 | 快 | 非常适合IoT,密钥短 |
| Ed25519 | 256 bit | 极快 | 极快 | 新一代IoT首选 |
3.2.2 实际应用中的坑
我记得有一次,设备端用RSA-2048验证签名,每次验证要花800ms。用户开锁要等将近1秒,产品经理直接炸了。后来换成ECDSA P-256,验证时间降到50ms以内。
所以我的建议是:新项目直接上ECC,别犹豫。除非你的芯片有RSA硬件加速器,且没有ECC支持,否则别碰RSA。
3.3 哈希函数:数据的指纹
哈希函数,你可以把它理解成「数据的指纹」。不管输入多大,输出固定长度;而且输入稍微变一点,输出就天翻地覆。
在证书注入体系里,哈希函数有三个关键用途:
- 固件完整性校验:计算固件的哈希值,和官方公布的对一下,就知道固件有没有被篡改。
- 证书指纹:证书本身可能很长,但它的哈希值只有几十字节,方便比对。
- 数字签名的前置步骤:先对消息做哈希,再对哈希值签名,效率高得多。
3.3.1 常用哈希算法
| 算法 | 输出长度 | 安全性 | IoT推荐度 |
|---|---|---|---|
| SHA-256 | 256 bit | 安全 | ★★★★★ |
| SHA-384 | 384 bit | 更安全 | ★★★★ |
| SHA-512 | 512 bit | 最安全 | ★★★(资源消耗大) |
| SM3 | 256 bit | 国密标准 | ★★★★(国内项目) |
3.4 数字签名:防伪、防篡改、防抵赖
数字签名,就是把哈希函数和非对称加密结合起来。它的核心流程是这样的:
- 发送方对消息做哈希,得到摘要。
- 发送方用私钥对摘要加密,生成签名。
- 接收方用公钥解密签名,得到摘要A。
- 接收方对收到的消息做哈希,得到摘要B。
- 比较摘要A和摘要B,一致则签名有效。
你想想看,这个机制能保证三件事:
- 身份认证:只有持有私钥的人才能生成有效签名。
- 数据完整性:消息被篡改后,哈希值对不上。
- 不可抵赖:签名者无法否认自己签过名。
3.5 知识体系总览
下面这张图,我把本章的核心知识点串起来了。你可以把它当作一张「密码学工具地图」,后面讲到证书注入流程时,随时回来对照。
3.6 选型建议:IoT设备怎么选?
讲完理论,咱们落地到实际选型。我整理了一张速查表,你以后做项目可以直接参考:
| 场景 | 推荐算法 | 理由 |
|---|---|---|
| 设备与服务器通信加密 | AES-128-GCM 或 ChaCha20-Poly1305 | 同时提供加密和完整性校验 |
| 证书签名与验证 | ECDSA P-256 或 Ed25519 | 密钥短,验证快 |
| 固件完整性校验 | SHA-256 | 安全够用,硬件支持好 |
| 设备身份认证 | ECDSA + SHA-256 | 数字签名标准组合 |
| 国密合规项目 | SM2 + SM3 + SM4 | 满足国内密码法要求 |
好了,这一章的内容就到这里。密码学基础是后面所有章节的「地基」,尤其是证书签发和验证流程,每一步都离不开这些工具。你先把这几个概念吃透,后面讲X.509证书结构、PKI体系的时候,就会顺畅很多。