Diffie-Hellman中参数的选择

时间:2010-03-08 18:55:19

标签: c gmp diffie-hellman

也许在这里问这个问题不太合适......无论如何,我正在尝试使用gmp库来实现DH,但我得到的问题是:

有一次,当我进行测试以观察输出时,虽然选择了主要值和私钥的大值:

  • p大约超过300位十进制数
  • a,b大约有100位数字

最后我得到了一个非常小的共享密钥,可能小于十进制的10 ^ 8 ......

这个问题没有多次出现,事实上,在所有的观察过程中,它只出现了一次......但是,这根本不是那么好。

所以我想知道是否有一些方法可以避免这种情况...... Thanx很多

2 个答案:

答案 0 :(得分:2)

Diffie-Hellman密钥交换用于生成秘密共享密钥。

通过使用较大的p,a和b值,可以确保潜在共享密钥池非常大。

但是,共享密钥的实际值可以是该池中的任何值。因此,它的范围可以从零到(p - 1)......那是因为,Key是

G^(ab) mod p

因此,您在此处未发现问题...您只是看到G^(ab)值接近p的倍数时的实例,因此mod是数字很​​少。

答案 1 :(得分:1)

D-H的部分要点是密钥可以是在p指定的范围内的任何值。至少在理论上,消除其中一些可能性会降低其安全性,而不是更加安全(实际上,只要留下足够大的密钥池,它就没有什么真正的区别)。

确实如果攻击者决定尝试使用密钥耗尽(暴力)攻击,并从0开始计算起来,他们就会很快打到这个。然后再次,如果你决定在其他下限和(例如)重新协商密钥,如果它低于该界限,它将没有任何真正的好处 - 而不是从0开始,攻击者将从指定下限,你什么都没得到。