2. 对称密钥与非对称密钥:3DES/AES算法原理、RSA/ECC算法原理、密钥长度与安全强度对比
这一章,我们聊聊加密算法的核心。说白了,就是两把钥匙的故事。
一把钥匙开一把锁,这是对称密钥。两把钥匙配一把锁,这是非对称密钥。我在金融系统里摸爬滚打这么多年,这两种算法几乎天天打交道。嗯,咱们一个一个来看。
2.1 对称密钥:3DES 与 AES
对称密钥,加密和解密用的是同一个密钥。速度快,适合大量数据。但问题也很明显——密钥怎么安全地传给对方?
2.1.1 3DES 算法原理
3DES,全称 Triple DES。顾名思义,就是把 DES 算法跑三遍。
DES 本身密钥只有 56 位,太短了。我年轻时做过一次渗透测试,用一台普通服务器,三天就把 DES 密钥给暴力破解了。所以后来大家想了个办法:用三个不同的密钥,加密-解密-加密,走三遍。
3DES 加密流程:
- 用 K1 对明文进行 DES 加密
- 用 K2 对上一步结果进行 DES 解密
- 用 K3 对上一步结果进行 DES 加密
解密就是反过来:K3 解密 → K2 加密 → K1 解密
为什么中间要解密一次?其实是为了兼容老系统。如果 K1=K2=K3,3DES 就退化成普通 DES 了。这个设计挺巧妙的,但说实话,现在看已经过时了。
2.1.2 AES 算法原理
AES,高级加密标准。现在金融行业的主流选择。
我个人习惯用 AES-256。为什么?因为 AES-128 虽然目前够用,但量子计算一旦成熟,128 位密钥可能撑不住。多留点余量总是好的。
AES 的核心是 SPN 结构(替换-置换网络)。它不像 3DES 那样简单重复,而是把数据分成 4×4 的字节矩阵,然后进行四步操作:
- 字节代换(SubBytes):每个字节通过 S 盒替换成另一个字节
- 行移位(ShiftRows):矩阵的每一行向左循环移位
- 列混合(MixColumns):每一列做矩阵乘法,扩散数据
- 轮密钥加(AddRoundKey):与轮密钥做异或
这四步重复 10 轮(AES-128)、12 轮(AES-192)或 14 轮(AES-256)。
2.2 非对称密钥:RSA 与 ECC
非对称密钥,公钥加密,私钥解密。解决了密钥分发问题,但速度慢。所以实际中通常用它来加密对称密钥,再用对称密钥加密数据。
2.2.1 RSA 算法原理
RSA 基于一个简单的数学事实:两个大素数相乘很容易,但把乘积分解回去极难。
具体步骤:
- 选两个大素数 p 和 q
- 计算 n = p × q
- 计算 φ(n) = (p-1)(q-1)
- 选一个 e,满足 1 < e < φ(n),且 e 与 φ(n) 互质
- 计算 d,使得 e × d ≡ 1 (mod φ(n))
公钥是 (n, e),私钥是 (n, d)。加密:c = m^e mod n,解密:m = c^d mod n。
密钥长度与安全强度:
| RSA 密钥长度 | 等效对称密钥强度 | 安全状态 |
|---|---|---|
| 1024 位 | 80 位 | 已不安全,建议停用 |
| 2048 位 | 112 位 | 当前可用,但建议升级 |
| 3072 位 | 128 位 | 推荐 |
| 4096 位 | 192 位 | 高安全场景 |
我记得有一次做密钥长度评估,客户坚持用 1024 位 RSA,说「够用就行」。我给他看了 NIST 的 SP 800-57 标准,明确写着 1024 位 RSA 在 2010 年后就不推荐了。他沉默了一会儿,最后改成了 2048 位。
2.2.2 ECC 算法原理
ECC,椭圆曲线密码学。它用更短的密钥提供同等级别的安全强度。
原理上,ECC 基于椭圆曲线上的点群运算。给定椭圆曲线 y² = x³ + ax + b,以及一个基点 G,私钥是一个随机数 k,公钥是 K = k × G(点的标量乘法)。
为什么 ECC 这么强?因为椭圆曲线上的离散对数问题比 RSA 的整数分解问题难得多。你想想看,256 位的 ECC 密钥,安全强度相当于 3072 位的 RSA。这差距不是一星半点。
密钥长度对比表:
| 安全强度(对称密钥等效) | RSA 密钥长度 | ECC 密钥长度 |
|---|---|---|
| 80 位 | 1024 位 | 160 位 |
| 112 位 | 2048 位 | 224 位 |
| 128 位 | 3072 位 | 256 位 |
| 192 位 | 7680 位 | 384 位 |
| 256 位 | 15360 位 | 521 位 |
2.3 对称 vs 非对称:怎么选?
这个问题我经常被问到。我的回答是:不要二选一,要混合用。
实际金融系统中,流程是这样的:
- 用非对称密钥(RSA 或 ECC)加密一个临时生成的对称密钥
- 用这个对称密钥(AES)加密实际数据
- 接收方用私钥解密得到对称密钥,再用它解密数据
这就是混合加密体系。既解决了密钥分发问题,又保证了加密速度。
2.4 知识体系总览
下面这张图,是我自己整理的对称与非对称密钥体系结构。你可以把它当作一个快速参考。
这张图把对称和非对称的核心要素都列出来了。你可以看到,AES 和 ECC 是目前最推荐的组合。3DES 和 RSA 虽然还在用,但已经逐渐被替代了。
一句话总结:
- 数据加密用 AES-256
- 密钥交换和数字签名用 ECC-256 或 RSA-3072
- 老系统兼容用 3DES,但尽快迁移
好了,这一章的内容就到这里。密钥长度和安全强度的对比,你心里应该有数了。下一章我们聊聊密钥的生命周期管理——那才是真正考验工程能力的地方。
公众号:蓝海资料掘金营,微信deep3321