Security 从用户的RSA公钥计算其私钥

Security 从用户的RSA公钥计算其私钥,security,encryption,cryptography,rsa,public-key-encryption,Security,Encryption,Cryptography,Rsa,Public Key Encryption,我知道我们将(N,e)作为每一个的公钥,N是两个素数p和Q的乘积。但我知道两个素数的乘积只有4个除数(1,本身,p,Q),使用一个简单的while循环黑客可以很容易地得到p和Q并计算φ。因为他们已经知道E,他们可以很容易地用E-1模φ(N)公式来确定D。那么我错过了什么呢?就是这样。如果p和q很大,分解n(从中计算p和q)就很困难。这也被称为RSA问题。正如您所描述的,这样一个幼稚的算法很难在集群上用很多年的时间从公钥中计算出私钥。如今,n的良好起始值通常为2048或4096位 让我们以2048

我知道我们将(N,e)作为每一个的公钥,N是两个素数p和Q的乘积。但我知道两个素数的乘积只有4个除数(1,本身,p,Q),使用一个简单的while循环黑客可以很容易地得到p和Q并计算φ。因为他们已经知道E,他们可以很容易地用E-1模φ(N)公式来确定D。那么我错过了什么呢?

就是这样。如果p和q很大,分解n(从中计算p和q)就很困难。这也被称为RSA问题。正如您所描述的,这样一个幼稚的算法很难在集群上用很多年的时间从公钥中计算出私钥。如今,n的良好起始值通常为2048或4096位

让我们以2048位的n为例。你需要平均检查21021和21023之间的数字,看看它们是否是一个因素。要做到这一点,每个数字至少需要进行一次除法,除法是最昂贵的操作。假设每秒可以进行250次(这已经过于乐观了)。因此,需要21021*2-50=2971秒才能天真地对其进行暴力。或者说很多年:

63287681048158293092457100785400357073646391563754928178128882051373633900610117258040958109029585581349076244353277228436467465385387926837239085435211521549350836400600129265523139315206842566674700556333827984041874404190921133157928971466181731790834790834476231545537801


比您描述的更好的算法是。有些量子算法应该运行得更快。

简单循环?这可能是什么简单的循环?我想把问题转移到密码学上来。