2010-03-08 58 views
3

在这里提出这个问题也许不太合适...无论如何,我试图使用gmp库来实现DH,但是我得到的问题是:Diffie-Hellman中参数的选择

有一次,当我在做测试,以观察输出,虽然选择的首要和私钥大值:

  • p在约300余位十进制
  • A,b长时间了约100位数字

终于我得到了一个非常小的共享密钥,可能小于10^8的小数...

这个问题并没有出现很多次,实际上在所有的观察期间,它似乎只是曾经......但依然,这并不是那么好。

所以我想如果有一些方法可避免此...感谢名单了很多

+0

编辑为英语。国际海事组织,这是一个好的问题。 – 2010-03-08 19:02:20

回答

2

的Diffie-Hellman密钥交换的目的是产生一个秘密共享密钥。

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

但是,共享密钥的实际值可能是任何值在该池内。其结果是,它的范围可以从零到(P - 1)......这是因为,关键是

G^(ab) mod p

因此,你有没有在这里发现了一个问题......你只看到当G^(ab)的值接近于p的倍数时,因此mod是低数字。

+1

换句话说,共享密钥*很长,但许多第一个数字恰好为零。 – Peeja 2012-12-26 16:31:58

1

D-H的一部分是密钥可能是任何值在由p指定的范围内。至少在理论上,消除这些可能性中的一些会使它不那么安全,而不是更加如此(实际上,只要你留下足够大的密钥池,它几乎没有真正的区别)。

确实如果攻击者决定尝试使用密钥耗尽(蛮力)攻击,并从0开始计数,他们很快就会触发该攻击。然后,如果你决定了其他一些下限,并且(例如)重新协商了密钥,那么它就不会有任何实际的好处 - 而不是从0开始,攻击者将从指定下限,并且你什么也没有获得。