PKCS #6: Extended- Certificate Syntax Standard (PKCS #6: 扩展证书语法标准)

PKCS #6: 扩展证书语法标准
版本 V1.5


范围:
这个规范描述了一个扩展证书的的语法。一个外部证书由一个X.509公钥证书和一个属性集合组成,由签发者和X.509的公钥证书一起签名。因此,属性和相关的X.509公钥证书可以使用单独的公钥操作验签,并且如果需要,可以从中提取一个普通的X.509证书,例如为了PEM(安全增强电子邮件)。
目的是包含更多的属性来扩展验证过程,而不仅仅是验证给定实体的公钥。PKCS#9给出了非详尽的列表。
对这个规范的初步应用包含在PKCS#7中,但也期望有其它的应用被开发出来。
引用:
PKCS#1
PKCS#7
PKCS#9
RFC1422 PEM相关
X.208 ASN.1相关
X.209 BER相关
X.500 目录概述
X.501 目录模型
X.509 目录认证


定义
基于本文档的目的,使用如下的定义:
AlgorithmIdentifier: 算法标识符,以及与之相关的参数。这个类型在X.509中定义。
Attribute: 包含一个或者多个属性类型值的类型。这个类型在X.501中定义。
ASN.1:抽象语法标识符,在X.208中定义。
BER:基本编码规则,在X.209中定义。
Certificate:一个用数字签名将实体的可辨别名称与公钥绑定起来的类型。这个类型在X.509中定义。这个类型也包含了证书签发者的可辨别名称,一个发行者特定的序列号,发行者签名算法标识符,和一个有效期。附录A给出了更多的信息。
DER:确定编码规则,在X.509中定义。
Name:在X.509目录中唯一的或者可辨别的对象类型。这个类型在X.501中定义。在X.509证书中,名字标识了证书发行者和被证明的公钥实体。
PEM:互联网安全增强电子邮件,定义在RFC 1422及相关的文档中。


符号和缩写
这个规范没有定义符号和缩写。


概览
下一章指定了扩展证书的语法,附录回顾了X.509证书的意义。
这个规范导出了一个类型:ExtendedCertificate。


扩展证书语法
这章给出了扩展证书的语法。
一个扩展证书由3部分组成:“扩展证书信息“,签名算法标识符,“扩展证书信息”的数字签名。扩展证书信息由一个X.509证书(已经由发行者签名),提供实体其它信息的属性的集合。对扩展证书签名的发行者和对X.509证书签名的发行者为同一个。
组成一个扩展证书的流程包括如下几个步骤:
1.证书发行者将一个X.509证书和一些属性的集合链接起来,组成ExtendedCertificateInfo值。
2.证书发行者使用私钥对ExtendedCertificateInfo签名。
3.ExtendedCertificateInfo,签名算法标识符,和签名整理到一起形成以下定义的ExtendedCertificate值。
这章被分为两部分,第一部分描述了扩展证书信息ExtendedCertificateInfo,第二部分描述了顶级类型ExtendedCertificate。


注意
在哪些X.509证书和扩展证书都支持的应用中,建议使用以下的语法:
ExtendedCertificateOrCertificate ::= CHOICE {
certificate Certificate, -- X.509
extendedCertificate [0] IMPLICIT ExtendedCertificate
}
证书编码采用和X.509证书相同的BER编码,并且两种证书可以通过版本区分,因为扩展证书的版本为0。
扩展证书在X.509证书基础上扩展而不是直接替代,有至少四种原因:
1.切换到X.509证书语法是非常容易的。
2.X.509证书可以导出以兼容更多的规范(比如PEM)。
3.X.509和扩展证书可以使用同一个公钥验签,因为它们根本上就是同一个发行者签名的。
4.有一点点的冗余,扩展证书中增加的信息包含了X.509证书中已经包含的属性,比如发行者名字,主题。


ExtendedCertificateInfo
ExtendedCertificateInfo的ASN.1描述如下:
ExtendedCertificateInfo ::= SEQUENCE {
version Version,
certificate Certificate,
attributes Attributes 
}


Version ::= INTEGER
Attributes ::= SET OF Attribute


ExtendedCertificateInfo的属性有如下意义:
version 版本号,为了兼容未来的版本,此规范的版本为0。
certificate 证书,X.509证书。
attributes 属性的集合,这些属性是证书主题的附加信息。此处可能用到的一些属性在PKCS#9中定义。


