首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >立即停止使用RSA:脆弱加密系统的全面剖析

立即停止使用RSA:脆弱加密系统的全面剖析

原创
作者头像
qife122
发布2025-08-26 15:25:19
发布2025-08-26 15:25:19
1440
举报

立即停止使用RSA

在Trail of Bits,我们审查过大量代码。从主流开源项目到令人兴奋的新专有软件,我们见识过所有类型。但这些系统都有一个共同点:出于某种难以解释的原因,人们似乎仍然认为RSA是值得使用的加密系统。让我为您节省时间和金钱直截了当地说——如果您向我们提交使用RSA的代码库,您将需要支付我们解释为何应该停止使用它所需的时间费用。

RSA的本质脆弱性

RSA本质上是一个脆弱的加密系统,包含无数普通软件工程师难以避免的陷阱。弱参数难以(甚至不可能)检查,其性能低下迫使开发人员采取风险捷径。更糟糕的是,在填充预言攻击被发现20年后,这类攻击仍然猖獗。虽然理论上可能正确实现RSA,但数十年的毁灭性攻击证明,这种壮举在实践中可能无法实现。

重新认识RSA

RSA是一种公钥加密系统,有两个主要用例:首先是公钥加密,允许用户Alice发布公钥,让任何人发送加密消息;其次是数字签名,允许Alice"签名"消息以便验证完整性。RSA的便利之处在于签名算法基本上就是加密算法的反向运行。

参数设置机制

Alice需要选择两个素数p和q生成模数N=pq的整数群,然后选择满足ed=1 mod (p-1)(q-1)的公钥指数e和私钥指数d。Bob可通过计算C=Me (mod N)加密消息,Alice通过M=Cd (mod N)解密。签名过程类似但方向相反。

自毁式参数选择

素数选择陷阱

RSA安全基于大数N=pq分解的困难性。但开发者经常为加速生成而选择特定形式的素数,这会导致灾难性后果:

  • 素数重用:如果p或q在其他RSA模数中重用,可通过GCD算法轻松分解
  • 相关素数:当p和q共享约一半高位时,可用费马方法分解
  • RSALib漏洞:ROCA漏洞影响众多智能卡和安全模块,利用特殊代数性质通过Coppersmith方法分解

私钥指数风险

小私钥指数d(d < N⁽¹/⁴⁾)会导致密钥恢复攻击。虽然建议使用大d并结合中国剩余定理加速,但实现复杂性会增加错误概率。

公钥指数隐患

小公钥指数e=3或1会引入多种漏洞:

  • Franklin-Reiter攻击:解密已知固定距离的相关消息
  • 密钥恢复:当e较小时,已知秘钥部分位可恢复剩余位
  • 签名伪造:Bleichenbacher攻击允许在Firefox和Chrome等实现中伪造任意签名

填充预言攻击无处不在

PKCS #1 v1.5填充方案容易受到填充预言攻击。攻击者利用无效填充错误信息,通过数百万次密文操作逐步解密目标消息。这种攻击特别危险,可恢复TLS会话的预主密钥。

虽然1998年就发现了此攻击,且存在安全证明的OAEP填充方案,但几乎无人使用。即使使用,OAEP也难以实现且容易受到Manger攻击。

替代方案推荐

椭圆曲线密码优势

  • 参数公开选择:密码学家完成困难参数决策,开发者只需生成随机字节
  • 无填充要求:完全避免填充预言攻击
  • 威慑效应:数学复杂性促使开发者使用专家构建的库

具体建议

Trail of Bits推荐使用Curve25519进行密钥交换和数字签名,加密使用结合椭圆曲线密钥交换和对称加密算法的ECIES协议。Curve25519专门设计用于预防其他曲线的潜在问题,且性能优异,可通过libsodium库获得多语言支持。

最终警告

RSA虽是安全通信发展的重要里程碑,但过去二十年的密码学研究已使其过时。椭圆曲线算法在2005年就已标准化,并已集成到直观防误用的库中。RSA的持续流行既表明密码学家未能充分阐明其风险,也表明开发者高估了自己的部署能力。

安全社区需要将其视为群体免疫问题——虽然有些人可能成功部署RSA,但这会给其他开发者错误信号。尽管StackExchange和Github上有大量警告,很少有人相信自己会搞砸RSA,于是轻率推进。最终用户将为此付出代价。这就是为什么我们必须一致认为:在2019年使用RSA是完全不可接受的行为。没有例外。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 立即停止使用RSA
    • RSA的本质脆弱性
    • 重新认识RSA
      • 参数设置机制
    • 自毁式参数选择
      • 素数选择陷阱
      • 私钥指数风险
      • 公钥指数隐患
    • 填充预言攻击无处不在
    • 替代方案推荐
      • 椭圆曲线密码优势
      • 具体建议
    • 最终警告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档