ssh传输层协议

2 篇文章 0 订阅

环境

纯理论知识,只是笔记,非教程

二进制协议格式

每个数据包为以下格式:

类型名称
uint32packet_length
bytepadding_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

协议过程

协议版本交换

当 TCP 连接建立后,双方都必须发送一个标识字符。该标识字串必须是:

SSH-protoversion-softwareversion SP comments CR LF

# 我公司的服务器返回的信息
SSH-2.0-OpenSSH_5.3
名称描述
protoversion协议版本
softwareversion软件版本
SP空格
comments可选字符串
CR回车
LF换行

算法协商

密钥交换从每一方发送如下数据包开始:

类型名称
byteSSH_MSG_KEXINIT
byte[16]cookie (random bytes)
name-listkex_algorithms
name-listserver_host_key_algorithms
name-listencryption_algorithms_client_to_server
name-listencryption_algorithms_server_to_client
name-listmac_algorithms_client_to_server
name-listmac_algorithms_server_to_client
name-listcompression_algorithms_client_to_server
name-listcompression_algorithms_server_to_client
name-listlanguages_client_to_server
name-listlanguages_server_to_client
booleanfirst_kex_packet_follows
uint320 (为将来扩展预留)
byte        SSH_MSG_KEXINIT
byte[16]    cookie (random bytes)
name-list   kex_algorithms
name-list   server_host_key_algorithms
name-list   encryption_algorithms_client_to_server
name-list   encryption_algorithms_server_to_client
name-list   mac_algorithms_client_to_server
name-list   mac_algorithms_server_to_client
name-list   compression_algorithms_client_to_server
name-list   compression_algorithms_server_to_client
name-list   languages_client_to_server
name-list   languages_server_to_client
boolean     first_kex_packet_follows
uint32      0 (为将来扩展预留)

cookie:必须是一个由发送方生成的随机值。它的作用是使任何一方都不可能对密钥和会话标识符拥有完全决定权。

kex_algorithms: 密钥交换算法。列表的话,用逗号(,)隔开

server_host_key_algorithms: 受支持的为服务器主机密钥服务的算法的名称列表,按优先级排序。通俗点说就是服务器所支持的算法列表,用逗号(,)隔开

encryption_algorithms: 可接受的对称加密算法(也称为加密器)的名称列表,按优先级排序。

mac_algorithms: 可接受的 MAC 算法的名称列表,按优先级排序。

compression_algorithms: 可接受的压缩算法的名称列表,按优先级排序。

languages: 语言标志的名称列表,按优先级排序。

first_kex_packet_follows: 表明是否有一个猜测的密钥交换数据包跟随。

Diffie-Hellman 密钥交换

首先,客户端发送:

byte    SSH_MSG_KEXDH_INIT
mpint   e

服务器响应如下:

byte    SSH_MSG_KEXDH_REPLY
string  K_S,服务器公钥和证书 (
mpint   f
string  s,对 H 的签名

密钥交换在每一方发送一个 SSH_MSG_NEWKEYS 消息后结束

byte    SSH_MSG_NEWKEYS

参考地址:

ssh 协议:SSH 传输层协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值