[PDF] GM/T 0010-2023 - 英文版
| 标准号码 | 美元 | 购买PDF | 工期 | 标准名称(英文版) |
| GM/T 0010-2023 | 440 | GM/T 0010-2023 | 9秒内发货PDF | SM2密码算法加密签名消息语法规范 |
| 基本信息 | |
|---|---|
| 标准编号 | GM/T 0010-2023 (GM/T0010-2023) |
| 中文名称 | SM2密码算法加密签名消息语法规范 |
| 英文名称 | SM2 cryptography message syntax specification |
| 行业 | Chinese Industry Standard (推荐) |
| 中标分类 | L80 |
| 字数估计 | 29,249 |
| 发布日期 | 2023-12-04 |
| 实施日期 | 2024-06-01 |
| 发布机构 | 国家密码管理局 |
GM/T 0010-2023: SM2密码算法加密签名消息语法规范
ICS 35.030
CCSL80
中华人民共和国密码行业标准
代替GM/T 0010-2012
SM2密码算法加密签名消息语法规范
2023-12-04发布
2024-06-01实施
国家密码管理局 发 布
目次
前言 Ⅲ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 缩略语 1
5 OID定义 1
6 基本类型定义 2
6.5 Certificate 2
6.8 Version 3
6.9 ContentInfo 3
7 数据类型Data 3
8 签名数据类型signedData 3
8.1 signedData类型 3
8.2 signerInfo类型 4
9 数字信封数据类型envelopedData 5
9.1 envelopedData类型 5
9.2 recipientInfo类型 5
11 加密数据类型encryptedData 7
12 密钥协商类型keyAgreementInfo 7
附录A(资料性) 示例 8
附录B(规范性) SM2隐式证书的加密签名消息语法 20
附录C(规范性) SM2密钥格式 24
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
本文件代替GM/T 0010-2012《SM2密码算法加密签名消息语法规范》。与GM/T 0010-2012
相比,除结构调整和编辑性改动外,主要技术变化如下:
a) 增加了规范性引用文件 GB/T 25069、GM/T 0015和 GM/Z4001(见第3章,6.5),删除了
PKCS#6的引用(见2012年版的6.5);
b) 删除了术语“算法标识”和“SM2密码算法”(见2012年版的3.1和3.2),增加了术语“隐式证
书”(见3.1);
c) 增加了隐式证书相关的3个OID(见第5章);
d) 删除了对扩展证书类型的描述(见2012年版的6.5);
f) 更改了userCertificate(见第12章,2012年版的第12章);
g) 增加了规范性的附录B(见附录B)。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:格尔软件股份有限公司、北京海泰方圆科技有限公司、北京数字认证股份有限公
司、广东省电子商务认证有限公司、无锡江南信息安全工程技术中心、中电科网络安全科技股份有限公
司、北京信安世纪科技股份有限公司、北京国脉信安科技有限公司、上海市数字证书认证中心有限公司、
兴唐通信科技有限公司、山东得安信息技术有限公司、山东大学、深圳奥联信息安全技术有限公司、智巡
密码(上海)检测技术有限公司、上海颐东网络信息有限公司、国家信息安全工程技术研究中心。
本文件主要起草人:刘平、郑强、谭武征、柳增寿、李述胜、赵永省、赵敏、梁宁宁、汪宗斌、袁锋、孔凡玉、
程朝辉、韩玮、马洪富、蒋红宇、王妮娜、刘伟、徐强、李元正、刘承、夏东山。
本文件及其所代替文件的历次版本发布情况为:
---2012年首次发布为GM/T 0010-2012;
---本次为第一次修订。
SM2密码算法加密签名消息语法规范
1 范围
本文件规定了使用SM2密码算法的加密签名消息语法。
本文件适用于使用SM2密码算法进行加密和签名操作时对操作结果的标准化封装。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 25069 信息安全技术 术语
GM/T 0006 密码应用标识规范
GM/T 0009 SM2密码算法使用规范
GM/T 0015 数字证书格式
GM/Z4001 密码术语
3 术语和定义
GB/T 25069和GM/Z4001界定的术语和定义适用于本文件。
3.1
隐式证书 implicitcertificate
包含用户标识、公钥还原数据和签发者标识信息但不显式包含证书认证机构(CA)的数字签名的数
字证书。
注:用户关联的实际公钥由椭圆曲线系统参数、CA的公钥、隐式证书中相关的用户信息和公钥还原数据计算
得出。
4 缩略语
下列缩略语适用于本文件。
OID:对象标识符(ObjectIdentity)
5 OID定义
了定义,详见表1。
表1 对象标识符
对象标识符OID 对象标识符定义
6 基本类型定义
GM/T 0006。
符合GM/T 0006。
6.5 Certificate
“顶级CA”到所有签名者的证书链。
Certificates∷=SETOFCertificate
确定一份证书和与此证书对应的实体及公钥。
issuerName,
6.8 Version
Version类型标明语法版本号。
Version∷=INTEGER(1)
6.9 ContentInfo
ContentType∷= OBJECTIDENTIFIER
其中:
ContentType内容类型是一个对象标识符,其定义见第5章。
content内容,可选。
7 数据类型Data
数据类型Data结构定义如下:
Data∷= OCTETSTRING
数据类型Data表示任意的字节串。
8 签名数据类型signedData
8.1 signedData类型
signedData数据类型由任意类型的数据和至少一个签名者的签名值组成。任意类型的数据能同时
被任意数量的签名者签名。签名数据类型示例见附录A中的A.1,隐式证书的签名数据类型应符合附
录B中的B.1。
signedData数据类型结构定义如下:
SignedData∷=SEQUENCE{
SignerInfos∷=SETOFSignerInfo
结构中各项含义见表2。
表2 signedData数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为1
contentInfo ContentInfo 数据内容
certificates Certificates 证书的集合
signInfos SignerInfos 签名者信息的集合
8.2 signerInfo类型
signerInfo类型结构定义如下:
SignerInfo∷=SEQUENCE{
结构中各项含义见表3。
表3 SignerInfo数据类型
字段名称 数据类型 含义
Version Version 版本号,此处取值为1
一个证书颁发者可识别名和颁发者确定的证书序列
号,可据此确定一份证书和与此证书对应的实体及公钥
对内容进行摘要计算的消息摘要算法,本文件采用
SM3密码算法
是经由签名者签名的属性的集合,该域可选。如果该
域存在,该域中摘要的计算方法是对原文进行摘要计
算结果
encryptedDigest OCTETSTRING
值是 SM2Signature,用签名者私钥进行签名的结
果,其定义应遵循GM/T 0009
9 数字信封数据类型envelopedData
9.1 envelopedData类型
数字信封envelopedData数据类型由加密数据和至少一个接收者的数据加密密钥的密文组成。其
中,加密数据是用数据加密密钥加密的,数据加密密钥是用接收者的公钥加密的。
数字信封数据类型示例见A.2,隐式证书数字信封数据类型应符合B.2。
该类型用于为接收者的data、digestedData或signedData三种类型的数据做数字信封。
envelopedData数据类型结构定义如下:
EnvelopedData∷=SEQUENCE{
结构中各项含义见表4。
表4 EnvelopedData数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为1
recipientInfos RecipientInfos 接收者信息的集合,至少要有一个接收者
EncryptedContent∷= OCTETSTRING
结构中各项含义见表5。
字段名称 数据类型 含义
contenType ContentType 内容的类型
encryptedContent EncryptedContent 内容加密的结果,可选
sharedInfo1 OCTETSTRING 协商好的共享信息,可选
sharedInfo2 OCTETSTRING 协商好的共享信息,可选
9.2 recipientInfo类型
接收者信息用recipientInfo类型表示。
recipientInfo类型结构定义如下:
RecipientInfo∷=SEQUENCE{
结构中各项含义见表6。
表6 RecipientInfo数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为1
用接收者公钥加密数据加密密钥的算法,为SM2椭圆曲
线加密算法或SM2隐式证书公钥加密机制
encryptedKey OCTETSTRING 数据加密密钥密文SM2cipher,其定义应遵循GM/T 0009
少一个签名者的签名组成,隐式证书签名及数字信封数据类型应符合B.3。
versionVersion,
结构中各项含义见表7。
字段名称 数据类型 含义
version Version 版本号,此处取值为1
recipientInfos RecipientInfos 接受者信息的集合,至少一个元素
certificates Certificates 证书或隐式证书的集合,可选
signerInfos SignerInfos 签名者的集合,至少要有一个元素
11 加密数据类型encryptedData
据加密密钥。加密数据类型示例见A.3。
encryptedData数据类型定义如下:
EncryptedData∷=SEQUENCE{
结构中各项含义见表8。
表8 encryptedData数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为1
12 密钥协商类型keyAgreementInfo
密钥协商keyAgreementInfo数据类型标明两个用户之间建立一个共享秘密密钥的结构,通过这种
方式能确定一个共享秘密密钥的值。密钥协商类型示例见A.4。
该类型用于两个用户为产生共享秘密密钥进行的公共参数交换。
KeyAgreementInfo∷=SEQUENCE{
version Version,
userID OCTETSTRING
结构中各项含义见表9。
表9 keyAgreementInfo数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为1
tempPublicKeyR SM2PublicKey 临时公钥,SM2密钥格式应遵循附录C,结构定义应遵循GM/T 0006
userCertificate Certificate 用户证书,可选
userID OCTETSTRING 用户标识
附 录 A
(资料性)
示 例
A.1 签名数据类型示例
0 1083:SEQUENCE{
4 10: OBJECTIDENTIFIER’121561019761422’
24 1: INTEGER1
27 15: SET{
29 13: SEQUENCE{
31 9: OBJECTIDENTIFIER’121561019714011’
42 0: NULL
: }
: }
44 40: SEQUENCE{
46 10: OBJECTIDENTIFIER’121561019761421’
58 26: [0]{
: }
: }
86 764: [0]{
90 760: SEQUENCE{
94 668: SEQUENCE{
98 3: [0]{
100 1: INTEGER2
: }
123 12: SEQUENCE{
125 8: OBJECTIDENTIFIER’12156101971501’
135 0: NULL
: }
137 98: SEQUENCE{
139 11: SET{
141 9: SEQUENCE{
148 2: UTF8String’CN’
: }
: }
152 13: SET{
154 11: SEQUENCE{
161 4: UTF8String’Test’
: }
: }
167 27: SET{
169 25: SEQUENCE{
176 18: UTF8String’12140000405703345Q’
: }
: }
196 39: SET{
198 37: SEQUENCE{
205 30: UTF8String’...’
: }
: }
: }
237 30: SEQUENCE{
239 13: UTCTime27/03/201905:52:45GMT
254 13: UTCTime13/10/201905:52:45GMT
: }
269 52: SEQUENCE{
271 11: SET{
273 9: SEQUENCE{
280 2: UTF8String’CN’
: }
: }
284 10: SET{
286 8: SEQUENCE{
293 1: UTF8String’O’
: }
: }
296 12: SET{
298 10: SEQUENCE{
305 3: UTF8String’001’
: }
: }
310 11: SET{
312 9: SEQUENCE{
319 2: UTF8String’12’
: }
: }
: }
323 89: SEQUENCE{
325 19: SEQUENCE{
336 8: OBJECTIDENTIFIER’12156101971301’
: }
346 66: BITSTRING
: A1
: }
414 348: [3]{
418 344: SEQUENCE{
422 11: SEQUENCE{
429 4: OCTETSTRING,encapsulates{
431 2: BITSTRING5unusedbits
: ’111’B
: }
: }
435 9: SEQUENCE{
442 2: OCTETSTRING,encapsulates{
444 0: SEQUENCE{}
: }
: }
446 19: SEQUENCE{
453 12: OCTETSTRING,encapsulates{
455 10: SEQUENCE{
457 8: OBJECTIDENTIFIER
: }
: }
: }
467 145: SEQUENCE{
475 137: OCTETSTRING,encapsulates{
478 134: SEQUENCE{
481 61: SEQUENCE{
483 59: [0]{
485 57: [0]{
487 55: [6]
: ’http://127.0.0.1:7070/crl/UtrustSecCA/UtrustSecC’
: ’A_0.crl’
: }
: }
: }
544 69: SEQUENCE{
546 67: [0]{
548 65: [0]{
550 63: [6]
: ’http://127.0.0.1:7070/crl/UtrustSecCA/inc/Utrust’
: ’SecCA_inc_0.crl’
: }
: }
: }
: }
: }
: }
615 29: SEQUENCE{
622 22: OCTETSTRING,encapsulates{
624 20: OCTETSTRING
: 58E24B63
: }
: }
646 31: SEQUENCE{
648 3: OBJECTIDENTIFIER
653 24: OCTETSTRING,encapsulates{
655 22: SEQUENCE{
657 20: [0]
: E9C52FAE
: }
: }
: }
679 85: SEQUENCE{
686 78: OCTETSTRING,encapsulates{
688 76: SEQUENCE{
690 74: SEQUENCE{
692 10: OBJECTIDENTIFIER’121561125626411’
704 60: SEQUENCE{
706 58: SEQUENCE{
718 46: IA5String
: ’http://127.0.0.1:7070/cps/UtrustSecCA/cps.html’
: }
: }
: }
: }
: }
: }
: }
: }
: }
766 12: SEQUENCE{
768 8: OBJECTIDENTIFIER’12156101971501’
778 0: NULL
: }
780 72: BITSTRING,encapsulates{
783 69: SEQUENCE{
785 33: INTEGER
: 91
820 32: INTEGER
: }
: }
: }
: }
854 230: SET{
857 227: SEQUENCE{
860 1: INTEGER1
863 120: SEQUENCE{
865 98: SEQUENCE{
867 11: SET{
869 9: SEQUENCE{
876 2: UTF8String’CN’
: }
: }
880 13: SET{
882 11: SEQUENCE{
889 4: UTF8String’Test’
: }
: }
895 27: SET{
897 25: SEQUENCE{
904 18: UTF8String’12140000405703345Q’
: }
: }
924 39: SET{
926 37: SEQUENCE{
933 30: UTF8String’...’
: }
: }
: }
: }
985 13: SEQUENCE{
987 9: OBJECTIDENTIFIER’121561019714011’
998 0: NULL
: }
1000 13: SEQUENCE{
1002 9: OBJECTIDENTIFIER’121561019713011’
1013 0: NULL
: }
1015 70: OCTETSTRING,encapsulates{
1017 68: SEQUENCE{
1019 32: INTEGER
1053 32: INTEGER
: }
: }
: }
: }
: }
: }
: }
A.2 数字信封类型示例
0 317:SEQUENCE{
4 10: OBJECTIDENTIFIER’121561019761423’
16 301: [0]{
20 297: SEQUENCE{
24 1: INTEGER1
27 229: SET{
30 226: SEQUENCE{
33 1: INTEGER1
36 82: SEQUENCE{
38 68: SEQUENCE{
40 11: SET{
42 9: SEQUENCE{
49 2: PrintableString’CN’
: }
: }
53 13: SET{
55 11: SEQUENCE{
62 4: UTF8String’Test’
: }
: }
68 13: SET{
70 11: SEQUENCE{
77 4: UTF8String’Test’
: }
: }
83 23: SET{
85 21: SEQUENCE{
92 14: UTF8String’BeijingSM2CA’
: }
: }
: }
: }
120 13: SEQUENCE{
122 9: OBJECTIDENTIFIER’121561019713013’
133 0: NULL
: }
135 122: OCTETSTRING,encapsulates{
137 120: SEQUENCE{
139 32: INTEGER
173 32: INTEGER
207 32: OCTETSTRING
: }
: }
: }
: }
259 60: SEQUENCE{
261 10: OBJECTIDENTIFIER’121561019761421’
273 28: SEQUENCE{
275 8: OBJECTIDENTIFIER’121561019711042’
: }
: }
: }
: }
: }
A.3 加密数据类型示例
0 97:SEQUENCE{
2 10: OBJECTIDENTIFIER’121561019761425’
14 83: [0]{
16 81: SEQUENCE{
18 1: INTEGER1
21 76: SEQUENCE{
23 10: OBJECTIDENTIFIER’121561019761421’
35 28: SEQUENCE{
37 8: OBJECTIDENTIFIER’121561019711042’
: }
65 32: [0]
: }
: }
: }
: }
A.4 密钥协商类型示例
0608:SEQUENCE{
4 10: OBJECTIDENTIFIER’121561019761426’
16 592: [0]{
20 588: SEQUENCE{
24 1: INTEGER1
27 66: BITSTRING
: 51
95 495: [0]{
99 404: SEQUENCE{
103 3: [0]{
105 1: INTEGER2
: }
121 12: SEQUENCE{
123 8: OBJECTIDENTIFIER’12156101971501’
133 0: NULL
: }
135 71: SEQUENCE{
137 11: SET{
139 9: SEQUENCE{
146 2: PrintableString’CN’
: }
: }
150 13: SET{
152 11: SEQUENCE{
159 4: UTF8String’ROOT’
: }
: }
165 13: SET{
167 11: SEQUENCE{
174 4: UTF8String’ROOT’
: }
: }
180 26: SET{
182 24: SEQUENCE{
189 17: UTF8String’PublicTrustCA0001’
: }
: }
: }
208 30: SEQUENCE{
210 13: UTCTime24/03/202009:16:59GMT
225 13: UTCTime24/03/202109:16:59GMT
: }
240 48: SEQUENCE{
242 11: SET{
244 9: SEQUENCE{
251 2: PrintableString’CN’
: }
: }
255 16: SET{
257 14: SEQUENCE{
264 7: UTF8String’BeiJing’
: }
: }
273 15: SET{
275 13: SEQUENCE{
282 6: UTF8String’usrcrt’
: }
: }
: }
290 89: SEQUENCE{
292 19: SEQUENCE{
303 8: OBJECTIDENTIFIER’12156101971301’
: }
313 66: BITSTRING
: A8
: }
381 124: [3]{
383 122: SEQUENCE{
385 29: SEQUENCE{
392 22: OCTETSTRING,encapsulates{
394 20: OCTETSTRING
: 5D92658F
: }
: }
416 9: SEQUENCE{
423 2: OCTETSTRING,encapsulates{
425 0: SEQUENCE{}
: }
: }
427 11: SEQUENCE{
434 4: OCTETSTRING,encapsulates{
436 2: BITSTRING
: ’10011100’B
: }
: }
440 17: SEQUENCE{
442 9: OBJECTIDENTIFIER
453 4: OCTETSTRING,encapsulates{
455 2: BITSTRING
: ’11111111’B
: }
: }
459 29: SEQUENCE{
466 22: OCTETSTRING,encapsulates{
468 20: SEQUENCE{
: }
: }
: }
490 15: SEQUENCE{
492 8: OBJECTIDENTIFIER’21684011137322’
502 3: OCTETSTRING,encapsulates{
504 1: UTF8String’1’
: }
: }
: }
: }
: }
507 12: SEQUENCE{
509 8: OBJECTIDENTIFIER’12156101971501’
519 0: NULL
: }
521 71: BITSTRING,encapsulates{
524 68: SEQUENCE{
526 32: INTEGER
560 32: INTEGER
: }
: }
: }
594 16: OCTETSTRING’1234567812345678’
: }
: }
: }
附 录 B
(规范性)
SM2隐式证书的加密签名消息语法
B.1 隐式证书签名数据类型imcSignedData
B.1.1 ImcSignedData类型
imcSignedData数据类型由任意类型的数据和至少一个签名者的签名值组成。任意类型的数据能
同时被任意数量的签名者签名。
imcSignedData数据类型结构定义如下:
ImcSignedData∷=SEQUENCE{
式证书的CRL的编码
ImcSignerInfos∷=SETOFImcSignerInfo
结构中各项含义见表B.1。
表B.1 ImcSignedData数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为2
contentInfo ContentInfo 数据内容
certificates ImcCertificates 隐式证书的集合,可选
signInfos ImcSignerInfos 签名者信息的集合
B.1.2 ImcSignerInfo类型
ImcSignerInfo类型结构定义如下:
ImcSignerInfo∷=SEQUENCE{
EncryptedDigest∷=OCTETSTRING
结构中各项含义见表B.2。
表B.2 ImcSignerInfo数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为2
sid CertificateId 隐式证书的 Hash值
对内容进行摘要计算的消息摘要算法,本文件
采用SM3密码算法
是经由签名者签名的属性的集合,该域可选。
如果该域存在,该域中摘要的计算方法是对原
文进行摘要计算结果
encryptedDigest OCTETSTRING
值是SM2Signature,用签名者私钥进行签名的
结果,其定义应遵循GM/T 0009
B.2 隐式证书数字信封数据类型imcEnvelopedData
数字信封imcEnvelopedData数据类型由加密数据和至少一个接收者的数据加密密钥的密文组成。
其中,加密数据是用数据加密密钥加密的,数据加密密钥是用接收者的公钥加密的。
该类型用于为接收者的data、digestedData或imcSignedData三种类型的数据做数字信封。
imcEnvelopedData数据类型结构定义如下:
ImcEnvelopedData∷=SEQUENCE{
结构中各项含义见表B.3。
表B.3 ImcEnvelopedData数据类型
字段名称 数据类型 含义
version Version 版本号,此处取值为2
recipientInfos imcRecipientInfos 接收者信息的集合,至少要有一个接收者
B.2.2 ImcRecipientInfo类型
接收者信息用ImcRecipientInfo类型......
英文网页English: GM/T 0010-2023
相关标准: GA/T 1389|GM/T 0001.4|GM/T 0009|GM/T 0006|GM/T 0010-2023|GM/T 0010|