GM/T 0010-2023 SM2密码算法加密签名消息语法规范

GM/T 0010-2023 SM2 cryptography message syntax specification

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

基本信息

标准号
GM/T 0010-2023
相关服务
标准类型
行业标准-密码
标准状态
现行
中国标准分类号(CCS)
国际标准分类号(ICS)
-
发布日期
2023-12-04
实施日期
2024-06-01
发布单位/组织
国家密码管理局
归口单位
密码行业标准化技术委员会
适用范围
本文件规定了使用SM2密码算法的加密签名消息语法。本文件适用于使用SM2密码算法进行加密和签名操作时对操作结果的标准化封装。

发布历史

研制信息

起草单位:
格尔软件股份有限公司、北京海泰方圆科技有限公司、北京数字认证股份有限公司、广东省电子商务认证有限公司、无锡江南信息安全工程技术中心、中电科网络安全科技股份有限公司、北京信安世纪科技股份有限公司、北京国脉信安科技有限公司、上海市数字证书认证中心有限公司、兴唐通信科技有限公司、山东得安信息技术有限公司、山东大学、深圳奥联信息安全技术有限公司、智巡密码(上海)检测技术有限公司、上海颐东网络信息有限公司、国家信息安全工程技术研究中心
起草人:
刘平、郑强、谭武征、柳增寿、李述胜、赵永省、赵敏、梁宁宁、汪宗斌、袁锋、孔凡玉、程朝辉、韩玮、马洪富、蒋红宇、王妮娜、刘伟、徐强、李元正、刘承、夏东山
出版信息:
页数:26页 | 字数:50 千字 | 开本: 大16开

内容描述

ICS35030

CCSL.80

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

GM/T0010—2023

代替GM/T0010—2012

SM2密码算法加密签名消息语法规范

SM2cryptographymessagesyntaxspecification

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

国家密码管理局发布

GM/T0010—2023

目次

前言

…………………………Ⅲ

范围

1………………………1

规范性引用文件

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

术语和定义

3………………1

缩略语

4……………………1

定义

5OID…………………1

基本类型定义

6……………2

6.1CertificateRevocationLists…………2

6.2ContentEncryptionAlgorithmIdentifier…………2

6.3DigestAlgorithmIdentifier…………2

6.4DigestEncryptionAlgorithmIdentifier……………2

6.5Certificate……………2

6.6IssuerAndSerialNumber……………2

6.7KeyEncryptionAlgorithmIdentifier………………3

6.8Version………………3

6.9ContentInfo…………………………3

数据类型

7Data……………3

签名数据类型

8signedData………………3

类型

8.1signedData……………………3

类型

8.2signerInfo………………………4

数字信封数据类型

9envelopedData……………………5

类型

9.1envelopedData…………………5

类型

9.2recipientInfo……………………5

签名及数字信封数据类型

10signedAndEnvelopedData………………6

加密数据类型

11encryptedData…………7

密钥协商类型

12keyAgreementInfo……………………7

附录资料性示例

A()……………………8

附录规范性隐式证书的加密签名消息语法

B()SM2…………………20

附录规范性密钥格式

C()SM2…………24

GM/T0010—2023

SM2密码算法加密签名消息语法规范

1范围

本文件规定了使用密码算法的加密签名消息语法

SM2。

本文件适用于使用密码算法进行加密和签名操作时对操作结果的标准化封装

SM2。

2规范性引用文件

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

。,

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

,;,()

本文件

信息安全技术术语

GB/T25069

密码应用标识规范

GM/T0006

密码算法使用规范

GM/T0009SM2

数字证书格式

GM/T0015

密码术语

GM/Z4001

3术语和定义

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

GB/T25069GM/Z4001。

31

.

隐式证书implicitcertificate

包含用户标识公钥还原数据和签发者标识信息但不显式包含证书认证机构的数字签名的数

、(CA)

字证书

注用户关联的实际公钥由椭圆曲线系统参数的公钥隐式证书中相关的用户信息和公钥还原数据计算

:、CA、

得出

4缩略语

下列缩略语适用于本文件

证书认证机构

