2、密码学基础(上):对称加密与非对称加密,哈希函数,数字签名原理

各位同学,咱们今天聊点硬核的。密码学,说白了就是物联网设备证明体系的「地基」。你想想看,如果连加密和签名都搞不清楚,后面签发证书、验证身份这些事根本没法落地。

我个人习惯把密码学工具分成四类:对称加密、非对称加密、哈希函数、数字签名。这四样东西,在设备证明的每个环节都会反复出现。咱们一个一个拆开讲。

2.1 对称加密:一把钥匙开一把锁

对称加密,概念上最简单。加密和解密用同一把密钥。就像你家的门锁,用同一把钥匙锁门和开门。

常见的对称加密算法有 AES、SM4、3DES。现在工业界基本只用 AES-128 或 AES-256。SM4 是国标,国内项目必须用。

算法 密钥长度 典型场景
AES-128 128 bit 设备固件加密、通信载荷加密
AES-256 256 bit 高安全等级设备、密钥存储加密
SM4 128 bit 国密合规项目、政务物联网
我的经验:对称加密最大的坑是密钥分发。我在一个智能门锁项目里遇到过,生产时把 AES 密钥硬编码在固件里,结果固件被反编译,所有门锁都能被远程开锁。后来我们改用每台设备独立密钥,出厂前通过安全通道注入。

对称加密的优点是快。硬件加速下,AES-128 加密 1KB 数据只需要几微秒。缺点是密钥管理麻烦——N 个设备两两通信,需要 N×(N-1)/2 个密钥。这在物联网里根本行不通。

2.2 非对称加密:公钥私钥,各司其职

非对称加密解决了密钥分发的问题。它用一对密钥:公钥公开,私钥保密。公钥加密的数据只能用私钥解密,私钥加密的数据只能用公钥解密。

你想想看,这多方便。设备出厂时烧录私钥,公钥上传到服务器。别人想给设备发密文,直接用公钥加密就行,设备自己用私钥解密。私钥永远不出设备。

主流算法有 RSA、ECC(椭圆曲线)、SM2(国密)。RSA 现在推荐 2048 位以上,但物联网设备算力有限,我更倾向 ECC。256 位的 ECC 密钥,安全强度相当于 3072 位的 RSA,而且计算量小得多。

核心对比:
  • 对称加密:速度快,适合加密大量数据
  • 非对称加密:速度慢(慢 100-1000 倍),适合加密小数据或交换对称密钥
  • 实际方案:用非对称加密传输对称密钥,再用对称密钥加密业务数据——这叫「混合加密」

我记得有一次帮客户做车联网 T-Box 安全方案。他们想直接用 RSA 加密每一条 CAN 总线数据,结果发现加密一次要 50 毫秒,车都跑出去好几米了。后来改成 ECDH 密钥协商 + AES 会话加密,延迟降到微秒级。

2.3 哈希函数:数据的「指纹」

哈希函数,输入任意长度的数据,输出固定长度的摘要。好的哈希函数有几个特点:

  • 单向性:从摘要反推原始数据,计算上不可行
  • 抗碰撞性:很难找到两个不同输入产生相同摘要
  • 雪崩效应:输入改一个 bit,摘要一半以上的 bit 都会变

常用算法:SHA-256、SHA-3、SM3。SHA-256 输出 256 bit(32 字节),SM3 也是 256 bit。

避坑指南:我曾经在一个固件升级系统里看到有人用 MD5 做完整性校验。MD5 已经被证明可以构造碰撞,攻击者可以替换固件但保持 MD5 值不变。后来我们全部换成 SHA-256。记住:MD5 和 SHA-1 已经不安全了,别再用。

哈希函数在设备证明里的用途:

  1. 固件完整性校验:计算固件哈希,和签名里的哈希对比
  2. 证书指纹:对证书本身做哈希,生成短标识
  3. 消息摘要:先对消息做哈希,再对哈希签名——这是数字签名的标准做法

2.4 数字签名:防伪造、防抵赖

数字签名,说白了就是用私钥对「消息的哈希」做加密操作。验证方用公钥解密,比对哈希值。如果一致,说明消息确实是私钥持有者签发的,而且没被篡改。

签名流程:

  1. 发送方对消息做哈希,得到摘要 H
  2. 发送方用私钥对 H 签名,得到签名值 S
  3. 发送方把消息和 S 一起发给接收方
  4. 接收方对消息做哈希,得到 H'
  5. 接收方用公钥解密 S,得到 H
  6. 比对 H 和 H',一致则签名验证通过

常见的签名算法:RSA-PSS、ECDSA、SM2 签名。物联网设备里 ECDSA 用得最多,因为签名短、计算快。

我的习惯:在设备证书签发系统里,我通常用 ECDSA 搭配 SHA-256。签名长度只有 64 字节(对于 256 位曲线),非常适合资源受限的 MCU。如果项目要求国密,就用 SM2 签名 + SM3 哈希。

数字签名解决了三个核心问题:

  • 身份认证:只有持有私钥的人才能生成有效签名
  • 完整性:消息被篡改后,哈希比对会失败
  • 不可抵赖:签名者无法否认自己签过这份数据

2.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以看到对称加密、非对称加密、哈希函数、数字签名之间的关系,以及它们在设备证明流程中的位置。

密码学基础 — 知识体系与关系图 对称加密 AES / SM4 非对称加密 RSA / ECC / SM2 哈希函数 SHA-256 / SM3 速度互补 混合加密方案 非对称交换密钥 + 对称加密数据 数字签名 私钥签名 + 公钥验签 先哈希再签名 复用密钥对 设备证明中的应用 固件签名验证 | 证书签发与校验 | 安全信道建立 | 身份认证 核心原则 私钥永远不出设备 | 公钥可以公开 | 哈希用于完整性校验 签名同时证明身份 + 完整性 + 不可抵赖

嗯,这张图你看懂了吗?从上往下看:对称加密和非对称加密各有优劣,组合成混合加密方案;哈希函数为数字签名提供摘要基础;数字签名和混合加密最终服务于设备证明的四大场景。

2.6 本章小结

咱们这一章把密码学的四个核心工具讲清楚了:

  • 对称加密:快,但密钥分发难。适合加密大量数据。
  • 非对称加密:慢,但密钥管理方便。适合加密小数据或交换密钥。
  • 哈希函数:单向、抗碰撞。用于完整性校验和签名摘要。
  • 数字签名:私钥签名、公钥验签。解决身份认证、完整性、不可抵赖。