RSA(Rivest–Shamir–Adleman)是一种著名的非对称密钥加密算法(Asymmetric Key Cryptography),也是目前为止最常用、最重要的公钥加密算法之一。该算法由三位科学家 Rivest、Shamir 和 Adleman 在 1977 年共同提出,并以他们姓氏的首字母命名为 RSA。RSA的目标是让加密容易、解密极难(除非拥有私钥)。RSA 是现代密码学中最经典、最重要的 非对称加密算法 之一,被广泛应用于 HTTPS、安全通信、数字签名、软件验证等场景。RSA已成为现代密码学与网络安全体系的重要基石。
本文将从基础概念出发,帮助你以简单清晰的方式理解 RSA 的原理、结构和使用方式。
RSA(Rivest–Shamir–Adleman)是一种 公钥加密算法,特点是使用 不同的密钥 完成加密和解密。与传统的对称加密(如 AES、DES)不同,RSA 不要求通信双方在开始时提前共享密钥。
特点:
常见用途:
| 应用场景 | RSA 的作用 |
|---|---|
| HTTPS | 握手阶段用于安全交换密钥 |
| 数字证书 | 验证网站或用户身份 |
| 数字签名 | 验证消息是否被篡改 |
| 加密通信 | 对重要数据加密 |
常用的 RSA 密钥长度:
| 密钥长度 | 安全等级(2025) | 还能安全用到哪年? | 典型用途 |
|---|---|---|---|
| 1024 bit | 完全死亡 | 2015 年已死 | 禁止使用 |
| 2048 bit | 勉强可用(过渡期) | ≈2030 年下线 | 部分老系统、兼容性证书 |
| 3072 bit | 安全(推荐最低) | ≈2040 年 | 当前主流 |
| 4096 bit | 过度安全 | 2050 年后 | 政府、银行、根证书 |
加密:密文 = 明文ᵉ mod n
解密:明文 = 密文ᵈ mod n
举例:
p = 61, q = 53 → n = 61×53 = 3233
φ(n) = 60×52 = 3120
选 e = 17(常用)
算出 d = 2753(因为 17×2753 = 1 mod 3120)
公钥:(3233, 17)
私钥:(3233, 2753)
明文 123 加密:
123¹⁷ mod 3233 = 855 → 密文
解密:
855²⁷⁵³ mod 3233 = 123 → 回到原文
RSA 的核心理论依赖以下数学基础:
对于一个正整数 n,其欧拉函数 φ(n) 表示:
1 ≤ x ≤ n 中与 n 互质的整数个数
若 n = p × q(p, q 为质数):
φ(n) = (p - 1)(q - 1)
RSA 涉及计算:
c = m^e mod n
m = c^d mod n
使用快速幂算法(Binary Exponentiation / Montgomery Ladder)可在 O(log e) 时间内求解。
RSA 私钥 d 需要满足:
d × e ≡ 1 (mod φ(n))
可用扩展欧几里得算法(Extended Euclidean Algorithm)求得。
证明 RSA 解密确实能恢复原文 m。
已知:
c = m^e mod n
m = c^d mod n = (m^e)^d mod n = m^(ed) mod n
若:
ed ≡ 1 (mod φ(n))
即:
ed = 1 + k φ(n)
则:
m^(ed) = m^(1 + k φ(n)) = m × (m^φ(n))^k
由于欧拉定理:
m^φ(n) ≡ 1 (mod n)
可得:
m^(ed) ≡ m mod n
因此 RSA 解密总能得到原文。
RSA 的安全性并未严格证明,而是依赖以下难题的“经验性难解性”:
给定:
n = p × q
在 p、q 为 1000+ 位质数时,当前算法无法在可接受时间内分解 n。
给定:
c = m^e mod n
即使知道 (n, e),求 m 依然困难。
RSA 依赖 没有人找到高效解法,而不是数学上被证明不可解。
裸 RSA(raw RSA)是极不安全的,原因:
因此必须使用安全填充。
| 填充模式 | 用途 | 标准 | 是否推荐 | 理由 |
|---|---|---|---|---|
| PKCS#1 v1.5 Padding | 签名/历史用途 | RFC 2313 | 禁止 | 易受 Bleichenbacher、亿次攻击 |
| OAEP (Optimal Asymmetric Encryption Padding) | 加密 | RFC 8017 | 强烈推荐 | 抗选择密文攻击(IND-CCA2) |
| PSS (Probabilistic Signature Scheme) | 数字签名 | RFC 8017 | 唯一推荐签名方式 | 抗存在性伪造 |
| RSA-KEM | ISO 18033-2 | 推荐(新协议) | 更现代、更安全 |
OAEP 使用:
确保:
注意:所有新系统必须使用 OAEP + PSS,禁止 v1.5 填充。
RSA 并非直接使用高精度整数进行全量运算,而要使用优化技术:
现代 RSA 使用:
实现 O(log n) 高效模幂运算。
私钥解密可使用:
m1 = c^(d mod (p-1)) mod p
m2 = c^(d mod (q-1)) mod q
再合并:
m = CRT(m1, m2)
速度提升约 3–4 倍。
RSA在线加密解密工具:RSA加密解密
当 e = 3 且消息过短时:
c = m^3
可能在整数域直接开立方根得到 m。
相同明文用相同 e 发送给 k ≥ e 个接收者时,可通过 CRT 解出原文。
| 算法 | 复杂度 | 状态 |
|---|---|---|
| ECM | exp(√log n log log n) | 有效 |
| NFS | sub-exponential | 当前最强攻击 |
最著名:Bleichenbacher Attack(1998) 针对 PKCS#1 v1.5,导致大量 TLS 服务器被攻破。
| 年份 | 位数 | 名称 | 耗时/成本 | 方法 |
|---|---|---|---|---|
| 1999 | 512 bit | RSA-155 | 几千台 PC,7 个月 | GNFS |
| 2010 | 768 bit | RSA-768 | 2 年级算力 | GNFS |
| 2020 | 829 bit | RSA-250 | ~2700 CPU·年 | GNFS |
| 2024 | 847 bit | RSA-260 | 约 3500 CPU·年 | CADO-NFS |
| 预计 | 1024 bit | — | 2030 前后可能被分解 | 经典算法 |
| 预计 | 2048 bit | — | 2035–2042(数千万美元级) | 经典算法 |
| 攻击类型 | 目标密钥长度 | 是否实用(2025) | 备注 |
|---|---|---|---|
| 因式分解(GNFS/CADO) | ≤ 847 bit | 已全破 | 1024 bit 理论可行但成本极高 |
| 小私钥指数攻击 | d < N⁰.²⁹² | 常见低危漏洞 | OpenSSL 曾有此问题 |
| 共模攻击 | 多个证书共用 p/q | 曾大面积爆发 | ROCA 漏洞影响 Infineon 芯片 |
| 侧信道(功率、缓存、故障注入) | 任意长度 | 物理访问即破 | 智能卡、TPM 最怕 |
| Padding Oracle(PKCS#1 v1.5) | 任意长度 | 极高危 | Bleichenbacher 攻击 |
| Quantum Shor 算法 | 任意长度无关 | 2035 年前不可能 | 一旦实用,所有 RSA/ECC 瞬间死亡 |
TLS 1.2 及以前使用:
TLS 1.3 已废弃 RSA 加密握手 只保留 RSA-PSS 用于签名。
证书链验证使用:
| 系统 / 协议 | 当前 RSA 长度 | 填充方式 | 迁移状态 |
|---|---|---|---|
| TLS 1.3 | 3072–4096 | OAEP/PSS | 已强制禁用 RSA 密钥交换(只剩签名) |
| OpenSSH | 3072+ | PSS | 推荐 ed25519 |
| OpenVPN | 4096 | OAEP | 正在迁移 P-256 / Kyber |
| Windows Code Signing | 3072–4096 | PSS | 2026 强制 SHA-384 + PSS |
| Apple iOS / macOS | 3072–4096 | PSS | 已支持 post-quantum 混合证书 |
| 中国金融 SM2 证书 | 256 bit 等价 | SM2 签名 | 完全替代 RSA |
量子算法:
可在多项式时间分解大整数 → 完全破解 RSA。
但现实状况:
| 密钥长度 | 量子下安全性 |
|---|---|
| 1024 bit | 即刻失效 |
| 2048 bit | 理论上可破解 |
| 4096 bit | 延缓被破解时间 |
未来方向: 后量子密码学(PQC) 如:CRYSTALS-Kyber、Dilithium、NTRU、Falcon,这些算法已被 NIST 标准化,将替代 RSA。
迁移线路图:
| 年份区间 | 推荐方案 | 备注 |
|---|---|---|
| 2025–2027 | 继续使用 3072/4096 RSA + 引入混合证书(RSA + Kyber-768) | 兼容性最佳 |
| 2027–2030 | 新证书默认 Kyber-768 + Dilithium 或纯 PQ | Chrome/Apple 已宣布 |
| 2030–2035 | 完全禁用 RSA 密钥交换,仅保留签名过渡 | NIST 预计时间线 |
| 2035 以后 | RSA 彻底退役 | 只剩考古价值 |
RSA 作为现代密码学的里程碑:
但与此同时:
| 新算法 | 密钥长度 | 性能 | 安全性 | 现状 |
|---|---|---|---|---|
| ECC(椭圆曲线) | 256–384 bit | 快 5–10 倍 | 等同或更高 | 主流推荐(Ed25519、P-256) |
| SM2 | 256 bit | 快 | 等同 ECC | 中国国密强制 |
| 格密码(Kyber) | 768–1024 字节 | 稍慢 | 抗量子 | 2025–2030 过渡期,部分已上线 |
Q:RSA 会被量子计算机秒破吗?
A:是的!量子计算机的 Shor 算法可以直接分解大整数,所有传统 RSA、ECC 都会瞬间死亡。但 2025 年实用量子计算机还很远。
Q:现在还敢用 RSA 吗?
A:敢!在 2035 年前,3072/4096 bit RSA 仍然安全。但新系统建议直接上抗量子算法(Kyber + Dilithium)。
Q:RSA 加密大文件行不行?
A:不行!RSA 只能加密很小数据(< 密钥长度)。大文件必须用“混合加密”:RSA 换对称密钥 + AES 加密正文。