【问题标题】:In RSA encryption algorithm, Can we find P ,Q and totient of N if we have N value?在 RSA 加密算法中,如果我们有 N 值,我们能找到 N 的 P、Q 和总数吗?
【发布时间】:2021-09-29 08:32:50
【问题描述】:

N 是 p*q 而 totient(N) 是 (p-1)(q-1) 和 (P-1) 的乘积,(Q-1) 从它们中取 1 后将不是素数。例如,N 是 51。51 = p*q 而 Totient(N) 是 pq -p -q + 1 的乘积。所以 totient(N) = 51-p-q+1。这之后我该怎么办?如何从 N 值 (RSA) 中得到 p,q?

【问题讨论】:

  • 注意:在 Stack 帖子的文本中,星号用作斜体的降价,或者加倍用作粗体。要使用实际的星号字符,您必须使用反斜杠。我为您修复了,但将来请校对您的帖子以确保它们正确呈现。 (在由反引号标记的 code 或带有 4 空格缩进或三个反引号的块中,星号被视为数据。请注意,我通过实际编写 *code 以斜体字编写 code *.)

标签: encryption cryptography rsa calculation


【解决方案1】:

从 n 获得 p,q 的唯一分析(非实现)方法是分解 n。对于像 51 这样的玩具值,这很容易;只需尝试 p 的可能值,直到找到 p=3 q=17(或者如果您愿意,也可以换成 p=17 q=3)。对于实践中使用的 n 的大小——直到几年前通常是 1024 位,大约是 308 个十进制数字,现在至少 2048 位(616 位),有时甚至更多——没有已知的方法来计算少于数千多年来,这就是为什么 RSA 被认为是一般安全的原因,因为知道 p,q 使您能够轻松地恢复私有指数以及解密和/或伪造数据。

特定实现有时会在生成密钥时错误地选择 RSA 素数,或者通过侧通道泄漏有关它们的信息,或者泄漏有关生成的私有指数 (d) 的信息。这些攻击特定于实现,并且取决于许多细节和比您的问题中展示的更高水平的知识。知道 d 加上公钥可以计算 p,q;这已经在其他堆栈上被多次询问和回答,我稍后会挖掘。请注意,您的问题实际上是关于 RSA 背后的数学而不是任何程序代码或语言,尽管如果有一种方法可以很好地体现在代码中,所以它在这里不太适合,而且更适合(但微不足道或重复)在https://crypto.stackexchange.comhttps://security.stackexchange.com 上。

人们相信,如果量子计算机的研究成功,它们在因式分解方面的效率将大大提高,足以使 RSA 变得不安全。如果发生这种情况,您可以期待在世界上的每个新闻频道和网站上看到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多