RSA
安全公钥密码体制的奠基算法
RSA(Rivest–Shamir–Adleman,1977 年提出)基于大整数分解难题构建公钥加密与数字签名,现行规范 RFC 8017(2016),至今支撑着 TLS 握手、代码签名与证书体系。
原理与历史
1977 年 MIT 三位学者 Rivest、Shamir、Adleman 发表该算法(英国 GCHQ 的 Ellis/Cocks 1973 年已有等价构想但保密至 1997)。安全性依赖"大整数质因数分解"的困难性:公钥含大合数 n,私钥依赖其两个大素因子。现行标准是 RFC 8017(PKCS #1 v2.2,2016)。
密钥长度与现状
1024 位 RSA 已不安全(NIST 自 2013 年底停用),底线 2048 位、推荐 3072/4096 位。相比 ECC(椭圆曲线,如 P-256,NIST SP 800-186),RSA 需要更长密钥才达同等强度、运算更慢,但生态兼容性最好。TLS 1.3(RFC 8446,2018)已把 RSA 从密钥交换中移除(只保留签名用途),前向保密由 ECDHE 承担。
OAEP 与 PSS
裸 RSA 是确定性的且易受填充攻击:加密必须用 OAEP 填充(RFC 8017),签名必须用 PSS 而非旧 PKCS#1 v1.5(后者 Bleichenbacher 类攻击历史频发)。"用错填充"是 RSA 实战漏洞的第一大来源。量子计算威胁下,NIST 后量子标准 ML-KEM(FIPS 203,2024)开始部署,RSA 体系正与之混合使用过渡。