加密算法入门:对称加密、非对称加密、哈希函数与数字签名
说实话,很多初学者一上来就被各种加密算法搞懵了。什么 AES、RSA、ECC,听着像天书。但你别怕,这一章我带你把这些东西拆开揉碎了讲清楚。
我做了这么多年安全架构,发现一个规律:证书链的根基,就是这四种算法。你搞懂了它们,后面搭建证书链就是水到渠成的事。
核心认知:加密算法不是魔法,是数学。但你不必成为数学家,只需要理解它们「能干什么」和「怎么用」。
1. 对称加密:一把钥匙开一把锁
对称加密,说白了就是加密和解密用同一把钥匙。你想想看,就像你家大门,用一把钥匙锁上,也用同一把钥匙打开。
目前最主流的对称加密算法是 AES(Advanced Encryption Standard)。它有三个常见密钥长度:128 位、192 位、256 位。我个人习惯,只要不是性能受限的场景,一律用 AES-256。
| 算法 | 密钥长度 | 安全性 | 典型场景 |
|---|---|---|---|
| AES-128 | 128 位 | 足够安全 | 移动端、IoT 设备 |
| AES-192 | 192 位 | 较高 | 企业级应用 |
| AES-256 | 256 位 | 最高 | 金融、政府、证书密钥 |
我的经验:AES 加密速度非常快,硬件层面也有加速指令。我在项目中处理过 TB 级的数据加密,AES-256 完全扛得住。
对称加密最大的问题是什么?密钥分发。你想想,如果两个人要加密通信,得先商量好同一把钥匙。但商量钥匙的过程本身就不安全——这就陷入了死循环。
嗯,这个问题的答案,就是非对称加密。
2. 非对称加密:公钥私钥,各司其职
非对称加密引入了两个钥匙:公钥和私钥。公钥可以公开,私钥必须保密。用公钥加密的数据,只能用对应的私钥解密;反过来,用私钥加密的数据,只能用对应的公钥解密。
目前最主流的两种非对称加密算法是 RSA 和 ECC(椭圆曲线加密)。
RSA:老牌劲旅
RSA 基于大整数分解的数学难题。它的密钥长度通常为 2048 位或 4096 位。我刚开始做安全时,RSA 是绝对的主流。
但 RSA 有个硬伤:慢。而且密钥越长,加密越慢。2048 位的 RSA 加密几 KB 的数据还行,要是加密大文件,那性能就惨不忍睹了。
ECC:后起之秀
ECC 基于椭圆曲线离散对数难题。它用更短的密钥就能达到和 RSA 同等级别的安全性。举个例子:256 位的 ECC 密钥,安全性相当于 3072 位的 RSA 密钥。
| 安全等级 | RSA 密钥长度 | ECC 密钥长度 |
|---|---|---|
| 80 位 | 1024 | 160 |
| 112 位 | 2048 | 224 |
| 128 位 | 3072 | 256 |
| 256 位 | 15360 | 512 |
避坑指南:我曾经在项目中为了省事,用了 1024 位的 RSA 密钥。结果安全审计直接被拒,说密钥太短。现在行业标准最低是 2048 位,我建议直接上 4096 位或改用 ECC。
非对称加密解决了密钥分发问题,但性能太差。所以实际应用中,我们通常混合使用:用非对称加密传输对称密钥,然后用对称密钥加密实际数据。这就是后面会讲到的「混合加密体系」。
3. 哈希函数:不可逆的指纹
哈希函数不是加密,它没有「解密」这回事。它的作用是把任意长度的数据,压缩成固定长度的「指纹」。而且这个指纹是不可逆的——你无法从指纹反推出原始数据。
目前最常用的哈希算法是 SHA-256,它输出 256 位(32 字节)的哈希值。
# 示例:对 "Hello, World!" 计算 SHA-256
输入:Hello, World!
输出:dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
哈希函数有三个核心特性:
- 抗碰撞性:很难找到两个不同的输入,产生相同的哈希值
- 单向性:从哈希值无法反推原始输入
- 雪崩效应:输入稍微改变,哈希值就面目全非
我的经验:哈希函数在证书链中用来做「摘要」。证书的签名就是对证书内容的哈希值进行加密,而不是对整个证书加密——这样效率高得多。
4. 数字签名:防伪、防篡改、防抵赖
数字签名,说白了就是用私钥对哈希值进行加密。它解决了三个问题:
- 身份认证:签名者是谁
- 完整性:数据有没有被篡改
- 不可否认性:签名者不能抵赖
数字签名的流程是这样的:
- 签名方:对数据计算哈希值 → 用私钥加密哈希值 → 得到签名
- 验证方:对数据计算哈希值 → 用公钥解密签名 → 对比两个哈希值
如果两个哈希值一致,说明数据是完整的,而且确实来自私钥持有者。
避坑指南:我曾经见过有人直接用私钥加密整个文件当签名,结果性能差到离谱。记住:签名是对哈希值加密,不是对原始数据加密。这是很多新手容易犯的错误。
5. 知识体系总览
下面这张图,把本章的核心知识点串起来了。你仔细看看,就能理解这四种算法在证书链中的位置。
6. 小结
这一章我们走过了四种核心算法:
- 对称加密(AES):快,但密钥分发难
- 非对称加密(RSA/ECC):解决了密钥分发,但慢
- 哈希函数(SHA-256):不可逆的指纹,用于摘要
- 数字签名:私钥签名 + 公钥验签,保证身份和完整性
这些算法不是孤立的。在证书链中,它们协同工作:非对称加密传递对称密钥,哈希函数做摘要,数字签名确保证书不被篡改。你理解了这些,后面搭建证书链时就会觉得顺理成章。
一句话总结:加密算法是证书链的砖瓦。砖瓦质量好,房子才结实。别急着跳过去,把这一章吃透,后面你会感谢自己的。