用途:面向 CTF 与授权安全评估的 RSA 密码分析手册,帮助在给定 RSA 参数(n、e、c)时根据已知信息选择合适攻击并恢复明文。
主要能力:
- 分解攻击:小 n 直接分解(factordb、yafu、msieve)、Fermat 分解(p 与 q 接近)、Pollard p-1(p-1 为 B-smooth)、批量 GCD(多个 n 共享因子)。
- 小指数攻击:e=3 且 m^e<n 时直接开立方根(gmpy2.iroot);Hastad 广播攻击(同一小 e、多个不同 n,CRT+iroot);Franklin-Reiter 相关消息攻击(m2=a·m1+b,同 n 同 e)。
- 大 e / 小 d:Wiener 连分数攻击(d<n^(1/4)/3)、Boneh-Durfee 格攻击(d<n^0.292,需 SageMath)。
- Coppersmith:已知明文部分(stereotyped message)、部分密钥泄露(已知 p 的 MSB/LSB)。
- 共模攻击:同 n、不同 e1/e2 且互素,用扩展 GCD 求 Bezout 系数恢复 m。
- 预言机攻击:LSB 奇偶预言、Bleichenbacher(PKCS#1 v1.5 填充预言)、Manger(OAEP)。
- RSA-CRT 故障攻击:由一条正确与一条错误签名,或仅错误签名加已知消息,通过 gcd 分解 n。
使用方式:按决策树判断已知条件(n 大小、e 大小、是否多个 n、是否有预言机或错误签名),选择对应攻击。常用工具:RsaCtfTool(python3 RsaCtfTool.py --publickey pub.pem --uncipherfile flag.enc --attack all)、SageMath(Coppersmith 与格攻击)、factordb.com、yafu、msieve、gmpy2、pycryptodome。分解出 p、q 后可用 phi=(p-1)(q-1)、d=invert(e,phi)、m=pow(c,d,n) 解密。
适用场景:CTF 密码题、授权渗透测试中的 RSA 实现缺陷分析。
限制:仅限授权测试;各攻击均有前提条件(如 d 足够小、p 与 q 接近、存在预言机等),条件不满足时无效;Bleichenbacher 平均每字节约 O(2^16) 次查询;部分攻击需 SageMath 环境。具体实现细节与边界条件见配套 RSA_ATTACK_CATALOG.md。