GM/T 0129-2023 SSH 密码协议规范

GM/T 0129-2023 Secure shell cryptography protocol specification

行业标准-密码 中文简体 现行 页数:28页 | 格式:PDF

基本信息

标准号
GM/T 0129-2023
标准类型
行业标准-密码
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
-
发布日期
2023-12-04
实施日期
2024-06-01
发布单位/组织
国家密码管理局
归口单位
密码行业标准化技术委员会
适用范围
本文件规定了SSH 的安全交互密码协议,规定了交互通道的加密传输协议、鉴别协议与连接协议,规定了密码算法在协议中的使用方法。本文件适用于SSH 服务端和SSH 客户端产品的研发和检测。

发布历史

研制信息

起草单位:
北京小雷科技有限公司、北京海泰方圆科技股份有限公司、北京数字认证股份有限公司、格尔软件股份有限公司、中电科网络安全科技股份有限公司、兴唐通信科技有限公司、北京信安世纪科技股份有限公司、长春吉大正元信息技术股份有限公司、北京数盾信息科技有限公司
起草人:
曾宇波、柳增寿、蒋红宇、傅大鹏、郑强、罗俊、王妮娜、汪宗斌、赵丽丽、张国庆
出版信息:
页数:28页 | 字数:38 千字 | 开本: 大16开

内容描述

ICS35.030

CCSL80

中华人民共和国密码行业标准

GM/T0129—2023

SSH密码协议规范

Secureshellcryptographyprotocolspecification

2023⁃12⁃04发布2024⁃06⁃01实施

国家密码管理局发布

GM/T0129—2023

目次

前言··························································································································Ⅲ

引言··························································································································Ⅳ

1范围·······················································································································1

2规范性引用文件········································································································1

3术语和定义··············································································································1

4缩略语····················································································································1

5协议框架·················································································································1

5.1协议概述···········································································································1

5.2传输层协议········································································································2

5.3鉴别协议···········································································································2

5.4连接协议···········································································································2

6密码算法和密钥种类··································································································2

6.1密码算法···········································································································2

6.2密钥种类···········································································································2

7数据类型定义···········································································································3

7.1算法标识···········································································································3

7.2基本数据类型·····································································································3

8传输层协议··············································································································3

8.1协议概述···········································································································3

8.2协议流程···········································································································4

8.3协议版本···········································································································4

8.4数据包··············································································································4

8.57

密钥协商···········································································································

8.6服务请求···········································································································9

8.7断开连接···········································································································9

9鉴别协议···············································································································10

9.1协议概述··········································································································10

9.2协议流程··········································································································11

9.3数据包·············································································································11

9.4基于口令的鉴别方法···························································································13

9.5基于非对称密钥的鉴别方法··················································································13

9.6基于数字证书的鉴别方法·····················································································14

GM/T0129—2023

10连接协议··············································································································15

10.1协议概述········································································································15

10.2连接信道········································································································15

10.3数据包···········································································································16

参考文献····················································································································18

GM/T0129—2023

前言

本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规

定起草。

请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。

本文件由密码行业标准化技术委员会提出并归口。

本文件起草单位:北京小雷科技有限公司、北京海泰方圆科技股份有限公司、北京数字认证股份有

限公司、格尔软件股份有限公司、中电科网络安全科技股份有限公司、兴唐通信科技有限公司、北京信

安世纪科技股份有限公司、长春吉大正元信息技术股份有限公司、北京数盾信息科技有限公司。

本文件主要起草人:曾宇波、柳增寿、蒋红宇、傅大鹏、郑强、罗俊、王妮娜、汪宗斌、赵丽丽、张国庆。

GM/T0129—2023

引言

本文件的协议内容参考TheSecureShell安全协议(RFC4251,RFC4252,RFC4253,RFC4254),

按照我国相关密码政策和法规,基于我国密码技术体系,使用SM2、SM3、SM4密码算法和数字证书机

制形成SSH传输层协议、鉴别协议和连接协议。

GM/T0129—2023

SSH密码协议规范

1范围

本文件规定了SSH的安全交互密码协议,规定了交互通道的加密传输协议、鉴别协议与连接协

议,规定了密码算法在协议中的使用方法。

本文件适用于SSH服务端和SSH客户端产品的研发和检测。

2规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文

件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于

本文件。

GB/T15852.1信息技术安全技术消息鉴别码第1部分:采用分组密码的机制

GB/T15852.2信息技术安全技术消息鉴别码第2部分:采用专用杂凑函数的机制

GB/T33560信息安全技术密码应用标识规范

GB/T35275信息安全技术SM2密码算法加密签名消息语法规范

GB/T35276信息安全技术SM2密码算法使用规范

GM/T0015基于SM2密码算法的数字证书格式规范

GM/Z4001密码术语

3术语和定义

GM/Z4001界定的术语和定义适用于本文件。

4缩略语

下列缩略语适用于本文件。

CR:回车(Carriage⁃Return)

LF:换行(Line⁃Feed)

