当我阅读关于DH密钥交换如何工作的描述时,没有提到密钥交换者如何就哪个" group"达成协议。 (p
和g
参数)应用于计算公共和私有值。看RFC 5114,似乎有很多选择。
我想知道这种谈判是否通常在交换本身期间完成,如果没有,是否有关于算法如果包含该步骤将如何不同的说明。
感谢阅读。
答案 0 :(得分:1)
p和g值可以安全地通过未加密。如果客户端/服务器在网络上,则客户端或服务器会生成p / g值并通过网络套接字传递它们。只要每个客户端/服务器的密码保密(duh ..),Diffie-Hellman交换可以说是安全的,因为攻击者必须计算g ^(ab)mod p = g ^(ba) mod p(由于p值足够大,导致无限量的解决方案无法计算)。
基本上最基本的D-H交换如下:
甲方生成p,g,a值。其中g是基数/发生器,p是素数模,a是秘密能力。
乙方(同时)生成秘密值b。
甲方计算g ^ a mod p(此后我们将此值称为A)
甲方并在传输介质上发送p,g和A.
乙方收到p,g,A。
乙方计算g ^ b mod p(之后我们将此值称为B)。
乙方通过传输介质发送B.
甲方收到B.
甲方计算B ^ a mod p并获得共享秘密。
乙方(同时)计算A ^ b mod p并获得共享秘密。
注意:如果p值太小,从0到p - 1迭代可能会更便宜,但这一切都取决于生成公共秘密后的操作。