路径: 主页 > MISC > 第117页 > GM/T 0015-2023
| 标准编号 | GM/T 0015-2023 (GM/T0015-2023) | | 中文名称 | 数字证书格式 | | 英文名称 | Digital certificate format | | 行业 | Chinese Industry Standard (推荐) | | 中标分类 | L80 | | 字数估计 | 54,588 | | 发布日期 | 2023-12-04 | | 实施日期 | 2024-06-01 | | 发布机构 | 国家密码管理局 |
GM/T 0015-2023: 数字证书格式
ICS 35.030
CCSL80
中华人民共和国密码行业标准
代替GM/T 0015-2012
数 字 证 书 格 式
2023-12-04发布
2024-06-01实施
国家密码管理局 发 布
目次
前言 Ⅲ
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
4 缩略语 1
5 数字证书与CRL 2
5.1 概述 2
5.2 数字证书格式 2
5.3 CRL格式 18
附录A(规范性) 证书结构 23
附录B(规范性) 证书的结构实例 25
附录C(规范性) 证书内容表 27
附录D(资料性) SM2数字证书示例 45
参考文献 49
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
本文件代替GM/T 0015-2012《基于SM2密码算法的数字证书格式规范》。与 GM/T 0015-
2012相比,除结构调整和编辑性改动外,主要技术变化如下:
a) 增加了规范性引用文件GB/T 16262.1(见5.2.1)、GB/T 17969.1(见5.2.4.2.5)、GB/T 16264.8
(见5.2.3.6和5.2.4.2.1)、GB/T 25069(见第3章)和GM/Z4001(见第3章),删除了PKCS#7
的引用(见第2章,2012年版的第2章);
b) 删除了术语“数字证书”“证书撤销列表”“CA证书”“终端实体证书”(见2012年版的3.1、3.2、
3.3、3.4);
c) 删除了5.1概述的中表述不清的内容(见5.1,2012年版的5.1);
d) 更改了“ISO/IEC 9594-2:2001”的描述为“GB/T 16264.8-2005”(见5.2.3.6,2012年版的
5.2.3.6);
e) 更改了5.2.4.2.1中的综述,其中6个扩展定义的 OID 应遵循 GM/T 0006而不是
GB/T 16264.8(见5.2.4.2.1,2012年版的5.2.4.2.1);
f) 更改了keyIdentifier的描述(见5.2.4.2.2,2012年版的5.2.4.2.2);
g) 更改了个人身份标识码的定义(见5.2.4.2.18,2012年版的5.2.4.2.18);
h) 增加了“统一社会信用代码”(见5.2.4.2.23);
i) 更改了证书颁发者描述(见5.3.4.7.3,2012年版的5.3.4.7.3),并增加了描述“本扩展应是关键
的“(见5.3.4.7.3,2012年版的5.3.4.7.3);
j) 更改了扩展域中keyusage的关键度(见表A.3,2012年版的A.3);
l) 增加了密钥使用(KeyUsage)项(见表B.1和表B.2);
n) 删除了SHA-1算法(见2012年版的附录C);
o) 更改了附录D的名称,删除了RSA数字证书编码的举例(见附录D,2012年版的附录D)。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:格尔软件股份有限公司、北京数字认证股份有限公司、北京海泰方圆科技股份有
限公司、广东省电子商务认证有限公司、上海智巡密码检测技术有限公司、无锡江南信息安全工程技术
中心、上海市数字证书认证中心有限公司、长春吉大正元信息技术股份有限公司、中电科网络安全科技
股份有限公司、兴唐通信科技有限公司、北京华大智宝电子系统有限公司、山东得安信息技术有限公司、
山东大学、北京国脉信安科技有限公司、国家信息安全工程技术研究中心、国家密码管理局商用密码检
测中心。
本文件主要起草人:刘平、郑强、谭武征、李述胜、柳增寿、赵敏、梁宁宁、韩玮、封维端、刘承、赵丽丽、
李元正、徐强、王妮娜、陈跃、孔凡玉、马洪富、袁峰、李志伟。
本文件及其所代替文件的历次版本发布情况为:
---2012年首次发布为GM/T 0015-2012;
---本次为第一次修订。
数 字 证 书 格 式
1 范围
本文件规定了数字证书和证书撤销列表的基本结构,描述了数字证书和证书撤销列表中的各数据
项内容。
本文件适用于数字证书认证系统的研发、数字证书认证机构的运营以及基于数字证书的安全应用。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 16262.1 信息技术 抽象语法记法一(ASN.1) 第1部分:基本记法规范
GB/T 16264.8 信息技术 开放系统互连 目录 第8部分:公钥和属性证书框架
GB/T 17969.1 信息技术 开放系统互联 OSI登记机构的操作规程 第1部分:一般规程和国
际对象标识符树的顶级弧
GB/T 25069 信息安全技术 术语
GM/T 0006 密码应用标识规范
GM/T 0009 SM2密码算法使用规范
GM/T 0010 SM2密码算法加密签名消息语法规范
GM/Z4001 密码术语
3 术语和定义
GB/T 25069和GM/Z4001界定的术语和定义适用于本文件。
4 缩略语
下列缩略语适用于本文件。
DNS:域名系统(DomainNameSystem)
5 数字证书与CRL
5.1 概述
数字证书具有以下特性:
---数字证书可通过证书认证机构的公钥进行有效性验证;
---数字证书不可被篡改和伪造。
证书认证机构通过对信息集合的签名来生成用户证书,信息集合包括可甄别的用户名、公钥以及一
个可选的包含用户附加信息的唯一性标识符。唯一性标识符可是诸如对象标识符、证书、日期或是说明
有关可辨别用户名的有效性的证书的其他形式。具体地说,如果一个用户证书的可辨别名为A,唯一性
标识符为UA,并且该证书是由名为CA,其唯一性标识符为UCA的认证机构生成的,则用户证书具有
下列的形式:CA< < A > >=CA{V,SN,AI,CA,UCA,A,UA,Ap,TA},这里V为证书版本;SN为证
书序列号;AI为签发证书使用的算法标识符;UCA为CA的可选的唯一性标识符;UA为用户A的可
选的唯一性标识符;Ap为用户A的公钥;TA 表示证书的有效期。
CRL是CA对撤销的证书而签发的一个列表文件,该文件可用于应用系统鉴别用户证书的有
效性。
5.2 数字证书格式
5.2.1 综述
本文件按照GB/T 16262.1的特定编码规则(DER)对下列证书项中的各项信息进行编码,组成特
定的证书数据结构。ASN.1DER编码是关于每个元素的标记、长度和值的编码系统。
5.2.2 基本证书域的数据结构
数字证书的基本数据结构如下:
Certificate::= SEQUENCE {
tbsCertificate TBSCertificate,
TBSCertificate::= SEQUENCE {
version [0] EXPLICITVersion DEFAUTv1,
signature AlgorithmIdentifier,
subject Name,
---如果出现,version应是v2或者v3
---如果出现,version应是v2或者v3
---如果出现,version应是v3
}Version::= INTEGER { v1(0),v2(1),v3(2) }
Validity::=SEQUENCE{
notBefore Time,
notAfter Time}
Time::=CHOICE{
utcTime UTCTime,
generalTime GeneralizedTime}
Extension::= SEQUENCE {
extnID OBJECTIDENTIFIER,
上述的证书数据结构由tbsCertificate,signatureAlgorithm和signatureValue三个域构成。这些
域的含义如下所述。
---tbsCertificate域包含了主体名称和颁发者名称、主体的公钥、证书的有效期以及其他相关
信息。
---signatureAlgorithm域包含了证书签发机构签发该证书所使用的密码算法标识符。其ASN.1
结构如下:
AlgorithmIdentifier::= SEQUENCE {
algorithm OBJECTIDENTIFIER,
其中algorithm是算法标识符,标识了具体的算法。parameters是可选参数,依赖于所标
识的算法。该域中algorithm标识的算法应与tbsCertificate域中signature标识的签名算法
相同。如果签名算法为SM2,则parameters的值为空。
---signatureValue域包含了对tbsCertificate域进行数字签名的结果。采用ASN.1DER编码的
tbsCertificate域作为数字签名的输入,签名的结果按照ASN.1BITSTRING类型编码,并保
存在signatureValue域内。如果签名算法为 SM2 密码算法,则签名数据格式应遵循
GM/T 0009。
5.2.3 TBSCertificate数据结构
5.2.3.1 版本(Version)
本项描述了编码证书的版本号。
5.2.3.2 序列号(Serialnumber)
本项描述了证书序列号,证书序列号是CA分配给所签发证书的用于唯一标识该数字证书的一个
正整数。序列号最大长度为20个八比特字节。
5.2.3.3 签名算法(Signature)
本项包含CA签发该证书所使用的密码算法的标识符,这个算法标识符应与证书signatureAlgo-
rithm域中项的算法标识符相同。可选参数的内容依赖算法标识符所标识的具体算法。本项可支持用
户定义的签名算法。
5.2.3.4 颁发者(Issuer)
本项标识了进行证书签名和证书颁发的实体。它应包含一个非空的甄别名称(DN---
distinguishedname)。该项被定义为Name类型,其ASN.1的结构如下。
Name::=CHOICE{RDNSequence}
type AttributeType,
value AttributeValue}
Name是由一些属性及相应的值组成的层次结构,如“国家=C”。其中AttributeValue项的类型是
由AttributeType确定的,通常它是一个DirectoryString类型。
DirectoryString 类 型 定 义 可 取 值 范 围 包 括 PrintableString,TeletexString,BMPString,
UTF8String和UniversalString类型。UTF8String是首选的编码类型。
5.2.3.5 有效期(Validity)
5.2.3.5.1 概述
证书有效期是一个时间段,在这个时间段内,CA担保对证书状态的相关信息进行维护。该项是证
书有效期的起始时间 (notBefore)和证书有效期的终止时间 (notAfter)两个时间值的序列
(SEQUENCE)。NotBefore和notAfter这两个时间都可作为UTCTime类型或者GeneralizedTime类
型进行编码。
5.2.3.5.2 编码类型要求
在2049年之前(包括2049年)颁发的证书,时间值应采用 UTCTime类型编码,在2050年之后颁
发的证书,时间值应采用GeneralizedTime类型编码。
5.2.3.5.3 世界时间(UTCTime)
本项是为国际应用设立的一个标准ASN.1类型,在这里只有本地时间是不够的。UTCTime包含
Z(用于Zulu,或格林威治标准时间)或时间差。
在本文件中,UTCTime值应使用格林威治标准时间(Zulu)表示,其年份使用最低两位,并且应包
含秒,即时间格式为YYMMDDHHMMSSZ。系统对年字段(YY)应作如下解释:
当YY大于或等于50,年字段应解释为19YY;当YY小于50,年应解释为20YY。
5.2.3.5.4 通用时间类型(GeneralizedTime)
本项是一个标准ASN.1类型,表示时间的可变精确度。GeneralizedTime字段能包含一个本地和
格林威治标准时间之间的时间差。
本文件中,GeneralizedTime值应使用格林威治标准时间表示,且应包含秒,即时间格式为
YYYYMMDDHHMMSSZ。GeneralizedTime值中秒的取值为整数。
5.2.3.6 主体(Subject)
本项描述了与主体公钥信息项中的公钥相对应的实体。本项可出现在主体项和/或主体可选替换
名称扩展项中。如果主体是一个CA,那么主体项应是一个非空的与颁发者项的内容相匹配的甄别名
称。如果主体的命名信息只出现在主体替换名称扩展项中,那么主体名称应是一个空序列,且主体替换
名称扩展项应被标记为关键的。
当主体项非空时,这个项应包含一个甄别名称。一个CA认证的每个主体实体的甄别名称应是唯
一的。一个CA可为同一个主体实体以相同的甄别名称签发多个证书。
主体项结构定义应符合GB/T 16264.8中对名字类型的要求。
本项包含证书公钥和相应的公钥算法。公钥算法使用算法标识符AlgorithmIdentifier结构表示。
当公钥算法为SM2时,AlgorithmIdentifier结构定义应遵循 GM/T 0010;当公钥算法为 RSA
时,AlgorithmIdentifier结构定义见RFC8017。
5.2.3.8 颁发者唯一标识符(issuerUniqueID)
本项用来处理颁发者名称的重用问题。对于不同的颁发者,颁发者唯一标识符不同。在v1版本
中,符合本文件的CA在颁发证书时,证书中应不包含本项,但应用在解析证书过程中,若存在包含本扩
展项的证书,应能正确解析该项的值。
5.2.3.9 主体唯一标识符(subjectUniqueID)
本项用来处理主体名称的重用问题。对于不同的主体,主体唯一标识符不同。在v1版本中,符合
本文件的CA在颁发证书时,证书中应不包含本项,但应用在解析证书过程中,若存在包含本扩展项的
证书,应能正确解析该项的值。
5.2.3.10 扩展项(extensions)
本项是一个或多个证书扩展的序列(SEQUENCE),其内容和数据结构见5.2.4。
5.2.4 证书扩展域及其数据结构
5.2.4.1 证书扩展
证书的扩展包括标准扩展项和专用扩展项。扩展由三部分组成,分别是扩展类型、扩展关键度和扩
展项值。扩展关键度可定义成关键的或非关键的,表明一个证书的使用者是否可忽略该扩展项。证书
的应用系统如果不能识别关键的扩展时,应拒绝接受该证书,如果不能识别非关键的扩展,则可忽略该
扩展项的信息。
本条定义一些标准的扩展项。应特别注意的是,在实际应用过程中,如果采用了关键的扩展,可能
导致在一些通用的应用中无法使用该证书。
每个扩展项包括一个对象标识符OID和一个ASN.1结构。当证书中出现一个扩展时,OID作为
extnID项出现,其对应的ASN.1编码结构就是八比特字符串extnValue的值。一个证书中特定的扩展
应只出现一次。一个扩展中包含一个布尔型的值用来表示该扩展的关键性,其缺省值为FALSE,即非
关键的。
CA应支持颁发机构密钥标识符、主体密钥标识符、基本限制、密钥用法和证书策略扩展,其他的扩
展是可选的。如果CA签发的证书中的主体项为空序列,该CA就应支持主体可替换名称扩展。CA也
可支持本文件定义之外的其他的扩展,但如果这些扩展被定义为关键的,则可能会给互操作性带来
障碍。
应用应至少能识别下列扩展:密钥用法、证书策略、主体替换名称、基本限制、名称限制、策略限制和
扩展的密钥用途。另外,宜支持颁发机构密钥标识符、主体密钥标识符以及策略映射扩展。
5.2.4.2 标准扩展
5.2.4.2.1 综述
本条定义数字证书的标准证书扩展,其中,扩展5.2.4.2.2到扩展5.2.4.2.17共16个扩展中定义的
OID应遵循GB/T 16264.8。这些OID都是id-ce的成员,其定义如下:
id-ce OBJECTIDENTIFIER::= {joint-iso-ccitt(2)ds(5)29}
扩展5.2.4.2.18到扩展5.2.4.2.23共6个扩展定义的OID应遵循GM/T 0006。
本项提供了一种方式,以识别与证书签名私钥相应的公钥。当颁发者由于有多个密钥共存或由于
发生变化而具有多个签名密钥时使用该扩展。颁发机构密钥标识符可基于CA证书中的主体密钥标识
符或基于颁发者的名称和序列号。
CA产生的所有证书应包括颁发机构密钥标识符扩展的keyIdentifier项,以便于证书链的建立。
CA以“自签”(self-signed)证书形式发放其公钥时,可省略认证机构密钥标识符。此时,主体和认证机
构密钥标识符是完全相同的。
本项既可用作证书扩展亦可用作CRL扩展。本项标识用来验证在证书或CRL上签名的公开密
钥。它能辨别同一CA使用的不同密钥(例如,在密钥更新发生时)。本项定义如下:
keyIdentifier [0]KeyIdentifier OPTIONAL,
PRESENT}│
SENT})
KeyIdentifier::= OCTETSTRING。
密钥标识符KeyIdentifier可采用下述两种通用的方法之一生成。
编码)的SM3杂凑值中最低位的160比特组成。
使用的比特个数的编码)的SM3杂凑值中最低位的60比特组成。
此密钥可通过keyIdentifier字段中的密钥标识符来标识,也可通过此密钥的证书标识(使用au-
者可通过密钥标识符和此密钥的证书标识来标识。如果使用两种标识形式,证书或CRL的颁发者应保
证它们是一致的。对于颁发机构的包含扩展的证书或CRL的所有密钥标识符而言,每个密钥标识符应
是唯一的。支持此扩展的实现不必处理authorityCertIssuer字段中的所有名字形式。
证书认证机构指定或者自动产生证书序列号,这样颁发者和证书序列号相结合就唯一地标识了一
份证书。
除自签证书之外,所有的证书应包含本扩展,而且要包含keyIdentifier项。如果证书的颁发者的证
书有主体密钥标识符扩展,则本扩展中keyIdentifier项应与颁发者的证书中SubjectKeyIdetifier扩展
的值一致,如果证书的颁发者的证书没有主体密钥标识符扩展,则可使用文中介绍的两种方法之一来
产生。
本扩展应是非关键的。
本项提供一种识别包含有一个特定公钥的方法。此扩展标识了被认证的公开密钥。它能区分同一
主体使用的不同密钥。此项定义如下:
对于使用密钥标识符的主体的各个密钥而言,每一个密钥标识符均应是唯一的。此扩展项总是非
关键的。
所有的CA证书应包括本扩展;而且CA签发证书时应把CA证书中本扩展的值赋给终端实体证
书颁发者密钥标识符扩展中的KeyIdentifier项。CA证书的主体密钥标识符应从公钥或生成唯一值的
方法中导出。终端实体证书的主体密钥标识符应从公钥中导出。从公钥中生成密钥标识符,应使用
5.2.4.2.2中的两种通用方法之一。
5.2.4.2.4 密钥用法(keyUsage)
本项指示已认证的公开密钥用于何种用途,该项定义如下:
KeyUsage::=BITSTRING{
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8)}
KeyUsage类型中的用法如下:
a) digitalSignature:验证下列b)、f)或g)所标识的用途之外的数字签名;
b) nonRepudiation:验证用来提供抗抵赖服务的数字签名,这种服务防止签名实体不实地拒绝某
种行为(不包括如f)或g)中的证书或CRL签名);
c) keyEncipherment:加密密钥或其他安全信息,例如用于密钥传输;
d) dataEncipherment:加密用户数据,但不包括上面c)中的密钥或其他安全信息;
e) keyAgreement:用作公开密钥协商密钥;
f) keyCertSign:验证证书的CA签名;
g) cRLSign:验证CRL的CA签名;
h) encipherOnly:当本位与已设置的keyAgreement位一起使用时,公开密钥协商密钥仅用于加
密数据(本位与已设置的其他密钥用法位一起使用的含义未定义);
i) decipherOnly:当本位与已设置的keyAgreement位一起使用时,公开密钥协商密钥仅用于解
密数据(本位与已设置的其他密钥用法位一起使用的含义未定义)。
keyCertSign只用于CA证书。如果KeyUsage被置为ke......
|