rfc9483.original | rfc9483.txt | |||
---|---|---|---|---|
LAMPS Working Group H. Brockhaus | Internet Engineering Task Force (IETF) H. Brockhaus | |||
Internet-Draft D. von Oheimb | Request for Comments: 9483 D. von Oheimb | |||
Intended status: Standards Track S. Fries | Category: Standards Track S. Fries | |||
Expires: 21 August 2023 Siemens | ISSN: 2070-1721 Siemens | |||
17 February 2023 | October 2023 | |||
Lightweight Certificate Management Protocol (CMP) Profile | Lightweight Certificate Management Protocol (CMP) Profile | |||
draft-ietf-lamps-lightweight-cmp-profile-21 | ||||
Abstract | Abstract | |||
This document aims at simple, interoperable, and automated PKI | This document aims at simple, interoperable, and automated PKI | |||
management operations covering typical use cases of industrial and | management operations covering typical use cases of industrial and | |||
IoT scenarios. This is achieved by profiling the Certificate | Internet of Things (IoT) scenarios. This is achieved by profiling | |||
Management Protocol (CMP), the related Certificate Request Message | the Certificate Management Protocol (CMP), the related Certificate | |||
Format (CRMF), and HTTP-based or CoAP-based transfer in a succinct | Request Message Format (CRMF), and transfer based on HTTP or | |||
but sufficiently detailed and self-contained way. To make secure | Constrained Application Protocol (CoAP) in a succinct but | |||
sufficiently detailed and self-contained way. To make secure | ||||
certificate management for simple scenarios and constrained devices | certificate management for simple scenarios and constrained devices | |||
as lightweight as possible, only the most crucial types of operations | as lightweight as possible, only the most crucial types of operations | |||
and options are specified as mandatory. More specialized or complex | and options are specified as mandatory. More specialized or complex | |||
use cases are supported with optional features. | use cases are supported with optional features. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 21 August 2023. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9483. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | ||||
Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
extracted from this document must include Revised BSD License text as | include Revised BSD License text as described in Section 4.e of the | |||
described in Section 4.e of the Trust Legal Provisions and are | Trust Legal Provisions and are provided without warranty as described | |||
provided without warranty as described in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. How to Read This Document . . . . . . . . . . . . . . . . 5 | 1.1. How to Read This Document | |||
1.2. Conventions and Terminology . . . . . . . . . . . . . . . 5 | 1.2. Conventions and Terminology | |||
1.3. Motivation for a Lightweight Profile of CMP . . . . . . . 6 | 1.3. Motivation for a Lightweight Profile of CMP | |||
1.4. Special Requirements of Industrial and IoT Scenarios . . 8 | 1.4. Special Requirements of Industrial and IoT Scenarios | |||
1.5. Existing CMP Profiles . . . . . . . . . . . . . . . . . . 9 | 1.5. Existing CMP Profiles | |||
1.6. Compatibility with Existing CMP Profiles . . . . . . . . 9 | 1.6. Compatibility with Existing CMP Profiles | |||
1.7. Use of CMP in SZTP and BRSKI Environments . . . . . . . . 11 | 1.7. Use of CMP in SZTP and BRSKI Environments | |||
1.8. Scope of this Document . . . . . . . . . . . . . . . . . 11 | 1.8. Scope of This Document | |||
1.9. Structure of this Document . . . . . . . . . . . . . . . 12 | 1.9. Structure of This Document | |||
2. Solution Architecture . . . . . . . . . . . . . . . . . . . . 13 | 2. Solution Architecture | |||
3. Generic Aspects of PKI Messages and PKI Management | 3. Generic Aspects of PKI Messages and PKI Management Operations | |||
Operations . . . . . . . . . . . . . . . . . . . . . . . 15 | 3.1. General Description of the CMP Message Header | |||
3.1. General Description of the CMP Message Header . . . . . . 16 | 3.2. General Description of the CMP Message Protection | |||
3.2. General Description of the CMP Message Protection . . . . 18 | 3.3. General Description of CMP Message ExtraCerts | |||
3.3. General Description of CMP Message ExtraCerts . . . . . . 19 | 3.4. Generic PKI Management Operation Prerequisites | |||
3.4. Generic PKI Management Operation Prerequisites . . . . . 19 | 3.5. Generic Validation of a PKI Message | |||
3.5. Generic Validation of a PKI Message . . . . . . . . . . . 21 | 3.6. Error Handling | |||
3.6. Error Handling . . . . . . . . . . . . . . . . . . . . . 23 | 3.6.1. Reporting Error Conditions Upstream | |||
3.6.1. Reporting Error Conditions Upstream . . . . . . . . . 23 | 3.6.2. Reporting Error Conditions Downstream | |||
3.6.2. Reporting Error Conditions Downstream . . . . . . . . 24 | ||||
3.6.3. Handling Error Conditions on Nested Messages Used for | 3.6.3. Handling Error Conditions on Nested Messages Used for | |||
Batching . . . . . . . . . . . . . . . . . . . . . . 24 | Batching | |||
3.6.4. PKIStatusInfo and Error Messages . . . . . . . . . . 25 | 3.6.4. PKIStatusInfo and Error Messages | |||
4. PKI Management Operations . . . . . . . . . . . . . . . . . . 27 | 4. PKI Management Operations | |||
4.1. Enrolling End Entities . . . . . . . . . . . . . . . . . 29 | 4.1. Enrolling End Entities | |||
4.1.1. Enrolling an End Entity to a New PKI . . . . . . . . 30 | 4.1.1. Enrolling an End Entity to a New PKI | |||
4.1.2. Enrolling an End Entity to a Known PKI . . . . . . . 37 | 4.1.2. Enrolling an End Entity to a Known PKI | |||
4.1.3. Updating a Valid Certificate . . . . . . . . . . . . 37 | 4.1.3. Updating a Valid Certificate | |||
4.1.4. Enrolling an End Entity Using a PKCS#10 Request . . . 39 | 4.1.4. Enrolling an End Entity Using a PKCS #10 Request | |||
4.1.5. Using MAC-Based Protection for Enrollment . . . . . . 41 | 4.1.5. Using MAC-Based Protection for Enrollment | |||
4.1.6. Adding Central Key Pair Generation to Enrollment . . 42 | 4.1.6. Adding Central Key Pair Generation to Enrollment | |||
4.1.6.1. Using Key Transport Key Management Technique . . 48 | 4.1.6.1. Using the Key Transport Key Management Technique | |||
4.1.6.2. Using Key Agreement Key Management Technique . . 48 | 4.1.6.2. Using the Key Agreement Key Management Technique | |||
4.1.6.3. Using Password-Based Key Management Technique . . 50 | 4.1.6.3. Using the Password-Based Key Management Technique | |||
4.2. Revoking a Certificate . . . . . . . . . . . . . . . . . 50 | 4.2. Revoking a Certificate | |||
4.3. Support Messages . . . . . . . . . . . . . . . . . . . . 53 | 4.3. Support Messages | |||
4.3.1. Get CA Certificates . . . . . . . . . . . . . . . . . 54 | 4.3.1. Get CA Certificates | |||
4.3.2. Get Root CA Certificate Update . . . . . . . . . . . 55 | 4.3.2. Get Root CA Certificate Update | |||
4.3.3. Get Certificate Request Template . . . . . . . . . . 57 | 4.3.3. Get Certificate Request Template | |||
4.3.4. CRL Update Retrieval . . . . . . . . . . . . . . . . 59 | 4.3.4. CRL Update Retrieval | |||
4.4. Handling Delayed Delivery . . . . . . . . . . . . . . . . 61 | 4.4. Handling Delayed Delivery | |||
5. PKI Management Entity Operations . . . . . . . . . . . . . . 66 | 5. PKI Management Entity Operations | |||
5.1. Responding to Requests . . . . . . . . . . . . . . . . . 66 | 5.1. Responding to Requests | |||
5.1.1. Responding to a Certificate Request . . . . . . . . . 67 | 5.1.1. Responding to a Certificate Request | |||
5.1.2. Responding to a Confirmation Message . . . . . . . . 67 | 5.1.2. Responding to a Confirmation Message | |||
5.1.3. Responding to a Revocation Request . . . . . . . . . 68 | 5.1.3. Responding to a Revocation Request | |||
5.1.4. Responding to a Support Message . . . . . . . . . . . 68 | 5.1.4. Responding to a Support Message | |||
5.1.5. Initiating Delayed Delivery . . . . . . . . . . . . . 68 | 5.1.5. Initiating Delayed Delivery | |||
5.2. Forwarding Messages . . . . . . . . . . . . . . . . . . . 69 | 5.2. Forwarding Messages | |||
5.2.1. Not Changing Protection . . . . . . . . . . . . . . . 71 | 5.2.1. Not Changing Protection | |||
5.2.2. Adding Protection and Batching of Messages . . . . . 71 | 5.2.2. Adding Protection and Batching of Messages | |||
5.2.2.1. Adding Protection to a Request Message . . . . . 72 | 5.2.2.1. Adding Protection to a Request Message | |||
5.2.2.2. Batching Messages . . . . . . . . . . . . . . . . 73 | 5.2.2.2. Batching Messages | |||
5.2.3. Replacing Protection . . . . . . . . . . . . . . . . 75 | 5.2.3. Replacing Protection | |||
5.2.3.1. Not Changing Proof-of-Possession . . . . . . . . 76 | 5.2.3.1. Not Changing Proof-of-Possession | |||
5.2.3.2. Using raVerified . . . . . . . . . . . . . . . . 76 | 5.2.3.2. Using raVerified | |||
5.3. Acting on Behalf of other PKI Entities . . . . . . . . . 77 | 5.3. Acting on Behalf of Other PKI Entities | |||
5.3.1. Requesting a Certificate . . . . . . . . . . . . . . 77 | 5.3.1. Requesting a Certificate | |||
5.3.2. Revoking a Certificate . . . . . . . . . . . . . . . 78 | 5.3.2. Revoking a Certificate | |||
6. CMP Message Transfer Mechanisms . . . . . . . . . . . . . . . 78 | 6. CMP Message Transfer Mechanisms | |||
6.1. HTTP Transfer . . . . . . . . . . . . . . . . . . . . . . 79 | 6.1. HTTP Transfer | |||
6.2. CoAP Transfer . . . . . . . . . . . . . . . . . . . . . . 82 | 6.2. CoAP Transfer | |||
6.3. Piggybacking on Other Reliable Transfer . . . . . . . . . 84 | 6.3. Piggybacking on Other Reliable Transfer | |||
6.4. Offline Transfer . . . . . . . . . . . . . . . . . . . . 84 | 6.4. Offline Transfer | |||
6.4.1. File-Based Transfer . . . . . . . . . . . . . . . . . 85 | 6.4.1. File-Based Transfer | |||
6.4.2. Other Asynchronous Transfer Protocols . . . . . . . . 85 | 6.4.2. Other Asynchronous Transfer Protocols | |||
7. Conformance Requirements . . . . . . . . . . . . . . . . . . 85 | 7. Conformance Requirements | |||
7.1. PKI Management Operations . . . . . . . . . . . . . . . . 85 | 7.1. PKI Management Operations | |||
7.2. Message Transfer . . . . . . . . . . . . . . . . . . . . 88 | 7.2. Message Transfer | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 89 | 8. IANA Considerations | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 91 | 9. Security Considerations | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 91 | 10. References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 91 | 10.1. Normative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 91 | 10.2. Informative References | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 93 | Appendix A. Example CertReqTemplate | |||
Appendix A. Example CertReqTemplate . . . . . . . . . . . . . . 96 | Acknowledgements | |||
Appendix B. History of Changes . . . . . . . . . . . . . . . . . 98 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 106 | ||||
1. Introduction | 1. Introduction | |||
[RFC Editor: | ||||
Please perform the following substitution. | ||||
* RFCXXXX --> the assigned numerical RFC value for this draft | ||||
* RFCAAAA --> the assigned numerical RFC value for | ||||
[I-D.ietf-lamps-cmp-updates] | ||||
* RFCBBBB --> the assigned numerical RFC value for | ||||
[I-D.ietf-lamps-cmp-algorithms] | ||||
Please also update the following references to associated drafts in | ||||
progress to reflect their final RFC assignments, if available: | ||||
* [I-D.ietf-lamps-cmp-updates] | ||||
* [I-D.ietf-lamps-cmp-algorithms] | ||||
* [I-D.ietf-ace-cmpv2-coap-transport] | ||||
* [I-D.ietf-netconf-sztp-csr] | ||||
* [I-D.ietf-anima-brski-ae] | ||||
* [I-D.ietf-anima-brski-prm] | ||||
] | ||||
This document specifies PKI management operations supporting machine- | This document specifies PKI management operations supporting machine- | |||
to-machine and IoT use cases. Its focus is to maximize automation | to-machine and IoT use cases. Its focus is to maximize automation | |||
and interoperability between all involved PKI entities, ranging from | and interoperability between all involved PKI entities, ranging from | |||
end entities (EE) over any number of intermediate PKI management | end entities (EEs) over any number of intermediate PKI management | |||
entities such as Registration Authorities (RA) to the CMP endpoints | entities, such as registration authorities (RAs), to the Certificate | |||
of Certification Authority (CA) systems. This profile makes use of | Management Protocol (CMP) [RFC4210] endpoints of certification | |||
the concepts and syntax specified in CMP [RFC4210], | authority (CA) systems. This profile makes use of the concepts and | |||
[I-D.ietf-lamps-cmp-updates], and [I-D.ietf-lamps-cmp-algorithms], | syntax specified in CMP [RFC4210] [RFC9480] [RFC9481], Certificate | |||
CRMF [RFC4211] and [RFC9045], CMS [RFC5652] and [RFC8933], HTTP | Request Message Format (CRMF) [RFC4211] [RFC9045], Cryptographic | |||
transfer for CMP [RFC6712], and CoAP transfer for CMP | Message Syntax (CMS) [RFC5652] [RFC8933], HTTP transfer for CMP | |||
[I-D.ietf-ace-cmpv2-coap-transport]. CMP, CRMF and CMS are feature- | [RFC6712], and CoAP transfer for CMP [RFC9482]. CMP, CRMF, and CMS | |||
rich specifications, but most application scenarios use only a | are feature-rich specifications, but most application scenarios use | |||
limited subset of the same specified functionality. Additionally, | only a limited subset of the same specified functionality. | |||
the standards are not always precise enough on how to interpret and | Additionally, the standards are not always precise enough on how to | |||
implement the described concepts. Therefore, this document aims to | interpret and implement the described concepts. Therefore, this | |||
tailor the available options and specify how to use them in adequate | document aims to tailor the available options and specify how to use | |||
detail to make the implementation of interoperable automated | them in adequate detail to make the implementation of interoperable | |||
certificate management as straightforward and lightweight as | automated certificate management as straightforward and lightweight | |||
possible. | as possible. | |||
Note: In the meantime RFC4210bis [I-D.ietf-lamps-rfc4210bis] and | While this document was being developed, documents intended to | |||
RFC6712bis [I-D.ietf-lamps-rfc6712bis] drafts were submitted | obsolete RFC 4210 [PKIX-CMP] and RFC 6712 [HTTP-CMP] were posted, and | |||
incorporating the changes listed in CMP Updates | they include the full set of changes described in CMP Updates | |||
[I-D.ietf-lamps-cmp-updates] into the original RFC text. | [RFC9480]. | |||
1.1. How to Read This Document | 1.1. How to Read This Document | |||
This document has become longer than the authors would have liked it | This document has become longer than the authors would have liked it | |||
to be. Yet apart from studying Section 3, which contains general | to be. Yet apart from studying Section 3, which contains general | |||
requirements, the reader does not have to work through the whole | requirements, the reader does not have to work through the whole | |||
document. The guidance in Sections 1.9 and 7 should be used to | document. The guidance in Sections 1.9 and 7 should be used to | |||
figure out which parts of Section 4 to Section 6 are relevant for the | figure out which parts of Sections 4 to 6 are relevant for the target | |||
target certificate management solution depending on the PKI | certificate management solution, depending on the PKI management | |||
management operations, their variants, and types of message transfer | operations, their variants, and types of message transfer needed. | |||
needed. | ||||
Since conformity to this document can be achieved by implementing | Since conformity to this document can be achieved by implementing | |||
only the functionality declared mandatory in Section 7, the profile | only the functionality declared mandatory in Section 7, the profile | |||
can still be called lightweight because in particular for end | can still be called lightweight because, in particular for end | |||
entities the mandatory-to-implement set of features is rather | entities, the mandatory-to-implement set of features is rather | |||
limited. | limited. | |||
1.2. Conventions and Terminology | 1.2. Conventions and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The key word "PROHIBITED" is to be interpreted to mean that the | The term "PROHIBITED" is to be interpreted to mean that the | |||
respective ASN.1 field SHALL NOT be present or used. | respective ASN.1 field SHALL NOT be present or used. | |||
Technical terminology is used in conformance with RFC 4210 [RFC4210], | Technical terminology is used in conformance with [RFC4210], | |||
RFC 4211 [RFC4211], RFC 5280 [RFC5280], and IEEE 802.1AR | [RFC4211], [RFC5280], and IEEE 802.1AR [IEEE.802.1AR_2018]. The | |||
[IEEE.802.1AR_2018]. The following key words are used: | following terminology is used: | |||
CA: Certification authority, which issues certificates. | CA: Certification authority, which issues certificates. | |||
RA: Registration authority, an optional PKI component to which a | RA: Registration authority, an optional PKI component to which a | |||
CA delegates certificate management functions such as end | CA delegates certificate management functions, such as end | |||
entity authentication and authorization checks for incoming | entity authentication and authorization checks for incoming | |||
requests. An RA can also provide conversion between various | requests. An RA can also provide conversion between various | |||
certificate management protocols and other protocols providing | certificate management protocols and other protocols providing | |||
some operations related to certificate management. | some operations related to certificate management. | |||
LRA: Local registration authority, a specific form of RA with | LRA: Local registration authority, a specific form of RA with | |||
proximity to the end entities. | proximity to the end entities. | |||
Note: For ease of reading, this document uses the term "RA" | Note: For ease of reading, this document also uses the term | |||
also for LRAs in all cases where the difference is not | "RA" for LRAs in all cases where the difference is not | |||
relevant. | relevant. | |||
KGA: Key generation authority, an optional system component, | KGA: Key generation authority, an optional system component, | |||
typically co-located with an RA or CA, that offers key | typically colocated with an RA or CA, that offers key | |||
generation services to end entities. | generation services to end entities. | |||
EE: End entity, typically a device or service that holds a public- | EE: End entity, typically a device or service that holds a public- | |||
private key pair for which it manages a public-key | private key pair for which it manages a public key | |||
certificate. An identifier for the EE is given as the subject | certificate. An identifier for the EE is given as the subject | |||
of its certificate. | of its certificate. | |||
The following terminology is reused from RFC 4210 [RFC4210], as | The following terminology is reused from [RFC4210] as follows: | |||
follows: | ||||
PKI management operation: All CMP messages belonging to a single | PKI management operation: All CMP messages belonging to a single | |||
transaction. The transaction is | transaction. The transaction is | |||
identified by the transactionID field of | identified by the transactionID field of | |||
the message headers. | the message headers. | |||
PKI management entity: A non-EE PKI entity, i.e., RA or CA. | PKI management entity: A non-EE PKI entity, i.e., an RA or a | |||
CA. | ||||
PKI entity: An EE or PKI management entity. | PKI entity: An EE or PKI management entity. | |||
CMP messages are referred to by the names of PKIBody choices defined | CMP messages are referred to by the names of PKIBody choices defined | |||
in RFC 4210 Section 5.1.2 [RFC4210] and are further described in | in Section 5.1.2 of [RFC4210] and are further described in Section 4 | |||
Section 4 of this document. | of this document. | |||
The following terms are introduced in this document: | The following terms are introduced in this document: | |||
CMP protection key: The private key used to sign a CMP | CMP protection key: The private key used to sign a CMP | |||
message. | message. | |||
CMP protection certificate: The certificate related to the CMP | CMP protection certificate: The certificate related to the CMP | |||
protection key. If the keyUsage | protection key. If the keyUsage | |||
extension is present, it MUST include | extension is present, it MUST include | |||
digitalSignature. | digitalSignature. | |||
1.3. Motivation for a Lightweight Profile of CMP | 1.3. Motivation for a Lightweight Profile of CMP | |||
CMP was standardized in 1999 and is implemented in several PKI | CMP was standardized in 1999 and is implemented in several PKI | |||
products. In 2005, a completely reworked and enhanced version 2 of | products. In 2005, a completely reworked and enhanced version 2 of | |||
CMP [RFC4210] and CRMF [RFC4211] has been published, followed by a | CMP [RFC4210] and CRMF [RFC4211] has been published, followed by a | |||
document specifying a transfer mechanism for CMP messages using HTTP | document specifying a transfer mechanism for CMP messages using HTTP | |||
[RFC6712] in 2012. | [RFC6712] in 2012. | |||
CMP is a capable protocol and could be used more widely. RFC 4210 | CMP is a capable protocol and could be used more widely. CMP | |||
[RFC4210] and CMP Updates [I-D.ietf-lamps-cmp-updates] offer a very | [RFC4210] and CMP Updates [RFC9480] offer a very large set of | |||
large set of features and options. On the one hand, this makes CMP | features and options. On one hand, this makes CMP applicable to a | |||
applicable to a very wide range of scenarios, but on the other hand, | very wide range of scenarios; on the other hand, a full | |||
a full implementation supporting all options is not realistic because | implementation supporting all options is not realistic because this | |||
this would take undue effort. | would take undue effort. | |||
In order to reduce complexity, the set of mandatory PKI management | In order to reduce complexity, the set of mandatory PKI management | |||
operations and variants required by this specification has been kept | operations and variants required by this specification has been kept | |||
lean. This limits development effort and minimizes resource needs, | lean. This limits development efforts and minimizes resource needs, | |||
which is particularly important for memory-constrained devices. To | which is particularly important for memory-constrained devices. To | |||
this end, when there was design flexibility to either have necessary | this end, when there was design flexibility to either have necessary | |||
complexity on the EE or in the PKI management entity, this profile | complexity on the EE or in the PKI management entity, this profile | |||
chose to include it in the PKI management entities where typically | chose to include it in the PKI management entities where typically | |||
more computational resources are available. Additional recommended | more computational resources are available. Additional recommended | |||
PKI management operations and variants support some more complex | PKI management operations and variants support some more complex | |||
scenarios that are considered beneficial for environments with more | scenarios that are considered beneficial for environments with more | |||
specific demands or boundary conditions. The optional PKI management | specific demands or boundary conditions. The optional PKI management | |||
operations support less common scenarios and requirements. | operations support less common scenarios and requirements. | |||
Moreover, many details of the CMP protocol have been left open or | Moreover, many details of the Certificate Management Protocol have | |||
have not been specified in full preciseness. The profiles specified | been left open or have not been specified in full preciseness. The | |||
in Appendix D and E of RFC 4210 [RFC4210] define some more detailed | profiles specified in Appendices D and E of [RFC4210] define some | |||
PKI management operations. Yet, the specific needs of highly | more detailed PKI management operations. Yet the specific needs of | |||
automated scenarios for a machine-to-machine communication are not | highly automated scenarios for machine-to-machine communication are | |||
covered sufficiently. | not covered sufficiently. | |||
Profiling is a way to reduce feature richness and complexity of | Profiling is a way to reduce feature richness and complexity of | |||
standards to what is needed for specific use cases. 3GPP and UNISIG | standards to what is needed for specific use cases. 3GPP and UNISIG | |||
already use profiling of CMP as a way to cope with these challenges. | already use profiling of CMP as a way to cope with these challenges. | |||
To profile means to take advantage of the strengths of the given | To profile means to take advantage of the strengths of the given | |||
protocol, while explicitly narrowing down the options it provides to | protocol while explicitly narrowing down the options it provides to | |||
those needed for the purpose(s) at hand and eliminating all | those needed for the purpose(s) at hand and eliminating all | |||
identified ambiguities. In this way the general aspects of the | identified ambiguities. In this way, the general aspects of the | |||
protocol are utilized and only the special requirements of the target | protocol are utilized and only the special requirements of the target | |||
scenarios need to be dealt with using distinct features the protocol | scenarios need to be dealt with using distinct features the protocol | |||
offers. | offers. | |||
Defining a profile for a new target environment takes high effort | Defining a profile for a new target environment takes high effort | |||
because the range of available options needs to be well understood | because the range of available options needs to be well understood | |||
and the selected options need to be consistent with each other and | and the selected options need to be consistent with each other and | |||
suitably cover the intended application scenario. Since most | suitably cover the intended application scenario. Since most | |||
industrial PKI management use cases typically have much in common it | industrial PKI management use cases typically have much in common, it | |||
is worth sharing this effort, which is the aim of this document. | is worth sharing this effort, which is the aim of this document. | |||
Other standardization bodies can reference this document and further | Other standardization bodies can reference this document and further | |||
tailor the PKI management operations to their needs to avoid coming | tailor the PKI management operations to their needs to avoid coming | |||
up with individual profiles from scratch. | up with individual profiles from scratch. | |||
1.4. Special Requirements of Industrial and IoT Scenarios | 1.4. Special Requirements of Industrial and IoT Scenarios | |||
The profiles specified in Appendix D and E of RFC 4210 [RFC4210] have | The profiles specified in Appendices D and E of [RFC4210] have been | |||
been developed particularly for managing certificates of human end | developed particularly for managing certificates of human end | |||
entities. With the evolution of distributed systems and client- | entities. With the evolution of distributed systems and client- | |||
server architectures, certificates for machines and applications on | server architectures, certificates for machines and applications on | |||
them have become widely used. This trend has strengthened even more | them have become widely used. This trend has strengthened even more | |||
in emerging industrial and IoT scenarios. CMP is sufficiently | in emerging industrial and IoT scenarios. CMP is sufficiently | |||
flexible to support them well. | flexible to support them well. | |||
Today's IT security architectures for industrial solutions typically | Today's IT security architectures for industrial solutions typically | |||
use certificates for endpoint authentication within protocols like | use certificates for endpoint authentication within protocols like | |||
IPsec, TLS, or SSH. Therefore, the security of these architectures | IPsec, TLS, or Secure Shell (SSH). Therefore, the security of these | |||
highly relies upon the security and availability of the implemented | architectures highly relies upon the security and availability of the | |||
certificate management operations. | implemented certificate management operations. | |||
Due to increasing security and availability needs in operational | Due to increasing security and availability needs in operational | |||
technology, especially when used for critical infrastructures and | technology, especially when used for critical infrastructures and | |||
systems with a high number of certificates, a state-of-the-art | systems with a high number of certificates, a state-of-the-art | |||
certificate management system must be constantly available and cost- | certificate management system must be constantly available and cost- | |||
efficient, which calls for high automation and reliability. | efficient, which calls for high automation and reliability. | |||
Consequently, the NIST Framework for Improving Critical | Consequently, "Framework for Improving Critical Infrastructure | |||
Infrastructure Cybersecurity [NIST.CSWP.04162018] refers to proper | Cybersecurity" [NIST.CSWP.04162018] refers to proper processes for | |||
processes for issuance, management, verification, revocation, and | issuance, management, verification, revocation, and audit of | |||
audit for authorized devices, users, and processes involving identity | authorized devices, users, and processes involving identity and | |||
and credential management. Such PKI management operations according | credential management. According to commonly accepted best | |||
to commonly accepted best practices are also required in | practices, such PKI management operations are also required in | |||
IEC 62443-3-3 [IEC.62443-3-3] for security level 2 and higher. | [IEC.62443-3-3] for security level 2 and higher. | |||
Further challenges in many industrial systems are network | Further challenges in many industrial systems are network | |||
segmentation and asynchronous communication. Also, PKI management | segmentation and asynchronous communication. Also, PKI management | |||
entities like Certification Authorities (CA) typically are not | entities like certification authorities (CAs) are not typically | |||
deployed on-site but in a highly protected data center environment, | deployed on-site but in a highly protected data center environment, | |||
e.g., operated according to ETSI Policy and security requirements for | e.g., operated according to ETSI Policy and security requirements for | |||
Trust Service Providers issuing certificates [ETSI-EN.319411-1]. | Trust Service Providers issuing certificates [ETSI-EN.319411-1]. | |||
Certificate management must be able to cope with such network | Certificate management must be able to cope with such network | |||
architectures. CMP offers the required flexibility and | architectures. CMP offers the required flexibility and | |||
functionality, namely authenticated self-contained messages, | functionality, namely authenticated self-contained messages, | |||
efficient polling, and support for asynchronous message transfer | efficient polling, and support for asynchronous message transfer | |||
while retaining end-to-end authentication. | while retaining end-to-end authentication. | |||
1.5. Existing CMP Profiles | 1.5. Existing CMP Profiles | |||
As already stated, RFC 4210 [RFC4210] contains profiles with | As already stated, [RFC4210] contains profiles with mandatory and | |||
mandatory and optional PKI management operations in Appendix D and E. | optional PKI management operations in Appendices D and E of | |||
Those profiles focus on management of human user certificates and | [RFC4210]. Those profiles focus on management of human user | |||
only partly address the specific needs of certificate management | certificates and only partly address the specific needs of | |||
automation for unattended devices or machine-to-machine application | certificate management automation for unattended devices or machine- | |||
scenarios. | to-machine application scenarios. | |||
Both Appendixes D and E focus on EE-to-RA/CA PKI management | Both Appendices D and E of [RFC4210] focus on PKI management | |||
operations and do not address further profiling of RA-to-CA | operations between an EE and an RA or CA. They do not address | |||
communication as typically needed for full backend automation. All | further profiling of RA-to-CA communication, which is typically | |||
requirements regarding algorithm support for RFC 4210 Appendix D and | needed for full backend automation. All requirements regarding | |||
E [RFC4210] have been updated by CMP Algorithms Section 7.1 | algorithm support for Appendices D and E of [RFC4210] have been | |||
[I-D.ietf-lamps-cmp-algorithms]. | updated by Section 7.1 of CMP Algorithms [RFC9481]. | |||
3GPP makes use of CMP [RFC4210] in its Technical Specification 33.310 | 3GPP makes use of CMP [RFC4210] in its Technical Specification 33.310 | |||
[ETSI-3GPP.33.310] for automatic management of IPsec certificates in | [ETSI-3GPP.33.310] for automatic management of IPsec certificates in | |||
3G, LTE, and 5G backbone networks. Since 2010, a dedicated CMP | 3G, LTE, and 5G backbone networks. Since 2010, a dedicated CMP | |||
profile for initial certificate enrollment and certificate update | profile for initial certificate enrollment and certificate update | |||
operations between EE and RA/CA is specified in that document. | operations between EEs and RAs/CAs is specified in that document. | |||
UNISIG has included a CMP profile for enrollment of TLS certificates | In 2015, UNISIG included a CMP profile for enrollment of TLS | |||
in the Subset-137 specifying the ETRAM/ETCS on-line key management | certificates in the Subset-137 specifying the ETRAM/ETCS online key | |||
for train control systems [UNISIG.Subset-137] in 2015. | management for train control systems [UNISIG.Subset-137]. | |||
Both standardization bodies tailor CMP [RFC4210], CRMF [RFC4211], and | Both standardization bodies tailor CMP [RFC4210], CRMF [RFC4211], and | |||
HTTP transfer for CMP [RFC6712] for highly automated and reliable PKI | HTTP transfer for CMP [RFC6712] for highly automated and reliable PKI | |||
management operations for unattended devices and services. | management operations for unattended devices and services. | |||
1.6. Compatibility with Existing CMP Profiles | 1.6. Compatibility with Existing CMP Profiles | |||
The profile specified in this document is compatible with RFC 4210 | The profile specified in this document is compatible with Appendices | |||
Appendixes D and E (PKI Management Message Profiles) [RFC4210], with | D and E of [RFC4210], with the following exceptions: | |||
the following exceptions: | ||||
* signature-based protection is the default protection; an initial | * signature-based protection is the default protection; an initial | |||
PKI management operation may also use MAC-based protection, | PKI management operation may also use protection based on the | |||
message authentication code (MAC), | ||||
* certification of a second key pair within the same PKI management | * certification of a second key pair within the same PKI management | |||
operation is not supported, | operation is not supported, | |||
* proof-of-possession (POPO) with self-signature of the certTemplate | * proof-of-possession (POP) with the self-signature of the certReq | |||
according to RFC 4211 Section 4.1 [RFC4211] clause 3 is the | containing the certTemplate (according to [RFC4211], Section 4.1, | |||
recommended default POPO method (deviations are possible for EEs | clause 3) is the recommended default POP method (deviations are | |||
when requesting central key generation, for RAs when using | possible for EEs when requesting central key generation, for RAs | |||
raVerified, and if the newly generated keypair is technically not | when using raVerified, and if the newly generated keypair is | |||
capable to generate digital signatures), | technically not capable to generate digital signatures), | |||
* confirmation of newly enrolled certificates may be omitted, and | * confirmation of newly enrolled certificates may be omitted, and | |||
* all PKI management operations consist of request-response message | * all PKI management operations consist of request-response message | |||
pairs originating at the EE, i.e., announcement messages | pairs originating at the EE, i.e., announcement messages | |||
(requiring a push model, a CMP server on the EE) are excluded in | (requiring a push model, a CMP server on the EE) are excluded in | |||
favor of a lightweight implementation on the EE. | favor of a lightweight implementation on the EE. | |||
The profile specified in this document is compatible with the CMP | The profile specified in this document is compatible with the CMP | |||
profile for 3G, LTE, and 5G network domain security and | profile for 3G, LTE, and 5G network domain security and | |||
authentication framework [ETSI-3GPP.33.310], except that: | authentication framework [ETSI-3GPP.33.310], except that: | |||
* protection of initial PKI management operations may be MAC-based, | * protection of initial PKI management operations may be MAC-based, | |||
* the subject field is mandatory in certificate templates, and | * the subject field is mandatory in certificate templates, and | |||
* confirmation of newly enrolled certificates may be omitted. | * confirmation of newly enrolled certificates may be omitted. | |||
The profile specified in this document is compatible with the CMP | The profile specified in this document is compatible with the CMP | |||
profile for on-line key management in rail networks as specified in | profile for online key management in rail networks as specified in | |||
UNISIG Subset-137 [UNISIG.Subset-137], except that: | [UNISIG.Subset-137], except that: | |||
* A certificate enrollment request message consists of only one | * A certificate enrollment request message consists of only one | |||
certificate request (CertReqMsg). | certificate request (CertReqMsg). | |||
* RFC 4210 [RFC4210] requires that the messageTime is Greenwich Mean | * [RFC4210] requires that the messageTime is Greenwich Mean Time | |||
Time coded as generalizedTime. | coded as generalizedTime. | |||
Note: As UNISIG Subset-137 Table 5 [UNISIG.Subset-137] explicitly | Note: As Table 5 of [UNISIG.Subset-137] explicitly states that the | |||
states that the messageTime in required to be "UTC time", it is | messageTime is required to be "UTC time", it is not clear if this | |||
not clear if this means a coding as UTCTime or generalizedTime and | means a coding as UTCTime or generalizedTime and if time zones | |||
if other time zones than Greenwich Mean Time shall be allowed. | other than Greenwich Mean Time shall be allowed. Both time | |||
Both time formats are described in RFC 5280 Section 4.1.2.5 | formats are described in Section 4.1.2.5 of [RFC5280]. | |||
[RFC5280]. | ||||
* The same type of protection is required to be used for all | * The same type of protection is required to be used for all | |||
messages of one PKI management operation. This means, in case the | messages of one PKI management operation. This means, in case the | |||
request message protection is MAC-based, also the response, | request message protection is MAC-based, the response, certConf, | |||
certConf, and pkiConf messages must have a MAC-based protection. | and pkiConf messages must also have MAC-based protection. | |||
* Use of caPubs is not required but typically allowed in combination | * Use of caPubs is not required but is typically allowed in | |||
with MAC-based protected PKI management operations. On the other | combination with MAC-based protected PKI management operations. | |||
hand UNISIG Subset-137 Table 12 [UNISIG.Subset-137] requires using | On the other hand, Table 12 of [UNISIG.Subset-137] requires using | |||
caPubs. | caPubs. | |||
Note: It remains unclear from UNISIG Subset-137 for which | Note: It remains unclear from UNISIG Subset-137 which | |||
certificate(s) the caPubs field should be used. For security | certificate(s) for the caPubs field should be used. For security | |||
reasons, it cannot be used for delivering the root CA certificate | reasons, it cannot be used for delivering the root CA certificate | |||
needed for validating the signature-based protection of the given | needed to validate the signature-based protection of the given | |||
response message (as stated indirectly also in its UNISIG | response message (as stated indirectly also in Section 6.3.1.5.2 b | |||
Subset-137 Section 6.3.1.5.2 b [UNISIG.Subset-137]). | of [UNISIG.Subset-137]). | |||
* This profile requires that the certConf message has one CertStatus | * This profile requires that the certConf message have one | |||
element where the statusInfo field is recommended. | CertStatus element where the statusInfo field is recommended. | |||
Note: In contrast, UNISIG Subset-137 Table 18 [UNISIG.Subset-137] | Note: In contrast, Table 18 of [UNISIG.Subset-137] requires that | |||
requires that the certConf message has one CertStatus element | the certConf message has one CertStatus element where the | |||
where the statusInfo field must be absent. This precludes sending | statusInfo field must be absent. This precludes sending a | |||
a negative certConf message in case the EE rejects the newly | negative certConf message in case the EE rejects the newly | |||
enrolled certificate. This results in violating the general rule | enrolled certificate. This results in violating the general rule | |||
that a certificate request transaction must include a certConf | that a certificate request transaction must include a certConf | |||
message (since moreover, using implicitConfirm is not allowed | message (moreover, since using implicitConfirm is not allowed | |||
there, either). | there either). | |||
1.7. Use of CMP in SZTP and BRSKI Environments | 1.7. Use of CMP in SZTP and BRSKI Environments | |||
In Secure Zero Touch Provisioning (SZTP) [RFC8572] and other | In Secure Zero Touch Provisioning (SZTP) [RFC8572] and other | |||
environments using NETCONF/YANG modules, SZTP-CSR | environments using Network Configuration Protocol (NETCONF) / YANG | |||
[I-D.ietf-netconf-sztp-csr] offers a YANG module that includes | modules, [SZTP-CSR] offers a YANG module that includes several types | |||
several types of certificate requests to obtain a public-key | of certificate requests to obtain a public key certificate for a | |||
certificate for a locally generated key pair. Such messages are of | locally generated key pair. Such messages are of the form ietf-ztp- | |||
the form ietf-ztp-types:cmp-csr from module ietf-ztp-csr and offer | types:cmp-csr from module ietf-ztp-csr and offer both proof-of- | |||
both proof-of-possession and proof-of-identity. To allow PKI | possession and proof-of-identity. To allow PKI management entities | |||
management entities that use the module ietf-ztp-csr and also wish to | that use the module ietf-ztp-csr and also wish to comply with this | |||
comply with this profile, the ir, cr, kur, or p10cr message MUST be | profile, the ir, cr, kur, or p10cr message MUST be formatted by the | |||
formatted by the EE as described in Section 4.1, and it MAY be | EE as described in Section 4.1, and it MAY be forwarded, as specified | |||
forwarded as specified in Section 5.2. | in Section 5.2. | |||
In Bootstrapping Remote Secure Key Infrastructure (BRSKI) [RFC8995] | In Bootstrapping Remote Secure Key Infrastructure (BRSKI) [RFC8995] | |||
environments, BRSKI-AE: Alternative Enrollment Protocols in BRSKI | environments, "BRSKI-AE: Alternative Enrollment Protocols in BRSKI" | |||
[I-D.ietf-anima-brski-ae] describes a generalization regarding the | [BRSKI-AE] describes a generalization regarding the employed | |||
employed enrollment protocols to allow alternatives to EST [RFC7030]. | enrollment protocols to allow alternatives to Enrollment over Secure | |||
For the use of CMP, it requires adherence to this profile. | Transport (EST) [RFC7030]. For the use of CMP, it requires adherence | |||
to this profile. | ||||
1.8. Scope of this Document | 1.8. Scope of This Document | |||
This profile on the one hand intends to reduce the flexibility of CMP | On one hand, this profile intends to reduce the flexibility of CMP to | |||
to the generic needs of automated certificate management of machine | the generic needs of automated certificate management of machine end | |||
end entities. On the other hand, it offers a variety of PKI | entities. On the other hand, it offers a variety of PKI management | |||
management operations and options relevant for industrial use cases. | operations and options relevant for industrial use cases. Therefore, | |||
Therefore, it is still a framework that supports further profiling by | it is still a framework that supports further profiling by those | |||
those addressing a specific use case or scenario, e.g., 3GPP/ETSI or | addressing a specific use case or scenario, e.g., 3GPP/ETSI or | |||
UNISIG. There is room for further tailoring this profile. This | UNISIG. There is room to further tailor this profile. This enables | |||
enables stricter profiling to the needs of concrete application | stricter profiling to meet the concrete needs in application areas. | |||
areas. | ||||
To minimize ambiguity and complexity through needless variety, this | To minimize ambiguity and complexity through needless variety, this | |||
document specifies exhaustive requirements for generating PKI | document specifies exhaustive requirements for generating PKI | |||
management messages on the sender side. On the other hand, it gives | management messages on the sender side. However, it gives only | |||
only minimal requirements on checks by the receiving side and how to | minimal requirements on checks by the receiving side and how to | |||
handle error cases. | handle error cases. | |||
Especially on the EE side this profile aims at a lightweight | Especially on the EE side, this profile aims at a lightweight | |||
implementation. This means that the number of PKI management | implementation. This means that the number of PKI management | |||
operations implementations are reduced to a reasonable minimum to | operation implementations are reduced to a reasonable minimum to | |||
support typical certificate management use cases in industrial | support typical certificate management use cases in industrial | |||
machine-to-machine environments. On the EE side only limited | machine-to-machine environments. On the EE side, only limited | |||
resources are expected, while on the side of the PKI management | resources are expected, while on the side of the PKI management | |||
entities the profile accepts higher requirements. | entities, the profile accepts higher requirements. | |||
For the sake of interoperability and robustness, implementations | For the sake of interoperability and robustness, implementations | |||
should, as far as security is not affected, adhere to Postel's law: | should, so long as security is not affected, adhere to Postel's law: | |||
"Be conservative in what you do, be liberal in what you accept from | "Be conservative in what you do, be liberal in what you accept from | |||
others" (often reworded as: "Be conservative in what you send, be | others" (often reworded as: "Be conservative in what you send, be | |||
liberal in what you receive"). | liberal in what you receive"). | |||
Fields used in ASN.1 syntax in Section 3, Section 4, or Section 5 are | Fields used in ASN.1 syntax in Sections 3, 4, or 5 are specified in | |||
specified in CMP [RFC4210] [I-D.ietf-lamps-cmp-updates], CRMF | CMP [RFC4210] [RFC9480], CRMF [RFC4211], and CMS [RFC5652] [RFC8933]. | |||
[RFC4211], and CMS [RFC5652] [RFC8933]. When these sections do not | When these sections do not explicitly discuss a field, then the field | |||
explicitly discuss a field, then the field SHOULD NOT be used by the | SHOULD NOT be used by the sending entity. The receiving entity MUST | |||
sending entity. The receiving entity MUST NOT require the absence of | NOT require the absence of such a field and, if the field is present, | |||
such a field, and if the field is present, MUST handle it gracefully. | MUST handle it gracefully. | |||
1.9. Structure of this Document | 1.9. Structure of This Document | |||
Section 2 introduces the general PKI architecture and approach to | Section 2 introduces the general PKI architecture and approach to | |||
certificate management that is assumed in this document. | certificate management that is assumed in this document. | |||
Section 3 profiles the generic aspects of the PKI management | Section 3 profiles the generic aspects of the PKI management | |||
operations specified in detail in Sections 4 and 5 to minimize | operations specified in detail in Sections 4 and 5 to minimize | |||
redundancy in the description and to ease implementation. This | redundancy in the description and to ease implementation. This | |||
covers the general structure and protection of messages, as well as | covers the general structure and protection of messages, as well as | |||
generic prerequisites, validation, and error handling. | generic prerequisites, validation, and error handling. | |||
skipping to change at page 13, line 11 ¶ | skipping to change at line 531 ¶ | |||
PKI management entity. There are various flavors of certificate | PKI management entity. There are various flavors of certificate | |||
enrollment requests, optionally with polling, central key generation, | enrollment requests, optionally with polling, central key generation, | |||
revocation, and general support PKI management operations. | revocation, and general support PKI management operations. | |||
Section 5 profiles responding to requests, exchanges between PKI | Section 5 profiles responding to requests, exchanges between PKI | |||
management entities, and operations on behalf of other PKI entities. | management entities, and operations on behalf of other PKI entities. | |||
This may include delayed delivery of messages, which involves polling | This may include delayed delivery of messages, which involves polling | |||
for responses, and nesting of messages. | for responses, and nesting of messages. | |||
Section 6 outlines several mechanisms for CMP message transfer, | Section 6 outlines several mechanisms for CMP message transfer, | |||
including HTTP-based transfer [RFC6712] optionally using TLS, and | including HTTP-based transfer [RFC6712] optionally using TLS, CoAP- | |||
CoAP-based transfer [I-D.ietf-ace-cmpv2-coap-transport] optionally | based transfer [RFC9482] optionally using DTLS, and offline file- | |||
using DTLS, and offline file-based transport. | based transport. | |||
Section 7 defines which parts of the profile are mandatory, | Section 7 defines which parts of the profile are mandatory, | |||
recommended, optional, or not relevant to implement for which type of | recommended, optional, or not relevant to implement for which type of | |||
entity. | entity. | |||
2. Solution Architecture | 2. Solution Architecture | |||
To facilitate secure automatic certificate enrollment, the device | To facilitate secure automatic certificate enrollment, the device | |||
hosting an EE is typically equipped with a manufacturer-issued device | hosting an EE is typically equipped with a manufacturer-issued device | |||
certificate. Such a certificate is typically installed during | certificate. Such a certificate is typically installed during | |||
production and is meant to identify the device throughout its | production and is meant to identify the device throughout its | |||
lifetime. This certificate can be used to protect the initial | lifetime. This certificate can be used to protect the initial | |||
enrollment of operational certificates after installation of the EE | enrollment of operational certificates after installation of the EE | |||
in its operational environment. In contrast to the manufacturer- | in its operational environment. In contrast to the manufacturer- | |||
issued device certificate, operational certificates are issued by the | issued device certificate, operational certificates are issued by the | |||
owner or operator of the device to identify the device or one of its | owner or operator of the device to identify the device or one of its | |||
components for operational use, e.g., in a security protocol like | components for operational use, e.g., in a security protocol like | |||
IPsec, TLS, or SSH. In IEEE 802.1AR [IEEE.802.1AR_2018] a | IPsec, TLS, or SSH. In IEEE 802.1AR [IEEE.802.1AR_2018], a | |||
manufacturer-issued device certificate is called IDevID certificate | manufacturer-issued device certificate is called an Initial Device | |||
and an operational certificate is called LDevID certificate. | Identifier (IDevID) certificate and an operational certificate is | |||
called a Locally Significant Device Identifier (LDevID) certificate. | ||||
Note: The owner or operator using the manufacturer-issued device | Note: The owner or operator using the manufacturer-issued device | |||
certificate for authenticating the device during initial enrollment | certificate for authenticating the device during initial enrollment | |||
of operational certificates MUST trust the respective trust anchor | of operational certificates MUST trust the respective trust anchor | |||
provided by the manufacturer. | provided by the manufacturer. | |||
Note: According to IEEE 802.1AR [IEEE.802.1AR_2018] a DevID comprises | Note: According to IEEE 802.1AR [IEEE.802.1AR_2018], a DevID | |||
the triple of the certificate, the corresponding private key, and the | comprises the triple of the certificate, the corresponding private | |||
certificate chain. | key, and the certificate chain. | |||
All certificate management operations specified in this document | All certificate management operations specified in this document | |||
follow the pull model, i.e., are initiated by an EE (or by an RA | follow the pull model, i.e., they are initiated by an EE (or by an RA | |||
acting as an EE). The EE creates a CMP request message, protects it | acting as an EE). The EE creates a CMP request message, protects it | |||
using some asymmetric credential or shared secret information and | using some asymmetric credential or shared secret information, and | |||
sends it to a PKI management entity. This PKI management entity may | sends it to a PKI management entity. This PKI management entity may | |||
be a CA or more typically an RA, which checks the request, responds | be a CA or more typically an RA, which checks the request and | |||
to it itself, or forwards the request upstream to the next PKI | responds to it itself or forwards the request upstream to the next | |||
management entity. In case an RA changes the CMP request message | PKI management entity. In case an RA changes the CMP request message | |||
header or body or wants to demonstrate successful verification or | header or body or wants to demonstrate successful verification or | |||
authorization, it can apply a protection of its own. The | authorization, it can apply a protection of its own. The | |||
communication between an LRA and RA can be performed synchronously or | communication between an LRA and RA can be performed synchronously or | |||
asynchronously. Asynchronous communication typically leads to | asynchronously. Asynchronous communication typically leads to | |||
delayed message delivery as described in Section 4.4. | delayed message delivery as described in Section 4.4. | |||
+-----+ +-----+ +-----+ +-----+ | +-----+ +-----+ +-----+ +-----+ | |||
| | | | | | | | | | | | | | | | | | |||
| EE |<---------->| LRA |<-------------->| RA |<---------->| CA | | | EE |<---------->| LRA |<-------------->| RA |<---------->| CA | | |||
| | | | | | | | | | | | | | | | | | |||
skipping to change at page 14, line 25 ¶ | skipping to change at line 595 ¶ | |||
synchronous (a)synchronous (a)synchronous | synchronous (a)synchronous (a)synchronous | |||
+----connection----+------connection------+----connection----+ | +----connection----+------connection------+----connection----+ | |||
operators service partner | operators service partner | |||
+---------on site---------+---back-end services--+---trust center--+ | +---------on site---------+---back-end services--+---trust center--+ | |||
<--- downstream <--- | ---> upstream ---> | <--- downstream <--- | ---> upstream ---> | |||
Figure 1: Certificate Management Architecture Example | Figure 1: Certificate Management Architecture Example | |||
In operational environments the certificate management architecture | In operational environments, the certificate management architecture | |||
can have multiple LRAs bundling requests from multiple EEs at | can have multiple LRAs bundling requests from multiple EEs at | |||
dedicated locations and one (or more than one) central RA aggregating | dedicated locations and one (or more than one) central RA aggregating | |||
the requests from the LRAs. Every LRA in this scenario has shared | the requests from the LRAs. Every LRA in this scenario has shared | |||
secret information (one per EE) for MAC-based protection or a CMP | secret information (one per EE) for MAC-based protection or a CMP | |||
protection key and certificate allowing it to protect CMP messages it | protection key and certificate, allowing it to protect CMP messages | |||
processes using its own credentials. The figure above shows an | it processes using its own credentials. The figure above shows an | |||
architectural example with one LRA, RA, and CA. It is also possible | architectural example with one LRA, RA, and CA. It is also possible | |||
not to have an RA or LRA or that there is no CA with a CMP interface. | not to have an RA or LRA or that there is no CA with a CMP interface. | |||
Depending on the network infrastructure, the message transfer between | Depending on the network infrastructure, the message transfer between | |||
PKI management entities may be based on synchronous online | PKI management entities may be based on synchronous online | |||
connections, asynchronous connections, or even offline (e.g., file- | connections, asynchronous connections, or even offline (e.g., file- | |||
based) transfer. | based) transfer. | |||
Note: In contrast to the pull model used in this document, other | Note: In contrast to the pull model used in this document, other | |||
specifications could use the messages specified in this document | specifications could use the messages specified in this document to | |||
implementing the push model. In this case the EE is pushed | implement the push model. In this case, the EE is pushed (triggered) | |||
(triggered) by the PKI management entity to provide the CMP request, | by the PKI management entity to provide the CMP request; therefore, | |||
and therefore, EE acts as the receiver, not initiating the | the EE acts as the receiver, not initiating the interaction with the | |||
interaction with the PKI. For example, when the device itself does | PKI. For example, when the device itself only acts (as a server as | |||
only act as a server as described in BRSKI with Pledge in Responder | described in BRSKI with Pledge in Responder Mode [BRSKI-PRM]), | |||
Mode (BRSKI-PRM) [I-D.ietf-anima-brski-prm], support of certificate | support of certificate enrollment in a push model is needed. While | |||
enrollment in a push model is needed. While BRSKI-PRM currently | BRSKI-PRM currently utilizes its own format for the exchanges, CMP in | |||
utilizes its own format for the exchanges, CMP in general and the | general and the messages specified in this profile offer all required | |||
messages specified in this profile offer all required capabilities. | capabilities. Nevertheless, the message flow and state machine as | |||
Nevertheless, the message flow and state machine as described in | described in Section 4 must be adapted to implement a push model. | |||
Section 4 must be adapted to implement a push model. | ||||
Note: Third-party CAs, not conforming to this document, may implement | Note: Third-party CAs not conforming to this document may implement | |||
other variants of CMP, different standardized protocols, or even | other variants of CMP, different standardized protocols, or even | |||
proprietary interfaces for certificate management. In such cases, an | proprietary interfaces for certificate management. In such cases, an | |||
RA needs to adapt the exchanged CMP messages to the flavor of | RA needs to adapt the exchanged CMP messages to the flavor of | |||
certificate management interaction required by such a non-conformant | certificate management interaction required by such a nonconformant | |||
CA. | CA. | |||
3. Generic Aspects of PKI Messages and PKI Management Operations | 3. Generic Aspects of PKI Messages and PKI Management Operations | |||
This section covers the generic aspects of the PKI management | This section covers the generic aspects of the PKI management | |||
operations specified in Sections 4 and 5 as upfront general | operations specified in Sections 4 and 5 as upfront general | |||
requirements to minimize redundancy in the description and to ease | requirements to minimize redundancy in the description and to ease | |||
implementation. | implementation. | |||
As described in Section 5.1 of RFC 4210 [RFC4210], all CMP messages | As described in Section 5.1 of [RFC4210], all CMP messages have the | |||
have the following general structure: | following general structure: | |||
+--------------------------------------------+ | +--------------------------------------------+ | |||
| PKIMessage | | | PKIMessage | | |||
| +----------------------------------------+ | | | +----------------------------------------+ | | |||
| | header | | | | | header | | | |||
| +----------------------------------------+ | | | +----------------------------------------+ | | |||
| +----------------------------------------+ | | | +----------------------------------------+ | | |||
| | body | | | | | body | | | |||
| +----------------------------------------+ | | | +----------------------------------------+ | | |||
| +----------------------------------------+ | | | +----------------------------------------+ | | |||
skipping to change at page 16, line 5 ¶ | skipping to change at line 671 ¶ | |||
in the header, protection, or extraCerts fields, the differences are | in the header, protection, or extraCerts fields, the differences are | |||
described in the respective subsections of Sections 4 and 5. | described in the respective subsections of Sections 4 and 5. | |||
The CMP message body contains the PKI management operation-specific | The CMP message body contains the PKI management operation-specific | |||
information. It is described in Sections 4 and 5. | information. It is described in Sections 4 and 5. | |||
Note: In the description of CMP messages, the presence of some fields | Note: In the description of CMP messages, the presence of some fields | |||
is stated as OPTIONAL or RECOMMENDED. The following text that states | is stated as OPTIONAL or RECOMMENDED. The following text that states | |||
requirements on such a field applies only if the field is present. | requirements on such a field applies only if the field is present. | |||
The generic prerequisites needed by the PKI entities in order to be | The generic prerequisites needed by the PKI entities in order to | |||
able to perform PKI management operations are described in | perform PKI management operations are described in Section 3.4. | |||
Section 3.4. | ||||
The generic validation steps to be performed by PKI entities on | The generic validation steps to be performed by PKI entities upon | |||
receiving a CMP message are described in Section 3.5. | receiving a CMP message are described in Section 3.5. | |||
The generic aspects of handling and reporting errors are described in | The generic aspects of handling and reporting errors are described in | |||
Section 3.6. | Section 3.6. | |||
3.1. General Description of the CMP Message Header | 3.1. General Description of the CMP Message Header | |||
This section describes the generic header fields of all CMP messages. | This section describes the generic header fields of all CMP messages. | |||
Any PKI management operation-specific fields or variations are | Any fields or variations specific to PKI management operation are | |||
described in Sections 4 and 5. | described in Sections 4 and 5. | |||
header | header | |||
pvno REQUIRED | pvno REQUIRED | |||
-- MUST be 3 to indicate CMP v3 in all cases where EnvelopedData | -- MUST be 3 to indicate CMP v3 in all cases where EnvelopedData | |||
-- is supported and expected to be used in the current | -- is supported and expected to be used in the current | |||
-- PKI management operation | -- PKI management operation | |||
-- MUST be 3 to indicate CMP v3 in certConf messages when using | -- MUST be 3 to indicate CMP v3 in certConf messages when using | |||
-- the hashAlg field | -- the hashAlg field | |||
-- MUST be 2 to indicate CMP v2 in all other cases | -- MUST be 2 to indicate CMP v2 in all other cases | |||
-- For details on version negotiation see RFCAAAA | -- For details on version negotiation, see [RFC9480] | |||
sender REQUIRED | sender REQUIRED | |||
-- Contains a name representing the originator which also | -- Contains a name representing the originator, which also | |||
-- protects the message | -- protects the message | |||
-- For signature-based protection MUST be the subject of the CMP | -- For signature-based protection, MUST be the subject field of | |||
-- protection certificate | -- the CMP protection certificate | |||
-- For MAC-based protection MUST be the subject name of the | -- For MAC-based protection, MUST contain a name the PKI | |||
-- certificate request, if available; otherwise, the NULL-DN | -- management entity can use to identify the shared secret | |||
-- (a zero-length SEQUENCE OF RelativeDistinguishedNames) MUST | -- information. This name MUST be placed in the commonName | |||
-- be used | -- field of the directoryName choice. | |||
-- In a multi-hop scenario, the receiving entity cannot rely | -- In a multihop scenario, the receiving entity cannot rely | |||
-- on the correctness of the sender field. | -- on the correctness of the sender field. | |||
recipient REQUIRED | recipient REQUIRED | |||
-- SHOULD be the name of the intended recipient; otherwise, the | -- SHOULD be the name of the intended recipient; otherwise, the | |||
-- NULL-DN MUST be used | -- NULL-DN MUST be used | |||
-- In the first message of a PKI management operation: SHOULD be | -- In the first message of a PKI management operation, SHOULD be | |||
-- the subject DN of the CA the PKI management operation is | -- the subject DN of the CA the PKI management operation is | |||
-- requested from | -- requested from | |||
-- In all other messages: SHOULD contain the value of the sender | -- In all other messages, SHOULD contain the value of the sender | |||
-- field of the previous message in the same PKI management | -- field of the previous message in the same PKI management | |||
-- operation | -- operation | |||
-- The recipient field shall be handled gracefully by the | -- The recipient field shall be handled gracefully by the | |||
-- receiving entity, because in a multi-hop scenario its | -- receiving entity, because in a multihop scenario, its | |||
-- correctness cannot be guaranteed. | -- correctness cannot be guaranteed. | |||
messageTime OPTIONAL | messageTime OPTIONAL | |||
-- MUST be present if the confirmWaitTime field is present | -- MUST be present if the confirmWaitTime field is present | |||
-- MUST be the time at which the message was produced, if present | -- MUST be the time at which the message was produced, if present | |||
-- MAY be set by a PKI management entity to provide the current | -- MAY be set by a PKI management entity to provide the current | |||
-- time | -- time | |||
-- MAY be used by the end entity for time synchronization if the | -- MAY be used by the end entity for time synchronization if the | |||
-- response was received within a short time frame | -- response was received within a short time frame | |||
protectionAlg REQUIRED | protectionAlg REQUIRED | |||
-- MUST be an algorithm identifier indicating the algorithm | -- MUST be an algorithm identifier indicating the algorithm | |||
-- used for calculating the protection bits | -- used for calculating the protection bits | |||
-- If it is a signature algorithm its type MUST be a | -- If it is a signature algorithm, its type MUST be | |||
-- MSG_SIG_ALG as specified in [RFCBBBB] Section 3 and | -- MSG_SIG_ALG as specified in Section 3 of [RFC9481] and | |||
-- MUST be consistent with the subjectPublicKeyInfo field of | -- MUST be consistent with the subjectPublicKeyInfo field of | |||
-- the CMP protection certificate | -- the CMP protection certificate | |||
-- If it is a MAC algorithm its type MUST be a MSG_MAC_ALG as | -- If it is a MAC algorithm, its type MUST be MSG_MAC_ALG, as | |||
-- specified in [RFCBBBB] Section 6.1 | -- specified in [RFC9481], Section 6.1 | |||
senderKID RECOMMENDED | senderKID RECOMMENDED | |||
-- For signature-based protection MUST be used and contain the | -- For signature-based protection, MUST be used and contain the | |||
-- value of the SubjectKeyIdentifier if present in the CMP | -- value of the SubjectKeyIdentifier if present in the CMP | |||
-- protection certificate | -- protection certificate | |||
-- For MAC-based protection MUST be used and contain a name the | -- For MAC-based protection, MUST be used and contain the same | |||
-- PKI management entity can use to identify the shared secret | -- name as in the commonName field of the sender field | |||
-- information | ||||
transactionID REQUIRED | transactionID REQUIRED | |||
-- In the first message of a PKI management operation: MUST be | -- In the first message of a PKI management operation, MUST be | |||
-- 128 bits of random data, to minimize the probability of | -- 128 bits of random data to minimize the probability of | |||
-- having the transactionID already in use at the server | -- having the transactionID already in use at the server | |||
-- In all other messages: MUST be the value from the previous | -- In all other messages, MUST be the value from the previous | |||
-- message in the same PKI management operation | -- message in the same PKI management operation | |||
senderNonce REQUIRED | senderNonce REQUIRED | |||
-- MUST be cryptographically secure and fresh 128 random bits | -- MUST be cryptographically secure and fresh 128 random bits | |||
recipNonce RECOMMENDED | recipNonce RECOMMENDED | |||
-- If this is the first message of a transaction: MUST be absent | -- If this is the first message of a transaction, MUST be absent | |||
-- If this is a delayed response message: MUST be present and | -- If this is a delayed response message, MUST be present and | |||
-- contain the value of the senderNonce of the respective | -- contain the value of the senderNonce of the respective | |||
-- request message in the same transaction | -- request message in the same transaction | |||
-- In all other messages: MUST be present and contain the value | -- In all other messages, MUST be present and contain the value | |||
-- of the senderNonce of the previous message in the same | -- of the senderNonce of the previous message in the same | |||
-- transaction | -- transaction | |||
generalInfo OPTIONAL | generalInfo OPTIONAL | |||
implicitConfirm OPTIONAL | implicitConfirm OPTIONAL | |||
-- RECOMMENDED in ir/cr/kur/p10cr messages, | -- RECOMMENDED in ir/cr/kur/p10cr messages, | |||
-- OPTIONAL in ip/cp/kup response messages, and | -- OPTIONAL in ip/cp/kup response messages, and | |||
-- PROHIBITED in other types of messages | -- PROHIBITED in other types of messages | |||
-- Added to request messages to request omission of the certConf | -- Added to request messages to request omission of the certConf | |||
-- message | -- message | |||
-- Added to response messages to grant omission of the certConf | -- Added to response messages to grant omission of the certConf | |||
-- message | -- message | |||
-- See [RFC4210] Section 5.1.1.1. | -- See [RFC4210], Section 5.1.1.1. | |||
ImplicitConfirmValue REQUIRED | ImplicitConfirmValue REQUIRED | |||
-- ImplicitConfirmValue MUST be NULL | -- ImplicitConfirmValue MUST be NULL | |||
confirmWaitTime OPTIONAL | confirmWaitTime OPTIONAL | |||
-- RECOMMENDED in ip/cp/kup messages if implicitConfirm is | -- RECOMMENDED in ip/cp/kup messages if implicitConfirm is | |||
-- not included | -- not included | |||
-- PROHIBITED if implicitConfirm is included | -- PROHIBITED if implicitConfirm is included | |||
-- See [RFC4210] Section 5.1.1.2. | -- See [RFC4210], Section 5.1.1.2. | |||
ConfirmWaitTimeValue REQUIRED | ConfirmWaitTimeValue REQUIRED | |||
-- ConfirmWaitTimeValue MUST be a GeneralizedTime value | -- ConfirmWaitTimeValue MUST be a GeneralizedTime value | |||
-- specifying the point in time up to which the PKI management | -- specifying the point in time up to which the PKI management | |||
-- entity will wait for the certConf message. The accepted | -- entity will wait for the certConf message. The accepted | |||
-- length of the waiting period will vary by use case. | -- length of the waiting period will vary by use case. | |||
certProfile OPTIONAL | certProfile OPTIONAL | |||
-- MAY be present in ir/cr/kur/p10cr and in genm messages of type | -- MAY be present in ir/cr/kur/p10cr and in genm messages of type | |||
-- id-it-certReqTemplate | -- id-it-certReqTemplate | |||
-- MUST be omitted in all other messages | -- MUST be omitted in all other messages | |||
-- See [RFCAAAA] | -- See [RFC9480]. | |||
CertProfileValue REQUIRED | CertProfileValue REQUIRED | |||
-- MUST contain a sequence of one UTF8String element | -- MUST contain a sequence of one UTF8String element | |||
-- MUST contain the name of a certificate profile | -- MUST contain the name of a certificate profile | |||
3.2. General Description of the CMP Message Protection | 3.2. General Description of the CMP Message Protection | |||
This section describes the generic protection field contents of all | This section describes the generic protection field contents of all | |||
CMP messages. For signature-based protection, which is the default | CMP messages. For signature-based protection, which is the default | |||
protection mechanism for all CMP messages described in this profile, | protection mechanism for all CMP messages described in this profile, | |||
the CMP protection key and CMP protection certificate are used. For | the CMP protection key and CMP protection certificate are used. For | |||
MAC-based protection shared secret information is used as described | MAC-based protection, shared secret information is used as described | |||
in Section 4.1.5. | in Section 4.1.5. | |||
protection | protection | |||
-- If present, the same kind of protection MUST be used for all | -- If present, the same kind of protection MUST be used for all | |||
-- messages of that PKI management operation. | -- messages of that PKI management operation. | |||
-- MUST be present, except if protection is not possible for | -- MUST be present, except if protection is not possible for | |||
-- error messages as described in Section 3.6.4. | -- error messages as described in Section 3.6.4 | |||
-- For signature-based protection MUST contain the signature | -- For signature-based protection, MUST contain the signature | |||
-- calculated using the CMP protection key of the entity | -- calculated using the CMP protection key of the entity | |||
-- protecting the message. | -- protecting the message | |||
-- For MAC-based protection MUST contain a MAC calculated using | -- For MAC-based protection, MUST contain a MAC calculated using | |||
-- the shared secret information. | -- the shared secret information | |||
-- The protection algorithm used MUST be given in the | -- The protection algorithm used MUST be given in the | |||
-- protectionAlg field. | -- protectionAlg field. | |||
The CMP message protection provides, if available, message origin | The CMP message protection provides, if available, message origin | |||
authentication and integrity protection for the header and body. The | authentication and integrity protection for the header and body. The | |||
CMP message extraCerts field is not covered by this protection. | CMP message extraCerts field is not covered by this protection. | |||
Note: The extended key usages described in CMP Updates Section 2.2 | Note: The extended key usages described in Section 2.2 of CMP Updates | |||
[I-D.ietf-lamps-cmp-updates] can be used for authorization of a | [RFC9480] can be used for authorization of a sending PKI management | |||
sending PKI management entity. | entity. | |||
3.3. General Description of CMP Message ExtraCerts | 3.3. General Description of CMP Message ExtraCerts | |||
This section describes the generic extraCerts field of all CMP | This section describes the generic extraCerts field of all CMP | |||
messages. Any specific requirements on the extraCerts are specified | messages. Any specific requirements on the extraCerts are specified | |||
in the respective PKI management operation. | in the respective PKI management operation. | |||
extraCerts | extraCerts | |||
-- MUST be present for signature-based protection and contain the | -- MUST be present for signature-based protection and contain the | |||
-- CMP protection certificate together with its chain for the | -- CMP protection certificate together with its chain for the | |||
-- first request and response message of a PKI management | -- first request and response message of a PKI management | |||
-- operation. MAY be omitted in certConf, PKIConf, pollReq, and | -- operation. MAY be omitted in certConf, PKIConf, pollReq, | |||
-- pollRep messages. The first certificate in this field MUST | -- and pollRep messages. The first certificate in this field | |||
-- be the CMP protection certificate followed by its chain | -- MUST be the CMP protection certificate followed by its | |||
-- where each element should directly certify the one | -- chain, where each element should directly certify the one | |||
-- immediately preceding it. | -- immediately preceding it. | |||
-- MUST be present in ip, cp, and kup messages and contain the | -- MUST be present in ip, cp, and kup messages and contain the | |||
-- chain of a newly issued certificate. | -- chain of a newly issued certificate. | |||
-- Self-signed certificates should be omitted from extraCerts and | -- Self-signed certificates should be omitted from extraCerts and | |||
-- MUST NOT be trusted based on their inclusion in any case | -- MUST NOT be trusted based on their inclusion in any case | |||
Note: One reason for adding a self-signed certificate to extraCerts | Note: One reason for adding a self-signed certificate to extraCerts | |||
is if it is the CMP protection certificate or a successor root CA | is if it is the CMP protection certificate or a successor root CA | |||
self-signed certificate as indicated in the HashOfRootKey extension | self-signed certificate as indicated in the HashOfRootKey extension | |||
of the current root CA certificate, see [RFC8649]. Another reason | of the current root CA certificate; see [RFC8649]. Another reason | |||
for including self-signed certificates in the extraCerts is, for | for including self-signed certificates in the extraCerts is, for | |||
instance due to storage limitations, a receiving PKI entity may not | instance, due to storage limitations. A receiving PKI entity may not | |||
have the complete trust anchor as self-signed certificate available | have the complete trust anchor information available but just a | |||
but just unique identification of it, and thus needs the full self- | unique identification of it and thus needs the full trust anchor | |||
signed certificate for further processing (see also Section 9). | information carried in a self-signed certificate for further | |||
processing (see Section 9). | ||||
For maximum interoperability, all implementations SHOULD be prepared | For maximum interoperability, all implementations SHOULD be prepared | |||
to handle potentially additional certificates and arbitrary orderings | to handle potentially additional certificates and arbitrary orderings | |||
of the certificates. | of the certificates. | |||
3.4. Generic PKI Management Operation Prerequisites | 3.4. Generic PKI Management Operation Prerequisites | |||
This subsection describes what is generally needed by the PKI | This subsection describes what is generally needed by the PKI | |||
entities to be able to perform PKI management operations. | entities to be able to perform PKI management operations. | |||
Identification of PKI entities: | Identification of PKI entities: | |||
* For signature-based protection each EE knows its own identity from | * For signature-based protection, each EE knows its own identity | |||
the CMP protection certificate and for MAC-based protection it MAY | from the CMP protection certificate; for MAC-based protection, it | |||
know its identity to fill the sender field. | MAY know its identity to fill the sender field. | |||
* Each EE MAY know the intended recipient of its requests to fill | * Each EE MAY know the intended recipient of its requests to fill | |||
the recipient field, e.g., the name of the addressed CA. | the recipient field, e.g., the name of the addressed CA. | |||
Note: This name may be established using an enrollment voucher, | Note: This name may be established using an enrollment voucher (as | |||
e.g., [RFC8366], the issuer field from a CertReqTemplate response | described in [RFC8366]), the issuer field from a CertReqTemplate | |||
message content, or by other configuration means. | response message content, or by other configuration means. | |||
Routing of CMP messages: | Routing of CMP messages: | |||
* Each PKI entity sending messages upstream MUST know the address | * Each PKI entity sending messages upstream MUST know the address | |||
needed for transferring messages to the next PKI management entity | needed for transferring messages to the next PKI management entity | |||
in case online-transfer is used. | in case online transfer is used. | |||
Note: This address may depend on the recipient, the certificate | Note: This address may depend on the recipient, the certificate | |||
profile, and on the used transfer mechanism. | profile, and the used transfer mechanism. | |||
Authentication of PKI entities: | Authentication of PKI entities: | |||
* Each PKI entity MUST have credentials to authenticate itself. For | * Each PKI entity MUST have credentials to authenticate itself. For | |||
signature-based protection it MUST have a private key and the | signature-based protection, it MUST have a private key and the | |||
corresponding certificate along with its chain. | corresponding certificate along with its chain. | |||
* Each PKI entity MUST be able to establish trust in PKI it receives | * Each PKI entity MUST be able to establish trust in the PKI it | |||
responses from. When signature-based protection is used, it MUST | receives responses from. When signature-based protection is used, | |||
have the trust anchor(s) and any certificate status information | it MUST have the trust anchor(s) and any certificate status | |||
needed to perform path validation of CMP protection certificates | information needed to perform path validation of CMP protection | |||
used for signature-based protection. | certificates used for signature-based protection. | |||
Note: A trust anchor usually is a root certificate of the PKI | Note: A trust anchor is usually a root certificate of the PKI | |||
addressed by the requesting EE. It may be established by | addressed by the requesting EE. It may be established by | |||
configuration or in an out-of-band manner. For an EE it may be | configuration or in an out-of-band manner. For an EE, it may be | |||
established using an enrollment voucher [RFC8366] or in-band of | established using an enrollment voucher [RFC8366] or in-band of | |||
CMP by the caPubs field in a certificate response message. | CMP by the caPubs field in a certificate response message. | |||
Authorization of PKI management operations: | Authorization of PKI management operations: | |||
* Each EE or RA MUST have sufficient information to be able to | * Each EE or RA MUST have sufficient information to be able to | |||
authorize the PKI management entity for performing the upstream | authorize the PKI management entity to perform the upstream PKI | |||
PKI management operation. | management operation. | |||
Note: This may be achieved for example by using the cmcRA extended | Note: This may be achieved, for example, by using the cmcRA | |||
key usage in server certificates, by local configuration such as | extended key usage in server certificates, by local configuration | |||
specific name patterns for subject DN or SAN portions that may | (such as specific name patterns for subject Distinguished Name | |||
identify an RA, and/or by having a dedicated root CA usable only | (DN) or Subject Alternative Name (SAN) portions that may identify | |||
for authenticating PKI management entities. | an RA) and/or by having a dedicated root CA usable only for | |||
authenticating PKI management entities. | ||||
* Each PKI management entity MUST have sufficient information to be | * Each PKI management entity MUST have sufficient information to be | |||
able to authorize the downstream PKI entity requesting the PKI | able to authorize the downstream PKI entity requesting the PKI | |||
management operation. | management operation. | |||
Note: For authorizing an RA the same examples apply as above. The | Note: For authorizing an RA, the same examples apply as above. | |||
authorization of EEs can be very specific to the application | The authorization of EEs can be very specific to the application | |||
domain based on local PKI policy. | domain based on local PKI policy. | |||
3.5. Generic Validation of a PKI Message | 3.5. Generic Validation of a PKI Message | |||
This section describes generic validation steps of each PKI entity | This section describes generic validation steps of each PKI entity | |||
receiving a PKI request or response message before any further | receiving a PKI request or response message before any further | |||
processing or forwarding. If a PKI management entity decides to | processing or forwarding. If a PKI management entity decides to | |||
terminate a PKI management operation because a check failed, it MUST | terminate a PKI management operation because a check failed, it MUST | |||
send a negative response or an error message as described in | send a negative response or an error message as described in | |||
Section 3.6. The PKIFailureInfo bits given below in parentheses MAY | Section 3.6. The PKIFailureInfo bits given below in parentheses MAY | |||
be used in the failInfo field of the PKIStatusInfo as described in | be used in the failInfo field of the PKIStatusInfo as described in | |||
Section 3.6.4, see also RFC 4210 Appendix F [RFC4210]. | Section 3.6.4; also see Appendix F of [RFC4210]. | |||
All PKI message header fields not mentioned in this section like the | All PKI message header fields not mentioned in this section, like the | |||
recipient and generalInfo fields SHOULD be handled gracefully on | recipient and generalInfo fields, SHOULD be handled gracefully upon | |||
reception. | receipt. | |||
The following list describes the basic set of message input | The following list describes the basic set of message input | |||
validation steps. Without these checks the protocol becomes | validation steps. Without these checks, the protocol becomes | |||
dysfunctional. | dysfunctional. | |||
* The formal ASN.1 syntax of the whole message MUST be compliant | * The formal ASN.1 syntax of the whole message MUST be compliant | |||
with the definitions given in CMP [RFC4210] and | with the definitions given in CMP [RFC4210] [RFC9480], CRMF | |||
[I-D.ietf-lamps-cmp-updates], CRMF [RFC4211], and CMS [RFC5652] | [RFC4211], and CMS [RFC5652] [RFC8933]. (failInfo: badDataFormat) | |||
and [RFC8933]. (failInfo: badDataFormat) | ||||
* The pvno MUST be cmp2000(2) or cmp2021(3). (failInfo bit: | * The pvno MUST be cmp2000(2) or cmp2021(3). (failInfo bit: | |||
unsupportedVersion) | unsupportedVersion) | |||
* The transactionID MUST be present. (failInfo bit: badDataFormat) | * The transactionID MUST be present. (failInfo bit: badDataFormat) | |||
* The PKI message body type MUST be one of the message types | * The PKI message body type MUST be one of the message types | |||
supported by the receiving PKI entity and MUST be allowed in the | supported by the receiving PKI entity and MUST be allowed in the | |||
current state of the PKI management operation identified by the | current state of the PKI management operation identified by the | |||
given transactionID. (failInfo bit: badRequest) | given transactionID. (failInfo bit: badRequest) | |||
skipping to change at page 22, line 17 ¶ | skipping to change at line 970 ¶ | |||
- the recipNonce MUST be present and MUST equal the senderNonce | - the recipNonce MUST be present and MUST equal the senderNonce | |||
of the previous message or equal the senderNonce of the most | of the previous message or equal the senderNonce of the most | |||
recent request message for which the response was delayed, in | recent request message for which the response was delayed, in | |||
case of delayed delivery as specified in Section 4.4. (failInfo | case of delayed delivery as specified in Section 4.4. (failInfo | |||
bit: badRecipientNonce) | bit: badRecipientNonce) | |||
* Messages without protection MUST be rejected except for error | * Messages without protection MUST be rejected except for error | |||
messages as described in Section 3.6.4. | messages as described in Section 3.6.4. | |||
* The message protection MUST be validated when present and messages | * The message protection MUST be validated when present, and | |||
with an invalid protection MUST be rejected. | messages with an invalid protection MUST be rejected. | |||
- The protection MUST be signature-based except if MAC-based | - The protection MUST be signature-based except if MAC-based | |||
protection is used as described in Section 4.1.5 and | protection is used as described in Sections 4.1.5 and 4.1.6.3. | |||
Section 4.1.6.3. (failInfo bit: wrongIntegrity) | (failInfo bit: wrongIntegrity) | |||
- If present, the senderKID MUST identify the key material needed | - If present, the senderKID MUST identify the key material needed | |||
for verifying the message protection. (failInfo bit: | for verifying the message protection. (failInfo bit: | |||
badMessageCheck) | badMessageCheck) | |||
- If signature-based protection is used, the CMP protection | - If signature-based protection is used, the CMP protection | |||
certificate MUST be successfully validated including path | certificate MUST be successfully validated, including path | |||
validation using a trust anchor and MUST be authorized | validation using a trust anchor, and MUST be authorized | |||
according to local policies. If the keyUsage extension is | according to local policies. If the keyUsage extension is | |||
present in the CMP protection certificate the digitalSignature | present in the CMP protection certificate, the digitalSignature | |||
bit MUST be set. (failInfo bit: badAlg, badMessageCheck, or | bit MUST be set. (failInfo bit: badAlg, badMessageCheck, or | |||
signerNotTrusted) | signerNotTrusted) | |||
- The sender of a request message MUST be authorized for | - The sender of a request message MUST be authorized to request | |||
requesting the operation according to PKI policies. (failInfo | the operation according to PKI policies. (failInfo bit: | |||
bit: notAuthorized) | notAuthorized) | |||
Note: The requirements for checking certificates given in RFC 5280 | Note: The requirements for checking certificates given in [RFC5280] | |||
[RFC5280] MUST be followed for signature-based CMP message | MUST be followed for signature-based CMP message protection. Unless | |||
protection. Unless the message is a positive ip/cp/kup where the | the message is a positive ip/cp/kup, where the issuing CA certificate | |||
issuing CA certificate of the newly enrolled certificate is the same | of the newly enrolled certificate is the same as the CMP protection | |||
as the CMP protection certificate of that message, certificate status | certificate of that message, certificate status checking SHOULD be | |||
checking SHOULD be performed on the CMP protection certificates. If | performed on the CMP protection certificates. If the response | |||
the response message contains the caPubs field to transfer new trust | message contains the caPubs field to transfer new trust anchor | |||
anchor information, the CMP protection is crucial and certificate | information, the CMP protection is crucial and certificate status | |||
status checking is REQUIRED. For other cases it MAY be acceptable to | checking is REQUIRED. For other cases, it MAY be acceptable to omit | |||
omit certificate status checking when respective information is not | certificate status checking when respective information is not | |||
available. | available. | |||
Depending on local policies, one or more of the input validation | Depending on local policies, one or more of the input validation | |||
checks described below need to be implemented: | checks described below need to be implemented: | |||
* If signature-based protection is used, the sender field MUST match | * If signature-based protection is used, the sender field MUST match | |||
the subject of the CMP protection certificate. (failInfo bit: | the subject of the CMP protection certificate. (failInfo bit: | |||
badMessageCheck) | badMessageCheck) | |||
* If the messageTime is present and | * If the messageTime is present and | |||
skipping to change at page 23, line 31 ¶ | skipping to change at line 1031 ¶ | |||
3.6. Error Handling | 3.6. Error Handling | |||
This section describes how a PKI entity handles error conditions on | This section describes how a PKI entity handles error conditions on | |||
messages it receives. Each error condition should be logged | messages it receives. Each error condition should be logged | |||
appropriately to allow root-cause analysis of failure cases. | appropriately to allow root-cause analysis of failure cases. | |||
3.6.1. Reporting Error Conditions Upstream | 3.6.1. Reporting Error Conditions Upstream | |||
An EE SHALL NOT send error messages. PKI management entities SHALL | An EE SHALL NOT send error messages. PKI management entities SHALL | |||
NOT send error messages in the upstream direction, either. | NOT send error messages in the upstream direction either. | |||
In case an EE rejects a newly issued certificate contained in an ip, | In case an EE rejects a newly issued certificate contained in an ip, | |||
cp, or kup message and implicit confirmation has not been granted, | cp, or kup message and implicit confirmation has not been granted, | |||
the EE MUST report this using a certConf message with "rejection" | the EE MUST report this using a certConf message with "rejection" | |||
status and await the pkiConf response as described in Section 4.1.1. | status and await the pkiConf response as described in Section 4.1.1. | |||
On all other error conditions regarding response messages, the EE or | On all other error conditions regarding response messages, the EE or | |||
PKI management entity MUST regard the current PKI management | PKI management entity MUST regard the current PKI management | |||
operation as terminated with failure. The error conditions include | operation as terminated with failure. The error conditions include: | |||
* invalid response message header, body type, protection, or | * invalid response message header, body type, protection, or | |||
extraCerts according to the checks described in Section 3.5, | extraCerts, according to the checks described in Section 3.5, | |||
* any issue detected with response message contents, | * any issue detected with response message contents, | |||
* receipt of an error message from upstream, | * receipt of an error message from upstream, | |||
* timeout occurred while waiting for a response, | * timeout occurred while waiting for a response, and | |||
* rejection of a newly issued certificate while implicit | * rejection of a newly issued certificate while implicit | |||
confirmation has been granted. | confirmation has been granted. | |||
Upstream PKI management entities will not receive any CMP message to | Upstream PKI management entities will not receive any CMP message to | |||
learn that the PKI management operation has been terminated. In case | learn that the PKI management operation has been terminated. In case | |||
they expect a further message from the EE, a connection interruption | they expect a further message from the EE, a connection interruption | |||
or timeout will occur. The value set for such timeouts will vary by | or timeout will occur. The value set for such timeouts will vary by | |||
use case. Then they also MUST regard the current PKI management | use case. Then they MUST also regard the current PKI management | |||
operation as terminated with failure and MUST NOT attempt to send an | operation as terminated with failure and MUST NOT attempt to send an | |||
error message downstream. | error message downstream. | |||
3.6.2. Reporting Error Conditions Downstream | 3.6.2. Reporting Error Conditions Downstream | |||
In case the PKI management entity detects an error condition, e.g., | In case the PKI management entity detects an error condition, e.g., | |||
rejecting the request due to policy decision, in the body of an ir, | rejecting the request due to policy decision, in the body of an ir, | |||
cr, p10cr, kur, or rr message received from downstream, it MUST | cr, p10cr, kur, or rr message received from downstream, it MUST | |||
report the error in the specific response message, i.e., an ip, cp, | report the error in the specific response message, i.e., an ip, cp, | |||
kup, or rp with "rejection" status, as described in Section 4.1.1 and | kup, or rp with "rejection" status, as described in Sections 4.1.1 | |||
Section 4.2. This can also happen in case of polling. | and 4.2. This can also happen in case of polling. | |||
In case the PKI management entity detects any other error condition | In case the PKI management entity detects any other error condition | |||
on requests, including pollReq, certConf, genm, and nested messages, | on requests (including pollReq, certConf, genm, and nested messages) | |||
received from downstream and on responses received from upstream, | received from downstream and on responses received from upstream | |||
such as invalid message header, body type, protection, or extraCerts | (such as invalid message header, body type, protection, or | |||
according to the checks described in Section 3.5 it MUST report them | extraCerts, according to the checks described in Section 3.5), it | |||
downstream in the form of an error message as described in | MUST report them downstream in the form of an error message as | |||
Section 3.6.4. | described in Section 3.6.4. | |||
3.6.3. Handling Error Conditions on Nested Messages Used for Batching | 3.6.3. Handling Error Conditions on Nested Messages Used for Batching | |||
Batching of messages using nested messages as described in | Batching of messages using nested messages as described in | |||
Section 5.2.2.2 requires special error handling. | Section 5.2.2.2 requires special error handling. | |||
If the error condition is on an upstream nested message containing | If the error condition is on an upstream nested message containing | |||
batched requests, it MUST NOT attempt to respond to the individual | batched requests, it MUST NOT attempt to respond to the individual | |||
requests included in it, but to the nested message itself. | requests included in it but to the nested message itself. | |||
In case a PKI management entity receives an error message in response | In case a PKI management entity receives an error message in response | |||
to a nested message, it must propagate the error by responding with | to a nested message, it must propagate the error by responding with | |||
an error message to each of the request messages contained in the | an error message to each of the request messages contained in the | |||
nested message. | nested message. | |||
In case a PKI management entity detects an error condition on the | In case a PKI management entity detects an error condition on the | |||
downstream nested message received in response to a nested message | downstream nested message received in response to a nested message | |||
sent before and the body of the received nested message still parses, | sent before and the body of the received nested message still parses, | |||
it MAY ignore this error condition and handle the included responses | it MAY ignore this error condition and handle the included responses | |||
as described in Section 5.2.2.2. Otherwise, it MUST propagate the | as described in Section 5.2.2.2. Otherwise, it MUST propagate the | |||
error by responding with an error message to each of the requests | error by responding with an error message to each of the requests | |||
contained in the nested message it sent originally. | contained in the nested message it sent originally. | |||
3.6.4. PKIStatusInfo and Error Messages | 3.6.4. PKIStatusInfo and Error Messages | |||
When sending any kind of negative response, including error messages, | When sending any kind of negative response, including error messages, | |||
a PKI entity MUST indicate the error condition in the PKIStatusInfo | a PKI entity MUST indicate the error condition in the PKIStatusInfo | |||
structure of the respective message as described below. It then MUST | structure of the respective message as described below. Then it MUST | |||
regard the current PKI management operation as terminated with | regard the current PKI management operation as terminated with | |||
failure. | failure. | |||
The PKIStatusInfo structure is used to report errors. It may be part | The PKIStatusInfo structure is used to report errors. It may be part | |||
of various message types, in particular: ip, cp, kup, certConf, and | of various message types, in particular, ip, cp, kup, certConf, and | |||
error. The PKIStatusInfo structure consists of the following fields: | error. The PKIStatusInfo structure consists of the following fields: | |||
* status: Here the PKIStatus value "rejection" MUST be used in case | status: Here, the PKIStatus value "rejection" MUST be used in case | |||
an error was detected. When a PKI management entity indicates | an error was detected. When a PKI management entity indicates | |||
delayed delivery of a CMP response message to the EE with an error | delayed delivery of a CMP response message to the EE with an error | |||
message as described in Section 4.4, the status "waiting" MUST be | message as described in Section 4.4, the status "waiting" MUST be | |||
used there. | used there. | |||
* statusString: Here any human-readable valid value for logging or | statusString: Here, any human-readable valid value for logging or to | |||
to display via a user interface should be added. | display via a user interface should be added. | |||
* failInfo: Here the PKIFailureInfo bits MAY be used in the way | failInfo: Here, the PKIFailureInfo bits MAY be used in the way | |||
explained in Appendix F of RFC 4210 [RFC4210]. PKIFailureInfo | explained in Appendix F of [RFC4210]. PKIFailureInfo bits | |||
bits regarding the validation described in Section 3.5 are | regarding the validation described in Section 3.5 are referenced | |||
referenced there. The PKIFailureInfo bits referenced in Sections | there. The PKIFailureInfo bits referenced in Sections 5.1 and 6 | |||
5.1 and 6 are described here: | are described here: | |||
- badCertId: A kur, certConf, or rr message references an unknown | badCertId: A kur, certConf, or rr message references an unknown | |||
certificate | certificate. | |||
- badPOP: An ir/cr/kur/p10cr contains an invalid proof-of- | badPOP: An ir/cr/kur/p10cr contains an invalid proof-of- | |||
possession | possession. | |||
- certRevoked: Revocation requested for a certificate already | certRevoked: Revocation is requested for a certificate that is | |||
revoked | already revoked. | |||
- badCertTemplate: The contents of a certificate request are not | badCertTemplate: The contents of a certificate request are not | |||
accepted, e.g., a field is missing or has a non-acceptable | accepted, e.g., a field is missing or has an unacceptable value | |||
value or the given public key is already in use in some other | or the given public key is already in use in some other | |||
certificate (depending on policy). | certificate (depending on policy). | |||
- transactionIdInUse: This is sent by a PKI management entity in | transactionIdInUse: This is sent by a PKI management entity in | |||
case the received request contains a transactionID that is | case the received request contains a transactionID that is | |||
currently in use for another transaction. An EE receiving such | currently in use for another transaction. An EE receiving such | |||
error message should resend the request in a new transaction | an error message should resend the request in a new transaction | |||
using a different transactionID. | using a different transactionID. | |||
- notAuthorized: The sender of a request message is not | notAuthorized: The sender of a request message is not authorized | |||
authorized for requesting the operation. | for requesting the operation. | |||
- systemUnavail: This is sent by a PKI management entity in case | systemUnavail: This is sent by a PKI management entity in case a | |||
a back-end system is not available. | back-end system is not available. | |||
- systemFailure: This is sent by a PKI management entity in case | systemFailure: This is sent by a PKI management entity in case a | |||
a back-end system is currently not functioning correctly. | back-end system is currently not functioning correctly. | |||
An EE receiving a systemUnavail or systemFailure failInfo should | An EE receiving a systemUnavail or systemFailure failInfo should | |||
resend the request in a new transaction after some time. | resend the request in a new transaction after some time. | |||
Detailed Message Description: | Detailed Message Description: | |||
Error Message -- error | Error Message -- error | |||
Field Value | Field Value | |||
skipping to change at page 26, line 34 ¶ | skipping to change at line 1177 ¶ | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- The message indicating the error that occurred | -- The message indicating the error that occurred | |||
error REQUIRED | error REQUIRED | |||
pKIStatusInfo REQUIRED | pKIStatusInfo REQUIRED | |||
status REQUIRED | status REQUIRED | |||
-- MUST have the value "rejection" | -- MUST have the value "rejection" | |||
statusString OPTIONAL | statusString OPTIONAL | |||
-- This field should contain any human-readable text for | -- This field should contain any human-readable text for | |||
-- debugging, logging or to display in a GUI | -- debugging, for logging, or to display in a GUI | |||
failInfo OPTIONAL | failInfo OPTIONAL | |||
-- MAY be present and contain the relevant PKIFailureInfo bits | -- MAY be present and contain the relevant PKIFailureInfo bits | |||
protection RECOMMENDED | protection RECOMMENDED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts RECOMMENDED | extraCerts RECOMMENDED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
Protecting the error message may not be technically feasible if it is | Protecting the error message may not be technically feasible if it is | |||
not clear which credential the recipient will be able to use when | not clear which credential the recipient will be able to use when | |||
validating this protection, e.g., in case the request message was | validating this protection, e.g., in case the request message was | |||
fundamentally broken. In these exceptional cases the protection of | fundamentally broken. In these exceptional cases, the protection of | |||
the error message MAY be omitted. | the error message MAY be omitted. | |||
4. PKI Management Operations | 4. PKI Management Operations | |||
This chapter focuses on the communication of an EE with the PKI | This section focuses on the communication of an EE with the PKI | |||
management entity it directly talks to. Depending on the network and | management entity it directly talks to. Depending on the network and | |||
PKI solution, this can be an RA or directly a CA. Handling of a | PKI solution, this can be an RA or directly a CA. Handling of a | |||
message by a PKI management entity is described in Section 5. | message by a PKI management entity is described in Section 5. | |||
The PKI management operations specified in this section cover the | The PKI management operations specified in this section cover the | |||
following: | following: | |||
* Requesting a certificate with variations like initial enrollment, | * requesting a certificate with variations like initial enrollment, | |||
certificate updates, central key generation, and MAC-based | certificate updates, central key generation, and MAC-based | |||
protection | protection | |||
* Revoking a certificate | * revoking a certificate | |||
* Support messages | * support messages | |||
* Polling for delayed response messages | * polling for delayed response messages | |||
These operations mainly specify the message body of the CMP messages | These operations mainly specify the message body of the CMP messages | |||
and utilize the specification of the message header, protection and | and utilize the specification of the message header, protection, and | |||
extraCerts as specified in Section 3. The messages are named by the | extraCerts, as specified in Section 3. The messages are named by the | |||
respective field names in PKIBody like ir, ip, cr, cp, etc., see | respective field names in PKIBody, like ir, ip, cr, cp, etc.; see | |||
RFC 4210 Section 5.1.2 [RFC4210]. | Section 5.1.2 of [RFC4210]. | |||
The following diagram shows the EE state machine covering all PKI | The following diagram shows the EE state machine covering all PKI | |||
management operations described in this section, including negative | management operations described in this section, including negative | |||
responses, error messages described in Section 3.6.4, as well as | responses, error messages described in Section 3.6.4, ip/cp/kup/error | |||
ip/cp/kup/error messages with status "waiting", pollReq, and pollRep | messages with status "waiting", and pollReq and pollRep messages as | |||
messages as described in Section 4.4. | described in Section 4.4. | |||
On receiving messages from upstream, the EE MUST perform the general | On receiving messages from upstream, the EE MUST perform the general | |||
validation checks described in Section 3.5. The behavior in case an | validation checks described in Section 3.5. In case an error occurs, | |||
error occurs is described in Section 3.6. | the behavior is described in Section 3.6. | |||
End Entity State Machine: | End Entity State Machine: | |||
start | start | |||
| | | | |||
| send ir/cr/kur/p10cr/rr/genm | | send ir/cr/kur/p10cr/rr/genm | |||
v | v | |||
waiting for response | waiting for response | |||
v | v | |||
+--------------------------+--------------------------+ | +--------------------------+--------------------------+ | |||
| | | | | | | | |||
| receives ip/cp/kup with | received ip/cp/kup/error | received | | receives ip/cp/kup with | received ip/cp/kup/error | received | |||
| status "accepted" or | with status "waiting" | rp/genp or | | status "accepted" or | with status "waiting" | rp/genp or | |||
skipping to change at page 28, line 49 ¶ | skipping to change at line 1274 ¶ | |||
| v | | | | v | | | |||
| waiting for pkiConf*) | | | | waiting for pkiConf*) | | | |||
| | | | | | | | | | |||
| | received | | | | | received | | | |||
| v pkiConf v | | | v pkiConf v | | |||
+---------------->+------->+<-------+<----------------+ | +---------------->+------->+<-------+<----------------+ | |||
| | | | |||
v | v | |||
end | end | |||
*) In case of a delayed delivery of pkiConf responses the same | *) In case of a delayed delivery of pkiConf responses, the same | |||
polling mechanism is initiated as for rp or genp messages, by | polling mechanism is initiated as for rp or genp messages by | |||
sending an error message with status "waiting". | sending an error message with status "waiting". | |||
Note: All CMP messages belonging to the same PKI management operation | Note: All CMP messages belonging to the same PKI management operation | |||
MUST have the same transactionID because the message receiver | MUST have the same transactionID because the message receiver | |||
identifies the elements of the operation in this way. | identifies the elements of the operation in this way. | |||
This section is aligned with CMP [RFC4210], CMP Updates | This section is aligned with CMP [RFC4210], CMP Updates [RFC9480], | |||
[I-D.ietf-lamps-cmp-updates], and CMP Algorithms | and CMP Algorithms [RFC9481]. | |||
[I-D.ietf-lamps-cmp-algorithms]. | ||||
Guidelines as well as an algorithm use profile for this document are | Guidelines as well as an algorithm use profile for this document are | |||
available in CMP Algorithms [I-D.ietf-lamps-cmp-algorithms]. | available in CMP Algorithms [RFC9481]. | |||
4.1. Enrolling End Entities | 4.1. Enrolling End Entities | |||
There are various approaches for requesting a certificate from a PKI. | There are various approaches for requesting a certificate from a PKI. | |||
These approaches differ in the way the EE authenticates itself to the | These approaches differ in the way the EE authenticates itself to the | |||
PKI, in the form of the request being used, and how the key pair to | PKI, in the form of the request being used, and how the key pair to | |||
be certified is generated. The authentication mechanisms may be as | be certified is generated. The authentication mechanisms may be as | |||
follows: | follows: | |||
* Using a certificate from an external PKI, e.g., a manufacturer- | * using a certificate from an external PKI, e.g., a manufacturer- | |||
issued device certificate, and the corresponding private key | issued device certificate, and the corresponding private key | |||
* Using a private key and certificate issued from the same PKI that | * using a private key and certificate issued from the same PKI that | |||
is addressed for requesting a certificate | is addressed for requesting a certificate | |||
* Using the certificate to be updated and the corresponding private | * using the certificate to be updated and the corresponding private | |||
key | key | |||
* Using shared secret information known to the EE and the PKI | * using shared secret information known to the EE and the PKI | |||
management entity | management entity | |||
An EE requests a certificate indirectly or directly from a CA. When | An EE requests a certificate indirectly or directly from a CA. When | |||
the PKI management entity handles the request as described in | the PKI management entity handles the request as described in | |||
Section 5.1.1 and responds with a message containing the requested | Section 5.1.1 and responds with a message containing the requested | |||
certificate, the EE MUST reply with a confirmation message unless | certificate, the EE MUST reply with a confirmation message unless | |||
implicitConfirm was granted. The PKI management entity then MUST | implicitConfirm was granted. The PKI management entity MUST then | |||
handle it as described in Section 5.1.2 and respond with a | handle it as described in Section 5.1.2 and respond with a | |||
confirmation, closing the PKI management operation. | confirmation, closing the PKI management operation. | |||
The message sequences described in this section allow the EE to | The message sequences described in this section allow the EE to | |||
request certification of a locally or centrally generated public- | request certification of a locally or centrally generated public- | |||
private key pair. Typically, the EE provides a signature-based | private key pair. The public key and the subject name identifying | |||
proof-of-possession of the private key associated with the public key | the EE MUST be present in the certTemplate of the certificate request | |||
contained in the certificate request as defined by RFC 4211 | message. | |||
Section 4.1 [RFC4211] case 3. To this end it is assumed that the | ||||
private key can technically be used for signing. This is the case | ||||
for the most common algorithms RSA, ECDSA, and EdDSA regardless of | ||||
potentially intended restrictions of the key usage. | ||||
Note: RFC 4211 Section 4 [RFC4211] allows for providing proof-of- | Note: If the EE does not know for which subject name to request the | |||
possession using any method that a key can be used for. In | certificate, it can use the subject name from the CMP protection | |||
conformance with NIST SP 800-57 Part 1 Section 8.1.5.1.1.2 | certificate in case of signature-based protection or the identifier | |||
[NIST.SP.800-57p1r5] the newly generated private key may be used for | of the shared secret in case of MAC-based protection. | |||
self-signature, if technically possible, even if the keyUsage | ||||
extension requested in the certificate request prohibits generation | Typically, the EE provides a signature-based proof-of-possession of | |||
of digital signatures. | the private key associated with the public key contained in the | |||
certificate request, as defined by [RFC4211], Section 4.1, clause 3. | ||||
To this end, it is assumed that the private key can technically be | ||||
used for signing. This is the case for the most common algorithms | ||||
RSA, ECDSA, and EdDSA, regardless of potentially intended | ||||
restrictions of the key usage. | ||||
Note: Section 4 of [RFC4211] allows for providing proof-of-possession | ||||
using any method that a key can be used for. In conformance with | ||||
Section 8.1.5.1.1.2 of [NIST.SP.800-57p1r5], the newly generated | ||||
private key may be used for self-signature, if technically possible, | ||||
even if the keyUsage extension requested in the certificate request | ||||
prohibits generation of digital signatures. | ||||
The requesting EE provides the binding of the proof-of-possession to | The requesting EE provides the binding of the proof-of-possession to | |||
its identity by signature-based or MAC-based protection of the CMP | its identity by signature-based or MAC-based protection of the CMP | |||
request message containing that POP. An upstream PKI management | request message containing that POP. An upstream PKI management | |||
entity should verify whether this EE is authorized to obtain a | entity should verify whether this EE is authorized to obtain a | |||
certificate with the requested subject and other fields and | certificate with the requested subject and other fields and | |||
extensions. | extensions. | |||
The proof-of-possession is provided by signing the certReq containing | ||||
the certTemplate with the subject name and public key. To bind this | ||||
proof-of-possession to the proof-of-identity of the requesting EE, | ||||
the subject name in the certTemplate needs to identify the same | ||||
entity as the subject name in the CMP protection certificate or match | ||||
the identifier used with MAC-based protection. | ||||
Note: This binding may be lost if a PKI management entity reprotects | ||||
this request message. | ||||
The EE MAY indicate the certificate profile to use in the certProfile | The EE MAY indicate the certificate profile to use in the certProfile | |||
extension of the generalInfo field in the PKIHeader of the | extension of the generalInfo field in the PKIHeader of the | |||
certificate request message as described in Section 3.1. | certificate request message as described in Section 3.1. | |||
In case the EE receives a CA certificate in the caPubs field for | In case the EE receives a CA certificate in the caPubs field for | |||
installation as a new trust anchor, it MUST properly authenticate the | installation as a new trust anchor, it MUST properly authenticate the | |||
message and authorize the sender as trusted source of the new trust | message and authorize the sender as a trusted source of the new trust | |||
anchor. This authorization is typically indicated using shared | anchor. This authorization is typically indicated using shared | |||
secret information for protecting an initialization response (ir) | secret information for protecting an Initialization Response (ip) | |||
message. Authorization can also be signature-based using a | message. Authorization can also be signature-based, using a | |||
certificate issued by another PKI that is explicitly authorized for | certificate issued by another PKI that is explicitly authorized for | |||
this purpose. A certificate received in caPubs MUST NOT be accepted | this purpose. A certificate received in caPubs MUST NOT be accepted | |||
as a trust anchor if it is the root CA certificate of the certificate | as a trust anchor if it is the root CA certificate of the certificate | |||
used for protecting the message. | used for protecting the message. | |||
4.1.1. Enrolling an End Entity to a New PKI | 4.1.1. Enrolling an End Entity to a New PKI | |||
This PKI management operation should be used by an EE to request a | This PKI management operation should be used by an EE to request a | |||
certificate from a new PKI using an existing certificate from an | certificate from a new PKI using an existing certificate from an | |||
external PKI, e.g., a manufacturer-issued IDevID certificate | external PKI, e.g., a manufacturer-issued IDevID certificate | |||
[IEEE.802.1AR_2018], to authenticate itself to the new PKI. | [IEEE.802.1AR_2018], to authenticate itself to the new PKI. | |||
Note: In Bootstrapping Remote Secure Key Infrastructure (BRSKI) | Note: In Bootstrapping Remote Secure Key Infrastructure (BRSKI) | |||
[RFC8995] environments, BRSKI-AE: Alternative Enrollment Protocols in | [RFC8995] environments, "BRSKI-AE: Alternative Enrollment Protocols | |||
BRSKI [I-D.ietf-anima-brski-ae] describes a generalization regarding | in BRSKI" [BRSKI-AE] describes a generalization regarding enrollment | |||
enrollment protocols alternative to EST [RFC7030]. As replacement of | protocols alternative to EST [RFC7030]. As replacement of EST | |||
EST simpleenroll, BRSKI-AE uses this PKI management operation for | simpleenroll, BRSKI-AE uses this PKI management operation for | |||
bootstrapping LDevID certificates. | bootstrapping LDevID certificates. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | Specific prerequisites augmenting the prerequisites in Section 3.4 | |||
are as follows: | ||||
* The certificate of the EE MUST have been enrolled by an external | * The certificate of the EE MUST have been enrolled by an external | |||
PKI, e.g., a manufacturer-issued device certificate. | PKI, e.g., a manufacturer-issued device certificate. | |||
* The PKI management entity MUST have the trust anchor of the | * The PKI management entity MUST have the trust anchor of the | |||
external PKI. | external PKI. | |||
* When using the generalInfo field certProfile, the EE MUST know the | * When using the generalInfo field certProfile, the EE MUST know the | |||
identifier needed to indicate the requested certificate profile. | identifier needed to indicate the requested certificate profile. | |||
skipping to change at page 31, line 52 ¶ | skipping to change at line 1430 ¶ | |||
11 format or receive pkiConf | 11 format or receive pkiConf | |||
12 <- pkiConf <- | 12 <- pkiConf <- | |||
13 handle pkiConf | 13 handle pkiConf | |||
For this PKI management operation, the EE MUST include a sequence of | For this PKI management operation, the EE MUST include a sequence of | |||
one CertReqMsg in the ir. If more certificates are required, further | one CertReqMsg in the ir. If more certificates are required, further | |||
requests MUST be sent using separate PKI management operations. | requests MUST be sent using separate PKI management operations. | |||
The EE MUST include the generalInfo field implicitConfirm in the | The EE MUST include the generalInfo field implicitConfirm in the | |||
header of the ir message as described in Section 3.1, unless it | header of the ir message as described in Section 3.1, unless it | |||
requires certificate confirmation. This leaves the choice to the PKI | requires certificate confirmation. This leaves the PKI management | |||
management entities whether the EE must send a certConf message on | entities the choice of whether or not the EE must send a certConf | |||
receiving a new certificate. Depending on the PKI policy and | message upon receiving a new certificate. Depending on the PKI | |||
requirements for managing EE certificates, it can be important for | policy and requirements for managing EE certificates, it can be | |||
PKI management entities to learn if the EE accepted the new | important for PKI management entities to learn if the EE accepted the | |||
certificate. In such cases, when responding with an ip message, the | new certificate. In such cases, when responding with an ip message, | |||
PKI management entity MUST NOT include the implicitConfirm extension. | the PKI management entity MUST NOT include the implicitConfirm | |||
In case the EE included the generalInfo field implicitConfirm in the | extension. In case the EE included the generalInfo field | |||
request message and the PKI management entity does not need any | implicitConfirm in the request message and the PKI management entity | |||
explicit confirmation from the EE, the PKI management entity MUST | does not need any explicit confirmation from the EE, the PKI | |||
include the generalInfo field implicitConfirm in the response | management entity MUST include the generalInfo field implicitConfirm | |||
message. This prevents explicit certificate confirmation and saves | in the response message. This prevents explicit certificate | |||
the overhead of a further message round-trip. Otherwise, the PKI | confirmation and saves the overhead of a further message round trip. | |||
management entity SHOULD include confirmWaitTime as described in | Otherwise, the PKI management entity SHOULD include confirmWaitTime | |||
Section 3.1. | as described in Section 3.1. | |||
If the EE did not request implicit confirmation or implicit | If the EE did not request implicit confirmation or implicit | |||
confirmation was not granted by the PKI management entity, | confirmation was not granted by the PKI management entity, | |||
certificate confirmation MUST be performed as follows. If the EE | certificate confirmation MUST be performed as follows. If the EE | |||
successfully received the certificate, it MUST send a certConf | successfully received the certificate, it MUST send a certConf | |||
message in due time. On receiving a valid certConf message, the PKI | message in due time. On receiving a valid certConf message, the PKI | |||
management entity MUST respond with a pkiConf message. If the PKI | management entity MUST respond with a pkiConf message. If the PKI | |||
management entity does not receive the expected certConf message in | management entity does not receive the expected certConf message in | |||
time it MUST handle this like a rejection by the EE. In case of | time, it MUST handle this like a rejection by the EE. In case of | |||
rejection, depending on its policy the PKI management entity MAY | rejection, depending on its policy, the PKI management entity MAY | |||
revoke the newly issued certificate, notify a monitoring system, or | revoke the newly issued certificate, notify a monitoring system, or | |||
log the event internally. | log the event internally. | |||
Note: Depending on PKI policy, a new certificate may be published by | Note: Depending on PKI policy, a new certificate may be published by | |||
a PKI management entity, and explicit confirmation may be required. | a PKI management entity, and explicit confirmation may be required. | |||
In this case it is advisable not to do the publication until a | In this case, it is advisable not to do the publication until a | |||
positive certificate confirmation has been received. This way the | positive certificate confirmation has been received. This way, the | |||
need to revoke the certificate on negative confirmation can be | need to revoke the certificate on negative confirmation can be | |||
avoided. | avoided. | |||
If the certificate request was rejected by the CA, the PKI management | If the certificate request was rejected by the CA, the PKI management | |||
entity MUST return an ip message containing the status code | entity MUST return an ip message containing the status code | |||
"rejection" as described in Section 3.6 and the certifiedKeyPair | "rejection" as described in Section 3.6, and the certifiedKeyPair | |||
field SHALL be omitted. The EE MUST NOT react to such an ip message | field SHALL be omitted. The EE MUST NOT react to such an ip message | |||
with a certConf message and the PKI management operation MUST be | with a certConf message, and the PKI management operation MUST be | |||
terminated. | terminated. | |||
Detailed Message Description: | Detailed Message Description: | |||
Initialization Request -- ir | Initialization Request -- ir | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
skipping to change at page 33, line 25 ¶ | skipping to change at line 1494 ¶ | |||
-- MUST contain a sequence of one CertReqMsg | -- MUST contain a sequence of one CertReqMsg | |||
-- If more certificates are required, further PKI management | -- If more certificates are required, further PKI management | |||
-- operations needs to be initiated | -- operations needs to be initiated | |||
certReq REQUIRED | certReq REQUIRED | |||
certReqId REQUIRED | certReqId REQUIRED | |||
-- MUST be 0 | -- MUST be 0 | |||
certTemplate REQUIRED | certTemplate REQUIRED | |||
version OPTIONAL | version OPTIONAL | |||
-- MUST be 2 if supplied | -- MUST be 2 if supplied | |||
subject REQUIRED | subject REQUIRED | |||
-- The EE subject name MUST be carried in the subject field | -- The EE's identity MUST be carried in the subject field | |||
-- and/or the subjectAltName extension. | -- and/or the subjectAltName extension. | |||
-- If subject name is present only in the subjectAltName | -- If subject name is present only in the subjectAltName | |||
-- extension, then the subject field MUST be a NULL-DN | -- extension, then the subject field MUST be NULL-DN | |||
publicKey OPTIONAL | publicKey OPTIONAL | |||
-- MUST be present if local key generation is used | -- MUST be present if local key generation is used | |||
-- MAY be absent if central key generation is requested | -- MAY be absent if central key generation is requested | |||
algorithm OPTIONAL | algorithm OPTIONAL | |||
-- MUST be present if local key generation is used and MUST | -- MUST be present if local key generation is used and MUST | |||
-- include the subject public key algorithm identifier | -- include the subject public key algorithm identifier | |||
-- MAY be present if central key generation is requested and | -- MAY be present if central key generation is requested and, | |||
-- if present, informs the KGA of algorithm and parameter | -- if present, informs the KGA of algorithm and parameter | |||
-- preferences regarding the to-be-generated key pair | -- preferences regarding the to-be-generated key pair | |||
subjectPublicKey REQUIRED | subjectPublicKey REQUIRED | |||
-- MUST contain the public key to be certified in case of local | -- MUST contain the public key to be certified in case of local | |||
-- key generation | -- key generation | |||
-- MUST be a zero-length BIT STRING if central key generation | -- MUST be a zero-length BIT STRING if central key generation | |||
-- is requested | -- is requested | |||
extensions OPTIONAL | extensions OPTIONAL | |||
-- MAY include end-entity-specific X.509 extensions of the | -- MAY include end-entity-specific X.509 extensions of the | |||
-- requested certificate like subject alternative name, key | -- requested certificate, like subject alternative name, key | |||
-- usage, and extended key usage | -- usage, and extended key usage | |||
-- The subjectAltName extension MUST be present if the EE subject | -- The subjectAltName extension MUST be present if the EE subject | |||
-- name includes a subject alternative name. | -- name includes a subject alternative name. | |||
popo OPTIONAL | popo OPTIONAL | |||
-- MUST be present if local key generation is used | -- MUST be present if local key generation is used | |||
-- MUST be absent if central key generation is requested | -- MUST be absent if central key generation is requested | |||
signature OPTIONAL | signature OPTIONAL | |||
-- MUST be used by an EE if the key can be used for signing, and | ||||
-- MUST be used by an EE if the key can be used for signing and | -- if used, it MUST have the type POPOSigningKey | |||
-- if used it MUST have the type POPOSigningKey | ||||
poposkInput PROHIBITED | poposkInput PROHIBITED | |||
-- MUST NOT be used; it is not needed because subject and | -- MUST NOT be used; it is not needed because subject and | |||
-- publicKey are both present in the certTemplate | -- publicKey are both present in the certTemplate | |||
algorithmIdentifier REQUIRED | algorithmIdentifier REQUIRED | |||
-- The signature algorithm MUST be consistent with the publicKey | -- The signature algorithm MUST be consistent with the publicKey | |||
-- algorithm field of the certTemplate | -- algorithm field of the certTemplate | |||
signature REQUIRED | signature REQUIRED | |||
-- MUST contain the signature value computed over the DER-encoded | -- MUST contain the signature value computed over the DER-encoded | |||
-- certTemplate | -- certReq | |||
raVerified OPTIONAL | raVerified OPTIONAL | |||
-- MAY be used by an RA after verifying the proof-of-possession | -- MAY be used by an RA after verifying the proof-of-possession | |||
-- provided by the EE | -- provided by the EE | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
skipping to change at page 34, line 38 ¶ | skipping to change at line 1555 ¶ | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- The response of the CA to the request as appropriate | -- The response of the CA to the request as appropriate | |||
ip REQUIRED | ip REQUIRED | |||
caPubs OPTIONAL | caPubs OPTIONAL | |||
-- MAY be used if the certifiedKeyPair field is present | -- MAY be used if the certifiedKeyPair field is present | |||
-- If used it MUST contain only a trust anchor, e.g., root | -- If used, it MUST contain only a trust anchor, e.g., root | |||
-- certificate, of the certificate contained in certOrEncCert | -- certificate, of the certificate contained in certOrEncCert | |||
response REQUIRED | response REQUIRED | |||
-- MUST contain a sequence of one CertResponse | -- MUST contain a sequence of one CertResponse | |||
certReqId REQUIRED | certReqId REQUIRED | |||
-- MUST be 0 | -- MUST be 0 | |||
status REQUIRED | status REQUIRED | |||
-- PKIStatusInfo structure MUST be present | -- PKIStatusInfo structure MUST be present | |||
status REQUIRED | status REQUIRED | |||
-- positive values allowed: "accepted", "grantedWithMods" | -- positive values allowed: "accepted", "grantedWithMods" | |||
-- negative values allowed: "rejection" | -- negative values allowed: "rejection" | |||
-- "waiting" only allowed with polling use case as described in | -- "waiting" only allowed with a polling use case as described | |||
-- Section 4.4 | -- in Section 4.4 | |||
statusString OPTIONAL | statusString OPTIONAL | |||
-- MAY be any human-readable text for debugging, for logging, or | ||||
-- MAY be any human-readable text for debugging, logging or to | -- to display in a GUI | |||
-- display in a GUI | ||||
failInfo OPTIONAL | failInfo OPTIONAL | |||
-- MAY be present if status is "rejection" | -- MAY be present if status is "rejection" | |||
-- MUST be absent if status is "accepted" or "grantedWithMods" | -- MUST be absent if status is "accepted" or "grantedWithMods" | |||
certifiedKeyPair OPTIONAL | certifiedKeyPair OPTIONAL | |||
-- MUST be present if status is "accepted" or "grantedWithMods" | -- MUST be present if status is "accepted" or "grantedWithMods" | |||
-- MUST be absent if status is "rejection" | -- MUST be absent if status is "rejection" | |||
certOrEncCert REQUIRED | certOrEncCert REQUIRED | |||
-- MUST be present if status is "accepted" or "grantedWithMods" | -- MUST be present if status is "accepted" or "grantedWithMods" | |||
certificate REQUIRED | certificate REQUIRED | |||
-- MUST be present when certifiedKeyPair is present | -- MUST be present when certifiedKeyPair is present | |||
-- MUST contain the newly enrolled X.509 certificate | -- MUST contain the newly enrolled X.509 certificate | |||
privateKey OPTIONAL | privateKey OPTIONAL | |||
-- MUST be absent in case of local key generation or "rejection" | -- MUST be absent in case of local key generation or "rejection" | |||
-- MUST contain the encrypted private key in an EnvelopedData | -- MUST contain the encrypted private key in an EnvelopedData | |||
-- structure as specified in Section 4.1.6 in case the private | -- structure as specified in Section 4.1.6 in case the | |||
-- key was generated centrally | -- private key was generated centrally | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
-- MUST contain the chain of the certificate present in | -- MUST contain the chain of the certificate present in | |||
-- certOrEncCert | -- certOrEncCert | |||
-- Duplicate certificates MAY be omitted | -- Duplicate certificates MAY be omitted | |||
Certificate Confirmation -- certConf | Certificate Confirmation -- certConf | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- The message of the EE sends as confirmation to the PKI | -- The message of the EE sends a confirmation to the PKI | |||
-- management entity to accept or reject the issued | -- management entity to accept or reject the issued | |||
-- certificates | -- certificates | |||
certConf REQUIRED | certConf REQUIRED | |||
-- MUST contain a sequence of one CertStatus | -- MUST contain a sequence of one CertStatus | |||
CertStatus REQUIRED | CertStatus REQUIRED | |||
certHash REQUIRED | certHash REQUIRED | |||
-- MUST be the hash value of the certificate. | ||||
-- The hash algorithm to use MUST be the hash algorithm indicated | -- The hash algorithm to use MUST be the hash algorithm indicated | |||
-- in the below hashAlg field. If the hashAlg field is not | -- in the below hashAlg field. If the hashAlg field is not | |||
-- set, it MUST be the hash algorithm defined by the algorithm | -- set, it MUST be the hash algorithm defined by the algorithm | |||
-- identifier of the certificate signature or the dedicated | -- identifier of the certificate signature or the dedicated | |||
-- hash algorithm defined in RFCBBBB for the used certificate | -- hash algorithm defined in [RFC9481] for the used certificate | |||
-- signature algorithm. | -- signature algorithm. | |||
certReqId REQUIRED | certReqId REQUIRED | |||
-- MUST be 0 | -- MUST be 0 | |||
statusInfo OPTIONAL | statusInfo OPTIONAL | |||
-- PKIStatusInfo structure should be present | -- PKIStatusInfo structure should be present | |||
-- Omission indicates acceptance of the indicated certificate | -- Omission indicates acceptance of the indicated certificate | |||
status REQUIRED | status REQUIRED | |||
-- positive values allowed: "accepted" | -- positive values allowed: "accepted" | |||
-- negative values allowed: "rejection" | -- negative values allowed: "rejection" | |||
statusString OPTIONAL | statusString OPTIONAL | |||
-- MAY be any human-readable text for debugging, logging, or to | -- MAY be any human-readable text for debugging, for logging, or | |||
-- display in a GUI | -- to display in a GUI | |||
failInfo OPTIONAL | failInfo OPTIONAL | |||
-- MAY be present if status is "rejection" | -- MAY be present if status is "rejection" | |||
-- MUST be absent if status is "accepted" | -- MUST be absent if status is "accepted" | |||
hashAlg OPTIONAL | hashAlg OPTIONAL | |||
-- The hash algorithm to use for calculating the above certHash | -- The hash algorithm to use for calculating the above certHash | |||
-- If used, the pvno field in the header MUST be cmp2021 (3). For | -- If used, the pvno field in the header MUST be cmp2021 (3). | |||
-- backward compatibility it is NOT RECOMMENDED to use this | -- For backward compatibility, use of this field is | |||
-- field, if the hash algorithm to use can be identified by | -- NOT RECOMMENDED if the hash algorithm to use can be | |||
-- other means, see above. | -- identified by other means; see above. | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
-- MUST use the same credentials as in the first request message | -- MUST use the same credentials as in the first request message | |||
-- of this PKI management operation | -- of this PKI management operation | |||
extraCerts RECOMMENDED | extraCerts RECOMMENDED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
-- MAY be omitted if the message size is critical and the PKI | -- MAY be omitted if the message size is critical and the PKI | |||
-- management entity caches the CMP protection certificate from | -- management entity caches the CMP protection certificate from | |||
skipping to change at page 37, line 22 ¶ | skipping to change at line 1680 ¶ | |||
-- response message of this PKI management operation | -- response message of this PKI management operation | |||
4.1.2. Enrolling an End Entity to a Known PKI | 4.1.2. Enrolling an End Entity to a Known PKI | |||
This PKI management operation should be used by an EE to request an | This PKI management operation should be used by an EE to request an | |||
additional certificate of the same PKI it already has certificates | additional certificate of the same PKI it already has certificates | |||
from. The EE uses one of these existing certificates to authenticate | from. The EE uses one of these existing certificates to authenticate | |||
itself by signing its request messages using the respective private | itself by signing its request messages using the respective private | |||
key. | key. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | Specific prerequisites augmenting the prerequisites in Section 3.4 | |||
are as follows: | ||||
* The certificate used by the EE MUST have been enrolled by the PKI | * The certificate used by the EE MUST have been enrolled by the PKI | |||
it requests another certificate from. | it requests another certificate from. | |||
* When using the generalInfo field certProfile, the EE MUST know the | * When using the generalInfo field certProfile, the EE MUST know the | |||
identifier needed to indicate the requested certificate profile. | identifier needed to indicate the requested certificate profile. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to that given in Section 4.1.1, with the following changes: | to that given in Section 4.1.1, with the following changes: | |||
1 The body of the first request and response SHOULD be cr and cp. | 1. The body of the first request and response SHOULD be cr and cp. | |||
Otherwise ir and ip MUST be used. | Otherwise, ir and ip MUST be used. | |||
Note: Since the difference between ir/ip and cr/cp is | Note: Since the difference between ir/ip and cr/cp is | |||
syntactically not essential, an ir/ip may be used in this PKI | syntactically not essential, an ir/ip may be used in this PKI | |||
management operation. | management operation. | |||
2 The caPubs field in the certificate response message MUST be | 2. The caPubs field in the certificate response message MUST be | |||
absent. | absent. | |||
4.1.3. Updating a Valid Certificate | 4.1.3. Updating a Valid Certificate | |||
This PKI management operation should be used by an EE to request an | This PKI management operation should be used by an EE to request an | |||
update for one of its certificates that is still valid. The EE uses | update for one of its certificates that is still valid. The EE uses | |||
the certificate it wishes to update as the CMP protection | the certificate it wishes to update as the CMP protection | |||
certificate. Both for authenticating itself and for proving | certificate. Both for authenticating itself and for proving | |||
ownership of the certificate to be updated, it signs the request | ownership of the certificate to be updated, it signs the request | |||
messages with the corresponding private key. | messages with the corresponding private key. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | Specific prerequisites augmenting the prerequisites in Section 3.4 | |||
are as follows: | ||||
* The certificate the EE wishes to update MUST NOT be expired or | * The certificate the EE wishes to update MUST NOT be expired or | |||
revoked and MUST have been issued by the addressed CA. | revoked and MUST have been issued by the addressed CA. | |||
* A new public-private key pair should be used. | * A new public-private key pair should be used. | |||
* When using the generalInfo field certProfile, the EE MUST know the | * When using the generalInfo field certProfile, the EE MUST know the | |||
identifier needed to indicate the requested certificate profile. | identifier needed to indicate the requested certificate profile. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to that given in Section 4.1.1, with the following changes: | to that given in Section 4.1.1, with the following changes: | |||
1 The body of the first request and response MUST be kur and kup, | 1. The body of the first request and response MUST be kur and kup, | |||
respectively. | respectively. | |||
2 Protection of the kur MUST be performed using the certificate to | 2. Protection of the kur MUST be performed using the certificate to | |||
be updated. | be updated. | |||
3 The subject field and/or the subjectAltName extension of the | 3. The subject field and/or the subjectAltName extension of the | |||
certTemplate MUST contain the EE subject name of the existing | certTemplate MUST contain the EE subject name of the existing | |||
certificate to be updated, without modifications. | certificate to be updated, without modifications. | |||
4 The certTemplate SHOULD contain the subject and/or subjectAltName | 4. The certTemplate SHOULD contain the subject and/or subjectAltName | |||
extension and publicKey of the EE only. | extension and publicKey of the EE only. | |||
5 The oldCertId control MAY be used to make clear which certificate | 5. The oldCertId control MAY be used to make clear which certificate | |||
is to be updated. | is to be updated. | |||
6 The caPubs field in the kup message MUST be absent. | 6. The caPubs field in the kup message MUST be absent. | |||
As part of the certReq structure of the kur the oldCertId control is | As part of the certReq structure of the kur, the oldCertId control is | |||
added after the certTemplate field. | added after the certTemplate field. | |||
controls | controls | |||
type RECOMMENDED | type RECOMMENDED | |||
-- MUST be the value id-regCtrl-oldCertID, if present | -- MUST be the value id-regCtrl-oldCertID, if present | |||
value | value | |||
issuer REQUIRED | issuer REQUIRED | |||
serialNumber REQUIRED | serialNumber REQUIRED | |||
-- MUST contain the issuer and serialNumber of the certificate | -- MUST contain the issuer and serialNumber of the certificate | |||
-- to be updated | -- to be updated | |||
4.1.4. Enrolling an End Entity Using a PKCS#10 Request | 4.1.4. Enrolling an End Entity Using a PKCS #10 Request | |||
This PKI management operation can be used by an EE to request a | This PKI management operation can be used by an EE to request a | |||
certificate using PKCS#10 [RFC2986] format to interoperate with CAs | certificate using the PKCS #10 [RFC2986] format to interoperate with | |||
not supporting CRMF [RFC4211]. This offers a variation of the PKI | CAs not supporting CRMF [RFC4211]. This offers a variation of the | |||
management operations specified in Sections 4.1.1 to 4.1.3. | PKI management operations specified in Sections 4.1.1 to 4.1.3. | |||
In this PKI management operation, the public key and all further | In this PKI management operation, the public key and all further | |||
certificate template data MUST be contained in the subjectPKInfo and | certificate template data MUST be contained in the subjectPKInfo and | |||
other certificationRequestInfo fields of the PKCS#10 structure. | other certificationRequestInfo fields of the PKCS #10 structure. | |||
The prerequisites are the same as given in Section 4.1.2. | The prerequisites are the same as given in Section 4.1.2. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to that given in Sections 4.1.1 to 4.1.3, with the following changes: | to that given in Sections 4.1.1 to 4.1.3, with the following changes: | |||
1 The body of the first request and response MUST be p10cr and cp, | 1. The body of the first request and response MUST be p10cr and cp, | |||
respectively. | respectively. | |||
2 The certReqId in the cp message MUST be -1. | 2. The certReqId in the cp message MUST be -1. | |||
Detailed Message Description: | Detailed Message Description: | |||
Certification Request -- p10cr | Certification Request -- p10cr | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- The request of the EE for a new certificate using a PKCS#10 | -- The request of the EE for a new certificate using a PKCS #10 | |||
-- certificate request | -- certificate request | |||
p10cr REQUIRED | p10cr REQUIRED | |||
certificationRequestInfo REQUIRED | certificationRequestInfo REQUIRED | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 0 to indicate PKCS#10 V1.7 | -- MUST be 0 to indicate PKCS #10 v1.7 | |||
subject REQUIRED | subject REQUIRED | |||
-- The EE subject name MUST be carried in the subject field | -- The EE subject name MUST be carried in the subject field | |||
-- and/or the subjectAltName extension. | -- and/or the subjectAltName extension. | |||
-- If subject name is present only in the subjectAltName | -- If subject name is present only in the subjectAltName | |||
-- extension, then the subject field MUST be a NULL-DN | -- extension, then the subject field MUST be NULL-DN | |||
subjectPKInfo REQUIRED | subjectPKInfo REQUIRED | |||
algorithm REQUIRED | algorithm REQUIRED | |||
-- MUST include the subject public key algorithm identifier | -- MUST include the subject public key algorithm identifier | |||
subjectPublicKey REQUIRED | subjectPublicKey REQUIRED | |||
-- MUST include the public key to be certified | -- MUST include the public key to be certified | |||
attributes OPTIONAL | attributes OPTIONAL | |||
-- MAY include end-entity-specific X.509 extensions of the | -- MAY include end-entity-specific X.509 extensions of the | |||
-- requested certificate like subject alternative name, | -- requested certificate like subject alternative name, | |||
-- key usage, and extended key usage | -- key usage, and extended key usage | |||
-- The subjectAltName extension MUST be present if the EE | -- The subjectAltName extension MUST be present if the EE | |||
skipping to change at page 41, line 8 ¶ | skipping to change at line 1823 ¶ | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described for the underlying PKI management operation | -- As described for the underlying PKI management operation | |||
4.1.5. Using MAC-Based Protection for Enrollment | 4.1.5. Using MAC-Based Protection for Enrollment | |||
This is a variant of the PKI management operations described in | This is a variant of the PKI management operations described in | |||
Sections 4.1.1, 4.1.2 and 4.1.4. It should be used by an EE to | Sections 4.1.1, 4.1.2, and 4.1.4. It should be used by an EE to | |||
request a certificate of a new PKI in case it does not have a | request a certificate of a new PKI in case it does not have a | |||
certificate to prove its identity to the target PKI, but has some | certificate to prove its identity to the target PKI but has some | |||
secret information shared with the PKI management entity. Therefore, | secret information shared with the PKI management entity. Therefore, | |||
the request and response messages are MAC-protected using this shared | the request and response messages are MAC-protected using this shared | |||
secret information. The distribution of this shared secret is out of | secret information. The distribution of this shared secret is out of | |||
scope for this document. The PKI management entity checking the MAC- | scope for this document. The PKI management entity checking the MAC- | |||
based protection MUST replace this protection according to | based protection MUST replace this protection according to | |||
Section 5.2.3 as the next hop may not know the shared secret | Section 5.2.3, as the next hop may not know the shared secret | |||
information. | information. | |||
Note: The entropy of the shared secret information is crucial for the | Note: The entropy of the shared secret information is crucial for the | |||
level of protection when using MAC-based protection. Further | level of protection when using MAC-based protection. Further | |||
guidance is available in the security considerations of CMP updated | guidance is available in the security considerations updated by CMP | |||
by [I-D.ietf-lamps-cmp-updates]. | Updates [RFC9480]. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | Specific prerequisites augmenting the prerequisites in Section 3.4 | |||
are as follows: | ||||
* Rather than using private keys, certificates, and trust anchors, | * Rather than using private keys, certificates, and trust anchors, | |||
the EE and the PKI management entity MUST share secret | the EE and the PKI management entity MUST share secret | |||
information. | information. | |||
Note: The shared secret information MUST be established out-of- | Note: The shared secret information MUST be established out of | |||
band, e.g., by a service technician during initial local | band, e.g., by a service technician during initial local | |||
configuration. | configuration. | |||
* When using the generalInfo field certProfile, the EE MUST know the | * When using the generalInfo field certProfile, the EE MUST know the | |||
identifier needed to indicate the requested certificate profile. | identifier needed to indicate the requested certificate profile. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to that given in Sections 4.1.1, 4.1.2 and 4.1.4, with the following | to that given in Sections 4.1.1, 4.1.2, and 4.1.4, with the following | |||
changes: | changes: | |||
1 The protection of all messages MUST be MAC-based. Therefore, | 1. The protection of all messages MUST be MAC-based. Therefore, | |||
extraCerts fields of all messages do not contain CMP protection | extraCerts fields of all messages do not contain CMP protection | |||
certificates and associated chains. | certificates and associated chains. | |||
2 In case the sending entity does not know its own name by now, it | 2. The sender field MUST contain a name the PKI management entity | |||
MUST put the NULL-DN into the sender field. The senderKID MUST | can use to identify the shared secret information used for | |||
contain a reference the recipient can use to identify the shared | message protection. This name MUST be placed in the commonName | |||
secret information used for the protection, e.g., the username of | field of the directoryName choice. The senderKID MUST contain | |||
the EE. | the same name as in the commonName field of the sender field. In | |||
case the sending entity does not yet know for which name to | ||||
request the certificate, it can use this commonName in the | ||||
subject field of the certTemplate. | ||||
See Section 6 of CMP Algorithms [I-D.ietf-lamps-cmp-algorithms] for | See Section 6 of CMP Algorithms [RFC9481] for details on message | |||
details on message authentication code algorithms (MSG_MAC_ALG) to | authentication code algorithms (MSG_MAC_ALG) to use. Typically, | |||
use. Typically, parameters are part of the protectionAlg field, | parameters are part of the protectionAlg field, e.g., used for key | |||
e.g., used for key derivation, like a salt and an iteration count. | derivation, like a salt and an iteration count. Such parameters | |||
Such parameters should remain constant for message protection | should remain constant for message protection throughout this PKI | |||
throughout this PKI management operation to reduce the computational | management operation to reduce the computational overhead. | |||
overhead. | ||||
4.1.6. Adding Central Key Pair Generation to Enrollment | 4.1.6. Adding Central Key Pair Generation to Enrollment | |||
This is a variant of the PKI management operations described in | This is a variant of the PKI management operations described in | |||
Section 4.1.1 to Section 4.1.4 and the variant described in | Sections 4.1.1 to 4.1.4 and the variant described in Section 4.1.5. | |||
Section 4.1.5. It needs to be used in case an EE is not able to | It needs to be used in case an EE is not able to generate its new | |||
generate its new public-private key pair itself or central generation | public-private key pair itself or central generation of the EE key | |||
of the EE key material is preferred. It is a matter of the local | material is preferred. Which PKI management entity will act as Key | |||
implementation which PKI management entity will act as Key Generation | Generation Authority (KGA) and perform the key generation is a matter | |||
Authority (KGA) and performs the key generation. This PKI management | of the local implementation. This PKI management entity MUST use a | |||
entity MUST use a certificate containing the additional extended key | certificate containing the additional extended key usage extension | |||
usage extension id-kp-cmKGA in order to be accepted by the EE as a | id-kp-cmKGA in order to be accepted by the EE as a legitimate key | |||
legitimate key generation authority. | generation authority. | |||
Note: As described in Section 5.3.1, the KGA can use the PKI | Note: As described in Section 5.3.1, the KGA can use the PKI | |||
management operation described in Section 4.1.2 to request the | management operation described in Section 4.1.2 to request the | |||
certificate for this key pair on behalf of the EE. | certificate for this key pair on behalf of the EE. | |||
When an EE requests central key generation for a certificate update | When an EE requests central key generation for a certificate update | |||
using a kur message, the KGA cannot use a kur message to request the | using a kur message, the KGA cannot use a kur message to request the | |||
certificate on behalf of the EE as the old EE credential is not | certificate on behalf of the EE, as the old EE credential is not | |||
available to the KGA for protecting this message. Therefore, if the | available to the KGA for protecting this message. Therefore, if the | |||
EE uses the PKI management operation described in Section 4.1.3, the | EE uses the PKI management operation described in Section 4.1.3, the | |||
KGA MUST act as described in Section 4.1.2 to request the certificate | KGA MUST act as described in Section 4.1.2 to request the certificate | |||
for the newly generated key pair on behalf of the EE from the CA. | for the newly generated key pair on behalf of the EE from the CA. | |||
Generally speaking, it is strongly preferable to generate public- | Generally speaking, it is strongly preferable to generate public- | |||
private key pairs locally at the EE. This is advisable to make sure | private key pairs locally at the EE. This is advisable to make sure | |||
that the entity identified in the newly issued certificate is the | that the entity identified in the newly issued certificate is the | |||
only entity that knows the private key. | only entity that knows the private key. | |||
Reasons for central key generation may include the following: | Reasons for central key generation may include the following: | |||
* Lack of sufficient initial entropy. | * lack of sufficient initial entropy | |||
Note: Good random numbers are needed not only for key generation | Note: Good random numbers are not only needed for key generation | |||
but also for session keys and nonces in any security protocol. | but also for session keys and nonces in any security protocol. | |||
Therefore, a decent security architecture should anyways support | Therefore, a decent security architecture should anyways support | |||
good random number generation on the EE side or provide enough | good random number generation on the EE side or provide enough | |||
initial entropy for the RNG seed to guarantee good pseudo-random | initial entropy for the random number generator seed to guarantee | |||
number generation. Yet maybe this is not the case at the time of | good pseudorandom number generation. Yet maybe this is not the | |||
requesting an initial certificate during manufacturing. | case at the time of requesting an initial certificate during | |||
manufacturing. | ||||
* Lack of computational resources, in particular for RSA key | * lack of computational resources, in particular, for RSA key | |||
generation. | generation | |||
Note: Since key generation could be performed in advance to the | Note: Since key generation could be performed in advance to the | |||
certificate enrollment communication, it is often not time | certificate enrollment communication, it is often not time | |||
critical. | critical. | |||
Note: As mentioned in Section 2, central key generation may be | Note: As mentioned in Section 2, central key generation may be | |||
required in a push model, where the certificate response message is | required in a push model, where the certificate response message is | |||
transferred by the PKI management entity to the EE without a previous | transferred by the PKI management entity to the EE without a previous | |||
request message. | request message. | |||
The EE requesting central key generation MUST omit the publicKey | The EE requesting central key generation MUST omit the publicKey | |||
field from the certTemplate or, in case it has a preference on the | field from the certTemplate or, in case it has a preference on the | |||
key type to be generated, provide this preference in the algorithm | key type to be generated, provide this preference in the algorithm | |||
sub-field and fill the subjectPublicKey sub-field with a zero-length | sub-field and fill the subjectPublicKey sub-field with a zero-length | |||
BIT STRING. Both variants indicate to the PKI management entity that | BIT STRING. Both variants indicate to the PKI management entity that | |||
a new key pair shall be generated centrally on behalf of the EE. | a new key pair shall be generated centrally on behalf of the EE. | |||
Note: As the protection of centrally generated keys in the response | Note: As the protection of centrally generated keys in the response | |||
message has been extended to EncryptedKey by CMP Updates Section 2.7 | message has been extended to EncryptedKey by Section 2.7 of CMP | |||
[I-D.ietf-lamps-cmp-updates], EnvelopedData is the preferred | Updates [RFC9480], EnvelopedData is the preferred alternative to | |||
alternative to EncryptedValue. In CRMF Section 2.1.9 [RFC4211] the | EncryptedValue. In CRMF [RFC4211], Section 2.1, point 9, the use of | |||
use of EncryptedValue has been deprecated in favor of the | EncryptedValue has been deprecated in favor of the EnvelopedData | |||
EnvelopedData structure. Therefore, this profile requires using | structure. Therefore, this profile requires using EnvelopedData, as | |||
EnvelopedData as specified in CMS Section 6 [RFC5652]. When | specified in Section 6 of CMS [RFC5652]. When EnvelopedData is to be | |||
EnvelopedData is to be used in a PKI management operation, CMP v3 | used in a PKI management operation, CMP v3 MUST be indicated in the | |||
MUST be indicated in the message header already for the initial | message header already for the initial request message; see | |||
request message, see CMP Updates Section 2.20 | Section 2.20 of CMP Updates [RFC9480]. | |||
[I-D.ietf-lamps-cmp-updates]. | ||||
+----------------------------------+ | +----------------------------------+ | |||
| EnvelopedData | | | EnvelopedData | | |||
| [RFC5652] Section 6 | | | [RFC5652], Section 6 | | |||
| +------------------------------+ | | | +------------------------------+ | | |||
| | SignedData | | | | | SignedData | | | |||
| | [RFC5652] Section 5 | | | | | [RFC5652], Section 5 | | | |||
| | +--------------------------+ | | | | | +--------------------------+ | | | |||
| | | AsymmetricKeyPackage | | | | | | | AsymmetricKeyPackage | | | | |||
| | | [RFC5958] | | | | | | | [RFC5958] | | | | |||
| | | +----------------------+ | | | | | | | +----------------------+ | | | | |||
| | | | private key | | | | | | | | | private key | | | | | |||
| | | +----------------------+ | | | | | | | +----------------------+ | | | | |||
| | +--------------------------+ | | | | | +--------------------------+ | | | |||
| +------------------------------+ | | | +------------------------------+ | | |||
+----------------------------------+ | +----------------------------------+ | |||
Figure 3: Encrypted Private Key Container | Figure 3: Encrypted Private Key Container | |||
The PKI management entity delivers the private key in the privateKey | The PKI management entity delivers the private key in the privateKey | |||
field in the certifiedKeyPair structure of the response message also | field in the certifiedKeyPair structure of the response message also | |||
containing the newly issued certificate. | containing the newly issued certificate. | |||
The private key MUST be provided as an AsymmetricKeyPackage structure | The private key MUST be provided as an AsymmetricKeyPackage structure | |||
as defined in RFC 5958 [RFC5958]. | as defined in [RFC5958]. | |||
This AsymmetricKeyPackage structure MUST be wrapped in a SignedData | This AsymmetricKeyPackage structure MUST be wrapped in a SignedData | |||
structure, as specified in CMS Section 5 [RFC5652] and [RFC8933], | structure, as specified in Section 5 of CMS [RFC5652] and [RFC8933], | |||
signed by the KGA generating the key pair. The signature MUST be | and signed by the KGA generating the key pair. The signature MUST be | |||
performed using a private key related to a certificate asserting the | performed using a private key related to a certificate asserting the | |||
extended key usage id-kp-cmKGA as described in CMP Updates | extended key usage id-kp-cmKGA, as described in Section 2.2 of CMP | |||
Section 2.2 [I-D.ietf-lamps-cmp-updates] to demonstrate authorization | Updates [RFC9480], to demonstrate authorization to generate key pairs | |||
to generate key pairs on behalf of an EE. For response messages | on behalf of an EE. For response messages using signature-based | |||
using signature-based protection, the EE MUST validate the signer | protection, the EE MUST validate the signer certificate contained in | |||
certificate contained in the SignedData structure and SHOULD | the SignedData structure and SHOULD authorize the KGA considering any | |||
authorize the KGA considering any given id-kp-cmKGA extended key | given id-kp-cmKGA extended key usage in the signer certificate. For | |||
usage in the signer certificate. For response messages using MAC- | response messages using MAC-based protection, the EE MAY omit the | |||
based protection the EE MAY omit the validation as it may not be | validation as it may not be possible or meaningful to the EE. In | |||
possible or meaningful to the EE. In this case the EE authorizes the | this case, the EE authorizes the KGA using the shard secret | |||
KGA using the shard secret information. | information. | |||
The SignedData structure MUST be wrapped in an EnvelopedData | The SignedData structure MUST be wrapped in an EnvelopedData | |||
structure, as specified in CMS Section 6 [RFC5652], encrypting it | structure, as specified in Section 6 of CMS [RFC5652], encrypting it | |||
using a newly generated symmetric content-encryption key. | using a newly generated symmetric content-encryption key. | |||
This content-encryption key MUST be securely provided as part of the | This content-encryption key MUST be securely provided as part of the | |||
EnvelopedData structure to the EE using one of three key management | EnvelopedData structure to the EE using one of three key management | |||
techniques. The choice of the key management technique to be used by | techniques. The choice of the key management technique to be used by | |||
the PKI management entity depends on the authentication mechanism the | the PKI management entity depends on the authentication mechanism the | |||
EE chose to protect the request message. See CMP Updates Section 2.7 | EE chose to protect the request message. See Section 2.7 of CMP | |||
[I-D.ietf-lamps-cmp-updates] for details on which key management | Updates [RFC9480] for details on which key management technique to | |||
technique to use. | use. | |||
* Signature-based protection of the request message: | * Signature-based protection of the request message: | |||
In this case the choice depends on the type of the public key in | In this case, the choice depends on the type of public key in the | |||
the CMP protection certificate used by the EE in its request. | CMP protection certificate used by the EE in its request. | |||
- The content-encryption key SHALL be protected using the key | - The content-encryption key SHALL be protected using the key | |||
transport key management technique, see Section 4.1.6.1, if the | transport key management technique (see Section 4.1.6.1) if the | |||
key type supports this. | key type supports this. | |||
- The content-encryption key SHALL be protected using the key | - The content-encryption key SHALL be protected using the key | |||
agreement key management technique, see Section 4.1.6.2, if the | agreement key management technique (see Section 4.1.6.2) if the | |||
key type supports this. | key type supports this. | |||
* MAC-based protected of the request message: | * MAC-based protection of the request message: | |||
- The content-encryption key SHALL be protected using the | - The content-encryption key SHALL be protected using the | |||
password-based key management technique, see Section 4.1.6.3, | password-based key management technique (see Section 4.1.6.3) | |||
if and only if the EE used MAC-based protection for the request | if and only if the EE used MAC-based protection for the request | |||
message. | message. | |||
Specific prerequisites augmenting those of the respective certificate | Specific prerequisites augmenting those of the respective certificate | |||
enrollment PKI management operations: | enrollment PKI management operations are as follows: | |||
* If signature-based protection is used, the EE MUST be able to | * If signature-based protection is used, the EE MUST be able to | |||
authenticate and authorize the KGA, using suitable information, | authenticate and authorize the KGA using suitable information, | |||
which includes a trust anchor. | which includes a trust anchor. | |||
* If MAC-based protection is used, the KGA MUST also know the shared | * If MAC-based protection is used, the KGA MUST also know the shared | |||
secret information to protect the encrypted transport of the newly | secret information to protect the encrypted transport of the newly | |||
generated key pair. Consequently, the EE can also authorize the | generated key pair. Consequently, the EE can also authorize the | |||
KGA. | KGA. | |||
* The PKI management entity MUST have a certificate containing the | * The PKI management entity MUST have a certificate containing the | |||
additional extended key usage extension id-kp-cmKGA for signing | additional extended key usage extension id-kp-cmKGA for signing | |||
the SignedData structure containing the private key package. | the SignedData structure containing the private key package. | |||
* For encrypting the SignedData structure a fresh content-encryption | * For encrypting the SignedData structure, a fresh content- | |||
key to be used by the symmetric encryption algorithm MUST be | encryption key to be used by the symmetric encryption algorithm | |||
generated with sufficient entropy. | MUST be generated with sufficient entropy. | |||
Note: The security strength of the protection of the generated | Note: The security strength of the protection of the generated | |||
private key should be similar or higher than the security strength | private key should be similar or higher than the security strength | |||
of the generated private key. | of the generated private key. | |||
Detailed Description of privateKey Field: | Detailed Description of the privateKey Field: | |||
privateKey REQUIRED | privateKey REQUIRED | |||
-- MUST be an EnvelopedData structure as specified in CMS | -- MUST be an EnvelopedData structure, as specified in | |||
-- Section 6 [RFC5652] | -- Section 6 of CMS [RFC5652] | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 2 for recipientInfo type KeyAgreeRecipientInfo and | -- MUST be 2 for recipientInfo type KeyAgreeRecipientInfo and | |||
-- KeyTransRecipientInfo | -- KeyTransRecipientInfo | |||
-- MUST be 0 for recipientInfo type PasswordRecipientInfo | -- MUST be 0 for recipientInfo type PasswordRecipientInfo | |||
recipientInfos REQUIRED | recipientInfos REQUIRED | |||
-- MUST contain a sequence of one RecipientInfo, which MUST be | -- MUST contain a sequence of one RecipientInfo, which MUST be | |||
-- kari of type KeyAgreeRecipientInfo (see section 4.1.6.1), | -- ktri of type KeyTransRecipientInfo (see Section 4.1.6.1), | |||
-- ktri of type KeyTransRecipientInfo (see section 4.1.6.2), or | -- kari of type KeyAgreeRecipientInfo (see Section 4.1.6.2), or | |||
-- pwri of type PasswordRecipientInfo (see section 4.1.6.3) | -- pwri of type PasswordRecipientInfo (see Section 4.1.6.3) | |||
encryptedContentInfo | encryptedContentInfo | |||
REQUIRED | REQUIRED | |||
contentType REQUIRED | contentType REQUIRED | |||
-- MUST be id-signedData | -- MUST be id-signedData | |||
contentEncryptionAlgorithm | contentEncryptionAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the algorithm used for | -- MUST be the algorithm identifier of the algorithm used for | |||
-- content encryption | -- content encryption | |||
-- The algorithm type MUST be a PROT_SYM_ALG as specified in | -- The algorithm type MUST be PROT_SYM_ALG as specified in | |||
-- RFCBBBB Section 5 | -- [RFC9481], Section 5 | |||
encryptedContent REQUIRED | encryptedContent REQUIRED | |||
-- MUST be the SignedData structure as specified in CMS | -- MUST be the SignedData structure, as specified in Section 5 | |||
-- Section 5 [RFC5652] and [RFC8933] in encrypted form | -- of CMS [RFC5652] and [RFC8933], in encrypted form | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 3 | -- MUST be 3 | |||
digestAlgorithms | digestAlgorithms | |||
REQUIRED | REQUIRED | |||
-- MUST contain a sequence of one AlgorithmIdentifier element | -- MUST contain a sequence of one AlgorithmIdentifier element | |||
-- MUST be the algorithm identifier of the digest algorithm | -- MUST be the algorithm identifier of the digest algorithm | |||
-- used for generating the signature and match the signature | -- used for generating the signature and match the signature | |||
-- algorithm specified in signatureAlgorithm, see [RFC8933] | -- algorithm specified in signatureAlgorithm; see [RFC8933] | |||
encapContentInfo | encapContentInfo | |||
REQUIRED | REQUIRED | |||
-- MUST contain the content that is to be signed | -- MUST contain the content that is to be signed | |||
eContentType REQUIRED | eContentType REQUIRED | |||
-- MUST be id-ct-KP-aKeyPackage as specified in [RFC5958] | -- MUST be id-ct-KP-aKeyPackage as specified in [RFC5958] | |||
eContent REQUIRED | eContent REQUIRED | |||
-- MUST be of type AsymmetricKeyPackage and | -- MUST be of type AsymmetricKeyPackage and | |||
-- MUST contain a sequence of one OneAsymmetricKey element | -- MUST contain a sequence of one OneAsymmetricKey element | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 1 (indicating v2) | -- MUST be 1 (indicating v2) | |||
skipping to change at page 47, line 34 ¶ | skipping to change at line 2124 ¶ | |||
digestAlgorithm | digestAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the same as in the digestAlgorithms field of | -- MUST be the same as in the digestAlgorithms field of | |||
-- encryptedContent | -- encryptedContent | |||
signedAttrs REQUIRED | signedAttrs REQUIRED | |||
-- MUST contain an id-contentType attribute containing the value | -- MUST contain an id-contentType attribute containing the value | |||
-- id-ct-KP-aKeyPackage | -- id-ct-KP-aKeyPackage | |||
-- MUST contain an id-messageDigest attribute containing the | -- MUST contain an id-messageDigest attribute containing the | |||
-- message digest of eContent | -- message digest of eContent | |||
-- MAY contain an id-signingTime attribute containing the time | -- MAY contain an id-signingTime attribute containing the time | |||
-- of signature. It SHOULD be omitted if the transactionTime | -- of a signature. It SHOULD be omitted if the transactionTime | |||
-- field is not present in the PKIHeader. | -- field is not present in the PKIHeader. | |||
-- For details on the signed attributes see CMS Section 5.3 and | -- For details on the signed attributes, see Sections 5.3 and | |||
-- Section 11 [RFC5652] and [RFC8933] | -- 11 of CMS [RFC5652] and [RFC8933] | |||
signatureAlgorithm | signatureAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the signature algorithm | -- MUST be the algorithm identifier of the signature algorithm | |||
-- used for calculation of the signature bits | -- used for calculation of the signature bits | |||
-- The signature algorithm type MUST be a MSG_SIG_ALG as | -- The signature algorithm type MUST be MSG_SIG_ALG, as | |||
-- specified in RFCBBBB Section 3 and MUST be consistent | -- specified in [RFC9481], Section 3, and MUST be consistent | |||
-- with the subjectPublicKeyInfo field of the KGA certificate | -- with the subjectPublicKeyInfo field of the KGA certificate | |||
signature REQUIRED | signature REQUIRED | |||
-- MUST be the digital signature of the encapContentInfo | -- MUST be the digital signature of the encapContentInfo | |||
As stated in Section 1.5, all fields of the ASN.1 syntax that are | As stated in Section 1.8, all fields of the ASN.1 syntax that are | |||
defined in RFC 5652 [RFC5652] but are not explicitly specified here | defined in [RFC5652] but are not explicitly specified here SHOULD NOT | |||
SHOULD NOT be used. | be used. | |||
4.1.6.1. Using Key Transport Key Management Technique | 4.1.6.1. Using the Key Transport Key Management Technique | |||
This variant can be applied in combination with the PKI management | This variant can be applied in combination with the PKI management | |||
operations specified in Section 4.1.1 to Section 4.1.3 using | operations specified in Sections 4.1.1 to 4.1.3 using signature-based | |||
signature-based protection of CMP messages. The EE certificate used | protection of CMP messages. The EE certificate used for the | |||
for the signature-based protection of the request message MUST | signature-based protection of the request message MUST contain a | |||
contain a public key supporting key transport and allow for the key | public key supporting key transport and allow for the key usage | |||
usage "keyEncipherment". The related key pair MUST be used for | "keyEncipherment". The related key pair MUST be used for | |||
encipherment of the content-encryption key. For this key management | encipherment of the content-encryption key. For this key management | |||
technique, the KeyTransRecipientInfo structure MUST be used in the | technique, the KeyTransRecipientInfo structure MUST be used in the | |||
contentInfo field. | contentInfo field. | |||
The KeyTransRecipientInfo structure included into the EnvelopedData | The KeyTransRecipientInfo structure included into the EnvelopedData | |||
structure is specified in CMS Section 6.2.1 [RFC5652]. | structure is specified in Section 6.2.1 of CMS [RFC5652]. | |||
Detailed Description of KeyTransRecipientInfo Structure: | Detailed Description of the KeyTransRecipientInfo Structure: | |||
ktri REQUIRED | ktri REQUIRED | |||
-- MUST be a KeyTransRecipientInfo as specified in CMS | -- MUST be KeyTransRecipientInfo as specified in Section 6.2.1 | |||
-- Section 6.2.1 [RFC5652] | -- of CMS [RFC5652] | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 2 | -- MUST be 2 | |||
rid REQUIRED | rid REQUIRED | |||
-- MUST contain the subjectKeyIdentifier of the CMP protection | -- MUST contain the subjectKeyIdentifier of the CMP protection | |||
-- certificate, if available, in the rKeyId choice and the | -- certificate, if available, in the rKeyId choice, and the | |||
-- subjectKeyIdentifier MUST equal the senderKID in the | -- subjectKeyIdentifier MUST equal the senderKID in the | |||
-- PKIHeader. | -- PKIHeader. | |||
-- If the CMP protection certificate does not contain a | -- If the CMP protection certificate does not contain a | |||
-- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | -- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | |||
-- be used. | -- be used. | |||
keyEncryptionAlgorithm | keyEncryptionAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the key transport | -- MUST be the algorithm identifier of the key transport | |||
-- algorithm. The algorithm type MUST be a KM_KT_ALG as | -- algorithm. The algorithm type MUST be KM_KT_ALG as | |||
-- specified in RFCBBBB Section 4.2 | -- specified in [RFC9481], Section 4.2 | |||
encryptedKey REQUIRED | encryptedKey REQUIRED | |||
-- MUST be the encrypted content-encryption key | -- MUST be the encrypted content-encryption key | |||
4.1.6.2. Using Key Agreement Key Management Technique | 4.1.6.2. Using the Key Agreement Key Management Technique | |||
This variant can be applied in combination with the PKI management | This variant can be applied in combination with the PKI management | |||
operations specified in Section 4.1.1 to Section 4.1.3 using | operations specified in Sections 4.1.1 to 4.1.3, using signature- | |||
signature-based protection of CMP messages. The EE certificate used | based protection of CMP messages. The EE certificate used for the | |||
for the signature-based protection of the request message MUST | signature-based protection of the request message MUST contain a | |||
contain a public key supporting key agreement and allow for the key | public key supporting key agreement and allow for the key usage | |||
usage "keyAgreement". The related key pair MUST be used for | "keyAgreement". The related key pair MUST be used for establishment | |||
establishment of the content-encryption key. For this key management | of the content-encryption key. For this key management technique, | |||
technique the KeyAgreeRecipientInfo structure MUST be used in the | the KeyAgreeRecipientInfo structure MUST be used in the contentInfo | |||
contentInfo field. | field. | |||
The KeyAgreeRecipientInfo structure included into the EnvelopedData | The KeyAgreeRecipientInfo structure included into the EnvelopedData | |||
structure is specified in CMS Section 6.2.2 [RFC5652]. | structure is specified in Section 6.2.2 of CMS [RFC5652]. | |||
Detailed Description of KeyAgreeRecipientInfo Structure: | Detailed Description of the KeyAgreeRecipientInfo Structure: | |||
kari REQUIRED | kari REQUIRED | |||
-- MUST be a KeyAgreeRecipientInfo as specified in CMS Section | -- MUST be KeyAgreeRecipientInfo as specified in Section | |||
-- 6.2.2 [RFC5652] | -- 6.2.2 of CMS [RFC5652] | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 3 | -- MUST be 3 | |||
originator REQUIRED | originator REQUIRED | |||
-- MUST contain the subjectKeyIdentifier of the CMP protection | -- MUST contain the subjectKeyIdentifier of the CMP protection | |||
-- certificate, if available, in the subjectKeyIdentifier | -- certificate, if available, in the subjectKeyIdentifier | |||
-- choice and the subjectKeyIdentifier MUST equal the senderKID | -- choice, and the subjectKeyIdentifier MUST equal the | |||
-- in the PKIHeader. | -- senderKID in the PKIHeader. | |||
-- If the CMP protection certificate does not contain a | -- If the CMP protection certificate does not contain a | |||
-- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | -- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | |||
-- be used. | -- be used. | |||
ukm RECOMMENDED | ukm RECOMMENDED | |||
-- MUST be used when 1-pass ECMQV is used, see [RFC5753] | -- MUST be used when 1-Pass Elliptic Curve Menezes-Qu-Vanstone | |||
-- (ECMQV) is used; see [RFC5753] | ||||
-- SHOULD be present to ensure uniqueness of the key | -- SHOULD be present to ensure uniqueness of the key | |||
-- encryption key | -- encryption key | |||
keyEncryptionAlgorithm | keyEncryptionAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the key agreement | -- MUST be the algorithm identifier of the key agreement | |||
-- algorithm | -- algorithm | |||
-- The algorithm type MUST be a KM_KA_ALG as specified in | -- The algorithm type MUST be KM_KA_ALG as specified in | |||
-- RFCBBBB Section 4.1 | -- [RFC9481], Section 4.1 | |||
-- The parameters field of the key agreement algorithm MUST | -- The parameters field of the key agreement algorithm MUST | |||
-- contain the key wrap algorithm. The algorithm type | -- contain the key wrap algorithm. The algorithm type | |||
-- MUST be a KM_KW_ALG as specified in RFCBBBB Section 4.3 | -- MUST be KM_KW_ALG as specified in [RFC9481], Section 4.3 | |||
recipientEncryptedKeys | recipientEncryptedKeys | |||
REQUIRED | REQUIRED | |||
-- MUST contain a sequence of one RecipientEncryptedKey | -- MUST contain a sequence of one RecipientEncryptedKey | |||
rid REQUIRED | rid REQUIRED | |||
-- MUST contain the subjectKeyIdentifier of the CMP protection | -- MUST contain the subjectKeyIdentifier of the CMP protection | |||
-- certificate, if available, in the rKeyId choice and the | -- certificate, if available, in the rKeyId choice, and the | |||
-- subjectKeyIdentifier MUST equal the senderKID in the | -- subjectKeyIdentifier MUST equal the senderKID in the | |||
-- PKIHeader. | -- PKIHeader. | |||
-- If the CMP protection certificate does not contain a | -- If the CMP protection certificate does not contain a | |||
-- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | -- subjectKeyIdentifier, the issuerAndSerialNumber choice MUST | |||
-- be used | -- be used | |||
encryptedKey | encryptedKey | |||
REQUIRED | REQUIRED | |||
-- MUST be the encrypted content-encryption key | -- MUST be the encrypted content-encryption key | |||
4.1.6.3. Using Password-Based Key Management Technique | 4.1.6.3. Using the Password-Based Key Management Technique | |||
This variant can be applied in combination with the PKI management | This variant can be applied in combination with the PKI management | |||
operation specified in Section 4.1.5 using MAC-based protection of | operation specified in Section 4.1.5, using MAC-based protection of | |||
CMP messages. The shared secret information used for the MAC-based | CMP messages. The shared secret information used for the MAC-based | |||
protection MUST also be used for the encryption of the content- | protection MUST also be used for the encryption of the content- | |||
encryption key but with a different salt value applied in the key | encryption key but with a different salt value applied in the key | |||
derivation algorithm. For this key management technique, the | derivation algorithm. For this key management technique, the | |||
PasswordRecipientInfo structure MUST be used in the contentInfo | PasswordRecipientInfo structure MUST be used in the contentInfo | |||
field. | field. | |||
Note: The entropy of the shared secret information is crucial for the | Note: The entropy of the shared secret information is crucial for the | |||
level of protection when using a password-based key management | level of protection when using a password-based key management | |||
technique. For centrally generated key pairs, the entropy of the | technique. For centrally generated key pairs, the entropy of the | |||
shared secret information SHALL NOT be less than the security | shared secret information SHALL NOT be less than the security | |||
strength of the centrally generated key pair. Further guidance is | strength of the centrally generated key pair. Further guidance is | |||
available in Section 9. | available in Section 9. | |||
The PasswordRecipientInfo structure included into the EnvelopedData | The PasswordRecipientInfo structure included into the EnvelopedData | |||
structure is specified in CMS Section 6.2.4 [RFC5652]. | structure is specified in Section 6.2.4 of CMS [RFC5652]. | |||
Detailed Description of PasswordRecipientInfo Structure: | Detailed Description of the PasswordRecipientInfo Structure: | |||
pwri REQUIRED | pwri REQUIRED | |||
-- MUST be a PasswordRecipientInfo as specified in CMS | -- MUST be PasswordRecipientInfo as specified in | |||
-- Section 6.2.4 [RFC5652] | -- Section 6.2.4 of CMS [RFC5652] | |||
version REQUIRED | version REQUIRED | |||
-- MUST be 0 | -- MUST be 0 | |||
keyDerivationAlgorithm | keyDerivationAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the key derivation | -- MUST be the algorithm identifier of the key derivation | |||
-- algorithm | -- algorithm | |||
-- The algorithm type MUST be a KM_KD_ALG as specified in | -- The algorithm type MUST be KM_KD_ALG as specified in | |||
-- RFCBBBB Section 4.4 | -- [RFC9481], Section 4.4 | |||
keyEncryptionAlgorithm | keyEncryptionAlgorithm | |||
REQUIRED | REQUIRED | |||
-- MUST be the algorithm identifier of the key wrap algorithm | -- MUST be the algorithm identifier of the key wrap algorithm | |||
-- The algorithm type MUST be a KM_KW_ALG as specified in | -- The algorithm type MUST be KM_KW_ALG as specified in | |||
-- RFCBBBB Section 4.3 | -- [RFC9481], Section 4.3 | |||
encryptedKey REQUIRED | encryptedKey REQUIRED | |||
-- MUST be the encrypted content-encryption key | -- MUST be the encrypted content-encryption key | |||
4.2. Revoking a Certificate | 4.2. Revoking a Certificate | |||
This PKI management operation should be used by an entity to request | This PKI management operation should be used by an entity to request | |||
revocation of a certificate. Here the revocation request is used by | revocation of a certificate. Here, the revocation request is used by | |||
an EE to revoke one of its own certificates. | an EE to revoke one of its own certificates. | |||
The revocation request message MUST be signed using the certificate | The revocation request message MUST be signed using the certificate | |||
that is to be revoked to prove the authorization to revoke. The | that is to be revoked to prove the authorization to revoke. The | |||
revocation request message is signature-protected using this | revocation request message is signature-protected using this | |||
certificate. This requires, that the EE still possesses the private | certificate. This requires that the EE still possesses the private | |||
key. If this is not the case the revocation has to be initiated by | key. If this is not the case, the revocation has to be initiated by | |||
other means, e.g., revocation by the RA as specified in | other means, e.g., revocation by the RA, as specified in | |||
Section 5.3.2. | Section 5.3.2. | |||
An EE requests revoking a certificate of its own at the CA that | An EE requests revoking a certificate of its own at the CA that | |||
issued this certificate. The PKI management entity handles the | issued this certificate. The PKI management entity handles the | |||
request as described in Section 5.1.3 and responds with a message | request as described in Section 5.1.3, and responds with a message | |||
that contains the status of the revocation from the CA. | that contains the status of the revocation from the CA. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | The specific prerequisite augmenting the prerequisites in Section 3.4 | |||
is as follows: | ||||
* The certificate the EE wishes to revoke is not yet expired or | * The certificate the EE wishes to revoke is not yet expired or | |||
revoked. | revoked. | |||
Message Flow: | Message Flow: | |||
Step# EE PKI management entity | Step# EE PKI management entity | |||
1 format rr | 1 format rr | |||
2 -> rr -> | 2 -> rr -> | |||
3 handle or forward rr | 3 handle or forward rr | |||
skipping to change at page 52, line 14 ¶ | skipping to change at line 2346 ¶ | |||
certDetails REQUIRED | certDetails REQUIRED | |||
-- MUST be present and is of type CertTemplate | -- MUST be present and is of type CertTemplate | |||
serialNumber REQUIRED | serialNumber REQUIRED | |||
-- MUST contain the certificate serialNumber attribute of the | -- MUST contain the certificate serialNumber attribute of the | |||
-- certificate to be revoked | -- certificate to be revoked | |||
issuer REQUIRED | issuer REQUIRED | |||
-- MUST contain the issuer attribute of the certificate to be | -- MUST contain the issuer attribute of the certificate to be | |||
-- revoked | -- revoked | |||
crlEntryDetails REQUIRED | crlEntryDetails REQUIRED | |||
-- MUST contain a sequence of one reasonCode of type CRLReason | -- MUST contain a sequence of one reasonCode of type CRLReason | |||
-- (see [RFC5280] section 5.3.1) | -- (see [RFC5280], Section 5.3.1) | |||
-- If the reason for this revocation is not known or shall not | -- If the reason for this revocation is not known or shall not | |||
-- be published the reasonCode MUST be 0 (unspecified) | -- be published, the reasonCode MUST be 0 (unspecified) | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 and using the private key related | -- As described in Section 3.2 and using the private key related | |||
-- to the certificate to be revoked | -- to the certificate to be revoked | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
Revocation Response -- rp | Revocation Response -- rp | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- The responds of the PKI management entity to the request as | -- The response of the PKI management entity to the request as | |||
-- appropriate | -- appropriate | |||
rp REQUIRED | rp REQUIRED | |||
status REQUIRED | status REQUIRED | |||
-- MUST contain a sequence of one element of type PKIStatusInfo | -- MUST contain a sequence of one element of type PKIStatusInfo | |||
status REQUIRED | status REQUIRED | |||
-- positive value allowed: "accepted" | -- positive value allowed: "accepted" | |||
-- negative value allowed: "rejection" | -- negative value allowed: "rejection" | |||
statusString OPTIONAL | statusString OPTIONAL | |||
-- MAY be any human-readable text for debugging, logging or to | -- MAY be any human-readable text for debugging, for logging, or | |||
-- display in a GUI | -- to display in a GUI | |||
failInfo OPTIONAL | failInfo OPTIONAL | |||
-- MAY be present if status is "rejection" | -- MAY be present if the status is "rejection" | |||
-- MUST be absent if the status is "accepted" | -- MUST be absent if the status is "accepted" | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in section 3.2 | -- As described in Section 3.2 | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in section 3.3 | -- As described in Section 3.3 | |||
4.3. Support Messages | 4.3. Support Messages | |||
The following support messages offer on demand in-band delivery of | The following support messages offer on-demand, in-band delivery of | |||
content relevant to the EE provided by a PKI management entity. CMP | content relevant to the EE provided by a PKI management entity. CMP | |||
general messages and general response are used for this purpose. | general messages and general response are used for this purpose. | |||
Depending on the environment, these requests may be answered by an RA | Depending on the environment, these requests may be answered by an RA | |||
or CA (see also Section 5.1.4). | or CA (see also Section 5.1.4). | |||
The general messages and general response messages contain | The general messages and general response messages contain | |||
InfoTypeAndValue structures. In addition to those infoType values | InfoTypeAndValue structures. In addition to those infoType values | |||
defined in RFC 4210 [RFC4210] and CMP Updates | defined in [RFC4210] and CMP Updates [RFC9480], further OIDs MAY be | |||
[I-D.ietf-lamps-cmp-updates] further OIDs MAY be used to define new | used to define new PKI management operations or new general-purpose | |||
PKI management operations or new general-purpose support messages as | support messages as needed in specific environments. | |||
needed in specific environments. | ||||
The following contents are specified in this document: | The following contents are specified in this document: | |||
* Get CA certificates | * Get CA certificates. | |||
* Get root CA certificate update | * Get root CA certificate update. | |||
* Get certificate request template | * Get certificate request template. | |||
* Get new CRLs | * Get new Certificate Revocation Lists (CRLs). | |||
The following message flow and contents are common to all general | The following message flow and contents are common to all general | |||
message (genm) and general response (genp) messages. | message (genm) and general response (genp) messages. | |||
Message Flow: | Message Flow: | |||
Step# EE PKI management entity | Step# EE PKI management entity | |||
1 format genm | 1 format genm | |||
2 -> genm -> | 2 -> genm -> | |||
3 handle or forward genm | 3 handle or forward genm | |||
skipping to change at page 55, line 5 ¶ | skipping to change at line 2478 ¶ | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
4.3.1. Get CA Certificates | 4.3.1. Get CA Certificates | |||
This PKI management operation can be used by an EE to request CA | This PKI management operation can be used by an EE to request CA | |||
certificates from the PKI management entity. | certificates from the PKI management entity. | |||
An EE requests CA certificates, e.g., for chain construction, from an | An EE requests CA certificates, e.g., for chain construction, from a | |||
PKI management entity by sending a general message with OID id-it- | PKI management entity by sending a general message with OID id-it- | |||
caCerts as specified in CMP Updates Section 2.14 | caCerts, as specified in Section 2.14 of CMP Updates [RFC9480]. The | |||
[I-D.ietf-lamps-cmp-updates]. The PKI management entity responds | PKI management entity responds with a general response with the same | |||
with a general response with the same OID that either contains a | OID that either contains a SEQUENCE of certificates populated with | |||
SEQUENCE of certificates populated with the available intermediate | the available intermediate and issuing CA certificates or no content | |||
and issuing CA certificates or with no content in case no CA | in case no CA certificate is available. | |||
certificate is available. | ||||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 3.4. | Section 3.4. | |||
The message sequence for this PKI management operation is as given | The message sequence for this PKI management operation is as given | |||
above, with the following specific content: | above, with the following specific content: | |||
1 the infoType OID to use is id-it-caCerts | 1. the infoType OID to use is id-it-caCerts | |||
2 the infoValue of the request MUST be absent | 2. the infoValue of the request MUST be absent | |||
3 if present, the infoValue of the response MUST contain a sequence | 3. if present, the infoValue of the response MUST contain a sequence | |||
of certificates | of certificates | |||
Detailed Description of infoValue Field of genp: | Detailed Description of the infoValue Field of genp: | |||
infoValue OPTIONAL | infoValue OPTIONAL | |||
-- MUST be absent if no CA certificate is available | -- MUST be absent if no CA certificate is available | |||
-- MUST be present if CA certificates are available | -- MUST be present if CA certificates are available | |||
-- if present, MUST be a sequence of CMPCertificate | -- if present, MUST be a sequence of CMPCertificate | |||
4.3.2. Get Root CA Certificate Update | 4.3.2. Get Root CA Certificate Update | |||
This PKI management operation can be used by an EE to request an | This PKI management operation can be used by an EE to request an | |||
updated root CA Certificate as described in Section 4.4 of RFC 4210 | updated root CA certificate as described in Section 4.4 of [RFC4210]. | |||
[RFC4210]. | ||||
An EE requests an update of a root CA certificate from the PKI | An EE requests an update of a root CA certificate from the PKI | |||
management entity by sending a general message with OID id-it- | management entity by sending a general message with OID id-it- | |||
rootCaCert. If needed for unique identification, the EE MUST include | rootCaCert. If needed for unique identification, the EE MUST include | |||
the old root CA certificate in the message body, as specified in CMP | the old root CA certificate in the message body as specified in | |||
Updates Section 2.15 [I-D.ietf-lamps-cmp-updates]. The PKI | Section 2.15 of CMP Updates [RFC9480]. The PKI management entity | |||
management entity responds with a general response with OID id-it- | responds with a general response with OID id-it-rootCaKeyUpdate that | |||
rootCaKeyUpdate that either contains the update of the root CA | either contains the update of the root CA certificate consisting of | |||
certificate consisting of up to three certificates, or with no | up to three certificates or no content in case no update is | |||
content in case no update is available. | available. | |||
Note: This mechanism may also be used to update trusted non-root | Note: This mechanism may also be used to update trusted non-root | |||
certificates, i.e., directly trusted intermediate CA or issuing CA | certificates, e.g., directly trusted intermediate or issuing CA | |||
certificates. | certificates. | |||
The newWithNew certificate is the new root CA certificate and is | The newWithNew certificate is the new root CA certificate and is | |||
REQUIRED to be present if available. The newWithOld certificate is | REQUIRED to be present if available. The newWithOld certificate is | |||
REQUIRED to be present in the response message because it is needed | REQUIRED to be present in the response message because it is needed | |||
for the receiving entity trusting the old root CA certificate to gain | for the receiving entity trusting the old root CA certificate to gain | |||
trust in the new root CA certificate. The oldWithNew certificate is | trust in the new root CA certificate. The oldWithNew certificate is | |||
OPTIONAL because it is only needed in rare scenarios where other | OPTIONAL because it is only needed in rare scenarios where other | |||
entities may not already trust the old root CA. | entities may not already trust the old root CA. | |||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 3.4. | Section 3.4. | |||
The message sequence for this PKI management operation is as given | The message sequence for this PKI management operation is as given | |||
above, with the following specific content: | above, with the following specific content: | |||
1 the infoType OID to use is id-it-rootCaCert in the request and id- | 1. the infoType OID to use is id-it-rootCaCert in the request and | |||
it-rootCaKeyUpdate in the response | id-it-rootCaKeyUpdate in the response | |||
2 the infoValue of the request SHOULD contain the root CA | 2. the infoValue of the request SHOULD contain the root CA | |||
certificate the update is requested for | certificate the update is requested for | |||
3 if present, the infoValue of the response MUST be a | 3. if present, the infoValue of the response MUST be a | |||
RootCaKeyUpdateContent structure | RootCaKeyUpdateContent structure | |||
Detailed Description of infoValue Field of genm: | Detailed Description of the infoValue Field of genm: | |||
infoValue RECOMMENDED | infoValue RECOMMENDED | |||
-- MUST contain the root CA certificate to be updated if needed | -- MUST contain the root CA certificate to be updated if needed | |||
-- for unique identification | -- for unique identification | |||
Detailed Description of infoValue Field of genp: | Detailed Description of the infoValue Field of genp: | |||
infoValue OPTIONAL | infoValue OPTIONAL | |||
-- MUST be absent if no update of the root CA certificate is | -- MUST be absent if no update of the root CA certificate is | |||
-- available | -- available | |||
-- MUST be present if an update of the root CA certificate | -- MUST be present if an update of the root CA certificate | |||
-- is available and MUST be of type RootCaKeyUpdateContent | -- is available and MUST be of type RootCaKeyUpdateContent | |||
newWithNew REQUIRED | newWithNew REQUIRED | |||
-- MUST be present if infoValue is present | -- MUST be present if infoValue is present | |||
-- MUST contain the new root CA certificate | -- MUST contain the new root CA certificate | |||
newWithOld REQUIRED | newWithOld REQUIRED | |||
skipping to change at page 57, line 12 ¶ | skipping to change at line 2580 ¶ | |||
-- MUST contain a certificate containing the old public | -- MUST contain a certificate containing the old public | |||
-- root CA key signed with the new private root CA key | -- root CA key signed with the new private root CA key | |||
4.3.3. Get Certificate Request Template | 4.3.3. Get Certificate Request Template | |||
This PKI management operation can be used by an EE to request a | This PKI management operation can be used by an EE to request a | |||
template with parameters for future certificate requests. | template with parameters for future certificate requests. | |||
An EE requests certificate request parameters from the PKI management | An EE requests certificate request parameters from the PKI management | |||
entity by sending a general message with OID id-it-certReqTemplate as | entity by sending a general message with OID id-it-certReqTemplate as | |||
specified in CMP Updates Section 2.16 [I-D.ietf-lamps-cmp-updates]. | specified in Section 2.16 of CMP Updates [RFC9480]. The EE MAY | |||
The EE MAY indicate the certificate profile to use in the id-it- | indicate the certificate profile to use in the id-it-certProfile | |||
certProfile extension of the generalInfo field in the PKIHeader of | extension of the generalInfo field in the PKIHeader of the general | |||
the general message as described in Section 3.1. The PKI management | message as described in Section 3.1. The PKI management entity | |||
entity responds with a general response with the same OID that either | responds with a general response with the same OID that either | |||
contains requirements on the certificate request template, or with no | contains requirements on the certificate request template or no | |||
content in case no specific requirements are imposed by the PKI. The | content in case no specific requirements are imposed by the PKI. The | |||
CertReqTemplateValue contains requirements on certificate fields and | CertReqTemplateValue contains requirements on certificate fields and | |||
extensions in a certTemplate. Optionally it contains a keySpec field | extensions in a certTemplate. Optionally, it contains a keySpec | |||
containing requirements on algorithms acceptable for key pair | field containing requirements on algorithms acceptable for key pair | |||
generation. | generation. | |||
The EE SHOULD follow the requirements from the received CertTemplate, | The EE SHOULD follow the requirements from the received CertTemplate | |||
by including in the certificate requests all the fields requested, | by including in the certificate requests all the fields requested, | |||
taking over all the field values provided and filling in any | taking over all the field values provided and filling in any | |||
remaining fields values. The EE SHOULD NOT add further fields, name | remaining fields values. The EE SHOULD NOT add further fields, name | |||
components, and extensions or their (sub-)components. If deviating | components, and extensions or their (sub)components. If deviating | |||
from the recommendations of the template, the certificate request | from the recommendations of the template, the certificate request | |||
might be rejected. | might be rejected. | |||
Note: We deliberately do not use "MUST" or "MUST NOT" here in order | Note: We deliberately do not use "MUST" or "MUST NOT" here in order | |||
to allow more flexibility in case the rules given here are not | to allow more flexibility in case the rules given here are not | |||
sufficient for specific scenarios. The EE can populate the | sufficient for specific scenarios. The EE can populate the | |||
certificate request as wanted and ignore any of the requirements | certificate request as wanted and ignore any of the requirements | |||
contained in the CertReqTemplateValue. On the other hand, a PKI | contained in the CertReqTemplateValue. On the other hand, a PKI | |||
management entity is free to ignore or replace any parts of the | management entity is free to ignore or replace any parts of the | |||
content of the certificate request provided by the EE. The | content of the certificate request provided by the EE. The | |||
CertReqTemplate PKI management operation offers means to ease a joint | CertReqTemplate PKI management operation offers means to ease a joint | |||
understanding which fields and/or which field values should be used. | understanding of which fields and/or which field values should be | |||
An example is provided in Appendix A. | used. An example is provided in Appendix A. | |||
In case a field of type Name, e.g., subject, is present in the | In case a field of type Name, e.g., subject, is present in the | |||
CertTemplate but has the value NULL-DN (i.e., has an empty list of | CertTemplate but has the value NULL-DN (i.e., has an empty list of | |||
RDN components), the field SHOULD be included in the certificate | relative distinguished name (RDN) components), the field SHOULD be | |||
request and filled with content provided by the EE. Similarly, in | included in the certificate request and filled with content provided | |||
case an X.509v3 extension is present but its extnValue is empty, this | by the EE. Similarly, in case an X.509v3 extension is present but | |||
means that the extension SHOULD be included and filled with content | its extnValue is empty, this means that the extension SHOULD be | |||
provided by the EE. In case a Name component, for instance a common | included and filled with content provided by the EE. In case a Name | |||
name or serial number, is given but has an empty string value, the EE | component, for instance, a common name or serial number, is given but | |||
SHOULD fill in a value. Similarly, in case an extension has sub- | has an empty string value, the EE SHOULD fill in a value. Similarly, | |||
components (e.g., an IP address in a SubjectAltName field) with empty | in case an extension has subcomponents (e.g., an IP address in a | |||
value, the EE SHOULD fill in a value. | SubjectAltName field) with empty values, the EE SHOULD fill in a | |||
value. | ||||
The EE MUST ignore (i.e., not include and fill in) empty fields, | The EE MUST ignore (i.e., not include) empty fields, extensions, and | |||
extensions, and sub-components that it does not understand or does | subcomponents that it does not understand or does not know suitable | |||
not know suitable values to be filled in. | values to fill in. | |||
The publicKey field of type SubjectPublicKeyInfo in the CertTemplate | The publicKey field of type SubjectPublicKeyInfo in the CertTemplate | |||
of the CertReqTemplateValue MUST be omitted. In case the PKI | of the CertReqTemplateValue MUST be omitted. In case the PKI | |||
management entity wishes to make stipulation on algorithms the EE may | management entity wishes to make a stipulation on algorithms the EE | |||
use for key generation, this MUST be specified using the keySpec | may use for key generation, this MUST be specified using the keySpec | |||
field as specified in CMP Updates Section 2.16 | field as specified in Section 2.16 of CMP Updates [RFC9480]. | |||
[I-D.ietf-lamps-cmp-updates]. | ||||
The keySpec field, if present, specifies the public key types | The keySpec field, if present, specifies the public key types | |||
optionally with parameters, and/or RSA key lengths for which a | optionally with parameters and/or RSA key lengths for which a | |||
certificate may be requested. | certificate may be requested. | |||
The value of a keySpec element with the OID id-regCtrl-algId, as | The value of a keySpec element with the OID id-regCtrl-algId, as | |||
specified in CMP Updates Section 2.16 [I-D.ietf-lamps-cmp-updates], | specified in Section 2.16 of CMP Updates [RFC9480], MUST be of type | |||
MUST be of type AlgorithmIdentifier and give an algorithm other than | AlgorithmIdentifier and give an algorithm other than RSA. For | |||
RSA. For EC keys the curve information MUST be specified as | Elliptic Curve (EC) keys, the curve information MUST be specified as | |||
described in the respective standard documents. | described in the respective standard documents. | |||
The value of a keySpec element with the OID id-regCtrl-rsaKeyLen, as | The value of a keySpec element with the OID id-regCtrl-rsaKeyLen, as | |||
specified in CMP Updates Section 2.16 [I-D.ietf-lamps-cmp-updates], | specified in Section 2.16 of CMP Updates [RFC9480], MUST be a | |||
MUST be a positive integer value and give an RSA key length. | positive integer value and give an RSA key length. | |||
In the CertTemplate of the CertReqTemplateValue the serialNumber, | In the CertTemplate of the CertReqTemplateValue, the serialNumber, | |||
signingAlg, issuerUID, and subjectUID fields MUST be omitted. | signingAlg, issuerUID, and subjectUID fields MUST be omitted. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | The specific prerequisites augmenting the prerequisites in | |||
Section 3.4 is as follows: | ||||
* When using the generalInfo field certProfile, the EE MUST know the | * When using the generalInfo field certProfile, the EE MUST know the | |||
identifier needed to indicate the requested certificate profile. | identifier needed to indicate the requested certificate profile. | |||
The message sequence for this PKI management operation is as given | The message sequence for this PKI management operation is as given | |||
above, with the following specific content: | above, with the following specific content: | |||
1 the infoType OID to use is id-it-certReqTemplate | 1. the infoType OID to use is id-it-certReqTemplate | |||
2 the id-it-certProfile generalInfo field in the header of the | 2. the id-it-certProfile generalInfo field in the header of the | |||
request MAY contain the name of the requested certificate request | request MAY contain the name of the requested certificate request | |||
template | template | |||
3 the infoValue of the request MUST be absent | 3. the infoValue of the request MUST be absent | |||
4 if present, the infoValue of the response MUST be a | 4. if present, the infoValue of the response MUST be a | |||
CertReqTemplateValue containing a CertTemplate structure and an | CertReqTemplateValue containing a CertTemplate structure and an | |||
optional keySpec field | optional keySpec field | |||
Detailed Description of infoValue Field of genp: | Detailed Description of the infoValue Field of genp: | |||
InfoValue OPTIONAL | InfoValue OPTIONAL | |||
-- MUST be absent if no requirements are available | -- MUST be absent if no requirements are available | |||
-- MUST be present if the PKI management entity has any | -- MUST be present if the PKI management entity has any | |||
-- requirements on the contents of the certificate template | -- requirements on the contents of the certificate template | |||
certTemplate REQUIRED | certTemplate REQUIRED | |||
-- MUST be present if infoValue is present | -- MUST be present if infoValue is present | |||
-- MUST contain the required CertTemplate structure elements | -- MUST contain the required CertTemplate structure elements | |||
-- The SubjectPublicKeyInfo field MUST be absent | -- The SubjectPublicKeyInfo field MUST be absent | |||
keySpec OPTIONAL | keySpec OPTIONAL | |||
skipping to change at page 59, line 40 ¶ | skipping to change at line 2695 ¶ | |||
-- MUST be present if the PKI management entity has any | -- MUST be present if the PKI management entity has any | |||
-- requirements on the keys generated | -- requirements on the keys generated | |||
-- MUST contain a sequence of one AttributeTypeAndValue per | -- MUST contain a sequence of one AttributeTypeAndValue per | |||
-- supported algorithm with attribute id-regCtrl-algId or | -- supported algorithm with attribute id-regCtrl-algId or | |||
-- id-regCtrl-rsaKeyLen | -- id-regCtrl-rsaKeyLen | |||
4.3.4. CRL Update Retrieval | 4.3.4. CRL Update Retrieval | |||
This PKI management operation can be used by an EE to request a new | This PKI management operation can be used by an EE to request a new | |||
CRL. If a CA offers methods to access a CRL, it may include CRL | CRL. If a CA offers methods to access a CRL, it may include CRL | |||
distribution points or authority information access extensions as | distribution points or authority information access extensions into | |||
specified in RFC 5280 [RFC5280] into the issued certificates. In | the issued certificates as specified in [RFC5280]. In addition, CMP | |||
addition, CMP offers CRL provisioning functionality as part of the | offers CRL provisioning functionality as part of the PKI management | |||
PKI management operation. | operation. | |||
An EE requests a CRL update from the PKI management entity by sending | An EE requests a CRL update from the PKI management entity by sending | |||
a general message with OID id-it-crlStatusList. The EE MUST include | a general message with OID id-it-crlStatusList. The EE MUST include | |||
the CRL source identifying the requested CRL and, if available, the | the CRL source identifying the requested CRL and, if available, the | |||
thisUpdate time of the most current CRL instance it already has, as | thisUpdate time of the most current CRL instance it already has, as | |||
specified in CMP Updates Section 2.17 [I-D.ietf-lamps-cmp-updates]. | specified in Section 2.17 of CMP Updates [RFC9480]. The PKI | |||
The PKI management entity MUST respond with a general response with | management entity MUST respond with a general response with OID id- | |||
OID id-it-crls. | it-crls. | |||
The EE MUST identify the requested CRL either by a CRL distribution | The EE MUST identify the requested CRL either by a CRL distribution | |||
point name or issuer name. | point name or issuer name. | |||
Note: CRL distribution point names can be obtained from a | Note: CRL distribution point names can be obtained from a | |||
cRLDistributionPoints extension of a certificate to be validated or | cRLDistributionPoints extension of a certificate to be validated or | |||
from an issuingDistributionPoint extension of the CRL to be updated. | from an issuingDistributionPoint extension of the CRL to be updated. | |||
CRL issuer names can be obtained from the cRLDistributionPoints | CRL issuer names can be obtained from the cRLDistributionPoints | |||
extension of a certificate, from the issuer field of the authority | extension of a certificate, from the issuer field of the authority | |||
key identifier extension of a certificate or CRL, and from the issuer | key identifier extension of a certificate or CRL, and from the issuer | |||
field of a certificate or CRL. | field of a certificate or CRL. | |||
If a thisUpdate value was given, the PKI management entity MUST | If a thisUpdate value was given, the PKI management entity MUST | |||
return the latest CRL available from the referenced source if this | return the latest CRL available from the referenced source if this | |||
CRL is more recent than the given thisUpdate time. If no thisUpdate | CRL is more recent than the given thisUpdate time. If no thisUpdate | |||
value was given, it MUST return the latest CRL available from the | value was given, it MUST return the latest CRL available from the | |||
referenced source. In all other cases the infoValue in the response | referenced source. In all other cases, the infoValue in the response | |||
message MUST be absent. | message MUST be absent. | |||
The PKI management entity should treat a CRL distribution point name | The PKI management entity should treat a CRL distribution point name | |||
as an internal pointer to identify a CRL that is directly available | as an internal pointer to identify a CRL that is directly available | |||
at the PKI management entity. It is not intended as a way to fetch | at the PKI management entity. It is not intended as a way to fetch | |||
an arbitrary CRL from an external location, as this location may be | an arbitrary CRL from an external location, as this location may be | |||
unavailable to that PKI management entity. | unavailable to that PKI management entity. | |||
In addition to the prerequisites specified in Section 3.4, the EE | In addition to the prerequisites specified in Section 3.4, the EE | |||
MUST know which CRL to request. | MUST know which CRL to request. | |||
Note: If the EE does not want to request a specific CRL it MAY use | Note: If the EE does not want to request a specific CRL, it MAY | |||
instead a general message with OID id-it-currentCrl as specified in | instead use a general message with OID id-it-currentCrl as specified | |||
RFC 4210 Section 5.3.19.6 [RFC4210]. | in Section 5.3.19.6 of [RFC4210]. | |||
The message sequence for this PKI management operation is as given | The message sequence for this PKI management operation is as given | |||
above, with the following specific content: | above, with the following specific content: | |||
1 the infoType OID to use is id-it-crlStatusList in the request and | 1. the infoType OID to use is id-it-crlStatusList in the request and | |||
id-it-crls in the response | id-it-crls in the response | |||
2 the infoValue of the request MUST be present and contain a | 2. the infoValue of the request MUST be present and contain a | |||
sequence of one CRLStatus structure | sequence of one CRLStatus structure | |||
3 if present, the infoValue of the response MUST contain a sequence | 3. if present, the infoValue of the response MUST contain a sequence | |||
of one CRL | of one CRL | |||
Detailed Description of infoValue Field of genm: | Detailed Description of the infoValue Field of genm: | |||
infoValue REQUIRED | infoValue REQUIRED | |||
-- MUST contain a sequence of one CRLStatus element | -- MUST contain a sequence of one CRLStatus element | |||
source REQUIRED | source REQUIRED | |||
-- MUST contain the dpn choice of type DistributionPointName if | -- MUST contain the dpn choice of type DistributionPointName if | |||
-- the CRL distribution point name is available | -- the CRL distribution point name is available | |||
-- Otherwise, MUST contain the issuer choice identifying the CA | -- Otherwise, MUST contain the issuer choice identifying the CA | |||
-- that issues the CRL. It MUST contain the issuer DN in the | -- that issues the CRL. It MUST contain the issuer DN in the | |||
-- directoryName field of a GeneralName element. | -- directoryName field of a GeneralName element. | |||
thisUpdate OPTIONAL | thisUpdate OPTIONAL | |||
-- MUST contain the thisUpdate field of the latest CRL the EE | -- MUST contain the thisUpdate field of the latest CRL the EE | |||
-- has got from the issuer specified in the given dpn or | -- has gotten from the issuer specified in the given dpn or | |||
-- issuer field | -- issuer field | |||
-- MUST be omitted if the EE does not have any instance of the | -- MUST be omitted if the EE does not have any instance of the | |||
-- requested CRL | -- requested CRL | |||
Detailed Description of infoValue Field of genp: | Detailed Description of the infoValue Field of genp: | |||
infoValue OPTIONAL | infoValue OPTIONAL | |||
-- MUST be absent if no CRL to be returned is available | -- MUST be absent if no CRL to be returned is available | |||
-- MUST contain a sequence of one CRL update from the referenced | -- MUST contain a sequence of one CRL update from the referenced | |||
-- source, if a thisUpdate value was not given or a more recent | -- source if a thisUpdate value was not given or a more recent | |||
-- CRL is available | -- CRL is available | |||
4.4. Handling Delayed Delivery | 4.4. Handling Delayed Delivery | |||
This is a variant of all PKI management operations described in this | This is a variant of all PKI management operations described in this | |||
document. It is initiated in case a PKI management entity cannot | document. It is initiated in case a PKI management entity cannot | |||
respond to a request message in a timely manner, typically due to | respond to a request message in a timely manner, typically due to | |||
offline or asynchronous upstream communication, or due to delays in | offline or asynchronous upstream communication or due to delays in | |||
handling the request. The polling mechanism has been specified in | handling the request. The polling mechanism has been specified in | |||
RFC 4210 Section 5.3.22 [RFC4210] and updated by | Section 5.3.22 of [RFC4210] and updated by [RFC9480]. | |||
[I-D.ietf-lamps-cmp-updates]. | ||||
Depending on the PKI architecture, the entity initiating delayed | Depending on the PKI architecture, the entity initiating delayed | |||
delivery is not necessarily the PKI management entity directly | delivery is not necessarily the PKI management entity directly | |||
addressed by the EE. | addressed by the EE. | |||
When initiating delayed delivery of a message received from an EE, | When initiating delayed delivery of a message received from an EE, | |||
the PKI management entity MUST respond with a message including the | the PKI management entity MUST respond with a message including the | |||
status "waiting". In response to an ir/cr/kur/p10cr message it must | status "waiting". In response to an ir/cr/kur/p10cr message, it must | |||
place the status "waiting" in an ip/cp/kup message, otherwise in an | place the status "waiting" in an ip/cp/kup message and for responses | |||
error message. On receiving this response, the EE MUST store in its | to other request message types in an error message. On receiving | |||
transaction context the senderNonce of the preceding request message | this response, the EE MUST store in its transaction context the | |||
because this value will be needed for checking the recipNonce of the | senderNonce of the preceding request message because this value will | |||
final response to be received after polling. It sends a poll request | be needed for checking the recipNonce of the final response to be | |||
with certReqId 0 if referring to the CertResponse element contained | received after polling. It sends a poll request with certReqId 0 if | |||
in the ip/cp/kup message, else -1 to refer to the whole message. In | referring to the CertResponse element contained in the ip/cp/kup | |||
case the final response is not yet available, the PKI management | message, else -1 to refer to the whole message. In case the final | |||
entity that initiated the delayed delivery MUST answer with a poll | response is not yet available, the PKI management entity that | |||
response, with the same certReqId. The included checkAfter time | initiated the delayed delivery MUST answer with a poll response with | |||
value indicates the minimum number of seconds that should elapse | the same certReqId. The included checkAfter time value indicates the | |||
before the EE sends a new pollReq message to the PKI management | minimum number of seconds that should elapse before the EE sends a | |||
entity. Polling earlier than indicated by the checkAfter value may | new pollReq message to the PKI management entity. Polling earlier | |||
increase the number of messages roundtrips. This is repeated until a | than indicated by the checkAfter value may increase the number of | |||
final response is available or any party involved gives up on the | message round trips. This is repeated until a final response is | |||
current PKI management operation, i.e., a timeout occurs. | available or any party involved gives up on the current PKI | |||
management operation, i.e., a timeout occurs. | ||||
When the PKI management entity that initiated delayed delivery can | When the PKI management entity that initiated delayed delivery can | |||
provide the final response for the original request message of the | provide the final response for the original request message of the | |||
EE, it MUST send this response to the EE. Using this response, the | EE, it MUST send this response to the EE. Using this response, the | |||
EE can continue the current PKI management operation as usual. | EE can continue the current PKI management operation as usual. | |||
No specific prerequisites apply in addition to those of the | No specific prerequisites apply in addition to those of the | |||
respective PKI management operation. | respective PKI management operation. | |||
Message Flow: | Message Flow: | |||
skipping to change at page 63, line 15 ¶ | skipping to change at line 2830 ¶ | |||
Step# EE PKI management entity | Step# EE PKI management entity | |||
1 format request | 1 format request | |||
message | message | |||
2 -> request -> | 2 -> request -> | |||
3 handle or forward | 3 handle or forward | |||
request | request | |||
4 format ip/cp/kup/error | 4 format ip/cp/kup/error | |||
with status "waiting" | with status "waiting" | |||
response in case no | response in case no | |||
immediate final response | immediate final response | |||
is available, | is available | |||
5 <- ip/cp/kup/error <- | 5 <- ip/cp/kup/error <- | |||
6 handle | 6 handle | |||
ip/cp/kup/error | ip/cp/kup/error | |||
with status | with status | |||
"waiting" | "waiting" | |||
-------------------------- start polling -------------------------- | -------------------------- start polling -------------------------- | |||
7 format pollReq | 7 format pollReq | |||
8 -> pollReq -> | 8 -> pollReq -> | |||
skipping to change at page 63, line 45 ¶ | skipping to change at line 2860 ¶ | |||
12 handle pollRep | 12 handle pollRep | |||
13 let checkAfter | 13 let checkAfter | |||
time elapse and | time elapse and | |||
continue with | continue with | |||
step 7 | step 7 | |||
----------------- end polling, continue as usual ------------------ | ----------------- end polling, continue as usual ------------------ | |||
14 format or receive | 14 format or receive | |||
final response on | final response on | |||
original request | the original request | |||
15 <- response <- | 15 <- response <- | |||
16 handle final | 16 handle final | |||
response | response | |||
Detailed Message Description: | Detailed Message Description: | |||
Response with Status "waiting" -- ip/cp/kup/error | Response with Status "waiting" -- ip/cp/kup/error | |||
Field Value | Field Value | |||
skipping to change at page 64, line 21 ¶ | skipping to change at line 2883 ¶ | |||
body | body | |||
-- As described for the respective PKI management operation, with | -- As described for the respective PKI management operation, with | |||
-- the following adaptations: | -- the following adaptations: | |||
status REQUIRED -- in case of ip/cp/kup | status REQUIRED -- in case of ip/cp/kup | |||
pKIStatusInfo REQUIRED -- in case of error response | pKIStatusInfo REQUIRED -- in case of error response | |||
-- PKIStatusInfo structure MUST be present | -- PKIStatusInfo structure MUST be present | |||
status REQUIRED | status REQUIRED | |||
-- MUST be status "waiting" | -- MUST be status "waiting" | |||
statusString OPTIONAL | statusString OPTIONAL | |||
-- MAY be any human-readable text for debugging, logging or to | -- MAY be any human-readable text for debugging, for logging, or | |||
-- display in a GUI | -- to display in a GUI | |||
failInfo PROHIBITED | failInfo PROHIBITED | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
extraCerts OPTIONAL | extraCerts OPTIONAL | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
Polling Request -- pollReq | Polling Request -- pollReq | |||
skipping to change at page 65, line 25 ¶ | skipping to change at line 2935 ¶ | |||
body | body | |||
-- The message indicates the delay after which the EE SHOULD | -- The message indicates the delay after which the EE SHOULD | |||
-- send another pollReq message for this transaction | -- send another pollReq message for this transaction | |||
pollRep REQUIRED | pollRep REQUIRED | |||
certReqId REQUIRED | certReqId REQUIRED | |||
-- MUST be 0 if referring to a CertResponse element, else -1 | -- MUST be 0 if referring to a CertResponse element, else -1 | |||
checkAfter REQUIRED | checkAfter REQUIRED | |||
-- MUST be the time in seconds to elapse before a new pollReq | -- MUST be the time in seconds to elapse before a new pollReq | |||
-- should be sent | -- should be sent | |||
reason OPTIONAL | reason OPTIONAL | |||
-- MAY be any human-readable text for debugging, logging or to | -- MAY be any human-readable text for debugging, for logging, or | |||
-- display in a GUI | -- to display in a GUI | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 | -- As described in Section 3.2 | |||
-- MUST use the same credentials as in the first response | -- MUST use the same credentials as in the first response | |||
-- message of the PKI management operation | -- message of the PKI management operation | |||
extraCerts RECOMMENDED | extraCerts RECOMMENDED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
-- MAY be omitted if the message size is critical and the EE has | -- MAY be omitted if the message size is critical and the EE has | |||
-- cached the CMP protection certificate from the first | -- cached the CMP protection certificate from the first | |||
-- response message of the PKI management operation | -- response message of the PKI management operation | |||
Final Response - Any Type of Response Message | Final Response - Any Type of Response Message | |||
Field Value | Field Value | |||
header | header | |||
-- MUST be the header as described for the response message | -- MUST be the header, as described for the response message | |||
-- of the respective PKI management operation | -- of the respective PKI management operation | |||
body | body | |||
-- The response of the PKI management entity to the initial | -- The response of the PKI management entity to the initial | |||
-- request as described in the respective PKI management | -- request, as described in the respective PKI management | |||
-- operation | -- operation | |||
protection REQUIRED | protection REQUIRED | |||
-- MUST be as described for the response message of the | -- MUST be as described for the response message of the | |||
-- respective PKI management operation | -- respective PKI management operation | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- MUST be as described for the response message of the | -- MUST be as described for the response message of the | |||
-- respective PKI management operation | -- respective PKI management operation | |||
5. PKI Management Entity Operations | 5. PKI Management Entity Operations | |||
This section focuses on request processing by a PKI management | This section focuses on request processing by a PKI management | |||
entity. Depending on the network and PKI solution design, this can | entity. Depending on the network and PKI solution design, this can | |||
be an RA or CA, any of which may include protocol conversion or | be an RA or CA, any of which may include protocol conversion or | |||
central key generation (i.e., acting as a KGA). | central key generation (i.e., acting as a KGA). | |||
A PKI management entity may directly respond to request messages from | A PKI management entity may directly respond to request messages from | |||
downstream and report errors. In case the PKI management entity is | downstream and report errors. In case the PKI management entity is | |||
an RA it typically forwards the received request messages upstream | an RA, it typically forwards the received request messages upstream | |||
after checking them and forwards respective response messages | after checking them and forwards respective response messages | |||
downstream. Besides responding to messages or forwarding them, a PKI | downstream. Besides responding to messages or forwarding them, a PKI | |||
management entity may request or revoke certificates on behalf of | management entity may request or revoke certificates on behalf of | |||
EEs. A PKI management entity may also need to manage its own | EEs. A PKI management entity may also need to manage its own | |||
certificates and thus act as an EE using the PKI management | certificates and thus act as an EE using the PKI management | |||
operations specified in Section 4. | operations specified in Section 4. | |||
5.1. Responding to Requests | 5.1. Responding to Requests | |||
The PKI management entity terminating the PKI management operation at | The PKI management entity terminating the PKI management operation at | |||
CMP level MUST respond to all received requests by returning a | CMP level MUST respond to all received requests by returning a | |||
related CMP response message or an error. Any intermediate PKI | related CMP response message or an error. Any intermediate PKI | |||
management entity MAY respond depending on the PKI configuration and | management entity MAY respond, depending on the PKI configuration and | |||
policy. | policy. | |||
In addition to the checks described in Section 3.5, the responding | In addition to the checks described in Section 3.5, the responding | |||
PKI management entity MUST check that a request that initiates a new | PKI management entity MUST check that a request that initiates a new | |||
PKI management operation does not use a transactionID that is | PKI management operation does not use a transactionID that is | |||
currently in use. The failInfo bit value to use is | currently in use. The failInfo bit value to use is | |||
transactionIdInUse as described in Section 3.6.4. If any of these | transactionIdInUse as described in Section 3.6.4. If any of these | |||
verification steps or any of the essential checks described in | verification steps or any of the essential checks described in | |||
Section 3.5 and in the following subsections fails, the PKI | Section 3.5 and in the following subsections fails, the PKI | |||
management entity MUST proceed as described in Section 3.6. | management entity MUST proceed as described in Section 3.6. | |||
skipping to change at page 67, line 16 ¶ | skipping to change at line 3020 ¶ | |||
An ir/cr/kur/p10cr message is used to request a certificate as | An ir/cr/kur/p10cr message is used to request a certificate as | |||
described in Section 4.1. The responding PKI management entity MUST | described in Section 4.1. The responding PKI management entity MUST | |||
proceed as follows unless it initiates delayed delivery as described | proceed as follows unless it initiates delayed delivery as described | |||
in Section 5.1.5. | in Section 5.1.5. | |||
The PKI management entity MUST check the message body according to | The PKI management entity MUST check the message body according to | |||
the applicable requirements from Section 4.1. Possible failInfo bit | the applicable requirements from Section 4.1. Possible failInfo bit | |||
values used for error reporting in case a check failed include | values used for error reporting in case a check failed include | |||
badCertId and badCertTemplate. It MUST verify the presence and value | badCertId and badCertTemplate. It MUST verify the presence and value | |||
of the proof-of-possession (failInfo bit: badPOP), unless central key | of the proof-of-possession (failInfo bit: badPOP) unless central key | |||
generation is requested. In case the special POP value "raVerified" | generation is requested. If a signature-based proof-of-possession is | |||
is given, it should check that the request message was signed using a | present, the PKI management entity MUST verify, based on local PKI | |||
policy, that the subject name in the certTemplate identifies the same | ||||
entity as the subject name in the CMP protection certificate or | ||||
matches the identifier used with MAC-based protection. In case this | ||||
verification fails, the message MUST have been protected by an | ||||
authorized PKI management entity (failInfo bit: notAuthorized). If | ||||
the special POP value "raVerified" is given, the PKI management | ||||
entity should check that the request message was signed using a | ||||
certificate containing the cmcRA extended key usage (failInfo bit: | certificate containing the cmcRA extended key usage (failInfo bit: | |||
notAuthorized). The PKI management entity should also perform any | notAuthorized). The PKI management entity should also perform any | |||
further checks on the certTemplate contents (failInfo: | further checks on the certTemplate contents (failInfo: | |||
badCertTemplate) according to any applicable PKI policy and | badCertTemplate) according to any applicable PKI policy and | |||
certificate profile. | certificate profile. | |||
If the requested certificate is available, the PKI management entity | If the requested certificate is available, the PKI management entity | |||
MUST respond with a positive ip/cp/kup message as described in | MUST respond with a positive ip/cp/kup message as described in | |||
Section 4.1. | Section 4.1. | |||
Note: If central key generation is performed by the responding PKI | Note: If central key generation is performed by the responding PKI | |||
management entity, the responding PKI management entity MUST include | management entity, the responding PKI management entity MUST include | |||
the private key in encrypted form in the response as specified in | the private key in encrypted form in the response as specified in | |||
Section 4.1.6. | Section 4.1.6. | |||
The prerequisites of the respective PKI management operation as | The prerequisites of the respective PKI management operation | |||
specified in Section 4.1 apply. | specified in Section 4.1 apply. | |||
If the EE requested omission of the certConf message, the PKI | If the EE requested omission of the certConf message, the PKI | |||
management entity MUST handle it as described in Section 4.1.1. | management entity MUST handle it as described in Section 4.1.1. | |||
Therefore, it MAY grant this by including the implicitConfirm | Therefore, it MAY grant this by including the implicitConfirm | |||
generalInfo field or include the confirmWaitTime field in the | generalInfo field or including the confirmWaitTime field in the | |||
response header. | response header. | |||
5.1.2. Responding to a Confirmation Message | 5.1.2. Responding to a Confirmation Message | |||
A PKI management entity MUST handle a certConf message if it has | A PKI management entity MUST handle a certConf message if it has | |||
responded before with a positive ip/cp/kup message not granting | responded before with a positive ip/cp/kup message not granting | |||
implicit confirmation. It should check the message body according to | implicit confirmation. It should check the message body according to | |||
the requirements given in Section 4.1.1 (failInfo bit: badCertId) and | the requirements given in Section 4.1.1 (failInfo bit: badCertId) and | |||
MUST react as described there. | MUST react as described there. | |||
The prerequisites of the respective PKI management operation as | The prerequisites of the respective PKI management operation | |||
specified in Section 4.1 apply. | specified in Section 4.1 apply. | |||
5.1.3. Responding to a Revocation Request | 5.1.3. Responding to a Revocation Request | |||
An rr message is used to request revocation of a certificate. The | An rr message is used to request revocation of a certificate. The | |||
responding PKI management entity should check the message body | responding PKI management entity should check the message body | |||
according to the requirements in Section 4.2. It MUST make sure that | according to the requirements in Section 4.2. It MUST make sure that | |||
the referenced certificate exists (failInfo bit: badCertId), has been | the referenced certificate exists (failInfo bit: badCertId), has been | |||
issued by the addressed CA, and is not already expired or revoked | issued by the addressed CA, and is not already expired or revoked | |||
(failInfo bit: certRevoked). On success it MUST respond with a | (failInfo bit: certRevoked). On success, it MUST respond with a | |||
positive rp message as described in Section 4.2. | positive rp message, as described in Section 4.2. | |||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 3.4. | Section 3.4. | |||
5.1.4. Responding to a Support Message | 5.1.4. Responding to a Support Message | |||
A genm message is used to retrieve extra content. The responding PKI | A genm message is used to retrieve extra content. The responding PKI | |||
management entity should check the message body according to the | management entity should check the message body according to the | |||
applicable requirements in Section 4.3 and perform any further checks | applicable requirements in Section 4.3 and perform any further checks | |||
depending on the PKI policy. On success it MUST respond with a genp | depending on the PKI policy. On success, it MUST respond with a genp | |||
message as described there. | message as described there. | |||
Note: The responding PKI management entity may generate the response | Note: The responding PKI management entity may generate the response | |||
from scratch or reuse the contents of previous responses. Therefore, | from scratch or reuse the contents of previous responses. Therefore, | |||
it may be worth caching the body of the response message as long as | it may be worth caching the body of the response message as long as | |||
the contained information is valid and current, such that further | the contained information is valid and current, such that further | |||
requests for the same contents can be answered immediately. | requests for the same contents can be answered immediately. | |||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 3.4. | Section 3.4. | |||
5.1.5. Initiating Delayed Delivery | 5.1.5. Initiating Delayed Delivery | |||
This functional extension can be used by a PKI management entity in | This functional extension can be used by a PKI management entity in | |||
case the response to a request takes longer than usual. In this case | case the response to a request takes longer than usual. In this | |||
the PKI management entity should completely validate the request as | case, the PKI management entity should completely validate the | |||
usual and then start processing the request itself or forward it | request as usual and then start processing the request itself or | |||
further upstream as soon as possible. In the meantime, it MUST | forward it further upstream as soon as possible. In the meantime, it | |||
respond with an ip/cp/kup/error message including the status | MUST respond with an ip/cp/kup/error message including the status | |||
"waiting" and handle subsequent polling as described in Section 4.4. | "waiting" and handle subsequent polling as described in Section 4.4. | |||
Typically, as stated in Section 5.2.3, an intermediate PKI management | Typically, as stated in Section 5.2.3, an intermediate PKI management | |||
entity should not change the sender and recipient nonces even in case | entity should not change the sender and recipient nonces even in case | |||
it modifies a request or a response message. In the special case of | it modifies a request or a response message. In the special case of | |||
delayed delivery initiated by an intermediate PKI management entity, | delayed delivery initiated by an intermediate PKI management entity, | |||
there is an exception. Between the EE and this PKI management | there is an exception. Between the EE and this PKI management | |||
entity, pollReq and pollRep messages are exchanged handling the | entity, pollReq and pollRep messages are exchanged handling the | |||
nonces as usual. Yet when the final response from upstream has | nonces as usual. Yet when the final response from upstream has | |||
arrived at the PKI management entity, this response contains the | arrived at the PKI management entity, this response contains the | |||
recipNonce copied (as usual) from the senderNonce in the original | recipNonce copied (as usual) from the senderNonce in the original | |||
request message. The PKI management entity that initiated the | request message. The PKI management entity that initiated the | |||
delayed delivery MAY replace the recipNonce in the response message | delayed delivery MAY replace the recipNonce in the response message | |||
with the senderNonce of the last received pollReq because the | with the senderNonce of the last received pollReq because the | |||
downstream entities, including the EE, might expect it in this way. | downstream entities, including the EE, might expect it in this way. | |||
Yet the check specified in Section 3.5 allows to alternatively use | Yet the check specified in Section 3.5 allows alternate use of the | |||
the senderNonce of the original request. | senderNonce of the original request. | |||
No specific prerequisites apply in addition to those of the | No specific prerequisites apply in addition to those of the | |||
respective PKI management operation. | respective PKI management operation. | |||
5.2. Forwarding Messages | 5.2. Forwarding Messages | |||
In case the PKI solution consists of intermediate PKI management | In case the PKI solution consists of intermediate PKI management | |||
entities (i.e., LRA or RA), each CMP request message coming from an | entities (i.e., LRA or RA), each CMP request message coming from an | |||
EE or any other downstream PKI management entity MUST either be | EE or any other downstream PKI management entity MUST either be | |||
forwarded to the next (upstream) PKI management entity as described | forwarded to the next (upstream) PKI management entity as described | |||
in this section or answered as described in Section 5.1. Any | in this section, or answered as described in Section 5.1. Any | |||
received response message or a locally generated error message MUST | received response message or a locally generated error message MUST | |||
be forwarded to the next (downstream) PKI entity. | be forwarded to the next (downstream) PKI entity. | |||
In addition to the checks described in Section 3.5, the forwarding | In addition to the checks described in Section 3.5, the forwarding | |||
PKI management entity MAY verify the proof-of-possession for | PKI management entity MAY verify the proof-of-possession for | |||
ir/cr/kur/p10cr messages. If one of these verification procedures | ir/cr/kur/p10cr messages. If one of these verification procedures | |||
fails, the RA proceeds as described in Section 3.6. | fails, the RA proceeds as described in Section 3.6. | |||
A PKI management entity SHOULD NOT change the received message unless | A PKI management entity SHOULD NOT change the received message unless | |||
its role in the PKI system requires it. This is because changes to | its role in the PKI system requires it. This is because changes to | |||
the message header or body imply re-protection. Changes to the | the message header or body imply reprotection. Changes to the | |||
protection breaks end-to-end authentication of the message source. | protection breaks end-to-end authentication of the message source. | |||
Changes to the certificate template in a certificate request breaks | Changes to the certificate template in a certificate request breaks | |||
proof-of-possession. More details are available in the following | proof-of-possession. More details are available in the following | |||
sub-sections. Concrete PKI system specifications may define in more | subsections. Concrete PKI system specifications may define when to | |||
detail when to do so. | do so in more detail. | |||
This is particularly relevant in the upstream communication of a | This is particularly relevant in the upstream communication of a | |||
request message. | request message. | |||
Each forwarding PKI management entity has one or more | Each forwarding PKI management entity has one or more | |||
functionalities. It may | functionalities. It may: | |||
* verify the identities of EEs and make authorization decisions for | * verify the identities of EEs and make authorization decisions for | |||
certification request processing based on local PKI policy, | certification request processing based on local PKI policy, | |||
* add or modify fields of certificate request messages, | * add or modify fields of certificate request messages, | |||
* replace a MAC-based protection by a signature-based protection | * replace a MAC-based protection with a signature-based protection | |||
that can be verified also further upstream, and vice versa, | that can also be verified further upstream and vice versa, | |||
* double-check if the messages transferred back and forth are | * double-check if the messages transferred back and forth are | |||
properly protected and well-formed, | properly protected and well-formed, | |||
* provide an authentic indication that it has performed all required | * provide an authentic indication that it has performed all required | |||
checks, | checks, | |||
* initiate a delayed delivery due to delays transferring messages or | * initiate a delayed delivery due to delays transferring messages or | |||
handling requests, or | handling requests, or | |||
* collect messages from multiple RAs and forward them jointly. | * collect messages from multiple RAs and forward them jointly. | |||
Note: PKI management entities forwarding messages may also store data | Note: PKI management entities forwarding messages may also store data | |||
from a message in a database for later usage or audit purposes. They | from a message in a database for later usage or audit purposes. They | |||
may also support traversal of a network boundary. | may also support traversal of a network boundary. | |||
The decision if a message should be forwarded | The decision if a message should be forwarded is: | |||
* unchanged with the original protection, | * unchanged with the original protection, | |||
* unchanged with an additional protection, or | * unchanged with an additional protection, or | |||
* changed with an additional protection | * changed with an additional protection | |||
depends on the PKI solution design and the associated security policy | depending on the PKI solution design and the associated security | |||
(CP/CPS [RFC3647]). | policy, e.g., as defined in the certificate policy (CP) / | |||
certification practice statement (CPS) documents [RFC3647]. | ||||
A PKI management entity SHOULD add or MAY replace a protection of a | A PKI management entity SHOULD add or MAY replace a protection of a | |||
message if it | message if it | |||
* needs to securely indicate that it has done checks or validations | * needs to securely indicate that it has done checks or validations | |||
on the message to one of the next (upstream) PKI management entity | on the message to one of the next (upstream) PKI management | |||
or | entities or | |||
* needs to protect the message using a key and certificate from a | * needs to protect the message using a key and certificate from a | |||
different PKI. | different PKI. | |||
If remaining end-to-end message authentication is required, an | If retaining end-to-end message authentication is required, an | |||
additional protection SHALL be added instead of replacing the | additional protection SHALL be added instead of replacing the | |||
original protection. | original protection. | |||
A PKI management entity MUST replace a protection of a message if it | A PKI management entity MUST replace a protection of a message if it | |||
* performs changes to the header or the body of the message or | * performs changes to the header or the body of the message or | |||
* needs to convert from or to a MAC-based protection. | * needs to convert from or to a MAC-based protection. | |||
This is particularly relevant in the upstream communication of | This is particularly relevant in the upstream communication of | |||
skipping to change at page 71, line 17 ¶ | skipping to change at line 3224 ¶ | |||
extraCerts in any of the following message adaptations, e.g., to | extraCerts in any of the following message adaptations, e.g., to | |||
sort, add, or delete certificates to support subsequent PKI entities. | sort, add, or delete certificates to support subsequent PKI entities. | |||
This may be particularly helpful to augment upstream messages with | This may be particularly helpful to augment upstream messages with | |||
additional certificates or to reduce the number of certificates in | additional certificates or to reduce the number of certificates in | |||
downstream messages when forwarding to constrained devices. | downstream messages when forwarding to constrained devices. | |||
5.2.1. Not Changing Protection | 5.2.1. Not Changing Protection | |||
This variant means that a PKI management entity forwards a CMP | This variant means that a PKI management entity forwards a CMP | |||
message without changing the header, body, or protection. In this | message without changing the header, body, or protection. In this | |||
case the PKI management entity acts more like a proxy, e.g., on a | case, the PKI management entity acts more like a proxy, e.g., on a | |||
network boundary, implementing no specific RA-like security | network boundary, implementing no specific RA-like security | |||
functionality that requires an authentic indication to the PKI. | functionality that requires an authentic indication to the PKI. | |||
Still the PKI management entity might implement checks that result in | Still, the PKI management entity might implement checks that result | |||
refusing to forward the request message and instead responding as | in refusing to forward the request message and instead responding as | |||
specified in Section 3.6. | specified in Section 3.6. | |||
This variant of forwarding a message or the one described in | This variant of forwarding a message or the one described in | |||
Section 5.2.2.1 MUST be used for kur messages and for central key | Section 5.2.2.1 MUST be used for kur messages and for central key | |||
generation. | generation. | |||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 3.4. | Section 3.4. | |||
5.2.2. Adding Protection and Batching of Messages | 5.2.2. Adding Protection and Batching of Messages | |||
This variant of forwarding a message means that a PKI management | This variant of forwarding a message means that a PKI management | |||
entity adds another protection to PKI management messages before | entity adds another protection to PKI management messages before | |||
forwarding them. | forwarding them. | |||
The nested message is a PKI management message containing a | The nested message is a PKI management message containing a | |||
PKIMessages sequence as its body containing one or more CMP messages. | PKIMessages sequence as its body, containing one or more CMP | |||
messages. | ||||
As specified in the updated Section 5.1.3.4 of RFC 4210 [RFC4210] | As specified in the updated Section 5.1.3.4 of [RFC4210] (also see | |||
(see also CMP Updates Section 2.6 [I-D.ietf-lamps-cmp-updates]) there | Section 2.6 of CMP Updates [RFC9480]), there are various use cases | |||
are various use cases for adding another protection by a PKI | for adding another protection by a PKI management entity. Specific | |||
management entity. Specific procedures are described in more detail | procedures are described in more detail in the following sections. | |||
in the following sections. | ||||
Detailed Message Description: | Detailed Message Description: | |||
Nested Message - nested | Nested Message - nested | |||
Field Value | Field Value | |||
header | header | |||
-- As described in Section 3.1 | -- As described in Section 3.1 | |||
body | body | |||
-- Container to provide additional protection to original | -- Container to provide additional protection to original | |||
-- messages and to bundle request messages or alternatively | -- messages and to bundle request messages or alternatively | |||
-- response messages | -- response messages | |||
PKIMessages REQUIRED | PKIMessages REQUIRED | |||
-- MUST be a sequence of one or more CMP messages | -- MUST be a sequence of one or more CMP messages | |||
protection REQUIRED | protection REQUIRED | |||
-- As described in Section 3.2 using the CMP protection key of | -- As described in Section 3.2, using the CMP protection key of | |||
-- the PKI management entity | -- the PKI management entity | |||
extraCerts REQUIRED | extraCerts REQUIRED | |||
-- As described in Section 3.3 | -- As described in Section 3.3 | |||
5.2.2.1. Adding Protection to a Request Message | 5.2.2.1. Adding Protection to a Request Message | |||
This variant means that a PKI management entity forwards a CMP | This variant means that a PKI management entity forwards a CMP | |||
message while authentically indicating successful validation and | message while authentically indicating successful validation and | |||
approval of a request message without changing the original message | approval of a request message without changing the original message | |||
authentication. | authentication. | |||
By adding a protection using its own CMP protection key the PKI | By adding a protection using its own CMP protection key, the PKI | |||
management entity provides a proof of verifying and approving the | management entity provides a proof of verifying and approving the | |||
message as described above. Thus, the PKI management entity acts as | message, as described above. Thus, the PKI management entity acts as | |||
an actual Registration Authority (RA), which implements important | an actual registration authority (RA), which implements important | |||
security functionality of the PKI. Applying an additional protection | security functionality of the PKI. Applying an additional protection | |||
is specifically relevant when forwarding a message that requests a | is specifically relevant when forwarding a message that requests a | |||
certificate update or central key generation. This is because the | certificate update or central key generation. This is because the | |||
original protection of the EE needs to be preserved while adding an | original protection of the EE needs to be preserved while adding an | |||
indication of approval by the PKI management entity. | indication of approval by the PKI management entity. | |||
The PKI management entity wrapping the original request message in a | The PKI management entity wrapping the original request message in a | |||
nested message structure MUST copy the values of the recipient, | nested message structure MUST copy the values of the senderNonce and | |||
recipNonce, and transactionID header fields of the original message | transactionID header fields of the original message to the respective | |||
to the respective header fields of the nested message and apply | header fields of the nested message and apply signature-based | |||
signature-based protection. The additional signature serves as proof | protection. The additional signature serves as proof of verification | |||
of verification and authorization by this PKI management entity. | and authorization by this PKI management entity. | |||
The PKI management entity receiving such a nested message that | The PKI management entity receiving such a nested message that | |||
contains a single request message MUST validate the additional | contains a single request message MUST validate the additional | |||
protection signature on the nested message and check the | protection signature on the nested message and check the | |||
authorization for the approval it implies. | authorization for the approval it implies. Other fields in the | |||
header of the nested message can be ignored. | ||||
The PKI management entity responding to the request contained in the | The PKI management entity responding to the request contained in the | |||
nested message sends the response message as described in | nested message sends the response message as described in | |||
Section 5.1, without wrapping it in a nested message. | Section 5.1, without wrapping it in a nested message. | |||
Note: When responding to the inner request message, it must be | ||||
considered that the verification and approval activity described in | ||||
this section has already been performed by the PKI management entity | ||||
that protected the nested message. | ||||
Note: This form of nesting messages is characterized by the fact that | Note: This form of nesting messages is characterized by the fact that | |||
the transactionID in the header of the nested message is the same as | the transactionID in the header of the nested message is the same as | |||
the one used in the included message. | the one used in the included message. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | The specific prerequisite augmenting the prerequisites in Section 3.4 | |||
is as follows: | ||||
* The PKI management entity MUST be able to validate the respective | * The PKI management entity MUST be able to validate the respective | |||
request and have the authorization to perform approval of the | request and have the authorization to perform approval of the | |||
request according to the PKI policies. | request according to the PKI policies. | |||
Message Flow: | Message Flow: | |||
Step# PKI management entity PKI management entity | Step# PKI management entity PKI management entity | |||
1 format nested | 1 format nested | |||
2 -> nested -> | 2 -> nested -> | |||
skipping to change at page 73, line 45 ¶ | skipping to change at line 3347 ¶ | |||
A PKI management entity MAY bundle any number of PKI management | A PKI management entity MAY bundle any number of PKI management | |||
messages for batch processing or to transfer a bulk of PKI management | messages for batch processing or to transfer a bulk of PKI management | |||
messages using the nested message structure. In this use case, | messages using the nested message structure. In this use case, | |||
nested messages are used both on the upstream interface for | nested messages are used both on the upstream interface for | |||
transferring request messages towards the next PKI management entity | transferring request messages towards the next PKI management entity | |||
and on its downstream interface for response messages. | and on its downstream interface for response messages. | |||
This PKI management operation is typically used on the interface | This PKI management operation is typically used on the interface | |||
between an LRA and an RA to bundle several messages for offline or | between an LRA and an RA to bundle several messages for offline or | |||
asynchronous delivery. In this case the LRA needs to initiate | asynchronous delivery. In this case, the LRA needs to initiate | |||
delayed delivery as described in Section 5.1.5. If the RA needs | delayed delivery, as described in Section 5.1.5. If the RA needs | |||
different routing information per nested PKI management message | different routing information per the nested PKI management message | |||
provided upstream, a suitable mechanism may need to be implemented to | provided upstream, a suitable mechanism may need to be implemented to | |||
ensure that the downstream delivery of the response is done to the | ensure that the downstream delivery of the response is done to the | |||
right requester. Since this mechanism strongly depends on the | right requester. Since this mechanism strongly depends on the | |||
requirements of the target architecture, it is out of scope of this | requirements of the target architecture, it is out of scope of this | |||
document. | document. | |||
A nested message containing requests is generated locally at the PKI | A nested message containing requests is generated locally at the PKI | |||
management entity. For the upstream nested message, the PKI | management entity. For the upstream nested message, the PKI | |||
management entity acts as a protocol end point and therefore a fresh | management entity acts as a protocol endpoint; therefore, a fresh | |||
transactionID and a fresh senderNonce MUST be used in the header of | transactionID and a fresh senderNonce MUST be used in the header of | |||
the nested message. An upstream nested message may contain request | the nested message. An upstream nested message may contain request | |||
messages, e.g., ir, cr, p10cr, kur, pollReq, certConf, rr, or genm. | messages, e.g., ir, cr, p10cr, kur, pollReq, certConf, rr, or genm. | |||
While building the upstream nested message the PKI management entity | While building the upstream nested message, the PKI management entity | |||
must store the sender, transactionID, and senderNonce fields of all | must store the sender, transactionID, and senderNonce fields of all | |||
bundled messages together with the transactionID of the upstream | bundled messages together with the transactionID of the upstream | |||
nested message. | nested message. | |||
Such an upstream nested message is sent to the next PKI management | Such an upstream nested message is sent to the next PKI management | |||
entity. The upstream PKI management entity that unbundles it MUST | entity. The upstream PKI management entity that unbundles it MUST | |||
handle each of the included request messages as usual. It MUST | handle each of the included request messages as usual. It MUST | |||
answer with a downstream nested message. This downstream nested | answer with a downstream nested message. This downstream nested | |||
message MUST use the transactionID of the upstream nested message and | message MUST use the transactionID of the upstream nested message and | |||
return the senderNonce of the upstream nested message as the | return the senderNonce of the upstream nested message as the | |||
recipNonce of the downstream nested message. The downstream nested | recipNonce of the downstream nested message. The downstream nested | |||
message MUST bundle all available individual response messages (e.g., | message MUST bundle all available individual response messages (e.g., | |||
ip, cp, kup, pollRep, pkiConf, rp, genp, error) for all original | ip, cp, kup, pollRep, pkiConf, rp, genp, or error) for all original | |||
request messages of the upstream nested message. While unbundling | request messages of the upstream nested message. While unbundling | |||
the downstream nested message, the former PKI management entity must | the downstream nested message, the former PKI management entity must | |||
determine lost and unexpected responses based on the previously | determine lost and unexpected responses based on the previously | |||
stored transactionIDs. When it forwards the unbundled responses, any | stored transactionIDs. When it forwards the unbundled responses, any | |||
extra messages MUST be dropped, and any missing response message MUST | extra messages MUST be dropped, and any missing response message MUST | |||
be answered with an error message (failInfo bit: systemUnavail) to | be answered with an error message (failInfo bit: systemUnavail) to | |||
inform the respective requester about the failed certificate | inform the respective requester about the failed certificate | |||
management operation. | management operation. | |||
Note: This form of nesting messages is characterized by the fact that | Note: This form of nesting messages is characterized by the fact that | |||
skipping to change at page 75, line 17 ¶ | skipping to change at line 3410 ¶ | |||
2 -> nested -> | 2 -> nested -> | |||
3 handle or forward nested | 3 handle or forward nested | |||
4 format or receive nested | 4 format or receive nested | |||
5 <- nested <- | 5 <- nested <- | |||
6 handle nested | 6 handle nested | |||
5.2.3. Replacing Protection | 5.2.3. Replacing Protection | |||
The following two alternatives can be used by any PKI management | The following two alternatives can be used by any PKI management | |||
entity forwarding a CMP message with or without changes while | entity forwarding a CMP message with or without changes while | |||
providing its own protection and in this way asserting approval of | providing its own protection and, in this way, asserting approval of | |||
the message. | the message. | |||
If retaining end-to-end message authentication is required, an | If retaining end-to-end message authentication is required, an | |||
additional protection SHALL be added instead of replacing the | additional protection SHALL be added instead of replacing the | |||
original protection. | original protection. | |||
By replacing the existing protection using its own CMP protection key | By replacing the existing protection using its own CMP protection | |||
the PKI management entity provides a proof of verifying and approving | key, the PKI management entity provides a proof of verifying and | |||
the message as described above. Thus, the PKI management entity acts | approving the message as described above. Thus, the PKI management | |||
as an actual Registration Authority (RA), which implements important | entity acts as an actual registration authority (RA), which | |||
security functionality of the PKI. | implements important security functionality of the PKI such as | |||
verifying the proof of requester identity and authorization. | ||||
Before replacing the existing protection by a new protection, the PKI | Note: By replacing the message protection, the binding of a | |||
management entity | signature-based proof-of-possession to the proof-of-identity given by | |||
the original message protection gets lost. To enable the CA to | ||||
verify this binding, the original message can be provided in the | ||||
origPKIMessage generalInfo field. | ||||
Before replacing the existing protection with a new protection, the | ||||
PKI management entity: | ||||
* MUST validate the protection of the received message, | * MUST validate the protection of the received message, | |||
* should check the content of the message, | * should check the content of the message, | |||
* may do any modifications that it wants to perform, and | * may do any modifications that it wants to perform, and | |||
* MUST check that the sender of the original message, as | * MUST check that the sender of the original message, as | |||
authenticated by the message protection, is authorized for the | authenticated by the message protection, is authorized for the | |||
given operation. | given operation. | |||
* for certificate requests, MUST verify the binding of signature- | ||||
based proof-of-possession to the proof-of-identity as described in | ||||
Section 5.1.1. | ||||
These message adaptations MUST NOT be applied to kur messages | These message adaptations MUST NOT be applied to kur messages | |||
described in Section 4.1.3 since their original protection using the | described in Section 4.1.3 since their original protection using the | |||
key and certificate to be updated needs to be preserved. | key and certificate to be updated needs to be preserved. | |||
These message adaptations MUST NOT be applied to certificate request | These message adaptations MUST NOT be applied to certificate request | |||
messages described in Section 4.1.6 for central key generation since | messages described in Section 4.1.6 for central key generation since | |||
their original protection needs to be preserved up to the Key | their original protection needs to be preserved up to the KGA, which | |||
Generation Authority, which needs to use it for encrypting the new | needs to use it for encrypting the new private key for the EE. | |||
private key for the EE. | ||||
In both the kur and central key generation cases, if a PKI management | In both the kur and central key generation cases, if a PKI management | |||
entity needs to state its approval of the original request message it | entity needs to state its approval of the original request message, | |||
MUST provide this using a nested message as specified in | it MUST provide this using a nested message as specified in | |||
Section 5.2.2.1. | Section 5.2.2.1. | |||
When an intermediate PKI management entity modifies a message, it | When an intermediate PKI management entity modifies a message, it | |||
MUST NOT change the transactionID, the senderNonce, or the recipNonce | MUST NOT change the transactionID, the senderNonce, or the | |||
- apart from the exception for the recipNonce given in Section 5.1.5. | recipNonce, apart from the exception for the recipNonce given in | |||
Section 5.1.5. | ||||
5.2.3.1. Not Changing Proof-of-Possession | 5.2.3.1. Not Changing Proof-of-Possession | |||
This variant of forwarding a message means that a PKI management | This variant of forwarding a message means that a PKI management | |||
entity forwards a CMP message with or without modifying the message | entity forwards a CMP message with or without modifying the message | |||
header or body while preserving any included proof-of-possession. | header or body while preserving any included proof-of-possession. | |||
This variant is typically used when an RA replaces an existing MAC- | This variant is typically used when an RA replaces an existing MAC- | |||
based protection by its own signature-based protection, because the | based protection with its own signature-based protection; because the | |||
upstream PKI management entity does not know the respective shared | upstream PKI management entity does not know the respective shared | |||
secret information, replacing the protection is useful. | secret information, replacing the protection is useful. | |||
Note: A signature-based proof-of-possession of a certificate request | Note: A signature-based proof-of-possession of a certificate request | |||
will be broken if any field in the certTemplate structure is changed. | will be broken if any field in the certTemplate structure is changed. | |||
In case the PKI management entity breaks an existing proof-of- | In case the PKI management entity breaks an existing proof-of- | |||
possession, the message adaptation described in Section 5.2.3.2 needs | possession, the message adaptation described in Section 5.2.3.2 needs | |||
to be applied instead. | to be applied instead. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | The specific prerequisite augmenting the prerequisites in Section 3.4 | |||
is as follows: | ||||
* The PKI management entity MUST be able to validate the respective | * The PKI management entity MUST be able to validate the respective | |||
request and have the authorization to perform approval of the | request and have the authorization to perform approval of the | |||
request according to the PKI policies. | request according to the PKI policies. | |||
5.2.3.2. Using raVerified | 5.2.3.2. Using raVerified | |||
This variant of forwarding a message needs to be used if a PKI | This variant of forwarding a message needs to be used if a PKI | |||
management entity breaks any included proof-of-possession in a | management entity breaks any included proof-of-possession in a | |||
certificate request message, for instance because it forwards an ir | certificate request message, for instance, because it forwards an ir | |||
or cr message with modifications of the certTemplate, i.e., | or cr message with modifications of the certTemplate, i.e., | |||
modification, addition, or removal of fields. | modification, addition, or removal of fields. | |||
The PKI management entity MUST verify the proof-of-possession | The PKI management entity MUST verify the proof-of-possession | |||
contained in the original message using the included public key. If | contained in the original message using the included public key. If | |||
successful, the PKI management entity MUST change the popo field | successful, the PKI management entity MUST change the popo field | |||
value to raVerified. | value to raVerified. | |||
Specific prerequisites augmenting the prerequisites in Section 3.4: | Specific prerequisites augmenting the prerequisites in Section 3.4 | |||
are as follows: | ||||
* The PKI management entity MUST be authorized to replace the proof- | * The PKI management entity MUST be authorized to replace the proof- | |||
of-possession (after verifying it) with raVerified. | of-possession (after verifying it) with raVerified. | |||
* The PKI management entity MUST be able to validate the respective | * The PKI management entity MUST be able to validate the respective | |||
request and have the authorization to perform approval of the | request and have the authorization to perform approval of the | |||
request according to the PKI policies. | request according to the PKI policies. | |||
Detailed Description of popo Field of certReq Structure: | Detailed Description of the popo Field of the certReq Structure: | |||
popo | popo | |||
raVerified REQUIRED | raVerified REQUIRED | |||
-- MUST have the value NULL and indicates that the PKI | -- MUST have the value NULL and indicates that the PKI | |||
-- management entity verified the popo of the original message | -- management entity verified the popo of the original message | |||
5.3. Acting on Behalf of other PKI Entities | 5.3. Acting on Behalf of Other PKI Entities | |||
A PKI management entity may need to request a PKI management | A PKI management entity may need to request a PKI management | |||
operation on behalf of another PKI entity. In this case the PKI | operation on behalf of another PKI entity. In this case, the PKI | |||
management entity initiates the respective PKI management operation | management entity initiates the respective PKI management operation | |||
as described in Section 4 acting in the role of the EE. | as described in Section 4, acting in the role of the EE. | |||
Note: The request message protection will not authenticate the EE, | Note: The request message protection will not authenticate the EE, | |||
but the RA acting on behalf of the EE. | but it will authenticate the RA acting on behalf of the EE. | |||
5.3.1. Requesting a Certificate | 5.3.1. Requesting a Certificate | |||
A PKI management entity may use one of the PKI management operations | A PKI management entity may use one of the PKI management operations | |||
described in Section 4.1 to request a certificate on behalf of | described in Section 4.1 to request a certificate on behalf of | |||
another PKI entity. It either generates the key pair itself and | another PKI entity. It either generates the key pair itself and | |||
inserts the new public key in the subjectPublicKey field of the | inserts the new public key in the subjectPublicKey field of the | |||
request certTemplate, or it uses a certificate request received from | request certTemplate, or it uses a certificate request received from | |||
downstream, e.g., by means of a different protocol. In the latter | downstream, e.g., by means of a different protocol. In the latter | |||
case it MUST verify the received proof-of-possession if this proof | case, it MUST verify the received proof-of-possession if this proof | |||
breaks, e.g., due to transformation from PKCS#10 [RFC2986] to CRMF | breaks, e.g., due to transformation from PKCS #10 [RFC2986] to CRMF | |||
[RFC4211] certificate request format. | [RFC4211]. It MUST also verify, based on local PKI policy, that the | |||
subject name in the certTemplate identifies the EE. | ||||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 4.1. | Section 4.1. | |||
Note: An upstream PKI management entity will not be able to | Note: An upstream PKI management entity will not be able to | |||
differentiate this PKI management operation from the one described in | differentiate this PKI management operation from the one described in | |||
Section 5.2.3 because in both cases the message is protected by the | Section 5.2.3 because, in both cases, the message is protected by the | |||
PKI management entity. | PKI management entity. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to the respective PKI management operation given in Section 4.1, with | to the respective PKI management operation given in Section 4.1, with | |||
the following changes: | the following changes: | |||
1 The request messages MUST be signed using the CMP protection key | 1. The request messages MUST be signed using the CMP protection key | |||
of the PKI management entity taking the role of the EE in this | of the PKI management entity taking the role of the EE in this | |||
operation. | operation. | |||
2 If inclusion of a proper proof-of-possession is not possible the | 2. If inclusion of a proper proof-of-possession is not possible, the | |||
PKI management entity MUST verify the POP provided from downstream | PKI management entity MUST verify the POP provided from | |||
and use "raVerified" in its upstream request. | downstream and use "raVerified" in its upstream request. | |||
3. The binding of the proof-of-possession to the proof-of-identity | ||||
of the requesting EE cannot be provided when acting on behalf of | ||||
the EE. | ||||
5.3.2. Revoking a Certificate | 5.3.2. Revoking a Certificate | |||
A PKI management entity may use the PKI management operation | A PKI management entity may use the PKI management operation | |||
described in Section 4.2 to revoke a certificate of another PKI | described in Section 4.2 to revoke a certificate of another PKI | |||
entity. This revocation request message MUST be signed by the PKI | entity. This revocation request message MUST be signed by the PKI | |||
management entity using its own CMP protection key to prove to the | management entity using its own CMP protection key to prove to the | |||
PKI authorization to revoke the certificate on behalf of that PKI | PKI authorization to revoke the certificate on behalf of that PKI | |||
entity. | entity. | |||
No specific prerequisites apply in addition to those specified in | No specific prerequisites apply in addition to those specified in | |||
Section 4.2. | Section 4.2. | |||
Note: An upstream PKI management entity will not be able to | Note: An upstream PKI management entity will not be able to | |||
differentiate this PKI management operation from the ones described | differentiate this PKI management operation from the ones described | |||
in Section 5.2.3. | in Section 5.2.3. | |||
The message sequence for this PKI management operation is identical | The message sequence for this PKI management operation is identical | |||
to that given in Section 4.2, with the following changes: | to that given in Section 4.2, with the following changes: | |||
1 The rr message MUST be signed using the CMP protection key of the | 1. The rr message MUST be signed using the CMP protection key of the | |||
PKI management entity acting on behalf of the EE in this | PKI management entity acting on behalf of the EE in this | |||
operation. | operation. | |||
6. CMP Message Transfer Mechanisms | 6. CMP Message Transfer Mechanisms | |||
CMP messages are designed to be self-contained, such that in | CMP messages are designed to be self-contained, such that, in | |||
principle any reliable transfer mechanism can be used. EEs will | principle, any reliable transfer mechanism can be used. EEs will | |||
typically support only one transfer mechanism. PKI management | typically support only one transfer mechanism. PKI management | |||
entities SHOULD offer HTTP and MAY offer CoAP where required. | entities SHOULD offer HTTP and MAY offer CoAP where required. | |||
Piggybacking of CMP messages on any other reliable transfer protocol | Piggybacking of CMP messages on any other reliable transfer protocol | |||
MAY be used, and file-based transfer MAY be used in case offline | MAY be used, and file-based transfer MAY be used in case offline | |||
transfer is required. | transfer is required. | |||
Independently of the means of transfer, it can happen that messages | Independently of the means of transfer, it can happen that messages | |||
are lost or that a communication partner does not respond. To | are lost or that a communication partner does not respond. To | |||
prevent waiting indefinitely, each PKI entity that sends CMP requests | prevent waiting indefinitely, each PKI entity that sends CMP requests | |||
should use a configurable per-request timeout, and each PKI | should use a configurable per-request timeout, and each PKI | |||
management entity that handles CMP requests should use a configurable | management entity that handles CMP requests should use a configurable | |||
timeout in case a further request message is to be expected from the | timeout in case a further request message is to be expected from the | |||
client side within the same transaction. In this way a hanging | client side within the same transaction. In this way, a hanging | |||
transaction can be closed cleanly with an error as described in | transaction can be closed cleanly with an error as described in | |||
Section 3.6 (failInfo bit: systemUnavail) and related resources (for | Section 3.6 (failInfo bit: systemUnavail), and related resources (for | |||
instance, any cached extraCerts) can be freed. | instance, any cached extraCerts) can be freed. | |||
Moreover, there are various situations where the delivery of messages | Moreover, there are various situations where the delivery of messages | |||
gets delayed. For instance, a serving PKI management entity might | gets delayed. For instance, a serving PKI management entity might | |||
take longer than expected to form a response due to administrative | take longer than expected to form a response due to administrative | |||
processes, resource constraints, or upstream message delivery delays. | processes, resource constraints, or upstream message delivery delays. | |||
The transport layer itself may cause delays, for instance due to | The transport layer itself may cause delays, for instance, due to | |||
offline transport, network segmentation, or intermittent network | offline transport, network segmentation, or intermittent network | |||
connectivity. Part of these issues can be detected and handled at | connectivity. Part of these issues can be detected and handled at | |||
CMP level using pollReq and pollRep messages as described in | CMP level using pollReq and pollRep messages as described in | |||
Section 4.4, while others are better handled at transfer level. | Section 4.4, while others are better handled at transfer level. | |||
Depending on the transfer protocol and system architecture, solutions | Depending on the transfer protocol and system architecture, solutions | |||
for handling delays at transfer level may be present and can be used | for handling delays at transfer level may be present and can be used | |||
for CMP connections, for instance connection re-establishment and | for CMP connections, for instance, connection reestablishment and | |||
message retransmission. | message retransmission. | |||
Note: Long timeout periods are helpful to maximize chances to handle | Note: Long timeout periods are helpful to maximize chances to handle | |||
minor delays at lower layers without the need for polling. | minor delays at lower layers without the need for polling. | |||
Note: When using TCP and similar reliable connection-oriented | Note: When using TCP and similar reliable connection-oriented | |||
transport protocols, which is typical in conjunction with HTTP, there | transport protocols, which is typical in conjunction with HTTP, there | |||
is the option to keep the connection alive over multiple request- | is the option to keep the connection alive over multiple request- | |||
response message pairs. This may improve efficiency. | response message pairs. This may improve efficiency. | |||
When conveying CMP messages in HTTP, CoAP, or MIME-based transfer | When conveying CMP messages in HTTP, CoAP, or MIME-based transfer | |||
protocols, the internet media type "application/pkixcmp" MUST be set | protocols, the Internet media type "application/pkixcmp" MUST be set | |||
for transfer encoding as specified in Section 3.4 of CMP over HTTP | for transfer encoding as specified in Section 3.4 of CMP over HTTP | |||
[RFC6712] and Section 2.4 of CMP over CoAP | [RFC6712] and Section 2.3 of CMP over CoAP [RFC9482]. | |||
[I-D.ietf-ace-cmpv2-coap-transport]. | ||||
6.1. HTTP Transfer | 6.1. HTTP Transfer | |||
This transfer mechanism can be used by a PKI entity to transfer CMP | This transfer mechanism can be used by a PKI entity to transfer CMP | |||
messages over HTTP. If HTTP transfer is used the specifications as | messages over HTTP. If HTTP transfer is used, the specifications | |||
described in [RFC6712] and updated by CMP Updates | described in [RFC6712] and updated by CMP Updates [RFC9480] MUST be | |||
[I-D.ietf-lamps-cmp-updates] MUST be followed. | followed. | |||
PKI management operations MUST use an URI path consisting of '/.well- | PKI management operations MUST use a URI path consisting of '/.well- | |||
known/cmp/' or '/.well-known/cmp/p/<name>/' as specified in CMP | known/cmp' or '/.well-known/cmp/p/<name>' as specified in Section 3.3 | |||
Updates Section 3.3 [I-D.ietf-lamps-cmp-updates]. It SHOULD be | of CMP Updates [RFC9480]. It SHOULD be followed by an operation | |||
followed by an operation label depending on the type of PKI | label depending on the type of PKI management operation. | |||
management operation. | ||||
+============================+====================+=========+ | +============================+====================+=========+ | |||
| PKI Management Operation | URI Path Segment | Details | | | PKI Management Operation | URI Path Segment | Details | | |||
+============================+====================+=========+ | +============================+====================+=========+ | |||
| Enrolling an End Entity to | initialization | Section | | | Enrolling an End Entity to | initialization | Section | | |||
| a New PKI | | 4.1.1 | | | a New PKI | | 4.1.1 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Enrolling an End Entity to | certification | Section | | | Enrolling an End Entity to | certification | Section | | |||
| a Known PKI | | 4.1.2 | | | a Known PKI | | 4.1.2 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Updating a Valid | keyupdate | Section | | | Updating a Valid | keyupdate | Section | | |||
| Certificate | | 4.1.3 | | | Certificate | | 4.1.3 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Enrolling an End Entity | pkcs10 | Section | | | Enrolling an End Entity | pkcs10 | Section | | |||
| Using a PKCS#10 Request | | 4.1.4 | | | Using a PKCS #10 Request | | 4.1.4 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Revoking a Certificate | revocation | Section | | | Revoking a Certificate | revocation | Section | | |||
| | | 4.2 | | | | | 4.2 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Get CA Certificates | getcacerts | Section | | | Get CA Certificates | getcacerts | Section | | |||
| | | 4.3.1 | | | | | 4.3.1 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
| Get Root CA Certificate | getrootupdate | Section | | | Get Root CA Certificate | getrootupdate | Section | | |||
| Update | | 4.3.2 | | | Update | | 4.3.2 | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
skipping to change at page 80, line 46 ¶ | skipping to change at line 3692 ¶ | |||
| | | 5.2.2.2 | | | | | 5.2.2.2 | | |||
| Note: This path element is | | | | | Note: This path element is | | | | |||
| applicable only between | | | | | applicable only between | | | | |||
| PKI management entities. | | | | | PKI management entities. | | | | |||
+----------------------------+--------------------+---------+ | +----------------------------+--------------------+---------+ | |||
Table 1: HTTP URI Path Segment <operation> | Table 1: HTTP URI Path Segment <operation> | |||
If operation labels are used: | If operation labels are used: | |||
* Independently of any variants used (see Sections 4.1.5, 4.1.6, and | * independently of any variants used (see Sections 4.1.5, 4.1.6, and | |||
4.4) the operation label corresponding to the PKI management | 4.4), the operation label corresponding to the PKI management | |||
operation SHALL be used. | operation SHALL be used. | |||
* Any certConf or pollReq messages SHALL be sent to the same | * any certConf or pollReq messages SHALL be sent to the same | |||
endpoint as determined by the PKI management operation. | endpoint as determined by the PKI management operation. | |||
* When a single request message is nested as described in | * when a single request message is nested as described in | |||
Section 5.2.2.1, the label to use SHALL be the same as for the | Section 5.2.2.1, the label to use SHALL be the same as for the | |||
underlying PKI management operation. | underlying PKI management operation. | |||
By sending a request to its preferred endpoint, the PKI entity will | By sending a request to its preferred endpoint, the PKI entity will | |||
recognize via the HTTP response status code whether a configured URI | recognize, via the HTTP response status code, whether a configured | |||
is supported by the PKI management entity. | URI is supported by the PKI management entity. | |||
In case a PKI management entity receives an unexpected HTTP status | In case a PKI management entity receives an unexpected HTTP status | |||
code from upstream, it MUST respond downstream with an error message | code from upstream, it MUST respond downstream with an error message | |||
as described in Section 3.6 using a failInfo bit corresponding to the | as described in Section 3.6, using a failInfo bit corresponding to | |||
status code, e.g., systemFailure. | the status code, e.g., systemFailure. | |||
For certificate management the major security goal is integrity and | For certificate management, the major security goal is integrity and | |||
data origin authentication. For delivery of centrally generated | data origin authentication. For delivery of centrally generated | |||
keys, also confidentiality is a must. These goals are sufficiently | keys, confidentiality is also a must. These goals are sufficiently | |||
achieved by CMP itself, also in an end-to-end fashion. | achieved by CMP itself, also in an end-to-end fashion. | |||
If a second line of defense is required or general privacy concerns | If a second line of defense is required or general privacy concerns | |||
exist, TLS can be used to provide confidentiality on a hop-by-hop | exist, TLS can be used to provide confidentiality on a hop-by-hop | |||
basis. TLS should be used with certificate-based authentication to | basis. TLS should be used with certificate-based authentication to | |||
further protect the HTTP transfer as described in [RFC9110]. In | further protect the HTTP transfer as described in [RFC9110]. In | |||
addition, the recommendations provided in [RFC9325] should be | addition, the recommendations provided in [RFC9325] should be | |||
followed. | followed. | |||
Note: The requirements for checking certificates given in [RFC5280] | Note: The requirements for checking certificates given in [RFC5280] | |||
skipping to change at page 82, line 9 ¶ | skipping to change at line 3748 ¶ | |||
Otherwise, a password-authenticated key exchange (PAKE) protocol is | Otherwise, a password-authenticated key exchange (PAKE) protocol is | |||
recommended. | recommended. | |||
Note: The provisioning of client certificates and PSKs is out of | Note: The provisioning of client certificates and PSKs is out of | |||
scope of this document. | scope of this document. | |||
6.2. CoAP Transfer | 6.2. CoAP Transfer | |||
This transfer mechanism can be used by a PKI entity to transfer CMP | This transfer mechanism can be used by a PKI entity to transfer CMP | |||
messages over CoAP [RFC7252], e.g., in constrained environments. If | messages over CoAP [RFC7252], e.g., in constrained environments. If | |||
CoAP transfer is used the specifications as described in CMP over | CoAP transfer is used, the specifications described in CMP over CoAP | |||
CoAP [I-D.ietf-ace-cmpv2-coap-transport] MUST be followed. | [RFC9482] MUST be followed. | |||
PKI management operations MUST use an URI path consisting of '/.well- | PKI management operations MUST use a URI path consisting of '/.well- | |||
known/cmp/' or '/.well-known/cmp/p/<name>/' as specified in CMP over | known/cmp' or '/.well-known/cmp/p/<name>' as specified in Section 2.1 | |||
CoAP Section 2.1 [I-D.ietf-ace-cmpv2-coap-transport]. It SHOULD be | of CMP over CoAP [RFC9482]. It SHOULD be followed by an operation | |||
followed by an operation label depending on the type of PKI | label depending on the type of PKI management operation. | |||
management operation. | ||||
+=======================================+=========+=========+ | +=======================================+=========+=========+ | |||
| PKI Management Operation | URI | Details | | | PKI Management Operation | URI | Details | | |||
| | Path | | | | | Path | | | |||
| | Segment | | | | | Segment | | | |||
+=======================================+=========+=========+ | +=======================================+=========+=========+ | |||
| Enrolling an End Entity to a New PKI | ir | Section | | | Enrolling an End Entity to a New PKI | ir | Section | | |||
| | | 4.1.1 | | | | | 4.1.1 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Enrolling an End Entity to a Known | cr | Section | | | Enrolling an End Entity to a Known | cr | Section | | |||
| PKI | | 4.1.2 | | | PKI | | 4.1.2 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Updating a Valid Certificate | kur | Section | | | Updating a Valid Certificate | kur | Section | | |||
| | | 4.1.3 | | | | | 4.1.3 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Enrolling an End Entity Using a | p10 | Section | | | Enrolling an End Entity Using a PKCS | p10 | Section | | |||
| PKCS#10 Request | | 4.1.4 | | | #10 Request | | 4.1.4 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Revoking a Certificate | rr | Section | | | Revoking a Certificate | rr | Section | | |||
| | | 4.2 | | | | | 4.2 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Get CA Certificates | crts | Section | | | Get CA Certificates | crts | Section | | |||
| | | 4.3.1 | | | | | 4.3.1 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
| Get Root CA Certificate Update | rcu | Section | | | Get Root CA Certificate Update | rcu | Section | | |||
| | | 4.3.2 | | | | | 4.3.2 | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
skipping to change at page 83, line 47 ¶ | skipping to change at line 3798 ¶ | |||
| Batching Messages | nest | Section | | | Batching Messages | nest | Section | | |||
| | | 5.2.2.2 | | | | | 5.2.2.2 | | |||
| Note: This path element is applicable | | | | | Note: This path element is applicable | | | | |||
| only between PKI management entities. | | | | | only between PKI management entities. | | | | |||
+---------------------------------------+---------+---------+ | +---------------------------------------+---------+---------+ | |||
Table 2: CoAP URI Path Segment <operation> | Table 2: CoAP URI Path Segment <operation> | |||
If operation labels are used: | If operation labels are used: | |||
* Independently of any variants used (see Sections 4.1.5, 4.1.6, and | * independently of any variants used (see Sections 4.1.5, 4.1.6, and | |||
4.4) the operation label corresponding to the PKI management | 4.4), the operation label corresponding to the PKI management | |||
operation SHALL be used. | operation SHALL be used. | |||
* Any certConf or pollReq messages SHALL be sent to the same | * any certConf or pollReq messages SHALL be sent to the same | |||
endpoint as determined by the PKI management operation. | endpoint, as determined by the PKI management operation. | |||
* When a single request message is nested as described in | * when a single request message is nested as described in | |||
Section 5.2.2.1, the label to use SHALL be the same as for the | Section 5.2.2.1, the label to use SHALL be the same as for the | |||
underlying PKI management operation. | underlying PKI management operation. | |||
By sending a request to its preferred endpoint, the PKI entity will | By sending a request to its preferred endpoint, the PKI entity will | |||
recognize via the CoAP response status code whether a configured URI | recognize, via the CoAP response status code, whether a configured | |||
is supported by the PKI management entity. The CoAP-inherent | URI is supported by the PKI management entity. The CoAP-inherent | |||
discovery mechanisms MAY also be used. | discovery mechanisms MAY also be used. | |||
In case a PKI management entity receives an unexpected CoAP status | In case a PKI management entity receives an unexpected CoAP status | |||
code from upstream, it MUST respond downstream with an error message | code from upstream, it MUST respond downstream with an error message, | |||
as described in Section 3.6 using a failInfo bit corresponding to the | as described in Section 3.6, using a failInfo bit corresponding to | |||
status code, e.g., systemFailure. | the status code, e.g., systemFailure. | |||
Like for HTTP transfer, to offer a second line of defense or to | Like for HTTP transfer, to offer a second line of defense or to | |||
provide hop-by-hop privacy protection, DTLS may be utilized as | provide hop-by-hop privacy protection, DTLS may be utilized as | |||
described in CMP over CoAP [I-D.ietf-ace-cmpv2-coap-transport]. If | described in CMP over CoAP [RFC9482]. If DTLS is utilized, the same | |||
DTLS is utilized, the same boundary conditions (peer authentication, | boundary conditions (peer authentication, etc.) as those stated for | |||
etc.) as stated for TLS to protect HTTP transfer in Section 6.1 apply | TLS to protect HTTP transfer in Section 6.1 apply to DTLS likewise. | |||
to DTLS likewise. | ||||
Note: The provisioning of client certificates and PSKs is out of | Note: The provisioning of client certificates and PSKs is out of | |||
scope of this document. | scope of this document. | |||
6.3. Piggybacking on Other Reliable Transfer | 6.3. Piggybacking on Other Reliable Transfer | |||
CMP messages MAY also be transfer on some other reliable protocol, | CMP messages MAY also be transferred on some other reliable protocol, | |||
e.g., EAP or MQTT. Connection, delay, and error handling mechanisms | e.g., Extensible Authentication Protocol (EAP) or Message Queuing | |||
similar to those specified for HTTP in RFC 6712 [RFC6712]need to be | Telemetry Transport (MQTT). Connection, delay, and error handling | |||
implemented. | mechanisms similar to those specified for HTTP in [RFC6712] need to | |||
be implemented. | ||||
A more detailed specification is out of scope of this document and | A more detailed specification is out of scope of this document and | |||
would need to be given for instance in the scope of the transfer | would need to be given, for instance, in the scope of the transfer | |||
protocol used. | protocol used. | |||
6.4. Offline Transfer | 6.4. Offline Transfer | |||
For transferring CMP messages between PKI entities, any mechanism can | For transferring CMP messages between PKI entities, any mechanism | |||
be used that is able to store and forward binary objects of | that is able to store and forward binary objects of sufficient length | |||
sufficient length and with sufficient reliability while preserving | and with sufficient reliability while preserving the order of | |||
the order of messages for each transaction. | messages for each transaction can be used. | |||
The transfer mechanism should be able to indicate message loss, | The transfer mechanism should be able to indicate message loss, | |||
excessive delay, and possibly other transmission errors. In such | excessive delay, and possibly other transmission errors. In such | |||
cases the PKI entities MUST report an error as specified in | cases, the PKI entities MUST report an error as specified in | |||
Section 3.6 as far as possible. | Section 3.6, as far as possible. | |||
6.4.1. File-Based Transfer | 6.4.1. File-Based Transfer | |||
CMP messages MAY be transferred between PKI entities using file-based | CMP messages MAY be transferred between PKI entities using file-based | |||
mechanisms, for instance when an EE is offline or a PKI management | mechanisms, for instance, when an EE is offline or a PKI management | |||
entity performs delayed delivery. Each file MUST contain the ASN.1 | entity performs delayed delivery. Each file MUST contain the ASN.1 | |||
DER encoding of one CMP message only, where the message may be | DER encoding of one CMP message only, where the message may be | |||
nested. There MUST be no extraneous header or trailer information in | nested. There MUST be no extraneous header or trailer information in | |||
the file. The file name extension ".pki" MUST be used. | the file. The filename extension ".pki" MUST be used. | |||
6.4.2. Other Asynchronous Transfer Protocols | 6.4.2. Other Asynchronous Transfer Protocols | |||
Other asynchronous transfer protocols, e.g., email or website | Other asynchronous transfer protocols, e.g., email or website upload/ | |||
up-/download, MAY transfer CMP messages between PKI entities. A MIME | download, MAY transfer CMP messages between PKI entities. A MIME | |||
wrapping is defined for those environments that are MIME-native. The | wrapping is defined for those environments that are MIME-native. The | |||
MIME wrapping is specified in RFC 8551 Section 3.1 [RFC8551]. | MIME wrapping is specified in Section 3.1 of [RFC8551]. | |||
The ASN.1 DER encoding of the CMP messages MUST be transferred using | The ASN.1 DER encoding of the CMP messages MUST be transferred using | |||
the "application/pkixcmp" content type and base64-encoded content | the "application/pkixcmp" content type and base64-encoded content | |||
transfer encoding as specified in Section 3.4 of CMP over HTTP | transfer encoding, as specified in Section 3.4 of CMP over HTTP | |||
[RFC6712]. A filename MUST be included either in a "content-type" or | [RFC6712]. A filename MUST be included either in a "content-type" or | |||
a "content-disposition" statement. The file name extension ".pki" | a "content-disposition" statement. The filename extension ".pki" | |||
MUST be used. | MUST be used. | |||
7. Conformance Requirements | 7. Conformance Requirements | |||
This section defines which level of support for the various features | This section defines which level of support for the various features | |||
specified in this profile is required for each type of PKI entity. | specified in this profile is required for each type of PKI entity. | |||
7.1. PKI Management Operations | 7.1. PKI Management Operations | |||
The following table provides an overview of the PKI management | The following table provides an overview of the PKI management | |||
operations specified in Sections 4 and 5 and states whether support | operations specified in Sections 4 and 5 and states whether support | |||
by conforming EE, RA, and CA implementations is mandatory, | by conforming EE, RA, and CA implementations is mandatory, | |||
recommended, optional, or not applicable. Variants amend or change | recommended, optional, or not applicable. Variants amend or change | |||
behavior of base PKI management operations and are therefore also | behavior of base PKI management operations and are therefore also | |||
included. | included. | |||
The PKI management operation specifications in Section 4 assume that | The PKI management operation specifications in Section 4 assume that | |||
either the RA or CA is the PKI management entity that terminates the | either the RA or CA is the PKI management entity that terminates the | |||
CMP protocol. If the RA terminates the CMP protocol it either | Certificate Management Protocol. If the RA terminates CMP, it either | |||
responds directly as described in Section 5.1 or forwards the | responds directly as described in Section 5.1, or it forwards the | |||
certificate management operation towards the CA not using CMP. | certificate management operation towards the CA not using CMP. | |||
Section 5.2 describes different options how an RA can forward a CMP | Section 5.2 describes different options of how an RA can forward a | |||
message using CMP. Section 5.3 offers the option that an RA operates | CMP message using CMP. Section 5.3 offers the option that an RA | |||
on behalf on an EE and therefore takes the role of the EE in | operates on behalf on an EE and therefore takes the role of the EE in | |||
Section 4. | Section 4. | |||
+==========+=============================+========+========+========+ | +==========+=============================+========+========+========+ | |||
| ID | PKI Management Operations | EE | RA | CA | | | ID | PKI Management Operations | EE | RA | CA | | |||
| | and Variants | | | | | | | and Variants | | | | | |||
+==========+=============================+========+========+========+ | +==========+=============================+========+========+========+ | |||
| Generic | Generic Aspects of PKI | MUST | MUST | MUST | | | Generic | Generic Aspects of PKI | MUST | MUST | MUST | | |||
| | Messages and PKI | | | | | | | Messages and PKI | | | | | |||
| | Management Operations, | | | | | | | Management Operations, | | | | | |||
| | Section 3 | | | | | | | Section 3 | | | | | |||
skipping to change at page 86, line 24 ¶ | skipping to change at line 3918 ¶ | |||
| IR | Enrolling an End Entity to | MUST | MAY | MUST | | | IR | Enrolling an End Entity to | MUST | MAY | MUST | | |||
| | a New PKI, Section 4.1.1 | | | | | | | a New PKI, Section 4.1.1 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| CR | Enrolling an End Entity to | MAY | MAY | MAY | | | CR | Enrolling an End Entity to | MAY | MAY | MAY | | |||
| | a Known PKI, Section 4.1.2 | | | | | | | a Known PKI, Section 4.1.2 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| KUR | Updating a Valid | MUST | MAY | MUST | | | KUR | Updating a Valid | MUST | MAY | MUST | | |||
| | Certificate, Section 4.1.3 | | | | | | | Certificate, Section 4.1.3 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| P10CR | Enrolling an End Entity | MAY | MAY | MAY | | | P10CR | Enrolling an End Entity | MAY | MAY | MAY | | |||
| | Using a PKCS#10 Request, | | | | | | | Using a PKCS #10 Request, | | | | | |||
| | Section 4.1.4 | | | | | | | Section 4.1.4 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| MAC | Using MAC-Based Protection | MAY | SHOULD | MAY | | | MAC | Using MAC-Based Protection | MAY | SHOULD | MAY | | |||
| | for Enrollment, with IR, | | 1) | | | | | for Enrollment (IR, CR, | | 1) | | | |||
| | CR, and P10CR if | | | | | | | and P10CR if supported), | | | | | |||
| | supported, Section 4.1.5 | | | | | | | Section 4.1.5 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| CKeyGen | Adding Central Key Pair | MAY | MAY | MAY | | | CKeyGen | Adding Central Key Pair | MAY | MAY | MAY | | |||
| | Generation to Enrollment, | | | | | | | Generation to Enrollment | | | | | |||
| | IR, CR, KUR, and P10CR if | | | | | | | (IR, CR, KUR, and P10CR if | | | | | |||
| | supported, Section 4.1.6 | | | | | | | supported), Section 4.1.6 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| RR | Revoking a Certificate, | SHOULD | SHOULD | SHOULD | | | RR | Revoking a Certificate, | SHOULD | SHOULD | SHOULD | | |||
| | Section 4.2 | | 2) | 3) | | | | Section 4.2 | | 2) | 3) | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| CACerts | Get CA Certificates, | MAY | MAY | MAY | | | CACerts | Get CA Certificates, | MAY | MAY | MAY | | |||
| | Section 4.3.1 | | | | | | | Section 4.3.1 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| RootUpd | Get Root CA Certificate | MAY | MAY | MAY | | | RootUpd | Get Root CA Certificate | MAY | MAY | MAY | | |||
| | Update, Section 4.3.2 | | | | | | | Update, Section 4.3.2 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
skipping to change at page 87, line 40 ¶ | skipping to change at line 3983 ¶ | |||
| FwdAddS | Forwarding Messages - | N/A | MUST | MUST | | | FwdAddS | Forwarding Messages - | N/A | MUST | MUST | | |||
| | Adding Protection to a | | | | | | | Adding Protection to a | | | | | |||
| | Request Message, | | | | | | | Request Message, | | | | | |||
| | Section 5.2.2.1 | | | | | | | Section 5.2.2.1 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| FwdAddB | Forwarding Messages - | N/A | MAY | MAY | | | FwdAddB | Forwarding Messages - | N/A | MAY | MAY | | |||
| | Batching Messages, | | | | | | | Batching Messages, | | | | | |||
| | Section 5.2.2.2 | | | | | | | Section 5.2.2.2 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| FwdReqKP | Forwarding Messages - Not | N/A | SHOULD | N/A | | | FwdReqKP | Forwarding Messages - Not | N/A | SHOULD | N/A | | |||
| | Changing | | 1) | | | | | Changing Proof-of- | | 1) | | | |||
| | Proof-of-Possession, | | | | | | | Possession, | | | | | |||
| | Section 5.2.3.1 | | | | | | | Section 5.2.3.1 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| FwdReqBP | Forwarding Messages - | N/A | MAY | MAY | | | FwdReqBP | Forwarding Messages - | N/A | MAY | MAY | | |||
| | Using raVerified, | | | | | | | Using raVerified, | | | | | |||
| | Section 5.2.3.2 | | | | | | | Section 5.2.3.2 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| CertROnB | Acting on Behalf of other | N/A | MAY | N/A | | | CertROnB | Acting on Behalf of Other | N/A | MAY | N/A | | |||
| | PKI Entities - Requesting | | | | | | | PKI Entities - Requesting | | | | | |||
| | a Certificate, | | | | | | | a Certificate, | | | | | |||
| | Section 5.3.1 | | | | | | | Section 5.3.1 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
| RevROnB | Acting on Behalf of other | N/A | SHOULD | SHOULD | | | RevROnB | Acting on Behalf of Other | N/A | SHOULD | SHOULD | | |||
| | PKI Entities - Revoking a | | 2) | 3) | | | | PKI Entities - Revoking a | | 2) | 3) | | |||
| | Certificate, Section 5.3.2 | | | | | | | Certificate, Section 5.3.2 | | | | | |||
+----------+-----------------------------+--------+--------+--------+ | +----------+-----------------------------+--------+--------+--------+ | |||
Table 3: Level of Support for PKI Management Operations and Variants | Table 3: Level of Support for PKI Management Operations and Variants | |||
1) The RA should be able to change the CMP message protection from | 1) The RA should be able to change the CMP message protection from | |||
MAC-based to signature-based protection, see Section 5.2.3.1. | MAC-based to signature-based protection; see Section 5.2.3.1. | |||
2) The RA should be able to request certificate revocation on behalf | 2) The RA should be able to request certificate revocation on behalf | |||
of an EE, see Section 5.3.2, e.g., in order to handle incidents. | of an EE (see Section 5.3.2), e.g., in order to handle incidents. | |||
3) An alternative would be to perform revocation at the CA without | 3) An alternative would be to perform revocation at the CA without | |||
using CMP, for instance using a local administration interface. | using CMP, for instance, using a local administration interface. | |||
7.2. Message Transfer | 7.2. Message Transfer | |||
CMP does not have specific needs regarding message transfer, except | CMP does not have specific needs regarding message transfer, except | |||
that for each request message sent, eventually a sequence of one | that, for each request message sent, eventually a sequence of one | |||
response message should be received. Therefore, virtually any | response message should be received. Therefore, virtually any | |||
reliable transfer mechanism can be used, such as HTTP, CoAP, and | reliable transfer mechanism can be used, such as HTTP, CoAP, and | |||
file-based offline transfer. Thus, this document does not require | file-based offline transfer. Thus, this document does not require | |||
any specific transfer protocol to be supported by conforming | any specific transfer protocol to be supported by conforming | |||
implementations. | implementations. | |||
On different links between PKI entities, e.g., EE-RA and RA-CA, | On different links between PKI entities (e.g., EE-RA and RA-CA), | |||
different transfer mechanisms as specified in Section 6 may be used. | different transfer mechanisms, as specified in Section 6, may be | |||
used. | ||||
HTTP SHOULD be supported and CoAP MAY be supported at all PKI | HTTP SHOULD be supported and CoAP MAY be supported at all PKI | |||
entities for maximizing general interoperability at transfer level. | entities for maximizing general interoperability at transfer level. | |||
Yet full flexibility is retained to choose whatever transfer | Yet full flexibility is retained to choose whatever transfer | |||
mechanism is suitable, for instance for devices and system | mechanism is suitable, for instance, for devices and system | |||
architectures with specific constraints. | architectures with specific constraints. | |||
The following table lists the name and level of support specified for | The following table lists the name and level of support specified for | |||
each transfer mechanism. | each transfer mechanism. | |||
+=========+=======================+========+========+========+ | +=========+=======================+========+========+========+ | |||
| ID | Message Transfer Type | EE | RA | CA | | | ID | Message Transfer Type | EE | RA | CA | | |||
+=========+=======================+========+========+========+ | +=========+=======================+========+========+========+ | |||
| HTTP | HTTP Transfer, | SHOULD | SHOULD | SHOULD | | | HTTP | HTTP Transfer, | SHOULD | SHOULD | SHOULD | | |||
| | Section 6.1 | | | | | | | Section 6.1 | | | | | |||
skipping to change at page 89, line 26 ¶ | skipping to change at line 4056 ¶ | |||
| | Section 6.3 | | | | | | | Section 6.3 | | | | | |||
+---------+-----------------------+--------+--------+--------+ | +---------+-----------------------+--------+--------+--------+ | |||
| Offline | Offline Transfer, | MAY | MAY | MAY | | | Offline | Offline Transfer, | MAY | MAY | MAY | | |||
| | Section 6.4 | | | | | | | Section 6.4 | | | | | |||
+---------+-----------------------+--------+--------+--------+ | +---------+-----------------------+--------+--------+--------+ | |||
Table 4: Level of Support for Message Transfer Types | Table 4: Level of Support for Message Transfer Types | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document defines new entries with the following content in the | IANA has registered the following content in the "CMP Well-Known URI | |||
"CMP Well-Known URI Path Segments" registry (see | Path Segments" registry (see <https://www.iana.org/assignments/cmp>), | |||
https://www.iana.org/assignments/cmp/) as defined in RFC 8615 | as defined in [RFC8615]. | |||
[RFC8615]. | ||||
+====================+===============================+===========+ | +====================+==========================+===============+ | |||
| Path Segment | Description | Reference | | | Path Segment | Description | Reference | | |||
+====================+===============================+===========+ | +====================+==========================+===============+ | |||
| initialization | Enrolling an End Entity to a | [thisRFC] | | | initialization | Enrolling an End Entity | RFC 9483, | | |||
| | New PKI over HTTP | | | | | to a New PKI over HTTP | Section 4.1.1 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| certification | Enrolling an End Entity to a | [thisRFC] | | | certification | Enrolling an End Entity | RFC 9483, | | |||
| | Known PKI over HTTP | | | | | to a Known PKI over HTTP | Section 4.1.2 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| keyupdate | Updating a Valid Certificate | [thisRFC] | | | keyupdate | Updating a Valid | RFC 9483, | | |||
| | over HTTP | | | | | Certificate over HTTP | Section 4.1.3 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| pkcs10 | Enrolling an End Entity Using | [thisRFC] | | | pkcs10 | Enrolling an End Entity | RFC 9483, | | |||
| | a PKCS#10 Request over HTTP | | | | | Using a PKCS #10 Request | Section 4.1.4 | | |||
+--------------------+-------------------------------+-----------+ | | | over HTTP | | | |||
| revocation | Revoking a Certificate over | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
| | HTTP | | | | revocation | Revoking a Certificate | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | over HTTP | Section 4.2 | | |||
| getcacerts | Get CA Certificates over HTTP | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
+--------------------+-------------------------------+-----------+ | | getcacerts | Get CA Certificates over | RFC 9483, | | |||
| getrootupdate | Get Root CA Certificate | [thisRFC] | | | | HTTP | Section 4.3.1 | | |||
| | Update over HTTP | | | +--------------------+--------------------------+---------------+ | |||
+--------------------+-------------------------------+-----------+ | | getrootupdate | Get Root CA Certificate | RFC 9483, | | |||
| getcertreqtemplate | Get Certificate Request | [thisRFC] | | | | Update over HTTP | Section 4.3.2 | | |||
| | Template over HTTP | | | +--------------------+--------------------------+---------------+ | |||
+--------------------+-------------------------------+-----------+ | | getcertreqtemplate | Get Certificate Request | RFC 9483, | | |||
| getcrls | CRL Update Retrieval over | [thisRFC] | | | | Template over HTTP | Section 4.3.3 | | |||
| | HTTP | | | +--------------------+--------------------------+---------------+ | |||
+--------------------+-------------------------------+-----------+ | | getcrls | CRL Update Retrieval | RFC 9483, | | |||
| nested | Batching Messages over HTTP | [thisRFC] | | | | over HTTP | Section 4.3.4 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| ir | Enrolling an End Entity to a | [thisRFC] | | | nested | Batching Messages over | RFC 9483, | | |||
| | New PKI over CoAP | | | | | HTTP | Section | | |||
+--------------------+-------------------------------+-----------+ | | | | 5.2.2.2 | | |||
| cr | Enrolling an End Entity to a | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
| | Known PKI over CoAP | | | | ir | Enrolling an End Entity | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | to a New PKI over CoAP | Section 4.1.1 | | |||
| kur | Updating a Valid Certificate | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
| | over CoAP | | | | cr | Enrolling an End Entity | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | to a Known PKI over CoAP | Section 4.1.2 | | |||
| p10 | Enrolling an End Entity Using | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
| | a PKCS#10 Request over CoAP | | | | kur | Updating a Valid | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | Certificate over CoAP | Section 4.1.3 | | |||
| rr | Revoking a Certificate over | [thisRFC] | | +--------------------+--------------------------+---------------+ | |||
| | CoAP | | | | p10 | Enrolling an End Entity | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | Using a PKCS #10 Request | Section 4.1.4 | | |||
| crts | Get CA Certificates over CoAP | [thisRFC] | | | | over CoAP | | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| rcu | Get Root CA Certificate | [thisRFC] | | | rr | Revoking a Certificate | RFC 9483, | | |||
| | Update over CoAP | | | | | over CoAP | Section 4.2 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| att | Get Certificate Request | [thisRFC] | | | crts | Get CA Certificates over | RFC 9483, | | |||
| | Template over CoAP | | | | | CoAP | Section 4.3.1 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| crls | CRL Update Retrieval over | [thisRFC] | | | rcu | Get Root CA Certificate | RFC 9483, | | |||
| | CoAP | | | | | Update over CoAP | Section 4.3.2 | | |||
+--------------------+-------------------------------+-----------+ | +--------------------+--------------------------+---------------+ | |||
| nest | Batching Messages over CoAP | [thisRFC] | | | att | Get Certificate Request | RFC 9483, | | |||
+--------------------+-------------------------------+-----------+ | | | Template over CoAP | Section 4.3.3 | | |||
+--------------------+--------------------------+---------------+ | ||||
| crls | CRL Update Retrieval | RFC 9483, | | ||||
| | over CoAP | Section 4.3.4 | | ||||
+--------------------+--------------------------+---------------+ | ||||
| nest | Batching Messages over | RFC 9483, | | ||||
| | CoAP | Section | | ||||
| | | 5.2.2.2 | | ||||
+--------------------+--------------------------+---------------+ | ||||
Table 5: New "CMP Well-Known URI Path Segments" Registry Entries | Table 5: New "CMP Well-Known URI Path Segments" Registry Entries | |||
< TBD: New entries must be added to the registry "CMP Well-Known URI | ||||
Path Segments". > | ||||
9. Security Considerations | 9. Security Considerations | |||
The security considerations as laid out in CMP [RFC4210] updated by | The security considerations laid out in CMP [RFC4210] and updated by | |||
CMP Updates [I-D.ietf-lamps-cmp-updates] and CMP Algorithms | CMP Updates [RFC9480], CMP Algorithms [RFC9481], CRMF [RFC4211], | |||
[I-D.ietf-lamps-cmp-algorithms], CRMF [RFC4211] updated by Algorithm | Algorithm Requirements Update [RFC9045], CMP over HTTP [RFC6712], and | |||
Requirements Update [RFC9045], CMP over HTTP [RFC6712], and CMP over | CMP over CoAP [RFC9482] apply. | |||
CoAP [I-D.ietf-ace-cmpv2-coap-transport] apply. | ||||
Trust anchors for chain validations are often provided in the form of | Trust anchors for chain validations are often provided in the form of | |||
self-signed certificates. All trust anchors MUST be stored on the | self-signed certificates. All trust anchors MUST be stored on the | |||
device with integrity protection. In some cases, a PKI entity may | device with integrity protection. In some cases, a PKI entity may | |||
not have sufficient storage for the complete certificates. In such | not have sufficient storage for the complete certificates. In such | |||
cases it may only store, e.g., a hash of each self-signed certificate | cases, it may only store, e.g., a hash of each self-signed | |||
and require receiving the certificate in the extraCerts field as | certificate and require receiving the certificate in the extraCerts | |||
described in Section 3.3. If such self-signed certificates are | field, as described in Section 3.3. If such self-signed certificates | |||
provided in-band in the messages, they MUST be verified using | are provided in-band in the messages, they MUST be verified using | |||
information from the trust store of the PKI entity. | information from the trust store of the PKI entity. | |||
For TLS using shared secret information-based authentication, both | For TLS using shared secret information-based authentication, both | |||
PSK and PAKE provide the same amount of protection against a real- | PSK and PAKE provide the same amount of protection against a real- | |||
time authentication attack which is directly the amount of entropy in | time authentication attack, which is directly the amount of entropy | |||
the shared secret. The difference between a pre-shared key (PSK) and | in the shared secret. The difference between a pre-shared key (PSK) | |||
a password-authenticated key exchange (PAKE) protocol is in the level | and a password-authenticated key exchange (PAKE) protocol is in the | |||
of long-term confidentiality of the TLS messages against brute-force | level of long-term confidentiality of the TLS messages against brute- | |||
decryption, where a PSK-based cipher suite only provides security | force decryption, where a PSK-based cipher suite only provides | |||
according to the entropy of the shared secret, while a PAKE-based | security according to the entropy of the shared secret, while a PAKE- | |||
cipher suite provides full security independent of the entropy of the | based cipher suite provides full security independent of the entropy | |||
shared secret. | of the shared secret. | |||
10. Acknowledgements | ||||
We thank the various reviewers of this document. | ||||
11. References | ||||
11.1. Normative References | ||||
[I-D.ietf-ace-cmpv2-coap-transport] | ||||
Sahni, M. and S. Tripathi, "CoAP Transfer for the | ||||
Certificate Management Protocol", Work in Progress, | ||||
Internet-Draft, draft-ietf-ace-cmpv2-coap-transport-07, 27 | ||||
January 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-ace-cmpv2-coap-transport-07>. | ||||
[I-D.ietf-lamps-cmp-algorithms] | 10. References | |||
Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | ||||
"Certificate Management Protocol (CMP) Algorithms", Work | ||||
in Progress, Internet-Draft, draft-ietf-lamps-cmp- | ||||
algorithms-15, 2 June 2022, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | ||||
cmp-algorithms-15>. | ||||
[I-D.ietf-lamps-cmp-updates] | 10.1. Normative References | |||
Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | ||||
Management Protocol (CMP) Updates", Work in Progress, | ||||
Internet-Draft, draft-ietf-lamps-cmp-updates-23, 29 June | ||||
2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | ||||
lamps-cmp-updates-23>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2986] Nystrom, M. and B. Kaliski, "PKCS #10: Certification | [RFC2986] Nystrom, M. and B. Kaliski, "PKCS #10: Certification | |||
Request Syntax Specification Version 1.7", RFC 2986, | Request Syntax Specification Version 1.7", RFC 2986, | |||
DOI 10.17487/RFC2986, November 2000, | DOI 10.17487/RFC2986, November 2000, | |||
<https://www.rfc-editor.org/info/rfc2986>. | <https://www.rfc-editor.org/info/rfc2986>. | |||
skipping to change at page 92, line 40 ¶ | skipping to change at line 4187 ¶ | |||
[RFC4211] Schaad, J., "Internet X.509 Public Key Infrastructure | [RFC4211] Schaad, J., "Internet X.509 Public Key Infrastructure | |||
Certificate Request Message Format (CRMF)", RFC 4211, | Certificate Request Message Format (CRMF)", RFC 4211, | |||
DOI 10.17487/RFC4211, September 2005, | DOI 10.17487/RFC4211, September 2005, | |||
<https://www.rfc-editor.org/info/rfc4211>. | <https://www.rfc-editor.org/info/rfc4211>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<https://www.rfc-editor.org/rfc/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
RFC 5652, DOI 10.17487/RFC5652, September 2009, | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
<https://www.rfc-editor.org/info/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
[RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, | [RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, | |||
DOI 10.17487/RFC5958, August 2010, | DOI 10.17487/RFC5958, August 2010, | |||
<https://www.rfc-editor.org/info/rfc5958>. | <https://www.rfc-editor.org/info/rfc5958>. | |||
[RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | [RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | |||
skipping to change at page 93, line 41 ¶ | skipping to change at line 4233 ¶ | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/info/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
[RFC9325] Sheffer, Y., Saint-Andre, P., and T. Fossati, | [RFC9325] Sheffer, Y., Saint-Andre, P., and T. Fossati, | |||
"Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
(DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November | (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November | |||
2022, <https://www.rfc-editor.org/info/rfc9325>. | 2022, <https://www.rfc-editor.org/info/rfc9325>. | |||
11.2. Informative References | [RFC9480] Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | |||
Management Protocol (CMP) Updates", RFC 9480, | ||||
DOI 10.17487/RFC9480, October 2023, | ||||
<https://www.rfc-editor.org/info/rfc9480>. | ||||
[RFC9481] Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | ||||
"Certificate Management Protocol (CMP) Algorithms", | ||||
RFC 9481, DOI 10.17487/RFC9481, October 2023, | ||||
<https://www.rfc-editor.org/info/rfc9481>. | ||||
[RFC9482] Sahni, M., Ed. and S. Tripathi, Ed., "Constrained | ||||
Application Protocol (CoAP) Transfer for the Certificate | ||||
Management Protocol", RFC 9482, DOI 10.17487/RFC9482, | ||||
October 2023, <https://www.rfc-editor.org/info/rfc9482>. | ||||
10.2. Informative References | ||||
[BRSKI-AE] von Oheimb, D., Fries, S., and H. Brockhaus, "BRSKI-AE: | ||||
Alternative Enrollment Protocols in BRSKI", Work in | ||||
Progress, Internet-Draft, draft-ietf-anima-brski-ae-05, 28 | ||||
June 2023, <https://datatracker.ietf.org/doc/html/draft- | ||||
ietf-anima-brski-ae-05>. | ||||
[BRSKI-PRM] | ||||
Fries, S., Werner, T., Lear, E., and M. Richardson, "BRSKI | ||||
with Pledge in Responder Mode (BRSKI-PRM)", Work in | ||||
Progress, Internet-Draft, draft-ietf-anima-brski-prm-09, | ||||
10 July 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-anima-brski-prm-09>. | ||||
[ETSI-3GPP.33.310] | [ETSI-3GPP.33.310] | |||
3GPP, "Network Domain Security (NDS); Authentication | 3GPP, "Network Domain Security (NDS); Authentication | |||
Framework (AF)", 3GPP TS 33.310 16.6.0, 16 December 2020, | Framework (AF)", 3GPP TS 33.310 16.6.0, December 2020, | |||
<http://www.3gpp.org/ftp/Specs/html-info/33310.htm>. | <http://www.3gpp.org/ftp/Specs/html-info/33310.htm>. | |||
[ETSI-EN.319411-1] | [ETSI-EN.319411-1] | |||
ETSI, "Electronic Signatures and Infrastructures (ESI); | ETSI, "Electronic Signatures and Infrastructures (ESI); | |||
Policy and security requirements for Trust Service | Policy and security requirements for Trust Service | |||
Providers issuing certificates; Part 1: General | Providers issuing certificates; Part 1: General | |||
requirements", ETSI EN 319 411-1 V1.3.1, May 2021, | requirements", V1.3.1, ETSI EN 319 411-1, May 2021, | |||
<https://www.etsi.org/deliver/ | <https://www.etsi.org/deliver/ | |||
etsi_en/319400_319499/31941101/01.03.01_60/ | etsi_en/319400_319499/31941101/01.03.01_60/ | |||
en_31941101v010301p.pdf>. | en_31941101v010301p.pdf>. | |||
[I-D.ietf-anima-brski-ae] | [HTTP-CMP] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | |||
von Oheimb, D., Fries, S., and H. Brockhaus, "BRSKI-AE: | ||||
Alternative Enrollment Protocols in BRSKI", Work in | ||||
Progress, Internet-Draft, draft-ietf-anima-brski-ae-03, 24 | ||||
October 2022, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-anima-brski-ae-03>. | ||||
[I-D.ietf-anima-brski-prm] | ||||
Fries, S., Werner, T., Lear, E., and M. Richardson, "BRSKI | ||||
with Pledge in Responder Mode (BRSKI-PRM)", Work in | ||||
Progress, Internet-Draft, draft-ietf-anima-brski-prm-06, | ||||
11 January 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-anima-brski-prm-06>. | ||||
[I-D.ietf-lamps-rfc4210bis] | ||||
Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | ||||
"Internet X.509 Public Key Infrastructure -- Certificate | ||||
Management Protocol (CMP)", Work in Progress, Internet- | ||||
Draft, draft-ietf-lamps-rfc4210bis-03, 24 October 2022, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | ||||
rfc4210bis-03>. | ||||
[I-D.ietf-lamps-rfc6712bis] | ||||
Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | ||||
"Internet X.509 Public Key Infrastructure -- HTTP Transfer | "Internet X.509 Public Key Infrastructure -- HTTP Transfer | |||
for the Certificate Management Protocol (CMP)", Work in | for the Certificate Management Protocol (CMP)", Work in | |||
Progress, Internet-Draft, draft-ietf-lamps-rfc6712bis-03, | Progress, Internet-Draft, draft-ietf-lamps-rfc6712bis-03, | |||
10 February 2023, <https://datatracker.ietf.org/doc/html/ | 10 February 2023, <https://datatracker.ietf.org/doc/html/ | |||
draft-ietf-lamps-rfc6712bis-03>. | draft-ietf-lamps-rfc6712bis-03>. | |||
[I-D.ietf-netconf-sztp-csr] | ||||
Watsen, K., Housley, R., and S. Turner, "Conveying a | ||||
Certificate Signing Request (CSR) in a Secure Zero Touch | ||||
Provisioning (SZTP) Bootstrapping Request", Work in | ||||
Progress, Internet-Draft, draft-ietf-netconf-sztp-csr-14, | ||||
2 March 2022, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-netconf-sztp-csr-14>. | ||||
[IEC.62443-3-3] | [IEC.62443-3-3] | |||
IEC, "Industrial communication networks - Network and | IEC, "Industrial communication networks - Network and | |||
system security - Part 3-3: System security requirements | system security - Part 3-3: System security requirements | |||
and security levels", IEC 62443-3-3, August 2013, | and security levels", IEC 62443-3-3:2013, August 2013, | |||
<https://webstore.iec.ch/publication/7033>. | <https://webstore.iec.ch/publication/7033>. | |||
[IEEE.802.1AR_2018] | [IEEE.802.1AR_2018] | |||
IEEE, "IEEE Standard for Local and metropolitan area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
networks - Secure Device Identity", IEEE 802.1AR-2018, | Networks - Secure Device Identity", IEEE Std 802.1AR-2018, | |||
DOI 10.1109/IEEESTD.2018.8423794, 2 August 2018, | DOI 10.1109/IEEESTD.2018.8423794, August 2018, | |||
<https://ieeexplore.ieee.org/document/8423794>. | <https://ieeexplore.ieee.org/document/8423794>. | |||
[NIST.CSWP.04162018] | [NIST.CSWP.04162018] | |||
National Institute of Standards and Technology (NIST), | National Institute of Standards and Technology (NIST), | |||
"Framework for Improving Critical Infrastructure | "Framework for Improving Critical Infrastructure | |||
Cybersecurity, Version 1.1", NIST NIST.CSWP.04162018, | Cybersecurity", Version 1.1, | |||
DOI 10.6028/NIST.CSWP.04162018, April 2018, | DOI 10.6028/NIST.CSWP.04162018, April 2018, | |||
<http://nvlpubs.nist.gov/nistpubs/CSWP/ | <http://nvlpubs.nist.gov/nistpubs/CSWP/ | |||
NIST.CSWP.04162018.pdf>. | NIST.CSWP.04162018.pdf>. | |||
[NIST.SP.800-57p1r5] | [NIST.SP.800-57p1r5] | |||
Barker, E B., "Recommendation for key management, part 1 | Barker, E., "Recommendation for Key Management: Part 1 - | |||
:general", NIST NIST.SP.800-57pt1r5, | General", DOI 10.6028/NIST.SP.800-57pt1r5, May 2020, | |||
DOI 10.6028/NIST.SP.800-57pt1r5, 2020, | ||||
<https://doi.org/10.6028/NIST.SP.800-57pt1r5>. | <https://doi.org/10.6028/NIST.SP.800-57pt1r5>. | |||
[PKIX-CMP] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | ||||
"Internet X.509 Public Key Infrastructure -- Certificate | ||||
Management Protocol (CMP)", Work in Progress, Internet- | ||||
Draft, draft-ietf-lamps-rfc4210bis-07, 19 June 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | ||||
rfc4210bis-07>. | ||||
[RFC3647] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S. | [RFC3647] Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S. | |||
Wu, "Internet X.509 Public Key Infrastructure Certificate | Wu, "Internet X.509 Public Key Infrastructure Certificate | |||
Policy and Certification Practices Framework", RFC 3647, | Policy and Certification Practices Framework", RFC 3647, | |||
DOI 10.17487/RFC3647, November 2003, | DOI 10.17487/RFC3647, November 2003, | |||
<https://www.rfc-editor.org/info/rfc3647>. | <https://www.rfc-editor.org/info/rfc3647>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
<https://www.rfc-editor.org/rfc/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
[RFC5753] Turner, S. and D. Brown, "Use of Elliptic Curve | [RFC5753] Turner, S. and D. Brown, "Use of Elliptic Curve | |||
Cryptography (ECC) Algorithms in Cryptographic Message | Cryptography (ECC) Algorithms in Cryptographic Message | |||
Syntax (CMS)", RFC 5753, DOI 10.17487/RFC5753, January | Syntax (CMS)", RFC 5753, DOI 10.17487/RFC5753, January | |||
2010, <https://www.rfc-editor.org/info/rfc5753>. | 2010, <https://www.rfc-editor.org/info/rfc5753>. | |||
[RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed., | [RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed., | |||
"Enrollment over Secure Transport", RFC 7030, | "Enrollment over Secure Transport", RFC 7030, | |||
DOI 10.17487/RFC7030, October 2013, | DOI 10.17487/RFC7030, October 2013, | |||
<https://www.rfc-editor.org/info/rfc7030>. | <https://www.rfc-editor.org/info/rfc7030>. | |||
skipping to change at page 96, line 12 ¶ | skipping to change at line 4349 ¶ | |||
DOI 10.17487/RFC7252, June 2014, | DOI 10.17487/RFC7252, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7252>. | <https://www.rfc-editor.org/info/rfc7252>. | |||
[RFC8366] Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | [RFC8366] Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | |||
"A Voucher Artifact for Bootstrapping Protocols", | "A Voucher Artifact for Bootstrapping Protocols", | |||
RFC 8366, DOI 10.17487/RFC8366, May 2018, | RFC 8366, DOI 10.17487/RFC8366, May 2018, | |||
<https://www.rfc-editor.org/info/rfc8366>. | <https://www.rfc-editor.org/info/rfc8366>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/rfc/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8551] Schaad, J., Ramsdell, B., and S. Turner, "Secure/ | [RFC8551] Schaad, J., Ramsdell, B., and S. Turner, "Secure/ | |||
Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 | Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 | |||
Message Specification", RFC 8551, DOI 10.17487/RFC8551, | Message Specification", RFC 8551, DOI 10.17487/RFC8551, | |||
April 2019, <https://www.rfc-editor.org/info/rfc8551>. | April 2019, <https://www.rfc-editor.org/info/rfc8551>. | |||
[RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | [RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | |||
Touch Provisioning (SZTP)", RFC 8572, | Touch Provisioning (SZTP)", RFC 8572, | |||
DOI 10.17487/RFC8572, April 2019, | DOI 10.17487/RFC8572, April 2019, | |||
<https://www.rfc-editor.org/info/rfc8572>. | <https://www.rfc-editor.org/info/rfc8572>. | |||
[RFC8649] Housley, R., "Hash Of Root Key Certificate Extension", | [RFC8649] Housley, R., "Hash Of Root Key Certificate Extension", | |||
RFC 8649, DOI 10.17487/RFC8649, August 2019, | RFC 8649, DOI 10.17487/RFC8649, August 2019, | |||
<https://www.rfc-editor.org/info/rfc8649>. | <https://www.rfc-editor.org/info/rfc8649>. | |||
[RFC8995] Pritikin, M., Richardson, M., Eckert, T., Behringer, M., | [RFC8995] Pritikin, M., Richardson, M., Eckert, T., Behringer, M., | |||
and K. Watsen, "Bootstrapping Remote Secure Key | and K. Watsen, "Bootstrapping Remote Secure Key | |||
Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995, | Infrastructure (BRSKI)", RFC 8995, DOI 10.17487/RFC8995, | |||
May 2021, <https://www.rfc-editor.org/info/rfc8995>. | May 2021, <https://www.rfc-editor.org/info/rfc8995>. | |||
[SZTP-CSR] Watsen, K., Housley, R., and S. Turner, "Conveying a | ||||
Certificate Signing Request (CSR) in a Secure Zero Touch | ||||
Provisioning (SZTP) Bootstrapping Request", Work in | ||||
Progress, Internet-Draft, draft-ietf-netconf-sztp-csr-14, | ||||
2 March 2022, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-netconf-sztp-csr-14>. | ||||
[UNISIG.Subset-137] | [UNISIG.Subset-137] | |||
UNISIG, "Subset-137; ERTMS/ETCS On-line Key Management | UNISIG, "ERTMS/ETCS On-line Key Management FFFIS", Subset- | |||
FFFIS; V1.0.0", December 2015, | 137, V1.0.0, December 2015, | |||
<https://www.era.europa.eu/sites/default/files/filesystem/ | <https://www.era.europa.eu/system/files/2023-01/ | |||
ertms/ccs_tsi_annex_a_-_mandatory_specifications/ | sos3_index083_-_subset-137_v100.pdf>. | |||
set_of_specifications_3_etcs_b3_r2_gsm-r_b1/index083_- | ||||
_subset-137_v100.pdf>. | ||||
Appendix A. Example CertReqTemplate | Appendix A. Example CertReqTemplate | |||
Suppose the server requires that the certTemplate contains | Suppose the server requires that the certTemplate contains: | |||
* the issuer field with a value to be filled in by the EE, | * the issuer field with a value to be filled in by the EE, | |||
* the subject field with a common name to be filled in by the EE and | * the subject field with a common name to be filled in by the EE and | |||
two organizational unit fields with given values "myDept" and | two organizational unit fields with given values "myDept" and | |||
"myGroup", | "myGroup", | |||
* the publicKey field contains an ECC key on curve secp256r1 or an | * the publicKey field contains an Elliptic Curve Cryptography (ECC) | |||
RSA public key of length 2048, | key on curve secp256r1 or an RSA public key of length 2048, | |||
* the subjectAltName extension with DNS name "www.myServer.com" and | * the subjectAltName extension with DNS name "www.myServer.com" and | |||
an IP address to be filled in, | an IP address to be filled in, | |||
* the keyUsage extension marked critical with the value | * the keyUsage extension marked critical with the value | |||
digitalSignature and keyAgreement, and | digitalSignature and keyAgreement, and | |||
* the extKeyUsage extension with values to be filled in by the EE. | * the extKeyUsage extension with values to be filled in by the EE. | |||
Then the infoValue with certTemplate and keySpec fields returned to | Then the infoValue with certTemplate and keySpec fields returned to | |||
skipping to change at page 98, line 37 ¶ | skipping to change at line 4475 ¶ | |||
OBJECT IDENTIFIER secp256r1 (1 2 840 10045 3 1 7) | OBJECT IDENTIFIER secp256r1 (1 2 840 10045 3 1 7) | |||
} | } | |||
} | } | |||
SEQUENCE { | SEQUENCE { | |||
OBJECT IDENTIFIER rsaKeyLen (1 3 6 1 5 5 7 5 1 12) | OBJECT IDENTIFIER rsaKeyLen (1 3 6 1 5 5 7 5 1 12) | |||
INTEGER 2048 | INTEGER 2048 | |||
} | } | |||
} | } | |||
} | } | |||
Appendix B. History of Changes | Acknowledgements | |||
Note: This appendix will be deleted in the final version of the | ||||
document. | ||||
From version 20 -> 21: | ||||
* Addressed comment from Murray checking each usage of key word | ||||
"SHOULD" and changing it to "MUST", "MAY", or "should" where | ||||
needed or adding an explanation how interoperability may be | ||||
affected (see thread "Murray Kucherawy's No Objection on draft- | ||||
ietf-lamps-lightweight-cmp-profile-18: (with COMMENT)") | ||||
* Some minor editorial changes | ||||
From version 19 -> 20: | ||||
* Addressed comment from John (see thread "[IANA #1261900] expert | ||||
review for draft-ietf-lamps-lightweight-cmp-profile (cmp)") | ||||
From version 18 -> 19: | ||||
* Addressed comment from Murray, moving section 'Convention and | ||||
Terminology' after Section 1.1 and adding a paragraph on the use | ||||
of key word "SHOULD", moving section 'Compatibility with Existing | ||||
CMP Profiles' right before section 'Use of CMP in SZTP and BRSKI | ||||
Environments', and adding a paragraph to section 'Scope of this | ||||
Document' also clarifying the use of key word "SHOULD" (see thread | ||||
"Murray Kucherawy's No Objection on draft-ietf-lamps-lightweight- | ||||
cmp-profile-18: (with COMMENT)") | ||||
* Updated Section 4.1.6 to reflect the changes to CMP Updates on | ||||
guidance which CMS key management technique to use with central | ||||
key management (see thread "CMS: selection of key management | ||||
technique to use for EnvelopedData") and removed normative | ||||
language regarding which key management technique to support | ||||
From version 17 -> 18: | ||||
* Addressed comment from Paul (see thread "Paul Wouters' Yes on | ||||
draft-ietf-lamps-lightweight-cmp-profile-16: (with COMMENT)") | ||||
* Updated Section 4.3.4 with one minor correction and one | ||||
clarification (see thread "Minor change to draft-ietf-lamps- | ||||
lightweight-cmp-profile-17 on Section 4.3.4 CRL Update Retrieval") | ||||
From version 16 -> 17: | ||||
* Addressed comment from Paul (see thread "Paul Wouters' Yes on | ||||
draft-ietf-lamps-lightweight-cmp-profile-16: (with COMMENT)") | ||||
* Addressed comment from Robert (see thread "Robert Wilton's No | ||||
Objection on draft-ietf-lamps-lightweight-cmp-profile-16: (with | ||||
COMMENT)") | ||||
From version 15 -> 16: | ||||
* Addressed comment from Warren (see thread "Warren Kumari's No | ||||
Record on draft-ietf-lamps-lightweight-cmp-profile-15: (with | ||||
COMMENT)") | ||||
* Addressed comment from Sheng (see thread "Intdir telechat review | ||||
of draft-ietf-lamps-lightweight-cmp-profile-15") | ||||
* Addressed comment from Niklas (see thread "Iotdir telechat review | ||||
of draft-ietf-lamps-lightweight-cmp-profile-15") | ||||
* Addressed comment from Erik (see thread "Erik Kline's No Objection | ||||
on draft-ietf-lamps-lightweight-cmp-profile-15: (with COMMENT)") | ||||
* Streamlined wording in two ASN.1 comments | ||||
From version 14 -> 15: | ||||
* Added a reference to HashOfRootKey extension to note in | ||||
Section 3.3 | ||||
* Addressed comment from Joel (see thread "Genart last call review | ||||
of draft-ietf-lamps-lightweight-cmp-profile-14") | ||||
* Addressed comment from Robert (see thread "Artart last call review | ||||
of draft-ietf-lamps-lightweight-cmp-profile-14") | ||||
From version 13 -> 14: | ||||
* Addressed comments from AD Evaluation (see thread "AD Review of | ||||
draft-ietf-lamps-lightweight-cmp-profile-13") | ||||
* Added a note to Section 1 informing about rfc4210bis and | ||||
rfc6712bis activity | ||||
* Added support for constrained PKI entities that can, e.g., only | ||||
store a hash of a self-signed certificate as trust anchor and | ||||
require the self-signed certificate to be provided in-line in | ||||
extraCerts, see Section 3.3 and Section 9 | ||||
* Addressed idnits feedback, specifically changing the following RFC | ||||
reference: RFC3278 -> RFC5753 | ||||
From version 12 -> 13: | ||||
* Some minor clarifications regarding 'exactly one element' -> | ||||
'sequence of one element' | ||||
* Adding authors contact details | ||||
From version 11 -> 12: | ||||
* Added a note to Section 4.1.6 to clarify the combination of | ||||
central key generation with certificate update | ||||
* Updated Section 4.3.4 for clarification that only one CRL per | ||||
round-trip is requested | ||||
* Updated Section 7.1 to fix a wrong change from the last update in | ||||
the first two rows of Table 3 | ||||
From version 10 -> 11: | ||||
* Updated Section 3.2, 3.5, and 3.6.4 to define more clearly | ||||
signature-based protection as the default and the exception for | ||||
not protecting error messages as mentioned at IETF 113 | ||||
* Streamlined headlines in Section 4.1 | ||||
* Updates Section 6.1 and Section 6.2 regarding new well-known path | ||||
segment for profile labels as discussed during IETF 113 | ||||
* Updated Section 7.1. on the support of PKI management operations | ||||
required for EEs, RAs, and CAs as mentioned at IETF 113 | ||||
* Updates Section 8 adding well-known path segments on PKI | ||||
management operations to be used with HTTP and CoAP | ||||
* Capitalized all headlines | ||||
From version 09 -> 10: | ||||
* Resolved some nits reported by I-D nit checker tool | ||||
* Resolve some wording issues | ||||
From version 08 -> 09: | ||||
* Updated Section 1.1 and 1.2 and converted Section 2.2 and 2.3 into | ||||
more detailed tables in Section 7 (see thread "WG Last Call for | ||||
draft-ietf-lamps-cmp-updates-14 and draft-ietf-lamps-lightweight- | ||||
cmp-profile-08") | ||||
* Updated Section 3.1 and 4.1.1 making implicitConfirm recommended | ||||
for ir/cr/p10cr/kur and providing further recommendations on its | ||||
use (see thread "certConf - WG Last Call for draft-ietf-lamps-cmp- | ||||
updates-14 and draft-ietf-lamps-lightweight-cmp-profile-08") | ||||
* Updated Section 4.1.6 adding some clarifications regarding | ||||
validating the authorization of centrally generated keys | ||||
* Updated Section 4.3.4 adding some clarifications on CRL update | ||||
retrieval (see thread "CRL update retrieval - WG Last Call for | ||||
draft-ietf-lamps-cmp-updates-14 and draft-ietf-lamps-lightweight- | ||||
cmp-profile-08") | ||||
* Updated references to CMP Updates pointing to concrete sections | ||||
(see thread "CRL update retrieval - WG Last Call for draft-ietf- | ||||
lamps-cmp-updates-14 and draft-ietf-lamps-lightweight-cmp-profile- | ||||
08")) | ||||
* Corrected a couple of nits elsewhere | ||||
From version 07 -> 08: | ||||
* Updates Section 4.1.6.1. regarding content of the originator and | ||||
keyEncryptionAlgorithm fields (see thread "AD review of draft- | ||||
ietf-lamps-cmp-algorithms-07") | ||||
* Rolled back part of the changes on root CA certificate updates in | ||||
Section 4.3.2 (see thread "Allocation of OIDs for CRL update | ||||
retrieval (draft-ietf-lamps-cmp-updates-13)") | ||||
From version 06 -> 07: | ||||
* Added references to [draft-ietf-netconf-sztp-csr] in new | ||||
Section 1.5 and Section 4.1.4 | ||||
* Added reference to [I-D.ietf-anima-brski-ae] in new Section 1.5 | ||||
and Section 4.1.1 | ||||
* Changed reference in Section 2 to [I-D.ietf-anima-brski-prm] as | ||||
the PUSH use case is continued to be discussed in this draft after | ||||
the split of BRSKI-AE | ||||
* Improved note regarding UNISIG Subset-137 in Section 1.6 | ||||
* Removed "rootCaCert" in Section 3.1 and updated the structure of | ||||
the genm request for root CA certificate updates in Section 4.3.2. | ||||
* Simplified handling of sender and recipient nonces in case of | ||||
delayed delivery in Sections 3.1, 3.5, 4.4, and 5.1.2 | ||||
* Changed the order of Sections 4.1.4 and 4.1.5 | ||||
* Added reference on RFC 8933 regarding CMS signedAttrs to | ||||
Section 4.1.6 | ||||
* Added Section 4.3.4 on CRL update retrieval | ||||
* Generalized delayed enrollment to delayed delivery in Section 4.4 | ||||
and 5.1.2, updated the state machine in the introduction of | ||||
Section 4 | ||||
* Updated Section 6 regarding delayed message transfer | ||||
* Changed file name extension from ".PKI" to ".pki", deleted | ||||
operational path for central key generation, and added an | ||||
operational path for CRL update retrieval in Sections 6.1 and 6.2 | ||||
* Shifted many security considerations to CMP Updates | ||||
* Replaced the term "transport" by "transfer" where appropriate to | ||||
prevent confusion regarding TCP vs. HTTP and CoAP | ||||
* Various editorial changes and language corrections | ||||
From version 05 -> 06: | ||||
* Changed in Section 2.3 the normative requirement in of adding | ||||
protection to a single message to mandatory and replacing | ||||
protection to optional | ||||
* Added Section 3.4 specifying generic prerequisites to PKI | ||||
management operations | ||||
* Added Section 3.5 specifying generic message validation | ||||
* Added Section 3.6 on generic error reporting. This section | ||||
replaces the former error handling section from Section 4 and 5. | ||||
* Added reference to using hashAlg | ||||
* Updates Section 4.3.2 and Section 4.3.3 to align with CMP Updates | ||||
* Added Section 5.1 specifying the behavior of PKI management | ||||
entities when responding to requests | ||||
* Reworked Section 5.2.3. on usage of nested messages | ||||
* Updates Section 5.3 on performing PKI management operation on | ||||
behalf of another entity | ||||
* Updates Section 6.2 on HTTPS transport of CMP messages as | ||||
discusses at IETF 110 and email thread "I-D Action: draft-ietf- | ||||
lamps-lightweight-cmp-profile-05.txt" | ||||
* Added CoAP endpoints to Section 6.4 | ||||
* Added security considerations on usage of shared secret | ||||
information | ||||
* Updated the example in Appendix A | ||||
* Added newly registered OIDs to the example in Appendix A | ||||
* Updated new RFC numbers for I-D.ietf-lamps-crmf-update-algs | ||||
* Multiple language corrections, clarifications, and changes in | ||||
wording | ||||
From version 04 -> 05: | ||||
* Changed to XML V3 | ||||
* Added algorithm names introduced in CMP Algorithms Section 7.3 to | ||||
Section 4 of this document | ||||
* Updates Syntax in Section 4.4.3 due to changes made in CMP Updates | ||||
* Deleted the text on HTTP-based discovery as discussed in | ||||
Section 6.1 | ||||
* Updates Appendix A due to change syntax in Section 4.4.3 | ||||
* Many clarifications and changes in wording thanks to David's | ||||
extensive review | ||||
From version 03 -> 04: | ||||
* Deleted normative text sections on algorithms and refer to CMP | ||||
Algorithms and CRMF Algorithm Requirements Update instead | ||||
* Some clarifications and changes in wording | ||||
From version 02 -> 03: | ||||
* Updated the interoperability with [UNISIG.Subset-137] in | ||||
Section 1.4. | ||||
* Changed Section 2.3 to a tabular layout to enhanced readability | ||||
* Added a ToDo to section 3.1 on aligning with the CMP Algorithms | ||||
draft that will be set up as decided in IETF 108 | ||||
* Updated section 4.1.6 to add the AsymmetricKey Package structure | ||||
to transport a newly generated private key as decided in IETF 108 | ||||
* Added a ToDo to section 4.1.7 on required review of the nonce | ||||
handling in case an offline LRA responds and not forwards the | ||||
pollReq messages | ||||
* Updated Section 4 due to the definition of the new ITAV OIDs in | ||||
CMP Updates | ||||
* Updated Section 4.4.4 to utilize controls instead of rsaKeyLen | ||||
(see thread "dtaft-ietf-lamps-cmp-updates and rsaKeyLen") | ||||
* Deleted the section on definition and discovery of HTTP URIs and | ||||
copied the text to the HTTP transport section and to CMP Updates | ||||
section 3.2 | ||||
* Added some explanation to Section 5.1.2 and Section 5.1.3 on using | ||||
nested messages when a protection by the RA is required. | ||||
* Deleted the section on HTTP URI definition and discovery as some | ||||
content was moved to CMP Updates. The rest of the content was | ||||
moved back to the HTTP transport section | ||||
* Deleted the ASN.1 module after moving the new OIDs id-it-caCerts, | ||||
id-it-rootCaKeyUpdate, and id-it-certReqTemplate to CMP Updates | ||||
* Minor changes in wording and addition of some open ToDos | ||||
From version 01 -> 02: | ||||
* Extend Section 1.6 with regard to conflicts with UNISIG Subset- | ||||
137. | ||||
* Minor clarifications on extraCerts in Section 3.3 and | ||||
Section 4.1.1. | ||||
* Complete specification of requesting a certificate from a trusted | ||||
PKI with signature protection in Section 4.1.2. | ||||
* Changed from symmetric key-encryption to password-based key | ||||
management technique in Section 4.1.6.3 as discussed on the | ||||
mailing list (see thread "draft-ietf-lamps-lightweight-cmp- | ||||
profile-01, section 5.1.6.1") | ||||
* Changed delayed enrollment described in Section 4.4 from | ||||
recommended to optional as decided at IETF 107 | ||||
* Introduced the new RootCAKeyUpdate structure for root CA | ||||
certificate update in Section 4.3.2 as decided at IETF 107 (also | ||||
see email thread "draft-ietf-lamps-lightweight-cmp-profile-01, | ||||
section 5.4.3") | ||||
* Extend the description of the CertReqTemplate PKI management | ||||
operation, including an example added in the Appendix. Keep | ||||
rsaKeyLen as a single integer value in Section 4.3.3 as discussed | ||||
on the mailing list (see thread "draft-ietf-lamps-lightweight-cmp- | ||||
profile-01, section 5.4.4") | ||||
* Deleted Sections "Get certificate management configuration" and | ||||
"Get enrollment voucher" as decided at IETF 107 | ||||
* Complete specification of adding an additional protection by an | ||||
PKI management entity in Section 5.2.2. | ||||
* Added a section on HTTP URI definition and discovery and extended | ||||
Section 6.1 on definition and discovery of supported HTTP URIs and | ||||
content types, add a path for nested messages as specified in | ||||
Section 5.2.2 and delete the paths for /getCertMgtConfig and | ||||
/getVoucher | ||||
* Changed Section 6.4 to address offline transport and added more | ||||
detailed specification file-based transport of CMP | ||||
* Added a reference to the new I-D of Mohit Sahni on "CoAP Transport | ||||
for CMPV2" in Section 6.2; thanks to Mohit supporting the effort | ||||
to ease utilization of CMP | ||||
* Moved the change history to the Appendix | ||||
* Minor changes in wording | ||||
From version 00 -> 01: | ||||
* Harmonize terminology with CMP [RFC4210], e.g., | ||||
- transaction, message sequence, exchange, use case -> PKI | ||||
management operation | ||||
- PKI component, (L)RA/CA -> PKI management entity | ||||
* Minor changes in wording | ||||
From draft-brockhaus-lamps-lightweight-cmp-profile-03 -> draft-ietf- | ||||
lamps-lightweight-cmp-profile-00: | ||||
* Changes required to reflect WG adoption | ||||
* Minor changes in wording | ||||
From version 02 -> 03: | ||||
* Added a short summary of [RFC4210] Appendix D and E in | ||||
Section 1.5. | ||||
* Clarified some references to different sections and added some | ||||
clarification in response to feedback from Michael Richardson and | ||||
Tomas Gustavsson. | ||||
* Added an additional label to the operational path to address | ||||
multiple CAs or certificate profiles in Section 6.1. | ||||
From version 01 -> 02: | ||||
* Added some clarification on the key management techniques for | ||||
protection of centrally generated keys in Section 4.1.6. | ||||
* Added some clarifications on the certificates for root CA | ||||
certificate update in Section 4.3.2. | ||||
* Added a section to specify the usage of nested messages for RAs to | ||||
add an additional protection for further discussion, see | ||||
Section 5.2.2. | ||||
* Added a table containing endpoints for HTTP transport in | ||||
Section 6.1 to simplify addressing PKI management entities. | ||||
* Added some ToDos resulting from discussion with Tomas Gustavsson. | ||||
* Minor clarifications and changes in wording. | ||||
From version 00 -> 01: | ||||
* Added a section to specify the enrollment with an already trusted | ||||
PKI for further discussion, see Section 4.1.2. | ||||
* Complete specification of requesting a certificate from a legacy | ||||
PKI using a PKCS#10 [RFC2986] request in Section 4.1.4. | ||||
* Complete specification of adding central generation of a key pair | ||||
on behalf of an end entity in Section 4.1.6. | ||||
* Complete specification of handling delayed enrollment due to | ||||
asynchronous message delivery in Section 4.4. | ||||
* Complete specification of additional support messages, e.g., to | ||||
update a Root CA certificate or to request an RFC 8366 [RFC8366] | ||||
voucher, in Section 4.3. | ||||
* Minor changes in wording. | ||||
From draft-brockhaus-lamps-industrial-cmp-profile-00 -> draft- | ||||
brockhaus-lamps-lightweight-cmp-profile-00: | ||||
* Change focus from industrial to more multi-purpose use cases and | We thank the various reviewers of this document. | |||
lightweight CMP profile. | ||||
* Incorporate the omitted confirmation into the header specified in | ||||
Section 3.1 and described in the standard enrollment use case in | ||||
Section 4.1.1 due to discussion with Tomas Gustavsson. | ||||
* Change from OPTIONAL to RECOMMENDED for use case 'Revoke another's | ||||
entities certificate' in Section 5.3.2, because it is regarded as | ||||
important functionality in many environments to enable the | ||||
management station to revoke EE certificates. | ||||
* Complete the specification of the revocation message flow in | ||||
Section 4.2 and Section 5.3.2. | ||||
* The CoAP based transport mechanism and piggybacking of CMP | ||||
messages on top of other reliable transport protocols is out of | ||||
scope of this document and would need to be specified in another | ||||
document. | ||||
* Further minor changes in wording. | ||||
Authors' Addresses | Authors' Addresses | |||
Hendrik Brockhaus | Hendrik Brockhaus | |||
Siemens | Siemens | |||
Werner-von-Siemens-Strasse 1 | Werner-von-Siemens-Strasse 1 | |||
80333 Munich | 80333 Munich | |||
Germany | Germany | |||
Email: hendrik.brockhaus@siemens.com | Email: hendrik.brockhaus@siemens.com | |||
URI: https://www.siemens.com | URI: https://www.siemens.com | |||
End of changes. 484 change blocks. | ||||
1632 lines changed or deleted | 1265 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |