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

说实话,很多刚接触PKI的同学,一上来就被各种加密算法搞懵了。我当年也一样,觉得这东西离我太远。直到有一次在项目中,客户要求我们给几万台IoT设备做身份认证,我才真正意识到——不懂密码学,PKI就是空中楼阁。

这一章,咱们就把密码学的四大核心概念掰开揉碎。你不需要成为数学家,但得理解它们各自解决什么问题,以及为什么PKI离不开它们。

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

对称加密,说白了就是加密和解密用同一个密钥。就像你家的门锁,用同一把钥匙锁门和开门。

它的优点是快,非常快。我见过一些硬件安全模块(HSM),用AES-256做加解密,每秒能处理几十G的数据。所以设备在传输大量数据时,底层用的基本都是对称加密。

核心算法速览

  • AES(Advanced Encryption Standard):目前最主流,密钥长度128/192/256位。我个人习惯,新项目一律用AES-256。
  • SM4:国密标准,国内设备PKI项目里经常遇到,结构和AES类似。
  • ChaCha20:流加密算法,在资源受限的IoT设备上表现很好,我曾在ARM Cortex-M0的芯片上跑过,性能比AES还稳。

但对称加密有个致命问题——密钥分发。你想啊,如果设备A和设备B要通信,它们得先商量好用什么密钥。这个密钥怎么安全地传给对方?如果通过网络传,被截获了怎么办?

避坑指南

我曾经在一个车联网项目里,看到有人直接用设备的序列号作为对称密钥。这等于把钥匙挂在门上。攻击者只要拿到一台设备,就能解密所有同型号设备的通信。千万别这么干。

3.2 非对称加密:公钥和私钥,天生一对

非对称加密解决了密钥分发的问题。它用一对密钥:公钥公开,私钥自己藏好。公钥加密的数据,只有对应的私钥能解开;反过来,私钥签名的数据,公钥能验证。

你想想看,如果设备A想给设备B发消息,只需要拿到B的公钥,加密后发过去。B用自己的私钥解密。就算公钥被所有人知道,也没人能解密,因为私钥只有B有。

特性 对称加密 非对称加密
密钥数量 1个(共享密钥) 2个(公钥+私钥)
速度 快(硬件加速后可达Gbps级) 慢(比对称慢1000倍以上)
密钥分发 困难,需要安全通道 容易,公钥可公开
典型算法 AES, SM4, ChaCha20 RSA, ECC, SM2
典型用途 批量数据加密 密钥交换、数字签名

实际项目中,我们不会用非对称加密去加密大文件,太慢了。而是用它来加密对称密钥,这叫混合加密。比如HTTPS握手时,先用非对称加密协商出一个临时对称密钥,后面的大流量就用对称加密。

我的经验

ECC(椭圆曲线密码)在设备PKI里越来越流行。同样的安全强度,ECC的密钥比RSA短得多。比如256位的ECC相当于3072位的RSA。对于存储空间有限的设备,ECC几乎是唯一选择。我在智能电表项目里就全换成了SM2(国密ECC),效果很好。

3.3 哈希函数:数据的指纹

哈希函数能把任意长度的数据,压缩成一个固定长度的摘要。这个摘要就像数据的指纹——内容变了,指纹一定变。

好的哈希函数有三个特点:

  1. 单向性:从摘要反推原始数据,理论上不可能。
  2. 抗碰撞性:很难找到两个不同的输入,产生相同的输出。
  3. 雪崩效应:输入改一个比特,输出一半以上的比特都会变。

常用的哈希算法有SHA-256、SM3。SHA-1已经被证明不安全了,我建议所有新项目都别碰它。

哈希在PKI里的三个关键用途

  • 证书指纹:CA签发的证书,可以用哈希值作为唯一标识,方便快速查找和验证。
  • 消息完整性:发送方计算消息的哈希值,接收方重新计算,对比就知道消息有没有被篡改。
  • 数字签名的前置步骤:签名不是直接签原始数据,而是先哈希,再对哈希值签名。这样效率高,而且能保证完整性。

嗯,这里要注意。哈希不是加密。加密可以解密,哈希不行。我见过有人把哈希叫“加密”,这是概念错误。哈希是摘要,不是密文。

3.4 数字签名:谁说电子文件不能按手印?

数字签名,就是把非对称加密和哈希函数结合起来,实现三个目标:

  • 身份认证:确认签名者是谁。
  • 完整性:确认数据没被改过。
  • 不可否认性:签名者事后不能抵赖。

流程其实很简单:

  1. 发送方对消息做哈希,得到摘要。
  2. 用发送方的私钥对摘要加密,这就是签名。
  3. 接收方用发送方的公钥解密签名,得到摘要A。
  4. 接收方自己对消息做哈希,得到摘要B。
  5. 对比A和B,一致则签名有效。

你看,这里私钥签名、公钥验证,完美体现了非对称加密的威力。而哈希函数保证了签名只针对摘要,而不是整个大文件,效率大幅提升。

我曾经踩过的坑

有一次做固件升级签名,我直接用RSA对固件文件签名,没做哈希。结果固件文件有几百兆,签名过程慢得要命,设备端验签也卡死。后来改成先SHA-256再签名,速度从分钟级降到了毫秒级。记住:永远先哈希,再签名。

3.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以看到,对称加密和非对称加密是基础,哈希函数是桥梁,数字签名是它们的综合应用。而PKI,正是建立在数字签名之上的信任体系。

密码学基础核心逻辑图 密码学基础核心逻辑 对称加密 AES / SM4 / ChaCha20 非对称加密 RSA / ECC / SM2 哈希函数 SHA-256 / SM3 数字签名 身份认证 + 完整性 + 不可否认性 PKI(公钥基础设施) 证书签发 / 验证 / 吊销 / 生命周期管理 对称加密 + 非对称加密 → 混合加密;哈希 → 数字签名 → PKI 信任链