SSH协议是建立在不安全的网络之上的进行远程安全登陆的协议。它是一个协议族,其中有三个子协议,分别是:
继续之前,补充一下两个概念:
SSH协议握手过程大致流程如下图所示:
下面使用Wirdshark进行抓包分析,开启wireshark抓包,进行一次正常的SSH登录,停止抓包,通过IP过滤出相关的报文如下:
如果将上述报文根据SSH协议运行的流程分析,流程和报文的对应关系如下:
在协商阶段客户端和客户端互相告知自己支持的加密方法:
确定加密方法后,交换公钥:
如果是通过密码登录,SSH就会采用这种自动协商密钥进行 非 对称加密通信。可以看到此后的报文全部为加密报文。
SSH 使用对称密钥对整个连接进行加密。与某些用户的假设相反,可以创建的公共/私有非对称密钥对只用于身份验证,而不用于对连接进行加密。对称加密甚至可以保护密码身份验证不被窥探。(2021年10月20日修改)
大概可以看出是以 New Keys 为界,区分密钥协商和加密通信。
内部加密的原理究竟是什么?这一点还需后期继续探索。