2016-11-28 33 views
1

根据RFC 4419,在客户端DH密钥交换初始化消息之前,服务器将为子组(g)发送一个大的安全素数(p)和发生器给客户端。我正在看wireshark数据包捕获但没有看到它们。我看到下面的服务器密钥交换初始化消息(参见图) enter image description hereSSHv2 DH密钥交换中的大型安全质数

哪里pg?我错过了什么吗?

[编辑]接下来的两个包都是

enter image description here

enter image description here

回答

1

如果你会使用diffie-hellman-group-exchange-sha1,这将低于在接下来的分组。屏幕截图中显示的是Algorithm Negotiation

当我们进入DH Key Exchange时,密钥交换在本节之后开始。但是,只有使用上述密钥交换方法才能通过这些数字! (组交换 - 不同的算法可以与固定组合作)。

section 3 of RFC4419下,您可以看到来自服务器的消息SSH_MSG_KEX_DH_GEX_GROUP,它将pg发送到客户端。

在您的示例中,您使用的是diffie-hellman-group1-sha1diffie-hellman-group14-sha1,它在RFC4253中定义并且正在使用固定组和素数。

+0

我没有看到他们在接下来的两个数据包中。下一个数据包是DH密钥交换init,其中包含“e”,然后服务器发送具有KEX DH主机密钥,DH服务器f和DH H签名的DH密钥交换回复。所以看起来它们是RFC 4419第3部分的3和4。作为参考,我将编辑该问题并包括接下来的两个数据包片段。谢谢 – user2896215

+0

正如你在截图中看到的,你的kex算法是'diffie-hellman-group1-sha1'和'diffie-hellman-group14-sha1',因此你不使用diffie-hellman-group-exchange-sha1 (和RFC 4419)和DH密钥交换是使用固定组和素数完成的。感谢那清除了困惑的 – Jakuje

+0

。你知道我怎么能从Kex DH主机密钥中获得公钥吗?看来存储在本地数据库中的公钥与Wireshark数据包中的公钥不同。我试着做公钥的MD5散列(存储在本地数据库),但它仍然不同。 – user2896215