【问题标题】:How bad is 3 as an RSA public exponent3 作为 RSA 公共指数有多糟糕
【发布时间】:2010-12-30 08:50:56
【问题描述】:

我正在创建一个应用程序,我必须在其中使用 RSA 使用公钥加密一些东西。我希望这种加密非常快。最初,我尝试使用 F4 (=65537) 作为指数的 2048 位密钥,但速度不够快。所以现在我正在考虑以下两个选项:

  1. 2048 位模数,e=3
  2. 1024 位模数,e=65537

两者都满足我的性能要求,但哪一个提供更好的安全性?我还应该注意我使用 PKCS#1 填充方案。

【问题讨论】:

    标签: security encryption rsa


    【解决方案1】:

    如果您在 PKCS#1 中使用 OAEP 等随机填充,则大多数(全部?)使用低指数的已知弱点不再相关。

    您也尝试过使用 e=17 吗?没有规定必须选择 3 或 65537。

    【讨论】:

    • 如果你拿着信用卡加到权力,你将无法填写2048位。也不应该使用 17。
    • 你是对的。只是我使用 openssl 生成密钥,从 0.9.8 开始不支持使用任何其他指数。
    • 还要记住,“Shamir 和 Tromer 在 2003 年描述的名为 TWIRL 的理论硬件设备对 1024 位密钥的安全性提出了质疑。目前建议 n 至少为 2048 位长。” en.wikipedia.org/wiki/RSA#Security_and_practical_considerations
    • 我刚刚发现 openssh 密钥(使用 ssh-keygen 生成)使用 e=35(这实际上是不寻常的,因为 35 不是质数)。这意味着小指数可能不是什么大问题(当使用好的填充方案时)。
    【解决方案2】:

    如果您使用了良好的填充方案,那么没有已知原因说明 e=3 应该比任何其他公共指数具有更差的安全性。如果您也没有使用好的填充方案,则使用短指数会出现问题,但问题更多在于填充方案而不是指数。

    许多研究人员的“直觉”是 e=3 并不优于任何其他公开指数,并且 e=3 在未来某个未指定的日期可能会稍微弱一些,尽管目前没有任何迹象表明存在这样的弱点。

    密钥长度对安全性的实际影响要大得多。最近破解了一个 768 位的 RSA 密钥(这并不容易!四年来与大型计算机和更大的大脑一起工作)。 1024 位密钥在短期内被认为是足够的,但长期使用(例如,加密数据具有很高的价值,并且在 2030 年仍必须保密)将需要更大的东西,例如2048 位。请参阅this site,了解有关如何估计加密强度以及已被各种研究人员和组织估计的更多信息。

    如果您使用非常快速的非对称加密,您可能想要研究比 RSA 更快的Rabin-Williams encryption scheme,同时为相同的输出长度提供至少相同级别的安全性(但没有易于-使用该方案的详细标准,与带有 PKCS#1 的 RSA 相反,所以你在这里有点靠自己)。

    【讨论】:

      【解决方案3】:

      虽然目前还没有已知的针对使用正确填充的攻击,但在实现错误的情况下,小指数更有可能导致漏洞利用。不幸的是,实施错误仍然是一个威胁。例如。 this 是一个非常“流行”的漏洞。 (注意,这是用于签名的。我只是想表明即使是商业软件也可能存在严重的错误。)

      如果你必须偷工减料,那么你必须考虑你的行为的潜在影响。 IE。选择小模数或小指数都有各自的缺点。

      如果您选择一个小的(1024 位)模数,那么您不能假设您的数据可以保密数十年。

      如果您选择较小的指数,您可能更容易受到实施错误的影响。

      在第一种情况下,您几乎知道自己的秘密何时处于危险之中,因为很容易跟踪保理方面的进展。 (这当然假设不发布例如 NSA 的机构不是你的敌人)。 在第二种情况下(实现错误),您不知道自己何时犯了错误。使用 e=3 可能是安全的,或者您可能犯了一个大错误。 IE。在一种情况下,您有一种很好的方法来估计您的风险,而在另一种情况下,您却没有。

      因此,我建议根本不要使用 e=3。 对于那些难以预测的威胁,我会比那些广为宣传的威胁使用更多的安全余量。

      【讨论】:

        【解决方案4】:

        在他们的书“Practical Cryptography”中,Bruce Schneier 和 Niels Ferguson 建议使用公共指数 3 进行签名,使用 5 进行加密。您应该仔细检查他们推荐的其他避免灾难的标准。第 13.4 节涵盖了这一点(p229ff),并讨论了给定 n = pq(其中 p 和 q 是随机素数)的不太复杂的要求,(p-1) 和 (q-1) 都不能是 3 或 5 的倍数. 但仍要仔细检查书以了解详细信息。

        (我相信这本书的new edition 将于 2010 年出版。)

        【讨论】:

          【解决方案5】:

          引用 Don Coppersmith 1997 年的论文“Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities”:

          如果对手知道三分之二的消息,则使用指数 3 的 RSA 加密很容易受到攻击。

          虽然如果使用 RSA-OAEP 填充方案这可能不是问题,但如果使用公共指数 3,则 PKCS#1 填充方案(op 正在使用)很容易受到攻击。

          【讨论】:

          • “如果使用公共指数 3,PKCS#1 填充方案(op 正在使用)很容易受到攻击”。不是,正如其他人在这里的回答所解释的那样。
          • 我的回答中的引用指向了特定的攻击。请说明唐(以及我)在哪里弄错了。重复错误的陈述并不能使它成为事实。
          • 很公平,因为 OP 没有指定他是在加密密钥还是其他东西,所以不能保证他会使用 PKCS #1 获得足够的随机填充。
          【解决方案6】:
          【解决方案7】:

          如果你的指数很低,m*e

          这是我两年前关于加密货币的笔记。但是,在回答您的问题时,似乎选项 2 更好。

          更热衷于做数学的人可能会给你一个更好的解释。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-24
            • 2011-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多