SP:空格(Space)

SSH:安全交互(SecureShell)

5协议框架

5.1协议概述

SSH密码协议是由传输层协议、鉴别协议和连接协议组成的协议族,用于在不安全的网络上进行

安全远程登录和安全网络服务。传输层协议、鉴别协议也可和其他服务共同组成sftp、scp等安全应用

服务。

SSH密码协议的建立过程中,首先由传输层协议建立安全的通信信道;然后在此安全通信信道上

1

GM/T0129—2023

由鉴别协议鉴别客户端和服务端的身份;最后在鉴别完成后,由连接协议在安全通信信道上建立对应

的SSH服务。

5.2传输层协议

传输层协议提供服务端鉴别、机密性和完整性。传输层协议可运行在一个TCP连接上,也可被用

在其他可靠的数据流上。

5.3鉴别协议

鉴别协议用于服务端鉴别客户端用户身份。鉴别协议运行在传输层协议上。

5.4连接协议

连接协议用于将加密通道复用为若干逻辑信道。连接协议运行在鉴别协议上。连接协议可被用

于提供各种网络服务,包括交互环境(shell)、端口转发和X11连接。

6密码算法和密钥种类

6.1密码算法

6.1.1非对称密码算法

使用的非对称密码算法为SM2算法,用于身份鉴别、密钥交换。

6.1.2对称密码算法

使用的对称密码算法为分组密码算法SM4,用于密钥交换数据的加密保护和报文数据的加密保

护。

6.1.3密码杂凑算法

使用的密码杂凑算法为SM3算法,用于完整性校验。

6.2密钥种类

6.2.1服务端密钥

服务端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对。其中签名密钥对由服务

端自身密码模块产生。

服务端公钥可使用数字证书表示。使用数字证书时,加密密钥对应通过CA认证中心向密钥管理

中心(KMC)申请。用于在密钥交换过程中鉴别服务端身份。

6.2.2客户端密钥

客户端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对。其中签名密钥对由客户

端自身密码模块产生。

客户端公钥可使用数字证书表示。使用数字证书时,加密密钥对应通过CA认证中心向KMC申

请。用于在鉴别过程中鉴别客户端身份。

2

GM/T0129—2023

6.2.3传输层会话密钥

传输层会话密钥为对称密码算法密钥。密钥根据传输层协议由服务端和客户端共同生成。

7数据类型定义

7.1算法标识

本文件中使用的算法标识应符合GB/T33560的规定。

7.2基本数据类型

本文件中的uint32和uint64均为高位字节在前(Big⁃Endian)方式存储和交换。基本数据类型定

义见表1。

表1基本数据类型

类型名称描述定义

int8有符号8位整数1个字节

uint8无符号8位整数1个字节

uint32无符号32位整数4个字节

uint64无符号64位整数8个字节

bool布尔类型,取值为TRUE或FALSE1为TRUE,0为FALSE

byte字节类型,无符号8位整数1个字节

任意长度的二进制字符串。前4个字节为uint32,表示字符串的长

string字节串

度,当为0时表示空字符串

mpint表示二进制补码格式的多精度整数,存储为一个字符串字节串

name⁃list一个包含以逗号分隔的名称列表的字符串。字符编码为ASCII字节串

8传输层协议

8.1协议概述

传输层协议运行在TCP/IP协议之上,或者其他可靠的数据流之上。协议可被用作多个安全网络

服务的基础。传输层协议提供加密、服务端鉴别和完整性保护,也可提供压缩。传输层的密钥交换方

法、密码算法、消息鉴别算法和密码杂凑算法都通过协商完成。

本协议的鉴别是基于服务端的,不执行客户端用户鉴别,用户的鉴别由鉴别协议执行。

传输层的连接由客户端发起。

传输层使用的消息编号为:

SSH_MSG_DISCONNECT1;

SSH_MSG_SERVICE_REQUEST5;

SSH_MSG_SERVICE_ACCEPT6;

3

GM/T0129—2023

SSH_MSG_KEXINIT20;

SSH_MSG_NEWKEYS21;

SSH_MSG_KEX_REQUEST200;

SSH_MSG_KEX_REPLY201;

SSH_MSG_KEX202。

8.2协议流程

传输层协议的协议流程见图1。

客户端服务端

版本标识字符串->

<-版本标识字符串

SSH_MSG_KEXINIT->

<-SSH_MSG_KEXINIT

SSH_MSG_KEX_REQUEST->

<-SSH_MSG_KEX_REPLY

SSH_MSG_KEX->

SSH_MSG_NEWKEYS->

<-SSH_MSG_NEWKEYS

SSH_MSG_SERVICE_REQUEST->

<-SSH_MSG_SERVICE_ACCEPT

图1传输层协议流程

8.3协议版本

本文件定义的传输层协议的版本号为1.0。

当客户端-服务端的网络连接建立后,双方都应发送一个版本标识字符串。版本标识字符串的格

式为:

CSSH⁃<

定制服务

    推荐标准