当使用Diffie-Hellman密钥交换时,据说使用安全素数很重要.但是,如果生成一个具有足够比特长度的非素数模,是否有攻击可用于从公共通信中恢复共享秘密(g,g^a,g^b,模)或解密加密消息?
发布于 2019-04-23 07:11:55
是的,它可能是可以解密的。
注:我本没有意识到你的问题有一个微妙的细微差别。你提到了安全素数然后是非素数。但安全素数是一个数学术语。不是每个素数都是安全的质数!安全素数是素数2p +1,因此p也是素数。重要的是,在DH中模量是素数,但它应该是一个安全的质数,最好的安全。
?
非素数是否安全取决于你所说的足够长。如果数字比平常大得多,也许不可能合理地打破它们,但这在很大程度上取决于确切的数字。
我们使用安全素数作为模数(p)的原因之一是确保我们在<0,p范围内生成许多可能的秘密。当p不是素数时,情况可能不是这样。我们产生的秘密越少,就越容易用暴力强迫他们。
例如,假设我们使用g=5,p=25。那么产生的秘密S将永远是0或5。很明显,这比所有从0到24的数字要容易得多。安全素数(非正常素数)生成大素数子群,这意味着秘密可以有许多值,即使不是所有可能的值。
另一个更大的问题是,如果你使用一个非素数,你只需要解p因子的离散对数问题,这就容易多了。您可以在CryptoSE上阅读更多内容。
现在,正如你所看到的,仍然有可能想到足够大的数字,这样就足够安全了。例如,如果我们选择两个不同的素数,它们都足够大,它们本身是安全的,然后乘以它们并将结果作为p使用,那么这应该是安全的。但是,对于任意的值,您并不确定,因为可能有许多小的因素或相同的因素,使用不必要的大数字会使您的性能降低。
也许还有其他我不知道的问题。
感谢AleksanderRas提供到CryptoSE的链接。
使用安全素数的原因与使用素数的第一个原因有关。即使是素数也可能有一个很小的素数群。这意味着它不会产生来自<0,p范围的许多秘密。安全素数更擅长拥有大的素数群,从而产生更多的秘密,从而使蛮力变得更难。您可以在CryptoSE上阅读更多内容。
发布于 2019-04-23 07:14:23
是的,恢复共享秘密是非常可行的,因为现在您将“只”使用离散日志问题模块化构成复合数字的所有素数。这仍然需要一些时间,但在合理的时间内是有可能做到的。
有关更多信息,请参见关于CryptoSE的这个问题。
https://security.stackexchange.com/questions/207868
复制相似问题