我知道公钥加密使用素数, 还知道两个大的(例如100位)素数(P,Q)用作私钥, 该产品是公钥N = P * Q, 并且使用素数是因为N的因式分解以获得P,Q是非常困难并且花费很多时间, 我很好,但我很困惑 为什么不使用P,Q的任何普通的大非素数 所以N的分解仍然是困难的 因为现在,不仅有两个因素可能,甚至更多。
感谢....
答案 0 :(得分:2)
我不是加密专家。
为什么不使用任何普通的大型 P,Q的非素数
因为会有更多因素。整数分解是对公共私钥加密的攻击。这种攻击利用了这种关系。
人们可以更容易地找到具有更多共同因素的关系和可能的值。它归结为代数。
N = P * Q
如果P和Q都是Prime,那么N有4个因子{N P Q 1}
然而! 如果P和Q都共有一个因子2
N / 4 = P / 2 * Q / 2
如果N可能是0..2 ^ 4096,那么它现在是0..2 ^ 4094,因为2是一个因素,另一个大数字也是一个因素。
这意味着我可以找到P,Q S.T的标量倍数P',Q'。 P',Q'< P,Q
我自己并不完全理解这个概念,但我相信这表明了我的目标。
你必须搜索一个较小的空格,直到你强行关键。
答案 1 :(得分:2)
完全可以使用RSA,模数N由两个以上的素因子P和Q组成,但必须注意两件事:
您必须知道所有这些因素的确切值,否则您将无法在生成密钥时从公钥派生私钥。双素数RSA的等式是1 = D * E(mod LCM(P-1,Q-1))。如果您执行了解这些素数因素,则可以执行计算。如果您不知道无法执行此计算的素数因素,那么BTW是为什么公钥E,N公开是安全的原因 - 您无法派生私钥D如果您只有从公钥中轻松获得的信息,除非您能够计算N.
RSA的安全性有效地受到RSA模数N的第二大素因子的大小限制。找到小于2 ^ 32的小素数因子可以在几分之一秒内完成现代计算机,简单地通过尝试将模数N除以每个这样的素数并检查残差是否为零(意味着N可被该数除除)或不(意味着该数不是N的因子)。如果N仅由这样小的素因子乘以单个大素因子Q组成,那么简单地通过将N除以所有小因子得到N'并测试N'的素数来找到Q也是微不足道的。如果N'是素数,则它是Q的最后一个因素。
答案 2 :(得分:0)
我不是真正的密码学专家(所以,如果我错了,只是在评论中告诉我,我会立即删除这个答案),但我认为这是因为如果你只是使用随机大数字,你可能会得到容易因素的(即你不必得到真正大的素数来得到它们的素因子)。所以只使用了很大的保证素数。