HTTP/1.1 200 OK Date: Tue, 09 Apr 2002 06:23:24 GMT Server: Apache/1.3.20 (Unix) Last-Modified: Fri, 14 Jun 1996 22:24:00 GMT ETag: "304c1b-172c7-31c1e680" Accept-Ranges: bytes Content-Length: 94919 Connection: close Content-Type: text/plain Internet Draft S. Farrell (SSE) PKIX Working Group C. Adams (Nortel) draft-ietf-pkix-ipki3cmp-00.txt W. Ford (Nortel) Expires in 6 months June 1996 Internet Public Key Infrastructure Part III: Certificate Management Protocols Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of 6 months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." To learn the current status of any Internet-Draft, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za(Africa), nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). Abstract This is the third draft of the Internet Public Key Infrastructure X.509 Certificate Management Protocols. This document is based on sections 7, 9 and 10 of draft-ietf-pkix-ipki-00.txt. Many changes have been made as a result of discussion at the Dallas IETF in December 1995, the Los Angeles IETF in March 1996, and discussion on the ietf-pkix@tandem.com mail list. The intent of this document is to generate further productive discussion and to build consensus. 1. Executive Summary << To be supplied. >> 2. PKI Management Overview The PKI must be structured to be consistent with the types of individuals who must administer it. Providing such administrators Farrell, Adams, Ford [Page 1] INTERNET-DRAFT June 1996 with unbounded choices complicates not only the software required but also increases the chances that a subtle mistake by an administrator or software developer will result in broader compromise. Similarly, restricting administrators with cumbersome mechanisms will cause them not to use the PKI. Management protocols are required to support on-line interactions between Public Key Infrastructure (PKI) components. For example, a management protocol might be used between a CA and a client system with which a key pair is associated, or between two CAs which cross- certify each other. 2.1 PKI Management Model Before specifying particular message formats and procedures we first define the entities involved in PKI management and their interactions (in terms of the PKI management functions required). We then group these functions in order to accomodate different identifiable types of end entities. 2.1.1. Definitions of PKI Entities The entities involved in PKI management include the end entity (i.e. the entity to be named in the subject field of a certificate) and the certification authority (i.e. the entity named in the issuer field of a certificate). A registration authority may also be involved in PKI management. 2.1.1.1. Subjects and End Entities The term "subject" is used here to refer to the entity named by the subject field of a certificate; when we wish to distinguish the tools and/or software used by the subject (e.g. a local certificate management module) we will use the term "subject equipment". It is important to note that the end entities here will include not only human users of applications, but also applications themselves (e.g. for IP security). This factor influences the protocols which the PKI management operations use; e.g., applications software is far more likely to know exactly which certificate extensions are required than are human users. PKI management entities are also end entities in the sense that they are sometimes named in the subject field of a certificate or cross-certificate. Where appropriate, the term "end- entity" will be used to refer to end entities who are not PKI management entities. All end entities require secure local access to some information -- at a minimum, their own name and private key, the name of a CA which is directly trusted by this subject and that CA's public key (or a digest of the public key where a self-certified version is available elsewhere). Implementations may use secure local storage for more than this minimum (e.g. the end entity's own certificate or Farrell, Adams, Ford [Page 2] INTERNET-DRAFT June 1996 application-specific information). The form of storage will also vary -- from files to tamper resistant cryptographic tokens. Such local trusted storage is referred to here as the end entity's Personal Security Environment (PSE). << The PSE content is not defined further here as it is very dependent on equipment, et cetera. However, an interchange format for a generic PSE might be useful - we could consider using a CertRep message for this.>> 2.1.1.2. Certification Authority The certification authority (CA) may or may not actually be a real "third party" from the end entity's point of view. Quite often, the CA will actually belong to the same organisation as the end entities it supports. Again, we use the term CA to refer to the entity named in the issuer field of a certificate; when it is necessary to distinguish the software or hardware tools used by the CA we use the term "CA equipment". The CA equipment will often include both an "off-line" component and an "on-line" component, with the CA private key only available to the "off-line" component. This is, however, a matter for implementors (though it is also relevant as a policy issue). 2.1.1.3. Registration Authority In addition to end entities and CAs, many environments call for the existence of a registration authority (RA) separate from the certification authority. The functions which the registration authority may carry out will vary from case to case but may include personal authentication, token distribution, revocation reporting, name assignment, key generation, archival of key pairs, et cetera. This document views the RA as an optional component - when it is not present the CA is assumed to be able to carry out the RA's functions so that the PKI management protocols are the same from the end entity's point of view. Again, we distinguish, where necessary, between the RA and the tools used (the "RA equipment"). Note that an RA is itself an end entity. We further assume that all RAs are in fact certified end entities and that the RA private key is usable for signing. How a particular CA equipment identifies some end entities as RAs is an implementation issue (so there is no special RA certification operation). We do not mandate that the RA is certified by the CA with which it is interacting at the moment (so one RA may work with more than one CA whilst only being certified once). Farrell, Adams, Ford [Page 3] INTERNET-DRAFT June 1996 In some circumstances end entities will communicate directly with a CA even where an RA is present. For example, for initial registration and/or certification the subject may use its RA, but communicate directly with the CA in order to refresh its certificate. The reasons which justify the presence of an RA can be split into those which are due to technical factors and those which are organizational in nature. Technical reasons include the following. -If hardware tokens are in use, then not all end entities will have the equipment needed to initialize these; the RA equipment can include the necessary functionality (this may also be a matter of policy). -Some end entities may not have the capability to publish certificates; again, the RA may be suitably placed for this. -The RA will be able to issue signed revocation requests on behalf of end entities associated with it, whereas the end entity may not be able to do this (if the key pair is completely lost). Some of the organisational reasons which argue for the presence of an RA are the following. -It may be more cost effective to concentrate functionality in the RA equipment, than to supply functionality to all end entities (especially if special token initialization equipment is to be used). -Establishing RAs within an organization can reduce the number of CAs required, which is sometimes desirable. -RAs may be better placed to identify people with their "electronic" names, especially if the CA is physically remote from the end entity. -For many applications there will already be in place some administrative structure so that candidates for the role of RA are easy to find (which may not be true of the CA). 2.1.2. PKI Management Requirements The protocols given here meet the following requirements on PKI management. 2.1.2.1. PKI management must conform to ISO 9594-8 and the associated draft amendment (DAM) 2.1.2.2. PKI management must conform to the other parts of this series. Farrell, Adams, Ford [Page 4] INTERNET-DRAFT June 1996 2.1.2.3. It must be possible to regularly update any key pair without affecting any other key pair 2.1.2.4. The use of confidentiality in PKI management protocols must be kept to a minimum in order to ease regulatory problems 2.1.2.5. PKI management protocols must allow the use of different industry-standard cryptographic algorithms, (specifically including, RSA, DSA, MD5, SHA-1) -- this means that any given CA, RA, or end entity may, in principal, use whichever algorithms suit it for its own key pair(s). 2.1.2.6. PKI management protocols must not preclude the generation of key pairs by the end entity concerned, an RA, or a CA -- key generation may also occur elsewhere, but for the purposes of PKI management we can regard key generation as occurring wherever the key is first present at an end entity, RA or CA. 2.1.2.7. PKI management protocols must support the publication of certificates by the end entity concerned, an RA or a CA. Different implementations and different environments may choose any of the above approaches. 2.1.2.8. PKI management protocols must support the production of CRLs by allowing certified end entities to make requests for the revocation of certificates - this must be done in such a way that the denial-of-service attacks which are possible are not made simpler. 2.1.2.9. PKI management protocols must be usable over a variety of "transport" mechanisms, specifically including, mail, http, TCP/IP and ftp. 2.1.2.10. Final authority for certification creation rests with the CA; no RA or end entity equipment should assume that any certificate issued by a CA will contain what was requested -- a CA may alter certificate field values or may add, delete or alter extensions according to its operating policy; the only exception to this is the public key, which the CA may not modify (assuming that the CA was presented with the public key value). In other words, all PKI entities (end entities, RAs and CAs) must be capable of handling responses to requests for certificates in which the actual certificate issued is different from that requested -- for example, a CA may shorten the validity period requested. 2.1.2.11. A graceful, scheduled change-over from one non-compromised CA key pair to the next must be supported (CA key update). 2.1.2.12. A subject whose PSE contains the new CA public key (following a CA key update) must also be able to verify certificates verifiable using the old public key. Farrell, Adams, Ford [Page 5] INTERNET-DRAFT June 1996 2.1.2.13. End entities who directly trust the old CA key pair must be able to verify certificates signed using the new CA private key (following a CA key update). This is required for situations where the old CA public key is "hardwired" into the end entity's cryptographic equipment (e.g., smartcard memory). 2.1.2.14. The Functions of an RA may, in some implementations or environments, be carried out by the CA itself. The protocols should be designed so that end entities will use the same protocol regardless of whether the communication is with an RA or CA. 2.1.3. PKI Management Operations The following diagram shows the relationship between the entities defined above in terms of the PKI management operations. The numbers in the diagram indicate "protocols" in the sense that a defined set of PKI management messages can be sent along each of the numbered lines. cert. publish +------------+ +---+ +------------ | End Entity | Operations | C | | 7 +------------+ | e | <--------+ | ^ initial | r | 1 | | 2 registration/ | t | PKI "users" | | certification | | | | key pair recovery | / | | | key pair update | | | | certificate update | C | V | revocation request | R | -------+-+-----+-+------+-+----- | L | PKI management | ^ | ^ | | entities 1 | | 2 1 | | 2 | | V | | | | R | 7 +------+ 4 | | | e | <------------ | RA | <-----+ | | | p | cert. | | ----+ | | | | o | publish +------+ 3 | | | | | s | | | | | | i | V | V | | t | 8 +------------+ 9 | o | <------------------------| CA |-------> | r | +------------+ "out-of-band" | y | cert. publish | ^ publication | | CRL publish | | +---+ | | cross-certification | | 6 cross-certificate | | update | | V | +------+ | CA-2 | +------+ Figure 1 - PKI Entities Farrell, Adams, Ford [Page 6] INTERNET-DRAFT June 1996 At a high level the set of functions for which management messages are defined is as follows. -CA establishment: When establishing a new CA, certain steps are required (e.g., production of initial CRLs). -export of CA public key for "out-of-band" mechanisms: CAs must provide their public keys to end-entities. In order to facilitate interoperability between different CA and end-entity implementations a data structure for this purpose is required. -initial registration/certification: This is the process whereby a subject first makes itself known to a CA or RA, prior to the CA issuing a certificate or certificates for that user. The end result of this process (when it is successful) is that a CA issues a certificate for an end entity's public key, and returns that certificate to the subject and/or posts that certificate in a public repository. This process may, and typically will, involve multiple "steps", possibly including an initialization of the end entity's equipment. For example, the subject equipment must be securely initialized with the public key of a CA, to be used in validating certificate paths. Furthermore, a subject typically needs to be initialized with its own key pair(s). -key pair update: Every key pair needs to be updated regularly (i.e., replaced with a new key pair), and a new certificate needs to be issued. -certificate update: As certificates expire they may be "refreshed" if nothing relevant in the environment has changed. -certificate publication: Having gone to the trouble of producing a certificate some means for publishing it is needed. Note that the above three functions will often be combined. -key pair recovery: As an option, user client key materials (e.g., a user's private key used for decryption purposes) may be backed up by a CA, an RA or a key backup system associated with a CA or RA. If a subject needs to recover these backed up key materials (e.g., as a result of a forgotten password or a lost key chain file), a protocol exchange may be needed to support such recovery. -revocation request: An authorized person advises a CA of an abnormal situation requiring certificate revocation. Farrell, Adams, Ford [Page 7] INTERNET-DRAFT June 1996 -CA key pair update: As with end entities, CA key pairs need to be updated regularly; however, different mechanisms are required. -cross-certification: Two CAs exchange the information necessary to establish cross-certificates between those CAs. -cross-certificate update: Similar to a normal certificate update but involving a cross-certificate. -CRL publication: As for certificates. Note that on-line protocols are not the only way of implementing the above functions. For all functions there are off-line methods of achieving the same result, and this specification does not mandate use of on-line protocols. For example, when hardware tokens are used, many of the functions may be achieved as part of the physical token delivery. Later sections define a set of standard protocols supporting the above operations. The protocols for conveying these exchanges in different environments (on-line, E-mail, and WWW) are also specified. <> 3. Data Structures This section contains descriptions of the data structures required for PKI management messages. Section 4 describes constraints on their values and the sequence of events for each of the various PKI management operations. Section 5 describes how these may be encapsulated in various transport mechanisms. 3.1 Overall PKI Message PKIMessage ::= SEQUENCE { header PKIHeader, body PKIBody, protection PKIProtection } 3.1.1. PKI Message Header All PKI messages require some header information for addressing and transaction identification. Some of this information will also be present in a transport-specific envelope; however, if the PKI message is signed then this information is also protected (i.e. we make no assumption about secure transport). Farrell, Adams, Ford [Page 8] INTERNET-DRAFT June 1996 The following data structure is used to contain this information: PKIHeader ::= SEQUENCE { pvno INTEGER { ietf-version1 (0) }, messageType MessageType, transactionID [1] OCTET STRING OPTIONAL, -- identifies the transaction, i.e. this will be the same in -- corresponding request, response and confirmation messages messageID [2] OCTET STRING OPTIONAL, -- identifies this message uniquely (if needed) senderNonce [3] OCTET STRING OPTIONAL, recipNonce [4] OCTET STRING OPTIONAL, -- nonces used to provide replay protection, senderNonce -- is inserted by the creator of this message; recipNonce -- is a nonce previously inserted in a related message by -- the intended recipient of this message messageTime UTCTime OPTIONAL, -- time of production of this message sender GeneralName, -- identifies the sender for addressing purposes recipient GeneralName, -- identifies the intended recipient for addressing purposes protectionAlg AlgorithmIdentifier OPTIONAL, -- to include the alg. in e.g. signature calculation freeText CHOICE { IA5String, BNPString } OPTIONAL, -- this may be used to indicate context-specific -- instructions (this field is intended for human -- consumption) } MessageType ::= INTEGER { InitReq (0), -- message asking for initialization InitRep (1), -- response to above CertReq (2), -- message asking for a cert. CertRep (3), -- response to above KeyUpdReq (4), -- msg asking for new cert for pub key KeyUpdRep (5), -- response to above KeyRecReq (6), -- msg. asking for key recovery KeyRecRep (7), -- response to above RevReq (8), -- message asking for revocation RevRep (9), -- response to above CrossCertReq (10), -- message asking for cross-certification CrossCertRep (11), -- response to above CAKeyUpdAnn (12), -- announcement of CA key pair update CertAnn (13), -- announcement of a certificate Farrell, Adams, Ford [Page 9] INTERNET-DRAFT June 1996 RevAnn (14), -- announcement of revocation of a cert CRLAnn (15), -- announcement of CRL PKIConfirm (16) -- used for confirmation in 3-way protocols } The transactionID field within the message header is required so that the recipient of a response message can correlate this with the request issued. In the case of an RA there may be many requests "outstanding" at a given moment. The value of this field should be unique from the sender's perspective in order to be useful. <> 3.1.2. PKI Message Body PKIBody ::= CHOICE { -- message-specific body elements [0] InitReqContent, [1] InitRepContent, [2] CertReqContent, [3] CertRepContent, [4] KeyUpdReqContent, [5] KeyUpdRepContent, [6] KeyRecReqContent, [7] KeyRecRepContent, [8] RevReqContent, [9] RevRepContent, [10] CrossCertReqContent, [11] CrossCertRepContent, [12] CAKeyUpdAnnContent, [13] CertAnnContent, [14] RevAnnContent, [15] CRLAnnContent, [16] PKIConfirmContent, } 3.1.3. PKI Message Protection Some PKI messages will be protected for integrity. In that case the following structure is used: PKIProtection ::= SEQUENCE { alg AlgorithmIdentifier OPTIONAL, -- when both this field and the protectionAlg field of the -- PKIHeader are present, they must be the same protectionBits BIT STRING } Farrell, Adams, Ford [Page 10] INTERNET-DRAFT June 1996 The input to the calculation of the protectionBits is the DER encoding of the following data structure: ProtectedPart ::= SEQUENCE { PKIHeader, PKIBody} Note that this is equivalent to the ASN.1 notation: PKIProtection ::= SIGNATURE SEQUENCE { PKIHeader, PKIBody} The protocols required for PKI management use this structure differently, there are four possibilities: - no protection: e.g. to pass an "out-of-band" CA public key - symmetric protection: used in some registration schemes - single signature protection: e.g., when an RA signs a request - double signature protection: e.g., when both end entity and RA sign a request 3.1.3.1. Unprotected PKI messages <> 3.1.3.2. Symmetric protection of PKI messages <> 3.1.3.3. Single signatures on PKI messages <> 3.1.3.4. Double signatures on PKI messages <> Some PKI messages may be signed twice. In this case the PKIProtection structure is also used as follows: pkix-double-sig-alg-id ::= AlgorithmIdentifier -- value TBS -- just an OID; no parameters Farrell, Adams, Ford [Page 11] INTERNET-DRAFT June 1996 The protectionBits field will contain the DER encoding of the following data structure: TwoSigProtection ::= SEQUENCE { firstAlgId [0] AlgorithmIdentifier OPTIONAL, firstSig BIT STRING, secondSigner GeneralName, secondAlgId [1] AlgorithmIdentifier OPTIONAL, secondSig BIT STRING} Where secondSig contains the signature of the DER encoding of the following: secondSigInput ::= SEQUENCE { PKIHeader, PKIBody, PKIProtection, -- version from 1st signer GeneralName, AlgorithmIdentifier OPTIONAL } 3.2 Common Data Structures Before specifying the specific types which may be placed in a PKIBody we define some useful data structures which are used in more than one case. 3.2.1. Requested Certificate Contents Various PKI management messages require that the originator of the message indicate some of the fields which are required to be present in a certificate. The CertTemplate structure allows an end entity or RA to specify as much as they can about the certificate they require. ReqCertContent is basically the same as a Certificate but with all fields optional. Note that even if the originator completely specifies the contents of a certificate they require, a CA is free to modify fields within the certificate actually issued. CertTemplate ::= SEQUENCE { version [0] Version OPTIONAL, -- used to ask for a particular syntax version serial [1] INTEGER OPTIONAL, -- used to ask for a particular serial number signingAlg [2] AlgorithmIdentifier OPTIONAL, -- used to ask the CA to use this alg. for -- signing the cert subject [3] Name OPTIONAL, validity [4] OptionalValidity OPTIONAL, Farrell, Adams, Ford [Page 12] INTERNET-DRAFT June 1996 issuer [5] Name OPTIONAL, publicKey [6] SubjectPublicKeyInfo OPTIONAL, issuerUID [7] UniqueIdentifier OPTIONAL, subjectUID [8] UniqueIdentifier OPTIONAL, extensions [9] Extensions OPTIONAL, } -- the extensions which the requester would like in the cert. OptionalValidity ::= SEQUENCE { notBefore [0] UTCTime OPTIONAL, notAfter [1] UTCTime OPTIONAL } CertTemplates ::= SEQUENCE OF CertTemplate 3.2.2. Encrypted Private Key Where private keys are sent in PKI messages the following data structure is used. EncryptedPrivKey ::= SEQUENCE { privKey BitsAndAlgs, -- the private key encrypted encSymmKey BitsAndAlgs OPTIONAL -- a symmetric key used to encrypt the private key } BitsAndAlgs ::= SEQUENCE { encKey BIT STRING, encAlg [0] AlgorithmIdentifier OPTIONAL, -- algorithm used to encrypt the key keyAlg [1] AlgorithmIdentifier OPTIONAL -- algorithm for which the key is intended to be used } EncryptedPrivKeys ::= SEQUENCE of EncryptedPrivKey Use of this data structure requires that the creator and intended recipient are respectively able to encrypt and decrypt. Typically, this will mean that the end entity has been issued with a secret key shared with the generator of the key pair. If the recipient of the PKIMessage already possesses a private key usable for decryption, then the encSymmKey field may contain a session key encrypted using the recipient's public key. 3.2.3. Status codes and Failure Information for PKI messages All response messages will include some status information. The following values are defined. PKIStatus ::= INTEGER { granted (0), -- you got exactly what you asked for grantedWithMods (1), -- you got something like what you asked for; the -- requester is responsible for ascertaining the differences Farrell, Adams, Ford [Page 13] INTERNET-DRAFT June 1996 rejection (2), -- you don't get it, more information elsewhere in the -- message waiting (3), -- the request body part has not yet been processed, -- expect to hear more later revocationWarning (4) -- this message contains a warning that a revocation is -- imminent revocationNotification (5) -- notification that a revocation has occurred } Responders may use the following syntax to provide more information about failure cases. PKIFailureInfo ::= BIT STRING { -- since we can fail in more than -- one way! badAlg (0), badMessageCheck (1) -- <> } StatusInfo ::= SEQUENCE { status PKIStatus, failInfo PKIFailureInfo OPTIONAL } 3.2.4. Certificate Identification In order to identify particular certificates the following data structure is used. CertId ::= SEQUENCE { issuer GeneralName, serialNumber INTEGER } Furthermore, a list of certificates is identified as follows. Certs ::= SEQUENCE OF Certificate 3.2.5. Publication Information <> In order to allow requesters to indicate where and/or how certificates should be published, or to allow responders to indicate where and/or how certificates have been published, the following syntax is used. PublicationInfo ::= SEQUENCE OF SEQUENCE { pubMethod OBJECT IDENTIFIER, pubDetails OCTET STRING OPTIONAL} Farrell, Adams, Ford [Page 14] INTERNET-DRAFT June 1996 3.2.6. "Out-of-band" CA public key Each CA must be able to publish its current public key via some "out- of-band" means. While such mechanisms are beyond the scope of this document, we define data structures which can support such mechanisms. There are generally two methods available; either the CA directly publishes its public key and associated attributes, or this information is available via the Directory (or equivalent) and the CA publishes a hash of this value to allow verification of its integrity before use. OOBCert ::= Certificate OOBCertHash ::= SEQUENCE { hashAlg AlgorithmIdentifier OPTIONAL, certId CertId OPTIONAL, hashVal BIT STRING} -- hashVal is calculated over DER encoding of an entire OOBCert 3.3 Operation-Specific Data Structures 3.3.1. Initialization Request An Initialization request message (InitReq) contains an InitReqContent data structure which specifies the requested certificate(s). Typically, SubjectPublicKeyInfo, KeyId, and Validity are the template fields which may be supplied for each certificate requested. InitReqContent ::= SEQUENCE { referenceNum INTEGER, protocolEncKey [0] SubjectPublicKeyInfo OPTIONAL, certTemplates CertTemplates } 3.3.2. Initialization Response An Initialization response message (InitRep) contains an InitRepContent data structure which has for each certificate requested a StatusInfo field, a subject certificate, and possibly a private key (encrypted with a session key, which is itself encrypted with the protocolEncKey). InitRepContent also contains a CA signature certificate. InitRepContent ::= SEQUENCE { caSigCert Certificate, response SEQUENCE OF CertResponse } Farrell, Adams, Ford [Page 15] INTERNET-DRAFT June 1996 3.3.3. Registration/Certification Request A Registration/Certification request message (CertReq) contains a CertReqContent data structure which specifies the requested certificate. CertReqContent ::= CertTemplates 3.3.4. Registration/Certification Response A registration response message (CertRep) contains a CertRepContent data structure which has a CA public key, a status value and optionally failure information, a subject certificate, and an encrypted private key. CertRepContent ::= SEQUENCE { caPub [1] OOBCert OPTIONAL, response SEQUENCE OF CertResponse } CertResponse ::= SEQUENCE { status StatusInfo, certifiedKeyPair CertifiedKeyPair OPTIONAL, } CertifiedKeyPair ::= SEQUENCE { certificate [1] Certificate OPTIONAL, privateKey [2] EncryptedPrivKey OPTIONAL } Only one of the failInfo (in StatusInfo) and certificate fields should be present in CertRepResponse (depending on the status). For some status values (e.g., waiting) neither of the optional fields will be present. 3.3.5. Key update request content For key update requests the following syntax is used. Typically, SubjectPublicKeyInfo, KeyId, and Validity are the template fields which may be supplied for each key to be updated. As well, an encryption certificate, or a signature certificate, or both, would typically be specified in latestCerts. KeyUpdReqContent ::= SEQUENCE { endEntityName GeneralName, latestCerts SEQUENCE OF CertId, protocolEncKey [1] SubjectPublicKeyInfo OPTIONAL, certTemplates [2] CertTemplates OPTIONAL } Farrell, Adams, Ford [Page 16] INTERNET-DRAFT June 1996 3.3.6. Key Update response content For key update responses the syntax used is identical to the initialization response. KeyUpdRepContent ::= InitRepContent 3.3.7. Key Recovery Request content For key recovery requests the syntax used is identical to the initialization request InitReqContent. Typically, SubjectPublicKeyInfo and KeyId are the template fields which may be used to supply a signature public key for which a certificate is required. KeyRecReqContent ::= InitReqContent 3.3.8. Key recovery response content For key recovery responses the following syntax is used. For some status values (e.g., waiting) none of the optional fields will be present. KeyRecRepContent ::= SEQUENCE { status StatusInfo, caCerts Certs OPTIONAL, newSigCert Certificate OPTIONAL, keyPairHist SEQUENCE OF CertifiedKeyPair OPTIONAL, } 3.3.9. Revocation Request Content When requesting revocation of a certificate (or several certificates) the following data structure is used. The name of the requestor is present in the PKIHeader structure. RevReqContent ::= SEQUENCE OF RevDetails RevDetails ::= SEQUENCE { certDetails CertTemplate, -- allows requestor to specify as much as they can about -- the cert. for which revocation is requested -- (e.g. for cases in which serialNumber is not available) revocationReason ReasonFlags, -- from the DAM, so that CA knows which Dist. point to use badSinceDate UTCTime OPTIONAL, -- indicates best knowledge of sender crlEntryDetails Extensions} -- requested crlEntryExtensions 3.3.10. Revocation Response Content The response to the above message. If produced, this is sent to the requestor of the revocation. (A separate revocation announcement message may be sent to the subject of the certificate for which revocation was requested.) Farrell, Adams, Ford [Page 17] INTERNET-DRAFT June 1996 RevRepContent ::= SEQUENCE { status StatusInfo, revCerts [0] SEQUENCE OF CertId OPTIONAL, -- identifies the certs for which revocation was requested crls [1] SEQUENCE OF CertificateList OPTIONAL -- the resulting CRLs (there may be more than one) } 3.3.11. Cross certification request content Cross certification requests use the same syntax as for normal certification requests. CrossCertReqContent ::= CertReqContent 3.3.12. Cross certification response content Cross certification responses use the same syntax as for normal certification responses. CrossCertRepContent ::= CertRepContent 3.3.13. CA Key Update Announcement content When a CA updates its own key pair the following data structure may be used to announce this event. CAKeyUpdAnnContent ::= SEQUENCE { oldWithNew Certificate, -- old pub signed with new priv newWithOld Certificate, -- new pub signed with old priv newWithNew Certificate -- new pub signed with new priv } 3.3.14. Certificate Announcement This data structure may be used to announce the existence of certificates. Note that this structure (and the CertAnn message itself) is intended to be used for those cases (if any) where there is no pre-existing method for publication of certificates; it is not intended to be used where, for example, X.500 is the method for publication of certificates. CertAnnContent ::= Certificate Farrell, Adams, Ford [Page 18] INTERNET-DRAFT June 1996 3.3.15. Revocation Announcement When a CA has revoked, or is about to revoke, a particular certificate it may issue an announcement of this (possibly upcoming) event. RevAnnContent ::= SEQUENCE { status PKIStatus, certId CertId, revocationTime UTCTime, badSinceDate UTCTime, crlEntryDetails [0] Extensions OPTIONAL, -- crlEntryExtensions (e.g. reason) crlDetails [1] Extensions OPTIONAL, -- crlExtensions (e.g. crl number) } A CA may use such an announcement to warn (or notify) a subject that its certificate is about to be (or has been) revoked. This would typically be used where the request for revocation did not come from the subject concerned. 3.3.16. CRL Announcement When a CA issues a new CRL (or set of CRLs) the following data structure may be used to announce this event. CRLAnnContent ::= SEQUENCE OF CertificateList 3.3.17. PKI Confirmation content This data structure is used in three-way protocols as the final PKIMessage. Its content is the same in all cases - actually there is no content since the PKIHeader carries all the required information. PKIConfirmContent ::= NULL Farrell, Adams, Ford [Page 19] INTERNET-DRAFT June 1996 4. PKI Management Operations The certificate management protocol exchanges defined in this section support management communications between client systems, each of which supports one or more users, and CAs. In addition, one management protocol exchange is defined for use between two CAs, for the purpose of establishing cross-certificates. Each exchange is defined in terms of a sequence of messages between the two systems concerned. This section defines the contents of the messages exchanged. The protocols for conveying these exchanges in different environments (on-line, E-mail, and WWW) are specified in Section 5. The protocol exchanges defined in this document are as follows. 1. Registration/Certification One-Step Registration/Certification User Initialization/Certification 2. End-Entity Key Pair Update Update for Client-Generated Key Pair Update for Centrally-Generated Key Pair Centrally-Initiated Key Pair Update 3. Encryption Key Pair Recovery 4. Revocation Request 5. Cross-Certification 6. CA Key Pair Update 7. Certificate Publication 8. Revocation Publication 9. CRL Publication 10. Certificate Update 11. Cross-Certificate Update The following notes apply to the protocol exchange descriptions: -In exchanges between a client system and a CA, the protocol exchange is initiated by the client system. The one exception to this is the Centrally-Initiated Key Pair Update exchange. -To provide an upgrade path, a protocol version indicator is always included in the first message of an exchange. -A message type indicator is included in the protected part of all messages. -All messages include an optional transaction identifier which is used to assist correlation of request and response messages for one transaction. This identifier is generated by the initiator of the exchange and will typically include the initiator's name plus a transaction sequence number. -The initial message from the client to the CA may optionally contain the client system time. This is used to facilitate the correction of client time problems by central administrators. -Responses from CA to client include the CA system time. The client can use this time to check that its own system time is within a reasonable range. -Random numbers are used in some of the protocols to prevent replay of the exchanges. Farrell, Adams, Ford [Page 20] INTERNET-DRAFT June 1996 -Responses can be aborted at any time. An enumerated error code is sent from the aborting end and can be decoded into a user readable error string at the other end. Error codes are not specified in this version of this document. -Items in square brackets [] are optional. -In every instance in which a public key is transferred, it is transferred in the form of X.509 subjectPublicKeyInfo, including algorithm identifier and (optional) parameters. -When a new key pair is generated by a client, a key identifier may optionally be sent to the CA along with the public key for inclusion in the certificate. However, the CA may override this value with a key identifier of its own. If the client is concerned about the key identifier value used, it should check the new certificate. -Where this description refers to an encryption key pair, this could be a key pair for RSA key transport or could be key pair for key establishment using, for example, a Diffie-Hellman based algorithm. 4.1 Registration/Certification There are various approaches to this operation. 4.1.1. One-Step Registration/Certification For simple end entities this operation involves an out-of-band (or indeed implicit) request to an RA or CA. If no RA is involved then the CA in question simply prepares a PSE for the end entity. When an RA is involved the RA creates a certification request (CertReq) message for the end entity in question and sends this to the appropriate CA. When an RA is involved the steps required are as follows. 1.The RA gathers the information required for the certification request. 2.The RA creates the certification request message (CertReq); at this point the RA may provide the end entity with its PSE if the PSE doesn't need to contain the end entity's own certificate(s). 3.The CertReq message is transported to the CA. 4.The CA processes the CertReq; this results in the creation of a certification response (CertRep) message. 5.The CertRep message is transported to the RA. 6.The RA processes the CertRep. Depending on its content some looping may be required; that is, the RA may have to await further responses or generate a new CertReq for this end entity <>. Once the required certificates have been acquired the RA can prepare the end entity's PSE (assuming that the PSE contains the end entity's certificates). 7.The end entity receives the PSE and if necessary verifies that the CA public key contained therein is correct. Farrell, Adams, Ford [Page 21] INTERNET-DRAFT June 1996 We impose the following constraints on the certification request message. 1.The RA must provide the protectionAlg field of the PKIHeader and must protect the CertReq message. The name in the sender field of the PKIHeader must be usable when verifying the protection. 2.The messageType field of the PKIMessage must contain the CertReq value. 3.The CertReqContent supplied must contain values for the following fields (i.e. these are mandated for this operation): - version - subject - validity. 4.If the RA does not provide the subjectPublicKeyInfo field this indicates that the RA is requesting a centrally-generated key pair and that the CA return the end entity's private key encrypted (using an EncPrivKey structure) for the end-entity or for the RA according to policy (and the type of PSE in use). If the RA does provide the subjectPublicKeyInfo field this does not mean that the RA need have generated the end entity's key pair, (which is an option) but simply that the RA has a "good" copy of the end entity's public key. All conforming CA implementations must be able to process any certification request received. Some CA implementations may however, only ever be able to reject requests which contain specific options (e.g., some CA implementations may not allow RAs to request a particular serial number for a certificate). 4.1.2. Initialization 4.1.2.1. End-Entity-Generated Encryption Key Pair 4.1.2.1.1. Overview of Exchange This protocol exchange is used to support client initialization, including certificate issuance, for one user, with provision for simultaneously establishing and certifying separate key pairs for digital signature and encryption (or encryption key exchange) purposes. Both key pairs are generated by the client and no private key is exposed to the CA. Generation and certification of the encryption key pair is optional. Prior to conducting this exchange, the user must have registered with the CA, using either a face-to-face registration exchange or some other means. Following registration, the CA creates a secret data item, called an authorization code, and transfers this data item by out-of-band means to the user. The authorization code is used to establish authentication and integrity protection of the user initialization/certification on-line exchange. This is done by generating a symmetric key based on the authorization code and using this symmetric key for generating Message Authentication Codes (MACs) on all exchanges between client and CA. Farrell, Adams, Ford [Page 22] INTERNET-DRAFT June 1996 In the first two messages exchanged, the client sends its user signature public key (and, optionally, a client-generated encryption public key) to the CA and the CA returns the currently valid CA certificate(s). This exchange of public keys allows the client and CA to authenticate each other. 4.1.2.1.2. Detailed Description The user receives a reference number and a secret machine-generated authorization code from the CA administrator. Both pieces of information are transferred to the user in a secure manner which preserves their integrity and confidentiality. The reference number is used to uniquely identify the client at the CA and the authorization code is used to secure the exchange in terms of integrity. The reference number is used instead of a DN to uniquely identify the client because a DN may be lengthy and difficult for a user to manually type without error. After the reference number and authorization code have been entered by the user, the client generates: - a client random number, - (if a new user signature key pair is required) a new user signature key pair, - (if a new client-generated encryption key pair is required) a new encryption key pair. The client securely stores locally any new signature private key and/or client-generated encryption private key. The client then sends the message InitReq to the CA. The entire structure is protected from modification with a MAC based on the authorization code. Upon receipt of the InitReq message, if the CA recognizes the reference number and if the protocol version is valid, it saves the client random number, generates its own random number (CA random number), and validates the MAC. Then for the user encryption public key, it creates: - a new certificate for the user's digital signature public key, - (if a new client-generated encryption key pair is required) a new certificate for the user's encryption public key. The CA responds to the client with the message InitRep. The entire structure is protected from modification with a MAC based on the authorization code. Upon receipt of the InitRep message, the client checks that its own system time is sufficiently close to the CA system time, checks the client random number, and validates the MAC. The client then securely stores the new certificates and acknowledges the transaction by sending back the message PKIConfirm. The fields in this message are protected from modification with a MAC based on the authorization code. Farrell, Adams, Ford [Page 23] INTERNET-DRAFT June 1996 Upon receipt of the PKIConfirm message, the CA checks the random numbers and validates the MAC. If no errors occur, the CA archives the new user public-key certificate(s). 4.1.2.2. Centrally-Generated Encryption Key Pair 4.1.2.2.1. Overview of Exchange This protocol exchange is used to support client initialization, including certificate issuance, for one user, with provision for simultaneously establishing and certifying separate key pairs for digital signature and encryption (or encryption key exchange) purposes. The digital signature key pair is generated by the client. Optionally, a new encryption key pair is generated by (and, optionally, backed up by) a central facility associated with the CA. Prior to conducting this exchange, the user must have registered with the CA, using either a face-to-face registration exchange or some other means. Following registration, the CA creates a secret data item, called an authorization code, and transfers this data item by out-of-band means to the user. The authorization code is used to establish authentication and integrity protection of the user initialization/certification on-line exchange. This is done by generating a symmetric key based on the authorization code and using this symmetric key for generating Message Authentication Codes (MACs) on all exchanges between client and CA. In the first two messages exchanged, the client sends its user signature public key to the CA and the CA returns the currently valid CA certificate(s). This exchange of public keys allows the client and CA to authenticate each other. If a centrally-generated encryption key pair is to be established, the private key of the newly generated key pair is sent from the CA to the client. The client first generates a protocol encryption key pair and sends the public protocol encryption key to the CA. The CA creates a random symmetric key called the session key and encrypts the user encryption private key with it and then encrypts the session key with the public protocol encryption key it received from the client. The CA sends the encrypted user encryption private key and encrypted session key back to the client. The client uses its private protocol decryption key to decrypt the session key and then uses the session key to decrypt the encryption private key. The protocol encryption key pair and session key are discarded after the exchange. Farrell, Adams, Ford [Page 24] INTERNET-DRAFT June 1996 4.1.2.2.2. Detailed Description The user receives a reference number and a secret machine-generated authorization code from the CA administrator. Both pieces of information are transferred to the user in a secure manner which preserves their integrity and confidentiality. The reference number is used to uniquely identify the client at the CA and the authorization code is used to secure the exchange integrity-wise. The reference number is used instead of a DN to uniquely identify the client because a DN may be lengthy and difficult for a user to manually type without error. After the reference number and authorization code have been entered by the user, the client generates: - a client random number, - (if a new user signature key pair is required) a new user signature key pair, - (if a new centrally-generated encryption key pair is required) a protocol encryption key pair. The client securely stores locally any new signature private key and/or client-generated encryption private key. The client then sends the message InitReq to the CA. The entire structure is protected from modification with a MAC based on the authorization code. Upon receipt of the InitReq message, if the CA recognizes the reference number and if the protocol version is valid, it saves the client random number, generates its own random number (CA random number), and validates the MAC. It then creates: - a new certificate for the user's digital signature public key, - (if a new centrally-generated encryption key pair is required) a session key, a new user encryption key pair, and a new certificate for the user encryption public key. The CA responds to the client with the message InitRep. If a new centrally-generated encryption key pair is being generated, the user encryption private key is encrypted using the session key and the session key is encrypted with the protocol encryption public key. The entire structure is protected from modification with a MAC based on the authorization code. Upon receipt of the InitRep structure, the client checks that its own system time is sufficiently close to the CA system time, checks the client random number, and validates the MAC. If a new centrally- generated encryption key pair is included, the client decrypts the encryption private key. The client then securely stores the new certificates and encryption private key (if present) and acknowledges the transaction by sending back the message PKIConfirm. The fields in this message are protected from modification with a MAC based on the authorization code. Farrell, Adams, Ford [Page 25] INTERNET-DRAFT June 1996 Upon receipt of the PKIConfirm message, the CA checks the random numbers and validates the MAC. If no errors occur, the CA archives the new user public-key certificate(s) and (if there is a new centrally-generated encryption key pair and key recovery is to be supported) the encryption private key. 4.2 End Entity Key Pair Update 4.2.1. End-Entity-Generated Key Pair(s) 4.2.1.1. Overview of Exchange This exchange is used to update the signature key pair and/or client- generated encryption key pair of a user, (e.g., as a result of routine cryptoperiod expiry). A user must have a valid signature key pair in order to do this exchange. It is up to the client to determine when a new signature key pair should be generated; this has to be done prior to the expiration of its signature public-key certificate. A key pair update request from a client is digitally signed using the original user signature private key, this signature being verifiable using an existing signature certificate. If the key pair update is for a new user digital signature key, then the client signs the request message once more (including the first signature), this time using the new signature private key. The reason for this second signature is to prove to the CA that the client possesses both the new and old private keys. The request is verified at the CA by using the matching user signature public key. A protocol signature key pair is used to authenticate messages from the CA to the client. CA responses are signed with the protocol signature private key. A CA response is validated at the client by using a protocol signature public-key certificate which is included in the CA response. The protocol signature public-key certificate can be validated by using the CA certificate stored at the client. A new user initialization (as in Section 4.1) or key pair recovery (as in Section 4.5) must be done if the user signature key pair becomes invalid. Farrell, Adams, Ford [Page 26] INTERNET-DRAFT June 1996 In some client system implementations, local key materials are stored in an encrypted key data disk file. A user may have several copies of this key data file on different computers. It is possible that a key update could occur and the user could forget to copy the updated key data file to all the computers they use. To help keep the client using the latest keys, the client sends the CA the serial number of the latest user signature public-key certificate it has in the key update request. Serial numbers are sent so that the CA can check if the client has the latest key pair. If the client does not have the latest signature private key and the signature public-key certificate serial number is equal to that of a previous certificate, the CA sends back an error code which indicates that the client has an old version of the key data file. After this, the client can either find the latest key data file or, if that fails, initiate a key recovery exchange. 4.2.1.2. Detailed Description The client initiates the key update exchange by creating a new signature and/or encryption key pair and generating a random number (client random number). The client then sends the message KeyUpdReq to the CA . The fields in this message are protected from modification and authenticated by a digital signature using the pre- existing user signature private key. If the update includes a new signature key pair, the result is additionally signed using the new user signature private key. Upon receipt of the KeyUpdReq message, the CA checks the protocol version, checks the serial number, saves the client random number, generates its own random number (CA random number) and verifies the signature using the previous user verification key which is archived at the CA. If a user digital signature key pair is being updated, the CA also checks the second signature. It then generates new user signature and/or encryption public-key certificate(s). The CA responds with the message KeyUpdRep. The fields in this message are protected from modification and authenticated by a digital signature using the CA protocol signature private key. Upon receipt of the KeyUpdReq message, the client verifies the digital signature using the protocol verification key contained in the protocol signature public-key certificate, checks that its own system time is close to the CA system time, and checks the received client random number. The client then securely stores locally the new user public-key certificate(s). It responds with the message PKIConfirm. The fields in this message are protected from modification and authenticated by a digital signature using the pre- existing user signature private key. Upon receipt of the PKIConfirm message, the CA checks that the client and CA random numbers are the same as the ones initially generated, and verifies the received signature using the previous user signature public key which is archived at the CA. The CA then archives the new user public-key certificate(s) and updates its data stores to reflect the new status of the user. Farrell, Adams, Ford [Page 27] INTERNET-DRAFT June 1996 4.2.2. Centrally-Generated Encryption Key Pair 4.2.2.1. Overview of Exchange This exchange is used to update the encryption key pair of a user, under the assumption that encryption key pairs are generated (and, optionally, backed up) centrally. A user must have a valid signature key pair in order to do this exchange. It is up to the client to determine when a new encryption key pair should be generated; this must be done some time before the expiration date in its encryption public-key certificate. 4.2.2.2. Detailed Description The client initiates the exchange by generating a random number (client random number) and a protocol encryption key pair. The client then sends the CA the message KeyUpdReq. The fields in this message are protected from modification and authenticated by a digital signature using the latest user signature private key. Upon receipt of the KeyUpdReq message, the CA checks the protocol version, checks the serial numbers, saves the client random number, generates its own random number (CA random number), generates a session key, and verifies the received signature using the latest user signature public key which is archived at the CA. It then generates a new end-user encryption key pair and encryption public- key certificate for the user. In the case where the encryption public- key certificate serial number is the second latest, the CA does not generate any keys and uses the latest encryption public-key certificate and encryption private key that it has. The CA responds with the message KeyUpdRep. In this message, the new or latest encryption private key is encrypted with the session key and the session key is encrypted with the protocol encryption key. The fields in this message are protected from modification and authenticated by a digital signature using the protocol signature private key. Upon receipt of the KeyUpdRep message, the client verifies the digital signature using the protocol signature public-key certificate, makes sure its own system time is close to the CA system time, and checks the received client random number. The client then decrypts the new or latest encryption private key and securely stores locally the new or latest user encryption public-key certificate and encryption private key. It responds with the message PKIConfirm. The fields in this message are protected from modification and authenticated by a digital signature using the latest user signature private key. Upon receipt of the PKIConfirm message, the CA checks that the client and CA random numbers are correct and verifies the signature using the latest user signature public key which is archived at the CA. If no errors occur, the CA archives the new user encryption public-key certificate and encryption private key, and updates its data stores to reflect the new status of the user. Farrell, Adams, Ford [Page 28] INTERNET-DRAFT June 1996 4.2.3. Centrally-Initiated Key Pair Update 4.2.3.1. Overview of Exchange This exchange is used to update the encryption key pair of an user, under the assumption that encryption key pairs are generated (and, optionally, backed up) centrally. This exchange differs from the preceding exchange (Key Pair Update for Centrally-Generated Encryption Key Pair) in that the exchange is initiated by the CA rather than the client. 4.2.3.2. Detailed Description << To be supplied >> 4.3 Encryption Key Pair Recovery 4.3.1 Overview of Exchange This protocol exchange is used to support recovery in the event that a client no longer has a valid signature key pair (due to expiration or revocation), or client system key materials have been lost (e.g., as a result of a forgotten user password). This exchange assumes a system in which an encryption key pair has been centrally generated and backed up (by a central system associated with a CA). This exchange is very similar to the exchange for User Initialization/Certification with Centrally-Generated Encryption Key Pair. The client and CA start without a way to trust one another; that is, they have no reliable shared key pairs. 4.3.2 Detailed Description The user must first receive, by out-of-band means, a reference number and a secret machine-generated authorization code from the CA administrator. The on-line exchange then consists of a sequence of KeyRecReq, KeyRecRep and PKIConfirm, which are the same as the exchange in 4.1.2 except for two differences. First, the CA does not generate (or archive) a new encryption key pair and encryption public- key certificate for the user. Second, the user's entire encryption key history (list of encryption public-key certificates and matching encryption private keys) are sent back to the client with KeyRecRep. Farrell, Adams, Ford [Page 29] INTERNET-DRAFT June 1996 4.4 Revocation Request 4.4.1 Overview of Exchange This protocol exchange is used to support a revocation request from a user or other authorized party. 4.4.2 Detailed Description << To be supplied >> 4.5 Cross-Certification The initiating CA is the CA which will become the subject of the cross-certificate, the responding CA will become the issuer of the cross-certificate. The initiating CA must be "up and running" before initiating the cross-certification operation. As with registration/certification there are a few possibilities here. 4.5.1. One-way request-response scheme: The cross-certification scheme is essentially a one way operation, that is, when successful, this operation results in the creation of one new cross-certificate. If the requirement is that cross- certificates be created in "both directions" then each CA in turn must initiate a cross-certification operation (or use another scheme). The followings steps occur: 1.The initiating CA gathers the information required for the cross certification request 2.The initiating CA creates the cross-certification request message (CrossCertReq); 3.The CrossCertReq message is transported to the responding CA 4.The responding CA processes the CrossCertReq; this results in the creation of a cross-certification response (CrossCertRep) message. 5.The CrossCertRep message is transported to the initiating CA 6.The initiating CA processes the CrossCertRep; depending on its content some looping may be required, that is, the initiating CA may have to await further responses or generate a new CrossCertReq for this end entity <> Notes: 1.The CrossCertReq should contain a "complete" certification request, that is, all fields (including e.g. a BasicConstraints extension) should be specified by the initiating CA. 2.The CrossCertRep message should contain the OOBcert of the responding CA - the initiating CA should then verify this via the "out-of-band" mechanism. Farrell, Adams, Ford [Page 30] INTERNET-DRAFT June 1996 4.5.2. Two-way request-response scheme: 4.5.2.1. Overview of Exchange This cross certification exchange allows two CAs to simultaneously certify each other. This means that each CA will create a certificate that contains the CA verification key of the other CA. Cross certification is initiated at one CA known as the responder. The CA administrator for the responder identifies the CA it wants to cross certify and the responder CA equipment generates an authorization code. The responder CA administrator passes this authorization code by out-of-band means to the requester CA administrator. The requester CA administrator enters the authorization code at the requester CA in order to initiate the on- line exchange. The authorization code is used for authentication and integrity purposes. This is done by generating a symmetric key based on the authorization code and using the symmetric key for generating Message Authentication Codes (MACs) on all messages exchanged. Serial numbers and protocol version are used in the same manner as in the above CA-client exchanges. 4.5.2.2. Detailed Description The requester CA initiates the exchange by generating a random number (requester random number). The requester CA then sends the responder CA the message CrossReq. The fields in this message are protected from modification with a MAC based on the authorization code. Upon receipt of the CrossReq message, the responder CA checks the protocol version, saves the requester random number, generates its own random number (responder random number) and validates the MAC. It then generates and archives a new requester certificate which contains the requester CA public key and is signed with the responder CA signature private key. The responder CA responds with the message CrossRep. The fields in this message are protected from modification with a MAC based on the authorization code. Upon receipt of the CrossRep message, the requester CA checks that its own system time is close to the responder CA system time, checks the received random numbers and validates the MAC. It then generates and archives a new responder certificate which contains the responder CA public key and is signed by the requester CA signature private key. The requester CA responds with the message PKIConfirm. The fields in this message are protected from modification with a MAC based on the authorization code. Upon receipt of the PKIConfirm message, the responder CA checks the random numbers, archives the responder certificate, and validates the MAC. It writes both the request and responder certificates to the Farrell, Adams, Ford [Page 31] INTERNET-DRAFT June 1996 Directory. It then responds with its own PKIConfirm message. The fields in this message are protected from modification with a MAC based on the authorization code. Upon receipt of the PKIConfirm message, the requester CA checks the random numbers and validates the MAC. The requester CA writes both the requester and responder certificates to the Directory. 4.6 CA Key Pair Update The basis of the procedure described here is that the CA protects its new public key using its previous private key and vice versa. Thus when a CA updates its key pair it must generate two new cACertificate attribute values if certificates are made available using an X.500 directory. When a CA changes its key pair those entities who have acquired the old CA public key via "out-of-band" means are most affected. It is these end entities who will need access to the new CA public key protected with the old CA private key. However, they will only require this for a limited period (until they have acquired the new CA public key via the "out-of-band" mechanism). This will typically be easily achieved when these end entity's certificates expire. The data structure used to protect the new and old CA public keys is a standard certificate (which may also contain extensions). There are no new data structures required. Notes: 1.This scheme does not make use of any of the X.509 v3 extensions as it should be able to work even for version 1 certificates. The presence of the KeyIdentifier extension would make for efficiency improvements. 2.While the scheme could be generalized to cover cases where the CA updates its key pair more than once during the validity period of one of its end entity's certificates, this generalization seems of dubious value. This means that the validity period of a CA key pair must be greater than the validity period of any certificate issued by that CA using that key pair. 3.This scheme forces end entities to acquire the new CA public key on the expiry of the last certificate they owned which was signed with the old CA private key (via the "out-of-band" means). Certificate and/or key update operations occurring at other times do not necessarily require this (depending on the end entity's equipment). Farrell, Adams, Ford [Page 32] INTERNET-DRAFT June 1996 4.6.1. CA Operator actions To change the key of the CA, the CA operator does the following: 1.Generate a new key pair. 2.Create a certificate containing the old CA public key signed with the new private key (the "old with new" certificate). 3.Create a certificate containing the new CA public key signed with the old private key (the "new with old" certificate). 4.Create a certificate containing the new CA public key signed with the new private key (the "new with new" certificate). 5.Publish these new certificates via the directory and/or other means. (A CAKeyUpdAnn message.) 6.Export the new CA public key so that end entities may acquire it using the "out-of-band" mechanism. The old CA private key is then no longer required. The old CA public key will however remain in use for some time. The time when the old CA public key is no longer required (other than for non-repudiation) will be when all end entities of this CA have acquired the new CA public key via "out-of-band" means. The "old with new" certificate should have a validity period starting at the generation time of the old key pair and ending at the time at which the CA will next update its key pair. The "new with old" certificate should have a validity period starting at the generation time of the new key pair and ending at the time by which all end entities of this CA will securely possess the new CA public key. The "new with new" certificate should have a validity period starting at the generation time of the new key pair and ending at the time at which the CA will next update its key pair. <> 4.6.2. Verifying Certificates. <> Normally when verifying a signature the verifier simply(!) verifies the certificate containing the public key of the signer. However, once a CA is allowed to update its key there are a range of new possibilities. These are shown in the table below. Farrell, Adams, Ford [Page 33] INTERNET-DRAFT June 1996 Directory contains NEW Directory contains only OLD and OLD public keys public key (due to e.g. delay in publication) PSE PSE Contains PSE Contains PSE Contains Contains OLD public NEW public OLD public NEW public key key key key Signer's Case 1: Case 3: Case 5: Case 7: certifica This is In this case Although the In this case te is the the verifier CA operator the CA protected standard must access has not operator has using NEW case where the updated the not updated public the directory in directory the the directory key verifier order to get verifier can and so the can the value of verify the verification directly the NEW certificate will FAIL verify the public key directly - certificat this is thus e without the same as using the case 1. directory Signer's Case 2: Case 4: Case 6: Case 8: certifica In this In this case The verifier Although the te is case the the verifier thinks this CA operator protected verifier can directly is the has not using OLD must verify the situation of updated the public access the certificate case 2 and directory the key directory without will access verifier can in order using the the verify the to get the directory directory, certificate value of however the directly - the OLD verification this is thus public key will FAIL the same as case 4. 4.6.2.1. Verification in cases 1, 4, 5 and 8. In these cases the verifier has a local copy of the CA public key which can be used to verify the certificate directly. This is the same as the situation where no key change has ever occurred. Note that case 8 may arise between the time when the CA operator has generated the new key pair and the time when the CA operator stores the updated attributes in the directory. Case 5 can only arise if the CA operator has issued both the signer's and verifier's certificates during this "gap" (the CA operator should avoid this as it leads to the failure cases described below). Farrell, Adams, Ford [Page 34] INTERNET-DRAFT June 1996 4.6.2.2. Verification in case 2. In case 2 the verifier must get access to the old public key of the CA. The verifier does the following: 1.Lookup the CACertificate attribute in the directory and pick the appropriate value (based on validity periods) 2.Verify that this is correct using the new CA key (which the verifier has locally). 3.If correct then check the signer's certificate using the old CA key. Case 2 will arise when the CA operator has issued the signer's certificate, then changed key and then issued the verifier's certificate, so it is quite a typical case. 4.6.2.3. Verification in case 3. In case 3 the verifier must get access to the new public key of the CA. The verifier does the following: 1.Lookup the CACertificate attribute in the directory and pick the appropriate value (based on validity periods). 2.Verify that this is correct using the old CA key (which the verifier has stored locally). 3.If correct then check the signer's certificate using the new CA key. Case 3 will arise when the CA operator has issued the verifier's certificate, then changed key and then issued the signer's certificate, so it is also quite a typical case. 4.6.2.4. Failure of verification in case 6. In this case the CA has issued the verifier's PSE containing the new key without updating the directory attributes. This means that the verifier has no means to get a trustworthy version of the CA's old key and so verification fails. Note that the failure is the CA operator's fault. 4.6.2.5. Failure of verification in case 7. In this case the CA has issued the signer's certificate protected with the new key without updating the directory attributes. This means that the verifier has no means to get a trustworthy version of the CA's new key and so verification fails. Note that the failure is again the CA operator's fault. Farrell, Adams, Ford [Page 35] INTERNET-DRAFT June 1996 4.6.3. Revocation - Change of CA key As we saw above the verification of a certificate becomes more complex once the CA is allowed to change its key. This is also true for revocation checks as the CA may have signed the CRL using a newer private key than the one that is within the user's PSE. The analysis of the alternatives is as for certificate verification. 4.6.4. Example of CA key update The following example should make the scheme clearer: 1.A CA is established on 1-Jan-1997, its key pair will be used for three years (until 31-Dec-1999, party-time). 2.Alice gets a new certificate valid for one year starting 21- Dec-1999 and acquires the CA public key via the appropriate out of band means. 3.Alice's is the last certificate created by the CA before the CA key update and is the one which will expire latest. 4.The CA generates its new key pair on 31-Dec-1999 and produces the two certificates. The "old-with-new" certificate contains a validity period from 1-Jan-1997 to 31-Dec-2000. The "new-with-old" certificate contains a validity period from 1-Jan-2000 to 31-Dec- 2000. The CA operator deletes the old private key. 5.Bob gets certified (again for a year) on 10-Jan-2000. Bob also acquires the new CA public key via the appropriate "out-of- band" means. 6.On 11-Jan-2000 Alice sends a signed message to Bob. Bob's verification is as described in case 2 above. 7.Bob replies with a signed message, Alice's verification procedure is as given in case 3 above. 8.On 20-Dec-2000 Alice gets a new certificate and acquires the new CA public key via the "out-of-band" means. 9.At midnight on 31-Dec-2000 the CA operator can delete the "new-with-old" certificate from the directory (or wherever else). Farrell, Adams, Ford [Page 36] INTERNET-DRAFT June 1996 These events are shown in the time-line diagram below. 1996 1997 1998 1999 2000 2001 year ----------+---------------------------+-+-+----+-+----->> | | | | | | | | | | | | | | | | | +-- "new-with-old" | | | | | deleted | | | | | | | | | +-- Alice updated | | | | | | | +-- Bob certified | | | | | +-- CA key update | | | +-- Alice certified +-- CA established "old-with-new" validity: |---------------------------------------------->>>>>> "new-with-old" validity: |-------| "new-with-new" validity: |--------------->>>>>> 4.7 Certificate Publication <> 4.8 Revocation Publication <> This is the announcement of a specific revocation (which occurred as a result of a successful revocation request/response exchange), as opposed to the publication of an actual CRL. 4.9 CRL Publication <> 4.10 Certificate Update <> 4.11 Cross-Certificate Update <> Farrell, Adams, Ford [Page 37] INTERNET-DRAFT June 1996 5. Transports 5.1 On-line Management Protocol << To be supplied. This subsection will specify a means for conveying ASN.1-encoded messages for the protocol exchanges described in Section 4 over a TCP connection. >> 5.2 Management Protocol via E-mail << To be supplied. This subsection will specify a means for conveying ASN.1-encoded messages for the protocol exchanges described in Section 4 via Internet mail. >> 5.3 Management Protocol via HTTP << To be supplied. This subsection will specify a means for conveying ASN.1-encoded messages for the protocol exchanges described in Section 4 over WWW browser-server links, employing HTTP or related WWW protocols. >> 6. Samples The following samples will be further elaborated in later drafts (which will include encodings for the messages, etc.) For now we just present them as walkthroughs. The overall scenario is as follows: A CA is established and an RA is certified. The RA gets a "simple" end entity certified (which is actually a http daemon) and does a few operations involving this end entity. A "sophisticated" end entity gets itself certified by a second CA. The first CA asks to be cross-certified by the second CA. The second CA updates its key pair. We will use the following names: first CA cn=theCA;o=small;c=ie RA cn=theRA;o=sse;c=ie "simple" end entity cn=httpd;o=sse;c=ie second CA cn=caTWO;o=bnr;c=ca "sophisticated" end entity cn=sophisticated;o=bnr;c=ca We will just use the commonName components of the above names in the text below. Farrell, Adams, Ford [Page 38] INTERNET-DRAFT June 1996 6.1 First CA established theCA has the following characteristics: - it uses RSA and MD5 for its own key pair - it has the following contact points available: theCA@small.ie for mail http://www.small.ie/theCA for http ftp://ftp.small.ie/pub/theCA for ftp cacontact.theCA.small.ie for TCP/IP cn=theCA;o=small;c=ie for X.500 - its key pair will be valid for two years - it is established on Jan. 1st 1997 The following (protocol visible) events occur: - theCA generates its initial key pair and publishes this in various ways - theCA publishes its initial CRL is various ways 6.2 RA Certification theRA has the following characteristics: - it uses RSA and MD5 for its own key pair - it has an email address of: theRA@sse.ie The following events occur - theRA generates its key pair and submits request to theCA - theCA rejects this initial request (public key generated is too short) - theRA submits a new request - theCA accepts request and issues response including certificate (but with reduced validity period since theCA is now in a bad mood:-) - theRA publishes its certificate 6.3 "simple" End entity simple has the following characteristics: - it only needs a key pair for signing (i.e. no encryption) - it is an http daemon Farrell, Adams, Ford [Page 39] INTERNET-DRAFT June 1996 The following events occur: - theRA generates key pair; sends request to theCA on behalf of httpd - theRA forwards certification information to httpd - theRA publishes certificate on behalf of httpd - httpd (i.e., its administrator) imports certification information - theRA issues certificate update request to theCA - theCA sends response to theRA including new certificate - theRA publishes new certificate - theRA generates new key pair for httpd and issues request for key update to theCA - theCA accepts request and issues response to theRA including cert. - theRA publishes certificate on behalf of httpd - theRA forwards certification information to httpd - theRA asks for httpd's certificate to be revoked - theCA revokes httpd's certificate and publishes the new CRL 6.4 The "sophisticated" end entity sophisticated has the following characteristics: - it deals directly with caTWO - it uses DSA with SHA-1 The following events occur: - end entity receives init. data (containing CA name and public key) - end entity generates key pair and submits request to CA - CA accepts request and issues response to end entity (not including certificate) - CA publishes certificate on behalf of end entity - end entity imports CA response 6.5 Cross-certification In order to allow sophisticated to use httpd theCA must be certified by caTWO. The following events occur: - theCA issues a request for cross-certification to caTWO - caTWO accepts this request and issues a cross-certificate (but with more restrictions than theCA had asked for) - theCA publishes the cross-certificate - theCA asks for the cross-certificate to be updated - caTWO issues the new cross-certificate - theCA publishes the new cross-certificate 6.6 CA Key Update Eventually (in late 1998) theCA decides to update its key pair. The following events occur: - theCA generates a new key pair - theCA publishes its new key (and collateral data structures) Farrell, Adams, Ford [Page 40] INTERNET-DRAFT June 1996 7. Security Considerations This entire memo is about security mechanisms. Authors' Addresses Stephen Farrell Software and Systems Engineering Ltd. Fitzwilliam Court Leeson Close Dublin 2 IRELAND stephen.farrell@sse.ie Carlisle Adams Nortel Secure Networks PO Box 3511, Station C Ottawa, Ontario Canada KY 4H7 cadams@bnr.ca Warwick Ford Nortel Secure Networks PO Box 3511, Station C Ottawa, Ontario Canada KY 4H7 wford@bnr.ca