我是否错误地认为RSA加密的安全性通常受已知素数的限制?
要破解(或创建)私钥,必须组合正确的素数对。
是否无法发布RSA使用范围内所有素数的列表?或者这个列表足够大,以使这种暴力攻击不太可能?难道不会有“常用的”素数吗?
答案 0 :(得分:84)
RSA不会从已知素数列表中选择:它会生成一个新的非常大的数字,然后应用算法来查找几乎肯定是素数的附近数字。见this useful description of large prime generation):
生成大素数的标准方法是采用所需长度的预选随机数,应用费马测试(最好用基数2,因为它可以针对速度进行优化)然后应用一定数量的米勒-Rabin测试(取决于长度和允许的错误率,如2-100)得到一个非常可能是素数的数字。
(你可能会问为什么,在这种情况下,当我们尝试找到更大和更大的素数时,我们没有使用这种方法。答案是最大的已知素数has over 17 million digits - 远远超过非常大的通常用于密码学的数字。)
至于是否可以进行冲突 - 现代密钥大小(取决于您所需的安全性)的范围为1024到4096,这意味着质数范围从512到2048位。这意味着您的素数大约为2 ^ 512:超过150位数。
我们可以使用1 / ln(n)
非常粗略地估计素数的密度(参见here)。这意味着在这些10^150
数字中,大约有10^150/ln(10^150)
个素数,可以选择2.8x10^147
个素数 - 当然比你可以放入任何列表中的更多!!
是的 - 该范围内的素数数量惊人地巨大,并且实际上不可能发生碰撞。 (即使你生成了一万亿个可能的素数,形成一个septillion组合,它们中任何两个素数相同的素数的概率都是10^-123
)。
答案 1 :(得分:5)
随着新研究的出现,你的问题的答案变得更加有趣。在最近的一篇论文"不完美的前瞻性保密:Diffie-Hellman如何在实践中失败"由David Adrian等人发现@ 2015年10月16日访问@ https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf的研究人员表示,尽管RSA的1024位密钥集可能有足够数量的素数可用,但内部有一组密钥由于实施而更有可能使用的整个集合。
我们估计即使在1024位的情况下,计算也是如此 合理的民族国家资源。少数固定或 数百万台服务器使用标准化组;执行 单个1024位组的预计算将允许被动 窃听18%的热门HTTPS网站,第二组则是 允许解密66%的IPsec VPN和26%的SSH流量 服务器。仔细阅读已公布的NSA泄漏情况表明 代理商对VPN的攻击与实现这样的目标是一致的 打破。我们得出结论,转向更强大的密钥交换方法应该 成为互联网社区的优先事项。
该研究还显示了TLS中的一个漏洞,可能允许中间人攻击者将加密降级为512位。
因此,在回答您的问题时,RSA加密中可能有足够数量的素数在纸上,但实际上,如果您隐藏在一个国家/地区,则存在安全问题。
答案 2 :(得分:-4)
RSA中使用的素数不仅很大。它必须是10-digited或可能是100-digited。我指的不是数十亿或数万亿,而是超出难以表达甚至想象的东西。
所以要回答这个问题,这些数字不能为素数。