我已经着手在C#中创建一个基本的SSH客户端;你可能会记得我的帖子,如primitive ssh connection (lowlevel)呵呵。diffie-hellman ssh keyxchange
无论如何,直到我发起DH密钥交换的时候,情况都非常好。 我将建立ssh连接(从openssh客户端到openssh服务器)的流量与我的客户端连接到同一个openssh服务器时的流量进行了比较。
OpenSSH客户端 - > OpenSSH服务器(S为服务器,C为客户端): S:SSH-2.0-OpenSSH_5.1p1 Debian的6ubuntu2 \ R(打招呼) C:SSH-2.0-OpenSSH_5.2 \ r(自我介绍) C:密钥交换初始化(0x14 = 20) S:密钥交换初始化 C:Diffie-Hellman GEX请求(0x22 = 34)(具有DH GEX min,位数和最大值) S:的Diffie-Hellman密钥交换答复(与P,G,等) C:的Diffie-Hellman GEX初始化 S:的Diffie-Hellman GEX回复
我的客户 - > OpenSSH服务器: S:SSH-2.0-OpenSSH_5 .1p1 Debian-6ubuntu2 \ r(打招呼) C:SSH-2.0-Some_Name \ r(自我介绍) C:密钥交换初始化(0x14 = 20) S:密钥交换初始化 C:Diffie-Hellman GEX请求(0x22 = 34)(用DH GEX min,位数和最大值)
然后一个虚假的TCP数据包作为回复(可能服务器连接已经在GEX请求之后终止。
我还没有使用AES128(我认为是加密选择,但我不知道如何验证这一点...),而且我仍然以非压缩格式发送,希望得到P,G等值进行DH计算。
那么,我滞留是: RFC 4419第3页http://www.ietf.org/rfc/rfc4419.txt 我已经送SSH_MSG_KEY_DH_GEX_REQUEST,但服务器没有响应SSH_MSG_KEX_DH_GEX_GROUP。
任何人都可以给我一些关于我在这里不理解的建议吗?服务器是否不理解我的GEX请求(由于它期待加密,或?)?
任何帮助非常感谢,谢谢:)
算法存在于双方,但没有正确应用,是的。 – Chuck 2010-05-25 12:43:12