在RSA加密算法中,如果我们有N值,我们能找到N的P、Q和totient吗



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?

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

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

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

相关内容

最新更新