【问题标题】:Computing private key of a user from his RSA public key从他的 RSA 公钥计算用户的私钥
【发布时间】:2015-01-28 16:44:15
【问题描述】:
我知道我们会给每个人提供 (N,e) 作为我们的公钥,而 N 是两个素数的乘积 P 和问。但是我知道两个素数的乘积只有 4 个除数(1,它本身,P,Q)并且使用简单的 while 循环黑客可以很容易地得到 P 和 Q 并计算 phi。由于他们已经知道 E,他们可以使用 E-1 mod phi(N) 公式轻松确定 D .那我错过了什么?
【问题讨论】:
标签:
security
encryption
cryptography
rsa
public-key-encryption
【解决方案1】:
就是这样。如果 p 和 q 很大,则因式分解 n(计算 p 和 q它)很难。它也被称为 RSA 问题。正如您所描述的那样,如此幼稚的算法很难在集群上花费很多年才能从公钥中计算出私钥。今天,n 的良好起始值通常是 2048 或 4096 位大小。
我们以 2048 位的 n 为例。您需要检查平均介于 21021 和 21023 数字之间的某个位置,以查看它们是否是一个因素。为此,您需要对每个数字至少进行一次除法,除法是最昂贵的操作。假设您每秒可以进行 250 次(这已经太乐观了)。所以需要 21021 * 2-50 = 2971 秒天真地暴力破解它。或者那么多年:
632876810481582893092457100785400357073646391563754928178128882051373633900610117258040958109029585581349076244353277284364674653853879268372390854352115493505836400606001292655231393152068425666747005563338382798494041874404131909211331579289714661817326517908344762063152744555537801 P>
比您描述的更好的算法是general number field sieve。有些量子算法应该运行得更快。