X.509证书请求消息格式( 三 )


thisMessage[0]BITSTRING,
--此项含有拥有私钥的证实,并且此项包括私钥本身(被加密) 。
subsequentMessage[1]SubsequentMessage,
dhMAC[2]BITSTRING}
--仅用于协议密钥,在此项中证实拥有私钥,此项包括一个基于来自终端实体的私
有的
--DH钥和CA的公共的DH钥的密钥的MAC(基于certReq的参数的DER编码值,

--必须都包括subject和公钥);dhMAC必须根据附录A中的说明计算出来 。
SubsequentMessage::=INTEGER{
encrCert(0),
--要求结果证书为了终端实体被加密,接着POP将被一个确认消息所证实
challengeResp(1)}
--要求为了证实拥有私钥,CA/RA参与进和终端实体之间的回答挑战的交流 。
含有此规格的协议若要成为一个完整的协议将包括确认和回答挑战的消息 。
4.4.1基于密码的MAC的使用
当publicKeyMAC被用于POPOSigningKeyInput中来证实请求的真实性,下述的算法将
被使用 。
PBMParameter::=SEQUENCE{
saltOCTETSTRING,
owfAlgorithmIdentifier,
--使用单向函数的算法标识符(建议使用SHA-1算法)
iterationCountINTEGER,
--OWF被应用的次数
macAlgorithmIdentifier
--MAC的算法标识符(例如DES-MAC,Triple-DES-MAC[PKCS11],
}--或HMAC[RFC2104,RFC2202])
使用PBMParameter来计算publicKeyMAC,由此来证实公钥证书请求来源的过程可以
由两部分组成 。第一部分使用共享的秘密信息来生成一个MAC密钥 。第二部分散列公钥,
并用MAC密钥来产生一个确认值 。
第一部分算法的初始化假设存在一个共享的分布在一个可信任的位于CA/RA和终端实
体之间的方式的秘密 。salt值被加之与此共享的秘密,并使用iterationCount次单向散列函
数 。这样,此共享的秘密作为第一次输入,接下来每一次重复计算中,上一次的输出作为这
一次的输入,最后产生密钥K 。
在第二部分中,K和公钥作为输入来产生publicKeyMAC,如下所示:
publicKeyMAC=Hash(KXORopad,Hash(KXORipad,publickey)),opad、ipad定义于
RFC2104 。
单向散列函数的算法标识符是SHA-1{13143226},MAC的算法标识符是
HMAC-SHA1{136155812} 。
5CertRequest语法
CertRequest由请求标识符、证书内容模板和一组可选的控制信息组成 。
CertRequest::=SEQUENCE{
certReqIdINTEGER,--使请求和回答相匹配的标识符
certTemplateCertTemplate,--所发布证书的选择域
controlsControlsOPTIONAL}--有关证书发布的属性信息
CertTemplate::=SEQUENCE{
version[0]VersionOPTIONAL,
serialNumber[1]INTEGEROPTIONAL,
signingAlg[2]AlgorithmIdentifierOPTIONAL,
issuer[3]NameOPTIONAL,
validity[4]OptionalValidityOPTIONAL,
subject[5]NameOPTIONAL,
publicKey[6]SubjectPublicKeyInfoOPTIONAL,
issuerUID[7]UniqueIdentifierOPTIONAL,
subjectUID[8]UniqueIdentifierOPTIONAL,
extensions[9]ExtensionsOPTIONAL}
OptionalValidity::=SEQUENCE{
notBefore[0]TimeOPTIONAL,
notAfter[1]TimeOPTIONAL}--至少存在一个
Time::=CHOICE{
utcTimeUTCTime,
generalTimeGeneralizedTime}
6Controls语法
证书请求的产生可以包括一个或多个有关请求过程的控制值 。
Controls::=SEQUENCESIZE(1..MAX)OFAttributeTypeAndValue
以下的控制被定义为:regToken,authenticator,pkiPublicationInfo,pkiArchiveOptions,
oldCertID,protocolEncrKey(这些项被认为可以超时扩展) 。
6.1注册号(RegistrationToken)控制
regToken控制包含以前的信息(或是基于秘密的评估或是基于了解的信息),这些信息
往往被CA用于在颁发证书前验证请求者身份 。一收到包含regToken的证书请求,CA就验
证这些信息,以便确认在证书请求中的声称的身份 。

推荐阅读