[CRYPTO] 非对称加密的数学之美
┌─────────────────────────────────────────────────┐
│ CRYPTOGRAPHY 101 │
│ "Math is the ultimate lockpick" │
└─────────────────────────────────────────────────┘
RSA:大数分解的魔力
RSA 的安全性基于一个简单的事实:大数分解极其困难。
密钥生成
1. 选择两个大素数 p, q (1024+ bits)
2. n = p × q
3. φ(n) = (p-1)(q-1)
4. 选择 e,满足 1 < e < φ(n) 且 gcd(e, φ(n)) = 1
5. 计算 d ≡ e⁻¹ (mod φ(n))
公钥:(n, e)
私钥:(n, d)
加密与解密
加密:c ≡ m^e (mod n)
解密:m ≡ c^d (mod n)
证明依赖于欧拉定理:
m^ed ≡ m^(kφ(n)+1) ≡ m (mod n)
椭圆曲线密码学 (ECC)
ECC 提供了相同安全级别下更小的密钥:
| 安全级别 | RSA 密钥长度 | ECC 密钥长度 |
|---|---|---|
| 128-bit | 3072 bits | 256 bits |
| 192-bit | 7680 bits | 384 bits |
| 256-bit | 15360 bits | 512 bits |
椭圆曲线上的点运算
曲线方程:y² = x³ + ax + b
点加法:P + Q = R
标量乘法:k × P = Q(这是 ECC 安全的基础)
给定 k 和 P,计算 Q 很容易
给定 P 和 Q,找到 k 是 "椭圆曲线离散对数问题"
实际应用
TLS 1.3 握手
Client → Server: ClientHello (支持的密码套件)
Server → Client: ServerHello + 证书 (含 ECDH 公钥)
双方分别计算共享密钥
后续通信使用 AES-GCM 对称加密
数字签名
1. 计算消息的哈希 H(m)
2. 用私钥签名:s = H(m)^d mod n
3. 用公钥验证:H(m) ≡ s^e mod n
量子计算威胁
Shor 算法可以在多项式时间内分解大整数,这意味着:
- RSA 在量子计算机面前不再安全
- ECC 同样面临威胁
- 后量子密码学 (PQC) 是未来的方向
> 密码学不是魔法,是数学
> 但好的数学就是最强大的魔法