Diffie-Hellman密钥交换和离散日志

时间:2013-11-19 21:09:24

标签: encryption cryptography diffie-hellman

我有一个普遍的问题,为此我会举一个例子: 假设Alice和Bob选择素数593和公共g = 9。 爱丽丝选择号码530。 鲍勃选择号码147.

Alice计算:x = g ^ a mod p = 574 Bob计算:y = g ^ b mod p = 527 他们的共享密钥是156

现在夏娃试图破解钥匙并找到一个。她有一个破解功能,她发现c:g ^ c mod p = x 在我们的例子中,c = 234,但这不是Alice选择的原始版本,所以她仍然没有成功。我的问题是:有没有一种方法可以找到Alice的原始a,使用这些信息--Eve有c,g,p和x,她知道g ^ c mod p = x

(也许通过反函数,我不知道..) 感谢

1 个答案:

答案 0 :(得分:2)

是。如果

  

g ^ a mod p = g ^ x mod p

然后

  

g ^ ab mod p = g ^ xb mod p

特别是

  

(g ^ b mod p)^ a mod p =(g ^ b mod p)^ x mod p

因此,出于所有实际目的,您可以假装Alice的私钥是x。 这就是为什么g成为集团的发电机很重要的原因 没有这种'兄弟'的私钥。

她无法知道'原创'a,但她确实知道它(通常) 一小组数字,与x不同,是o(g)的倍数。它不是哪一个 真的很重要。

在这种特殊情况下,发生的事情是g的顺序为296,而不是592。因此,Alice选择的实际密钥 - 530,有一个'兄弟':

  

c = 530 + 296 mod 592 = 234