1. 密码学基础回顾:对称加密与非对称加密的核心区别、哈希函数的作用、数字签名与证书体系
各位同学好,我是你们这门课的老朋友。在正式开始选型实战之前,咱们得先把地基夯实。密码学这东西,说白了就是一套「攻防游戏」的规则。你如果不理解这些基础概念,后面选算法、搭架构,很容易踩坑。
我见过不少项目,上来就拍脑袋选了个「最安全」的算法,结果性能扛不住,或者密钥管理乱成一锅粥。所以,这一章咱们不聊虚的,就聊聊那些你每天都会用到,但可能没细想过的核心概念。
1.1 对称加密 vs 非对称加密:一把钥匙和两把钥匙的区别
这是密码学里最基础,也最容易被混淆的一对概念。我习惯用一个比喻来理解:
- 对称加密:就像你家大门。你和你老婆各有一把一模一样的钥匙。你用这把钥匙锁门,她用这把钥匙开门。方便,但问题来了——如果钥匙丢了,或者被复制了,那门就形同虚设。
- 非对称加密:更像一个带锁的邮箱。任何人都可以把信塞进去(用你的公钥加密),但只有你有钥匙能打开(用你的私钥解密)。公钥公开,私钥保密。
它们的核心区别,我整理成了一张表,方便你对比:
| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个(共享密钥) | 2 个(公钥 + 私钥) |
| 密钥分发 | 困难,需要安全通道 | 容易,公钥可公开 |
| 计算速度 | 快(硬件加速友好) | 慢(慢 100-1000 倍) |
| 典型算法 | AES, ChaCha20, SM4 | RSA, ECDSA, SM2 |
| 主要用途 | 大量数据加密 | 密钥交换、数字签名 |
1.2 哈希函数:数据的「指纹」
哈希函数,你肯定不陌生。它能把任意长度的数据,压缩成一个固定长度的「摘要」。这个摘要,就像人的指纹一样,理论上具有唯一性。
哈希函数有几个关键特性,我特别强调一下:
- 单向性:从哈希值反推原始数据,在计算上是不可能的。你想想看,如果哈希能逆推,那密码存储就彻底完蛋了。
- 抗碰撞性:找到两个不同的输入,产生相同的哈希值,这几乎不可能。嗯,这里要注意,像 MD5 和 SHA-1 已经被证明有碰撞风险了,千万别再用在生产环境。
- 雪崩效应:输入哪怕只改一个比特,输出的哈希值也会天翻地覆。
哈希函数在安全领域无处不在。我举几个最常见的场景:
- 密码存储:数据库里存的不是你的密码明文,而是密码的哈希值。即使数据库泄露,攻击者也拿不到你的原始密码。
- 数据完整性校验:下载一个大文件时,网站通常会提供一个 SHA-256 哈希值。你下载完后自己算一遍,如果一致,说明文件没被篡改。
- 数字签名的基础:签名前,先对消息做哈希,再对哈希值签名。这样效率更高,也更安全。
1.3 数字签名与证书体系:解决「你是谁」和「你说了算不算」的问题
数字签名,本质上是用非对称加密的「反向」操作。你用私钥签名,别人用你的公钥验签。它解决了两个核心问题:
- 身份认证:证明这个数据确实是你发的。
- 不可否认性:你签了名,就不能事后抵赖说「这不是我发的」。
但这里有个问题:你怎么证明你手里的公钥,真的是我的?万一有人伪造了一个公钥,说那是我的呢?
这就引出了 PKI(公钥基础设施) 和 数字证书。
数字证书,说白了就是一张「电子身份证」。它由权威的 CA(证书颁发机构) 签发。证书里包含了:
- 持有者的身份信息(比如域名、公司名)
- 持有者的公钥
- CA 的数字签名
- 有效期、序列号等
你信任 CA,CA 担保了「这个公钥属于这个实体」。这样就形成了一个信任链。
为了让你更直观地理解,我画了一张图,展示了数字签名的完整流程:
你看,整个流程清晰明了。接收方拿到消息和签名后,用发送方的公钥解密签名,得到哈希值 H1。同时,自己对消息做哈希,得到 H2。如果 H1 == H2,说明消息确实是发送方签发的,且未被篡改。
好了,这一章的基础概念就回顾到这里。这些内容虽然基础,但它们是整个密码学大厦的基石。后面的章节,我们会基于这些概念,深入到具体的算法选型、性能调优和工程实践中去。