use*_*706 3 linux ssh wireshark
我需要了解 SSH 密钥交换,我曾尝试阅读 RFC 文档,但似乎很难理解,所以我使用 wireshark 捕获了数据包,我发现了各种用于 ssh 密钥交换的数据包
SSHv2 Client: Key Exchange Init
SSHv2 Server: Key Exchange Init
SSHv2 Client: Diffie-Hellman Key Exchange Init
SSHv2 Server: Diffie-Hellman Key Exchange Reply
SSHv2 Client: Diffie-Hellman GEX Init
SSHv2 Server: Diffie-Hellman GEX Reply
SSHv2 Client: New Keys
Run Code Online (Sandbox Code Playgroud)
任何人都可以详细解释每个数据包或 ssh 密钥交换的顺序吗??
Lat*_*SuD 14
首先,您应该了解 Diffie-Hellman 交换的概念。它允许在具有以下功能的 2 个端点之间建立通道:
它生成的随机数不能由对等方中的任何一个单独确定,而是由两者共同确定。这对我来说是一个有趣的概念。
从维基百科文章这里是交换的简化结构:
结果,他们生成了一个安全的随机秘密 g ab。
现在是 Wireshark 捕获!
SSHv2 客户端:密钥交换初始化
几个参数协商,如压缩和一些加密算法。
SSHv2 服务器:密钥交换初始化
回复上面
SSHv2 客户端:Diffie-Hellman 密钥交换初始化
关于数学组的 DH 参数的协商。(有关更多详细信息,请参阅 RFC4419 第 3 节)。
SSHv2 服务器:Diffie-Hellman 密钥交换回复
回复楼上。
SSHv2 客户端:Diffie-Hellman GEX Init
第一次实际交换DH。按照维基百科符号,这将是第 2 步(Alice 发送 g a)。
SSHv2 服务器:Diffie-Hellman GEX 回复
交换完成(Bob 发送 g b)。
收到此数据包后,两个对等方都知道密钥 (g ab ) 并用它建立一个伪安全通道(可以防止随意窃听,但不能防止中间人攻击)。
SSHv2 客户端:新密钥
这对我来说似乎是一个简单的确认消息。它很小,不包含任何有意义的数据。
好的,我想这之后还有很多事情要做(服务器公钥验证、用户身份验证、为 shell/sftp/scp/tunnels 建立数据通道等)。我不知道确切的细节,而且(不)幸运的是所有这些都是加密的。
有用的参考:
| 归档时间: |
|
| 查看次数: |
27852 次 |
| 最近记录: |