文档章节

一、ssh 协议:SSH 传输层协议

开源中国首席划水狮
 开源中国首席划水狮
发布于 2016/07/12 22:33
字数 665
阅读 1K
收藏 5
ssh

行业解决方案、产品招募中!想赚钱就来传!>>>

1. 二进制协议格式

每个数据包为以下格式

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

输入图片说明

packet_length: 以字节为单位的数据包长度,不包括 'mac' 或 'packet_length' 域自身。

padding_length: 'random padding' 的长度(字节)。

random padding: 任意长度的填充,使(packet_length || padding_length || payload || random padding)的总长度是加密分组长度或 8 中较大者的倍数。最少必须有 4 字节的填充。填充应包含随机字节。填充的最大长度为 255 字节。

mac: 消息验证码。如果已经协商了消息验证,该域包含 MAC。初始时,MAC 算法必须是"none"。

2. 协议过程

1) 协议版本交换

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

SSH-protoversion-softwareversion SP comments CR LF

protoversion: 协议版本

softwareversion: 软件版本

SP: 空格

comments: 可选字符串

CR: 回车

LF: 换行

如使用同一主机上使用 OpenSSH 时,客户端发送:

输入图片说明

服务器端都会发送:

输入图片说明

2) 算法协商

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

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: 表明是否有一个猜测的密钥交换数据包跟随。

如以 OpenSSH 为例,客户端和服务器都会发送:

输入图片说明

3) 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

以 OpenSSH 为例

客户端发送:

输入图片说明

服务端响应:

输入图片说明

客户端发送 New Keys:

输入图片说明

服务端发送 New Keys:

输入图片说明

之后,数据都以加密方式传输。

4) 总体过程

输入图片说明

参考文档

http://git.oschina.net/lowkey2046/libssh/tree/master/document

开源中国首席划水狮

开源中国首席划水狮

粉丝 90
博文 47
码字总数 18257
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
5.8K
18
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
5.3K
8
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.1K
1
RESwitch

RESwitch 是 UISwitch 的开源替代品,可使用 UIAppearance 协议进行定制。 要求: Xcode 4.5 or higher Apple LLVM compiler iOS 5.0 or higher ARC...

匿名
2013/02/19
573
0
N简单CMS

N简单CMS能够让网站开发者更快速、灵活、简单的开发网站。 N简单CMS有以下特点: 更简单和自由的模板标签调用 专注于人性化的管理和操作 基于完全php5框架Kohana2.3.4开发 资源调用和消耗更低...

匿名
2013/02/26
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

【c++灵魂科普】(1) 第一部分第一章-初识c++语言

今天带来一篇灵魂科普~ 主要是认识c++语言~话不多说 走起! 【全是干货!】 第一节 c++语言简介 信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力,选...

osc_facwbzof
刚刚
0
0
谈谈AMD CPU购机心得 与 写代码的感受

序 之前用的是华硕飞行保垒。具体是几代忘记了。。I7 4代的标压CUP。 8G内存 换成了联想yoga 14s。 换电脑的原因 网卡问题,老旧的网卡争网络实在争不过别人。每次看别人网络很好,我却连不上...

osc_0m0d4mbq
1分钟前
0
0
springboot 定时任务

一、在 DemoApplycation.java 写入如下代码 package com.taven.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootA......

tavenpy
2分钟前
0
0
2020年8月中国编程语言排行榜

编程语言比例(市场份额) 工资 排名 编程语言 平均工资 中位数 最低()95% 最高(95%) 人数 百分比 1 julia 22539 22500 9000 37500 17 0.00% 2 rust 20987 18500 5371 45000 548 0.11% 3 scal...

osc_kvcz9ju6
2分钟前
0
0
北风在这里给大家拜年了!!!祝大家2020鼠年大吉!忠心祝愿❤在新的一年里:工作的朋友工作顺利,还在读书的童鞋硕果累累,学技术的伙伴技术更上一层楼!同时祝大家2020百毒不侵!😄最后:武汉...

本文分享自微信公众号 - 北风IT之路(beifengtz)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

beifengtz
01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部