ExtendedCertificate
ExtendedCertificate的ASN.1描述如下:
ExtendedCertificate ::= SEQUENCE {
extendedCertificateInfo ExtendedCertificateInfo,
signatureAlgorithm SignatureAlgorithmIdentifier,
signature Signature 
}

SignatureAlgorithmIdentifier ::= AlgorithmIdentifier
Signature ::= BIT STRING

ExtendedCertificate属性有如下的意义:
extendedCertificateInfo 扩展证书信息,是需要签名的值。
signatureAlgorithm 标识了扩展证书信息签名用到的签名算法(以及关联的参数)。例如PKCS#1中定义的md2WithRSAEncryption或者md5WithRSAEncryption。
signature 是证书发行者使用私钥对扩展证书信息的的签名结果。


签名过程包含两个步骤:
1.extendedCertificateInfo信息属性的值是DER编码为字节串。
2.步骤1的结果使用证书发行者私钥和特定的签名算法签名,生成特定字节串。


注意
ExtendedCertificate的标识也可以使用X.509定义的宏SIGNED来描述:
ExtendedCertificate ::= SIGNED ExtendedCertificateInfo


附录A. X.509公钥证书
类似X.509的公钥证书确定了特定公钥系统的互信体系。通过对一个证书签名,证书签发机构将实体的名称和实体的公钥等信息绑定到一起。通过验证证书的签名,信任证书颁发机构的用户可以进而相信实体的公钥。
因为证书是公钥体系互操作性最重要的部分,PKCS已经通过了使用X.509证书。这显著的提高了和其它使用X.509证书系列应用的兼容性,比如PEM。
这个附录描述了X.509证书的语法,以作为参考的目的。确切的说,它描述了RFC 1422中描述的语法的修正版本,回写到1988的X.509标准。
一个X.509证书由3部分组成:“证书信息”,签名算法标识符,对证书信息的签名。证书信息又实体的可辨认名称,实体的公钥,证书发行者的可辨识名称,以及一个发行者定义的序号,一个签名算法标识符,和有效期组成。
证书的构建包括如下的步骤:
1.证书发行者组建包含证书信息的CertificateInfo值。
2.使用证书发行者的私钥签名CertificateInfo信息。
3.CertificateInfo值,签名算法标识符,和证书发行者的签名整理到一起成为如下定义的Certificate值。
以下的讨论分成两个部分。第一部分描述了证书信息CertificateInfo,第二部分描述了顶级的Certificate。


CertificateInfo
CertificateInfo的ASN.1结构如下:
CertificateInfo ::= SEQUENCE {
version [0] Version DEFAULT v1988,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo 
}
Version ::= INTEGER { v1988(0) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
notBefore UTCTime,
notAfter UTCTime 
}
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING 
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY ALGORITHM OPTIONAL 
}
CertificateInfo的属性有如下意义:
1.version 版本号,默认值为0
2.serialNumber 发行者定义的证书串行号。特定证书发行者发行的每个证书,串行号都不相同。
3.signature 标明了发行者使用的签名算法。
4.issuer 表明了发行者的可分辨的名字。
5.validity 表明了证书的有效期。
6.subject 标识了证书主题的可分辨名字。
7.subjectPublicKeyInfo 包含了被认证的公钥信息。信息标识标识了实体的公钥算法,比如:X.509中的rsa,以及PKCS#1的rsaEcryption。信息也包含实体公钥的比特串表示。对刚才提到的所有公钥算法,比特串包含了X.509/PKCS#1类型的公钥的BER编码。


Certificate
一个X.509证书有如下的格式:
Certificate ::= SEQUENCE {
certificateInfo CertificateInfo,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING 
}
Certificate类型的属性有如下含义:
1.certificateInfo 是证书信息,它是被签名的值。
2.signatureAlgorithm 签名算法标识了证书信息签名需要的签名算法(和相关的参数)。比如PKCS#1中的md2WithRSAEncryption 和 md5WithRSAEncryption。这个属性应该和CertificateInfo中的signature相同。
3.signature 是证书发行者的私钥对证书信息的签名结果。
签名过程包含两个步骤:
1.certificateInfo属性的值是DER编码的字节串表示。
2.第一步的结果使用证书发行者的私钥和指定的签名算法生成的比特串标识的签名。


注意
Certificate的ASN.1格式也可以如下表示:
Certificate ::= SIGNED SEQUENCE {
version [0] Version DEFAULT v1988,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo 
}


版本历史
版本1.0 - 1.3
版本1.4
版本1.5


翻译
[email protected]

你可能感兴趣的:(PKCS #6: Extended- Certificate Syntax Standard (PKCS #6: 扩展证书语法标准))