| rfc9810v3.txt | rfc9810.txt | |||
|---|---|---|---|---|
| skipping to change at line 378 ¶ | skipping to change at line 378 ¶ | |||
| CA: Certification Authority | CA: Certification Authority | |||
| CMP: Certificate Management Protocol | CMP: Certificate Management Protocol | |||
| CMS: Cryptographic Message Syntax | CMS: Cryptographic Message Syntax | |||
| CRL: Certificate Revocation List | CRL: Certificate Revocation List | |||
| CRMF: Certificate Request Message Format | CRMF: Certificate Request Message Format | |||
| EE: End Entity | ||||
| KEM: Key Encapsulation Mechanism | KEM: Key Encapsulation Mechanism | |||
| KGA: Key Generation Authority | KGA: Key Generation Authority | |||
| LRA: Local Registration Authority | LRA: Local Registration Authority | |||
| MAC: Message Authentication Code | MAC: Message Authentication Code | |||
| PKI: Public Key Infrastructure | PKI: Public Key Infrastructure | |||
| skipping to change at line 418 ¶ | skipping to change at line 416 ¶ | |||
| used between a CA and a client system with which a key pair is | used between a CA and a client system with which a key pair is | |||
| associated or between two CAs that issue cross-certificates for each | associated or between two CAs that issue cross-certificates for each | |||
| other. | other. | |||
| 3.1. PKI Management Model | 3.1. PKI Management Model | |||
| Before specifying particular message formats and procedures, we first | Before specifying particular message formats and procedures, we first | |||
| define the entities involved in PKI management and their interactions | define the entities involved in PKI management and their interactions | |||
| (in terms of the PKI management functions required). We then group | (in terms of the PKI management functions required). We then group | |||
| these functions in order to accommodate different identifiable types | these functions in order to accommodate different identifiable types | |||
| of EEs. | of end entities. | |||
| 3.1.1. Definitions of PKI Entities | 3.1.1. Definitions of PKI Entities | |||
| The entities involved in PKI management include the EE (i.e., the | The entities involved in PKI management include the end entity (i.e., | |||
| entity to whom the certificate is issued) and the CA (i.e., the | the entity to whom the certificate is issued) and the CA (i.e., the | |||
| entity that issues the certificate). An RA might also be involved in | entity that issues the certificate). An RA might also be involved in | |||
| PKI management. | PKI management. | |||
| 3.1.1.1. Subjects and End Entities | 3.1.1.1. Subjects and End Entities | |||
| The term "subject" is used here to refer to the entity to whom the | The term "subject" is used here to refer to the entity to whom the | |||
| certificate is issued, typically named in the subject or | certificate is issued, typically named in the subject or | |||
| subjectAltName field of a certificate. When we wish to distinguish | subjectAltName field of a certificate. When we wish to distinguish | |||
| the tools and/or software used by the subject (e.g., a local | the tools and/or software used by the subject (e.g., a local | |||
| certificate management module), we will use the term "subject | certificate management module), we will use the term "subject | |||
| equipment". In general, the term "end entity" (EE), rather than | equipment". In general, the term "end entity", rather than | |||
| "subject", is preferred in order to avoid confusion with the field | "subject", is preferred in order to avoid confusion with the field | |||
| name. It is important to note that the EEs here will include not | name. It is important to note that the end entities here will | |||
| only human users of applications but also applications themselves | include not only human users of applications but also applications | |||
| (e.g., for Internet Key Exchange Protocol (IKE) / IPsec) or devices | themselves (e.g., for Internet Key Exchange Protocol (IKE) / IPsec) | |||
| (e.g., routers or industrial control systems). This factor | or devices (e.g., routers or industrial control systems). This | |||
| influences the protocols that the PKI management operations use; for | factor influences the protocols that the PKI management operations | |||
| example, application software is far more likely to know exactly | use; for example, application software is far more likely to know | |||
| which certificate extensions are required than are human users. PKI | exactly which certificate extensions are required than are human | |||
| management entities are also EEs in the sense that they are sometimes | users. PKI management entities are also end entities in the sense | |||
| named in the subject or subjectAltName field of a certificate or | that they are sometimes named in the subject or subjectAltName field | |||
| cross-certificate. Where appropriate, the term "end entity" will be | of a certificate or cross-certificate. Where appropriate, the term | |||
| used to refer to EEs who are not PKI management entities. | "end entity" will be used to refer to end entities who are not PKI | |||
| management entities. | ||||
| All EEs require secure local access to some information -- at a | All end entities require secure local access to some information -- | |||
| minimum, their own name and private key, the name of a CA that is | at a minimum, their own name and private key, the name of a CA that | |||
| directly trusted by this entity, and that CA's public key (or a | is directly trusted by this entity, and that CA's public key (or a | |||
| fingerprint of the public key where a self-certified version is | fingerprint of the public key where a self-certified version is | |||
| available elsewhere). Implementations MAY use secure local storage | available elsewhere). Implementations MAY use secure local storage | |||
| for more than this minimum (e.g., the EE's own certificates or | for more than this minimum (e.g., the end entity's own certificates | |||
| application-specific information). The form of storage will also | or application-specific information). The form of storage will also | |||
| vary -- from files to tamper-resistant cryptographic tokens. The | vary -- from files to tamper-resistant cryptographic tokens. The | |||
| information stored in such local, trusted storage is referred to here | information stored in such local, trusted storage is referred to here | |||
| as the EE's TEE, also known as Personal Security Environment (PSE). | as the end entity's TEE, also known as Personal Security Environment | |||
| (PSE). | ||||
| Though TEE formats are beyond the scope of this document (they are | Though TEE formats are beyond the scope of this document (they are | |||
| very dependent on equipment, et cetera), a generic interchange format | very dependent on equipment, et cetera), a generic interchange format | |||
| for TEEs is defined here: a certification response message (see | for TEEs is defined here: a certification response message (see | |||
| Section 5.3.4) MAY be used. | Section 5.3.4) MAY be used. | |||
| 3.1.1.2. Certification Authority | 3.1.1.2. Certification Authority | |||
| The CA may or may not actually be a real "third party" from the EE's | The CA may or may not actually be a real "third party" from the end | |||
| point of view. Quite often, the CA will actually belong to the same | entity's point of view. Quite often, the CA will actually belong to | |||
| organization as the EEs it supports. | the same organization as the end entities it supports. | |||
| Again, we use the term "CA" to refer to the entity named in the | 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 | 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 | the software or hardware tools used by the CA, we use the term "CA | |||
| equipment". | equipment". | |||
| The CA equipment will often include both an "offline" component and | The CA equipment will often include both an "offline" component and | |||
| an "online" component, with the CA private key only available to the | an "online" component, with the CA private key only available to the | |||
| "offline" component. This is, however, a matter for implementers | "offline" component. This is, however, a matter for implementers | |||
| (though it is also relevant as a policy issue). | (though it is also relevant as a policy issue). | |||
| We use the term "root CA" to indicate a CA that is directly trusted | We use the term "root CA" to indicate a CA that is directly trusted | |||
| by an EE; that is, securely acquiring the value of a root CA public | by an end entity; that is, securely acquiring the value of a root CA | |||
| key requires some out-of-band step(s). This term is not meant to | public key requires some out-of-band step(s). This term is not meant | |||
| imply that a root CA is necessarily at the top of any hierarchy, | to imply that a root CA is necessarily at the top of any hierarchy, | |||
| simply that the CA in question is trusted directly. The "root CA" | simply that the CA in question is trusted directly. The "root CA" | |||
| may provide its trust anchor information with or without using a | may provide its trust anchor information with or without using a | |||
| certificate. In some circumstances, such a certificate may be self- | certificate. In some circumstances, such a certificate may be self- | |||
| signed, but in other circumstances, it may be cross-signed, signed by | signed, but in other circumstances, it may be cross-signed, signed by | |||
| a peer, signed by a superior CA, or unsigned. | a peer, signed by a superior CA, or unsigned. | |||
| Note that other documents like [X509.2019] and [RFC5280] use the term | Note that other documents like [X509.2019] and [RFC5280] use the term | |||
| "trusted CA" or "trust anchor" instead of "root CA". This document | "trusted CA" or "trust anchor" instead of "root CA". This document | |||
| continues using "root CA" based on the above definition because it is | continues using "root CA" based on the above definition because it is | |||
| also present in the ASN.1 syntax that cannot be changed easily. | also present in the ASN.1 syntax that cannot be changed easily. | |||
| A "subordinate CA" is one that is not a root CA for the EE in | A "subordinate CA" is one that is not a root CA for the end entity in | |||
| question. Often, a subordinate CA will not be a root CA for any | question. Often, a subordinate CA will not be a root CA for any | |||
| entity, but this is not mandatory. | entity, but this is not mandatory. | |||
| 3.1.1.3. Registration Authority | 3.1.1.3. Registration Authority | |||
| In addition to EEs and CAs, many environments call for the existence | In addition to end entities and CAs, many environments call for the | |||
| of an RA separate from the CA. The functions that the RA may carry | existence of an RA separate from the CA. The functions that the RA | |||
| out will vary from case to case but MAY include identity checking, | may carry out will vary from case to case but MAY include identity | |||
| token distribution, checking certificate requests and authentication | checking, token distribution, checking certificate requests and | |||
| of their origin, revocation reporting, name assignment, archival of | authentication of their origin, revocation reporting, name | |||
| key pairs, et cetera. | assignment, archival of key pairs, et cetera. | |||
| This document views the RA as an OPTIONAL component: When it is not | 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 | 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 EE's point | so that the PKI management protocols are the same from the end | |||
| of view. | entity's point of view. | |||
| Again, we distinguish, where necessary, between the RA and the tools | Again, we distinguish, where necessary, between the RA and the tools | |||
| used (the "RA equipment"). | used (the "RA equipment"). | |||
| Note that an RA is itself an EE. We further assume that all RAs are | Note that an RA is itself an end entity. We further assume that all | |||
| in fact certified EEs and that RAs have private keys that are usable | RAs are in fact certified end entities and that RAs have private keys | |||
| for signing. How a particular CA equipment identifies some EEs as | that are usable for signing. How a particular CA equipment | |||
| RAs is an implementation issue (i.e., this document specifies no | identifies some end entities as RAs is an implementation issue (i.e., | |||
| special RA certification operation). We do not mandate that the RA | this document specifies no special RA certification operation). We | |||
| is certified by the CA with which it is interacting at the moment (so | do not mandate that the RA is certified by the CA with which it is | |||
| one RA may work with more than one CA whilst only being certified | interacting at the moment (so one RA may work with more than one CA | |||
| once). | whilst only being certified once). | |||
| In some circumstances, EEs will communicate directly with a CA even | In some circumstances, end entities will communicate directly with a | |||
| where an RA is present. For example, for initial registration and/or | CA even where an RA is present. For example, for initial | |||
| certification, the EE may use its RA but communicate directly with | registration and/or certification, the end entity may use its RA but | |||
| the CA in order to refresh its certificate. | communicate directly with the CA in order to refresh its certificate. | |||
| 3.1.1.4. Key Generation Authority | 3.1.1.4. Key Generation Authority | |||
| A KGA is a PKI management entity generating key pairs on behalf of an | A KGA is a PKI management entity generating key pairs on behalf of an | |||
| EE. As the KGA generates the key pair, it knows the public and the | end entity. As the KGA generates the key pair, it knows the public | |||
| private part. | and the private part. | |||
| This document views the KGA as an OPTIONAL component. When it is not | This document views the KGA as an OPTIONAL component. When it is not | |||
| present and central key generation is needed, the CA is assumed to be | present and central key generation is needed, the CA is assumed to be | |||
| able to carry out the KGA's functions so that the PKI management | able to carry out the KGA's functions so that the PKI management | |||
| protocol messages are the same from the EE's point of view. If | protocol messages are the same from the end entity's point of view. | |||
| certain tasks of a CA are delegated to other components, this | If certain tasks of a CA are delegated to other components, this | |||
| delegation needs authorization, which can be indicated by EKUs (see | delegation needs authorization, which can be indicated by EKUs (see | |||
| Section 4.5). | Section 4.5). | |||
| Note: When doing central generation of key pairs, implementers should | Note: When doing central generation of key pairs, implementers should | |||
| consider the implications of server-side retention on the overall | consider the implications of server-side retention on the overall | |||
| security of the system; in some cases, retention is good, for | security of the system; in some cases, retention is good, for | |||
| example, for escrow reasons, but in other cases, the server should | example, for escrow reasons, but in other cases, the server should | |||
| clear its copy after delivery to the EE. | clear its copy after delivery to the end entity. | |||
| Note: If the CA delegates key generation to a KGA, the KGA can be | Note: If the CA delegates key generation to a KGA, the KGA can be | |||
| collocated with the RA. | collocated with the RA. | |||
| 3.1.2. PKI Management Requirements | 3.1.2. PKI Management Requirements | |||
| The protocols given here meet the following requirements on PKI | The protocols given here meet the following requirements on PKI | |||
| management | management | |||
| 1. PKI management must conform to the ISO/IEC 9594-8/ITU-T X.509 | 1. PKI management must conform to the ISO/IEC 9594-8/ITU-T X.509 | |||
| skipping to change at line 570 ¶ | skipping to change at line 570 ¶ | |||
| 2. It must be possible to regularly update any key pair without | 2. It must be possible to regularly update any key pair without | |||
| affecting any other key pair. | affecting any other key pair. | |||
| 3. The use of confidentiality in PKI management protocols must be | 3. The use of confidentiality in PKI management protocols must be | |||
| kept to a minimum in order to ease acceptance in environments | kept to a minimum in order to ease acceptance in environments | |||
| where strong confidentiality might cause regulatory problems. | where strong confidentiality might cause regulatory problems. | |||
| 4. PKI management protocols must allow the use of different | 4. PKI management protocols must allow the use of different | |||
| industry-standard cryptographic algorithms (see CMP Algorithms | industry-standard cryptographic algorithms (see CMP Algorithms | |||
| [RFC9481]). This means that any given CA, RA, or EE may, in | [RFC9481]). This means that any given CA, RA, or end entity | |||
| principle, use whichever algorithms suit it for its own key | may, in principle, use whichever algorithms suit it for its own | |||
| pair(s). | key pair(s). | |||
| 5. PKI management protocols must not preclude the generation of key | 5. PKI management protocols must not preclude the generation of key | |||
| pairs by the EE concerned, by a KGA, or by a CA. Key generation | pairs by the end entity concerned, by a KGA, or by a CA. Key | |||
| may also occur elsewhere, but for the purposes of PKI | generation may also occur elsewhere, but for the purposes of PKI | |||
| management, we can regard key generation as occurring wherever | management, we can regard key generation as occurring wherever | |||
| the key is first present at an EE, KGA, or CA. | the key is first present at an end entity, KGA, or CA. | |||
| 6. PKI management protocols must support the publication of | 6. PKI management protocols must support the publication of | |||
| certificates by the EE concerned, by an RA, or by a CA. | certificates by the end entity concerned, by an RA, or by a CA. | |||
| Different implementations and different environments may choose | Different implementations and different environments may choose | |||
| any of the above approaches. | any of the above approaches. | |||
| 7. PKI management protocols must support the production of | 7. PKI management protocols must support the production of | |||
| Certificate Revocation Lists (CRLs) by allowing certified EEs to | Certificate Revocation Lists (CRLs) by allowing certified end | |||
| make requests for the revocation of certificates. This must be | entities to make requests for the revocation of certificates. | |||
| done in such a way that the denial-of-service attacks, which are | This must be done in such a way that the denial-of-service | |||
| possible, are not made simpler. | attacks, which are possible, are not made simpler. | |||
| 8. PKI management protocols must be usable over a variety of | 8. PKI management protocols must be usable over a variety of | |||
| "transport" mechanisms, specifically including email, Hypertext | "transport" mechanisms, specifically including email, Hypertext | |||
| Transfer Protocol (HTTP), Message Queuing Telemetry Transport | Transfer Protocol (HTTP), Message Queuing Telemetry Transport | |||
| (MQTT), Constrained Application Protocol (CoAP), and various | (MQTT), Constrained Application Protocol (CoAP), and various | |||
| offline and non-networked file transfer methods. | offline and non-networked file transfer methods. | |||
| 9. Final authority for certification creation rests with the CA. | 9. Final authority for certification creation rests with the CA. | |||
| No RA or EE equipment can assume that any certificate issued by | No RA or end entity equipment can assume that any certificate | |||
| a CA will contain what was requested; a CA may alter certificate | issued by a CA will contain what was requested; a CA may alter | |||
| field values or may add, delete, or alter extensions according | certificate field values or may add, delete, or alter extensions | |||
| to its operating policy. In other words, all PKI entities (EEs, | according to its operating policy. In other words, all PKI | |||
| RAs, KGAs, and CAs) must be capable of handling responses to | entities (end entities, RAs, KGAs, and CAs) must be capable of | |||
| requests for certificates in which the actual certificate issued | handling responses to requests for certificates in which the | |||
| is different from that requested (for example, a CA may shorten | actual certificate issued is different from that requested (for | |||
| the validity period requested). Note that policy may dictate | example, a CA may shorten the validity period requested). Note | |||
| that the CA must not publish or otherwise distribute the | that policy may dictate that the CA must not publish or | |||
| certificate until the requesting entity has reviewed and | otherwise distribute the certificate until the requesting entity | |||
| accepted the newly created certificate or the POP is completed. | has reviewed and accepted the newly created certificate or the | |||
| In case of publication of the certificate (when using indirect | POP is completed. In case of publication of the certificate | |||
| POP, see Section 8.11) or a precertificate in a CT log | (when using indirect POP, see Section 8.11) or a precertificate | |||
| [RFC9162], the certificate must be revoked if it was not | in a CT log [RFC9162], the certificate must be revoked if it was | |||
| accepted by the EE or the POP could not be completed. | not accepted by the end entity or the POP could not be | |||
| completed. | ||||
| 10. A graceful, scheduled changeover from one non-compromised CA key | 10. A graceful, scheduled changeover from one non-compromised CA key | |||
| pair to the next (CA key update) must be supported (note that if | pair to the next (CA key update) must be supported (note that if | |||
| the CA key is compromised, re-initialization must be performed | the CA key is compromised, re-initialization must be performed | |||
| for all entities in the domain of that CA). An EE whose TEE | for all entities in the domain of that CA). An end entity whose | |||
| contains the new CA public key (following a CA key update) may | TEE contains the new CA public key (following a CA key update) | |||
| also need to be able to verify certificates verifiable using the | may also need to be able to verify certificates verifiable using | |||
| old public key. EEs who directly trust the old CA key pair may | the old public key. End entities who directly trust the old CA | |||
| also need to be able to verify certificates signed using the new | key pair may also need to be able to verify certificates signed | |||
| CA private key (required for situations where the old CA public | using the new CA private key (required for situations where the | |||
| key is "hardwired" into the EE's cryptographic equipment). | old CA public key is "hardwired" into the end entity's | |||
| cryptographic equipment). | ||||
| 11. The functions of an RA may, in some implementations or | 11. The functions of an RA may, in some implementations or | |||
| environments, be carried out by the CA itself. The protocols | environments, be carried out by the CA itself. The protocols | |||
| must be designed so that EEs will use the same protocol | must be designed so that end entities will use the same protocol | |||
| regardless of whether the communication is with an RA or CA. | regardless of whether the communication is with an RA or CA. | |||
| Naturally, the EE must use the correct RA or CA public key to | Naturally, the end entity must use the correct RA or CA public | |||
| verify the protection of the communication. | key to verify the protection of the communication. | |||
| 12. Where an EE requests a certificate containing a given public key | 12. Where an end entity requests a certificate containing a given | |||
| value, the EE must be ready to demonstrate possession of the | public key value, the end entity must be ready to demonstrate | |||
| corresponding private key value. This may be accomplished in | possession of the corresponding private key value. This may be | |||
| various ways, depending on the type of certification request. | accomplished in various ways, depending on the type of | |||
| See Section 4.3 for details of the in-band methods defined for | certification request. See Section 4.3 for details of the in- | |||
| the PKIX-CMP (i.e., CMP) messages. | band methods defined for the PKIX-CMP (i.e., CMP) messages. | |||
| 3.1.3. PKI Management Operations | 3.1.3. PKI Management Operations | |||
| The following diagram shows the relationship between the entities | The following diagram shows the relationship between the entities | |||
| defined above in terms of the PKI management operations. The letters | defined above in terms of the PKI management operations. The letters | |||
| in the diagram indicate "protocols" in the sense that a defined set | in the diagram indicate "protocols" in the sense that a defined set | |||
| of PKI management messages can be sent along each of the lettered | of PKI management messages can be sent along each of the lettered | |||
| lines. | lines. | |||
| +---+ cert. publish +------------+ j | +---+ cert. publish +------------+ j | |||
| | | <--------------------- | EE | <------- | | | <--------------------- | End Entity | <------- | |||
| | C | g +------------+ "out-of-band" | | C | g +------------+ "out-of-band" | |||
| | e | | ^ loading | | e | | ^ loading | |||
| | r | | | initial | | r | | | initial | |||
| | t | a | | b registration/ | | t | a | | b registration/ | |||
| | | | | certification | | | | | certification | |||
| | / | | | key pair recovery | | / | | | key pair recovery | |||
| | | | | key pair update | | | | | key pair update | |||
| | C | | | certificate update | | C | | | certificate update | |||
| | R | PKI "USERS" V | revocation request | | R | PKI "USERS" V | revocation request | |||
| | L | -------------------+-+-----+-+------+-+------------------- | | L | -------------------+-+-----+-+------+-+------------------- | |||
| skipping to change at line 699 ¶ | skipping to change at line 701 ¶ | |||
| public key). | public key). | |||
| 2. End entity initialization: This includes importing a root CA | 2. End entity initialization: This includes importing a root CA | |||
| public key and requesting information about the options supported | public key and requesting information about the options supported | |||
| by a PKI management entity. | by a PKI management entity. | |||
| 3. Certification: Various operations result in the creation of new | 3. Certification: Various operations result in the creation of new | |||
| certificates: | certificates: | |||
| a. initial registration/certification: This is the process | a. initial registration/certification: This is the process | |||
| whereby an EE first makes itself known to a CA or RA, prior | whereby an end entity first makes itself known to a CA or RA, | |||
| to the CA issuing a certificate or certificates for that EE. | prior to the CA issuing a certificate or certificates for | |||
| The end result of this process (when it is successful) is | that end entity. The end result of this process (when it is | |||
| that a CA issues a certificate for an EE's public key and | successful) is that a CA issues a certificate for an end | |||
| returns that certificate to the EE and/or posts that | entity's public key and returns that certificate to the end | |||
| certificate in a repository. This process may, and typically | entity and/or posts that certificate in a repository. This | |||
| will, involve multiple "steps", possibly including an | process may, and typically will, involve multiple "steps", | |||
| initialization of the EE's equipment. For example, the EE's | possibly including an initialization of the end entity's | |||
| equipment must be securely initialized with the public key of | equipment. For example, the end entity's equipment must be | |||
| a CA, e.g., using zero-touch methods like Bootstrapping | securely initialized with the public key of a CA, e.g., using | |||
| Remote Secure Key Infrastructure (BRSKI) [RFC8995] or Secure | zero-touch methods like Bootstrapping Remote Secure Key | |||
| Zero Touch Provisioning (SZTP) [RFC8572], to be used in | Infrastructure (BRSKI) [RFC8995] or Secure Zero Touch | |||
| validating certificate paths. Furthermore, an EE typically | Provisioning (SZTP) [RFC8572], to be used in validating | |||
| certificate paths. Furthermore, an end entity typically | ||||
| needs to be initialized with its own key pair(s). | needs to be initialized with its own key pair(s). | |||
| b. key pair update: Every key pair needs to be updated regularly | b. key pair update: Every key pair needs to be updated regularly | |||
| (i.e., replaced with a new key pair), and a new certificate | (i.e., replaced with a new key pair), and a new certificate | |||
| needs to be issued. | needs to be issued. | |||
| c. certificate update: As certificates expire, they may be | c. certificate update: As certificates expire, they may be | |||
| "refreshed" if nothing relevant in the environment has | "refreshed" if nothing relevant in the environment has | |||
| changed. | changed. | |||
| d. CA key pair update: As with EEs, CA key pairs need to be | d. CA key pair update: As with end entities, CA key pairs need | |||
| updated regularly; however, different mechanisms are | to be updated regularly; however, different mechanisms are | |||
| required. | required. | |||
| e. cross-certification request: One CA requests issuance of a | e. cross-certification request: One CA requests issuance of a | |||
| cross-certificate from another CA. For the purposes of this | cross-certificate from another CA. For the purposes of this | |||
| standard, the following terms are defined. A "cross- | standard, the following terms are defined. A "cross- | |||
| certificate" is a certificate in which the subject CA and the | certificate" is a certificate in which the subject CA and the | |||
| issuer CA are distinct and SubjectPublicKeyInfo contains a | issuer CA are distinct and SubjectPublicKeyInfo contains a | |||
| verification key (i.e., the certificate has been issued for | verification key (i.e., the certificate has been issued for | |||
| the subject CA's signing key pair). When it is necessary to | the subject CA's signing key pair). When it is necessary to | |||
| distinguish more finely, the following terms may be used: A | distinguish more finely, the following terms may be used: A | |||
| skipping to change at line 772 ¶ | skipping to change at line 775 ¶ | |||
| needed. The "means" defined in PKIX MAY involve the messages | needed. The "means" defined in PKIX MAY involve the messages | |||
| specified in Sections 5.3.13 to 5.3.16 or MAY involve other | specified in Sections 5.3.13 to 5.3.16 or MAY involve other | |||
| methods (for example, Lightweight Directory Access Protocol | methods (for example, Lightweight Directory Access Protocol | |||
| (LDAP)) as described in [RFC4511] or [RFC2585] (the | (LDAP)) as described in [RFC4511] or [RFC2585] (the | |||
| "Operational Protocols" documents of the PKIX series of | "Operational Protocols" documents of the PKIX series of | |||
| specifications). | specifications). | |||
| b. CRL publication: As for certificate publication. | b. CRL publication: As for certificate publication. | |||
| 5. Recovery operations: Some PKI management operations are used when | 5. Recovery operations: Some PKI management operations are used when | |||
| an EE has "lost" its TEE: | an end entity has "lost" its TEE: | |||
| a. key pair recovery: As an option, user client key materials | a. key pair recovery: As an option, user client key materials | |||
| (e.g., a user's private key used for decryption purposes) MAY | (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 | be backed up by a CA, an RA, or a key backup system | |||
| associated with a CA or RA. If an entity needs to recover | associated with a CA or RA. If an entity needs to recover | |||
| these backed up key materials (e.g., as a result of a | these backed up key materials (e.g., as a result of a | |||
| forgotten password or a lost key chain file), a protocol | forgotten password or a lost key chain file), a protocol | |||
| exchange may be needed to support such recovery. | exchange may be needed to support such recovery. | |||
| 6. Revocation operations: Some PKI management operations result in | 6. Revocation operations: Some PKI management operations result in | |||
| skipping to change at line 821 ¶ | skipping to change at line 824 ¶ | |||
| utilize the available information to gather confidential technical or | utilize the available information to gather confidential technical or | |||
| business-critical information. Therefore, users should consider | business-critical information. Therefore, users should consider | |||
| protection of confidentiality on lower levels of the protocol stack, | protection of confidentiality on lower levels of the protocol stack, | |||
| e.g., by using TLS [RFC8446], DTLS [RFC9147], or IPsec | e.g., by using TLS [RFC8446], DTLS [RFC9147], or IPsec | |||
| [RFC7296][RFC4303]. | [RFC7296][RFC4303]. | |||
| 4. Assumptions and Restrictions | 4. Assumptions and Restrictions | |||
| 4.1. End Entity Initialization | 4.1. End Entity Initialization | |||
| The first step for an EE in dealing with PKI management entities is | The first step for an end entity in dealing with PKI management | |||
| to request information about the PKI functions supported and to | entities is to request information about the PKI functions supported | |||
| securely acquire a copy of the relevant root CA public key(s). | and to securely acquire a copy of the relevant root CA public key(s). | |||
| 4.2. Initial Registration/Certification | 4.2. Initial Registration/Certification | |||
| There are many schemes that can be used to achieve initial | There are many schemes that can be used to achieve initial | |||
| registration and certification of EEs. No one method is suitable for | registration and certification of end entities. No one method is | |||
| all situations due to the range of policies that a CA may implement | suitable for all situations due to the range of policies that a CA | |||
| and the variation in the types of EE that can occur. | may implement and the variation in the types of end entity that can | |||
| occur. | ||||
| However, we can classify the initial registration/certification | However, we can classify the initial registration/certification | |||
| schemes that are supported by this specification. Note that the word | schemes that are supported by this specification. Note that the word | |||
| "initial", above, is crucial: We are dealing with the situation where | "initial", above, is crucial: We are dealing with the situation where | |||
| the EE in question has had no previous contact with the PKI, except | the end entity in question has had no previous contact with the PKI, | |||
| having received the root CA certificate of that PKI by some zero- | except having received the root CA certificate of that PKI by some | |||
| touch method like BRSKI [RFC8995] [RFC9733] or SZTP [RFC8572]. In | zero-touch method like BRSKI [RFC8995] [RFC9733] or SZTP [RFC8572]. | |||
| case the EE already possesses certified keys, then some | In case the end entity already possesses certified keys, then some | |||
| simplifications/alternatives are possible. | simplifications/alternatives are possible. | |||
| Having classified the schemes that are supported by this | Having classified the schemes that are supported by this | |||
| specification, we can then specify some as mandatory and some as | specification, we can then specify some as mandatory and some as | |||
| optional. The goal is that the mandatory schemes cover a sufficient | optional. The goal is that the mandatory schemes cover a sufficient | |||
| number of the cases that will arise in real use, whilst the optional | number of the cases that will arise in real use, whilst the optional | |||
| schemes are available for special cases that arise less frequently. | schemes are available for special cases that arise less frequently. | |||
| In this way, we achieve a balance between flexibility and ease of | In this way, we achieve a balance between flexibility and ease of | |||
| implementation. | implementation. | |||
| skipping to change at line 868 ¶ | skipping to change at line 872 ¶ | |||
| We will now describe the classification of initial registration/ | We will now describe the classification of initial registration/ | |||
| certification schemes. | certification schemes. | |||
| 4.2.1. Criteria Used | 4.2.1. Criteria Used | |||
| 4.2.1.1. Initiation of Registration/Certification | 4.2.1.1. Initiation of Registration/Certification | |||
| In terms of the PKI messages that are produced, we can regard the | In terms of the PKI messages that are produced, we can regard the | |||
| initiation of the initial registration/certification exchanges as | initiation of the initial registration/certification exchanges as | |||
| occurring wherever the first PKI message relating to the EE is | occurring wherever the first PKI message relating to the end entity | |||
| produced. Note that the real-world initiation of the registration/ | is produced. Note that the real-world initiation of the | |||
| certification procedure may occur elsewhere (e.g., a personnel | registration/certification procedure may occur elsewhere (e.g., a | |||
| department may telephone an RA operator or use zero-touch methods | personnel department may telephone an RA operator or use zero-touch | |||
| like BRSKI [RFC8995] or SZTP [RFC8572]). | methods like BRSKI [RFC8995] or SZTP [RFC8572]). | |||
| The possible locations are at the EE, an RA, or a CA. | The possible locations are at the end entity, an RA, or a CA. | |||
| 4.2.1.2. End Entity Message Origin Authentication | 4.2.1.2. End Entity Message Origin Authentication | |||
| The online messages produced by the EE that requires a certificate | The online messages produced by the end entity that requires a | |||
| may be authenticated or not. The requirement here is to authenticate | certificate may be authenticated or not. The requirement here is to | |||
| the origin of any messages from the EE to the PKI (CA/RA). | authenticate the origin of any messages from the end entity to the | |||
| PKI (CA/RA). | ||||
| In this specification, such authentication is achieved by two | In this specification, such authentication is achieved by two | |||
| different means: | different means: | |||
| * symmetric: The PKI (CA/RA) issuing the EE with a secret value | * symmetric: The PKI (CA/RA) issuing the end entity with a secret | |||
| (initial authentication key) and reference value (used to identify | value (initial authentication key) and reference value (used to | |||
| the secret value) via some out-of-band means. The initial | identify the secret value) via some out-of-band means. The | |||
| authentication key can then be used to protect relevant PKI | initial authentication key can then be used to protect relevant | |||
| messages. | PKI messages. | |||
| * asymmetric: Using a private key and certificate issued by another | * asymmetric: Using a private key and certificate issued by another | |||
| PKI trusted for initial authentication, e.g., an Initial Device | PKI trusted for initial authentication, e.g., an Initial Device | |||
| Identifier (IDevID) IEEE 802.1AR [IEEE.802.1AR-2018]. The trust | Identifier (IDevID) IEEE 802.1AR [IEEE.802.1AR-2018]. The trust | |||
| establishment in this external PKI is out of scope of this | establishment in this external PKI is out of scope of this | |||
| document. | document. | |||
| Thus, we can classify the initial registration/certification scheme | Thus, we can classify the initial registration/certification scheme | |||
| according to whether or not the online 'end entity -> PKI management | according to whether or not the online 'end entity -> PKI management | |||
| entity' messages are authenticated or not. | entity' messages are authenticated or not. | |||
| Note 1: We do not discuss the authentication of the 'PKI management | Note 1: We do not discuss the authentication of the 'PKI management | |||
| entity -> end entity' messages here, as this is always | entity -> end entity' messages here, as this is always | |||
| REQUIRED. In any case, it can be achieved simply once the | REQUIRED. In any case, it can be achieved simply once the | |||
| root-CA public key has been installed at the EE's equipment | root-CA public key has been installed at the end entity's | |||
| or it can be based on the initial authentication key. | equipment or it can be based on the initial authentication | |||
| key. | ||||
| Note 2: An initial registration/certification procedure can be | Note 2: An initial registration/certification procedure can be | |||
| secure where the messages from the EE are authenticated via | secure where the messages from the end entity are | |||
| some out-of-band means (e.g., a subsequent visit). | authenticated via some out-of-band means (e.g., a subsequent | |||
| visit). | ||||
| 4.2.1.3. Location of Key Generation | 4.2.1.3. Location of Key Generation | |||
| In this specification, "key generation" is regarded as occurring | In this specification, "key generation" is regarded as occurring | |||
| wherever either the public or private component of a key pair first | wherever either the public or private component of a key pair first | |||
| occurs in a PKIMessage. Note that this does not preclude a | occurs in a PKIMessage. Note that this does not preclude a | |||
| centralized key generation service by a KGA; the actual key pair MAY | centralized key generation service by a KGA; the actual key pair MAY | |||
| have been generated elsewhere and transported to the EE, RA, or CA | have been generated elsewhere and transported to the end entity, RA, | |||
| using a (proprietary or standardized) key generation request/response | or CA using a (proprietary or standardized) key generation request/ | |||
| protocol (outside the scope of this specification). | response protocol (outside the scope of this specification). | |||
| Thus, there are three possibilities for the location of "key | Thus, there are three possibilities for the location of "key | |||
| generation": the EE, a KGA, or a CA. | generation": the end entity, a KGA, or a CA. | |||
| 4.2.1.4. Confirmation of Successful Certification | 4.2.1.4. Confirmation of Successful Certification | |||
| Following the creation of a certificate for an EE, additional | Following the creation of a certificate for an end entity, additional | |||
| assurance can be gained by having the EE explicitly confirm | assurance can be gained by having the end entity explicitly confirm | |||
| successful receipt of the message containing (or indicating the | successful receipt of the message containing (or indicating the | |||
| creation of) the certificate. Naturally, this confirmation message | creation of) the certificate. Naturally, this confirmation message | |||
| must be protected (based on the initial symmetric or asymmetric | must be protected (based on the initial symmetric or asymmetric | |||
| authentication key or other means). | authentication key or other means). | |||
| This gives two further possibilities: confirmed or not. | This gives two further possibilities: confirmed or not. | |||
| 4.2.2. Initial Registration/Certification Schemes | 4.2.2. Initial Registration/Certification Schemes | |||
| The criteria above allow for a large number of initial registration/ | The criteria above allow for a large number of initial registration/ | |||
| skipping to change at line 958 ¶ | skipping to change at line 965 ¶ | |||
| * initiation occurs at the certifying CA; | * initiation occurs at the certifying CA; | |||
| * no online message authentication is required; | * no online message authentication is required; | |||
| * "key generation" occurs at the certifying CA (see | * "key generation" occurs at the certifying CA (see | |||
| Section 4.2.1.3); and | Section 4.2.1.3); and | |||
| * no confirmation message is required. | * no confirmation message is required. | |||
| In terms of message flow, this scheme means that the only message | In terms of message flow, this scheme means that the only message | |||
| required is sent from the CA to the EE. The message must contain the | required is sent from the CA to the end entity. The message must | |||
| entire TEE for the EE. Some out-of-band means must be provided to | contain the entire TEE for the end entity. Some out-of-band means | |||
| allow the EE to authenticate the message received and to decrypt any | must be provided to allow the end entity to authenticate the message | |||
| encrypted values. | received and to decrypt any encrypted values. | |||
| 4.2.2.2. Basic Authenticated Scheme | 4.2.2.2. Basic Authenticated Scheme | |||
| In terms of the classification above, this scheme is where: | In terms of the classification above, this scheme is where: | |||
| * initiation occurs at the EE; | * initiation occurs at the end entity; | |||
| * message authentication is required; | * message authentication is required; | |||
| * "key generation" occurs at the EE (see Section 4.2.1.3); and | * "key generation" occurs at the end entity (see Section 4.2.1.3); | |||
| and | ||||
| * a confirmation message is recommended. | * a confirmation message is recommended. | |||
| Note: An Initial Authentication Key (IAK) can be either a symmetric | Note: An Initial Authentication Key (IAK) can be either a symmetric | |||
| key or an asymmetric private key with a certificate issued by another | key or an asymmetric private key with a certificate issued by another | |||
| PKI trusted for this purpose. The establishment of such trust is out | PKI trusted for this purpose. The establishment of such trust is out | |||
| of scope of this document. | of scope of this document. | |||
| In terms of message flow, the basic authenticated scheme is as | In terms of message flow, the basic authenticated scheme is as | |||
| follows: | follows: | |||
| EE RA/CA | End Entity RA/CA | |||
| ========== ============= | ========== ============= | |||
| out-of-band distribution of Initial Authentication | out-of-band distribution of Initial Authentication | |||
| Key (IAK) and reference value (RA/CA -> EE) | Key (IAK) and reference value (RA/CA -> end entity) | |||
| Key generation | Key generation | |||
| Creation of certification request | Creation of certification request | |||
| Protect request with IAK | Protect request with IAK | |||
| -----> certification request -----> | -----> certification request -----> | |||
| verify request | verify request | |||
| process request | process request | |||
| create response | create response | |||
| <----- certification response <----- | <----- certification response <----- | |||
| handle response | handle response | |||
| create confirmation | create confirmation | |||
| skipping to change at line 1009 ¶ | skipping to change at line 1017 ¶ | |||
| create response | create response | |||
| <----- conf ack (optional) <----- | <----- conf ack (optional) <----- | |||
| handle response | handle response | |||
| Note: Where verification of the cert confirmation message fails, the | Note: Where verification of the cert confirmation message fails, the | |||
| RA/CA MUST revoke the newly issued certificate if it has been | RA/CA MUST revoke the newly issued certificate if it has been | |||
| published or otherwise made available. | published or otherwise made available. | |||
| 4.3. POP of Private Key | 4.3. POP of Private Key | |||
| POP is where a PKI management entity (CA/RA) verifies if an EE has | POP is where a PKI management entity (CA/RA) verifies if an end | |||
| access to the private key corresponding to a given public key. The | entity has access to the private key corresponding to a given public | |||
| question of whether, and in what circumstances, POPs add value to a | key. The question of whether, and in what circumstances, POPs add | |||
| PKI is a debate as old as PKI itself! See Section 8.1 for a further | value to a PKI is a debate as old as PKI itself! See Section 8.1 for | |||
| discussion on the necessity of POP in PKI. | a further discussion on the necessity of POP in PKI. | |||
| The PKI management operations specified here make it possible for an | The PKI management operations specified here make it possible for an | |||
| EE to prove to a CA/RA that it has possession of (i.e., is able to | end entity to prove to a CA/RA that it has possession of (i.e., is | |||
| use) the private key corresponding to the public key for which a | able to use) the private key corresponding to the public key for | |||
| certificate is requested (see Section 5.2.8 for different POP | which a certificate is requested (see Section 5.2.8 for different POP | |||
| methods). A given CA/RA is free to choose how to enforce POP (e.g., | methods). A given CA/RA is free to choose how to enforce POP (e.g., | |||
| out-of-band procedural means versus PKIX-CMP in-band messages) in its | out-of-band procedural means versus PKIX-CMP in-band messages) in its | |||
| certification exchanges (i.e., this may be a policy issue). However, | certification exchanges (i.e., this may be a policy issue). However, | |||
| it is REQUIRED that CAs/RAs MUST enforce POP by some means because | it is REQUIRED that CAs/RAs MUST enforce POP by some means because | |||
| there are currently many non-PKIX operational protocols in use | there are currently many non-PKIX operational protocols in use | |||
| (various electronic mail protocols are one example) that do not | (various electronic mail protocols are one example) that do not | |||
| explicitly check the binding between the EE and the private key. | explicitly check the binding between the end entity and the private | |||
| Until operational protocols that do verify the binding (for | key. Until operational protocols that do verify the binding (for | |||
| signature, encryption, key agreement, and KEM key pairs) exist, and | signature, encryption, key agreement, and KEM key pairs) exist, and | |||
| are ubiquitous, this binding can only be assumed to have been | are ubiquitous, this binding can only be assumed to have been | |||
| verified by the CA/RA. Therefore, if the binding is not verified by | verified by the CA/RA. Therefore, if the binding is not verified by | |||
| the CA/RA, certificates in the Internet PKI end up being somewhat | the CA/RA, certificates in the Internet PKI end up being somewhat | |||
| less meaningful. | less meaningful. | |||
| POP is accomplished in different ways depending upon the type of key | POP is accomplished in different ways depending upon the type of key | |||
| for which a certificate is requested. If a key can be used for | for which a certificate is requested. If a key can be used for | |||
| multiple purposes (e.g., an RSA key), then any appropriate method MAY | multiple purposes (e.g., an RSA key), then any appropriate method MAY | |||
| be used (e.g., a key that may be used for signing, as well as other | be used (e.g., a key that may be used for signing, as well as other | |||
| purposes, MUST NOT be sent to the CA/RA in order to prove possession | purposes, MUST NOT be sent to the CA/RA in order to prove possession | |||
| unless archival of the private key is explicitly desired). | unless archival of the private key is explicitly desired). | |||
| This specification explicitly allows for cases where an EE supplies | This specification explicitly allows for cases where an end entity | |||
| the relevant proof to an RA and the RA subsequently attests to the CA | supplies the relevant proof to an RA and the RA subsequently attests | |||
| that the required proof has been received (and validated!). For | to the CA that the required proof has been received (and validated!). | |||
| example, an EE wishing to have a signing key certified could send the | For example, an end entity wishing to have a signing key certified | |||
| appropriate signature to the RA, which then simply notifies the | could send the appropriate signature to the RA, which then simply | |||
| relevant CA that the EE has supplied the required proof. Of course, | notifies the relevant CA that the end entity has supplied the | |||
| such a situation may be disallowed by some policies (e.g., CAs may be | required proof. Of course, such a situation may be disallowed by | |||
| the only entities permitted to verify POP during certification). | some policies (e.g., CAs may be the only entities permitted to verify | |||
| POP during certification). | ||||
| 4.3.1. Signature Keys | 4.3.1. Signature Keys | |||
| For signature keys, the EE can sign a value to prove possession of | For signature keys, the end entity can sign a value to prove | |||
| the private key; see Section 5.2.8.2. | possession of the private key; see Section 5.2.8.2. | |||
| 4.3.2. Encryption Keys | 4.3.2. Encryption Keys | |||
| For encryption keys, the EE can provide the private key to the CA/RA | For encryption keys, the end entity can provide the private key to | |||
| (e.g., for archiving), see Section 5.2.8.3.1, or can be required to | the CA/RA (e.g., for archiving), see Section 5.2.8.3.1, or can be | |||
| decrypt a value in order to prove possession of the private key. | required to decrypt a value in order to prove possession of the | |||
| Decrypting a value can be achieved either directly (see | private key. Decrypting a value can be achieved either directly (see | |||
| Section 5.2.8.3.3) or indirectly (see Section 5.2.8.3.2). | Section 5.2.8.3.3) or indirectly (see Section 5.2.8.3.2). | |||
| The direct method is for the RA/CA to issue a random challenge to | The direct method is for the RA/CA to issue a random challenge to | |||
| which an immediate response by the EE is required. | which an immediate response by the end entity is required. | |||
| The indirect method is to issue a certificate that is encrypted for | The indirect method is to issue a certificate that is encrypted for | |||
| the EE (and have the EE demonstrate its ability to decrypt this | the end entity (and have the end entity demonstrate its ability to | |||
| certificate in the confirmation message). This allows a CA to issue | decrypt this certificate in the confirmation message). This allows a | |||
| a certificate in a form that can only be used by the intended EE. | CA to issue a certificate in a form that can only be used by the | |||
| intended end entity. | ||||
| This specification encourages use of the indirect method because it | This specification encourages use of the indirect method because it | |||
| requires no extra messages to be sent (i.e., the proof can be | requires no extra messages to be sent (i.e., the proof can be | |||
| demonstrated using the {request, response, confirmation} triple of | demonstrated using the {request, response, confirmation} triple of | |||
| messages). | messages). | |||
| 4.3.3. Key Agreement Keys | 4.3.3. Key Agreement Keys | |||
| For key agreement keys, the EE and the PKI management entity (i.e., | For key agreement keys, the end entity and the PKI management entity | |||
| CA or RA) must establish a shared secret key in order to prove that | (i.e., CA or RA) must establish a shared secret key in order to prove | |||
| the EE has possession of the private key. | that the end entity has possession of the private key. | |||
| Note that this need not impose any restrictions on the keys that can | Note that this need not impose any restrictions on the keys that can | |||
| be certified by a given CA. In particular, for Diffie-Hellman (DH) | be certified by a given CA. In particular, for Diffie-Hellman (DH) | |||
| keys, the EE may freely choose its algorithm parameters provided that | keys, the end entity may freely choose its algorithm parameters | |||
| the CA can generate a short-term (or one-time) key pair with the | provided that the CA can generate a short-term (or one-time) key pair | |||
| appropriate parameters when necessary. | with the appropriate parameters when necessary. | |||
| 4.3.4. KEM Keys | 4.3.4. KEM Keys | |||
| For KEM keys, the EE can provide the private key to the CA/RA (e.g., | For KEM keys, the end entity can provide the private key to the CA/RA | |||
| for archiving), see Section 5.2.8.3.1, or can be required to decrypt | (e.g., for archiving), see Section 5.2.8.3.1, or can be required to | |||
| a value in order to prove possession of the private key. Decrypting | decrypt a value in order to prove possession of the private key. | |||
| a value can be achieved either directly (see Section 5.2.8.3.3) or | Decrypting a value can be achieved either directly (see | |||
| indirectly (see Section 5.2.8.3.2). | Section 5.2.8.3.3) or indirectly (see Section 5.2.8.3.2). | |||
| Note: A definition of KEMs can be found in Section 1 of [RFC9629]. | Note: A definition of KEMs can be found in Section 1 of [RFC9629]. | |||
| The direct method is for the RA/CA to issue a random challenge to | The direct method is for the RA/CA to issue a random challenge to | |||
| which an immediate response by the EE is required. | which an immediate response by the end entity is required. | |||
| The indirect method is to issue a certificate that is encrypted for | The indirect method is to issue a certificate that is encrypted for | |||
| the EE using a shared secret key derived from a key encapsulated | the end entity using a shared secret key derived from a key | |||
| using the public key (and have the EE demonstrate its ability to use | encapsulated using the public key (and have the end entity | |||
| its private key for decapsulation of the KEM ciphertext, derive the | demonstrate its ability to use its private key for decapsulation of | |||
| shared secret key, decrypt this certificate, and provide a hash of | the KEM ciphertext, derive the shared secret key, decrypt this | |||
| the certificate in the confirmation message). This allows a CA to | certificate, and provide a hash of the certificate in the | |||
| issue a certificate in a form that can only be used by the intended | confirmation message). This allows a CA to issue a certificate in a | |||
| EE. | form that can only be used by the intended end entity. | |||
| This specification encourages use of the indirect method because it | This specification encourages use of the indirect method because it | |||
| requires no extra messages to be sent (i.e., the proof can be | requires no extra messages to be sent (i.e., the proof can be | |||
| demonstrated using the {request, response, confirmation} triple of | demonstrated using the {request, response, confirmation} triple of | |||
| messages). | messages). | |||
| A certification request message for a KEM certificate SHALL use | A certification request message for a KEM certificate SHALL use | |||
| POPOPrivKey by using the keyEncipherment choice of ProofOfPossession | POPOPrivKey by using the keyEncipherment choice of ProofOfPossession | |||
| (see Section 5.2.8) in the popo field of CertReqMsg as long as no | (see Section 5.2.8) in the popo field of CertReqMsg as long as no | |||
| KEM-specific choice is available. | KEM-specific choice is available. | |||
| 4.4. Root CA Key Update | 4.4. Root CA Key Update | |||
| This discussion only applies to CAs that are directly trusted by some | This discussion only applies to CAs that are directly trusted by some | |||
| EEs. Recognizing whether a self-signed or non-self-signed CA is | end entities. Recognizing whether a self-signed or non-self-signed | |||
| supposed to be directly trusted for some EEs is a matter of CA policy | CA is supposed to be directly trusted for some end entities is a | |||
| and EE configuration. Thus, this is beyond the scope of this | matter of CA policy and end entity configuration. Thus, this is | |||
| document. | beyond the scope of this document. | |||
| The basis of the procedure described here is that the CA protects its | 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, | new public key using its previous private key and vice versa. Thus, | |||
| when a CA updates its key pair, it may generate two link | when a CA updates its key pair, it may generate two link | |||
| certificates: "old with new" and "new with old". | certificates: "old with new" and "new with old". | |||
| Note: The usage of link certificates has been shown to be very | Note: The usage of link certificates has been shown to be very | |||
| specific for each use case, and no assumptions are done on this | specific for each use case, and no assumptions are done on this | |||
| aspect. RootCaKeyUpdateContent is updated to specify these link | aspect. RootCaKeyUpdateContent is updated to specify these link | |||
| certificates as optional. | certificates as optional. | |||
| Note: When an LDAP directory is used to publish root CA updates, the | Note: When an LDAP directory is used to publish root CA updates, the | |||
| old and new root CA certificates together with the two link | old and new root CA certificates together with the two link | |||
| certificates are stored as cACertificate attribute values. | certificates are stored as cACertificate attribute values. | |||
| When a CA changes its key pair, those entities who have acquired the | 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. These | old CA public key via "out-of-band" means are most affected. These | |||
| EEs need to acquire the new CA public key in a trusted way. This may | end entities need to acquire the new CA public key in a trusted way. | |||
| be achieved "out-of-band" by using a repository or by using online | This may be achieved "out-of-band" by using a repository or by using | |||
| messages also containing the link certificates "new with old". Once | online messages also containing the link certificates "new with old". | |||
| the EE acquired and properly verified the new CA public key, it must | Once the end entity acquired and properly verified the new CA public | |||
| load the new trust anchor information into its trusted store. | key, it must load the new trust anchor information into its trusted | |||
| store. | ||||
| The data structure used to protect the new and old CA public keys is | The data structure used to protect the new and old CA public keys is | |||
| typically a standard X.509v3 certificate (which may also contain | typically a standard X.509v3 certificate (which may also contain | |||
| extensions). There are no new data structures required. | extensions). There are no new data structures required. | |||
| Note: Sometimes self-signed root CA certificates do not make use of | Note: Sometimes self-signed root CA certificates do not make use of | |||
| X.509v3 extensions and may be X.509v1 certificates. Therefore, a | X.509v3 extensions and may be X.509v1 certificates. Therefore, a | |||
| root CA key update must be able to work for version 1 certificates. | root CA key update must be able to work for version 1 certificates. | |||
| The use of the X.509v3 KeyIdentifier extension is recommended for | The use of the X.509v3 KeyIdentifier extension is recommended for | |||
| easier path building. | easier path building. | |||
| Note: While the scheme could be generalized to cover cases where the | Note: While the scheme could be generalized to cover cases where the | |||
| CA updates its key pair more than once during the validity period of | CA updates its key pair more than once during the validity period of | |||
| one of its EEs' certificates, this generalization seems of dubious | one of its end entities' certificates, this generalization seems of | |||
| value. Not having this generalization simply means that the validity | dubious value. Not having this generalization simply means that the | |||
| periods of certificates issued with the old CA key pair cannot exceed | validity periods of certificates issued with the old CA key pair | |||
| the end of the "old with new" certificate validity period. | cannot exceed the end of the "old with new" certificate validity | |||
| period. | ||||
| Note: This scheme offers a mechanism to ensures that EEs will acquire | Note: This scheme offers a mechanism to ensures that end entities | |||
| the new CA public key, at the latest by the expiry of the last | will acquire the new CA public key, at the latest by the expiry of | |||
| certificate they owned that was signed with the old CA private key. | the last certificate they owned that was signed with the old CA | |||
| Certificate and/or key update operations occurring at other times do | private key. Certificate and/or key update operations occurring at | |||
| not necessarily require this (depending on the EE's equipment). | other times do not necessarily require this (depending on the end | |||
| entity's equipment). | ||||
| Note: In practice, a new root CA may have a slightly different | Note: In practice, a new root CA may have a slightly different | |||
| subject Distinguished Name (DN), e.g., indicating a generation | subject Distinguished Name (DN), e.g., indicating a generation | |||
| identifier like the year of issuance or a version number, for | identifier like the year of issuance or a version number, for | |||
| instance, in an Organizational Unit (OU) element. How to bridge | instance, in an Organizational Unit (OU) element. How to bridge | |||
| trust to the new root CA certificate in a CA DN change or a cross- | trust to the new root CA certificate in a CA DN change or a cross- | |||
| certificate scenario is out of scope for this document. | certificate scenario is out of scope for this document. | |||
| 4.4.1. CA Operator Actions | 4.4.1. CA Operator Actions | |||
| skipping to change at line 1197 ¶ | skipping to change at line 1210 ¶ | |||
| "new with new" certificate). | "new with new" certificate). | |||
| 3. Optionally: Create a link certificate containing the new CA | 3. Optionally: Create a link certificate containing the new CA | |||
| public key signed with the old private key (the "new with old" | public key signed with the old private key (the "new with old" | |||
| certificate). | certificate). | |||
| 4. Optionally: Create a link certificate containing the old CA | 4. Optionally: Create a link certificate containing the old CA | |||
| public key signed with the new private key (the "old with new" | public key signed with the new private key (the "old with new" | |||
| certificate). | certificate). | |||
| 5. Publish these new certificates so that EEs may acquire it, e.g., | 5. Publish these new certificates so that end entities may acquire | |||
| using a repository or RootCaKeyUpdateContent. | it, e.g., using a repository or RootCaKeyUpdateContent. | |||
| The old CA private key is then no longer required when the validity | The old CA private key is then no longer required when the validity | |||
| of the "old with old" certificate ended. However, the old CA public | of the "old with old" certificate ended. However, the old CA public | |||
| key will remain in use for validating the "new with old" link | key will remain in use for validating the "new with old" link | |||
| certificate until the new CA public key is loaded into the trusted | certificate until the new CA public key is loaded into the trusted | |||
| store. The old CA public key is no longer required (other than for | store. The old CA public key is no longer required (other than for | |||
| non-repudiation) when all EEs of this CA have securely acquired and | non-repudiation) when all end entities of this CA have securely | |||
| stored the new CA public key. | acquired and stored the new CA public key. | |||
| The "new with new" certificate must have a validity period with a | The "new with new" certificate must have a validity period with a | |||
| notBefore time that is before the notAfter time of the "old with old" | notBefore time that is before the notAfter time of the "old with old" | |||
| certificate and a notAfter time that is after the notBefore time of | certificate and a notAfter time that is after the notBefore time of | |||
| the next update of this certificate. | the next update of this certificate. | |||
| The "new with old" certificate must have a validity period with the | The "new with old" certificate must have a validity period with the | |||
| same notBefore time as the "new with new" certificate and a notAfter | same notBefore time as the "new with new" certificate and a notAfter | |||
| time by which all EEs of this CA will securely possess the new CA | time by which all end entities of this CA will securely possess the | |||
| public key (at the latest, at the notAfter time of the "old with old" | new CA public key (at the latest, at the notAfter time of the "old | |||
| certificate). | with old" certificate). | |||
| The "old with new" certificate must have a validity period with the | The "old with new" certificate must have a validity period with the | |||
| same notBefore and notAfter time as the "old with old" certificate. | same notBefore and notAfter time as the "old with old" certificate. | |||
| Note: Further operational considerations on transition from one root | Note: Further operational considerations on transition from one root | |||
| CA self-signed certificate to the next is available in Section 5 of | CA self-signed certificate to the next is available in Section 5 of | |||
| [RFC8649]. | [RFC8649]. | |||
| 4.4.2. Verifying Certificates | 4.4.2. Verifying Certificates | |||
| skipping to change at line 1381 ¶ | skipping to change at line 1394 ¶ | |||
| Note: Section 2.10 of [RFC6402] specifies OIDs for a Certificate | Note: Section 2.10 of [RFC6402] specifies OIDs for a Certificate | |||
| Management over CMS (CMC) CA and a CMC RA. As the functionality of a | Management over CMS (CMC) CA and a CMC RA. As the functionality of a | |||
| CA and RA is not specific to any protocol used for managing | CA and RA is not specific to any protocol used for managing | |||
| certificates (such as CMC or CMP), these EKUs are reused by CMP. | certificates (such as CMC or CMP), these EKUs are reused by CMP. | |||
| The meaning of the id-kp-cmKGA EKU is as follows: | The meaning of the id-kp-cmKGA EKU is as follows: | |||
| CMP KGA: CMP KGAs are CAs or are identified by the id-kp-cmKGA EKU. | CMP KGA: CMP KGAs are CAs or are identified by the id-kp-cmKGA EKU. | |||
| The CMP KGA knows the private key it generated on behalf of the | The CMP KGA knows the private key it generated on behalf of the | |||
| EE. This is a very sensitive service and needs specific | end entity. This is a very sensitive service and needs specific | |||
| authorization, which by default is with the CA certificate itself. | authorization, which by default is with the CA certificate itself. | |||
| The CA may delegate its authorization by placing the id-kp-cmKGA | The CA may delegate its authorization by placing the id-kp-cmKGA | |||
| EKU in the certificate used to authenticate the origin of the | EKU in the certificate used to authenticate the origin of the | |||
| generated private key. The authorization may also be determined | generated private key. The authorization may also be determined | |||
| through local configuration of the EE. | through local configuration of the end entity. | |||
| 5. Data Structures | 5. Data Structures | |||
| This section contains descriptions of the data structures required | This section contains descriptions of the data structures required | |||
| for PKI management messages. Section 6 describes constraints on | for PKI management messages. Section 6 describes constraints on | |||
| their values and the sequence of events for each of the various PKI | their values and the sequence of events for each of the various PKI | |||
| management operations. | management operations. | |||
| 5.1. Overall PKI Message | 5.1. Overall PKI Message | |||
| skipping to change at line 1420 ¶ | skipping to change at line 1433 ¶ | |||
| The PKIHeader contains information that is common to many PKI | The PKIHeader contains information that is common to many PKI | |||
| messages. | messages. | |||
| The PKIBody contains message-specific information. | The PKIBody contains message-specific information. | |||
| The PKIProtection, when used, contains bits that protect the PKI | The PKIProtection, when used, contains bits that protect the PKI | |||
| message. | message. | |||
| The extraCerts field can contain certificates that may be useful to | The extraCerts field can contain certificates that may be useful to | |||
| the recipient. For example, this can be used by a CA or RA to | the recipient. For example, this can be used by a CA or RA to | |||
| present an EE with certificates that it needs to verify its own new | present an end entity with certificates that it needs to verify its | |||
| certificate (for example, if the CA that issued the EE's certificate | own new certificate (for example, if the CA that issued the end | |||
| is not a root CA for the EE). Note that this field does not | entity's certificate is not a root CA for the end entity). Note that | |||
| necessarily contain a certification path; the recipient may have to | this field does not necessarily contain a certification path; the | |||
| sort, select from, or otherwise process the extra certificates in | recipient may have to sort, select from, or otherwise process the | |||
| order to use them. | extra certificates in order to use them. | |||
| 5.1.1. PKI Message Header | 5.1.1. PKI Message Header | |||
| All PKI messages require some header information for addressing and | All PKI messages require some header information for addressing and | |||
| transaction identification. Some of this information will also be | transaction identification. Some of this information will also be | |||
| present in a transport-specific envelope. However, if the PKI | present in a transport-specific envelope. However, if the PKI | |||
| message is protected, then this information is also protected (i.e., | message is protected, then this information is also protected (i.e., | |||
| we make no assumption about secure transport). | we make no assumption about secure transport). | |||
| The following data structure is used to contain this information: | The following data structure is used to contain this information: | |||
| skipping to change at line 1464 ¶ | skipping to change at line 1477 ¶ | |||
| PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| The usage of the protocol version number (pvno) is described in | The usage of the protocol version number (pvno) is described in | |||
| Section 7. | Section 7. | |||
| The sender field contains the name of the sender of the PKIMessage. | The sender field contains the name of the sender of the PKIMessage. | |||
| This name (in conjunction with senderKID, if supplied) should be | This name (in conjunction with senderKID, if supplied) should be | |||
| sufficient to indicate the key to use to verify the protection on the | sufficient to indicate the key to use to verify the protection on the | |||
| message. If nothing about the sender is known to the sending entity | message. If nothing about the sender is known to the sending entity | |||
| (e.g., in the initial request message, where the EE may not know its | (e.g., in the initial request message, where the end entity may not | |||
| own DN, email name, IP address, etc.), then the "sender" field MUST | know its own DN, email name, IP address, etc.), then the "sender" | |||
| contain a "NULL-DN" value in the directoryName choice. A "NULL-DN" | field MUST contain a "NULL-DN" value in the directoryName choice. A | |||
| is a SEQUENCE OF relative DNs of zero length and is encoded as | "NULL-DN" is a SEQUENCE OF relative DNs of zero length and is encoded | |||
| 0x3000. In such a case, the senderKID field MUST hold an identifier | as 0x3000. In such a case, the senderKID field MUST hold an | |||
| (i.e., a reference number) that indicates to the receiver the | identifier (i.e., a reference number) that indicates to the receiver | |||
| appropriate shared secret information to use to verify the message. | the appropriate shared secret information to use to verify the | |||
| message. | ||||
| The recipient field contains the name of the recipient of the | The recipient field contains the name of the recipient of the | |||
| PKIMessage. This name (in conjunction with recipKID, if supplied) | PKIMessage. This name (in conjunction with recipKID, if supplied) | |||
| should be usable to verify the protection on the message. | should be usable to verify the protection on the message. | |||
| The protectionAlg field specifies the algorithm used to protect the | The protectionAlg field specifies the algorithm used to protect the | |||
| message. If no protection bits are supplied (note that PKIProtection | message. If no protection bits are supplied (note that PKIProtection | |||
| is OPTIONAL), then this field MUST be omitted; if protection bits are | is OPTIONAL), then this field MUST be omitted; if protection bits are | |||
| supplied, then this field MUST be supplied. | supplied, then this field MUST be supplied. | |||
| skipping to change at line 1544 ¶ | skipping to change at line 1558 ¶ | |||
| reduce the probability of having the transactionID in use at the | reduce the probability of having the transactionID in use at the | |||
| server. | server. | |||
| The senderNonce and recipNonce fields protect the PKIMessage against | The senderNonce and recipNonce fields protect the PKIMessage against | |||
| replay attacks. The senderNonce will typically be 128 bits of | replay attacks. The senderNonce will typically be 128 bits of | |||
| (pseudo-)random data generated by the sender, whereas the recipNonce | (pseudo-)random data generated by the sender, whereas the recipNonce | |||
| is copied from the senderNonce field of the previous message in the | is copied from the senderNonce field of the previous message in the | |||
| transaction. | transaction. | |||
| The messageTime field contains the time at which the sender created | The messageTime field contains the time at which the sender created | |||
| the message. This may be useful to allow EEs to correct/check their | the message. This may be useful to allow end entities to correct/ | |||
| local time for consistency with the time on a central system. | check their local time for consistency with the time on a central | |||
| system. | ||||
| The freeText field may be used to send a human-readable message to | The freeText field may be used to send a human-readable message to | |||
| the recipient (in any number of languages). Each UTF8String MAY | the recipient (in any number of languages). Each UTF8String MAY | |||
| include a language tag [RFC5646] to indicate the language of the | include a language tag [RFC5646] to indicate the language of the | |||
| contained text. The first language used in this sequence indicates | contained text. The first language used in this sequence indicates | |||
| the desired language for replies. | the desired language for replies. | |||
| The generalInfo field may be used to send machine-processable | The generalInfo field may be used to send machine-processable | |||
| additional data to the recipient. The following generalInfo | additional data to the recipient. The following generalInfo | |||
| extensions are defined and MAY be supported. | extensions are defined and MAY be supported. | |||
| 5.1.1.1. ImplicitConfirm | 5.1.1.1. ImplicitConfirm | |||
| This is used by the EE to inform the CA or RA that it does not wish | This is used by the end entity to inform the CA or RA that it does | |||
| to send a certificate confirmation for issued certificates. | not wish to send a certificate confirmation for issued certificates. | |||
| id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} | |||
| ImplicitConfirmValue ::= NULL | ImplicitConfirmValue ::= NULL | |||
| If the CA grants the request to the EE, it MUST put the same | If the CA grants the request to the end entity, it MUST put the same | |||
| extension in the PKIHeader of the response. If the EE does not find | extension in the PKIHeader of the response. If the end entity does | |||
| the extension in the response, it MUST send the certificate | not find the extension in the response, it MUST send the certificate | |||
| confirmation. | confirmation. | |||
| 5.1.1.2. ConfirmWaitTime | 5.1.1.2. ConfirmWaitTime | |||
| This is used by the CA or RA to inform the EE how long it intends to | This is used by the CA or RA to inform the end entity how long it | |||
| wait for the certificate confirmation before revoking the certificate | intends to wait for the certificate confirmation before revoking the | |||
| and deleting the transaction. | certificate and deleting the transaction. | |||
| id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} | |||
| ConfirmWaitTimeValue ::= GeneralizedTime | ConfirmWaitTimeValue ::= GeneralizedTime | |||
| 5.1.1.3. OrigPKIMessage | 5.1.1.3. OrigPKIMessage | |||
| An RA MAY include the original PKIMessage from the EE in the | An RA MAY include the original PKIMessage from the end entity in the | |||
| generalInfo field of the PKIHeader of a PKIMessage. This is used by | generalInfo field of the PKIHeader of a PKIMessage. This is used by | |||
| the RA to inform the CA of the original PKIMessage that it received | the RA to inform the CA of the original PKIMessage that it received | |||
| from the EE and modified in some way (e.g., added or modified | from the end entity and modified in some way (e.g., added or modified | |||
| particular field values or added new extensions) before forwarding | particular field values or added new extensions) before forwarding | |||
| the new PKIMessage. This accommodates, for example, cases in which | the new PKIMessage. This accommodates, for example, cases in which | |||
| the CA wishes to check the message origin, the POP, or other | the CA wishes to check the message origin, the POP, or other | |||
| information on the original EE message. | information on the original end entity message. | |||
| Note: If the changes made by the RA to the original PKIMessage break | Note: If the changes made by the RA to the original PKIMessage break | |||
| the POP of a certificate request, the RA can set the popo field of | the POP of a certificate request, the RA can set the popo field of | |||
| the new PKIMessage to raVerified (see Section 5.2.8.4). | the new PKIMessage to raVerified (see Section 5.2.8.4). | |||
| Unless the OrigPKIMessage infoValue is in the header of a nested | Unless the OrigPKIMessage infoValue is in the header of a nested | |||
| message, it MUST contain exactly one PKIMessage. The contents of | message, it MUST contain exactly one PKIMessage. The contents of | |||
| OrigPKIMessage infoValue in the header of a nested message MAY | OrigPKIMessage infoValue in the header of a nested message MAY | |||
| contain multiple PKIMessage structures, which MUST be in the same | contain multiple PKIMessage structures, which MUST be in the same | |||
| order as the PKIMessage structures in PKIBody. | order as the PKIMessage structures in PKIBody. | |||
| id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | |||
| OrigPKIMessageValue ::= PKIMessages | OrigPKIMessageValue ::= PKIMessages | |||
| 5.1.1.4. CertProfile | 5.1.1.4. CertProfile | |||
| This is used by the EE to indicate specific certificate profiles, | This is used by the end entity to indicate specific certificate | |||
| e.g., when requesting a new certificate or a certificate request | profiles, e.g., when requesting a new certificate or a certificate | |||
| template (see Section 5.3.19.16). | request template (see Section 5.3.19.16). | |||
| id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | |||
| CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
| When used in a p10cr message, the CertProfileValue sequence MUST NOT | When used in a p10cr message, the CertProfileValue sequence MUST NOT | |||
| contain multiple certificate profile names. When used in an | contain multiple certificate profile names. When used in an | |||
| ir/cr/kur/genm message, the CertProfileValue sequence MUST NOT | ir/cr/kur/genm message, the CertProfileValue sequence MUST NOT | |||
| contain more certificate profile names than the number of CertReqMsg | contain more certificate profile names than the number of CertReqMsg | |||
| or GenMsgContent InfoTypeAndValue elements contained in the message | or GenMsgContent InfoTypeAndValue elements contained in the message | |||
| body. | body. | |||
| skipping to change at line 1708 ¶ | skipping to change at line 1723 ¶ | |||
| There MAY be cases in which the PKIProtection BIT STRING is | There MAY be cases in which the PKIProtection BIT STRING is | |||
| deliberately not used to protect a message (i.e., this OPTIONAL field | deliberately not used to protect a message (i.e., this OPTIONAL field | |||
| is omitted) because other protection, external to PKIX, will be | is omitted) because other protection, external to PKIX, will be | |||
| applied instead. Such a choice is explicitly allowed in this | applied instead. Such a choice is explicitly allowed in this | |||
| specification. Examples of such external protection include CMS | specification. Examples of such external protection include CMS | |||
| [RFC5652] and Security Multiparts [RFC1847] encapsulation of the | [RFC5652] and Security Multiparts [RFC1847] encapsulation of the | |||
| PKIMessage (or simply the PKIBody (omitting the CHOICE tag), if the | PKIMessage (or simply the PKIBody (omitting the CHOICE tag), if the | |||
| relevant PKIHeader information is securely carried in the external | relevant PKIHeader information is securely carried in the external | |||
| mechanism). It is noted, however, that many such external mechanisms | mechanism). It is noted, however, that many such external mechanisms | |||
| require that the EE already possesses a public-key certificate, a | require that the end entity already possesses a public-key | |||
| unique DN, and/or other such infrastructure-related information. | certificate, a unique DN, and/or other such infrastructure-related | |||
| Thus, they may not be appropriate for initial registration, key- | information. Thus, they may not be appropriate for initial | |||
| recovery, or any other process with "bootstrapping" characteristics. | registration, key-recovery, or any other process with "bootstrapping" | |||
| For those cases, it may be necessary that the PKIProtection parameter | characteristics. For those cases, it may be necessary that the | |||
| be used. In the future, if/when external mechanisms are modified to | PKIProtection parameter be used. In the future, if/when external | |||
| accommodate bootstrapping scenarios, the use of PKIProtection may | mechanisms are modified to accommodate bootstrapping scenarios, the | |||
| become rare or non-existent. | use of PKIProtection may become rare or non-existent. | |||
| Depending on the circumstances, the PKIProtection bits may contain a | Depending on the circumstances, the PKIProtection bits may contain a | |||
| MAC or signature. Only the following cases can occur: | MAC or signature. Only the following cases can occur: | |||
| 5.1.3.1. Shared Secret Information | 5.1.3.1. Shared Secret Information | |||
| In this case, the sender and recipient share secret information with | In this case, the sender and recipient share secret information with | |||
| sufficient entropy (established via out-of-band means). | sufficient entropy (established via out-of-band means). | |||
| PKIProtection will contain a MAC value, and the protectionAlg MAY be | PKIProtection will contain a MAC value, and the protectionAlg MAY be | |||
| one of the options described in Section 6.1 of CMP Algorithms | one of the options described in Section 6.1 of CMP Algorithms | |||
| skipping to change at line 1777 ¶ | skipping to change at line 1792 ¶ | |||
| Note: It is RECOMMENDED that the fields of PBMParameter remain | Note: It is RECOMMENDED that the fields of PBMParameter remain | |||
| constant throughout the messages of a single transaction (e.g., | constant throughout the messages of a single transaction (e.g., | |||
| ir/ip/certConf/pkiConf) to reduce the overhead associated with | ir/ip/certConf/pkiConf) to reduce the overhead associated with | |||
| PasswordBasedMac computation. | PasswordBasedMac computation. | |||
| 5.1.3.2. DH Key Pairs | 5.1.3.2. DH Key Pairs | |||
| Where the sender and receiver possess finite-field or elliptic-curve- | Where the sender and receiver possess finite-field or elliptic-curve- | |||
| based DH certificates with compatible DH parameters in order to | based DH certificates with compatible DH parameters in order to | |||
| protect the message, the EE must generate a symmetric key based on | protect the message, the end entity must generate a symmetric key | |||
| its private DH key value and the DH public key of the recipient of | based on its private DH key value and the DH public key of the | |||
| the PKI message. PKIProtection will contain a MAC value keyed with | recipient of the PKI message. PKIProtection will contain a MAC value | |||
| this derived symmetric key, and the protectionAlg will be the | keyed with this derived symmetric key, and the protectionAlg will be | |||
| following: | the following: | |||
| id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | |||
| DHBMParameter ::= SEQUENCE { | DHBMParameter ::= SEQUENCE { | |||
| owf AlgorithmIdentifier, | owf AlgorithmIdentifier, | |||
| -- AlgId for an OWF | -- AlgId for an OWF | |||
| mac AlgorithmIdentifier | mac AlgorithmIdentifier | |||
| -- the MAC AlgId | -- the MAC AlgId | |||
| } | } | |||
| skipping to change at line 2045 ¶ | skipping to change at line 2060 ¶ | |||
| Additionally, multiple PKI messages MAY be aggregated. There are | Additionally, multiple PKI messages MAY be aggregated. There are | |||
| several use cases for such messages. | several use cases for such messages. | |||
| * The RA confirms having validated and authorized a message and | * The RA confirms having validated and authorized a message and | |||
| forwards the original message unchanged. | forwards the original message unchanged. | |||
| * A PKI management entity collects several messages that are to be | * A PKI management entity collects several messages that are to be | |||
| forwarded in the same direction and forwards them in a batch. | forwarded in the same direction and forwards them in a batch. | |||
| Request messages can be transferred as a batch upstream (towards | Request messages can be transferred as a batch upstream (towards | |||
| the CA); response or announce messages can be transferred as a | the CA); response or announce messages can be transferred as a | |||
| batch downstream (towards an RA but not to the EE). For instance, | batch downstream (towards an RA but not to the end entity). For | |||
| this can be used when bridging an offline connection between two | instance, this can be used when bridging an offline connection | |||
| PKI management entities. | between two PKI management entities. | |||
| These use cases are accomplished by nesting the messages within a new | These use cases are accomplished by nesting the messages within a new | |||
| PKI message. The structure used is as follows: | PKI message. The structure used is as follows: | |||
| NestedMessageContent ::= PKIMessages | NestedMessageContent ::= PKIMessages | |||
| In case an RA needs to modify a request message, it MAY include the | In case an RA needs to modify a request message, it MAY include the | |||
| original PKIMessage in the generalInfo field of the modified message, | original PKIMessage in the generalInfo field of the modified message, | |||
| as described in Section 5.1.1.3. | as described in Section 5.1.1.3. | |||
| skipping to change at line 2083 ¶ | skipping to change at line 2098 ¶ | |||
| Note: Even if the originator completely specifies the contents of a | Note: Even if the originator completely specifies the contents of a | |||
| certificate it requires, a CA is free to modify fields within the | certificate it requires, a CA is free to modify fields within the | |||
| certificate actually issued. If the modified certificate is | certificate actually issued. If the modified certificate is | |||
| unacceptable to the requester, the requester MUST send back a | unacceptable to the requester, the requester MUST send back a | |||
| certConf message that either does not include this certificate (via a | certConf message that either does not include this certificate (via a | |||
| CertHash) or does include this certificate (via a CertHash) along | CertHash) or does include this certificate (via a CertHash) along | |||
| with a status of "rejected". See Section 5.3.18 for the definition | with a status of "rejected". See Section 5.3.18 for the definition | |||
| and use of CertHash and the certConf message. | and use of CertHash and the certConf message. | |||
| Note: Before requesting a new certificate, an EE can request a | Note: Before requesting a new certificate, an end entity can request | |||
| certTemplate structure as a kind of certificate request blueprint in | a certTemplate structure as a kind of certificate request blueprint | |||
| order to learn which data the CA expects to be present in the | in order to learn which data the CA expects to be present in the | |||
| certificate request (see Section 5.3.19.16). | certificate request (see Section 5.3.19.16). | |||
| See CRMF [RFC4211] for CertTemplate syntax. | See CRMF [RFC4211] for CertTemplate syntax. | |||
| If certTemplate is an empty SEQUENCE (i.e., all fields omitted), then | If certTemplate is an empty SEQUENCE (i.e., all fields omitted), then | |||
| the controls field in the CertRequest structure MAY contain the id- | the controls field in the CertRequest structure MAY contain the id- | |||
| regCtrl-altCertTemplate control, specifying a template for a | regCtrl-altCertTemplate control, specifying a template for a | |||
| certificate other than an X.509v3 public-key certificate. | certificate other than an X.509v3 public-key certificate. | |||
| Conversely, if certTemplate is not empty (i.e., at least one field is | Conversely, if certTemplate is not empty (i.e., at least one field is | |||
| present), then controls MUST NOT contain id-regCtrl-altCertTemplate. | present), then controls MUST NOT contain id-regCtrl-altCertTemplate. | |||
| skipping to change at line 2324 ¶ | skipping to change at line 2339 ¶ | |||
| ProofOfPossession ::= CHOICE { | ProofOfPossession ::= CHOICE { | |||
| raVerified [0] NULL, | raVerified [0] NULL, | |||
| signature [1] POPOSigningKey, | signature [1] POPOSigningKey, | |||
| keyEncipherment [2] POPOPrivKey, | keyEncipherment [2] POPOPrivKey, | |||
| keyAgreement [3] POPOPrivKey | keyAgreement [3] POPOPrivKey | |||
| } | } | |||
| 5.2.8.1. raVerified | 5.2.8.1. raVerified | |||
| An EE MUST NOT use raVerified. If an RA performs changes to a | An end entity MUST NOT use raVerified. If an RA performs changes to | |||
| certification request breaking the provided POP, or if the RA | a certification request breaking the provided POP, or if the RA | |||
| requests a certificate on behalf of an EE and cannot provide the POP | requests a certificate on behalf of an end entity and cannot provide | |||
| itself, the RA MUST use raVerified. Otherwise, it SHOULD NOT use | the POP itself, the RA MUST use raVerified. Otherwise, it SHOULD NOT | |||
| raVerified. | use raVerified. | |||
| When introducing raVerified, the RA MUST check the existing POP, or | When introducing raVerified, the RA MUST check the existing POP, or | |||
| it MUST ensure by other means that the EE is the holder of the | it MUST ensure by other means that the end entity is the holder of | |||
| private key. The RA MAY provide the original message containing the | the private key. The RA MAY provide the original message containing | |||
| POP in the generalInfo field using the id-it-origPKIMessage (see | the POP in the generalInfo field using the id-it-origPKIMessage (see | |||
| Section 5.1.1.3) enabling the CA to verify it. | Section 5.1.1.3) enabling the CA to verify it. | |||
| 5.2.8.2. POPOSigningKey Structure | 5.2.8.2. POPOSigningKey Structure | |||
| If the certification request is for a key pair that supports signing | If the certification request is for a key pair that supports signing | |||
| (i.e., a request for a verification certificate), then the POP of the | (i.e., a request for a verification certificate), then the POP of the | |||
| private key is demonstrated through use of the POPOSigningKey | private key is demonstrated through use of the POPOSigningKey | |||
| structure; for details, see Section 4.1 of [RFC4211]. | structure; for details, see Section 4.1 of [RFC4211]. | |||
| POPOSigningKey ::= SEQUENCE { | POPOSigningKey ::= SEQUENCE { | |||
| skipping to change at line 2377 ¶ | skipping to change at line 2392 ¶ | |||
| and publicKey values, then poposkInput MUST be omitted and the | and publicKey values, then poposkInput MUST be omitted and the | |||
| signature MUST be computed on the DER-encoded value of the certReq | signature MUST be computed on the DER-encoded value of the certReq | |||
| field of the CertReqMsg (or the DER-encoded value of | field of the CertReqMsg (or the DER-encoded value of | |||
| AltCertTemplate). If certTemplate/altCertTemplate does not contain | AltCertTemplate). If certTemplate/altCertTemplate does not contain | |||
| both the subject and public key values (i.e., if it contains only one | both the subject and public key values (i.e., if it contains only one | |||
| of these or neither), then poposkInput MUST be present and the | of these or neither), then poposkInput MUST be present and the | |||
| signature MUST be computed on the DER-encoded value of poposkInput | signature MUST be computed on the DER-encoded value of poposkInput | |||
| (i.e., the "value" OCTETs of the POPOSigningKeyInput DER). | (i.e., the "value" OCTETs of the POPOSigningKeyInput DER). | |||
| In the special case that the CA/RA has a DH certificate that is known | In the special case that the CA/RA has a DH certificate that is known | |||
| to the EE and the certification request is for a key agreement key | to the end entity and the certification request is for a key | |||
| pair, the EE can also use the POPOSigningKey structure (where the | agreement key pair, the end entity can also use the POPOSigningKey | |||
| algorithmIdentifier field is DHBasedMAC and the signature field is | structure (where the algorithmIdentifier field is DHBasedMAC and the | |||
| the MAC) for demonstrating POP. | signature field is the MAC) for demonstrating POP. | |||
| 5.2.8.3. POPOPrivKey Structure | 5.2.8.3. POPOPrivKey Structure | |||
| If the certification request is for a key pair that does not support | If the certification request is for a key pair that does not support | |||
| signing (i.e., a request for an encryption or key agreement | signing (i.e., a request for an encryption or key agreement | |||
| certificate), then the POP of the private key is demonstrated through | certificate), then the POP of the private key is demonstrated through | |||
| use of the POPOPrivKey structure in one of the following three ways; | use of the POPOPrivKey structure in one of the following three ways; | |||
| for details see Sections 4.2 and 4.3 in [RFC4211]. | for details see Sections 4.2 and 4.3 in [RFC4211]. | |||
| POPOPrivKey ::= CHOICE { | POPOPrivKey ::= CHOICE { | |||
| skipping to change at line 2437 ¶ | skipping to change at line 2452 ¶ | |||
| maintaining bits-on-the-wire compatibility with [RFC4211]. | maintaining bits-on-the-wire compatibility with [RFC4211]. | |||
| 5.2.8.3.2. Indirect Method - Encrypted Certificate | 5.2.8.3.2. Indirect Method - Encrypted Certificate | |||
| The indirect method mentioned previously in Section 4.3 demonstrates | The indirect method mentioned previously in Section 4.3 demonstrates | |||
| POP of the private key by having the CA return the requested | POP of the private key by having the CA return the requested | |||
| certificate in encrypted form (see Section 5.2.2). This method is | certificate in encrypted form (see Section 5.2.2). This method is | |||
| indicated in the CertRequest by requesting the encrCert option in the | indicated in the CertRequest by requesting the encrCert option in the | |||
| subsequentMessage choice of POPOPrivKey. | subsequentMessage choice of POPOPrivKey. | |||
| EE RA/CA | end entity RA/CA | |||
| ---- req ----> | ---- req ----> | |||
| <--- rep (enc cert) ----- | <--- rep (enc cert) ----- | |||
| ---- conf (cert hash) ----> | ---- conf (cert hash) ----> | |||
| <--- ack ----- | <--- ack ----- | |||
| The EE proves knowledge of the private key to the CA by providing the | The end entity proves knowledge of the private key to the CA by | |||
| correct CertHash for this certificate in the certConf message. This | providing the correct CertHash for this certificate in the certConf | |||
| demonstrates POP because the EE can only compute the correct CertHash | message. This demonstrates POP because the end entity can only | |||
| if it is able to recover the encrypted certificate, and it can only | compute the correct CertHash if it is able to recover the encrypted | |||
| recover the certificate if it is able to obtain the symmetric key | certificate, and it can only recover the certificate if it is able to | |||
| using the required private key. Clearly, for this to work, the CA | obtain the symmetric key using the required private key. Clearly, | |||
| MUST NOT publish the certificate until the certConf message arrives | for this to work, the CA MUST NOT publish the certificate until the | |||
| (when certHash is to be used to demonstrate POP). See Section 5.3.18 | certConf message arrives (when certHash is to be used to demonstrate | |||
| for further details, and see Section 8.11 for security considerations | POP). See Section 5.3.18 for further details, and see Section 8.11 | |||
| regarding use of CT logs. | for security considerations regarding use of CT logs. | |||
| The recipient SHOULD maintain a context of the PKI management | The recipient SHOULD maintain a context of the PKI management | |||
| operation, e.g., using transactionID and certReqId, to identify the | operation, e.g., using transactionID and certReqId, to identify the | |||
| private key to use when decrypting the EnvelopedData containing the | private key to use when decrypting the EnvelopedData containing the | |||
| newly issued certificate. The recipient may be unable to use the | newly issued certificate. The recipient may be unable to use the | |||
| RecipientInfo structure as it refers to the certificate that is still | RecipientInfo structure as it refers to the certificate that is still | |||
| encrypted. The sender MUST populate the rid field as specified by | encrypted. The sender MUST populate the rid field as specified by | |||
| CMS, and the client MAY ignore it. | CMS, and the client MAY ignore it. | |||
| 5.2.8.3.3. Direct Method - Challenge-Response Protocol | 5.2.8.3.3. Direct Method - Challenge-Response Protocol | |||
| The direct method mentioned previously in Section 4.3 demonstrates | The direct method mentioned previously in Section 4.3 demonstrates | |||
| POP of the private key by having the EE engage in a challenge- | POP of the private key by having the end entity engage in a | |||
| response protocol (using the messages popdecc of type POPODecKeyChall | challenge-response protocol (using the messages popdecc of type | |||
| and popdecr of type POPODecKeyResp; see below) between | POPODecKeyChall and popdecr of type POPODecKeyResp; see below) | |||
| CertReqMessages and CertRepMessage. This method is indicated in the | between CertReqMessages and CertRepMessage. This method is indicated | |||
| CertRequest by requesting the challengeResp option in the | in the CertRequest by requesting the challengeResp option in the | |||
| subsequentMessage choice of POPOPrivKey. | subsequentMessage choice of POPOPrivKey. | |||
| Note: This method would typically be used in an environment in which | Note: This method would typically be used in an environment in which | |||
| an RA verifies POP and then makes a certification request to the CA | an RA verifies POP and then makes a certification request to the CA | |||
| on behalf of the EE. In such a scenario, the CA trusts the RA to | on behalf of the end entity. In such a scenario, the CA trusts the | |||
| have done POP correctly before the RA requests a certificate for the | RA to have done POP correctly before the RA requests a certificate | |||
| EE. | for the end entity. | |||
| The complete protocol then looks as follows (note that req' does not | The complete protocol then looks as follows (note that req' does not | |||
| necessarily encapsulate req as a nested message): | necessarily encapsulate req as a nested message): | |||
| EE RA CA | end entity RA CA | |||
| ---- req ----> | ---- req ----> | |||
| <--- chall --- | <--- chall --- | |||
| ---- resp ---> | ---- resp ---> | |||
| ---- req' ---> | ---- req' ---> | |||
| <--- rep ----- | <--- rep ----- | |||
| ---- conf ---> | ---- conf ---> | |||
| <--- ack ----- | <--- ack ----- | |||
| <--- rep ----- | <--- rep ----- | |||
| ---- conf ---> | ---- conf ---> | |||
| <--- ack ----- | <--- ack ----- | |||
| This protocol is obviously much longer than the exchange given in | This protocol is obviously much longer than the exchange given in | |||
| Section 5.2.8.3.2 above but allows a Local Registration Authority | Section 5.2.8.3.2 above but allows a Local Registration Authority | |||
| (LRA) to be involved and has the property that the certificate itself | (LRA) to be involved and has the property that the certificate itself | |||
| is not actually created until the POP is complete. In some | is not actually created until the POP is complete. In some | |||
| environments, a different order of the above messages may be | environments, a different order of the above messages may be | |||
| required, such as the following (this may be determined by policy): | required, such as the following (this may be determined by policy): | |||
| EE RA CA | end entity RA CA | |||
| ---- req ----> | ---- req ----> | |||
| <--- chall --- | <--- chall --- | |||
| ---- resp ---> | ---- resp ---> | |||
| ---- req' ---> | ---- req' ---> | |||
| <--- rep ----- | <--- rep ----- | |||
| <--- rep ----- | <--- rep ----- | |||
| ---- conf ---> | ---- conf ---> | |||
| ---- conf ---> | ---- conf ---> | |||
| <--- ack ----- | <--- ack ----- | |||
| <--- ack ----- | <--- ack ----- | |||
| skipping to change at line 2565 ¶ | skipping to change at line 2580 ¶ | |||
| compatible with [RFC4210]. Note that the size of Rand, when used | compatible with [RFC4210]. Note that the size of Rand, when used | |||
| with challenge, needs to be appropriate for encryption, involving the | with challenge, needs to be appropriate for encryption, involving the | |||
| public key of the requester. If, in some environment, names are so | public key of the requester. If, in some environment, names are so | |||
| long that they cannot fit (e.g., very long DNs), then whatever | long that they cannot fit (e.g., very long DNs), then whatever | |||
| portion will fit should be used (as long as it includes at least the | portion will fit should be used (as long as it includes at least the | |||
| common name, and as long as the receiver is able to deal meaningfully | common name, and as long as the receiver is able to deal meaningfully | |||
| with the abbreviation). | with the abbreviation). | |||
| POPODecKeyRespContent ::= SEQUENCE OF INTEGER | POPODecKeyRespContent ::= SEQUENCE OF INTEGER | |||
| On receiving the popdecc message, the EE decrypts all included | On receiving the popdecc message, the end entity decrypts all | |||
| challenges and responds with a popdecr message containing the | included challenges and responds with a popdecr message containing | |||
| decrypted integer values in the same order. | the decrypted integer values in the same order. | |||
| 5.2.8.4. Summary of POP Options | 5.2.8.4. Summary of POP Options | |||
| The text in this section provides several options with respect to POP | The text in this section provides several options with respect to POP | |||
| techniques. Using "SK" for "signing key", "EK" for "encryption key", | techniques. Using "SK" for "signing key", "EK" for "encryption key", | |||
| "KAK" for "key agreement key", and "KEMK" for "key encapsulation | "KAK" for "key agreement key", and "KEMK" for "key encapsulation | |||
| mechanism key", the techniques may be summarized as follows: | mechanism key", the techniques may be summarized as follows: | |||
| RAVerified; | RAVerified; | |||
| SKPOP; | SKPOP; | |||
| skipping to change at line 2591 ¶ | skipping to change at line 2606 ¶ | |||
| KAKPOPEncryptedKey; | KAKPOPEncryptedKey; | |||
| KEMKPOPEncryptedKey; | KEMKPOPEncryptedKey; | |||
| KAKPOPThisMessageDHMAC; | KAKPOPThisMessageDHMAC; | |||
| EKPOPEncryptedCert; | EKPOPEncryptedCert; | |||
| KAKPOPEncryptedCert; | KAKPOPEncryptedCert; | |||
| KEMKPOPEncryptedCert; | KEMKPOPEncryptedCert; | |||
| EKPOPChallengeResp; | EKPOPChallengeResp; | |||
| KAKPOPChallengeResp; and | KAKPOPChallengeResp; and | |||
| KEMKPOPChallengeResp. | KEMKPOPChallengeResp. | |||
| Given this array of options, it is natural to ask how an EE can know | Given this array of options, it is natural to ask how an end entity | |||
| what is supported by the CA/RA (i.e., which options it may use when | can know what is supported by the CA/RA (i.e., which options it may | |||
| requesting certificates). The following guidelines should clarify | use when requesting certificates). The following guidelines should | |||
| this situation for EE implementers. | clarify this situation for end entity implementers. | |||
| * RAVerified: This is not an EE decision; the RA uses this if and | * RAVerified: This is not an end entity decision; the RA uses this | |||
| only if it has verified POP before forwarding the request on to | if and only if it has verified POP before forwarding the request | |||
| the CA, so it is not possible for the EE to choose this technique. | on to the CA, so it is not possible for the end entity to choose | |||
| this technique. | ||||
| * SKPOP: If the EE has a signing key pair, this is the only POP | * SKPOP: If the end entity has a signing key pair, this is the only | |||
| method specified for use in the request for a corresponding | POP method specified for use in the request for a corresponding | |||
| certificate. | certificate. | |||
| * EKPOPThisMessage (deprecated), KAKPOPThisMessage (deprecated), | * EKPOPThisMessage (deprecated), KAKPOPThisMessage (deprecated), | |||
| EKPOPEncryptedKey, KAKPOPEncryptedKey, KEMKPOPEncryptedKey: | EKPOPEncryptedKey, KAKPOPEncryptedKey, KEMKPOPEncryptedKey: | |||
| Whether or not to give up its private key to the CA/RA is an EE | Whether or not to give up its private key to the CA/RA is an end | |||
| decision. If the EE decides to reveal its key, then these are the | entity decision. If the end entity decides to reveal its key, | |||
| only POP methods available in this specification to achieve this | then these are the only POP methods available in this | |||
| (and the key pair type and protocol version used will determine | specification to achieve this (and the key pair type and protocol | |||
| which of these methods to use). The reason for deprecating | version used will determine which of these methods to use). The | |||
| EKPOPThisMessage and KAKPOPThisMessage options has been given in | reason for deprecating EKPOPThisMessage and KAKPOPThisMessage | |||
| Section 5.2.8.3.1. | options has been given in Section 5.2.8.3.1. | |||
| * KAKPOPThisMessageDHMAC: The EE can only use this method if (1) the | * KAKPOPThisMessageDHMAC: The end entity can only use this method if | |||
| CA/RA has a DH certificate available for this purpose and (2) the | (1) the CA/RA has a DH certificate available for this purpose and | |||
| EE already has a copy of this certificate. If both these | (2) the end entity already has a copy of this certificate. If | |||
| conditions hold, then this technique is clearly supported and may | both these conditions hold, then this technique is clearly | |||
| be used by the EE, if desired. | supported and may be used by the end entity, if desired. | |||
| * EKPOPEncryptedCert, KAKPOPEncryptedCert, KEMKPOPEncryptedCert, | * EKPOPEncryptedCert, KAKPOPEncryptedCert, KEMKPOPEncryptedCert, | |||
| EKPOPChallengeResp, KAKPOPChallengeResp, and KEMKPOPChallengeResp: | EKPOPChallengeResp, KAKPOPChallengeResp, and KEMKPOPChallengeResp: | |||
| The EE picks one of these (in the subsequentMessage field) in the | The end entity picks one of these (in the subsequentMessage field) | |||
| request message, depending upon preference and key pair type. The | in the request message, depending upon preference and key pair | |||
| EE is not doing POP at this point; it is simply indicating which | type. The end entity is not doing POP at this point; it is simply | |||
| method it wants to use. Therefore, if the CA/RA replies with a | indicating which method it wants to use. Therefore, if the CA/RA | |||
| "badPOP" error, the EE can re-request using the other POP method | replies with a "badPOP" error, the end entity can re-request using | |||
| chosen in subsequentMessage. Note, however, that this | the other POP method chosen in subsequentMessage. Note, however, | |||
| specification encourages the use of the EncryptedCert choice and, | that this specification encourages the use of the EncryptedCert | |||
| furthermore, says that the challenge-response would typically be | choice and, furthermore, says that the challenge-response would | |||
| used when an RA is involved and doing POP verification. Thus, the | typically be used when an RA is involved and doing POP | |||
| EE should be able to make an intelligent decision regarding which | verification. Thus, the end entity should be able to make an | |||
| of these POP methods to choose in the request message. | intelligent decision regarding which of these POP methods to | |||
| choose in the request message. | ||||
| 5.2.9. GeneralizedTime | 5.2.9. GeneralizedTime | |||
| GeneralizedTime is a standard ASN.1 type and SHALL be used as | GeneralizedTime is a standard ASN.1 type and SHALL be used as | |||
| specified in Section 4.1.2.5.2 of [RFC5280]. | specified in Section 4.1.2.5.2 of [RFC5280]. | |||
| 5.3. Operation-Specific Data Structures | 5.3. Operation-Specific Data Structures | |||
| 5.3.1. Initialization Request | 5.3.1. Initialization Request | |||
| skipping to change at line 2736 ¶ | skipping to change at line 2753 ¶ | |||
| Only one of the failInfo (in PKIStatusInfo) and certificate (in | Only one of the failInfo (in PKIStatusInfo) and certificate (in | |||
| CertifiedKeyPair) fields can be present in each CertResponse | CertifiedKeyPair) fields can be present in each CertResponse | |||
| (depending on the status). For some status values (e.g., waiting), | (depending on the status). For some status values (e.g., waiting), | |||
| neither of the optional fields will be present. | neither of the optional fields will be present. | |||
| Given an EncryptedCert and the relevant decryption key, the | Given an EncryptedCert and the relevant decryption key, the | |||
| certificate may be obtained. The purpose of this is to allow a CA to | certificate may be obtained. The purpose of this is to allow a CA to | |||
| return the value of a certificate but with the constraint that only | return the value of a certificate but with the constraint that only | |||
| the intended recipient can obtain the actual certificate. The | the intended recipient can obtain the actual certificate. The | |||
| benefit of this approach is that a CA may reply with a certificate | benefit of this approach is that a CA may reply with a certificate | |||
| even in the absence of proof that the requester is the EE that can | even in the absence of proof that the requester is the end entity | |||
| use the relevant private key (note that the proof is not obtained | that can use the relevant private key (note that the proof is not | |||
| until the certConf message is received by the CA). Thus, the CA will | obtained until the certConf message is received by the CA). Thus, | |||
| not have to revoke that certificate in the event that something goes | the CA will not have to revoke that certificate in the event that | |||
| wrong with the POP (but MAY do so anyway, depending upon policy). | something goes wrong with the POP (but MAY do so anyway, depending | |||
| upon policy). | ||||
| The use of EncryptedKey is described in Section 5.2.2. | The use of EncryptedKey is described in Section 5.2.2. | |||
| Note: To indicate support for EnvelopedData, the pvno cmp2021 has | Note: To indicate support for EnvelopedData, the pvno cmp2021 has | |||
| been introduced. Details on the usage of different protocol version | been introduced. Details on the usage of different protocol version | |||
| numbers are described in Section 7. | numbers are described in Section 7. | |||
| 5.3.5. Key Update Request Content | 5.3.5. Key Update Request Content | |||
| For key update requests, the CertReqMessages syntax is used. | For key update requests, the CertReqMessages syntax is used. | |||
| skipping to change at line 2866 ¶ | skipping to change at line 2884 ¶ | |||
| cAKeyUpdAnnV2 CAKeyUpdAnnContent, -- deprecated | cAKeyUpdAnnV2 CAKeyUpdAnnContent, -- deprecated | |||
| cAKeyUpdAnnV3 [0] RootCaKeyUpdateContent | cAKeyUpdAnnV3 [0] RootCaKeyUpdateContent | |||
| } | } | |||
| When using RootCaKeyUpdateContent in the ckuann message, the pvno | When using RootCaKeyUpdateContent in the ckuann message, the pvno | |||
| cmp2021 MUST be used. Details on the usage of the protocol version | cmp2021 MUST be used. Details on the usage of the protocol version | |||
| number are described in Section 7. | number are described in Section 7. | |||
| In contrast to CAKeyUpdAnnContent as supported with cmp2000, | In contrast to CAKeyUpdAnnContent as supported with cmp2000, | |||
| RootCaKeyUpdateContent offers omitting newWithOld and oldWithNew, | RootCaKeyUpdateContent offers omitting newWithOld and oldWithNew, | |||
| depending on the needs of the EE. | depending on the needs of the end entity. | |||
| 5.3.14. Certificate Announcement | 5.3.14. Certificate Announcement | |||
| This structure MAY be used to announce the existence of certificates. | This structure MAY be used to announce the existence of certificates. | |||
| Note that this message is intended to be used for those cases (if | Note that this message is intended to be used for those cases (if | |||
| any) where there is no pre-existing method for publication of | any) where there is no pre-existing method for publication of | |||
| certificates; it is not intended to be used where, for example, X.500 | certificates; it is not intended to be used where, for example, X.500 | |||
| is the method for publication of certificates. | is the method for publication of certificates. | |||
| skipping to change at line 2974 ¶ | skipping to change at line 2992 ¶ | |||
| InfoTypeAndValue ::= SEQUENCE { | InfoTypeAndValue ::= SEQUENCE { | |||
| infoType OBJECT IDENTIFIER, | infoType OBJECT IDENTIFIER, | |||
| infoValue ANY DEFINED BY infoType OPTIONAL | infoValue ANY DEFINED BY infoType OPTIONAL | |||
| } | } | |||
| -- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4} | -- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4} | |||
| GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | |||
| 5.3.19.1. CA Protocol Encryption Certificate | 5.3.19.1. CA Protocol Encryption Certificate | |||
| This MAY be used by the EE to get a certificate from the CA to use to | This MAY be used by the end entity to get a certificate from the CA | |||
| protect sensitive information during the protocol. | to use to protect sensitive information during the protocol. | |||
| GenMsg: {id-it 1}, < absent > | GenMsg: {id-it 1}, < absent > | |||
| GenRep: {id-it 1}, Certificate | < absent > | GenRep: {id-it 1}, Certificate | < absent > | |||
| EEs MUST ensure that the correct certificate is used for this | End entities MUST ensure that the correct certificate is used for | |||
| purpose. | this purpose. | |||
| 5.3.19.2. Signing Key Pair Types | 5.3.19.2. Signing Key Pair Types | |||
| This MAY be used by the EE to get the list of signature algorithms | This MAY be used by the end entity to get the list of signature | |||
| whose subject public key values the CA is willing to certify. | algorithms whose subject public key values the CA is willing to | |||
| certify. | ||||
| GenMsg: {id-it 2}, < absent > | GenMsg: {id-it 2}, < absent > | |||
| GenRep: {id-it 2}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 2}, SEQUENCE SIZE (1..MAX) OF | |||
| AlgorithmIdentifier | AlgorithmIdentifier | |||
| Note: For the purposes of this exchange, rsaEncryption and | Note: For the purposes of this exchange, rsaEncryption and | |||
| sha256WithRSAEncryption, for example, are considered to be | sha256WithRSAEncryption, for example, are considered to be | |||
| equivalent; the question being asked is, "Is the CA willing to | equivalent; the question being asked is, "Is the CA willing to | |||
| certify an RSA public key?" | certify an RSA public key?" | |||
| skipping to change at line 3019 ¶ | skipping to change at line 3038 ¶ | |||
| AlgorithmIdentifier | AlgorithmIdentifier | |||
| Note: In case several elliptic curves are supported, several id- | Note: In case several elliptic curves are supported, several id- | |||
| ecPublicKey elements as defined in [RFC5480] need to be given, one | ecPublicKey elements as defined in [RFC5480] need to be given, one | |||
| per named curve. | per named curve. | |||
| 5.3.19.4. Preferred Symmetric Algorithm | 5.3.19.4. Preferred Symmetric Algorithm | |||
| This MAY be used by the client to get the CA-preferred symmetric | This MAY be used by the client to get the CA-preferred symmetric | |||
| encryption algorithm for any confidential information that needs to | encryption algorithm for any confidential information that needs to | |||
| be exchanged between the EE and the CA (for example, if the EE wants | be exchanged between the end entity and the CA (for example, if the | |||
| to send its private decryption key to the CA for archival purposes). | end entity wants to send its private decryption key to the CA for | |||
| archival purposes). | ||||
| GenMsg: {id-it 4}, < absent > | GenMsg: {id-it 4}, < absent > | |||
| GenRep: {id-it 4}, AlgorithmIdentifier | GenRep: {id-it 4}, AlgorithmIdentifier | |||
| 5.3.19.5. Updated CA Key Pair | 5.3.19.5. Updated CA Key Pair | |||
| This MAY be used by the CA to announce a CA key update event. | This MAY be used by the CA to announce a CA key update event. | |||
| GenMsg: {id-it 18}, RootCaKeyUpdateValue | GenMsg: {id-it 18}, RootCaKeyUpdateValue | |||
| skipping to change at line 3050 ¶ | skipping to change at line 3070 ¶ | |||
| 5.3.19.7. Unsupported Object Identifiers | 5.3.19.7. Unsupported Object Identifiers | |||
| This is used by the server to return a list of object identifiers | This is used by the server to return a list of object identifiers | |||
| that it does not recognize or support from the list submitted by the | that it does not recognize or support from the list submitted by the | |||
| client. | client. | |||
| GenRep: {id-it 7}, SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER | GenRep: {id-it 7}, SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER | |||
| 5.3.19.8. Key Pair Parameters | 5.3.19.8. Key Pair Parameters | |||
| This MAY be used by the EE to request the domain parameters to use | This MAY be used by the end entity to request the domain parameters | |||
| for generating the key pair for certain public-key algorithms. It | to use for generating the key pair for certain public-key algorithms. | |||
| can be used, for example, to request the appropriate P, Q, and G to | It can be used, for example, to request the appropriate P, Q, and G | |||
| generate the DH/DSA key or to request a set of well-known elliptic | to generate the DH/DSA key or to request a set of well-known elliptic | |||
| curves. | curves. | |||
| GenMsg: {id-it 10}, OBJECT IDENTIFIER -- (Algorithm object-id) | GenMsg: {id-it 10}, OBJECT IDENTIFIER -- (Algorithm object-id) | |||
| GenRep: {id-it 11}, AlgorithmIdentifier | < absent > | GenRep: {id-it 11}, AlgorithmIdentifier | < absent > | |||
| An absent infoValue in the GenRep indicates that the algorithm | An absent infoValue in the GenRep indicates that the algorithm | |||
| specified in GenMsg is not supported. | specified in GenMsg is not supported. | |||
| EEs MUST ensure that the parameters are acceptable to it and that the | End entities MUST ensure that the parameters are acceptable to it and | |||
| GenRep message is authenticated (to avoid substitution attacks). | that the GenRep message is authenticated (to avoid substitution | |||
| attacks). | ||||
| 5.3.19.9. Revocation Passphrase | 5.3.19.9. Revocation Passphrase | |||
| This MAY be used by the EE to send a passphrase to a CA/RA for the | This MAY be used by the end entity to send a passphrase to a CA/RA | |||
| purpose of authenticating a later revocation request (in the case | for the purpose of authenticating a later revocation request (in the | |||
| that the appropriate signing private key is no longer available to | case that the appropriate signing private key is no longer available | |||
| authenticate the request). See Appendix B for further details on the | to authenticate the request). See Appendix B for further details on | |||
| use of this mechanism. | the use of this mechanism. | |||
| GenMsg: {id-it 12}, EncryptedKey | GenMsg: {id-it 12}, EncryptedKey | |||
| GenRep: {id-it 12}, < absent > | GenRep: {id-it 12}, < absent > | |||
| The use of EncryptedKey is described in Section 5.2.2. | The use of EncryptedKey is described in Section 5.2.2. | |||
| 5.3.19.10. ImplicitConfirm | 5.3.19.10. ImplicitConfirm | |||
| See Section 5.1.1.1 for the definition and use of {id-it 13}. | See Section 5.1.1.1 for the definition and use of {id-it 13}. | |||
| skipping to change at line 3117 ¶ | skipping to change at line 3138 ¶ | |||
| GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | |||
| CMPCertificate | < absent > | CMPCertificate | < absent > | |||
| 5.3.19.15. Root CA Update | 5.3.19.15. Root CA Update | |||
| This MAY be used by the client to get an update of a root CA | This MAY be used by the client to get an update of a root CA | |||
| certificate, which is provided in the body of the request message. | certificate, which is provided in the body of the request message. | |||
| In contrast to the ckuann message, this approach follows the request/ | In contrast to the ckuann message, this approach follows the request/ | |||
| response model. | response model. | |||
| The EE SHOULD reference its current trust anchor in RootCaCertValue | The end entity SHOULD reference its current trust anchor in | |||
| in the request body, giving the root CA certificate if available. | RootCaCertValue in the request body, giving the root CA certificate | |||
| if available. | ||||
| GenMsg: {id-it 20}, RootCaCertValue | < absent > | GenMsg: {id-it 20}, RootCaCertValue | < absent > | |||
| GenRep: {id-it 18}, RootCaKeyUpdateValue | < absent > | GenRep: {id-it 18}, RootCaKeyUpdateValue | < absent > | |||
| RootCaCertValue ::= CMPCertificate | RootCaCertValue ::= CMPCertificate | |||
| RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | RootCaKeyUpdateValue ::= RootCaKeyUpdateContent | |||
| RootCaKeyUpdateContent ::= SEQUENCE { | RootCaKeyUpdateContent ::= SEQUENCE { | |||
| newWithNew CMPCertificate, | newWithNew CMPCertificate, | |||
| newWithOld [0] CMPCertificate OPTIONAL, | newWithOld [0] CMPCertificate OPTIONAL, | |||
| oldWithNew [1] CMPCertificate OPTIONAL | oldWithNew [1] CMPCertificate OPTIONAL | |||
| } | } | |||
| Note: In contrast to CAKeyUpdAnnContent (which was deprecated with | Note: In contrast to CAKeyUpdAnnContent (which was deprecated with | |||
| pvno cmp2021), RootCaKeyUpdateContent offers omitting newWithOld and | pvno cmp2021), RootCaKeyUpdateContent offers omitting newWithOld and | |||
| oldWithNew, depending on the needs of the EE. | oldWithNew, depending on the needs of the end entity. | |||
| 5.3.19.16. Certificate Request Template | 5.3.19.16. Certificate Request Template | |||
| This MAY be used by the client to get a template containing | This MAY be used by the client to get a template containing | |||
| requirements for certificate request attributes and extensions. The | requirements for certificate request attributes and extensions. The | |||
| controls id-regCtrl-algId and id-regCtrl-rsaKeyLen MAY contain | controls id-regCtrl-algId and id-regCtrl-rsaKeyLen MAY contain | |||
| details on the types of subject public keys the CA is willing to | details on the types of subject public keys the CA is willing to | |||
| certify. | certify. | |||
| The id-regCtrl-algId control MAY be used to identify a cryptographic | The id-regCtrl-algId control MAY be used to identify a cryptographic | |||
| skipping to change at line 3254 ¶ | skipping to change at line 3276 ¶ | |||
| 5.3.20. PKI General Response Content | 5.3.20. PKI General Response Content | |||
| GenRepContent ::= SEQUENCE OF InfoTypeAndValue | GenRepContent ::= SEQUENCE OF InfoTypeAndValue | |||
| Examples of GenReps that MAY be supported include those listed in the | Examples of GenReps that MAY be supported include those listed in the | |||
| subsections of Section 5.3.19. | subsections of Section 5.3.19. | |||
| 5.3.21. Error Message Content | 5.3.21. Error Message Content | |||
| This data structure MAY be used by an EE, CA, or RA to convey error | This data structure MAY be used by an end entity, CA, or RA to convey | |||
| information and by a PKI management entity to initiate delayed | error information and by a PKI management entity to initiate delayed | |||
| delivery of responses. | delivery of responses. | |||
| ErrorMsgContent ::= SEQUENCE { | ErrorMsgContent ::= SEQUENCE { | |||
| pKIStatusInfo PKIStatusInfo, | pKIStatusInfo PKIStatusInfo, | |||
| errorCode INTEGER OPTIONAL, | errorCode INTEGER OPTIONAL, | |||
| errorDetails PKIFreeText OPTIONAL | errorDetails PKIFreeText OPTIONAL | |||
| } | } | |||
| This message MAY be generated at any time during a PKI transaction. | This message MAY be generated at any time during a PKI transaction. | |||
| If the client sends this request, the server MUST respond with a | If the client sends this request, the server MUST respond with a | |||
| pkiconf response or another error message if any part of the header | pkiconf response or another error message if any part of the header | |||
| is not valid. | is not valid. | |||
| In case a PKI management entity sends an error message to the EE with | In case a PKI management entity sends an error message to the end | |||
| the pKIStatusInfo field containing the status "waiting", the EE | entity with the pKIStatusInfo field containing the status "waiting", | |||
| SHOULD initiate polling as described in Section 5.3.22. If the EE | the end entity SHOULD initiate polling as described in | |||
| does not initiate polling, both sides MUST treat this message as the | Section 5.3.22. If the end entity does not initiate polling, both | |||
| end of the transaction (if a transaction is in progress). | sides MUST treat this message as the end of the transaction (if a | |||
| transaction is in progress). | ||||
| If protection is desired on the message, the client MUST protect it | If protection is desired on the message, the client MUST protect it | |||
| using the same technique (i.e., signature or MAC) as the starting | using the same technique (i.e., signature or MAC) as the starting | |||
| message of the transaction. The CA MUST always sign it with a | message of the transaction. The CA MUST always sign it with a | |||
| signature key. | signature key. | |||
| 5.3.22. Polling Request and Response | 5.3.22. Polling Request and Response | |||
| This pair of messages is intended to handle scenarios in which the | This pair of messages is intended to handle scenarios in which the | |||
| client needs to poll the server to determine the status of an | client needs to poll the server to determine the status of an | |||
| skipping to change at line 3306 ¶ | skipping to change at line 3329 ¶ | |||
| response to an ir, cr, p10cr, kur, krr, or ccr request message, | response to an ir, cr, p10cr, kur, krr, or ccr request message, | |||
| polling is initiated with an ip, cp, kup, krp, or ccp response | polling is initiated with an ip, cp, kup, krp, or ccp response | |||
| message containing status "waiting". For any type of request | message containing status "waiting". For any type of request | |||
| message, polling can be initiated with an error response message with | message, polling can be initiated with an error response message with | |||
| status "waiting". The following clauses describe how polling | status "waiting". The following clauses describe how polling | |||
| messages are used. It is assumed that multiple certConf messages can | messages are used. It is assumed that multiple certConf messages can | |||
| be sent during transactions. There will be one sent in response to | be sent during transactions. There will be one sent in response to | |||
| each ip, cp, kup, krp, or ccp that contains a CertStatus for an | each ip, cp, kup, krp, or ccp that contains a CertStatus for an | |||
| issued certificate. | issued certificate. | |||
| 1. In response to an ip, cp, kup, krp, or ccp message, an EE will | 1. In response to an ip, cp, kup, krp, or ccp message, an end entity | |||
| send a certConf for all issued certificates and expect a pkiconf | will send a certConf for all issued certificates and expect a | |||
| for each certConf. An EE will send a pollReq message in response | pkiconf for each certConf. An end entity will send a pollReq | |||
| to each CertResponse element of an ip, cp, or kup message with | message in response to each CertResponse element of an ip, cp, or | |||
| status "waiting" and in response to an error message with status | kup message with status "waiting" and in response to an error | |||
| "waiting". Its certReqId MUST be either the index of a | message with status "waiting". Its certReqId MUST be either the | |||
| CertResponse data structure with status "waiting" or -1 referring | index of a CertResponse data structure with status "waiting" or | |||
| to the complete response. | -1 referring to the complete response. | |||
| 2. In response to a pollReq, a CA/RA will return an ip, cp, kup, | 2. In response to a pollReq, a CA/RA will return an ip, cp, kup, | |||
| krp, or ccp if one or more of the still pending requested | krp, or ccp if one or more of the still pending requested | |||
| certificates are ready or the final response to some other type | certificates are ready or the final response to some other type | |||
| of request is available; otherwise, it will return a pollRep. | of request is available; otherwise, it will return a pollRep. | |||
| 3. If the EE receives a pollRep, it will wait for at least the | 3. If the end entity receives a pollRep, it will wait for at least | |||
| number of seconds given in the checkAfter field before sending | the number of seconds given in the checkAfter field before | |||
| another pollReq. | sending another pollReq. | |||
| Note that the checkAfter value heavily depends on the certificate | Note that the checkAfter value heavily depends on the certificate | |||
| management environment. There are different possible reasons for | management environment. There are different possible reasons for | |||
| a delayed delivery of response messages, e.g., high load on the | a delayed delivery of response messages, e.g., high load on the | |||
| server's backend, offline transfer of messages between two PKI | server's backend, offline transfer of messages between two PKI | |||
| management entities, or required RA operator approval. | management entities, or required RA operator approval. | |||
| Therefore, the checkAfter time can vary greatly. This should | Therefore, the checkAfter time can vary greatly. This should | |||
| also be considered by the transfer protocol. | also be considered by the transfer protocol. | |||
| 4. If the EE receives an ip, cp, kup, krp, or ccp, then it will be | 4. If the end entity receives an ip, cp, kup, krp, or ccp, then it | |||
| treated in the same way as the initial response; if it receives | will be treated in the same way as the initial response; if it | |||
| any other response, then this will be treated as the final | receives any other response, then this will be treated as the | |||
| response to the original request. | final response to the original request. | |||
| The following client-side state machine describes polling for | The following client-side state machine describes polling for | |||
| individual CertResponse elements at the example of an ir request | individual CertResponse elements at the example of an ir request | |||
| message. | message. | |||
| START | START | |||
| | | | | |||
| v | v | |||
| Send ir | Send ir | |||
| | ip | | ip | |||
| skipping to change at line 3368 ¶ | skipping to change at line 3391 ¶ | |||
| (conf list) / \ | | (conf list) / \ | | |||
| / \ ip | | / \ ip | | |||
| / \ +-----------------+ | / \ +-----------------+ | |||
| (empty pending list) V V | pollRep | (empty pending list) V V | pollRep | |||
| END <---- Send certConf Send pollReq---------->Wait | END <---- Send certConf Send pollReq---------->Wait | |||
| | ^ ^ | | | ^ ^ | | |||
| | | | | | | | | | | |||
| +-----------------+ +---------------+ | +-----------------+ +---------------+ | |||
| (pending list) | (pending list) | |||
| In the following exchange, the EE is enrolling for two certificates | In the following exchange, the end entity is enrolling for two | |||
| in one request. | certificates in one request. | |||
| Step# EE PKI | Step# End entity PKI | |||
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
| 1 format ir | 1 format ir | |||
| 2 --> ir --> | 2 --> ir --> | |||
| 3 handle ir | 3 handle ir | |||
| 4 manual intervention is | 4 manual intervention is | |||
| required for both certs | required for both certs | |||
| 5 <-- ip <-- | 5 <-- ip <-- | |||
| 6 process ip | 6 process ip | |||
| 7 format pollReq | 7 format pollReq | |||
| 8 --> pollReq --> | 8 --> pollReq --> | |||
| skipping to change at line 3439 ¶ | skipping to change at line 3462 ¶ | |||
| | | | | | | | | |||
| | v | | | v | | |||
| +-----------+------------------->+<-------------------+ | +-----------+------------------->+<-------------------+ | |||
| pollRep other response | | pollRep other response | | |||
| v | v | |||
| Handle response | Handle response | |||
| | | | | |||
| v | v | |||
| End | End | |||
| In the following exchange, the EE is sending a general message | In the following exchange, the end entity is sending a general | |||
| request, and the response is delayed by the server. | message request, and the response is delayed by the server. | |||
| Step# EE PKI | Step# End entity PKI | |||
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
| 1 format genm | 1 format genm | |||
| 2 --> genm --> | 2 --> genm --> | |||
| 3 handle genm | 3 handle genm | |||
| 4 delay in response is necessary | 4 delay in response is necessary | |||
| 5 format error message "waiting" | 5 format error message "waiting" | |||
| with certReqId set to -1 | with certReqId set to -1 | |||
| 6 <-- error <-- | 6 <-- error <-- | |||
| 7 process error | 7 process error | |||
| 8 format pollReq | 8 format pollReq | |||
| skipping to change at line 3475 ¶ | skipping to change at line 3498 ¶ | |||
| 17 format genp | 17 format genp | |||
| 18 <-- genp <-- | 18 <-- genp <-- | |||
| 19 handle genp | 19 handle genp | |||
| 6. Mandatory PKI Management Functions | 6. Mandatory PKI Management Functions | |||
| Some of the PKI management functions outlined in Section 3.1 are | Some of the PKI management functions outlined in Section 3.1 are | |||
| described in this section. | described in this section. | |||
| This section deals with functions that are "mandatory" in the sense | This section deals with functions that are "mandatory" in the sense | |||
| that all EE and CA/RA implementations MUST be able to provide the | that all end entity and CA/RA implementations MUST be able to provide | |||
| functionality described. This part is effectively the profile of the | the functionality described. This part is effectively the profile of | |||
| PKI management functionality that MUST be supported. Note, however, | the PKI management functionality that MUST be supported. Note, | |||
| that the management functions described in this section do not need | however, that the management functions described in this section do | |||
| to be accomplished using the PKI messages defined in Section 5 if | not need to be accomplished using the PKI messages defined in | |||
| alternate means are suitable for a given environment. See Section 7 | Section 5 if alternate means are suitable for a given environment. | |||
| of [RFC9483] and Appendix C for profiles of the PKIMessage structures | See Section 7 of [RFC9483] and Appendix C for profiles of the | |||
| that MUST be supported for specific use cases. | PKIMessage structures that MUST be supported for specific use cases. | |||
| 6.1. Root CA Initialization | 6.1. Root CA Initialization | |||
| [See Section 3.1.1.2 for this document's definition of "root CA".] | [See Section 3.1.1.2 for this document's definition of "root CA".] | |||
| If a newly created root CA is at the top of a PKI hierarchy, it | If a newly created root CA is at the top of a PKI hierarchy, it | |||
| usually produces a "self-certificate", which is a certificate | usually produces a "self-certificate", which is a certificate | |||
| structure with the profile defined for the "newWithNew" certificate | structure with the profile defined for the "newWithNew" certificate | |||
| issued following a root CA key update. | issued following a root CA key update. | |||
| In order to make the CA's self-certificate useful to EEs that do not | In order to make the CA's self-certificate useful to end entities | |||
| acquire the self-certificate via "out-of-band" means, the CA must | that do not acquire the self-certificate via "out-of-band" means, the | |||
| also produce a fingerprint for its certificate. EEs that acquire | CA must also produce a fingerprint for its certificate. End entities | |||
| this fingerprint securely via some "out-of-band" means can then | that acquire this fingerprint securely via some "out-of-band" means | |||
| verify the CA's self-certificate and, hence, the other attributes | can then verify the CA's self-certificate and, hence, the other | |||
| contained therein. | attributes contained therein. | |||
| The data structure used to carry the fingerprint may be the | The data structure used to carry the fingerprint may be the | |||
| OOBCertHash (see Section 5.2.5). | OOBCertHash (see Section 5.2.5). | |||
| 6.2. Root CA Key Update | 6.2. Root CA Key Update | |||
| CA keys (as all other keys) have a finite lifetime and will have to | CA keys (as all other keys) have a finite lifetime and will have to | |||
| be updated on a periodic basis. The certificates NewWithNew, | be updated on a periodic basis. The certificates NewWithNew, | |||
| NewWithOld, and OldWithNew (see Section 4.4.1) MAY be issued by the | NewWithOld, and OldWithNew (see Section 4.4.1) MAY be issued by the | |||
| CA to aid existing EEs who hold the current root CA certificate | CA to aid existing end entities who hold the current root CA | |||
| (OldWithOld) to transition securely to the new root CA certificate | certificate (OldWithOld) to transition securely to the new root CA | |||
| (NewWithNew) and to aid new EEs who will hold NewWithNew to acquire | certificate (NewWithNew) and to aid new end entities who will hold | |||
| OldWithOld securely for verification of existing data. | NewWithNew to acquire OldWithOld securely for verification of | |||
| existing data. | ||||
| 6.3. Subordinate CA Initialization | 6.3. Subordinate CA Initialization | |||
| [See Section 3.1.1.2 for this document's definition of "subordinate | [See Section 3.1.1.2 for this document's definition of "subordinate | |||
| CA".] | CA".] | |||
| From the perspective of PKI management protocols, the initialization | From the perspective of PKI management protocols, the initialization | |||
| of a subordinate CA is the same as the initialization of an EE. The | of a subordinate CA is the same as the initialization of an end | |||
| only difference is that the subordinate CA must also produce an | entity. The only difference is that the subordinate CA must also | |||
| initial revocation list. | produce an initial revocation list. | |||
| 6.4. CRL Production | 6.4. CRL Production | |||
| Before issuing any certificates, a newly established CA (which issues | Before issuing any certificates, a newly established CA (which issues | |||
| CRLs) must produce "empty" versions of each CRL, which are to be | CRLs) must produce "empty" versions of each CRL, which are to be | |||
| periodically produced. | periodically produced. | |||
| 6.5. PKI Information Request | 6.5. PKI Information Request | |||
| When a PKI entity (CA, RA, or EE) wishes to acquire information about | When a PKI entity (CA, RA, or end entity) wishes to acquire | |||
| the current status of a CA, it MAY send that CA a request for such | information about the current status of a CA, it MAY send that CA a | |||
| information. | request for such information. | |||
| The CA MUST respond to the request by providing (at least) all of the | The CA MUST respond to the request by providing (at least) all of the | |||
| information requested by the requester. If some of the information | information requested by the requester. If some of the information | |||
| cannot be provided, then an error must be conveyed to the requester. | cannot be provided, then an error must be conveyed to the requester. | |||
| If PKIMessages are used to request and supply this PKI information, | If PKIMessages are used to request and supply this PKI information, | |||
| then the request MUST be the GenMsg message, the response MUST be the | then the request MUST be the GenMsg message, the response MUST be the | |||
| GenRep message, and the error MUST be the Error message. These | GenRep message, and the error MUST be the Error message. These | |||
| messages are protected using a MAC based on shared secret information | messages are protected using a MAC based on shared secret information | |||
| (e.g., password-based MAC; see Section 6.1 of "CMP Algorithms" | (e.g., password-based MAC; see Section 6.1 of "CMP Algorithms" | |||
| [RFC9481]) or using any asymmetric authentication means such as a | [RFC9481]) or using any asymmetric authentication means such as a | |||
| signature (if the EE has an existing certificate). | signature (if the end entity has an existing certificate). | |||
| 6.6. Cross-Certification | 6.6. Cross-Certification | |||
| The requester CA is the CA that will become the subject of the cross- | The requester CA is the CA that will become the subject of the cross- | |||
| certificate; the responder CA will become the issuer of the cross- | certificate; the responder CA will become the issuer of the cross- | |||
| certificate. | certificate. | |||
| The requester CA must be "up and running" before initiating the | The requester CA must be "up and running" before initiating the | |||
| cross-certification operation. | cross-certification operation. | |||
| skipping to change at line 3640 ¶ | skipping to change at line 3664 ¶ | |||
| envisioned, in which the issuing CA acquires the subject CA's public | envisioned, in which the issuing CA acquires the subject CA's public | |||
| key from some repository, verifies it via some out-of-band mechanism, | key from some repository, verifies it via some out-of-band mechanism, | |||
| and creates and publishes the cross-certificate without the subject | and creates and publishes the cross-certificate without the subject | |||
| CA's explicit involvement. This model may be perfectly legitimate | CA's explicit involvement. This model may be perfectly legitimate | |||
| for many environments, but since it does not require any protocol | for many environments, but since it does not require any protocol | |||
| message exchanges, its detailed description is outside the scope of | message exchanges, its detailed description is outside the scope of | |||
| this specification.) | this specification.) | |||
| 6.7. End Entity Initialization | 6.7. End Entity Initialization | |||
| As with CAs, EEs must be initialized. Initialization of EEs requires | As with CAs, end entities must be initialized. Initialization of end | |||
| at least two steps: | entities requires at least two steps: | |||
| * acquisition of PKI information | * acquisition of PKI information | |||
| * out-of-band verification of one root-CA public key | * out-of-band verification of one root-CA public key | |||
| (Other possible steps include the retrieval of trust condition | (Other possible steps include the retrieval of trust condition | |||
| information and/or out-of-band verification of other CA public keys.) | information and/or out-of-band verification of other CA public keys.) | |||
| 6.7.1. Acquisition of PKI Information | 6.7.1. Acquisition of PKI Information | |||
| skipping to change at line 3666 ¶ | skipping to change at line 3690 ¶ | |||
| * (if the certifying CA is not a root-CA) the certification path | * (if the certifying CA is not a root-CA) the certification path | |||
| from the root CA to the certifying CA together with appropriate | from the root CA to the certifying CA together with appropriate | |||
| revocation lists | revocation lists | |||
| * the algorithms and algorithm parameters that the certifying CA | * the algorithms and algorithm parameters that the certifying CA | |||
| supports for each relevant usage | supports for each relevant usage | |||
| Additional information could be required (e.g., supported extensions | Additional information could be required (e.g., supported extensions | |||
| or CA policy information) in order to produce a certification request | or CA policy information) in order to produce a certification request | |||
| that will be successful. However, for simplicity, we do not mandate | that will be successful. However, for simplicity, we do not mandate | |||
| that the EE acquires this information via the PKI messages. The end | that the end entity acquires this information via the PKI messages. | |||
| result is simply that some certification requests may fail (e.g., if | The end result is simply that some certification requests may fail | |||
| the EE wants to generate its own encryption key, but the CA doesn't | (e.g., if the end entity wants to generate its own encryption key, | |||
| allow that). | but the CA doesn't allow that). | |||
| The required information MAY be acquired as described in Section 6.5. | The required information MAY be acquired as described in Section 6.5. | |||
| 6.7.2. Out-of-Band Verification of the Root CA Key | 6.7.2. Out-of-Band Verification of the Root CA Key | |||
| An EE must securely possess the public key of its root CA. One | An end entity must securely possess the public key of its root CA. | |||
| method to achieve this is to provide the EE with the CA's self- | One method to achieve this is to provide the end entity with the CA's | |||
| certificate fingerprint via some secure "out-of-band" means. The EE | self-certificate fingerprint via some secure "out-of-band" means. | |||
| can then securely use the CA's self-certificate. | The end entity can then securely use the CA's self-certificate. | |||
| See Section 6.1 for further details. | See Section 6.1 for further details. | |||
| 6.8. Certificate Request | 6.8. Certificate Request | |||
| An initialized EE MAY request an additional certificate at any time | An initialized end entity MAY request an additional certificate at | |||
| (for any purpose). This request will be made using the certification | any time (for any purpose). This request will be made using the | |||
| request (cr) message. If the EE already possesses a signing key pair | certification request (cr) message. If the end entity already | |||
| (with a corresponding verification certificate), then this cr message | possesses a signing key pair (with a corresponding verification | |||
| will typically be protected by the entity's digital signature. The | certificate), then this cr message will typically be protected by the | |||
| CA returns the new certificate (if the request is successful) in a | entity's digital signature. The CA returns the new certificate (if | |||
| CertRepMessage. | the request is successful) in a CertRepMessage. | |||
| 6.9. Key Update | 6.9. Key Update | |||
| When a key pair is due to expire, the relevant EE MAY request a key | When a key pair is due to expire, the relevant end entity MAY request | |||
| update; that is, it MAY request that the CA issue a new certificate | a key update; that is, it MAY request that the CA issue a new | |||
| for a new key pair (or, in certain circumstances, a new certificate | certificate for a new key pair (or, in certain circumstances, a new | |||
| for the same key pair). The request is made using a key update | certificate for the same key pair). The request is made using a key | |||
| request (kur) message (referred to, in some environments, as a | update request (kur) message (referred to, in some environments, as a | |||
| "Certificate Update" operation). If the EE already possesses a | "Certificate Update" operation). If the end entity already possesses | |||
| signing key pair (with a corresponding verification certificate), | a signing key pair (with a corresponding verification certificate), | |||
| then this message will typically be protected by the entity's digital | then this message will typically be protected by the entity's digital | |||
| signature. The CA returns the new certificate (if the request is | signature. The CA returns the new certificate (if the request is | |||
| successful) in a key update response (kup) message, which is | successful) in a key update response (kup) message, which is | |||
| syntactically identical to a CertRepMessage. | syntactically identical to a CertRepMessage. | |||
| 7. Version Negotiation | 7. Version Negotiation | |||
| This section defines the version negotiation used to support older | This section defines the version negotiation used to support older | |||
| protocols between clients and servers. | protocols between clients and servers. | |||
| skipping to change at line 3773 ¶ | skipping to change at line 3797 ¶ | |||
| If a server receives a version cmp1999 message, it MAY revert to the | If a server receives a version cmp1999 message, it MAY revert to the | |||
| behavior described in [RFC2510] and respond with version cmp1999 | behavior described in [RFC2510] and respond with version cmp1999 | |||
| messages. If it does not choose to do so, then it MUST send back an | messages. If it does not choose to do so, then it MUST send back an | |||
| ErrorMsgContent as described above in Section 7. | ErrorMsgContent as described above in Section 7. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| 8.1. On the Necessity of POP | 8.1. On the Necessity of POP | |||
| It is well established that the role of a CA is to verify that the | It is well established that the role of a CA is to verify that the | |||
| name and public key belong to the EE prior to issuing a certificate. | name and public key belong to the end entity prior to issuing a | |||
| If an entity holding a private key obtains a certificate containing | certificate. If an entity holding a private key obtains a | |||
| the corresponding public key issued for a different entity, it can | certificate containing the corresponding public key issued for a | |||
| authenticate as the entity named in the certificate. This | different entity, it can authenticate as the entity named in the | |||
| facilitates masquerading. It is not entirely clear what security | certificate. This facilitates masquerading. It is not entirely | |||
| guarantees are lost if an EE is able to obtain a certificate | clear what security guarantees are lost if an end entity is able to | |||
| containing a public key that they do not possess the corresponding | obtain a certificate containing a public key that they do not possess | |||
| private key for. There are some scenarios, described as "forwarding | the corresponding private key for. There are some scenarios, | |||
| attacks" in Appendix A of [Gueneysu], in which this can lead to | described as "forwarding attacks" in Appendix A of [Gueneysu], in | |||
| protocol attacks against a naively implemented sign-then-encrypt | which this can lead to protocol attacks against a naively implemented | |||
| protocol, but in general, it merely results in the EE obtaining a | sign-then-encrypt protocol, but in general, it merely results in the | |||
| certificate that they cannot use. | end entity obtaining a certificate that they cannot use. | |||
| 8.2. POP with a Decryption Key | 8.2. POP with a Decryption Key | |||
| Some cryptographic considerations are worth explicitly spelling out. | Some cryptographic considerations are worth explicitly spelling out. | |||
| In the protocols specified above, when an EE is required to prove | In the protocols specified above, when an end entity is required to | |||
| possession of a decryption key, it is effectively challenged to | prove possession of a decryption key, it is effectively challenged to | |||
| decrypt something (its own certificate). This scheme (and many | decrypt something (its own certificate). This scheme (and many | |||
| others!) could be vulnerable to an attack if the possessor of the | others!) could be vulnerable to an attack if the possessor of the | |||
| decryption key in question could be fooled into decrypting an | decryption key in question could be fooled into decrypting an | |||
| arbitrary challenge and returning the cleartext to an attacker. | arbitrary challenge and returning the cleartext to an attacker. | |||
| Although in this specification a number of other failures in security | Although in this specification a number of other failures in security | |||
| are required in order for this attack to succeed, it is conceivable | are required in order for this attack to succeed, it is conceivable | |||
| that some future services (e.g., notary, trusted time) could | that some future services (e.g., notary, trusted time) could | |||
| potentially be vulnerable to such attacks. For this reason, we | potentially be vulnerable to such attacks. For this reason, we | |||
| reiterate the general rule that implementations should be very | reiterate the general rule that implementations should be very | |||
| careful about decrypting arbitrary "ciphertext" and revealing | careful about decrypting arbitrary "ciphertext" and revealing | |||
| skipping to change at line 3829 ¶ | skipping to change at line 3853 ¶ | |||
| * Only use this POP mechanism if archival of the private key is | * Only use this POP mechanism if archival of the private key is | |||
| desired. | desired. | |||
| * When appropriate, have the user of the application explicitly | * When appropriate, have the user of the application explicitly | |||
| state that they are willing to trust the CA/RA to have a copy of | state that they are willing to trust the CA/RA to have a copy of | |||
| their private key before proceeding to reveal the private key. | their private key before proceeding to reveal the private key. | |||
| 8.4. Attack Against DH Key Exchange | 8.4. Attack Against DH Key Exchange | |||
| A small subgroup attack during a DH key exchange may be carried out | A small subgroup attack during a DH key exchange may be carried out | |||
| as follows. A malicious EE may deliberately choose DH parameters | as follows. A malicious end entity may deliberately choose DH | |||
| that enable it to derive (a significant number of bits of) the DH | parameters that enable it to derive (a significant number of bits of) | |||
| private key of the CA during a key archival or key recovery | the DH private key of the CA during a key archival or key recovery | |||
| operation. Armed with this knowledge, the EE would then be able to | operation. Armed with this knowledge, the end entity would then be | |||
| retrieve the decryption private key of another unsuspecting EE, EE2, | able to retrieve the decryption private key of another unsuspecting | |||
| during EE2's legitimate key archival or key recovery operation with | end entity, EE2, during EE2's legitimate key archival or key recovery | |||
| that CA. In order to avoid the possibility of such an attack, two | operation with that CA. In order to avoid the possibility of such an | |||
| courses of action are available. (1) The CA may generate a fresh DH | attack, two courses of action are available. (1) The CA may generate | |||
| key pair to be used as a protocol encryption key pair for each EE | a fresh DH key pair to be used as a protocol encryption key pair for | |||
| with which it interacts. (2) The CA may enter into a key validation | each end entity with which it interacts. (2) The CA may enter into a | |||
| protocol (not specified in this document) with each requesting EE to | key validation protocol (not specified in this document) with each | |||
| ensure that the EE's protocol encryption key pair will not facilitate | requesting end entity to ensure that the end entity's protocol | |||
| this attack. Option (1) is clearly simpler (requiring no extra | encryption key pair will not facilitate this attack. Option (1) is | |||
| protocol exchanges from either party) and is therefore RECOMMENDED. | clearly simpler (requiring no extra protocol exchanges from either | |||
| party) and is therefore RECOMMENDED. | ||||
| 8.5. Perfect Forward Secrecy | 8.5. Perfect Forward Secrecy | |||
| Long-term security typically requires perfect forward secrecy (pfs). | Long-term security typically requires perfect forward secrecy (pfs). | |||
| When transferring encrypted long-term confidential values such as | When transferring encrypted long-term confidential values such as | |||
| centrally generated private keys or revocation passphrases, pfs is | centrally generated private keys or revocation passphrases, pfs is | |||
| likely important. Yet, it is not needed for CMP message protection | likely important. Yet, it is not needed for CMP message protection | |||
| providing integrity and authenticity because transfer of PKI messages | providing integrity and authenticity because transfer of PKI messages | |||
| is usually completed in very limited time. For the same reason, it | is usually completed in very limited time. For the same reason, it | |||
| is not typically required for the indirect method to provide a POP | is not typically required for the indirect method to provide a POP | |||
| skipping to change at line 3952 ¶ | skipping to change at line 3977 ¶ | |||
| Therefore, given a long-term public key using an IND-CCA2-secure KEM | Therefore, given a long-term public key using an IND-CCA2-secure KEM | |||
| algorithm, there is no limit to the number of CMP messages that can | algorithm, there is no limit to the number of CMP messages that can | |||
| be authenticated using KEM keys for MAC-based message protection. | be authenticated using KEM keys for MAC-based message protection. | |||
| 8.9. Trust Anchor Provisioning Using CMP Messages | 8.9. Trust Anchor Provisioning Using CMP Messages | |||
| A provider of trust anchors, which may be an RA involved in | A provider of trust anchors, which may be an RA involved in | |||
| configuration management of its clients, MUST NOT include to-be- | configuration management of its clients, MUST NOT include to-be- | |||
| trusted CA certificates in a CMP message unless the specific | trusted CA certificates in a CMP message unless the specific | |||
| deployment scenario can ensure that it is adequate that the receiving | deployment scenario can ensure that it is adequate that the receiving | |||
| EE trusts these certificates, e.g., by loading them into its trust | end entity trusts these certificates, e.g., by loading them into its | |||
| store. | trust store. | |||
| Whenever an EE receives in a CMP message a CA certificate to be used | Whenever an end entity receives in a CMP message a CA certificate to | |||
| as a trust anchor (for example, in the caPubs field of a certificate | be used as a trust anchor (for example, in the caPubs field of a | |||
| response or in a general response), it MUST properly authenticate the | certificate response or in a general response), it MUST properly | |||
| message sender with existing trust anchors without requiring new | authenticate the message sender with existing trust anchors without | |||
| trust anchor information included in the message. | requiring new trust anchor information included in the message. | |||
| Additionally, the EE MUST verify that the sender is an authorized | Additionally, the end entity MUST verify that the sender is an | |||
| source of trust anchors. This authorization is governed by local | authorized source of trust anchors. This authorization is governed | |||
| policy and typically indicated using shared secret information or | by local policy and typically indicated using shared secret | |||
| with a signature-based message protection using a certificate issued | information or with a signature-based message protection using a | |||
| by a PKI that is explicitly authorized for this purpose. | certificate issued by a PKI that is explicitly authorized for this | |||
| purpose. | ||||
| 8.10. Authorizing Requests for Certificates with Specific EKUs | 8.10. Authorizing Requests for Certificates with Specific EKUs | |||
| When a CA issues a certificate containing EKU extensions as defined | When a CA issues a certificate containing EKU extensions as defined | |||
| in Section 4.5, this expresses delegation of an authorization that | in Section 4.5, this expresses delegation of an authorization that | |||
| originally is only with the CA certificate itself. Such delegation | originally is only with the CA certificate itself. Such delegation | |||
| is a very sensitive action in a PKI, and therefore, special care must | is a very sensitive action in a PKI, and therefore, special care must | |||
| be taken when approving such certificate requests to ensure that only | be taken when approving such certificate requests to ensure that only | |||
| legitimate entities receive a certificate containing such an EKU. | legitimate entities receive a certificate containing such an EKU. | |||
| skipping to change at line 4309 ¶ | skipping to change at line 4335 ¶ | |||
| certificate frameworks", ITU-T Recommendation X.509 | certificate frameworks", ITU-T Recommendation X.509 | |||
| (10/2019), October 2019, | (10/2019), October 2019, | |||
| <https://handle.itu.int/11.1002/1000/14033>. | <https://handle.itu.int/11.1002/1000/14033>. | |||
| Appendix A. Reasons for the Presence of RAs | Appendix A. Reasons for the Presence of RAs | |||
| The reasons that justify the presence of an RA can be split into | The reasons that justify the presence of an RA can be split into | |||
| those that are due to technical factors and those that are | those that are due to technical factors and those that are | |||
| organizational in nature. Technical reasons include the following. | organizational in nature. Technical reasons include the following. | |||
| * If hardware tokens are in use, then not all EEs will have the | * If hardware tokens are in use, then not all end entities will have | |||
| equipment needed to initialize these; the RA equipment can include | the equipment needed to initialize these; the RA equipment can | |||
| the necessary functionality (this may also be a matter of policy). | include the necessary functionality (this may also be a matter of | |||
| policy). | ||||
| * Some EEs may not have the capability to publish certificates; | * Some end entities may not have the capability to publish | |||
| again, the RA may be suitably placed for this. | certificates; again, the RA may be suitably placed for this. | |||
| * The RA will be able to issue signed revocation requests on behalf | * The RA will be able to issue signed revocation requests on behalf | |||
| of EEs associated with it, whereas the EE may not be able to do | of end entities associated with it, whereas the end entity may not | |||
| this (if the key pair is completely lost). | be able to do this (if the key pair is completely lost). | |||
| Some of the organizational reasons that argue for the presence of an | Some of the organizational reasons that argue for the presence of an | |||
| RA are the following. | RA are the following. | |||
| * It may be more cost effective to concentrate functionality in the | * It may be more cost effective to concentrate functionality in the | |||
| RA equipment than to supply functionality to all EEs (especially | RA equipment than to supply functionality to all end entities | |||
| if special token initialization equipment is to be used). | (especially if special token initialization equipment is to be | |||
| used). | ||||
| * Establishing RAs within an organization can reduce the number of | * Establishing RAs within an organization can reduce the number of | |||
| CAs required, which is sometimes desirable. | CAs required, which is sometimes desirable. | |||
| * RAs may be better placed to identify people with their | * RAs may be better placed to identify people with their | |||
| "electronic" names, especially if the CA is physically remote from | "electronic" names, especially if the CA is physically remote from | |||
| the EE. | the end entity. | |||
| * For many applications, there will already be some administrative | * For many applications, there will already be some administrative | |||
| structure in place so that candidates for the role of RA are easy | structure in place so that candidates for the role of RA are easy | |||
| to find (which may not be true of the CA). | to find (which may not be true of the CA). | |||
| Further reasons relevant for automated machine-to-machine certificate | Further reasons relevant for automated machine-to-machine certificate | |||
| lifecycle management are available in the Lightweight CMP Profile | lifecycle management are available in the Lightweight CMP Profile | |||
| [RFC9483]. | [RFC9483]. | |||
| Appendix B. The Use of Revocation Passphrase | Appendix B. The Use of Revocation Passphrase | |||
| skipping to change at line 4402 ¶ | skipping to change at line 4430 ¶ | |||
| generalInfo field of the PKIHeader of the corresponding response | generalInfo field of the PKIHeader of the corresponding response | |||
| PKIMessage. If the CA/RA is unable to return the appropriate | PKIMessage. If the CA/RA is unable to return the appropriate | |||
| response message for any reason, it MUST send an error message | response message for any reason, it MUST send an error message | |||
| with a status of "rejection" and, optionally, a failInfo reason | with a status of "rejection" and, optionally, a failInfo reason | |||
| set. | set. | |||
| * Either the localKeyId attribute of EnvelopedData as specified in | * Either the localKeyId attribute of EnvelopedData as specified in | |||
| [RFC2985] or the valueHint field of EncryptedValue MAY contain a | [RFC2985] or the valueHint field of EncryptedValue MAY contain a | |||
| key identifier (chosen by the entity, along with the passphrase | key identifier (chosen by the entity, along with the passphrase | |||
| itself) to assist in later retrieval of the correct passphrase | itself) to assist in later retrieval of the correct passphrase | |||
| (e.g., when the revocation request is constructed by the EE and | (e.g., when the revocation request is constructed by the end | |||
| received by the CA/RA). | entity and received by the CA/RA). | |||
| * The revocation request message is protected by a password-based | * The revocation request message is protected by a password-based | |||
| MAC (see Section 6.1 of "CMP Algorithms" [RFC9481]) with the | MAC (see Section 6.1 of "CMP Algorithms" [RFC9481]) with the | |||
| revocation passphrase as the key. If appropriate, the senderKID | revocation passphrase as the key. If appropriate, the senderKID | |||
| field in the PKIHeader MAY contain the value previously | field in the PKIHeader MAY contain the value previously | |||
| transmitted in localKeyId or valueHint. | transmitted in localKeyId or valueHint. | |||
| Note: For a message transferring a revocation passphrase indicating | Note: For a message transferring a revocation passphrase indicating | |||
| cmp2021(3) in the pvno field of the PKIHeader, the encrypted | cmp2021(3) in the pvno field of the PKIHeader, the encrypted | |||
| passphrase MUST be transferred in the envelopedData choice of | passphrase MUST be transferred in the envelopedData choice of | |||
| skipping to change at line 4454 ¶ | skipping to change at line 4482 ¶ | |||
| the request message (so that a request for revocation of one | the request message (so that a request for revocation of one | |||
| certificate may be modified by an unauthorized third party to a | certificate may be modified by an unauthorized third party to a | |||
| request for revocation of another certificate for that entity). | request for revocation of another certificate for that entity). | |||
| Appendix C. PKI Management Message Profiles (REQUIRED) | Appendix C. PKI Management Message Profiles (REQUIRED) | |||
| This appendix contains detailed profiles for those PKIMessages that | This appendix contains detailed profiles for those PKIMessages that | |||
| MUST be supported by conforming implementations (see Section 6). | MUST be supported by conforming implementations (see Section 6). | |||
| Note: Appendices C and D focus on PKI management operations managing | Note: Appendices C and D focus on PKI management operations managing | |||
| certificates for human EEs. In contrast, the Lightweight CMP Profile | certificates for human end entities. In contrast, the Lightweight | |||
| [RFC9483] focuses on typical use cases of industrial and IoT | CMP Profile [RFC9483] focuses on typical use cases of industrial and | |||
| scenarios supporting highly automated certificate lifecycle | IoT scenarios supporting highly automated certificate lifecycle | |||
| management scenarios. | management scenarios. | |||
| Profiles for the PKIMessages used in the following PKI management | Profiles for the PKIMessages used in the following PKI management | |||
| operations are provided: | operations are provided: | |||
| * initial registration/certification | * initial registration/certification | |||
| * basic authenticated scheme | * basic authenticated scheme | |||
| * certificate request | * certificate request | |||
| skipping to change at line 4490 ¶ | skipping to change at line 4518 ¶ | |||
| separately profiled as appropriate. | separately profiled as appropriate. | |||
| 3. The algorithmIdentifiers from PKIMessage structures are profiled | 3. The algorithmIdentifiers from PKIMessage structures are profiled | |||
| separately. | separately. | |||
| 4. A "special" X.500 DN is called the "NULL-DN"; this means a DN | 4. A "special" X.500 DN is called the "NULL-DN"; this means a DN | |||
| containing a zero-length SEQUENCE OF RelativeDistinguishedNames | containing a zero-length SEQUENCE OF RelativeDistinguishedNames | |||
| (its DER encoding is then '3000'H). | (its DER encoding is then '3000'H). | |||
| 5. Where a GeneralName is required for a field, but no suitable | 5. Where a GeneralName is required for a field, but no suitable | |||
| value is available (e.g., an EE produces a request before knowing | value is available (e.g., an end entity produces a request before | |||
| its name), then the GeneralName is to be an X.500 NULL-DN (i.e., | knowing its name), then the GeneralName is to be an X.500 NULL-DN | |||
| the Name field of the CHOICE is to contain a NULL-DN). | (i.e., the Name field of the CHOICE is to contain a NULL-DN). | |||
| 6. Where a profile omits to specify the value for a GeneralName, | 6. Where a profile omits to specify the value for a GeneralName, | |||
| then the NULL-DN value is to be present in the relevant | then the NULL-DN value is to be present in the relevant | |||
| PKIMessage field. This occurs with the sender field of the | PKIMessage field. This occurs with the sender field of the | |||
| PKIHeader for some messages. | PKIHeader for some messages. | |||
| 7. Where any ambiguity arises due to naming of fields, the profile | 7. Where any ambiguity arises due to naming of fields, the profile | |||
| names these using a "dot" notation (e.g., "certTemplate.subject" | names these using a "dot" notation (e.g., "certTemplate.subject" | |||
| means the subject field within a field called certTemplate). | means the subject field within a field called certTemplate). | |||
| skipping to change at line 4556 ¶ | skipping to change at line 4584 ¶ | |||
| encryption key for which a certificate has been requested does not | encryption key for which a certificate has been requested does not | |||
| use this profile; the CertHash field of the certConf message is used | use this profile; the CertHash field of the certConf message is used | |||
| instead. | instead. | |||
| Not every CA/RA will do POP (of signing key, decryption key, or key | Not every CA/RA will do POP (of signing key, decryption key, or key | |||
| agreement key) in the PKIX-CMP in-band certification request protocol | agreement key) in the PKIX-CMP in-band certification request protocol | |||
| (how POP is done MAY ultimately be a policy issue that is made | (how POP is done MAY ultimately be a policy issue that is made | |||
| explicit for any given CA in its publicized Policy OID and | explicit for any given CA in its publicized Policy OID and | |||
| Certification Practice Statement). However, this specification | Certification Practice Statement). However, this specification | |||
| mandates that CA/RA entities MUST do POP (by some means) as part of | mandates that CA/RA entities MUST do POP (by some means) as part of | |||
| the certification process. All EEs MUST be prepared to provide POP | the certification process. All end entities MUST be prepared to | |||
| (i.e., these components of the PKIX-CMP protocol MUST be supported). | provide POP (i.e., these components of the PKIX-CMP protocol MUST be | |||
| supported). | ||||
| C.4. Initial Registration/Certification (Basic Authenticated Scheme) | C.4. Initial Registration/Certification (Basic Authenticated Scheme) | |||
| An (uninitialized) EE requests a (first) certificate from a CA. When | An (uninitialized) end entity requests a (first) certificate from a | |||
| the CA responds with a message containing a certificate, the EE | CA. When the CA responds with a message containing a certificate, | |||
| replies with a certificate confirmation. The CA sends a pkiconf | the end entity replies with a certificate confirmation. The CA sends | |||
| message back, closing the transaction. All messages are | a pkiconf message back, closing the transaction. All messages are | |||
| authenticated. | authenticated. | |||
| This scheme allows the EE to request certification of a locally | This scheme allows the end entity to request certification of a | |||
| generated public key (typically a signature key). The EE MAY also | locally generated public key (typically a signature key). The end | |||
| choose to request the centralized generation and certification of | entity MAY also choose to request the centralized generation and | |||
| another key pair (typically an encryption key pair). | certification of another key pair (typically an encryption key pair). | |||
| Certification may only be requested for one locally generated public | Certification may only be requested for one locally generated public | |||
| key (for more, use separate PKIMessages). | key (for more, use separate PKIMessages). | |||
| The EE MUST support POP of the private key associated with the | The end entity MUST support POP of the private key associated with | |||
| locally generated public key. | the locally generated public key. | |||
| Preconditions: | Preconditions: | |||
| 1. The EE can authenticate the CA's signature based on out-of-band | 1. The end entity can authenticate the CA's signature based on out- | |||
| means. | of-band means. | |||
| 2. The EE and the CA share a symmetric MACing key. | 2. The end entity and the CA share a symmetric MACing key. | |||
| Message Flow: | Message Flow: | |||
| Step# EE PKI | Step# End entity PKI | |||
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
| 1 format ir | 1 format ir | |||
| 2 --> ir --> | 2 --> ir --> | |||
| 3 handle ir | 3 handle ir | |||
| 4 format ip | 4 format ip | |||
| 5 <-- ip <-- | 5 <-- ip <-- | |||
| 6 handle ip | 6 handle ip | |||
| 7 format certConf | 7 format certConf | |||
| 8 --> certConf --> | 8 --> certConf --> | |||
| 9 handle certConf | 9 handle certConf | |||
| 10 format pkiconf | 10 format pkiconf | |||
| 11 <-- pkiconf <-- | 11 <-- pkiconf <-- | |||
| 12 handle pkiconf | 12 handle pkiconf | |||
| For this profile, we mandate that the EE MUST include all (i.e., one | For this profile, we mandate that the end entity MUST include all | |||
| or two) CertReqMsg in a single PKIMessage and that the PKI (CA) MUST | (i.e., one or two) CertReqMsg in a single PKIMessage and that the PKI | |||
| produce a single response PKIMessage that contains the complete | (CA) MUST produce a single response PKIMessage that contains the | |||
| response (i.e., including the OPTIONAL second key pair, if it was | complete response (i.e., including the OPTIONAL second key pair, if | |||
| requested and if centralized key generation is supported). For | it was requested and if centralized key generation is supported). | |||
| simplicity, we also mandate that this message MUST be the final one | For simplicity, we also mandate that this message MUST be the final | |||
| (i.e., no use of "waiting" status value). | one (i.e., no use of "waiting" status value). | |||
| The EE has an out-of-band interaction with the CA/RA. This | The end entity has an out-of-band interaction with the CA/RA. This | |||
| transaction established the shared secret, the referenceNumber, and | transaction established the shared secret, the referenceNumber, and | |||
| optionally the DN used for both the sender and subject name in the | optionally the DN used for both the sender and subject name in the | |||
| certificate template. See Section 8.7 for security considerations on | certificate template. See Section 8.7 for security considerations on | |||
| quality of shared secret information. | quality of shared secret information. | |||
| Initialization Request -- ir | Initialization Request -- ir | |||
| Field Value | Field Value | |||
| recipient CA name | recipient CA name | |||
| -- the name of the CA who is being asked to produce a certificate | -- the name of the CA who is being asked to produce a certificate | |||
| protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
| -- only MAC protection is allowed for this request, based | -- only MAC protection is allowed for this request, based | |||
| -- on initial authentication key | -- on initial authentication key | |||
| senderKID referenceNum | senderKID referenceNum | |||
| -- the reference number that the CA has previously issued | -- the reference number that the CA has previously issued | |||
| -- to the EE (together with the MACing key) | -- to the end entity (together with the MACing key) | |||
| transactionID present | transactionID present | |||
| -- implementation-specific value, meaningful to end | -- implementation-specific value, meaningful to end | |||
| -- entity. | -- entity. | |||
| -- [If already in use at the CA, then a rejection message MUST | -- [If already in use at the CA, then a rejection message MUST | |||
| -- be produced by the CA] | -- be produced by the CA] | |||
| senderNonce present | senderNonce present | |||
| -- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
| freeText any valid value | freeText any valid value | |||
| body ir (CertReqMessages) | body ir (CertReqMessages) | |||
| skipping to change at line 4661 ¶ | skipping to change at line 4690 ¶ | |||
| crm[0].certReq present | crm[0].certReq present | |||
| certTemplate | certTemplate | |||
| -- MUST include subject public key value, otherwise unconstrained | -- MUST include subject public key value, otherwise unconstrained | |||
| crm[0].pop... optionally present if public key | crm[0].pop... optionally present if public key | |||
| POPOSigningKey from crm[0].certReq.certTemplate is | POPOSigningKey from crm[0].certReq.certTemplate is | |||
| a signing key | a signing key | |||
| -- POP MAY be required in this exchange | -- POP MAY be required in this exchange | |||
| -- (see Appendix D.3 for details) | -- (see Appendix D.3 for details) | |||
| crm[0].certReq. optionally present | crm[0].certReq. optionally present | |||
| controls.archiveOptions | controls.archiveOptions | |||
| -- the EE MAY request that the locally generated | -- the end entity MAY request that the locally generated | |||
| -- private key be archived | -- private key be archived | |||
| crm[0].certReq. optionally present | crm[0].certReq. optionally present | |||
| controls.publicationInfo | controls.publicationInfo | |||
| -- the EE MAY ask for publication of resulting cert. | -- the end entity MAY ask for publication of resulting cert. | |||
| crm[1].certReq fixed value of one | crm[1].certReq fixed value of one | |||
| certReqId | certReqId | |||
| -- the index of the template within the message | -- the index of the template within the message | |||
| crm[1].certReq present | crm[1].certReq present | |||
| certTemplate | certTemplate | |||
| -- MUST NOT include actual public key bits, otherwise | -- MUST NOT include actual public key bits, otherwise | |||
| -- unconstrained (e.g., the names need not be the same as in | -- unconstrained (e.g., the names need not be the same as in | |||
| -- crm[0]). Note that subjectPublicKeyInfo MAY be present | -- crm[0]). Note that subjectPublicKeyInfo MAY be present | |||
| -- and contain an AlgorithmIdentifier followed by a | -- and contain an AlgorithmIdentifier followed by a | |||
| -- zero-length BIT STRING for the subjectPublicKey if it is | -- zero-length BIT STRING for the subjectPublicKey if it is | |||
| -- desired to inform the CA/RA of algorithm and parameter | -- desired to inform the CA/RA of algorithm and parameter | |||
| -- preferences regarding the to-be-generated key pair. | -- preferences regarding the to-be-generated key pair. | |||
| crm[1].certReq. present [object identifier MUST be | crm[1].certReq. present [object identifier MUST be | |||
| PROT_ENC_ALG] | PROT_ENC_ALG] | |||
| controls.protocolEncrKey | controls.protocolEncrKey | |||
| -- if centralized key generation is supported by this CA, | -- if centralized key generation is supported by this CA, | |||
| -- this short-term asymmetric encryption key (generated by | -- this short-term asymmetric encryption key (generated by | |||
| -- the EE) will be used by the CA to encrypt (a | -- the end entity) will be used by the CA to encrypt (a | |||
| -- symmetric key used to encrypt) a private key generated by | -- symmetric key used to encrypt) a private key generated by | |||
| -- the CA on behalf of the EE | -- the CA on behalf of the end entity | |||
| crm[1].certReq. optionally present | crm[1].certReq. optionally present | |||
| controls.archiveOptions | controls.archiveOptions | |||
| crm[1].certReq. optionally present | crm[1].certReq. optionally present | |||
| controls.publicationInfo | controls.publicationInfo | |||
| protection present | protection present | |||
| -- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
| Initialization Response -- ip | Initialization Response -- ip | |||
| Field Value | Field Value | |||
| sender CA name | sender CA name | |||
| -- the name of the CA who produced the message | -- the name of the CA who produced the message | |||
| messageTime present | messageTime present | |||
| -- time at which CA produced message | -- time at which CA produced message | |||
| protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
| -- only MAC protection is allowed for this response | -- only MAC protection is allowed for this response | |||
| senderKID referenceNum | senderKID referenceNum | |||
| -- the reference number that the CA has previously issued to the | -- the reference number that the CA has previously issued to the | |||
| -- EE (together with the MACing key) | -- end entity (together with the MACing key) | |||
| transactionID present | transactionID present | |||
| -- value from corresponding ir message | -- value from corresponding ir message | |||
| senderNonce present | senderNonce present | |||
| -- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
| recipNonce present | recipNonce present | |||
| -- value from senderNonce in corresponding ir message | -- value from senderNonce in corresponding ir message | |||
| freeText any valid value | freeText any valid value | |||
| body ip (CertRepMessage) | body ip (CertRepMessage) | |||
| contains exactly one response | contains exactly one response | |||
| for each request | for each request | |||
| skipping to change at line 4794 ¶ | skipping to change at line 4823 ¶ | |||
| -- the name of the CA who was asked to produce a certificate | -- the name of the CA who was asked to produce a certificate | |||
| transactionID present | transactionID present | |||
| -- value from corresponding ir and ip messages | -- value from corresponding ir and ip messages | |||
| senderNonce present | senderNonce present | |||
| -- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
| recipNonce present | recipNonce present | |||
| -- value from senderNonce in corresponding ip message | -- value from senderNonce in corresponding ip message | |||
| protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
| -- only MAC protection is allowed for this message. The | -- only MAC protection is allowed for this message. The | |||
| -- MAC is based on the initial authentication key shared | -- MAC is based on the initial authentication key shared | |||
| -- between the EE and the CA. | -- between the end entity and the CA. | |||
| senderKID referenceNum | senderKID referenceNum | |||
| -- the reference number that the CA has previously issued | -- the reference number that the CA has previously issued | |||
| -- to the EE (together with the MACing key) | -- to the end entity (together with the MACing key) | |||
| body certConf | body certConf | |||
| -- see Section 5.3.18, "PKI Confirmation Content", for the | -- see Section 5.3.18, "PKI Confirmation Content", for the | |||
| -- contents of the certConf fields. | -- contents of the certConf fields. | |||
| -- Note: two CertStatus structures are required if both an | -- Note: two CertStatus structures are required if both an | |||
| -- encryption and a signing certificate were sent. | -- encryption and a signing certificate were sent. | |||
| protection present | protection present | |||
| -- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
| skipping to change at line 4832 ¶ | skipping to change at line 4861 ¶ | |||
| -- value from senderNonce from certConf message | -- value from senderNonce from certConf message | |||
| protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
| -- only MAC protection is allowed for this message. | -- only MAC protection is allowed for this message. | |||
| senderKID referenceNum | senderKID referenceNum | |||
| body pkiconf | body pkiconf | |||
| protection present | protection present | |||
| -- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
| C.5. Certificate Request | C.5. Certificate Request | |||
| An (initialized) EE requests a certificate from a CA (for any | An (initialized) end entity requests a certificate from a CA (for any | |||
| reason). When the CA responds with a message containing a | reason). When the CA responds with a message containing a | |||
| certificate, the EE replies with a certificate confirmation. The CA | certificate, the end entity replies with a certificate confirmation. | |||
| replies with a pkiconf message to close the transaction. All | The CA replies with a pkiconf message to close the transaction. All | |||
| messages are authenticated. | messages are authenticated. | |||
| The profile for this exchange is identical to that given in | The profile for this exchange is identical to that given in | |||
| Appendix C.4, with the following exceptions: | Appendix C.4, with the following exceptions: | |||
| * sender name SHOULD be present; | * sender name SHOULD be present; | |||
| * protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | * protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | |||
| also be supported) in request, response, certConf, and pkiconf | also be supported) in request, response, certConf, and pkiconf | |||
| messages; | messages; | |||
| skipping to change at line 4863 ¶ | skipping to change at line 4892 ¶ | |||
| CertReqMsg may be used to request certification of a locally | CertReqMsg may be used to request certification of a locally | |||
| generated public key or a centrally generated public key (i.e., | generated public key or a centrally generated public key (i.e., | |||
| the position-dependence requirement of Appendix C.4 is removed); | the position-dependence requirement of Appendix C.4 is removed); | |||
| and | and | |||
| * protection bits are calculated according to the protectionAlg | * protection bits are calculated according to the protectionAlg | |||
| field. | field. | |||
| C.6. Key Update Request | C.6. Key Update Request | |||
| An (initialized) EE requests a certificate from a CA (to update the | An (initialized) end entity requests a certificate from a CA (to | |||
| key pair and/or corresponding certificate that it already possesses). | update the key pair and/or corresponding certificate that it already | |||
| When the CA responds with a message containing a certificate, the EE | possesses). When the CA responds with a message containing a | |||
| replies with a certificate confirmation. The CA replies with a | certificate, the end entity replies with a certificate confirmation. | |||
| PKIConfirm to close the transaction. All messages are authenticated. | The CA replies with a PKIConfirm to close the transaction. All | |||
| messages are authenticated. | ||||
| The profile for this exchange is identical to that given in | The profile for this exchange is identical to that given in | |||
| Appendix C.4, with the following exceptions: | Appendix C.4, with the following exceptions: | |||
| * sender name SHOULD be present; | * sender name SHOULD be present; | |||
| * protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | * protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | |||
| also be supported) in request, response, certConfirm, and | also be supported) in request, response, certConfirm, and | |||
| PKIConfirm messages; | PKIConfirm messages; | |||
| skipping to change at line 4962 ¶ | skipping to change at line 4992 ¶ | |||
| A newWithNew certificate (including relevant extensions) must contain | A newWithNew certificate (including relevant extensions) must contain | |||
| "sensible" values for all fields. For example, when present, | "sensible" values for all fields. For example, when present, | |||
| subjectAltName MUST be identical to issuerAltName, and, when present, | subjectAltName MUST be identical to issuerAltName, and, when present, | |||
| keyIdentifiers must contain appropriate values, et cetera. | keyIdentifiers must contain appropriate values, et cetera. | |||
| D.4. Root CA Key Update | D.4. Root CA Key Update | |||
| A root CA updates its key pair. It then produces a CA key update | A root CA updates its key pair. It then produces a CA key update | |||
| announcement message that can be made available (via some transport | announcement message that can be made available (via some transport | |||
| mechanism) to the relevant EEs. A confirmation message is not | mechanism) to the relevant entities. A confirmation message is not | |||
| required from the EEs. | required from the end entities. | |||
| ckuann message: | ckuann message: | |||
| +============+================================+=====================+ | +============+================================+=====================+ | |||
| | Field | Value | Comment | | | Field | Value | Comment | | |||
| +============+================================+=====================+ | +============+================================+=====================+ | |||
| | sender | CA name CA name | | | | sender | CA name CA name | | | |||
| +------------+--------------------------------+---------------------+ | +------------+--------------------------------+---------------------+ | |||
| | body | ckuann(RootCaKeyUpdateContent) | | | | body | ckuann(RootCaKeyUpdateContent) | | | |||
| +------------+--------------------------------+---------------------+ | +------------+--------------------------------+---------------------+ | |||
| skipping to change at line 4996 ¶ | skipping to change at line 5026 ¶ | |||
| | | | (e.g., | | | | | (e.g., | | |||
| | | | certificates | | | | | certificates | | |||
| | | | signed using the | | | | | signed using the | | |||
| | | | new private key) | | | | | new private key) | | |||
| +------------+--------------------------------+---------------------+ | +------------+--------------------------------+---------------------+ | |||
| Table 4 | Table 4 | |||
| D.5. PKI Information Request/Response | D.5. PKI Information Request/Response | |||
| The EE sends a general message to the PKI requesting details that | The end entity sends a general message to the PKI requesting details | |||
| will be required for later PKI management operations. The RA/CA | that will be required for later PKI management operations. The RA/CA | |||
| responds with a general response. If an RA generates the response, | responds with a general response. If an RA generates the response, | |||
| then it will simply forward the equivalent message that it previously | then it will simply forward the equivalent message that it previously | |||
| received from the CA, with the possible addition of certificates to | received from the CA, with the possible addition of certificates to | |||
| the extraCerts fields of the PKIMessage. A confirmation message is | the extraCerts fields of the PKIMessage. A confirmation message is | |||
| not required from the EE. | not required from the end entity. | |||
| Message Flows: | Message Flows: | |||
| Step# EE PKI | Step# End entity PKI | |||
| --------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
| 1 format genm | 1 format genm | |||
| 2 --> genm --> | 2 --> genm --> | |||
| 3 handle genm | 3 handle genm | |||
| 4 produce genp | 4 produce genp | |||
| 5 <-- genp <-- | 5 <-- genp <-- | |||
| 6 handle genp | 6 handle genp | |||
| genM: | genM: | |||
| skipping to change at line 5049 ¶ | skipping to change at line 5079 ¶ | |||
| -- name of the CA that produced the message | -- name of the CA that produced the message | |||
| protectionAlg MSG_MAC_ALG or MSG_SIG_ALG | protectionAlg MSG_MAC_ALG or MSG_SIG_ALG | |||
| -- any authenticated protection alg. | -- any authenticated protection alg. | |||
| senderKID present if required | senderKID present if required | |||
| -- must be present if required for verification of message | -- must be present if required for verification of message | |||
| -- protection | -- protection | |||
| body genp (GenRepContent) | body genp (GenRepContent) | |||
| CAProtEncCert present (object identifier one | CAProtEncCert present (object identifier one | |||
| of PROT_ENC_ALG), with relevant | of PROT_ENC_ALG), with relevant | |||
| value | value | |||
| -- to be used if EE needs to encrypt information for | -- to be used if end entity needs to encrypt information for | |||
| -- the CA (e.g., private key for recovery purposes) | -- the CA (e.g., private key for recovery purposes) | |||
| SignKeyPairTypes present, with relevant value | SignKeyPairTypes present, with relevant value | |||
| -- the set of signature algorithm identifiers that this CA will | -- the set of signature algorithm identifiers that this CA will | |||
| -- certify for subject public keys | -- certify for subject public keys | |||
| EncKeyPairTypes present, with relevant value | EncKeyPairTypes present, with relevant value | |||
| -- the set of encryption / key agreement algorithm identifiers that | -- the set of encryption / key agreement algorithm identifiers that | |||
| -- this CA will certify for subject public keys | -- this CA will certify for subject public keys | |||
| PreferredSymmAlg present (object identifier one | PreferredSymmAlg present (object identifier one | |||
| of PROT_SYM_ALG) , with relevant | of PROT_SYM_ALG) , with relevant | |||
| skipping to change at line 5226 ¶ | skipping to change at line 5256 ¶ | |||
| -- content of actual certificate must be examined by requesting CA | -- content of actual certificate must be examined by requesting CA | |||
| -- before publication | -- before publication | |||
| protection present | protection present | |||
| -- bits calculated using MSG_SIG_ALG | -- bits calculated using MSG_SIG_ALG | |||
| extraCerts optionally present | extraCerts optionally present | |||
| -- MAY contain any additional certificates that responder wishes | -- MAY contain any additional certificates that responder wishes | |||
| -- to include | -- to include | |||
| D.7. In-Band Initialization Using External Identity Certificate | D.7. In-Band Initialization Using External Identity Certificate | |||
| An (uninitialized) EE wishes to initialize into the PKI with a CA, | An (uninitialized) end entity wishes to initialize into the PKI with | |||
| CA-1. It uses, for authentication purposes, a pre-existing identity | a CA, CA-1. It uses, for authentication purposes, a pre-existing | |||
| certificate issued by another (external) CA, CA-X. A trust | identity certificate issued by another (external) CA, CA-X. A trust | |||
| relationship must already have been established between CA-1 and CA-X | relationship must already have been established between CA-1 and CA-X | |||
| so that CA-1 can validate the EE identity certificate signed by CA-X. | so that CA-1 can validate the end entity identity certificate signed | |||
| Furthermore, some mechanism must already have been established within | by CA-X. Furthermore, some mechanism must already have been | |||
| the TEE, also known as PSE, of the EE that would allow it to | established within the TEE, also known as PSE, of the end entity that | |||
| authenticate and verify PKIMessages signed by CA-1 (as one example, | would allow it to authenticate and verify PKIMessages signed by CA-1 | |||
| the TEE may contain a certificate issued for the public key of CA-1, | (as one example, the TEE may contain a certificate issued for the | |||
| signed by another CA that the EE trusts on the basis of out-of-band | public key of CA-1, signed by another CA that the end entity trusts | |||
| authentication techniques). | on the basis of out-of-band authentication techniques). | |||
| The EE sends an initialization request to start the transaction. | The end entity sends an initialization request to start the | |||
| When CA-1 responds with a message containing the new certificate, the | transaction. When CA-1 responds with a message containing the new | |||
| EE replies with a certificate confirmation. CA-1 replies with a | certificate, the end entity replies with a certificate confirmation. | |||
| pkiconf message to close the transaction. All messages are signed | CA-1 replies with a pkiconf message to close the transaction. All | |||
| (the EE messages are signed using the private key that corresponds to | messages are signed (the end entity messages are signed using the | |||
| the public key in its external identity certificate; the CA-1 | private key that corresponds to the public key in its external | |||
| messages are signed using the private key that corresponds to the | identity certificate; the CA-1 messages are signed using the private | |||
| public key in a certificate that can be chained to a trust anchor in | key that corresponds to the public key in a certificate that can be | |||
| the EE's TEE). | chained to a trust anchor in the end entity's TEE). | |||
| The profile for this exchange is identical to that given in | The profile for this exchange is identical to that given in | |||
| Appendix C.4, with the following exceptions: | Appendix C.4, with the following exceptions: | |||
| * the EE and CA-1 do not share a symmetric MACing key (i.e., there | * the end entity and CA-1 do not share a symmetric MACing key (i.e., | |||
| is no out-of-band shared secret information between these | there is no out-of-band shared secret information between these | |||
| entities); | entities); | |||
| * sender name in ir MUST be present (and identical to the subject | * sender name in ir MUST be present (and identical to the subject | |||
| name present in the external identity certificate); | name present in the external identity certificate); | |||
| * protectionAlg of MSG_SIG_ALG MUST be used in all messages; | * protectionAlg of MSG_SIG_ALG MUST be used in all messages; | |||
| * external identity certificate MUST be carried in ir extraCerts | * external identity certificate MUST be carried in ir extraCerts | |||
| field | field | |||
| skipping to change at line 6085 ¶ | skipping to change at line 6115 ¶ | |||
| -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | |||
| -- | -- | |||
| -- | -- | |||
| -- This construct MAY also be used to define new PKIX Certificate | -- This construct MAY also be used to define new PKIX Certificate | |||
| -- Management Protocol request and response messages or | -- Management Protocol request and response messages or | |||
| -- general-purpose (e.g., announcement) messages for future needs | -- general-purpose (e.g., announcement) messages for future needs | |||
| -- or for specific environments. | -- or for specific environments. | |||
| GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | GenMsgContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- May be sent by EE, RA, or CA (depending on message content). | -- May be sent by end entity, RA, or CA (depending on message | |||
| -- The OPTIONAL infoValue parameter of InfoTypeAndValue will | -- content). The OPTIONAL infoValue parameter of InfoTypeAndValue | |||
| -- typically be omitted for some of the examples given above. | -- will typically be omitted for some of the examples given above. | |||
| -- The receiver is free to ignore any contained OIDs that it | -- The receiver is free to ignore any contained OIDs that it | |||
| -- does not recognize. If sent from EE to CA, the empty set | -- does not recognize. If sent from end entity to CA, the empty set | |||
| -- indicates that the CA may send | -- indicates that the CA may send | |||
| -- any/all information that it wishes. | -- any/all information that it wishes. | |||
| GenRepContent ::= SEQUENCE OF InfoTypeAndValue | GenRepContent ::= SEQUENCE OF InfoTypeAndValue | |||
| -- The receiver MAY ignore any contained OIDs that it does not | -- The receiver MAY ignore any contained OIDs that it does not | |||
| -- recognize. | -- recognize. | |||
| ErrorMsgContent ::= SEQUENCE { | ErrorMsgContent ::= SEQUENCE { | |||
| pKIStatusInfo PKIStatusInfo, | pKIStatusInfo PKIStatusInfo, | |||
| errorCode INTEGER OPTIONAL, | errorCode INTEGER OPTIONAL, | |||
| End of changes. 177 change blocks. | ||||
| 581 lines changed or deleted | 611 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||