千年之恋
RFC 4251 SSH协议架构

RFC 4251 SSH协议架构

RFC 4251 SSH协议架构

协议架构

SSH包含几个主要部分

  • 传输层协议:提供服务认证,保证保密性和消息完整,还可用于压缩内容。
  • 用户认证协议:用于实现从客户端到服务端的认证。
  • 连接协议:多路复用加密通道

Host Keys

每个服务器都应该有一个Host Key。一个服务器可以拥有多个Host Key。多个服务器可以共享同一个Host Key。Host Key是用来验证客户端连接的是否是真正的服务端。客户端必须要能够验证服务器的公共Host Key。

有两种方式实现客户端服务端信任模型:

  • 客户端在本地数据库存储每个host name 和对应服务器的公共Host Key,无需第三方参与。
  • 客户端信任证书机构CA,所有由CA机构颁发的证书客户端都信任。

章节4.2 扩展性

章节4.3 策略问题

章节4.4 安全属性

章节4.5 本地化和字符集支持

4.2-4.5都是说的若想扩展协议需要注意的问题

数据类型定义

  • byte:8位
  • boolean:所有非0值翻译为true,0翻译为false
  • uint32:32位无符号整型
  • uint64:64位无符号整型
  • string:字符串,一个uint32类型表示字符长度,后面接字符串内容。比如testing的表示形式 00 00 00 07 t e s t i n g
  • mpint:多精度整数(multiple precision integers )。一个uint32类型表示字符长度,后面接数字。

例子:

value (hex) representation (hex)
0 00 00 00 00
9a378f9b2e332a7 00 00 00 08 09 a3 78 f9 b2 e3 32 a7
80 00 00 00 02 00 80
-1234 00 00 00 02 ed cc
-deadbeef 00 00 00 05 ff 21 52 41 11
  • name-list:名称列表,四字节长度,然后接具体名称列表。名称之间用英文逗号隔开。

例子:

value representation (hex)
(), the empty name-list 00 00 00 00
(“zlib”) 00 00 00 04 7a 6c 69 62
(“zlib,none”) 00 00 00 09 7a 6c 69 62 2c 6e 6f 6e 65

章节6 自定义算法命名规则

章节7 方法数字定义规则(RFC 4250)

章节8 IANA考虑的部分

章节9 安全考虑

章节9.1 伪随机数生成

章节9.2 控制字符过滤

章节9.3 传输

章节9.3.1 保密性

章节9.3.2 数据完整性

章节9.3.3 重放攻击(replay)

章节9.3.4 中间人攻击

章节9.3.5 拒绝服务攻击

章节9.3.6 转换频道

章节9.3.7 转发保密性

章节9.3.8 密钥交换方法顺序

章节9.3.9 传输报文解析

章节9.4 认证协议

章节9.4.1 弱传输

章节9.4.2 调试消息

章节9.4.3 本地安全策略

章节9.4.4 公钥认证

章节9.4.5 密码认证

章节9.4.6 基于主机的认证(Host-Based)

章节9.5 连接协议

9.5.1 终端安全

9.5.2 代理转发

9.5.3 X11转发