RFC标准
RFC 4251 协议架构: 传输、认证、连接
RFC 4253 传输协议
RFC 4252 认证协议
RFC 4254 连接协议
RFC 4250 协议中出现的编号定义
RFC 5656 SSH集成椭圆曲线
传输层协议 浅析
包结构如下所示:
uint32 packet_length
byte padding_length
byte[n1] payload; n1 = packet_length - padding_length - 1
byte[n2] random padding; n2 = padding_length
byte[m] mac (Message Authentication Code - MAC); m = mac_length
- 压缩:仅对
payload
内容进行压缩,压缩后重新计算packet_length
以及padding
。 - 完整性保护: 通过密钥协商得到共享密钥
key
,通信双方共同维护从0开始递增的序列号sequence_number
;MAC计算仅针对payload
(若存在压缩,那么payload
中的内容是压缩后的内容)。 - 加密:加密使用协商得到的加密密钥,对
packet_length
、padding_length
、payload
、padding
内容进行加密,加密后与完整性保护得到的MAC拼接在一起作为整个消息包。
参考文献
[1]. 重新认识SSH(一) . Anon . 2019.04 . https://emous.github.io/2019/04/28/SSH/
[2]. openssh . specs . https://www.openssh.com/specs.html
[3]. SSH协议和原理浅析 . walkerdu . 2019.10 . http://walkerdu.com/2019/10/24/ssh/
[4]. 博客园 . Linux 伪终端(pty) . sparkdev . 2019.09 . https://www.cnblogs.com/sparkdev/p/11605804.html