RSA公钥指数选用65537,是密码学实践中安全性与效率权衡后的最优解。

选择65537的核心依据

image-20251227091845393
  1. 安全与效率的平衡
    65537(2¹⁶ + 1)作为费马素数,其二进制表示仅含两个“1”,这使得采用快速模幂算法进行加密时,计算效率显著提升。同时,其数值足够大,能够有效抵御使用极小公钥指数(如3或17)时可能遭遇的小明文攻击、广播攻击及相关消息攻击,在安全性与执行效率之间达到理想平衡。

  2. 标准化与互操作性
    65537已成为PKCS#1等国际标准中的事实推荐值,广泛兼容于各类系统与协议(如TLS),确保最佳的互操作性。

为何保留为可配置参数

image-20251227092138813

尽管65537是绝对主流选择,密码学库仍将其作为参数暴露,基于以下考量:

  • 灵活性:为嵌入式设备或特定遗留系统等极端场景保留选择权。
  • 透明度:避免隐式行为,促使开发者明确认知该安全参数的选取。
  • 前瞻性:为密码学标准的未来演进预留空间。

使用小指数的风险

历史上为提升加密速度而选用3或17等小指数,将引入显著风险:

  • 若明文过小,加密结果可能未经取模,导致通过简单开方即可恢复明文。
  • 同一消息用相同小指数加密并发给多个接收者时,攻击者可利用中国剩余定理破解。
  • 加密具备已知线性关系的多条消息时,可能遭受相关消息攻击。

这些威胁进一步凸显了采用OAEP等标准安全填充方案的不可或缺性,而65537能大幅提高上述攻击的实施门槛。

结论与最佳实践

对于现代应用:

  • 生成RSA密钥时,公钥指数应固定选用 65537
  • 执行加密或签名时,必须摒弃“教科书式RSA”,严格搭配 OAEPPSS 等标准填充方案。