GM/T 0009-2023 SM2密码算法使用规范

GM/T 0009-2023 SM2 cryptography algorithm application specification

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

基本信息

标准号
GM/T 0009-2023
标准类型
行业标准-密码
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
-
发布日期
2023-12-04
实施日期
2024-06-01
发布单位/组织
国家密码管理局
归口单位
密码行业标准化技术委员会
适用范围
本文件定义了SM2密码算法的使用方法,也定义了相关的数据格式。本文件适用于SM2密码算法的使用,也适用于支持SM2密码算法的设备和系统的研发和检测。

发布历史

研制信息

起草单位:
北京海泰方圆科技股份有限公司、北京信安世纪科技股份有限公司、北京小雷科技有限公司、中电科网络安全科技股份有限公司、北京国脉信安科技有限公司、无锡江南信息安全工程技术中心、兴唐通信科技有限公司、山东得安信息技术有限公司、格尔软件股份有限公司、山东大学
起草人:
刘平、蒋红宇、柳增寿、曾宇波、袁峰、李元正、徐强、谭武征、孔凡玉、王妮娜、汪宗斌、安晓江、罗俊、徐明翼、郑强、马洪富
出版信息:
页数:9页 | 字数:19 千字 | 开本: 大16开

内容描述

ICS35030

CCSL.80

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

GM/T0009—2023

代替GM/T0009—2012

SM2密码算法使用规范

SM2cryptographyalgorithmapplicationspecification

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

国家密码管理局发布

GM/T0009—2023

目次

前言

…………………………Ⅲ

范围

1………………………1

规范性引用文件

2…………………………1

术语和定义

3………………1

缩略语

4……………………1

密钥对

5SM2………………1

数据转换

6…………………2

数据格式

7…………………3

预处理

8……………………4

计算过程

9…………………5

用户身份标识的默认值

10ID……………7

GM/T0009—2023

SM2密码算法使用规范

1范围

本文件定义了密码算法的使用方法也定义了相关的数据格式

SM2,。

本文件适用于密码算法的使用也适用于支持密码算法的设备和系统的研发和检测

SM2,SM2。

2规范性引用文件

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

。,

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

,;,()

本文件

信息安全技术密码杂凑算法

GB/T32905—2016SM3

信息安全技术椭圆曲线公钥密码算法第部分总则

GB/T32918.1—2016SM21:

信息安全技术椭圆曲线公钥密码算法第部分数字签名算法

GB/T32918.2—2016SM22:

信息安全技术椭圆曲线公钥密码算法第部分密钥交换协议

GB/T32918.3—2016SM23:

信息安全技术椭圆曲线公钥密码算法第部分共钥加密算法

GB/T32918.4—2016SM24:

信息安全技术椭圆曲线公钥密码算法第部分参数定义

GB/T32918.5—2017SM25:

密码应用标识规范

GM/T0006

密码术语

GM/Z4001

3术语和定义

界定的术语和定义适用于本文件

GM/Z4001。

4缩略语

下列缩略语适用于本文件

电码本模式

ECB(ElectronicCodebook)

椭圆曲线密码算法

ECC(EllipticCurveCryptography)

用户身份标识

ID(Identity)

5SM2密钥对

51SM2私钥

.

私钥是大于或等于且小于n的整数n为算法的阶其值见

SM21-1(SM2,GB/T32918.5—

简记为

2017),d。

52SM2公钥

.

公钥是曲线上的一个点由横坐标和纵坐标两个分量来表示记为简记为公

SM2SM2,,(x,y),Q。

1

GM/T0009—2023

钥值由其对应的私钥与进行点乘计算得到为椭圆曲线的基点的取值见

dG(GSM2,G

GB/T32918.5—2017)。

6数据转换

61位串到8位字节串的转换

.

位串长度若不是的整数倍应先在它的左边补以保证它的长度为的倍数然后构造位字

8,0,8,8

节串转换过程如下

,:

输入一个长度为的位串

:blenB。

输出一个长度为的字节串其中的取值为的整数部分

:mlenM,mlen(blen+7)/8。

动作将位串转换到位字节串采用如下方法

:B=B0B1…Bblen-18M=M0M1…Mmlen-1:

从i设置iiii

0≤≤mlen-1,:M=Bblen-8-8(mlen-1-)Bblen-7-8(mlen-1-)…Bblen-1-8(mlen-1-)。

对于最左边位设置为右边设置为其中表示模运算

M0,8-blen%80,B0B1…B7+blen-8mlen,%。

输出

M。

628位字节串到位串的转换

.

位字节串到位串转换过程如下

8:

输入一个长度为的位字节串

:mlen8M。

输出一个长度为的位串

:blen=(8*mlen)B。

动作将位字节串转换到位串采用如下方法

:8M=M0M1…Mmlen-1B=B0B1…Bblen-1:

从i设置iiii

0≤≤mlen-1,:B8B8+1…B8+7=M。

输出

B。

63整数到8位字节串的转换

.

一个整数转换为位字节串基本方法是将其先使用二进制表达然后把结果位串再转换为位字

8,,8

节串以下是转换流程

。:

输入一个非负整数x期望的位字节串长度基本限制为8(mlen)x

:,8mlen。:2>。

输出一个长度为的位字节串

:mlen8M。

动作将基于8的x值xx8(mlen-1)x8(mlen-2)x8x转换为一个位

:2=256=mlen-12+mlen-22+…+12+08

推荐标准