CA:(CertificationAuthority)

对象标识符

OID:(ObjectIdentity)

5OID定义

本文件对个对象

9data,signedData,envelopedData,signedAndEnvelopedData,encryptedData,

和的标识符进行

keyAgreementInfo,imcSignedData,imcEnvelopedDataimcSignedAndEnvelopedData

了定义详见表

,1。

1

GM/T0010—2023

表1对象标识符

对象标识符对象标识符定义

OID

密码算法加密签名消息语法规范

0.2SM2

数据类型

0.2.1

签名数据类型

0.2.2

数字信封数据类型

0.2.3

签名及数字信封数据类型

0.2.4

加密数据类型

0.2.5

密钥协商类型

0.2.6

隐式证书签名数据类型

0.2.7

隐式证书数字信封数据类型

0.2.8

隐式证书签名及数字信封数据类型

0.2.9

6基本类型定义

61CertificateRevocationLists

.

类型标明一个证书撤销列表的集合

CertificateRevocationLists。

CertificateRevocationLists∷=SETOFCertificateRevocationList

62ContentEncryptionAlgorithmIdentifier

.

类型标明一个数据加密算法其应符合

ContentEncryptionAlgorithmIdentifier。OIDGM/T0006。

ContentEncryptionAlgorithmIdentifier∷=AlgorithmIdentifier

63DigestAlgorithmIdentifier

.

类型标明一个消息摘要算法本文件为密码算法其应符合

DigestAlgorithmIdentifier,SM3,OID

GM/T0006。

DigestAlgorithmIdentifier∷=AlgorithmIdentifier

64DigestEncryptionAlgorithmIdentifier

.

类型标明一个签名算法本文件为签名算法其应

DigestEncryptionAlgorithmIdentifier,SM2,OID

符合

GM/T0006。

DigestEncryptionAlgorithmIdentifier∷=AlgorithmIdentifier

65Certificate

.

类型指定一个符合格式的证书它表示集合足以包含从可识别的根或

CertificateGM/T0015。“”

顶级到所有签名者的证书链

“CA”。

Certificates∷=SETOFCertificate

66IssuerAndSerialNumber

.

类型标明一个证书颁发者可识别名和颁发者确定的证书序列号可据此

IssuerAndSerialNumber,

2

GM/T0010—2023

确定一份证书和与此证书对应的实体及公钥

IssuerAndSerialNumber∷=SEQUENCE{

issuerName,

serialNumberCertificateSerialNumber

}

67KeyEncryptionAlgorithmIdentifier

.

类型标明加密对称密钥的加密算法

KeyEncryptionAlgorithmIdentifier。

KeyEncryptionAlgorithmIdentifier∷=AlgorithmIdentifier

68Version

.

类型标明语法版本号

Version。

Version∷=INTEGER(1)

69ContentInfo

.

类型标明内容交换通用语法结构内容交换的通用语法结构定义如下

ContentInfo,:

ContentInfo∷=SEQUENCE{

contentTypeContentType,

content[0]EXPLICITANYDEFINEDBYcontentTypeOPTIONAL

}

ContentType∷=OBJECTIDENTIFIER

其中

:

内容类型是一个对象标识符其定义见第章

ContentType,5。

内容可选

content,。

7数据类型Data

数据类型结构定义如下

Data:

Data∷=OCTETSTRING

数据类型表示任意的字节串

Data。

8签名数据类型signedData

81signedData类型

.

数据类型由任意类型的数据和至少一个签名者的签名值组成任意类型的数据能同时

signedData。

被任意数量的签名者签名签名数据类型示例见附录中的隐式证书的签名数据类型应符合附

。AA.1,

录中的

BB.1。

数据类型结构定义如下

signedData:

SignedData∷=SEQUENCE{

versionVersion,

digestAlgorithmsDigestAlgorithmIdentifiers,

contentInfoContentInfo,

certificates[0]IMPLICITCertificatesOPTIONAL,

crls[1]IMPLICITCertificateRevocationListsOPTIONAL,

3

GM/T0010—2023

signerInfosSignerInfos

}

DigestAlgorithmIdentifiers∷=SETOFDigestAlgorithmIdentifier

