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.