【问题标题】:RSA private exponent determinationRSA私有指数确定
【发布时间】:2011-09-13 01:45:18
【问题描述】:

我的问题是关于 RSA 签名的。

如果是 RSA 签名:

加密 -> y = x^d mod n, 解密 -> x = y^e mod n

  • x -> 原始消息
  • y -> 加密消息
  • n -> 模数(1024 位)
  • e -> 公共指数
  • d -> 私有指数

我知道 x、y、n 和 e。知道这些我可以确定d吗?

【问题讨论】:

    标签: cryptography rsa public-key-encryption


    【解决方案1】:

    如果你可以分解 n = p*q,那么 d*e ≡ 1 (mod m) 其中 m = φ(n) = (p-1)*(q-1), (φ(m) 是 @ 987654321@) 在这种情况下,您可以使用extended Euclidean algorithm 从 e 中确定 d。 (对于某些 k,d*e - k*m = 1)

    所有这些都非常容易计算,除了因式分解,它被设计为非常困难,因此公钥加密是一种有用的技术,除非您知道私钥,否则无法解密。

    因此,从实际意义上回答您的问题,不,您不能从公钥中导出私钥,除非您可以等待数百或数千个 CPU 年来分解 n。


    公钥加解密是逆运算:

    x = ye mod n = (xd)e mod n = xde mod n = xkφ(n)+1 mod n = x * (xφ(n))k mod n = x mod n

    其中 (xφ(n))k = 1 mod n 因为Euler's theorem

    【讨论】:

    • +1,但我认为您的“数百或数千 CPU 年”对于 1024 位密钥来说可能是夸大其词。请参阅here(以及其他地方)。在这一点上 1024 位真的太小了......
    • “例如,截至 2007 年 5 月,在 11 个月内使用 400 台计算机使用特殊数字字段筛选器分解了 1039 位整数”——即 367 CPU 年,他们说是一种特殊的形式……所以我不认为我离得太远了。
    • 很公平。但是你的措辞可能听起来像是 1024 位密钥是“安全的”,但如今它们已经不是那种类型了,至少根据专家的说法。
    【解决方案2】:

    在两种情况下答案是肯定的。一,有人因素n。第二,有人把算法当作米奇,说服签名者使用几个可能的 x 特殊值之一。

    Applied Cryptography 第 472 和 473 页描述了两种这样的方案。我不完全了解它们在实践中的工作方式。但解决方案是使用无法完全由想要确定 d 的人(也就是攻击者)控制的 x。

    有几种方法可以做到这一点,它们都涉及散列 x,以可预测的方式调整散列值以删除一些不需要的属性,然后对该值进行签名。执行此操作的推荐技术称为“填充”,尽管有一种非常出色的技术不能算作填充方法,可在 Practical Cryptography 中找到。

    【讨论】:

    • 我不同意。如果您使用不适当的填充,则可能会发生多种类型的选择消息和选择密文攻击。这些攻击可用于伪造签名或解密密文。但是,这些攻击都不能用来找到私钥。
    【解决方案3】:

    没有。否则私钥就没有用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2023-03-21
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      相关资源
      最近更新 更多