SignerInfos∷=SETOFSignerInfo

结构中各项含义见表

2。

表2signedData数据类型

字段名称数据类型含义

版本号此处取值为

versionVersion,1

消息摘要算法标识符的集合

digestAlgorithmsDigestAlgorithmIdentifiers

数据内容

contentInfoContentInfo

证书的集合

certificatesCertificates

证书撤销列表的集合

crlsCertificateRevocationLists

签名者信息的集合

signInfosSignerInfos

82signerInfo类型

.

类型结构定义如下

signerInfo:

SignerInfo∷=SEQUENCE{

versionVersion,

issuerAndSerialNumberIssuerAndSerialNumber,

digestAlgorithmDigestAlgorithmIdentifier,

authenticatedAttributes[0]IMPLICITAttributesOPTIONAL,

digestEncryptionAlgorithmDigestEncryptionAlgorithmIdentifier,

encryptedDigestEncryptedDigest,

unauthenticatedAttributes[1]IMPLICITAttributesOPTIONAL

}

EncryptedDigest∷=OCTETSTRING

结构中各项含义见表

3。

表3SignerInfo数据类型

字段名称数据类型含义

版本号此处取值为

VersionVersion,1

一个证书颁发者可识别名和颁发者确定的证书序列

issuerAndSerialNumberIssuerAndSerialNumber号可据此确定一份证书和与此证书对应的实体及公钥

,

对内容进行摘要计算的消息摘要算法本文件采用

,

digestAlgorithmDigestAlgorithmidentifier密码算法

SM3

是经由签名者签名的属性的集合该域可选如果该

,。

域存在该域中摘要的计算方法是对原文进行摘要计

authenticatedAttributesAttributes,

算结果

椭圆曲线数字签名算法标识符

digestEncryptionAlgorithmDigestEncryptionAlgorithmIdentifierSM2

值是用签名者私钥进行签名的结

SM2Signature,

encryptedDigestOCTETSTRING果其定义应遵循

,GM/T0009

4

GM/T0010—2023

9数字信封数据类型envelopedData

91envelopedData类型

.

数字信封数据类型由加密数据和至少一个接收者的数据加密密钥的密文组成其

envelopedData。

中加密数据是用数据加密密钥加密的数据加密密钥是用接收者的公钥加密的

,,。

数字信封数据类型示例见隐式证书数字信封数据类型应符合

A.2,B.2。

该类型用于为接收者的或三种类型的数据做数字信封

data、digestedDatasignedData。

数据类型结构定义如下

envelopedData:

EnvelopedData∷=SEQUENCE{

versionVersion,

recipientInfosRecipientInfos,

encryptedContentInfoEncryptedContentInfo

}

RecipientInfos∷=SETOFRecipientInfo

结构中各项含义见表

4。

表4EnvelopedData数据类型

字段名称数据类型含义

版本号此处取值为

versionVersion,1

接收者信息的集合至少要有一个接收者

recipientInfosRecipientInfos,

被加密的内容

encryptedContentInfoEncryptedContentInfo

EncryptedContentInfo∷=SEQUENCE{

contentTypeContentType,

contentEncryptionAlgorithmContentEncryptionAlgorithmIdentifier,

encryptedContent[0]IMPLICITEncryptedContentOPTIONAL,

sharedInfo1[1]IMPLICITOCTETSTRINGOPTIONAL,

sharedInfo2[2]IMPLICITOCTETSTRINGOPTIONAL

}

EncryptedContent∷=OCTETSTRING

结构中各项含义见表

5。

表5EncryptedContentInfo数据类型

字段名称数据类型含义

内容的类型

contenTypeContentType

内容加密算法和相应的参数

contentEncryptionAlgorithmContentEncryptionAlgorithmIdentifier()

内容加密的结果可选

encryptedContentEncryptedContent,

协商好的共享信息可选

sharedInfo1OCTETSTRING,

协商好的共享信息可选

sharedInfo2OCTETSTRING,

92recipientInfo类型

.

接收者信息用类型表示

recipientInfo。

定制服务

    推荐标准