路径: 主页 > MISC > 第118页 > GM/T 0093-2020
| 标准编号 | GM/T 0093-2020 (GM/T0093-2020) | | 中文名称 | 证书与密钥交换格式规范 | | 英文名称 | Certificate and key exchange format specification | | 行业 | Chinese Industry Standard (推荐) | | 中标分类 | L80 | | 字数估计 | 21,230 | | 发布日期 | 2020-12-28 | | 实施日期 | 2021-07-01 | | 标准依据 | 国家密码管理局公告第41号 | | 发布机构 | 国家密码管理局 |
GM/T 0093-2020: 证书与密钥交换格式规范
GM/T 0093-2020 英文名称: Certificate and key exchange format specification
中华人民共和国密码行业标准
证书与密钥交换格式规范
国家密码管理局 发 布
前言
本文件按照GB/T 1.1-2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定
起草。
请注意本文件的某些内容可能涉及专利。本文件的发布
机构不承担识别专利的责任。
本文件由密码行业标准化技术委员会提出并归口。
本文件起草单位:北京信安世纪科技股份有限公司、格尔软件股份有限公司、北京数字认证股份有
限公司、长春吉大正元信息技术股份有限公司、兴唐通信科技有限公司、卫士通信息产业股份有限公司、
国家信息安全工程技术研究中心、山东得安信息技术有限公司、北京创原天地科技有限公司、西安西电
捷通无线网络通信股份有限公司。
本文件主要起草人:汪宗斌、刘婷、郑强、傅大鹏、赵丽丽、王妮娜、赵闪、罗俊、张旭、周淑静、张庆勇、
焦靖伟、史晓峰、马洪富、杜志强。
引 言
本文件的内容参照个人信息交换语法(RFC7292PKCS#12),按照我国相关密码政策和规范,结
合我国实际应用需求及产品生产厂商的实践经验,定义了基于SM2密码算法的证书与密钥交换格式。
对于需要传递的证书与密钥等用户个人信息,涉及信息机密性和完整性保护方法。机密性保护使
用加密技术来防止个人信息被暴露,完整性保护则防止个人信息被篡改。
本文件支持机密性保护方法和完整性保护方法的四种组合。
所述机密性保护,有以下两种方法。
---公钥机密性保护方法:在源平台上,使用已知可信的目标平台的加密公钥以数字信封的形式来
封装用户个人信息。这个数字信封可以被对应的加密私钥打开。
---口令机密性保护方法:用从机密性口令派生的对称密钥加密用户个人信息。如果同时使用口
令完整性保护方法,机密性保护口令和完整性保护口令可以相同也可以不相同。
所述完整性保护,有以下两种方法。
---公钥完整性保护方法:通过对 AuthenticatedSafe内容的数字签名来保证完整性。在源平台
上,使用签名私钥产生数字签名。在目标平台上,使用对应的签名公钥来验证签名。
---口令完整性保护方法:通过保密的完整性口令产生消息鉴别码(MAC)来保证完整性。如果口
令方式的机密性保护方法被同时采用,机密性保护口令和完整性保护口令可以相同,也可以
不同。
注意,这里讨论的密钥仅指用于传递用户个人信息的密钥。用户可能希望把个人密钥从一个平台
传递到另外一个平台(可以保存在PDU中),但不要将这里讨论的用于传递用户个人信息的密钥与用
户的个人密钥混淆。
本文件通过基于公钥的机密性和完整性保护方法提供高层次的安全防护,需要源平台和目标平台
分别具有可用于数字签名和加密的可信密钥对;同时也支持略低的安全需求,基于口令的机密性和完整
性保护方法,用于不能提供可信密钥对的环境。
证书与密钥交换格式规范
1 范围
本文件规定了证书与密钥等信息的传递语法,包括私钥、证书、证书撤销列表、各种形式的秘密值及
其扩展的标准化封装。
本文件适用于个人的SM2算法证书与密钥等信息在不同平台之间迁移的应用场景。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文
件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于
本文件。
GB/T 15852.2-2012 信息技术 安全技术 消息鉴别码 第2部分:采用专用杂凑函数的机制
GB/T 35275-2017 信息安全技术 SM2密码算法加密签名消息语法规范
GB/T 35276-2017 信息安全技术 SM2密码算法使用规范
GB/T 33560-2017 信息安全技术 密码应用标识规范
GM/T 0091-2020 基于口令的密钥派生规范
GM/Z4001 密码术语
3 术语和定义
GM/Z4001和GM/T 0091-2020界定的术语和定义适用于本文件。
4 缩略语
下列缩略语适用于本文件。
或服务器私钥、公钥和证书指定的一个可移植的格式。它是一种二进制格式,这些文件也称为CKX
文件。
PDU:协议数据单元(ProtocolDataUnit)。一个协议中,格式与机器硬件无关,组成一个消息的字
节序列。
5 OID定义
本文件对6个对象keyBag、shroudedKeyBag、certBag、crlBag、secretBag、safeContentBag和相关属
性的标识符进行了定义,详见表1。
6.1 CKX类型
CKX是本文件中定义的最高层交换数据单元,通过对AuthenticatedSafe内容进行完整性保护,以
实现将CKX数据单元从一个平台安全地传递到另一个平台。
AuthenticatedSafe可以经过数字签名(公钥完整性保护方法)或者 MAC(口令完整性保护方法)产
生一个CKX数据单元。
如果AuthenticatedSafe经过数字签名,则CKX由在源平台的签名私钥SrcSigPrivKey产生的数字
签名和对应的可信签名公钥TSrcSigPubKey组成。TSrcSigPubKey应和CKX一起传递到目标平台,
这样用户才可以验证公钥是否可信并验证 AuthenticatedSafe的签名。如果 AuthenticatedSafe经过
MAC,则CKX由AuthenticatedSafe内容和一个从保密的完整性口令、盐值、迭代次数产生的消息鉴别
码组成。
6.2 AuthenticatedSafe类型
authSafe的contentType域是Data类型或者SignedData类型。authSafe的content域直接(类型
为Data时)或间接(类型为SignedData时)的包含一个AuthenticateSafe类型的BER编码。
AuthenticatedSafe类型定义如下:
ContentInfo定义见6.1。
一个AuthenticatedSafe包括一系列有序的ContentInfo实例。这些ContentInfo域的content域
包含明文的、加密的或经过数字信封加密的数据。
如果是明文,则ContentInfo域是Data类型,Data类型定义按GB/T 35275-2017的第7章。
如果是口令机密性保护方法,则ContentInfo域是EncryptedData类型,EncryptedData类型定义按
GB/T 35275-2017的第11章;
如果是公钥机密性保护方法,则ContentInfo域是EnvelopedData类型,EnvelopedData类型定义
按GB/T 35275-2017的第9章。
其中,EncryptedData和EnvelopedData的保护明文是一个或多个SafeContents实例的BER编码。
7.1描述了AuthenticatedSafe类型各个域值的解释。
可以按照用户的要求,AuthenticatedSafe的每个ContentInfo包含私钥、已加密的私钥、证书、证书
撤销列表(CRLs)或其他需要保护的秘密信息等的任意集合,存储为SafeContents类型数据。
6.3 SafeContents类型
SafeContents类型由多个SafeBag构成。每个SafeBag包含密钥、证书或其他信息,由对象标识符
区分。
6.4.1 概述
本文件定义了SafeBag的6种类型,分别对应着 KeyBag、ShroudedKeyBag、CertBag、CRLBag、
SecretBag和SafeContents类型。
类型定义如下:(下面仅列出部分ASN.1,完整的ASN.1定义按附录A执行)
6.4.2 KeyBag类型
本文件的KeyBag是一个SM2私钥类型ECPrivateKey。
类型定义如下:(下面仅列出部分ASN.1,完整的ASN.1定义按附录A执行)
6.4.3 ShroudedKeyBag类型
ShroudedKeyBag是一个加密的SM2私钥结构。ShroudedKeyBag类型定义如下:(下面仅列出部
分ASN.1,完整的ASN.1定义按附录A执行)
ShroudedKeyBag::=SM2EnvelopedKey
SM2EnvelopedKey::=SEQUENCE{
Sm2PublicKey SM2PublicKey, --SM2公钥
其中,
---symAlgID域为SM4-CBC的算法标识,其OID按GB/T 33560-2017的附录A。
---symEncryptedKey域为应用程序中的外部SM2公钥加密对称密钥得到的对称密钥密文,这
里的外部SM2公钥是指用户的个人密钥,与平台密钥无关。请注意不要与用于传递用户个人
信息的密钥,即目标平台SM2公钥(称为 TDesEncPubKey)混淆。SM2Cipher类型定义按
GB/T 35276-2017中的7.2。
---Sm2PublicKey域为被保护的SM2私钥对应公钥的BER编码,SM2PublicKey类型定义按
GB/T 35276-2017中的7.1。
AlgorithmIdentifier域标识的算法加密得到。
注:ShroudedKeyBag中只包含一个加密的SM2私钥信息。
6.4.4 CertBag类型
CertBag包含一个证书类型。对象标识用来区分不同类型的证书。
类型定义如下:(下面仅列出部分ASN.1,完整的ASN.1定义按附录A执行)
--DER编码的X.509证书用OCTETSTRING存储
CertTypesBAG-TYPE::= {x509Certificate,.--未来扩展}
6.4.5 CrlBag类型
CRLBag包含一个证书撤销列表(CRL)。使用对象标识来区分不同类型的CRL。
类型定义如下:(下面仅列出部分ASN.1,完整的ASN.1定义按附录A执行)
6.4.6 SecretBag类型
SecretBag表示其他类型的秘密信息,其值由对象标识符定义。
类型定义如下:(下面仅列出部分ASN.1,完整的ASN.1定义按附录A执行)
注:一个SecretBag只能包含一个秘密信息。
6.4.7 SafeContents类型
SafeBag第六种类型是SafeContents,允许以递归的方式实现多个KeyBag、EncryptedPrivateKey-
7 证书与密钥交换基本流程
7.1 创建CKX数据单元
创建CKX数据单元的步骤如下所述。
a) 根据ASN.1语法创建SafeContents的多个实例,每个实例包含SafeBag的多个(可能嵌套)实
例。假设SafeContents的多个实例分别为SC1、SC2、..、SCn。注意,在一个CKXPDU中可
能有SafeContents的一个或多个实例。正如b)中所述,每个实例可以被单独加密(或者不加
密)。附录B给出了包含2个实例的示例供实现者参考。
b) 对每个SCi,根据所选择的不同加密选项。
1) 如果SCi不被加密,建立一个Data类型的ContentInfo实例CIi。Data八位位组流内容
是SCi的BER编码(包括标签、长度和值的八位位组流)。
2) 如果SCi使用口令加密,建立一个EncryptedData类型的ContentInfo实例CIi。设置CIi
是加密过的SCi的BER编码(注意,应包括标签和长度字节的八位位组流)。
3) 如果SCi采用公钥加密,建立一个EnvelopedData类型的ContentInfo实例CIi,本质上
c) 在SEQUENCE中排列CIi’s,生成一个AuthenticatedSafe的实例。
d) 生成内容类型为Data的ContentInfo实例T。Data八位位组流的内容是AuthenticatedSafe
值的BER编码(包括标签、长度和值的八位位组流)。
e) 对于完整性保护。......
|