公钥密码基础设施应用技术体系 基于SM2算法的证书认证系统证书格式标准.docx
《公钥密码基础设施应用技术体系 基于SM2算法的证书认证系统证书格式标准.docx》由会员分享,可在线阅读,更多相关《公钥密码基础设施应用技术体系 基于SM2算法的证书认证系统证书格式标准.docx(55页珍藏版)》请在冰豆网上搜索。
公钥密码基础设施应用技术体系基于SM2算法的证书认证系统证书格式标准
国家质量监督检验检疫总局发布
公钥密码基础设施应用技术体系
基于SM2算法的证书认证系统
的证书与证书撤销列表格式标准
PublicKeyInfrastructureApplicationTechnology
X.509CertificateandCRLExtensionsProfileBasedSM2
(草稿)
(红色部分需要进一步讨论)
GB/TXXXXX—200×
中华人民共和国国家标准
ICSxx.xxx.xx
Lxx
发布
2008-××-××实施
2008-××-××发布
目次
前言II
引言III
1范围4
2规范性引用文件4
3术语和定义(需要整体完成后整理)4
4符号和缩略语6
5OID定义6
6X.509v3证书7
7X.509v2证书撤销列表7
8可辨识名(DN)编码8
9使用统一定位符(URI)8
10关于算法的强度的说明9
11证书内容表10
前言
本标准是《公钥密码基础设施应用技术体系框架规范》系列规范之一。
本标准制定了基于SM2算法的证书认证系统的证书格式和证书撤销列表格式标准,为基于SM2算法的证书认证系统、安全应用中间件、证书应用系统的研制和开发提供指导和依据。
本标准由国家密码管理局提出并归口。
本标准起草单位:
上海格尔软件股份有限公司
本标准主要起草人:
谭武征、许俊、任伟、杨茂江、刘平、谢永泉。
本标准责任专家:
刘平。
本标准凡涉及密码算法相关内容,按国家有关法规实施。
引言
商用密码安全服务是符合国家商用密码管理机构针对商用领域的对称与非对称密码使用和算法的管理规定的基础安全服务。
在商用密码领域,主要的身份验证手段是使用基于公钥基础设施的数字证书进行验证和安全权标保护,为了保证商用密码应用的安全性,国家密码管理局牵头相关单位研制了适用于我国商用密码领域专用的对称算法SM1、非对称算法SM2和摘要算法SM3。
本标准的目标是为公钥密码基础设施应用体系框架下的基于SM2算法的证书认证系统制定统一的证书与证书撤销列表格式标准,为基于SM2的数字证书的基础设施和安全应用的开发提供指导意见,减少不必要的重复建设,提高安全应用厂商产品的兼容性,以利于增强我国商用密码领域的安全保障建设。
本标准不涉及任何具体的密码运算,所有密码运算均在符合国家有关法规的密码设备中进行。
本标准编制过程中得到了国家商用密码应用技术体系总体工作组的指导。
1范围
本规范规定了公钥密码基础设施体系中基于SM2算法的证书与证书撤销列表格式标准。
本规范适用于公钥密码基础设施体系中基于SM2算法的证书认证平台、证书安全中间件、证书应用等多类系统的研制及检测,也可用于指导应用系统规范化地使用基于SM2算法的证书。
本规范对基于SM2算法的证书与证书撤销列表中相关要素的OID进行了定义。
本规范对基于SM2算法的证书与证书撤销列表中的关键内容以表格的形式进行描述。
2规范性引用文件
下列标准所包含的条文,通过本标准中的引用而构成本标准的条文。
考虑到标准的修订,使用本标准时,应研究使用下列标准最新版本的可能性。
GB/T16262.1-2006信息技术抽象语法记法一(ASN.1):
基本记法规范(ISO/IEC8824-1:
2002,IDT)
GB/T16263.1-2006信息技术ASN.1编码规则第1部分:
基本编码规则(BER)、正则编码规则(CER)和非典型编码规则(DER)的规范(ISO/IEC8825-1:
2002,IDT)
GB/T16264.2信息技术开放系统互连目录第2部分:
模型(GB/T16264.2-1996,idtISO/IEC9594-2:
1990)
GB/T15843.1-1999信息技术 安全技术实体鉴别第1部分 :
概述ISO/IEC9798-1:
1991
GB/T15843.3-1998信息技术 安全技术实体鉴别第3部分 :
用非对称签名技术的机制ISO/IEC9798-3:
1997
GB/TAAAAA信息技术安全技术密码术语
GB/TBBBBB公钥密码基础设施应用技术体系框架规范
GB/TBBBBB信息技术开放系统互连对象标识符(OID)的国家编号体系和注册规程(征求意见稿)
RFC3279
GB/T20518-2006《信息安全技术公钥基础设施数字证书格式》
[1]RFC3280X.509互联网PKI证书与证书撤销列表(CRL)
[2]RFC4210X.509互联网PKI证书管理协议(CMP)
[3]RFC4211X.509互联网PKI证书请求消息格式(CRMF)
3术语和定义(需要整体完成后整理)
1
2
3
3.1
算法标识arithmeticidentifier
用于标明算法机制的数字化信息。
3.2
非对称密码算法asymmetriccryptographicalgorithm
使用两种相关变换和非对称密钥对的密码技术,一种是由公开密钥定义的公开变换,另一种是由私有密钥定义的私有变换。
两种变换具有以下特性:
即使给定公开变换,也不可能通过计算得出私有变换。
3.3
解密decipherment/decryption/decrypt/decipher
与一个可逆的加密过程相对应的反过程。
该过程使用适当的密钥,将已加密的文本转换成明文。
3.4
设备密钥devicekeypair
存储在设备内部的用于设备管理的非对称密钥对,包含签名密钥对和加密密钥对。
3.5
加密encipher/encipherment/encrypt/encryption
通过密码算法对数据进行变换来产生密文,以便隐藏数据的信息内容。
3.6
密钥加密密钥keyencryptKey
存储在设备内部的用于保护会话密钥的对称密钥。
3.7
公钥基础设施publickeyinfrastructure(PKI)
PKI是一套集生成密钥、签发证书、分发证书、维护证书等功能于一体的公钥管理基础设施。
其职能包括为用户生成密钥(公钥,私钥),签发数字证书,管理数字证书(公布有效数字证书和公布无效数字证书)等。
PKI的基本构成元素为CA,即证书机构。
PKI通过CA完成其公钥管理功能。
3.8
私钥权限标识码privatekeyaccesspassword
用于验证私钥使用权限的口令字。
3.9
对称密码技术/体制symmetriccryptographictechnique
原发者和接收者均采用同一秘密密钥进行变换的密码技术(体制)。
其中,加密密钥等于解密密钥,或者一个密钥可以从另一个密钥导出的密码体制。
3.10
会话密钥sessionkey
处于层次化密钥结构中的最低层,仅在一次会话中使用的密钥。
3.11
用户密钥userkeypair
存储在设备内部的用于应用密码运算的非对称密钥对,包含签名密钥对和加密密钥对。
3.12
椭圆曲线算法EclipseCurveCrypto
TODO:
3.13
杂凑算法hash
TODO:
3.14
杂
TODO:
3.15
4符号和缩略语
下列缩略语适用于本标准:
CA证书认证系统CertificationAuthority
CRL证书撤销列表CertificateRevocationList
DERDistinguishedEncodingRules
DNDistinguishedName
DSA数字签名算法DigitalSignatureAlgorithm
ECC椭圆曲线密码学EllipticCurveCryptography
ECDSA椭圆曲线数字签名算法EllipticCurveDigitalSignatureAlgorithm
PKI公钥基础设施PublicKeyInfrastructure
HTTP超文本传输协议HypertextTransferProtocol
IPInternetProtocol
LDAP轻型目录访问协议LightweightDirectoryAccessProtocol
NIST美国国家标准研究所NationalInstituteofStandardsandTechnology
OID对象标识符objectidentifier
RDNRelativeDistinguishedName
RFCRequestForComments
URI统一资源定位符UniformResourceIdentifier
SM1国标对称加密算法
SM2国标ECC椭圆曲线算法
SM3国标密码杂凑算法
WAPIWLANAuthenticationandPrivacyInfrastructure
X.509
DN可辨识名
RDN相对可辨识名
CMS
5OID定义
SM2算法属于椭圆曲线非对称加密算法,它目前包含着超过一种的椭圆曲线参数定义(GB192,GB256),同时在证书签名时,配套使用的杂凑算法也有不同选择,为了规范证书签名时使用的椭圆曲线参数和杂凑算法组合,使用OID方式标识证书中采用的椭圆曲线算法及其杂凑算法组合:
(PS:
是否采用10045可讨论)
1(ISO).2(member-body).156(cn).197(gmj).1(crypto).502(ECDSA-with-SCH)(?
)
1(ISO).2(member-body).156(cn).197(gmj).1(crypto).504(ECDSA-with-SHA1)(?
)
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).4(signatures).1(ECDSA-with-SHA224)
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).4(signatures).2(ECDSA-with-SHA256)
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).4(signatures).3(ECDSA-with-SHA384)
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).4(signatures).4(ECDSA-with-SHA512)
特别需要注意的是,对于ECDSA-with-SHA1算法识别时应该兼容NIST标准:
1(ISO).2(member-body).840(USA).10045(ansi-x9-62).1(ECDSA-with-SHA1)义DSA79AECDSA192-).156(cn).11235________________________________________________________________________________________________
在对使用的公私钥进行表达时,需要指定所使用的椭圆曲线,在SM2算法中使用的椭圆曲线使用OID定义如下:
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).3(curve).1(prime).1(GB192)
1(ISO).2(member-body).156(cn).197(gmj).10045(ecc).3(curve).1(prime).7(GB256)
对于基于SM2算法的数字证书,其中公钥信息在表达时需要指明其类型,这里采用国际标准中对ECDSA公钥的定义:
(来源自RFC3279)
1(ISO).2(member-body).840(USA).10045(ansi-x9-62).2(keytype).1(ecdsapublickey)义DSA79AECDSA192-).156(cn).11235________________________________________________________________________________________________
另外与SM2算法并列的国家标准WAPI协议中采用的签名算法是国家密码管理局批准的基于SHA-256杂凑算法的ECDSA-192椭圆曲线数字签名算法,它的签名算法标识用如下:
1(ISO).2(member-body).156(cn).11235(bwips).1(crypto).1(ECC).1(ECDSA192-with-SHA256)
它的椭圆曲线用标识如下:
1(ISO).2(member-body).156(cn).11235(bwips).1(crypto).1(ECC).2(curve).1(curve1)
6X.509v3证书
X.509v3证书包括证书主题和一系列属性数据。
证书由证书版本号、证书序列号、用于证书签名的签名算法、版本号、证书有效期、公钥信息等组成,具体的格式定义请参考(RFC3280)。
CA发放证书是用于用户相互认证的过程,这个认证过程要求这个用户获得另一个用户的公钥。
为了保证所有用户相信这个公钥,CA中心采用数字签名技术来保证信息的完整性和签名者的不可抵赖性。
CA中心也可增加证书扩展,它包括CA和用户的其它额外信息等。
所有证书路径开始于一个信任根。
一个信任根是一个用户信任的CA。
信任根的公钥以信任根证书的形式被发送到所有证书的用户。
一个信任根证书包括:
●自签名,用与公钥相对应的私钥进行签名,公钥包含在对象公钥域里。
●在主题公钥域中包含任何需要的参数,用于证书数字签名的算法需要这些参数。
●只有极少或扩展项或不包含扩展项。
●被保存在受保护的存储器里面,或者其它措施防止侵入者改动。
●以授权的方式被传递到应用或用证书的系统。
在信任根上的签名不能鉴别该证书。
在中国,目前没有基于SM2算法的可信的单根证书覆盖整个国内的证书应用领域(?
应该如何描述国内目前的现状)。
被证书用于应用的信任根可能是一个给它颁发证书的CA,也可能是CA中的最顶层。
X.509v3证书为CA提供一个组织公钥与属性、证书撤销列表等信息的机制。
标准的证书扩展项为X.509v3证书而定义,这些扩展项提供一些方法来增加一定数量的信息,有利于X.509v3证书使用到各种应用环境。
7X.509v2证书撤销列表
CA用证书撤销列表去公示被撤销的证书。
证书撤销列表作为属性被存储在目录中,并且被依赖它的机构来确认用户的证书是否被撤销。
证书撤销列表的域包括鉴定发起者、当前证书撤销列表生成的日期、下一个证书撤销列表生成的日期和被撤销用户的证书。
如果一个CA中心发布了很大数量的证书,那么就需要通过发布点机制来保证证书撤销列表不会变得很大,这时候就要求CA中心发放分块的证书撤销列表,以保证传输和访问的便利性。
CA中心可以选择使用在线撤销机制来增补证书撤销列表。
8可辨识名(DN)编码
x.509证书和证书撤销列表包括很多可辨识名,它们能区分证书和证书撤销列表的发布者、证书对象和证书撤销列表的分布点。
一个可辨识名由一系列相对可辨识名(RDNs)组成,每一个RDN由一套属性类型和值对组成。
在大部分情况下,一个RDN仅仅包括一个单属性类型和值对,但在一些场合下(比方说,一个RDN包括不止一个属性类型和值对)多值的RDN可能更合适。
通常,多值的RDNs不应该用于标识CA中心的DN或标识证书撤销列表的分布点的DN中。
当多值的RDNs使用在终端实体的DN中时,它们应该是包含在DN中的最终RDN项(即只能是DN的字符串表达中的第一项(RFC2253)),且没有多值的RDN包含两个实例的属性类型。
简而言之,对于发布者DN来说,其中的RDN都应该是单值的,对于终端实体,RDN也推荐使用单值,在特定的要求下,可以使用多值。
绝大多数在DN中的属性使用目录字符串(DirectoryString)语法来进行标识。
目录字符串(DirectoryString)允许以下字符系列去对属性进行编码:
PrintableString,TeletexString,BMPString,UniversalString,andUTF8String.PrintableString是当前广泛应用于DN属性值编码中。
PrintableString是一套ASCII编码。
它不包括大部分国际语言所要求的字符。
UTF8String是一种支持所有可识别书写语言的编码,包括一些古时代的语言(例如,古代北欧文字)。
DN比较在X.509V3证书路径确认中是一个非常重要的步骤,特别对于DN链和DN约束计算。
当名字用不同的字符集编码时,大部分传统的实现将不能完成名字比较。
为了简化校正路径确认操作,本标准要求CA中心在发放实体证书或其它扩展时,它的发布者DN项需要与发布者证书中的DN项采用同样的对象选择字符集。
也就是说,如果一个CA中心在它的发行者的CA证书和证书撤销列表中使用PrintableString编码它自己的DN时,被签发的交叉证书要用同样的字符集去规范CA的DN。
同时上面的DN约束条件也适用于CA证书中,CA的主题DN和发布者DN都要用于证书路径验证,为了保证DN链被正确地应用,对于CA证书中DN的每一个属性值编码,同样的编码被用来对下级CA书的发布者DN相应的属性值进行编码。
一般而言,在基于SM2算法的证书与黑名单中,除了特定要求(在RFC3280中定义的,Email使用IA5String,C使用两个字节的PrintableString)的RDN,均应该采用UTF8String。
9使用统一定位符(URI)
统一定位符使用在证书与证书撤销列表的五个不同扩展中:
cRLDistributionPoints、issuingDistributionPoint、FreshestCRL、authorityInfoAccess、subjectInfoAccess。
主要的访问协议包括:
LDAP和HTTP。
关于统一定位符的规范细节在RFC2255和RFC1738中进行了定义。
除了在权威信息访问(authorityInfoAccess)扩展项中使用id-ad-ocsp模式以外,所有的URI都应该有“LDAP”或“HTTP”前缀来指定对应的信息是通过LDAP协议访问目录或是通过HTTP方式进行下载。
对于id-ad-ocsp访问方法中,URI只允许使用“HTTP”前缀,这表示只能使用HTTP传输协议来进行OCSP的请求与响应消息传送。
在URI中的主机名应该是一个完整的域名或IP地址,服务器的端口号如果不是默认端口号则必须明确指定(HTTP的默认端口是80,LDAP的默认端口是389,对于cRLDistributionPoints和FreshestCRL扩展,URI是一个指向指代证书当前状态的证书撤销列表,如果使用LDAP,URI必须包括含有证书撤销列表的节点的完全DN路径和供查询定位的属性值,比如certificateRevocationList,authorityRevocationList,或者deltaRevocationList。
如果存储证书撤销列表的目录需要明确指定"binary"属性,那么在URI表达时,应该明确增加";binary"。
如果使用HTTP方式,URI中必须指向一个具备".crl"扩展名的文件,文件应该是一个DER编码的证书撤销列表(RFC2585)。
注意,如果证书撤销列表中也包括发布点,那么它的值应该和相关证书中的发布点表达一致。
下面是一些出现cRLDistributionPoints,FreshestCRL和issuingDistributionPoint中的一些URI的例子:
ldap:
//smime2.nist.gov/cn=GoodCA,o=TestCertificates,c=US?
certificateRevocationList;binary
ldap:
//129.6.20.71/cn=onlyContainsCACertsCA,o=TestCertificates,c=US?
authorityRevocationList;binary
http:
//CRL
权威信息访问扩展项使用URI的目的有两个。
当使用id-ad-caIssuers访问方法,它指定了签发者证书的位置。
如果使用LDAP,URI必须包括含有指定证书的节点的完全DN路径和供查询定位的属性值,比如cACertificate或crossCertificatePair。
如果存储证书的目录需要明确指定"binary"属性,那么在URI表达时,应该明确增加";binary"。
如果使用HTTP方式,URI中必须指向一个具备".p7c"扩展名的文件,文件应该是一个只包含证书的CMS消息(RFC3851)。
CMS消息中可以包含在整个签发者证书路径上的所有证书,也可以只包含签发者的证书,该签发者证书的公钥用于验证本证书的签名。
,
以下是用在authorityInfoAccess扩展中,当使用id-ad-caIssuers方法的一些示例。
ldap:
//129.6.20.71/cn=Good%20CA,o=Test%20Certificates,c=US?
cACertificate;binary,crossCertificatePair;binary
http:
//C
当使用id-ad-ocsp访问方法时,访问路径被指向提供证书状态信息的OCSP服务器(RFC2560)。
URI此时包含一个访问路径。
当有隐私保护要求时,可以使用HTTPS协议进行保护。
此时,默认的端口变成443,如果不是该端口,则需要在URI中明确表达。
对于主题信息访问使用id-ad-caRepository方法时,其使用方法和权威信息访问使用id-ad-caIssuers方法完全一致。
10关于算法的强度的说明
本标准中只允许使用SM2算法中明确规定的算法去签名证书和证书撤销列表。
特别需要提到的是,80位安全强度的加密算法(1024位的RSA、1024位的DSA、160位的ECDSA和SHA-1)已经临近加密算法生命周期的末端。
用这些算法的PKI基础设施都应当迁移到基于SM2算法的体系。
另外,大于256位安全强度(例如,4096位的RSA、384位的ECDSA、SHA-384和SHA-512)的加密算法将大大影响其性能.这些算法目前仅适合于高敏感度数据(例如,机密数据)而不是通用数据。
11证书内容表
本节包含一系列证书内容表。
每一个表列出了一个特别类型证书或证书撤销列表的证书内容。
在PKI体系中将被广泛支持的可选特征也被识别,这些属性将包含在签发者属性中。
在实际应用中,证书和证书撤销列表中可能还会包括局部应用中非严格扩展等其它信息,但是通用的PKI客户端将不会去处理这些额外信息。
另外,对于未列在工作表中的关键扩展,不允许在中国的PKI证书或证书撤销列表内容中使用。
以下