Agent Skills
返回列表
🔒

RSA 攻击技术手册

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,将规范名 @user_3c6cb52e/rsa-attack-techniques-lkg5 对应的 RSA 攻击技术技能安装到 AI 助手。

技能介绍

为什么需要这份手册

在 CTF 和授权渗透中,拿到一组 RSA 参数 (n, e, c) 之后,真正的难点往往不是数学计算,而是判断"该用哪种攻击"。同一个 n,e = 65537 还是 e = 3,决定了完全不同的路径;私钥 d 略小一点,可能从 Wiener 滑向 Boneh-Durfee 再滑向 Coppersmith。基础模型在这个环节最容易出错:要么推荐与参数矛盾的攻击,要么忽略了某个本该成功的路径。这份手册把"参数特征 → 攻击方法 → 工具链"做成一张可查询的决策表,让模型按已知条件选择而不是凭直觉猜测。

覆盖的攻击面

  • 分解攻击:小 n 直接分解、Fermat 分解(p 与 q 接近)、Pollard p-1(p-1 光滑)、Batch GCD(多个模数共享因子)
  • 小指数攻击:e = 3 且 m^e < n 时直接开立方;Hastad 广播攻击处理同一消息在不同模数下的多次加密;Franklin-Reiter 处理已知线性关系的明文对
  • 大 e / 小 d 攻击:Wiener 连分数展开处理 d < n^(1/4)/3;Boneh-Durfee 用格归约把边界推到 d < n^0.292
  • Coppersmith 方法:部分明文已知、私钥部分比特泄露(MSB/LSB)时的单变量小根求解
  • 模数复用攻击:Common modulus 在 gcd(e₁, e₂) = 1 时用扩展欧几里得还原明文
  • Oracle 攻击:LSB 奇偶 oracle、Bleichenbacher 的 PKCS#1 v1.5 填充 oracle、Manger 对 OAEP 的变体
  • 故障攻击:RSA-CRT 签名中单个 CRT 半边出错时直接恢复私钥

关键步骤

  1. 收集已知参数:n 的位数、e 的值、是否多个密文、是否有 oracle、签名是否出现异常
  2. 查决策表选攻击:例如 e = 3 且密文数量等于 e → Hastad;n < 512 bits → 查 factordb
  3. 加载 RSA_ATTACK_CATALOG.md:获取每种攻击的 SageMath/Python 实现、数学推导和边界条件
  4. 用工具验证:RsaCtfTool 做自动化尝试,SageMath 跑格攻击,gmpy2 处理大整数运算

适用边界

  • 仅面向 CTF 和授权安全评估,不可用于未授权场景
  • 部分攻击需要特定条件:Bleichenbacher 需要能区分合法/非法填充的 oracle;RSA-CRT 故障需要一份错误签名;Coppersmith 需要足够的已知信息
  • 格攻击对 n 的规模敏感,d < n^0.292 的边界在实际 1024 位以上密钥中可能因 BKZ 块长而失效
  • 需要预先安装 SageMath、RsaCtfTool、gmpy2、yafu 等工具链才能跑通完整流程

使用场景

  • CTF 比赛中拿到 e=3 的密文,需判断是否满足 m^e < n 并用立方根恢复明文
  • 渗透测试中遇到多个共享同一素因子的模数,需用 Batch GCD 批量分解
  • CTF 中私钥 d 异常偏小,需从 Wiener 连分数扩展到 Boneh-Durfee 格攻击
  • 服务端对 PKCS#1 v1.5 填充返回不同错误时,需实现 Bleichenbacher 攻击逐字节还原明文

适合人员

  • CTF 密码学选手,需要按参数特征快速定位正确的 RSA 攻击路径
  • 授权渗透测试工程师,需要用 RsaCtfTool 和 SageMath 验证实际系统中的 RSA 实现缺陷
  • 安全研究员,需要在格攻击理论推导与 SageMath 实现之间找到对照
  • 密码学课程学生,需要理解 Coppersmith 方法在部分明文或部分私钥泄露下的应用条件