路径: 主页 > GB/T > 第208页 > GB/T 38636-2020
| 标准编号 | GB/T 38636-2020 (GB/T38636-2020) | | 中文名称 | 信息安全技术 传输层密码协议(TLCP) | | 英文名称 | Information security technology - Transport layer cryptography protocol (TLCP) | | 行业 | 国家标准 (推荐) | | 中标分类 | L80 | | 国际标准分类 | 35.040 | | 字数估计 | 34,357 | | 发布日期 | 2020-04-28 | | 实施日期 | 2020-11-01 | | 引用标准 | GB/T 20518; GB/T 35275; GB/T 35276 | | 发布机构 | 国家市场监督管理总局、中国国家标准化管理委员会 | | 范围 | 本标准规定了传输层密码协议,包括记录层协议、握手协议族和密钥计算。本标准适用于传输层密码协议相关产品(如SSL VPN网关、浏览器等)的研制,也可用于指导传输层密码协议相关产品的检测、管理和使用。 |
GB/T 38636-2020: 信息安全技术 传输层密码协议(TLCP)
GB/T 38636-2020 英文名称: Information security technology -- Transport layer cryptography protocol (TLCP)
1 范围
本标准规定了传输层密码协议,包括记录层协议、握手协议族和密钥计算。
本标准适用于传输层密码协议相关产品(如SSLVPN网关、浏览器等)的研制,也可用于指导传输
层密码协议相关产品的检测、管理和使用。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 20518 信息安全技术 公钥基础设施 数字证书格式规范
GB/T 35275 信息安全技术 SM2密码算法加密签名消息语法规范
GB/T 35276 信息安全技术 SM2密码算法使用规范
3 术语和定义
下列术语和定义适用于本文件。
3.1
数字证书
由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信
息的一种数据结构。
注:按类别可分为个人证书、机构证书和设备证书,按用途可分为签名证书和加密证书。
3.2
IBC算法
一种能以任意标识作为公钥,不需要使用数字证书证明公钥的非对称密码算法。
3.3
IBC标识
表示实体身份或属性的字符串。
3.4
IBC公共参数
包含了IBC密钥管理中心的名称、运算曲线、标识编码方式和密钥生成算法等公开参数信息。
注:参数信息用于将实体标识转换为公开密钥。
3.5
初始化向量/值
在密码变换中,为增加安全性或使密码设备同步而引入的用作数据变换的起始数据。
4 符号和缩略语
4.1 符号
下列符号适用于本文件。
+:串联。
⊕:异或运算。
0s:包含s个‘0’比特的比特串。
CIPHK(X):对于密钥为K,分组为X 的分组密文的输出。
GCTRK(ICB,X):对于比特串为X,初始技术分组为ICB,密钥为K的GCTR函数的输出。
GHASHH(X):对于杂凑密钥为H,比特串为H的GHASH的输出。
HMAC(X,Y):以X 为密钥对Y 进行密码杂凑运算。
incs(X):比特串X 的最右边s比特的递增输出。
int(X):比特串X 的整数表示。
len(X):比特串X 的长度。
LSBs(X):比特串X 的最右段的s位比特串。
MSBs(X):比特串X 的最左端的s位比特串。
X||Y:比特串X 与比特串Y 的连接。
A:附加可鉴别的数据。
C:密文。
H:杂凑子密钥。
K:分组密钥。
P:明文。
R:算法中用于分组乘法运算的常数。
T:鉴别标签。
t:鉴别标签的长度。
4.2 缩略语
下列缩略语适用于本文件。
AEAD:带额外数据的认证加密
ADD:附加鉴别数据
CBC:密码分组链接工作模式
CTR:计数器
DN:识别名
GCM:Galois计数器模式
HMAC:采用杂凑算法计算的消息验证码
IBC:标识密码算法
ICB:初始计数器分组
IV:初始向量
LSB:最低端比特
MSB:最高端比特
TLCP:传输层密码协议
XOR:异或
5 密码算法和密钥种类
5.1 概述
TLCP是利用密码技术,为两个应用程序之间提供保密性和数据的完整性。协议用到的密码算法
包含非对称密码算法、分组密码算法、密码杂凑算法、数据扩展函数和伪随机函数,协议用到的密钥种类包含服务端密钥、客户端密钥、预主密钥、主密钥和工作密钥。
5.2 密码算法
5.2.1 非对称密码算法
用于身份鉴别、数字签名、密钥交换等。
5.2.2 分组密码算法
用于密钥交换数据的加密保护和报文数据的加密保护。采用的工作模式应为GCM或CBC模式。
5.2.3 密码杂凑算法
用于对称密钥生成和完整性校验。
5.2.4 数据扩展函数
5.2.5 伪随机函数PRF
5.3 密钥种类
5.3.1 概述
采用非对称密码算法进行身份鉴别和密钥交换,身份鉴别通过后协商预主密钥,双方各自计算主密
钥,进而推导出工作密钥。使用工作密钥进行加解密和完整性校验。
5.3.2 服务端密钥
服务端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对,其中签名密钥用于握手过
程中服务端身份鉴别,加密密钥对用于预主密钥的协商。
5.3.3 客户端密钥
客户端密钥为非对称密码算法的密钥对,包括签名密钥对和加密密钥对,其中签名密钥用于握手过
程中客户端身份鉴别,加密密钥对用于预主密钥的协商。
5.3.4 预主密钥
预主密钥(pre_master_secret)是双方协商生成的密钥素材,用于生成主密钥。
5.3.5 主密钥
主密钥(master_secret)由预主密钥、客户端随机数、服务端随机数、常量字符串,经计算生成的
48字节密钥素材,用于生成工作密钥。
5.3.6 工作密钥
工作密钥包括数据加密密钥和校验密钥。其中数据加密密钥用于数据的加密和解密,校验密钥用
于数据的完整性计算和校验。发送方使用的工作密钥称为写密钥,接收方使用的工作密钥称为读密钥。
6 协议
6.1 概述
TLCP包括记录层协议和握手协议族,握手协议族包含密码规格变更协议、报警协议及握手协议。
6.2 数据类型定义
6.2.1 基本数据类型
定义了六种基本数据类型,分别为opaque、uint8、uint16、uint24、uint32、uint64。所有类型都以网
络字节顺序表示,最小数据的大小是一个8位字节。
6.2.2 向量
向量(Vectors)是给定类型的数据序列。向量分为两种:定长和变长。定长向量以[x]来表示;变长
向量以< x.y >来表示,其中x代表下限,y代表上限,如果只需表达上限时,用< y >表示。所有向量的长
度都以字节为单位。变长向量首部表示向量实际长度,其首部大小为能够容纳变长向量最大长度的最
小字节数。
6.2.3 枚举类型
枚举(Enumerateds)是一系列特定值的字段集合,通常每个字段都包括一个名称和值。如果包含
一个未命名的值,这个值表示指定的最大值。如果只包含了名称而不定义值,只能用来指代状态值,不
能在实际编码中使用。例如,enum{red(0),green(1),(255)}color。枚举变量大小为能够容纳最大枚
举值的最小字节数。
6.2.4 结构类型
结构类型(ConstructedTypes)用struct来定义,与C语言的struct语法类似。struct中的字段按
照先后顺序串连起来进行编码。如果一个struct包含于另一个struct中,则可以省略该struct的名字。
6.2.5 变体类型
变体(Variants)类型用select、case来定义,用于定义依赖外部信息而变化的结构,类似于C语言中
的union或ASN.1的CHOICE。
6.3 记录层协议
6.3.1 概述
记录层协议是分层次的,每一层都包括长度字段、描述字段和内容字段。记录层协议接收将要被传
输的消息,将数据分块、压缩(可选)、计算HMAC、加密,然后传输。接收到的数据经过解密、验证、解压缩(可选)、重新封装然后传送给高层应用。
记录层协议包括:握手、报警、密码规格变更等类型。为了支持协议的扩展,记录层协议可支持其他
的记录类型。任何新的记录类型都应在针对上述类型分配的内容类型值之外去分配。如果接收到一个不能识别的记......
|