🔐 RSA 算法介绍
RSA 是目前最广泛使用的非对称加密算法之一,由 Rivest、Shamir、Adleman 三人于1977年提出。它是现代互联网安全的基石。
核心原理
RSA 基于一个简单的数学事实:
将两个大质数相乘很容易,但把它们的乘积分解回两个质数却极其困难。
密钥生成步骤
-
随机选择两个大质数 p 和 q
-
计算 n = p × q (n 是模数)
-
计算 φ(n) = (p-1) × (q-1) (欧拉函数)
-
选择公钥指数 e,通常为 65537(2^16+1)
-
计算私钥指数 d,满足 e × d ≡ 1 (mod φ(n))
公钥 = (n, e) --- 可公开
私钥 = (n, d) --- 必须保密
加密与解密
加密:密文 = 明文^e mod n
解密:明文 = 密文^d mod n
为什么安全?
- 破解 RSA 需要从 n 分解出 p 和 q
- 当 n 是 2048位(二进制) 时,目前最快的超级计算机也需要数百万年才能破解
- 量子计算机的 Shor 算法 理论上可以破解,但实用级量子计算机尚未出现
实际应用
| 场景 | 说明 |
|---|---|
| HTTPS/TLS | 网站加密(SSL证书) |
| 数字签名 | 验证消息真实性和完整性 |
| PGP/GPG | 邮件加密 |
| SSH 密钥 | 服务器远程登录 |
| 比特币/区块链 | 数字签名与钱包 |
RSA 的优缺点
| 优点 | 缺点 |
|---|---|
| ✅ 非对称,无需安全信道传输密钥 | ❌ 加密速度慢(比对称加密慢100-1000倍) |
| ✅ 可用于数字签名 | ❌ 密钥体积大(2048位密钥比AES-256大得多) |
| ✅ 安全性高(目前无法被经典计算机暴力破解) | ❌ 会被量子计算机威胁 |
现代使用建议
- 密钥长度:至少 2048位,推荐 4096位
- 填充方案:必须使用 OAEP(加密)或 PSS(签名),禁止裸 RSA(教科书RSA)
- 不要将 RSA 用于大量数据加密,通常与 AES 混合使用(RSA 传密钥,AES 加密数据)
如需了解某个具体方面(如代码实现、实际攻击案例等),可以进一步提问。