rfc9810.original | rfc9810.txt | |||
---|---|---|---|---|
LAMPS Working Group H. Brockhaus | Internet Engineering Task Force (IETF) H. Brockhaus | |||
Internet-Draft D. von Oheimb | Request for Comments: 9810 D. von Oheimb | |||
Obsoletes: 4210 9480 (if approved) Siemens | Obsoletes: 4210, 9480 Siemens | |||
Updates: 5912 (if approved) M. Ounsworth | Updates: 5912 M. Ounsworth | |||
Intended status: Standards Track J. Gray | Category: Standards Track J. Gray | |||
Expires: 3 August 2025 Entrust | ISSN: 2070-1721 Entrust | |||
30 January 2025 | June 2025 | |||
Internet X.509 Public Key Infrastructure -- Certificate Management | Internet X.509 Public Key Infrastructure -- Certificate Management | |||
Protocol (CMP) | Protocol (CMP) | |||
draft-ietf-lamps-rfc4210bis-18 | ||||
Abstract | Abstract | |||
This document describes the Internet X.509 Public Key Infrastructure | This document describes the Internet X.509 Public Key Infrastructure | |||
(PKI) Certificate Management Protocol (CMP). Protocol messages are | (PKI) Certificate Management Protocol (CMP). Protocol messages are | |||
defined for X.509v3 certificate creation and management. CMP | defined for X.509v3 certificate creation and management. CMP | |||
provides interactions between client systems and PKI components such | provides interactions between client systems and PKI components such | |||
as a Registration Authority (RA) and a Certification Authority (CA). | as a Registration Authority (RA) and a Certification Authority (CA). | |||
This document adds support for management of certificates containing | This document adds support for management of certificates containing | |||
a Key Encapsulation Mechanism (KEM) public key and use EnvelopedData | a Key Encapsulation Mechanism (KEM) public key and uses EnvelopedData | |||
instead of EncryptedValue. This document also includes the updates | instead of EncryptedValue. This document also includes the updates | |||
specified in Section 2 and Appendix A.2 of RFC 9480. | specified in Section 2 and Appendix A.2 of RFC 9480. | |||
The updates maintain backward compatibility with CMP version 2 | The updates maintain backward compatibility with CMP version 2 | |||
wherever possible. Updates to CMP version 2 are improving crypto | wherever possible. Updates to CMP version 2 are improving crypto | |||
agility, extending the polling mechanism, adding new general message | agility, extending the polling mechanism, adding new general message | |||
types, and adding extended key usages to identify special CMP server | types, and adding extended key usages (EKUs) to identify special CMP | |||
authorizations. CMP version 3 is introduced for changes to the ASN.1 | server authorizations. CMP version 3 is introduced for changes to | |||
syntax, which are support of EnvelopedData, certConf with hashAlg, | the ASN.1 syntax, which support EnvelopedData, certConf with hashAlg, | |||
POPOPrivKey with agreeMAC, and RootCaKeyUpdateContent in ckuann | POPOPrivKey with agreeMAC, and RootCaKeyUpdateContent in ckuann | |||
messages. | messages. | |||
This document obsoletes RFC 4210 and together with I-D.ietf-lamps- | This document obsoletes RFC 4210, and together with RFC 9811, it also | |||
rfc6712bis and it also obsoletes RFC 9480. Appendix F of this | obsoletes RFC 9480. Appendix F of this document updates Section 9 of | |||
document updates the Section 9 of RFC 5912. | RFC 5912. | |||
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 3 August 2025. | 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/rfc9810. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 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 | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction | |||
1.1. Changes Made by RFC 4210 . . . . . . . . . . . . . . . . 6 | 1.1. Changes Made by RFC 4210 | |||
1.2. Updates Made by RFC 9480 . . . . . . . . . . . . . . . . 7 | 1.2. Updates Made by RFC 9480 | |||
1.3. Changes Made by This Document . . . . . . . . . . . . . . 8 | 1.3. Changes Made by This Document | |||
2. Terminology and Abbreviations . . . . . . . . . . . . . . . . 9 | 2. Terminology and Abbreviations | |||
3. PKI Management Overview . . . . . . . . . . . . . . . . . . . 10 | 3. PKI Management Overview | |||
3.1. PKI Management Model . . . . . . . . . . . . . . . . . . 10 | 3.1. PKI Management Model | |||
3.1.1. Definitions of PKI Entities . . . . . . . . . . . . . 10 | 3.1.1. Definitions of PKI Entities | |||
3.1.1.1. Subjects and End Entities . . . . . . . . . . . . 10 | 3.1.1.1. Subjects and End Entities | |||
3.1.1.2. Certification Authority . . . . . . . . . . . . . 11 | 3.1.1.2. Certification Authority | |||
3.1.1.3. Registration Authority . . . . . . . . . . . . . 12 | 3.1.1.3. Registration Authority | |||
3.1.1.4. Key Generation Authority . . . . . . . . . . . . 12 | 3.1.1.4. Key Generation Authority | |||
3.1.2. PKI Management Requirements . . . . . . . . . . . . . 13 | 3.1.2. PKI Management Requirements | |||
3.1.3. PKI Management Operations . . . . . . . . . . . . . . 15 | 3.1.3. PKI Management Operations | |||
4. Assumptions and Restrictions . . . . . . . . . . . . . . . . 19 | 4. Assumptions and Restrictions | |||
4.1. End Entity Initialization . . . . . . . . . . . . . . . . 19 | 4.1. End Entity Initialization | |||
4.2. Initial Registration/Certification . . . . . . . . . . . 19 | 4.2. Initial Registration/Certification | |||
4.2.1. Criteria Used . . . . . . . . . . . . . . . . . . . . 20 | 4.2.1. Criteria Used | |||
4.2.1.1. Initiation of Registration/Certification . . . . 20 | 4.2.1.1. Initiation of Registration/Certification | |||
4.2.1.2. End Entity Message Origin Authentication . . . . 21 | 4.2.1.2. End Entity Message Origin Authentication | |||
4.2.1.3. Location of Key Generation . . . . . . . . . . . 21 | 4.2.1.3. Location of Key Generation | |||
4.2.1.4. Confirmation of Successful Certification . . . . 22 | 4.2.1.4. Confirmation of Successful Certification | |||
4.2.2. Initial Registration/Certification Schemes . . . . . 22 | 4.2.2. Initial Registration/Certification Schemes | |||
4.2.2.1. Centralized Scheme . . . . . . . . . . . . . . . 22 | 4.2.2.1. Centralized Scheme | |||
4.2.2.2. Basic Authenticated Scheme . . . . . . . . . . . 22 | 4.2.2.2. Basic Authenticated Scheme | |||
4.3. Proof-of-Possession (POP) of Private Key | ||||
4.3. Proof-of-Possession (POP) of Private Key . . . . . . . . 23 | 4.3.1. Signature Keys | |||
4.3.1. Signature Keys . . . . . . . . . . . . . . . . . . . 24 | 4.3.2. Encryption Keys | |||
4.3.2. Encryption Keys . . . . . . . . . . . . . . . . . . . 24 | 4.3.3. Key Agreement Keys | |||
4.3.3. Key Agreement Keys . . . . . . . . . . . . . . . . . 25 | 4.3.4. Key Encapsulation Mechanism Keys | |||
4.3.4. Key Encapsulation Mechanism Keys . . . . . . . . . . 25 | 4.4. Root CA Key Update | |||
4.4. Root CA Key Update . . . . . . . . . . . . . . . . . . . 26 | 4.4.1. CA Operator Actions | |||
4.4.1. CA Operator Actions . . . . . . . . . . . . . . . . . 27 | 4.4.2. Verifying Certificates | |||
4.4.2. Verifying Certificates . . . . . . . . . . . . . . . 28 | 4.4.2.1. Verification in Cases 1 and 4 | |||
4.4.2.1. Verification in Cases 1 and 4 . . . . . . . . . . 29 | 4.4.2.2. Verification in Case 2 | |||
4.4.2.2. Verification in Case 2 . . . . . . . . . . . . . 29 | 4.4.2.3. Verification in Case 3 | |||
4.4.2.3. Verification in Case 3 . . . . . . . . . . . . . 30 | 4.4.3. Revocation - Change of the CA Key | |||
4.4.3. Revocation - Change of CA Key . . . . . . . . . . . . 31 | 4.5. Extended Key Usage for PKI Entities | |||
4.5. Extended Key Usage for PKI Entities . . . . . . . . . . . 31 | 5. Data Structures | |||
5. Data Structures . . . . . . . . . . . . . . . . . . . . . . . 32 | 5.1. Overall PKI Message | |||
5.1. Overall PKI Message . . . . . . . . . . . . . . . . . . . 32 | 5.1.1. PKI Message Header | |||
5.1.1. PKI Message Header . . . . . . . . . . . . . . . . . 33 | 5.1.1.1. ImplicitConfirm | |||
5.1.1.1. ImplicitConfirm . . . . . . . . . . . . . . . . . 36 | 5.1.1.2. ConfirmWaitTime | |||
5.1.1.2. ConfirmWaitTime . . . . . . . . . . . . . . . . . 36 | 5.1.1.3. OrigPKIMessage | |||
5.1.1.3. OrigPKIMessage . . . . . . . . . . . . . . . . . 37 | 5.1.1.4. CertProfile | |||
5.1.1.4. CertProfile . . . . . . . . . . . . . . . . . . . 37 | 5.1.1.5. KemCiphertextInfo | |||
5.1.1.5. KemCiphertextInfo . . . . . . . . . . . . . . . . 38 | 5.1.2. PKI Message Body | |||
5.1.2. PKI Message Body . . . . . . . . . . . . . . . . . . 38 | 5.1.3. PKI Message Protection | |||
5.1.3. PKI Message Protection . . . . . . . . . . . . . . . 39 | 5.1.3.1. Shared Secret Information | |||
5.1.3.1. Shared Secret Information . . . . . . . . . . . . 40 | 5.1.3.2. DH Key Pairs | |||
5.1.3.2. DH Key Pairs . . . . . . . . . . . . . . . . . . 41 | 5.1.3.3. Signature | |||
5.1.3.3. Signature . . . . . . . . . . . . . . . . . . . . 41 | 5.1.3.4. Key Encapsulation | |||
5.1.3.4. Key Encapsulation . . . . . . . . . . . . . . . . 42 | 5.1.3.5. Multiple Protection | |||
5.1.3.5. Multiple Protection . . . . . . . . . . . . . . . 46 | 5.2. Common Data Structures | |||
5.2. Common Data Structures . . . . . . . . . . . . . . . . . 47 | 5.2.1. Requested Certificate Contents | |||
5.2.1. Requested Certificate Contents . . . . . . . . . . . 47 | 5.2.2. Encrypted Values | |||
5.2.2. Encrypted Values . . . . . . . . . . . . . . . . . . 48 | 5.2.3. Status Codes and Failure Information for PKI Messages | |||
5.2.3. Status Codes and Failure Information for PKI | 5.2.4. Certificate Identification | |||
Messages . . . . . . . . . . . . . . . . . . . . . . 50 | 5.2.5. Out-of-Band Root CA Public Key | |||
5.2.4. Certificate Identification . . . . . . . . . . . . . 51 | 5.2.6. Archive Options | |||
5.2.5. Out-of-band root CA Public Key . . . . . . . . . . . 52 | 5.2.7. Publication Information | |||
5.2.6. Archive Options . . . . . . . . . . . . . . . . . . . 53 | 5.2.8. Proof-of-Possession Structures | |||
5.2.7. Publication Information . . . . . . . . . . . . . . . 53 | 5.2.8.1. raVerified | |||
5.2.8. Proof-of-Possession Structures . . . . . . . . . . . 53 | 5.2.8.2. POPOSigningKey Structure | |||
5.2.8.1. raVerified . . . . . . . . . . . . . . . . . . . 53 | 5.2.8.3. POPOPrivKey Structure | |||
5.2.8.2. POPOSigningKey Structure . . . . . . . . . . . . 53 | 5.2.8.4. Summary of POP Options | |||
5.2.8.3. POPOPrivKey Structure . . . . . . . . . . . . . . 54 | 5.2.9. GeneralizedTime | |||
5.2.8.4. Summary of PoP Options . . . . . . . . . . . . . 59 | 5.3. Operation-Specific Data Structures | |||
5.2.9. GeneralizedTime . . . . . . . . . . . . . . . . . . . 60 | 5.3.1. Initialization Request | |||
5.3. Operation-Specific Data Structures . . . . . . . . . . . 60 | 5.3.2. Initialization Response | |||
5.3.1. Initialization Request . . . . . . . . . . . . . . . 60 | 5.3.3. Certification Request | |||
5.3.2. Initialization Response . . . . . . . . . . . . . . . 60 | 5.3.4. Certification Response | |||
5.3.3. Certification Request . . . . . . . . . . . . . . . . 61 | 5.3.5. Key Update Request Content | |||
5.3.4. Certification Response . . . . . . . . . . . . . . . 61 | 5.3.6. Key Update Response Content | |||
5.3.5. Key Update Request Content . . . . . . . . . . . . . 63 | 5.3.7. Key Recovery Request Content | |||
5.3.6. Key Update Response Content . . . . . . . . . . . . . 63 | 5.3.8. Key Recovery Response Content | |||
5.3.7. Key Recovery Request Content . . . . . . . . . . . . 63 | 5.3.9. Revocation Request Content | |||
5.3.8. Key Recovery Response Content . . . . . . . . . . . . 63 | 5.3.10. Revocation Response Content | |||
5.3.9. Revocation Request Content . . . . . . . . . . . . . 64 | 5.3.11. Cross-Certification Request Content | |||
5.3.10. Revocation Response Content . . . . . . . . . . . . . 64 | 5.3.12. Cross-Certification Response Content | |||
5.3.11. Cross Certification Request Content . . . . . . . . . 64 | 5.3.13. CA Key Update Announcement Content | |||
5.3.12. Cross Certification Response Content . . . . . . . . 65 | 5.3.14. Certificate Announcement | |||
5.3.13. CA Key Update Announcement Content . . . . . . . . . 65 | 5.3.15. Revocation Announcement | |||
5.3.14. Certificate Announcement . . . . . . . . . . . . . . 65 | 5.3.16. CRL Announcement | |||
5.3.15. Revocation Announcement . . . . . . . . . . . . . . . 65 | 5.3.17. PKI Confirmation Content | |||
5.3.16. CRL Announcement . . . . . . . . . . . . . . . . . . 66 | 5.3.18. Certificate Confirmation Content | |||
5.3.17. PKI Confirmation Content . . . . . . . . . . . . . . 66 | 5.3.19. PKI General Message Content | |||
5.3.18. Certificate Confirmation Content . . . . . . . . . . 66 | 5.3.19.1. CA Protocol Encryption Certificate | |||
5.3.19. PKI General Message Content . . . . . . . . . . . . . 67 | 5.3.19.2. Signing Key Pair Types | |||
5.3.19.1. CA Protocol Encryption Certificate . . . . . . . 68 | 5.3.19.3. Encryption / Key Agreement Key Pair Types | |||
5.3.19.2. Signing Key Pair Types . . . . . . . . . . . . . 68 | 5.3.19.4. Preferred Symmetric Algorithm | |||
5.3.19.3. Encryption/Key Agreement Key Pair Types . . . . 68 | 5.3.19.5. Updated CA Key Pair | |||
5.3.19.4. Preferred Symmetric Algorithm . . . . . . . . . 69 | 5.3.19.6. CRL | |||
5.3.19.5. Updated CA Key Pair . . . . . . . . . . . . . . 69 | 5.3.19.7. Unsupported Object Identifiers | |||
5.3.19.6. CRL . . . . . . . . . . . . . . . . . . . . . . 69 | 5.3.19.8. Key Pair Parameters | |||
5.3.19.7. Unsupported Object Identifiers . . . . . . . . . 69 | 5.3.19.9. Revocation Passphrase | |||
5.3.19.8. Key Pair Parameters . . . . . . . . . . . . . . 69 | 5.3.19.10. ImplicitConfirm | |||
5.3.19.9. Revocation Passphrase . . . . . . . . . . . . . 70 | 5.3.19.11. ConfirmWaitTime | |||
5.3.19.10. ImplicitConfirm . . . . . . . . . . . . . . . . 70 | 5.3.19.12. Original PKIMessage | |||
5.3.19.11. ConfirmWaitTime . . . . . . . . . . . . . . . . 70 | 5.3.19.13. Supported Language Tags | |||
5.3.19.12. Original PKIMessage . . . . . . . . . . . . . . 70 | 5.3.19.14. CA Certificates | |||
5.3.19.13. Supported Language Tags . . . . . . . . . . . . 70 | 5.3.19.15. Root CA Update | |||
5.3.19.14. CA Certificates . . . . . . . . . . . . . . . . 70 | 5.3.19.16. Certificate Request Template | |||
5.3.19.15. Root CA Update . . . . . . . . . . . . . . . . . 71 | 5.3.19.17. CRL Update Retrieval | |||
5.3.19.16. Certificate Request Template . . . . . . . . . . 71 | 5.3.19.18. KEM Ciphertext | |||
5.3.19.17. CRL Update Retrieval . . . . . . . . . . . . . . 72 | 5.3.20. PKI General Response Content | |||
5.3.19.18. KEM Ciphertext . . . . . . . . . . . . . . . . . 73 | 5.3.21. Error Message Content | |||
5.3.20. PKI General Response Content . . . . . . . . . . . . 73 | 5.3.22. Polling Request and Response | |||
5.3.21. Error Message Content . . . . . . . . . . . . . . . . 74 | 6. Mandatory PKI Management Functions | |||
5.3.22. Polling Request and Response . . . . . . . . . . . . 74 | 6.1. Root CA Initialization | |||
6. Mandatory PKI Management Functions . . . . . . . . . . . . . 79 | 6.2. Root CA Key Update | |||
6.1. Root CA Initialization . . . . . . . . . . . . . . . . . 79 | 6.3. Subordinate CA Initialization | |||
6.2. Root CA Key Update . . . . . . . . . . . . . . . . . . . 80 | 6.4. CRL Production | |||
6.3. Subordinate CA Initialization . . . . . . . . . . . . . . 80 | 6.5. PKI Information Request | |||
6.4. CRL production . . . . . . . . . . . . . . . . . . . . . 80 | 6.6. Cross Certification | |||
6.5. PKI Information Request . . . . . . . . . . . . . . . . . 80 | 6.6.1. One-Way Request-Response Scheme | |||
6.6. Cross Certification . . . . . . . . . . . . . . . . . . . 81 | 6.7. End Entity Initialization | |||
6.6.1. One-Way Request-Response Scheme: . . . . . . . . . . 81 | 6.7.1. Acquisition of PKI Information | |||
6.7. End Entity Initialization . . . . . . . . . . . . . . . . 83 | 6.7.2. Out-of-Band Verification of the Root CA Key | |||
6.7.1. Acquisition of PKI Information . . . . . . . . . . . 83 | 6.8. Certificate Request | |||
6.7.2. Out-of-Band Verification of Root CA Key . . . . . . . 84 | 6.9. Key Update | |||
6.8. Certificate Request . . . . . . . . . . . . . . . . . . . 84 | 7. Version Negotiation | |||
6.9. Key Update . . . . . . . . . . . . . . . . . . . . . . . 84 | 7.1. Supporting RFC 2510 Implementations | |||
7. Version Negotiation . . . . . . . . . . . . . . . . . . . . . 84 | 7.1.1. Clients Talking to RFC 2510 Servers | |||
7.1. Supporting RFC 2510 Implementations . . . . . . . . . . . 85 | 7.1.2. Servers Receiving Version cmp1999 PKIMessages | |||
7.1.1. Clients Talking to RFC 2510 Servers . . . . . . . . . 85 | 8. Security Considerations | |||
7.1.2. Servers Receiving Version cmp1999 PKIMessages . . . . 85 | 8.1. On the Necessity of Proof-of-Possession | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 86 | 8.2. Proof-of-Possession with a Decryption Key | |||
8.1. On the Necessity of Proof-Of-Possession . . . . . . . . . 86 | 8.3. Proof-of-Possession by Exposing the Private Key | |||
8.2. Proof-Of-Possession with a Decryption Key . . . . . . . . 86 | 8.4. Attack Against Diffie-Hellman Key Exchange | |||
8.3. Proof-Of-Possession by Exposing the Private Key . . . . . 86 | 8.5. Perfect Forward Secrecy | |||
8.4. Attack Against Diffie-Hellman Key Exchange . . . . . . . 87 | ||||
8.5. Perfect Forward Secrecy . . . . . . . . . . . . . . . . . 87 | ||||
8.6. Private Keys for Certificate Signing and CMP Message | 8.6. Private Keys for Certificate Signing and CMP Message | |||
Protection . . . . . . . . . . . . . . . . . . . . . . . 88 | Protection | |||
8.7. Entropy of Random Numbers, Key Pairs, and Shared Secret | 8.7. Entropy of Random Numbers, Key Pairs, and Shared Secret | |||
Information . . . . . . . . . . . . . . . . . . . . . . 88 | Information | |||
8.8. Recurring Usage of KEM Keys for Message Protection . . . 89 | 8.8. Recurring Usage of KEM Keys for Message Protection | |||
8.9. Trust Anchor Provisioning Using CMP Messages . . . . . . 89 | 8.9. Trust Anchor Provisioning Using CMP Messages | |||
8.10. Authorizing Requests for Certificates with Specific | 8.10. Authorizing Requests for Certificates with Specific EKUs | |||
EKUs . . . . . . . . . . . . . . . . . . . . . . . . . . 90 | 8.11. Usage of Certificate Transparency Logs | |||
8.11. Usage of Certificate Transparency Logs . . . . . . . . . 90 | 9. IANA Considerations | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 90 | 10. References | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 91 | 10.1. Normative References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 91 | 10.2. Informative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 91 | Appendix A. Reasons for the Presence of RAs | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 93 | Appendix B. The Use of Revocation Passphrase | |||
Appendix A. Reasons for the Presence of RAs . . . . . . . . . . 97 | Appendix C. PKI Management Message Profiles (REQUIRED) | |||
Appendix B. The Use of Revocation Passphrase . . . . . . . . . . 98 | C.1. General Rules for Interpretation of These Profiles | |||
Appendix C. PKI Management Message Profiles (REQUIRED) . . . . . 100 | C.2. Algorithm Use Profile | |||
C.1. General Rules for Interpretation of These Profiles . . . 101 | C.3. Proof-of-Possession Profile | |||
C.2. Algorithm Use Profile . . . . . . . . . . . . . . . . . . 102 | ||||
C.3. Proof-of-Possession Profile . . . . . . . . . . . . . . . 102 | ||||
C.4. Initial Registration/Certification (Basic Authenticated | C.4. Initial Registration/Certification (Basic Authenticated | |||
Scheme) . . . . . . . . . . . . . . . . . . . . . . . . . 103 | Scheme) | |||
C.5. Certificate Request . . . . . . . . . . . . . . . . . . . 109 | C.5. Certificate Request | |||
C.6. Key Update Request . . . . . . . . . . . . . . . . . . . 110 | C.6. Key Update Request | |||
Appendix D. PKI Management Message Profiles (OPTIONAL) . . . . . 110 | Appendix D. PKI Management Message Profiles (OPTIONAL) | |||
D.1. General Rules for Interpretation of These Profiles. . . . 111 | D.1. General Rules for Interpretation of These Profiles | |||
D.2. Algorithm Use Profile . . . . . . . . . . . . . . . . . . 111 | D.2. Algorithm Use Profile | |||
D.3. Self-Signed Certificates . . . . . . . . . . . . . . . . 111 | D.3. Self-Signed Certificates | |||
D.4. Root CA Key Update . . . . . . . . . . . . . . . . . . . 112 | D.4. Root CA Key Update | |||
D.5. PKI Information Request/Response . . . . . . . . . . . . 113 | D.5. PKI Information Request/Response | |||
D.6. Cross Certification Request/Response (1-way) . . . . . . 115 | D.6. Cross-Certification Request/Response (1-way) | |||
D.7. In-Band Initialization Using External Identity | D.7. In-Band Initialization Using External Identity Certificate | |||
Certificate . . . . . . . . . . . . . . . . . . . . . . . 118 | Appendix E. Variants of Using KEM Keys for PKI Message Protection | |||
Appendix E. Variants of Using KEM Keys for PKI Message | Appendix F. Compilable ASN.1 Definitions | |||
Protection . . . . . . . . . . . . . . . . . . . . . . . 119 | Acknowledgements | |||
Appendix F. Compilable ASN.1 Definitions . . . . . . . . . . . . 122 | Authors' Addresses | |||
Appendix G. History of Changes . . . . . . . . . . . . . . . . . 137 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 143 | ||||
1. Introduction | 1. Introduction | |||
[RFC Editor: please delete: | ||||
During IESG telechat the CMP Updates document was approved on | ||||
condition that LAMPS provides a RFC4210bis document. Version -00 of | ||||
this document shall be identical to RFC 4210 and version -01 | ||||
incorporates the changes specified in CMP Updates Section 2 and | ||||
Appendix A.2. | ||||
A history of changes is available in Appendix G of this document. | ||||
The authors of this document wish to thank Carlisle Adams, Stephen | ||||
Farrell, Tomi Kause, and Tero Mononen, the original authors of | ||||
RFC4210, for their work and invite them, next to further volunteers, | ||||
to join the -bis activity as co-authors. | ||||
] | ||||
[RFC Editor: | ||||
Please perform the following substitution. | ||||
* RFCXXXX --> the assigned numerical RFC value for this draft ] | ||||
This document describes the Internet X.509 Public Key Infrastructure | This document describes the Internet X.509 Public Key Infrastructure | |||
(PKI) Certificate Management Protocol (CMP). Protocol messages are | (PKI) Certificate Management Protocol (CMP). Protocol messages are | |||
defined for certificate creation and management. The term | defined for certificate creation and management. The term | |||
"certificate" in this document refers to an X.509v3 Certificate as | "certificate" in this document refers to an X.509v3 Certificate as | |||
defined in [RFC5280]. | defined in [RFC5280]. | |||
1.1. Changes Made by RFC 4210 | 1.1. Changes Made by RFC 4210 | |||
[RFC4210] differs from [RFC2510] in the following areas: | [RFC4210] differs from [RFC2510] in the following areas: | |||
skipping to change at page 7, line 6 ¶ | skipping to change at line 259 ¶ | |||
appendices: the required profile and the optional profile. Some | appendices: the required profile and the optional profile. Some | |||
of the formerly mandatory functionality is moved to the optional | of the formerly mandatory functionality is moved to the optional | |||
profile. | profile. | |||
* The message confirmation mechanism has changed substantially. | * The message confirmation mechanism has changed substantially. | |||
* A new polling mechanism is introduced, deprecating the old polling | * A new polling mechanism is introduced, deprecating the old polling | |||
method at the CMP transport level. | method at the CMP transport level. | |||
* The CMP transport protocol issues are handled in a separate | * The CMP transport protocol issues are handled in a separate | |||
document [RFC6712], thus the Transports section is removed. | document [RFC6712], thus the "Transports" section is removed. | |||
* A new implicit confirmation method is introduced to reduce the | * A new implicit confirmation method is introduced to reduce the | |||
number of protocol messages exchanged in a transaction. | number of protocol messages exchanged in a transaction. | |||
* The new specification contains some less prominent protocol | * The new specification contains some less prominent protocol | |||
enhancements and improved explanatory text on several issues. | enhancements and improved explanatory text on several issues. | |||
1.2. Updates Made by RFC 9480 | 1.2. Updates Made by RFC 9480 | |||
CMP Updates [RFC9480] and CMP Algorithms [RFC9481] updated [RFC4210], | CMP Updates [RFC9480] and CMP Algorithms [RFC9481] updated [RFC4210], | |||
skipping to change at page 7, line 28 ¶ | skipping to change at line 281 ¶ | |||
CMP Profile [RFC9483], in the following areas: | CMP Profile [RFC9483], in the following areas: | |||
* Added new extended key usages for various CMP server types, e.g., | * Added new extended key usages for various CMP server types, e.g., | |||
registration authority and certification authority, to express the | registration authority and certification authority, to express the | |||
authorization of the certificate holder that acts as the indicated | authorization of the certificate holder that acts as the indicated | |||
type of PKI management entity. | type of PKI management entity. | |||
* Extended the description of multiple protection to cover | * Extended the description of multiple protection to cover | |||
additional use cases, e.g., batch processing of messages. | additional use cases, e.g., batch processing of messages. | |||
* Use the Cryptographic Message Syntax (CMS) [RFC5652] type | * Used the Cryptographic Message Syntax (CMS) [RFC5652] type | |||
EnvelopedData as the preferred choice instead of EncryptedValue to | EnvelopedData as the preferred choice instead of EncryptedValue to | |||
better support crypto agility in CMP. | better support crypto agility in CMP. | |||
For reasons of completeness and consistency, the type | For reasons of completeness and consistency, the type | |||
EncryptedValue has been exchanged in all occurrences. This | EncryptedValue has been exchanged in all occurrences. This | |||
includes the protection of centrally generated private keys, | includes the protection of centrally generated private keys, | |||
encryption of certificates, proof-of-possession methods, and | encryption of certificates, proof-of-possession methods, and | |||
protection of revocation passphrases. To properly differentiate | protection of revocation passphrases. To properly differentiate | |||
the support of EnvelopedData instead of EncryptedValue, CMP | the support of EnvelopedData instead of EncryptedValue, CMP | |||
version 3 is introduced in case a transaction is supposed to use | version 3 is introduced in case a transaction is supposed to use | |||
EnvelopedData. | EnvelopedData. | |||
Note: According to [RFC4211], Section 2.1, point 9, the use of the | Note: According to point 9 in Section 2.1 of [RFC4211], the use of | |||
EncryptedValue structure has been deprecated in favor of the | the EncryptedValue structure has been deprecated in favor of the | |||
EnvelopedData structure. [RFC4211] offers the EncryptedKey | EnvelopedData structure. [RFC4211] offers the EncryptedKey | |||
structure a choice of EncryptedValue and EnvelopedData for | structure a choice of EncryptedValue and EnvelopedData for | |||
migration to EnvelopedData. | migration to EnvelopedData. | |||
* Offer an optional hashAlg field in CertStatus supporting cases | * Offered an optional hashAlg field in CertStatus supporting cases | |||
that a certificate needs to be confirmed that has a signature | that a certificate needs to be confirmed that has a signature | |||
algorithm that does not indicate a specific hash algorithm to use | algorithm that does not indicate a specific hash algorithm to use | |||
for computing the certHash. This is also in preparation for | for computing the certHash. This is also in preparation for | |||
upcoming post-quantum algorithms. | upcoming post-quantum algorithms. | |||
* Added new general message types to request CA certificates, a root | * Added new general message types to request CA certificates, a root | |||
CA update, a certificate request template, or Certificate | CA update, a certificate request template, or Certificate | |||
Revocation List (CRL) updates. | Revocation List (CRL) updates. | |||
* Extended the use of polling to p10cr, certConf, rr, genm, and | * Extended the use of polling to p10cr, certConf, rr, genm, and | |||
error messages. | error messages. | |||
* Deleted the mandatory algorithm profile in Appendix C.2 and refer | * Deleted the mandatory algorithm profile in Appendix C.2 and | |||
instead to Section 7 of [RFC9481]. | instead referred to Section 7 of [RFC9481]. | |||
* Added security considerations Sections 8.6, 8.7, 8.9, and 8.10. | * Added Sections 8.6, 8.7, 8.9, and 8.10 to the security | |||
considerations. | ||||
1.3. Changes Made by This Document | 1.3. Changes Made by This Document | |||
This document obsoletes [RFC4210] and [RFC9480]. It includes the | This document obsoletes [RFC4210] and [RFC9480]. It includes the | |||
changes specified by Section 2 and Appendix C.2 of [RFC9480] as | changes specified by Section 2 and Appendix A.2 of [RFC9480] as | |||
described in Section 1.2. Additionally this document updates the | described in Section 1.2. Additionally, this document updates the | |||
content of [RFC4210] in the following areas: | content of [RFC4210] in the following areas: | |||
* Added Section 3.1.1.4 introducing the Key Generation Authority. | * Added Section 3.1.1.4 introducing the Key Generation Authority. | |||
* Extended Section 3.1.2 regarding use of Certificate Transparency | * Extended Section 3.1.2 regarding use of Certificate Transparency | |||
logs. | logs. | |||
* Updated Section 4.4 introducing RootCaKeyUpdateContent as | * Updated Section 4.4 introducing RootCaKeyUpdateContent as an | |||
alternative to using a repository to acquire new root CA | alternative to using a repository to acquire new root CA | |||
certificates. | certificates. | |||
* Added Section 5.1.1.3 containing description of origPKIMessage | * Added Section 5.1.1.3 containing a description of origPKIMessage | |||
content moved here from Section 5.1.3.4. | content, moved here from Section 5.1.3.4. | |||
* Added support for KEM keys for proof-of-possession to Section 4.3 | * Added support for KEM keys for proof-of-possession to Sections 4.3 | |||
and Section 5.2.8, for message protection to Section 5.1.1, | and 5.2.8, for message protection to Sections 5.1.1 and 5.1.3.4 | |||
Section 5.1.3.4, and Appendix E, and for usage with CMS | and Appendix E, and for usage with CMS EnvelopedData to | |||
EnvelopedData to Section 5.2.2. | Section 5.2.2. | |||
* Deprecated CAKeyUpdAnnContent in favor of RootCaKeyUpdateContent. | * Deprecated CAKeyUpdAnnContent in favor of RootCaKeyUpdateContent. | |||
* Incorporated the request message behavioral clarifications from | * Incorporated the request message behavioral clarifications from | |||
Appendix C of [RFC4210] to Section 5. The definition of | Appendix C of [RFC4210] to Section 5. The definition of | |||
altCertTemplate was incorporated into Section 5.2.1 and the | altCertTemplate was incorporated into Section 5.2.1, and the | |||
clarification on POPOSigningKey and on POPOPrivKey was | clarification on POPOSigningKey and on POPOPrivKey was | |||
incorporated into Section 5.2.8. | incorporated into Section 5.2.8. | |||
* Added support for CMS EnvelopedData to different proof-of- | * Added support for CMS EnvelopedData to different proof-of- | |||
possession methods for transferring encrypted private keys, | possession methods for transferring encrypted private keys, | |||
certificates, and challenges to Section 5.2.8. | certificates, and challenges to Section 5.2.8. | |||
* Added security considerations Sections 8.1, 8.5, 8.8, and 8.11. | * Added Sections 8.1, 8.5, 8.8, and 8.11 to the security | |||
considerations. | ||||
2. Terminology and Abbreviations | 2. Terminology and Abbreviations | |||
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 | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
This document relies on the terminology defined in [RFC5280]. The | This document relies on the terminology defined in [RFC5280]. The | |||
most important abbreviations are listed below: | most important abbreviations are listed below: | |||
CA: Certification Authority | CA: Certification Authority | |||
CMP: Certificate Management Protocol | CMP: Certificate Management Protocol | |||
CMS: Cryptographic Message Syntax | CMS: Cryptographic Message Syntax | |||
CRL: Certificate Revocation List | CRL: Certificate Revocation List | |||
CRMF: Certificate Request Message Format | CRMF: Certificate Request Message Format | |||
EE: End Entity | EE: End Entity | |||
KEM: Key Encapsulation Mechanism | KEM: Key Encapsulation Mechanism | |||
KGA: Key Generation Authority | KGA: Key Generation Authority | |||
LRA: Local Registration Authority | LRA: Local Registration Authority | |||
MAC: Message Authentication Code | MAC: Message Authentication Code | |||
PKI: Public Key Infrastructure | PKI: Public Key Infrastructure | |||
POP: Proof Of Possession | POP: Proof-of-Possession | |||
RA: Registration Authority | RA: Registration Authority | |||
TEE: Trusted Execution Environment | TEE: Trusted Execution Environment | |||
3. PKI Management Overview | 3. PKI Management Overview | |||
The PKI must be structured to be consistent with the types of | The PKI must be structured to be consistent with the types of | |||
individuals who must administer it. Providing such administrators | individuals who must administer it. Providing such administrators | |||
with unbounded choices not only complicates the software required, | with unbounded choices not only complicates the software required but | |||
but also increases the chances that a subtle mistake by an | also increases the chances that a subtle mistake by an administrator | |||
administrator or software developer will result in broader | or software developer will result in broader compromise. Similarly, | |||
compromise. Similarly, restricting administrators with cumbersome | restricting administrators with cumbersome mechanisms will cause them | |||
mechanisms will cause them not to use the PKI. | not to use the PKI. | |||
Management protocols are REQUIRED to support on-line interactions | Management protocols are REQUIRED to support on-line interactions | |||
between Public Key Infrastructure (PKI) components. For example, a | between Public Key Infrastructure (PKI) components. For example, a | |||
management protocol might be used between a Certification Authority | management protocol might be used between a Certification Authority | |||
(CA) and a client system with which a key pair is associated, or | (CA) and a client system with which a key pair is associated or | |||
between two CAs that issue cross-certificates for each other. | between two CAs that issue cross-certificates for each other. | |||
3.1. PKI Management Model | 3.1. PKI Management Model | |||
Before specifying particular message formats and procedures, we first | Before specifying particular message formats and procedures, we first | |||
define the entities involved in PKI management and their interactions | define the entities involved in PKI management and their interactions | |||
(in terms of the PKI management functions required). We then group | (in terms of the PKI management functions required). We then group | |||
these functions in order to accommodate different identifiable types | these functions in order to accommodate different identifiable types | |||
of end entities. | of end entities. | |||
skipping to change at page 10, line 46 ¶ | skipping to change at line 438 ¶ | |||
3.1.1.1. Subjects and End Entities | 3.1.1.1. Subjects and End Entities | |||
The term "subject" is used here to refer to the entity to whom the | The term "subject" is used here to refer to the entity to whom the | |||
certificate is issued, typically named in the subject or | certificate is issued, typically named in the subject or | |||
subjectAltName field of a certificate. When we wish to distinguish | subjectAltName field of a certificate. When we wish to distinguish | |||
the tools and/or software used by the subject (e.g., a local | the tools and/or software used by the subject (e.g., a local | |||
certificate management module), we will use the term "subject | certificate management module), we will use the term "subject | |||
equipment". In general, the term "end entity" (EE), rather than | equipment". In general, the term "end entity" (EE), rather than | |||
"subject", is preferred in order to avoid confusion with the field | "subject", is preferred in order to avoid confusion with the field | |||
name. It is important to note that the end entities here will | name. It is important to note that the end entities here will | |||
include not only human users of applications, but also applications | include not only human users of applications but also applications | |||
themselves (e.g., for IKE/IPsec) or devices (e.g., routers or | themselves (e.g., for Internet Key Exchange Protocol (IKE) / IPsec) | |||
industrial control systems). This factor influences the protocols | or devices (e.g., routers or industrial control systems). This | |||
that the PKI management operations use; for example, application | factor influences the protocols that the PKI management operations | |||
software is far more likely to know exactly which certificate | use; for example, application software is far more likely to know | |||
extensions are required than are human users. PKI management | exactly which certificate extensions are required than are human | |||
entities are also end entities in the sense that they are sometimes | users. PKI management entities are also end entities in the sense | |||
named in the subject or subjectAltName field of a certificate or | that they are sometimes named in the subject or subjectAltName field | |||
cross-certificate. Where appropriate, the term "end entity" will be | of a certificate or cross-certificate. Where appropriate, the term | |||
used to refer to end entities who are not PKI management entities. | "end entity" will be used to refer to end entities who are not PKI | |||
management entities. | ||||
All end entities require secure local access to some information -- | All end entities require secure local access to some information -- | |||
at a minimum, their own name and private key, the name of a CA that | at a minimum, their own name and private key, the name of a CA that | |||
is directly trusted by this entity, and that CA's public key (or a | is directly trusted by this entity, and that CA's public key (or a | |||
fingerprint of the public key where a self-certified version is | fingerprint of the public key where a self-certified version is | |||
available elsewhere). Implementations MAY use secure local storage | available elsewhere). Implementations MAY use secure local storage | |||
for more than this minimum (e.g., the end entity's own certificates | for more than this minimum (e.g., the end entity's own certificates | |||
or application-specific information). The form of storage will also | or application-specific information). The form of storage will also | |||
vary -- from files to tamper-resistant cryptographic tokens. The | vary -- from files to tamper-resistant cryptographic tokens. The | |||
information stored in such local, trusted storage is referred to here | information stored in such local, trusted storage is referred to here | |||
as the end entity's Trusted Execution Environment (TEE) also known as | as the end entity's Trusted Execution Environment (TEE), also known | |||
Personal Security Environment (PSE). | as Personal Security Environment (PSE). | |||
Though TEE formats are beyond the scope of this document (they are | Though TEE formats are beyond the scope of this document (they are | |||
very dependent on equipment, et cetera), a generic interchange format | very dependent on equipment, et cetera), a generic interchange format | |||
for TEEs is defined here: a certification response message, see | for TEEs is defined here: a certification response message (see | |||
Section 5.3.4, MAY be used. | Section 5.3.4) MAY be used. | |||
3.1.1.2. Certification Authority | 3.1.1.2. Certification Authority | |||
The certification authority (CA) may or may not actually be a real | The certification authority (CA) may or may not actually be a real | |||
"third party" from the end entity's point of view. Quite often, the | "third party" from the end entity's point of view. Quite often, the | |||
CA will actually belong to the same organization as the end entities | CA will actually belong to the same organization as the end entities | |||
it supports. | it supports. | |||
Again, we use the term "CA" to refer to the entity named in the | Again, we use the term "CA" to refer to the entity named in the | |||
issuer field of a certificate. When it is necessary to distinguish | issuer field of a certificate. When it is necessary to distinguish | |||
skipping to change at page 11, line 48 ¶ | skipping to change at line 490 ¶ | |||
an "on-line" component, with the CA private key only available to the | an "on-line" component, with the CA private key only available to the | |||
"off-line" component. This is, however, a matter for implementers | "off-line" component. This is, however, a matter for implementers | |||
(though it is also relevant as a policy issue). | (though it is also relevant as a policy issue). | |||
We use the term "root CA" to indicate a CA that is directly trusted | We use the term "root CA" to indicate a CA that is directly trusted | |||
by an end entity; that is, securely acquiring the value of a root CA | by an end entity; that is, securely acquiring the value of a root CA | |||
public key requires some out-of-band step(s). This term is not meant | public key requires some out-of-band step(s). This term is not meant | |||
to imply that a root CA is necessarily at the top of any hierarchy, | to imply that a root CA is necessarily at the top of any hierarchy, | |||
simply that the CA in question is trusted directly. The "root CA" | simply that the CA in question is trusted directly. The "root CA" | |||
may provide its trust anchor information with or without using a | may provide its trust anchor information with or without using a | |||
certificate. In some circumstances such a certificate may be self- | certificate. In some circumstances, such a certificate may be self- | |||
signed, but in other circumstances it may be cross signed, signed by | signed, but in other circumstances, it may be cross-signed, signed by | |||
a peer, signed by a superior CA, or unsigned. | a peer, signed by a superior CA, or unsigned. | |||
Note that other documents like [X509.2019] and [RFC5280] use the term | Note that other documents like [X509.2019] and [RFC5280] use the term | |||
"trusted CA" or "trust anchor" instead of "root CA". This document | "trusted CA" or "trust anchor" instead of "root CA". This document | |||
continues using "root CA" based on the above definition because it is | continues using "root CA" based on the above definition because it is | |||
also present in the ASN.1 syntax that cannot be changed easily. | also present in the ASN.1 syntax that cannot be changed easily. | |||
A "subordinate CA" is one that is not a root CA for the end entity in | A "subordinate CA" is one that is not a root CA for the end entity in | |||
question. Often, a subordinate CA will not be a root CA for any | question. Often, a subordinate CA will not be a root CA for any | |||
entity, but this is not mandatory. | entity, but this is not mandatory. | |||
3.1.1.3. Registration Authority | 3.1.1.3. Registration Authority | |||
In addition to end-entities and CAs, many environments call for the | In addition to end entities and CAs, many environments call for the | |||
existence of a Registration Authority (RA) separate from the | existence of a Registration Authority (RA) separate from the | |||
Certification Authority. The functions that the registration | Certification Authority. The functions that the registration | |||
authority may carry out will vary from case to case but MAY include | authority may carry out will vary from case to case but MAY include | |||
identity checking, token distribution, checking certificate requests | identity checking, token distribution, checking certificate requests | |||
and authentication of their origin, revocation reporting, name | and authentication of their origin, revocation reporting, name | |||
assignment, archival of key pairs, et cetera. | assignment, archival of key pairs, et cetera. | |||
This document views the RA as an OPTIONAL component: when it is not | This document views the RA as an OPTIONAL component: When it is not | |||
present, the CA is assumed to be able to carry out the RA's functions | present, the CA is assumed to be able to carry out the RA's functions | |||
so that the PKI management protocols are the same from the end- | so that the PKI management protocols are the same from the end | |||
entity's point of view. | entity's point of view. | |||
Again, we distinguish, where necessary, between the RA and the tools | Again, we distinguish, where necessary, between the RA and the tools | |||
used (the "RA equipment"). | used (the "RA equipment"). | |||
Note that an RA is itself an end entity. We further assume that all | Note that an RA is itself an end entity. We further assume that all | |||
RAs are in fact certified end entities and that RAs have private keys | RAs are in fact certified end entities and that RAs have private keys | |||
that are usable for signing. How a particular CA equipment | that are usable for signing. How a particular CA equipment | |||
identifies some end entities as RAs is an implementation issue (i.e., | identifies some end entities as RAs is an implementation issue (i.e., | |||
this document specifies no special RA certification operation). We | this document specifies no special RA certification operation). We | |||
do not mandate that the RA is certified by the CA with which it is | do not mandate that the RA is certified by the CA with which it is | |||
interacting at the moment (so one RA may work with more than one CA | interacting at the moment (so one RA may work with more than one CA | |||
whilst only being certified once). | whilst only being certified once). | |||
In some circumstances, end entities will communicate directly with a | In some circumstances, end entities will communicate directly with a | |||
CA even where an RA is present. For example, for initial | CA even where an RA is present. For example, for initial | |||
registration and/or certification, the end entity may use its RA, but | registration and/or certification, the end entity may use its RA but | |||
communicate directly with the CA in order to refresh its certificate. | communicate directly with the CA in order to refresh its certificate. | |||
3.1.1.4. Key Generation Authority | 3.1.1.4. Key Generation Authority | |||
A Key Generation Authority (KGA) is a PKI management entity | A Key Generation Authority (KGA) is a PKI management entity | |||
generating key pairs on behalf of an end entity. As the KGA | generating key pairs on behalf of an end entity. As the KGA | |||
generates the key pair it knows the public and the private part. | generates the key pair, it knows the public and the private part. | |||
This document views the KGA as an OPTIONAL component. When it is not | This document views the KGA as an OPTIONAL component. When it is not | |||
present and central key generation is needed, the CA is assumed to be | present and central key generation is needed, the CA is assumed to be | |||
able to carry out the KGA's functions so that the PKI management | able to carry out the KGA's functions so that the PKI management | |||
protocol messages are the same from the end-entity's point of view. | protocol messages are the same from the end entity's point of view. | |||
If certain tasks of a CA are delegated to other components, this | If certain tasks of a CA are delegated to other components, this | |||
delegation needs authorization, which can be indicated by extended | delegation needs authorization, which can be indicated by extended | |||
key usages (see Section 4.5). | key usages (see Section 4.5). | |||
Note: When doing central generation of key pairs, implementers should | Note: When doing central generation of key pairs, implementers should | |||
consider the implications of server-side retention on the overall | consider the implications of server-side retention on the overall | |||
security of the system; in some case retention is good, for example | security of the system; in some cases, retention is good, for | |||
for escrow reasons, but in other cases the server should clear its | example, for escrow reasons, but in other cases, the server should | |||
copy after delivery to the end entity. | clear its copy after delivery to the end entity. | |||
Note: If the CA delegates key generation to a KGA, the KGA can be | Note: If the CA delegates key generation to a KGA, the KGA can be | |||
collocated with the RA. | collocated with the RA. | |||
3.1.2. PKI Management Requirements | 3.1.2. PKI Management Requirements | |||
The protocols given here meet the following requirements on PKI | The protocols given here meet the following requirements on PKI | |||
management | management | |||
1. PKI management must conform to the ISO/IEC 9594-8/ITU-T X.509 | 1. PKI management must conform to the ISO/IEC 9594-8/ITU-T X.509 | |||
standards. | standards. | |||
2. It must be possible to regularly update any key pair without | 2. It must be possible to regularly update any key pair without | |||
affecting any other key pair. | affecting any other key pair. | |||
3. The use of confidentiality in PKI management protocols must be | 3. The use of confidentiality in PKI management protocols must be | |||
kept to a minimum in order to ease acceptance in environments | kept to a minimum in order to ease acceptance in environments | |||
where strong confidentiality might cause regulatory problems. | where strong confidentiality might cause regulatory problems. | |||
4. PKI management protocols must allow the use of different | 4. PKI management protocols must allow the use of different | |||
industry-standard cryptographic algorithms, see CMP Algorithms | industry-standard cryptographic algorithms (see CMP Algorithms | |||
[RFC9481]. This means that any given CA, RA, or end entity may, | [RFC9481]). This means that any given CA, RA, or end entity | |||
in principle, use whichever algorithms suit it for its own key | may, in principle, use whichever algorithms suit it for its own | |||
pair(s). | key pair(s). | |||
5. PKI management protocols must not preclude the generation of key | 5. PKI management protocols must not preclude the generation of key | |||
pairs by the end entity concerned, by a KGA or by a CA. Key | pairs by the end entity concerned, by a KGA, or by a CA. Key | |||
generation may also occur elsewhere, but for the purposes of PKI | generation may also occur elsewhere, but for the purposes of PKI | |||
management we can regard key generation as occurring wherever | management, we can regard key generation as occurring wherever | |||
the key is first present at an end entity, KGA, or CA. | the key is first present at an end entity, KGA, or CA. | |||
6. PKI management protocols must support the publication of | 6. PKI management protocols must support the publication of | |||
certificates by the end entity concerned, by an RA, or by a CA. | certificates by the end entity concerned, by an RA, or by a CA. | |||
Different implementations and different environments may choose | Different implementations and different environments may choose | |||
any of the above approaches. | any of the above approaches. | |||
7. PKI management protocols must support the production of | 7. PKI management protocols must support the production of | |||
Certificate Revocation Lists (CRLs) by allowing certified end | Certificate Revocation Lists (CRLs) by allowing certified end | |||
entities to make requests for the revocation of certificates. | entities to make requests for the revocation of certificates. | |||
skipping to change at page 14, line 22 ¶ | skipping to change at line 607 ¶ | |||
"transport" mechanisms, specifically including mail, Hypertext | "transport" mechanisms, specifically including mail, Hypertext | |||
Transfer Protocol (HTTP), Message Queuing Telemetry Transport | Transfer Protocol (HTTP), Message Queuing Telemetry Transport | |||
(MQTT), Constrained Application Protocol (CoAP), and off-line | (MQTT), Constrained Application Protocol (CoAP), and off-line | |||
file-based. | file-based. | |||
9. Final authority for certification creation rests with the CA. | 9. Final authority for certification creation rests with the CA. | |||
No RA or end entity equipment can assume that any certificate | No RA or end entity equipment can assume that any certificate | |||
issued by a CA will contain what was requested; a CA may alter | issued by a CA will contain what was requested; a CA may alter | |||
certificate field values or may add, delete, or alter extensions | certificate field values or may add, delete, or alter extensions | |||
according to its operating policy. In other words, all PKI | according to its operating policy. In other words, all PKI | |||
entities (end-entities, RAs, KGAs, and CAs) must be capable of | entities (end entities, RAs, KGAs, and CAs) must be capable of | |||
handling responses to requests for certificates in which the | handling responses to requests for certificates in which the | |||
actual certificate issued is different from that requested (for | actual certificate issued is different from that requested (for | |||
example, a CA may shorten the validity period requested). Note | example, a CA may shorten the validity period requested). Note | |||
that policy may dictate that the CA must not publish or | that policy may dictate that the CA must not publish or | |||
otherwise distribute the certificate until the requesting entity | otherwise distribute the certificate until the requesting entity | |||
has reviewed and accepted the newly-created certificate or the | has reviewed and accepted the newly created certificate or the | |||
POP is completed. In case of publication of the certificate | POP is completed. In case of publication of the certificate | |||
(when using indirect POP, see Section 8.11) or a precertificate | (when using indirect POP, see Section 8.11) or a precertificate | |||
in a Certificate Transparency log [RFC9162], the certificate | in a Certificate Transparency log [RFC9162], the certificate | |||
must be revoked if it was not accepted by the EE or the POP | must be revoked if it was not accepted by the EE or the POP | |||
could not be completed. | could not be completed. | |||
10. A graceful, scheduled change-over from one non-compromised CA | 10. A graceful, scheduled changeover from one non-compromised CA key | |||
key pair to the next (CA key update) must be supported (note | pair to the next (CA key update) must be supported (note that if | |||
that if the CA key is compromised, re-initialization must be | the CA key is compromised, re-initialization must be performed | |||
performed for all entities in the domain of that CA). An end | for all entities in the domain of that CA). An end entity whose | |||
entity whose TEE contains the new CA public key (following a CA | TEE contains the new CA public key (following a CA key update) | |||
key update) may also need to be able to verify certificates | may also need to be able to verify certificates verifiable using | |||
verifiable using the old public key. End entities who directly | the old public key. End entities who directly trust the old CA | |||
trust the old CA key pair may also need to be able to verify | key pair may also need to be able to verify certificates signed | |||
certificates signed using the new CA private key (required for | using the new CA private key (required for situations where the | |||
situations where the old CA public key is "hardwired" into the | old CA public key is "hardwired" into the end entity's | |||
end entity's cryptographic equipment). | cryptographic equipment). | |||
11. The functions of an RA may, in some implementations or | 11. The functions of an RA may, in some implementations or | |||
environments, be carried out by the CA itself. The protocols | environments, be carried out by the CA itself. The protocols | |||
must be designed so that end entities will use the same protocol | must be designed so that end entities will use the same protocol | |||
regardless of whether the communication is with an RA or CA. | regardless of whether the communication is with an RA or CA. | |||
Naturally, the end entity must use the correct RA or CA public | Naturally, the end entity must use the correct RA or CA public | |||
key to verify the protection of the communication. | key to verify the protection of the communication. | |||
12. Where an end entity requests a certificate containing a given | 12. Where an end entity requests a certificate containing a given | |||
public key value, the end entity must be ready to demonstrate | public key value, the end entity must be ready to demonstrate | |||
skipping to change at page 16, line 46 ¶ | skipping to change at line 696 ¶ | |||
+------+ | +------+ | |||
| CA-2 | | | CA-2 | | |||
+------+ | +------+ | |||
Figure 1: PKI Entities | Figure 1: PKI Entities | |||
At a high level, the set of operations for which management messages | At a high level, the set of operations for which management messages | |||
are defined can be grouped as follows. | are defined can be grouped as follows. | |||
1. CA establishment: When establishing a new CA, certain steps are | 1. CA establishment: When establishing a new CA, certain steps are | |||
required (e.g., production of initial CRLs, export of CA public | required (e.g., production of initial CRLs and export of CA | |||
key). | public key). | |||
2. End entity initialization: This includes importing a root CA | 2. End entity initialization: This includes importing a root CA | |||
public key and requesting information about the options supported | public key and requesting information about the options supported | |||
by a PKI management entity. | by a PKI management entity. | |||
3. Certification: Various operations result in the creation of new | 3. Certification: Various operations result in the creation of new | |||
certificates: | certificates: | |||
1. initial registration/certification: This is the process | a. initial registration/certification: This is the process | |||
whereby an end entity first makes itself known to a CA or RA, | whereby an end entity first makes itself known to a CA or RA, | |||
prior to the CA issuing a certificate or certificates for | prior to the CA issuing a certificate or certificates for | |||
that end entity. The end result of this process (when it is | that end entity. The end result of this process (when it is | |||
successful) is that a CA issues a certificate for an end | successful) is that a CA issues a certificate for an end | |||
entity's public key, and returns that certificate to the end | entity's public key and returns that certificate to the end | |||
entity and/or posts that certificate in a repository. This | entity and/or posts that certificate in a repository. This | |||
process may, and typically will, involve multiple "steps", | process may, and typically will, involve multiple "steps", | |||
possibly including an initialization of the end entity's | possibly including an initialization of the end entity's | |||
equipment. For example, the end entity's equipment must be | equipment. For example, the end entity's equipment must be | |||
securely initialized with the public key of a CA, e.g., using | securely initialized with the public key of a CA, e.g., using | |||
zero-touch methods like Bootstrapping Remote Secure Key | zero-touch methods like Bootstrapping Remote Secure Key | |||
Infrastructure (BRSKI) [RFC8995] or Secure Zero Touch | Infrastructure (BRSKI) [RFC8995] or Secure Zero Touch | |||
Provisioning (SZTP) [RFC8572], to be used in validating | Provisioning (SZTP) [RFC8572], to be used in validating | |||
certificate paths. Furthermore, an end entity typically | certificate paths. Furthermore, an end entity typically | |||
needs to be initialized with its own key pair(s). | needs to be initialized with its own key pair(s). | |||
2. key pair update: Every key pair needs to be updated regularly | b. key pair update: Every key pair needs to be updated regularly | |||
(i.e., replaced with a new key pair), and a new certificate | (i.e., replaced with a new key pair), and a new certificate | |||
needs to be issued. | needs to be issued. | |||
3. certificate update: As certificates expire, they may be | c. certificate update: As certificates expire, they may be | |||
"refreshed" if nothing relevant in the environment has | "refreshed" if nothing relevant in the environment has | |||
changed. | changed. | |||
4. CA key pair update: As with end entities, CA key pairs need | d. CA key pair update: As with end entities, CA key pairs need | |||
to be updated regularly; however, different mechanisms are | to be updated regularly; however, different mechanisms are | |||
required. | required. | |||
5. cross-certification request: One CA requests issuance of a | e. cross-certification request: One CA requests issuance of a | |||
cross-certificate from another CA. For the purposes of this | cross-certificate from another CA. For the purposes of this | |||
standard, the following terms are defined. A "cross- | standard, the following terms are defined. A "cross- | |||
certificate" is a certificate in which the subject CA and the | certificate" is a certificate in which the subject CA and the | |||
issuer CA are distinct and SubjectPublicKeyInfo contains a | issuer CA are distinct and SubjectPublicKeyInfo contains a | |||
verification key (i.e., the certificate has been issued for | verification key (i.e., the certificate has been issued for | |||
the subject CA's signing key pair). When it is necessary to | the subject CA's signing key pair). When it is necessary to | |||
distinguish more finely, the following terms may be used: a | distinguish more finely, the following terms may be used: A | |||
cross-certificate is called an "inter-domain cross- | cross-certificate is called an "inter-domain cross- | |||
certificate" if the subject and issuer CAs belong to | certificate" if the subject and issuer CAs belong to | |||
different administrative domains; it is called an "intra- | different administrative domains; it is called an "intra- | |||
domain cross-certificate" otherwise. | domain cross-certificate" otherwise. | |||
Note 1: The above definition of "cross-certificate" aligns | Note 1: The above definition of "cross-certificate" aligns | |||
with the defined term "CA-certificate" in X.509. Note that | with the defined term "CA-certificate" in X.509. | |||
this term is not to be confused with the X.500 "cACertificate" | Note that this term is not to be confused with the | |||
attribute type, which is unrelated. | X.500 "cACertificate" attribute type, which is | |||
unrelated. | ||||
Note 2: In many environments, the term "cross-certificate", | Note 2: In many environments, the term "cross-certificate", | |||
unless further qualified, will be understood to be synonymous | unless further qualified, will be understood to be | |||
with "inter-domain cross-certificate" as defined above. | synonymous with "inter-domain cross-certificate" as | |||
defined above. | ||||
Note 3: Issuance of cross-certificates may be, but is not | Note 3: Issuance of cross-certificates may be, but is not | |||
necessarily, mutual; that is, two CAs may issue cross- | necessarily, mutual; that is, two CAs may issue | |||
certificates for each other. | cross-certificates for each other. | |||
1. [RFC-Editor: Please fix the enumeration and continue with | f. cross-certificate update: Similar to a normal certificate | |||
'6'.] cross-certificate update: Similar to a normal | update but involving a cross-certificate. | |||
certificate update, but involving a cross-certificate. | ||||
4. Certificate/CRL discovery operations: Some PKI management | 4. Certificate/CRL discovery operations: Some PKI management | |||
operations result in the publication of certificates or CRLs: | operations result in the publication of certificates or CRLs: | |||
1. certificate publication: Having gone to the trouble of | a. certificate publication: Having gone to the trouble of | |||
producing a certificate, some means for publishing may be | producing a certificate, some means for publishing may be | |||
needed. The "means" defined in PKIX MAY involve the messages | needed. The "means" defined in PKIX MAY involve the messages | |||
specified in Sections 5.3.13 to 5.3.16, or MAY involve other | specified in Sections 5.3.13 to 5.3.16 or MAY involve other | |||
methods (LDAP, for example) as described in [RFC4511] or | methods (for example, Lightweight Directory Access Protocol | |||
[RFC2585] (the "Operational Protocols" documents of the PKIX | (LDAP)) as described in [RFC4511] or [RFC2585] (the | |||
series of specifications). | "Operational Protocols" documents of the PKIX series of | |||
specifications). | ||||
2. CRL publication: As for certificate publication. | b. CRL publication: As for certificate publication. | |||
5. Recovery operations: Some PKI management operations are used when | 5. Recovery operations: Some PKI management operations are used when | |||
an end entity has "lost" its TEE: | an end entity has "lost" its TEE: | |||
1. key pair recovery: As an option, user client key materials | a. key pair recovery: As an option, user client key materials | |||
(e.g., a user's private key used for decryption purposes) MAY | (e.g., a user's private key used for decryption purposes) MAY | |||
be backed up by a CA, an RA, or a key backup system | be backed up by a CA, an RA, or a key backup system | |||
associated with a CA or RA. If an entity needs to recover | associated with a CA or RA. If an entity needs to recover | |||
these backed up key materials (e.g., as a result of a | these backed up key materials (e.g., as a result of a | |||
forgotten password or a lost key chain file), a protocol | forgotten password or a lost key chain file), a protocol | |||
exchange may be needed to support such recovery. | exchange may be needed to support such recovery. | |||
6. Revocation operations: Some PKI management operations result in | 6. Revocation operations: Some PKI management operations result in | |||
the creation of new CRL entries and/or new CRLs: | the creation of new CRL entries and/or new CRLs: | |||
1. revocation request: An authorized person advises a CA of an | a. revocation request: An authorized person advises a CA of an | |||
abnormal situation requiring certificate revocation. | abnormal situation requiring certificate revocation. | |||
7. TEE operations: Whilst the definition of TEE operations (e.g., | 7. TEE operations: Whilst the definition of TEE operations (e.g., | |||
moving a TEE, changing a PIN, etc.) are beyond the scope of this | moving a TEE, changing a PIN, etc.) are beyond the scope of this | |||
specification, we do define a PKIMessage (CertRepMessage) that | specification, we do define a PKIMessage (CertRepMessage) that | |||
can form the basis of such operations. | can form the basis of such operations. | |||
Note that on-line protocols are not the only way of implementing the | Note that on-line protocols are not the only way of implementing the | |||
above operations. For all operations, there are off-line methods of | above operations. For all operations, there are off-line methods of | |||
achieving the same result, and this specification does not mandate | achieving the same result, and this specification does not mandate | |||
use of on-line protocols. For example, when hardware tokens are | use of on-line protocols. For example, when hardware tokens are | |||
used, many of the operations MAY be achieved as part of the physical | used, many of the operations MAY be achieved as part of the physical | |||
token delivery. | token delivery. | |||
Later sections define a set of standard messages supporting the above | Later sections define a set of standard messages supporting the above | |||
operations. Transfer protocols for conveying these exchanges in | operations. Transfer protocols for conveying these exchanges in | |||
various environments (e.g., off-line: file-based, on-line: mail, HTTP | various environments (e.g., off-line: file-based; on-line: mail, HTTP | |||
[I-D.ietf-lamps-rfc6712bis], MQTT, and CoAP [RFC9482]) are beyond the | [RFC9811], MQTT, and CoAP [RFC9482]) are beyond the scope of this | |||
scope of this document and must be specified separately. Appropriate | document and must be specified separately. Appropriate transfer | |||
transfer protocols MUST be capable of delivering the CMP messages | protocols MUST be capable of delivering the CMP messages reliably. | |||
reliably. | ||||
CMP provides inbuilt integrity protection and authentication. The | CMP provides inbuilt integrity protection and authentication. The | |||
information communicated unencrypted in CMP messages does not contain | information communicated unencrypted in CMP messages does not contain | |||
sensitive information endangering the security of the PKI when | sensitive information endangering the security of the PKI when | |||
intercepted. However, it might be possible for an eavesdropper to | intercepted. However, it might be possible for an eavesdropper to | |||
utilize the available information to gather confidential technical or | utilize the available information to gather confidential technical or | |||
business critical information. Therefore, users should consider | business-critical information. Therefore, users should consider | |||
protection of confidentiality on lower levels of the protocol stack, | protection of confidentiality on lower levels of the protocol stack, | |||
e.g., by using TLS [RFC8446], DTLS [RFC9147], or IPsec | e.g., by using TLS [RFC8446], DTLS [RFC9147], or IPsec | |||
[RFC7296][RFC4303]. | [RFC7296][RFC4303]. | |||
4. Assumptions and Restrictions | 4. Assumptions and Restrictions | |||
4.1. End Entity Initialization | 4.1. End Entity Initialization | |||
The first step for an end entity in dealing with PKI management | The first step for an end entity in dealing with PKI management | |||
entities is to request information about the PKI functions supported | entities is to request information about the PKI functions supported | |||
and to securely acquire a copy of the relevant root CA public key(s). | and to securely acquire a copy of the relevant root CA public key(s). | |||
4.2. Initial Registration/Certification | 4.2. Initial Registration/Certification | |||
There are many schemes that can be used to achieve initial | There are many schemes that can be used to achieve initial | |||
registration and certification of end entities. No one method is | registration and certification of end entities. No one method is | |||
suitable for all situations due to the range of policies that a CA | suitable for all situations due to the range of policies that a CA | |||
may implement and the variation in the types of end entity which can | may implement and the variation in the types of end entity that can | |||
occur. | occur. | |||
However, we can classify the initial registration/certification | However, we can classify the initial registration/certification | |||
schemes that are supported by this specification. Note that the word | schemes that are supported by this specification. Note that the word | |||
"initial", above, is crucial: we are dealing with the situation where | "initial", above, is crucial: We are dealing with the situation where | |||
the end entity in question has had no previous contact with the PKI, | the end entity in question has had no previous contact with the PKI, | |||
except having received the root CA certificate of that PKI by some | except having received the root CA certificate of that PKI by some | |||
zero-touch method like BRSKI [RFC8995] and [I-D.ietf-anima-brski-ae] | zero-touch method like BRSKI [RFC8995] [RFC9733] or SZTP [RFC8572]. | |||
or SZTP [RFC8572]. In case the end entity already possesses | In case the end entity already possesses certified keys, then some | |||
certified keys, then some simplifications/alternatives are possible. | simplifications/alternatives are possible. | |||
Having classified the schemes that are supported by this | Having classified the schemes that are supported by this | |||
specification we can then specify some as mandatory and some as | specification, we can then specify some as mandatory and some as | |||
optional. The goal is that the mandatory schemes cover a sufficient | optional. The goal is that the mandatory schemes cover a sufficient | |||
number of the cases that will arise in real use, whilst the optional | number of the cases that will arise in real use, whilst the optional | |||
schemes are available for special cases that arise less frequently. | schemes are available for special cases that arise less frequently. | |||
In this way, we achieve a balance between flexibility and ease of | In this way, we achieve a balance between flexibility and ease of | |||
implementation. | implementation. | |||
Further classification of mandatory and optional schemes addressing | Further classification of mandatory and optional schemes addressing | |||
different environments is available, e.g., in Appendix C and | different environments is available, e.g., in Appendices C and D of | |||
Appendix D of this specification on managing human user certificates | this specification on managing human user certificates as well as in | |||
as well as in the Lightweight CMP Profile [RFC9483] on fully | the Lightweight CMP Profile [RFC9483] on fully automating certificate | |||
automating certificate management in a machine-to-machine and IoT | management in a machine-to-machine and Internet of Things (IoT) | |||
environment. Also industry standards like [ETSI-3GPP.33.310] for | environment. Also, industry standards like [ETSI-3GPP.33.310] for | |||
mobile networks and [UNISIG.Subset-137] for Rail Automation adopted | mobile networks and [UNISIG.Subset-137] for Rail Automation adopted | |||
CMP and have specified a set of mandatory schemes for their use case. | CMP and have specified a set of mandatory schemes for their use case. | |||
We will now describe the classification of initial registration/ | We will now describe the classification of initial registration/ | |||
certification schemes. | certification schemes. | |||
4.2.1. Criteria Used | 4.2.1. Criteria Used | |||
4.2.1.1. Initiation of Registration/Certification | 4.2.1.1. Initiation of Registration/Certification | |||
In terms of the PKI messages that are produced, we can regard the | In terms of the PKI messages that are produced, we can regard the | |||
initiation of the initial registration/certification exchanges as | initiation of the initial registration/certification exchanges as | |||
occurring wherever the first PKI message relating to the end entity | occurring wherever the first PKI message relating to the end entity | |||
is produced. Note that the real-world initiation of the | is produced. Note that the real-world initiation of the | |||
registration/certification procedure may occur elsewhere (e.g., a | registration/certification procedure may occur elsewhere (e.g., a | |||
personnel department may telephone an RA operator or using zero touch | personnel department may telephone an RA operator or use zero touch | |||
methods like BRSKI [RFC8995] or SZTP [RFC8572]). | methods like BRSKI [RFC8995] or SZTP [RFC8572]). | |||
The possible locations are at the end entity, an RA, or a CA. | The possible locations are at the end entity, an RA, or a CA. | |||
4.2.1.2. End Entity Message Origin Authentication | 4.2.1.2. End Entity Message Origin Authentication | |||
The on-line messages produced by the end entity that requires a | The on-line messages produced by the end entity that requires a | |||
certificate may be authenticated or not. The requirement here is to | certificate may be authenticated or not. The requirement here is to | |||
authenticate the origin of any messages from the end entity to the | authenticate the origin of any messages from the end entity to the | |||
PKI (CA/RA). | PKI (CA/RA). | |||
skipping to change at page 21, line 22 ¶ | skipping to change at line 902 ¶ | |||
In this specification, such authentication is achieved by two | In this specification, such authentication is achieved by two | |||
different means: | different means: | |||
* symmetric: The PKI (CA/RA) issuing the end entity with a secret | * symmetric: The PKI (CA/RA) issuing the end entity with a secret | |||
value (initial authentication key) and reference value (used to | value (initial authentication key) and reference value (used to | |||
identify the secret value) via some out-of-band means. The | identify the secret value) via some out-of-band means. The | |||
initial authentication key can then be used to protect relevant | initial authentication key can then be used to protect relevant | |||
PKI messages. | PKI messages. | |||
* asymmetric: Using a private key and certificate issued by another | * asymmetric: Using a private key and certificate issued by another | |||
PKI trusted for initial authentication, e.g., an IDevID | PKI trusted for initial authentication, e.g., an Initial Device | |||
IEEE 802.1AR [IEEE.802.1AR-2018]. The trust establishment in this | Identifier (IDevID) IEEE 802.1AR [IEEE.802.1AR-2018]. The trust | |||
external PKI is out of scope of this document. | establishment in this external PKI is out of scope of this | |||
document. | ||||
Thus, we can classify the initial registration/certification scheme | Thus, we can classify the initial registration/certification scheme | |||
according to whether or not the on-line 'end entity -> PKI management | according to whether or not the on-line 'end entity -> PKI management | |||
entity' messages are authenticated or not. | entity' messages are authenticated or not. | |||
Note 1: We do not discuss the authentication of the 'PKI management | Note 1: We do not discuss the authentication of the 'PKI management | |||
entity -> end entity' messages here, as this is always REQUIRED. In | entity -> end entity' messages here, as this is always | |||
any case, it can be achieved simply once the root-CA public key has | REQUIRED. In any case, it can be achieved simply once the | |||
been installed at the end entity's equipment or it can be based on | root-CA public key has been installed at the end entity's | |||
the initial authentication key. | equipment or it can be based on the initial authentication | |||
key. | ||||
Note 2: An initial registration/certification procedure can be secure | Note 2: An initial registration/certification procedure can be | |||
where the messages from the end entity are authenticated via some | secure where the messages from the end entity are | |||
out-of-band means (e.g., a subsequent visit). | authenticated via some out-of-band means (e.g., a subsequent | |||
visit). | ||||
4.2.1.3. Location of Key Generation | 4.2.1.3. Location of Key Generation | |||
In this specification, "key generation" is regarded as occurring | In this specification, "key generation" is regarded as occurring | |||
wherever either the public or private component of a key pair first | wherever either the public or private component of a key pair first | |||
occurs in a PKIMessage. Note that this does not preclude a | occurs in a PKIMessage. Note that this does not preclude a | |||
centralized key generation service by a KGA; the actual key pair MAY | centralized key generation service by a KGA; the actual key pair MAY | |||
have been generated elsewhere and transported to the end entity, RA, | have been generated elsewhere and transported to the end entity, RA, | |||
or CA using a (proprietary or standardized) key generation request/ | or CA using a (proprietary or standardized) key generation request/ | |||
response protocol (outside the scope of this specification). | response protocol (outside the scope of this specification). | |||
skipping to change at page 22, line 22 ¶ | skipping to change at line 953 ¶ | |||
authentication key or other means). | authentication key or other means). | |||
This gives two further possibilities: confirmed or not. | This gives two further possibilities: confirmed or not. | |||
4.2.2. Initial Registration/Certification Schemes | 4.2.2. Initial Registration/Certification Schemes | |||
The criteria above allow for a large number of initial registration/ | The criteria above allow for a large number of initial registration/ | |||
certification schemes. Examples of possible initial registration/ | certification schemes. Examples of possible initial registration/ | |||
certification schemes can be found in the following subsections. An | certification schemes can be found in the following subsections. An | |||
entity may support other schemes specified in profiles of PKIX-CMP, | entity may support other schemes specified in profiles of PKIX-CMP, | |||
such as Appendix C and Appendix D or [RFC9483]. | such as Appendices C and D or [RFC9483]. | |||
4.2.2.1. Centralized Scheme | 4.2.2.1. Centralized Scheme | |||
In terms of the classification above, this scheme is, in some ways, | In terms of the classification above, this scheme is, in some ways, | |||
the simplest possible, where: | the simplest possible, where: | |||
* initiation occurs at the certifying CA; | * initiation occurs at the certifying CA; | |||
* no on-line message authentication is required; | * no on-line message authentication is required; | |||
* "key generation" occurs at the certifying CA (see | * "key generation" occurs at the certifying CA (see | |||
Section 4.2.1.3); | Section 4.2.1.3); and | |||
* no confirmation message is required. | * no confirmation message is required. | |||
In terms of message flow, this scheme means that the only message | In terms of message flow, this scheme means that the only message | |||
required is sent from the CA to the end entity. The message must | required is sent from the CA to the end entity. The message must | |||
contain the entire TEE for the end entity. Some out-of-band means | contain the entire TEE for the end entity. Some out-of-band means | |||
must be provided to allow the end entity to authenticate the message | must be provided to allow the end entity to authenticate the message | |||
received and to decrypt any encrypted values. | received and to decrypt any encrypted values. | |||
4.2.2.2. Basic Authenticated Scheme | 4.2.2.2. Basic Authenticated Scheme | |||
In terms of the classification above, this scheme is where: | In terms of the classification above, this scheme is where: | |||
* initiation occurs at the end entity; | * initiation occurs at the end entity; | |||
* message authentication is required; | * message authentication is required; | |||
* "key generation" occurs at the end entity (see Section 4.2.1.3); | * "key generation" occurs at the end entity (see Section 4.2.1.3); | |||
and | ||||
* a confirmation message is recommended. | * a confirmation message is recommended. | |||
Note: An Initial Authentication Key (IAK) can be either a symmetric | Note: An Initial Authentication Key (IAK) can be either a symmetric | |||
key or an asymmetric private key with a certificate issued by another | key or an asymmetric private key with a certificate issued by another | |||
PKI trusted for this purpose. The establishment of such trust is out | PKI trusted for this purpose. The establishment of such trust is out | |||
of scope of this document. | of scope of this document. | |||
In terms of message flow, the basic authenticated scheme is as | In terms of message flow, the basic authenticated scheme is as | |||
follows: | follows: | |||
skipping to change at page 24, line 14 ¶ | skipping to change at line 1044 ¶ | |||
out-of-band procedural means versus PKIX-CMP in-band messages) in its | out-of-band procedural means versus PKIX-CMP in-band messages) in its | |||
certification exchanges (i.e., this may be a policy issue). However, | certification exchanges (i.e., this may be a policy issue). However, | |||
it is REQUIRED that CAs/RAs MUST enforce POP by some means because | it is REQUIRED that CAs/RAs MUST enforce POP by some means because | |||
there are currently many non-PKIX operational protocols in use | there are currently many non-PKIX operational protocols in use | |||
(various electronic mail protocols are one example) that do not | (various electronic mail protocols are one example) that do not | |||
explicitly check the binding between the end entity and the private | explicitly check the binding between the end entity and the private | |||
key. Until operational protocols that do verify the binding (for | key. Until operational protocols that do verify the binding (for | |||
signature, encryption, key agreement, and KEM key pairs) exist, and | signature, encryption, key agreement, and KEM key pairs) exist, and | |||
are ubiquitous, this binding can only be assumed to have been | are ubiquitous, this binding can only be assumed to have been | |||
verified by the CA/RA. Therefore, if the binding is not verified by | verified by the CA/RA. Therefore, if the binding is not verified by | |||
the CA/RA, certificates in the Internet Public-Key Infrastructure end | the CA/RA, certificates in the Internet Public Key Infrastructure end | |||
up being somewhat less meaningful. | up being somewhat less meaningful. | |||
POP is accomplished in different ways depending upon the type of key | POP is accomplished in different ways depending upon the type of key | |||
for which a certificate is requested. If a key can be used for | for which a certificate is requested. If a key can be used for | |||
multiple purposes (e.g., an RSA key) then any appropriate method MAY | multiple purposes (e.g., an RSA key), then any appropriate method MAY | |||
be used (e.g., a key that may be used for signing, as well as other | be used (e.g., a key that may be used for signing, as well as other | |||
purposes, MUST NOT be sent to the CA/RA in order to prove possession | purposes, MUST NOT be sent to the CA/RA in order to prove possession | |||
unless archival of the private key is explicitly desired). | unless archival of the private key is explicitly desired). | |||
This specification explicitly allows for cases where an end entity | This specification explicitly allows for cases where an end entity | |||
supplies the relevant proof to an RA and the RA subsequently attests | supplies the relevant proof to an RA and the RA subsequently attests | |||
to the CA that the required proof has been received (and validated!). | to the CA that the required proof has been received (and validated!). | |||
For example, an end entity wishing to have a signing key certified | For example, an end entity wishing to have a signing key certified | |||
could send the appropriate signature to the RA, which then simply | could send the appropriate signature to the RA, which then simply | |||
notifies the relevant CA that the end entity has supplied the | notifies the relevant CA that the end entity has supplied the | |||
required proof. Of course, such a situation may be disallowed by | required proof. Of course, such a situation may be disallowed by | |||
some policies (e.g., CAs may be the only entities permitted to verify | some policies (e.g., CAs may be the only entities permitted to verify | |||
POP during certification). | POP during certification). | |||
4.3.1. Signature Keys | 4.3.1. Signature Keys | |||
For signature keys, the end entity can sign a value to prove | For signature keys, the end entity can sign a value to prove | |||
possession of the private key, see Section 5.2.8.2. | possession of the private key; see Section 5.2.8.2. | |||
4.3.2. Encryption Keys | 4.3.2. Encryption Keys | |||
For encryption keys, the end entity can provide the private key to | For encryption keys, the end entity can provide the private key to | |||
the CA/RA (e.g., for archiving), see Section 5.2.8.3.1, or can be | the CA/RA (e.g., for archiving), see Section 5.2.8.3.1, or can be | |||
required to decrypt a value in order to prove possession of the | required to decrypt a value in order to prove possession of the | |||
private key. Decrypting a value can be achieved either directly (see | private key. Decrypting a value can be achieved either directly (see | |||
Section 5.2.8.3.3) or indirectly (see Section 5.2.8.3.2). | Section 5.2.8.3.3) or indirectly (see Section 5.2.8.3.2). | |||
The direct method is for the RA/CA to issue a random challenge to | The direct method is for the RA/CA to issue a random challenge to | |||
skipping to change at page 25, line 23 ¶ | skipping to change at line 1098 ¶ | |||
demonstrated using the {request, response, confirmation} triple of | demonstrated using the {request, response, confirmation} triple of | |||
messages). | messages). | |||
4.3.3. Key Agreement Keys | 4.3.3. Key Agreement Keys | |||
For key agreement keys, the end entity and the PKI management entity | For key agreement keys, the end entity and the PKI management entity | |||
(i.e., CA or RA) must establish a shared secret key in order to prove | (i.e., CA or RA) must establish a shared secret key in order to prove | |||
that the end entity has possession of the private key. | that the end entity has possession of the private key. | |||
Note that this need not impose any restrictions on the keys that can | Note that this need not impose any restrictions on the keys that can | |||
be certified by a given CA. In particular, for Diffie-Hellman keys | be certified by a given CA. In particular, for Diffie-Hellman keys, | |||
the end entity may freely choose its algorithm parameters provided | the end entity may freely choose its algorithm parameters provided | |||
that the CA can generate a short-term (or one-time) key pair with the | that the CA can generate a short-term (or one-time) key pair with the | |||
appropriate parameters when necessary. | appropriate parameters when necessary. | |||
4.3.4. Key Encapsulation Mechanism Keys | 4.3.4. Key Encapsulation Mechanism Keys | |||
For key encapsulation mechanism (KEM) keys, the end entity can | For key encapsulation mechanism (KEM) keys, the end entity can | |||
provide the private key to the CA/RA (e.g., for archiving), see | provide the private key to the CA/RA (e.g., for archiving), see | |||
Section 5.2.8.3.1, or can be required to decrypt a value in order to | Section 5.2.8.3.1, or can be required to decrypt a value in order to | |||
prove possession of the private key. Decrypting a value can be | prove possession of the private key. Decrypting a value can be | |||
achieved either directly (see Section 5.2.8.3.3) or indirectly (see | achieved either directly (see Section 5.2.8.3.3) or indirectly (see | |||
Section 5.2.8.3.2). | Section 5.2.8.3.2). | |||
Note: A definition of key encapsulation mechanisms can be found in | Note: A definition of key encapsulation mechanisms can be found in | |||
[RFC9629], Section 1. | Section 1 of [RFC9629]. | |||
The direct method is for the RA/CA to issue a random challenge to | The direct method is for the RA/CA to issue a random challenge to | |||
which an immediate response by the EE is required. | which an immediate response by the EE is required. | |||
The indirect method is to issue a certificate that is encrypted for | The indirect method is to issue a certificate that is encrypted for | |||
the end entity using a shared secret key derived from a key | the end entity using a shared secret key derived from a key | |||
encapsulated using the public key (and have the end entity | encapsulated using the public key (and have the end entity | |||
demonstrate its ability to use its private key for decapsulation of | demonstrate its ability to use its private key for decapsulation of | |||
the KEM ciphertext, derive the shared secret key, decrypt this | the KEM ciphertext, derive the shared secret key, decrypt this | |||
certificate, and provide a hash of the certificate in the | certificate, and provide a hash of the certificate in the | |||
confirmation message). This allows a CA to issue a certificate in a | confirmation message). This allows a CA to issue a certificate in a | |||
form that can only be used by the intended end entity. | form that can only be used by the intended end entity. | |||
This specification encourages use of the indirect method because it | This specification encourages use of the indirect method because it | |||
requires no extra messages to be sent (i.e., the proof can be | requires no extra messages to be sent (i.e., the proof can be | |||
demonstrated using the {request, response, confirmation} triple of | demonstrated using the {request, response, confirmation} triple of | |||
messages). | messages). | |||
A certification request message for a KEM certificate SHALL use | A certification request message for a KEM certificate SHALL use | |||
POPOPrivKey by using the keyEncipherment choice of ProofOfPossession, | POPOPrivKey by using the keyEncipherment choice of ProofOfPossession | |||
see Section 5.2.8, in the popo field of CertReqMsg as long as no KEM- | (see Section 5.2.8) in the popo field of CertReqMsg as long as no | |||
specific choice is available. | KEM-specific choice is available. | |||
4.4. Root CA Key Update | 4.4. Root CA Key Update | |||
This discussion only applies to CAs that are directly trusted by some | This discussion only applies to CAs that are directly trusted by some | |||
end entities. Recognizing whether a self-signed or non-self-signed | end entities. Recognizing whether a self-signed or non-self-signed | |||
CA is supposed to be directly trusted for some end entities is a | CA is supposed to be directly trusted for some end entities is a | |||
matter of CA policy and end entity configuration. This is thus | matter of CA policy and end entity configuration. Thus, this is | |||
beyond the scope of this document. | beyond the scope of this document. | |||
The basis of the procedure described here is that the CA protects its | The basis of the procedure described here is that the CA protects its | |||
new public key using its previous private key and vice versa. Thus, | new public key using its previous private key and vice versa. Thus, | |||
when a CA updates its key pair it may generate two link certificates | when a CA updates its key pair, it may generate two link | |||
"old with new" and "new with old". | certificates: "old with new" and "new with old". | |||
Note: The usage of link certificates has been shown to be very use | Note: The usage of link certificates has been shown to be very | |||
case specific and no assumptions are done on this aspect. | specific for each use case, and no assumptions are done on this | |||
RootCaKeyUpdateContent is updated to specify these link certificates | aspect. RootCaKeyUpdateContent is updated to specify these link | |||
as optional. | certificates as optional. | |||
Note: When an LDAP directory is used to publish root CA updates, the | Note: When an LDAP directory is used to publish root CA updates, the | |||
old and new root CA certificates together with the two link | old and new root CA certificates together with the two link | |||
certificates are stored as cACertificate attribute values. | certificates are stored as cACertificate attribute values. | |||
When a CA changes its key pair, those entities who have acquired the | When a CA changes its key pair, those entities who have acquired the | |||
old CA public key via "out-of-band" means are most affected. These | old CA public key via "out-of-band" means are most affected. These | |||
end entities need to acquire the new CA public key in a trusted way. | end entities need to acquire the new CA public key in a trusted way. | |||
This may be achieved "out-of-band", by using a repository, or by | This may be achieved "out-of-band" by using a repository or by using | |||
using online messages also containing the link certificates "new with | online messages also containing the link certificates "new with old". | |||
old". Once the end entity acquired and properly verified the new CA | Once the end entity acquired and properly verified the new CA public | |||
public key, it must load the new trust anchor information into its | key, it must load the new trust anchor information into its trusted | |||
trusted store. | store. | |||
The data structure used to protect the new and old CA public keys is | The data structure used to protect the new and old CA public keys is | |||
typically a standard X.509 v3 certificate (which may also contain | typically a standard X.509 v3 certificate (which may also contain | |||
extensions). There are no new data structures required. | extensions). There are no new data structures required. | |||
Note: Sometimes self-signed root CA certificates do not make use of | Note: Sometimes self-signed root CA certificates do not make use of | |||
X.509 v3 extensions and may be X.509 v1 certificates. Therefore, a | X.509 v3 extensions and may be X.509 v1 certificates. Therefore, a | |||
root CA key update must be able to work for version 1 certificates. | root CA key update must be able to work for version 1 certificates. | |||
The use of the X.509 v3 KeyIdentifier extension is recommended for | The use of the X.509 v3 KeyIdentifier extension is recommended for | |||
easier path building. | easier path building. | |||
skipping to change at page 27, line 27 ¶ | skipping to change at line 1194 ¶ | |||
period. | period. | |||
Note: This scheme offers a mechanism to ensures that end entities | Note: This scheme offers a mechanism to ensures that end entities | |||
will acquire the new CA public key, at the latest by the expiry of | will acquire the new CA public key, at the latest by the expiry of | |||
the last certificate they owned that was signed with the old CA | the last certificate they owned that was signed with the old CA | |||
private key. Certificate and/or key update operations occurring at | private key. Certificate and/or key update operations occurring at | |||
other times do not necessarily require this (depending on the end | other times do not necessarily require this (depending on the end | |||
entity's equipment). | entity's equipment). | |||
Note: In practice, a new root CA may have a slightly different | Note: In practice, a new root CA may have a slightly different | |||
subject DN, e.g., indicating a generation identifier like the year of | subject Distinguished Name (DN), e.g., indicating a generation | |||
issuance or a version number, for instance in an OU element. How to | identifier like the year of issuance or a version number, for | |||
bridge trust to the new root CA certificate in a CA DN change or a | instance, in an Organizational Unit (OU) element. How to bridge | |||
cross-certificate scenario is out of scope for this document. | trust to the new root CA certificate in a CA DN change or a cross- | |||
certificate scenario is out of scope for this document. | ||||
4.4.1. CA Operator Actions | 4.4.1. CA Operator Actions | |||
To change the key of the CA, the CA operator does the following: | To change the key of the CA, the CA operator does the following: | |||
1. Generate a new key pair. | 1. Generate a new key pair. | |||
2. Create a certificate containing the new CA public key signed with | 2. Create a certificate containing the new CA public key signed with | |||
the new private key or by the private key of some other CA (the | the new private key or by the private key of some other CA (the | |||
"new with new" certificate). | "new with new" certificate). | |||
skipping to change at page 28, line 28 ¶ | skipping to change at line 1244 ¶ | |||
The "new with old" certificate must have a validity period with the | The "new with old" certificate must have a validity period with the | |||
same notBefore time as the "new with new" certificate and a notAfter | same notBefore time as the "new with new" certificate and a notAfter | |||
time by which all end entities of this CA will securely possess the | time by which all end entities of this CA will securely possess the | |||
new CA public key (at the latest, at the notAfter time of the "old | new CA public key (at the latest, at the notAfter time of the "old | |||
with old" certificate). | with old" certificate). | |||
The "old with new" certificate must have a validity period with the | The "old with new" certificate must have a validity period with the | |||
same notBefore and notAfter time as the "old with old" certificate. | same notBefore and notAfter time as the "old with old" certificate. | |||
Note: Further operational considerations on transition from one root | Note: Further operational considerations on transition from one root | |||
CA self-signed certificate to the next is available in RFC 8649 | CA self-signed certificate to the next is available in Section 5 of | |||
Section 5 [RFC8649]. | [RFC8649]. | |||
4.4.2. Verifying Certificates | 4.4.2. Verifying Certificates | |||
Normally when verifying a signature, the verifier verifies (among | Normally when verifying a signature, the verifier verifies (among | |||
other things) the certificate containing the public key of the | other things) the certificate containing the public key of the | |||
signer. However, once a CA is allowed to update its key there are a | signer. However, once a CA is allowed to update its key, there are a | |||
range of new possibilities. These are shown in the table below. | range of new possibilities. These are shown in the table below. | |||
+======================+======================+=====================+ | +======================+======================+=====================+ | |||
| | Verifier's TEE | Verifier's TEE | | | | Verifier's TEE | Verifier's TEE | | |||
| | contains NEW public | contains OLD | | | | contains NEW public | contains OLD | | |||
| | key | public key | | | | key | public key | | |||
+======================+======================+=====================+ | +======================+======================+=====================+ | |||
| Signer's certificate | Case 1: The verifier | Case 2: The | | | Signer's certificate | Case 1: The verifier | Case 2: The | | |||
| is protected using | can directly verify | verifier is | | | is protected using | can directly verify | verifier is | | |||
| NEW key pair | the certificate. | missing the NEW | | | NEW key pair | the certificate. | missing the NEW | | |||
| | | public key. | | | | | public key. | | |||
+----------------------+----------------------+---------------------+ | +======================+----------------------+---------------------+ | |||
| Signer's certificate | Case 3: The verifier | Case 4: The | | | Signer's certificate | Case 3: The verifier | Case 4: The | | |||
| is protected using | is missing the OLD | verifier can | | | is protected using | is missing the OLD | verifier can | | |||
| OLD key pair | public key. | directly verify | | | OLD key pair | public key. | directly verify | | |||
| | | the certificate. | | | | | the certificate. | | |||
+----------------------+----------------------+---------------------+ | +======================+----------------------+---------------------+ | |||
Table 1 | Table 1 | |||
4.4.2.1. Verification in Cases 1 and 4 | 4.4.2.1. Verification in Cases 1 and 4 | |||
In these cases, the verifier has a local copy of the CA public key | In these cases, the verifier has a local copy of the CA public key | |||
that can be used to verify the certificate directly. This is the | that can be used to verify the certificate directly. This is the | |||
same as the situation where no key change has occurred. | same as the situation where no key change has occurred. | |||
4.4.2.2. Verification in Case 2 | 4.4.2.2. Verification in Case 2 | |||
In case 2, the verifier must get access to the new public key of the | In case 2, the verifier must get access to the new public key of the | |||
CA. Case 2 will arise when the CA operator has issued the verifier's | CA. Case 2 will arise when the CA operator has issued the verifier's | |||
certificate, then changed the CA's key, and then issued the signer's | certificate, then changed the CA's key, and then issued the signer's | |||
certificate; so it is quite a typical case. | certificate; so it is quite a typical case. | |||
The verifier does the following: | The verifier does the following: | |||
1. Get the "new with new" and "new with old" certificates. The | 1. Get the "new with new" and "new with old" certificates. The | |||
location to retrieve theses certificates from, may be available | location of where to retrieve these certificates may be available | |||
in the authority information access extension of the "old with | in the authority information access extension of the "old with | |||
old" certificate, see caIssuers access method in Section 4.2.2.1 | old" certificate (see the access method for caIssuers in | |||
of [RFC5280], or it may be locally configured. | Section 4.2.2.1 of [RFC5280]), or it may be locally configured. | |||
1. If a repository is available, look up the certificates in the | a. If a repository is available, look up the certificates in the | |||
caCertificate attribute. | caCertificate attribute. | |||
2. If a HTTP or FTP server is available, pick the certificates | b. If an HTTP or FTP server is available, pick the certificates | |||
from the "certs-only" CMS message. | from the "certs-only" CMS message. | |||
3. If a CMP server is available, request the certificates using | c. If a CMP server is available, request the certificates using | |||
the root CA update general message, see Section 5.3.19.15. | the root CA update the general message (see | |||
Section 5.3.19.15). | ||||
4. Otherwise, get the certificates "out-of-band" using any | d. Otherwise, get the certificates "out-of-band" using any | |||
trustworthy mechanism. | trustworthy mechanism. | |||
2. If received the certificates, check that the validity periods and | 2. If the certificates are received, check that the validity periods | |||
the subject and issuer fields match. Verify the signatures using | and the subject and issuer fields match. Verify the signatures | |||
the old root CA key (which the verifier has locally). | using the old root CA key (which the verifier has locally). | |||
3. If all checks were successful, securely store the new trust | 3. If all checks are successful, securely store the new trust anchor | |||
anchor information and validate the signer's certificate. | information and validate the signer's certificate. | |||
4.4.2.3. Verification in Case 3 | 4.4.2.3. Verification in Case 3 | |||
In case 3, the verifier must get access to the old public key of the | In case 3, the verifier must get access to the old public key of the | |||
CA. Case 3 will arise when the CA operator has issued the signer's | CA. Case 3 will arise when the CA operator has issued the signer's | |||
certificate, then changed the key, and then issued the verifier's | certificate, then changed the key, and then issued the verifier's | |||
certificate. | certificate. | |||
The verifier does the following: | The verifier does the following: | |||
1. Get the "old with new" certificate. The location to retrieve | 1. Get the "old with new" certificate. The location of where to | |||
theses certificates from, may be available in the authority | retrieve these certificates may be available in the authority | |||
information access extension of the "new with new" certificate, | information access extension of the "new with new" certificate | |||
see caIssuers access method in Section 4.2.2.1 of [RFC5280], or | (see caIssuers access method in Section 4.2.2.1 of [RFC5280]), or | |||
it may be locally configured. | it may be locally configured. | |||
1. If a repository is available, look up the certificate in the | a. If a repository is available, look up the certificate in the | |||
caCertificate attribute. | caCertificate attribute. | |||
2. If a HTTP or FTP server is available, pick the certificate | b. If an HTTP or FTP server is available, pick the certificate | |||
from the "certs-only" CMS message. | from the "certs-only" CMS message. | |||
3. If a CMP server and an untrusted copy of the old root CA | c. If a CMP server and an untrusted copy of the old root CA | |||
certificate is available (e.g., the signer provided it in- | certificate are available (e.g., the signer provided it in- | |||
band in the CMP extraCerts filed), request the certificate | band in the CMP extraCerts filed), request the certificate | |||
using the root CA update general message, see | using the root CA update the general message (see | |||
Section 5.3.19.15. | Section 5.3.19.15). | |||
4. Otherwise, get the certificate "out-of-band" using any | d. Otherwise, get the certificate "out-of-band" using any | |||
trustworthy mechanism. | trustworthy mechanism. | |||
2. If received the certificate, check that the validity periods and | 2. If the certificate is received, check that the validity periods | |||
the subject and issuer fields match. Verify the signatures using | and the subject and issuer fields match. Verify the signatures | |||
the new root CA key (which the verifier has locally). | using the new root CA key (which the verifier has locally). | |||
3. If all checks were successful, securely store the old trust | 3. If all checks were successful, securely store the old trust | |||
anchor information and validate the signer's certificate. | anchor information and validate the signer's certificate. | |||
4.4.3. Revocation - Change of CA Key | 4.4.3. Revocation - Change of the CA Key | |||
As we saw above, the verification of a certificate becomes more | As we saw above, the verification of a certificate becomes more | |||
complex once the CA is allowed to change its key. This is also true | complex once the CA is allowed to change its key. This is also true | |||
for revocation checks as the CA may have signed the CRL using a newer | for revocation checks, as the CA may have signed the CRL using a | |||
private key than the one within the user's TEE. | newer private key than the one within the user's TEE. | |||
The analysis of the alternatives is the same as for certificate | The analysis of the alternatives is the same as for certificate | |||
verification. | verification. | |||
4.5. Extended Key Usage for PKI Entities | 4.5. Extended Key Usage for PKI Entities | |||
The extended key usage (EKU) extension indicates the purposes for | The extended key usage (EKU) extension indicates the purposes for | |||
which the certified key pair may be used. Therefore, it restricts | which the certified key pair may be used. Therefore, it restricts | |||
the use of a certificate to specific applications. | the use of a certificate to specific applications. | |||
skipping to change at page 32, line 8 ¶ | skipping to change at line 1401 ¶ | |||
security(5) mechanisms(5) pkix(7) kp(3) 32 } | security(5) mechanisms(5) pkix(7) kp(3) 32 } | |||
Note: Section 2.10 of [RFC6402] specifies OIDs for a Certificate | Note: Section 2.10 of [RFC6402] specifies OIDs for a Certificate | |||
Management over CMS (CMC) CA and a CMC RA. As the functionality of a | Management over CMS (CMC) CA and a CMC RA. As the functionality of a | |||
CA and RA is not specific to any certificate management protocol | CA and RA is not specific to any certificate management protocol | |||
(such as CMC or CMP), these EKUs are reused by CMP. | (such as CMC or CMP), these EKUs are reused by CMP. | |||
The meaning of the id-kp-cmKGA EKU is as follows: | The meaning of the id-kp-cmKGA EKU is as follows: | |||
CMP KGA: CMP key generation authorities are CAs or are identified by | CMP KGA: CMP key generation authorities are CAs or are identified by | |||
the id-kp-cmKGA extended key usage. The CMP KGA knows the | the id-kp-cmKGA extended key usage. The CMP KGA knows the private | |||
private key it generated on behalf of the end entity. This | key it generated on behalf of the end entity. This is a very | |||
is a very sensitive service and needs specific | sensitive service and needs specific authorization, which by | |||
authorization, which by default is with the CA certificate | default is with the CA certificate itself. The CA may delegate | |||
itself. The CA may delegate its authorization by placing | its authorization by placing the id-kp-cmKGA extended key usage in | |||
the id-kp-cmKGA extended key usage in the certificate used | the certificate used to authenticate the origin of the generated | |||
to authenticate the origin of the generated private key. | private key. The authorization may also be determined through | |||
The authorization may also be determined through local | local configuration of the end entity. | |||
configuration of the end entity. | ||||
5. Data Structures | 5. Data Structures | |||
This section contains descriptions of the data structures required | This section contains descriptions of the data structures required | |||
for PKI management messages. Section 6 describes constraints on | for PKI management messages. Section 6 describes constraints on | |||
their values and the sequence of events for each of the various PKI | their values and the sequence of events for each of the various PKI | |||
management operations. | management operations. | |||
5.1. Overall PKI Message | 5.1. Overall PKI Message | |||
skipping to change at page 32, line 51 ¶ | skipping to change at line 1443 ¶ | |||
messages. | messages. | |||
The PKIBody contains message-specific information. | The PKIBody contains message-specific information. | |||
The PKIProtection, when used, contains bits that protect the PKI | The PKIProtection, when used, contains bits that protect the PKI | |||
message. | message. | |||
The extraCerts field can contain certificates that may be useful to | The extraCerts field can contain certificates that may be useful to | |||
the recipient. For example, this can be used by a CA or RA to | the recipient. For example, this can be used by a CA or RA to | |||
present an end entity with certificates that it needs to verify its | present an end entity with certificates that it needs to verify its | |||
own new certificate (if, for example, the CA that issued the end | own new certificate (for example, if the CA that issued the end | |||
entity's certificate is not a root CA for the end entity). Note that | entity's certificate is not a root CA for the end entity). Note that | |||
this field does not necessarily contain a certification path; the | this field does not necessarily contain a certification path; the | |||
recipient may have to sort, select from, or otherwise process the | recipient may have to sort, select from, or otherwise process the | |||
extra certificates in order to use them. | extra certificates in order to use them. | |||
5.1.1. PKI Message Header | 5.1.1. PKI Message Header | |||
All PKI messages require some header information for addressing and | All PKI messages require some header information for addressing and | |||
transaction identification. Some of this information will also be | transaction identification. Some of this information will also be | |||
present in a transport-specific envelope. However, if the PKI | present in a transport-specific envelope. However, if the PKI | |||
skipping to change at page 34, line 10 ¶ | skipping to change at line 1487 ¶ | |||
PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
The usage of the protocol version number (pvno) is described in | The usage of the protocol version number (pvno) is described in | |||
Section 7. | Section 7. | |||
The sender field contains the name of the sender of the PKIMessage. | The sender field contains the name of the sender of the PKIMessage. | |||
This name (in conjunction with senderKID, if supplied) should be | This name (in conjunction with senderKID, if supplied) should be | |||
sufficient to indicate the key to use to verify the protection on the | sufficient to indicate the key to use to verify the protection on the | |||
message. If nothing about the sender is known to the sending entity | message. If nothing about the sender is known to the sending entity | |||
(e.g., in the initial request message, where the end entity may not | (e.g., in the initial request message, where the end entity may not | |||
know its own Distinguished Name (DN), e-mail name, IP address, etc.), | know its own Distinguished Name (DN), email name, IP address, etc.), | |||
then the "sender" field MUST contain a "NULL-DN" value in the | then the "sender" field MUST contain a "NULL-DN" value in the | |||
directoryName choice. A "NULL-DN" is a SEQUENCE OF relative | directoryName choice. A "NULL-DN" is a SEQUENCE OF relative | |||
distinguished names of zero length and is encoded as 0x3000. In such | distinguished names of zero length and is encoded as 0x3000. In such | |||
a case, the senderKID field MUST hold an identifier (i.e., a | a case, the senderKID field MUST hold an identifier (i.e., a | |||
reference number) that indicates to the receiver the appropriate | reference number) that indicates to the receiver the appropriate | |||
shared secret information to use to verify the message. | shared secret information to use to verify the message. | |||
The recipient field contains the name of the recipient of the | The recipient field contains the name of the recipient of the | |||
PKIMessage. This name (in conjunction with recipKID, if supplied) | PKIMessage. This name (in conjunction with recipKID, if supplied) | |||
should be usable to verify the protection on the message. | should be usable to verify the protection on the message. | |||
The protectionAlg field specifies the algorithm used to protect the | The protectionAlg field specifies the algorithm used to protect the | |||
message. If no protection bits are supplied (note that PKIProtection | message. If no protection bits are supplied (note that PKIProtection | |||
is OPTIONAL) then this field MUST be omitted; if protection bits are | is OPTIONAL), then this field MUST be omitted; if protection bits are | |||
supplied, then this field MUST be supplied. | supplied, then this field MUST be supplied. | |||
senderKID and recipKID are usable to indicate which keys have been | senderKID and recipKID are usable to indicate which keys have been | |||
used to protect the message (recipKID will normally only be required | used to protect the message (recipKID will normally only be required | |||
where protection of the message uses Diffie-Hellman (DH) or | where protection of the message uses Diffie-Hellman (DH) or Elliptic | |||
elliptic curve Diffie-Hellman (ECDH) keys). These fields MUST be | Curve Diffie-Hellman (ECDH) keys). These fields MUST be used if | |||
used if required to uniquely identify a key (e.g., if more than one | required to uniquely identify a key (e.g., if more than one key is | |||
key is associated with a given sender name). The senderKID SHOULD be | associated with a given sender name). The senderKID SHOULD be used | |||
used in any case. | in any case. | |||
Note: The recommendation of using senderKID is changed since | Note: The recommendation of using senderKID has changed since | |||
[RFC4210], where it was recommended to be omitted if not needed to | [RFC4210], where it was recommended to be omitted if not needed to | |||
identify the protection key. | identify the protection key. | |||
The transactionID field within the message header is to be used to | The transactionID field within the message header is to be used to | |||
allow the recipient of a message to correlate this with an ongoing | allow the recipient of a message to correlate this with an ongoing | |||
transaction. This is needed for all transactions that consist of | transaction. This is needed for all transactions that consist of | |||
more than just a single request/response pair. For transactions that | more than just a single request/response pair. For transactions that | |||
consist of a single request/response pair, the rules are as follows. | consist of a single request/response pair, the rules are as follows. | |||
A client MUST populate the transactionID field if the message | A client MUST populate the transactionID field if the message | |||
contains an infoValue of type KemCiphertextInfo, see Section 5.1.3.4. | contains an infoValue of type KemCiphertextInfo (see | |||
In all other cases the client MAY populate the transactionID field of | Section 5.1.3.4). In all other cases, the client MAY populate the | |||
the request. If a server receives such a request that has the | transactionID field of the request. If a server receives such a | |||
transactionID field set, then it MUST set the transactionID field of | request that has the transactionID field set, then it MUST set the | |||
the response to the same value. If a server receives such request | transactionID field of the response to the same value. If a server | |||
with a missing transactionID field, then it MUST populate the | receives such request with a missing transactionID field, then it | |||
transactionID field if the message contains a KemCiphertextInfo | MUST populate the transactionID field if the message contains a | |||
field. In all other cases the server MAY set transactionID field of | KemCiphertextInfo field. In all other cases, the server MAY set the | |||
the response. | transactionID field of the response. | |||
For transactions that consist of more than just a single request/ | For transactions that consist of more than just a single request/ | |||
response pair, the rules are as follows. If the message contains an | response pair, the rules are as follows. If the message contains an | |||
infoValue of type KemCiphertextInfo, the client MUST generate a | infoValue of type KemCiphertextInfo, the client MUST generate a | |||
transactionID, otherwise the client SHOULD generate a transactionID | transactionID; otherwise, the client SHOULD generate a transactionID | |||
for the first request. If a server receives such a request that has | for the first request. If a server receives such a request that has | |||
the transactionID field set, then it MUST set the transactionID field | the transactionID field set, then it MUST set the transactionID field | |||
of the response to the same value. If a server receives such request | of the response to the same value. If a server receives such request | |||
with a missing transactionID field, then it MUST populate the | with a missing transactionID field, then it MUST populate the | |||
transactionID field of the response with a server-generated ID. | transactionID field of the response with a server-generated ID. | |||
Subsequent requests and responses MUST all set the transactionID | Subsequent requests and responses MUST all set the transactionID | |||
field to the thus established value. In all cases where a | field to the thus established value. In all cases where a | |||
transactionID is being used, a given client MUST NOT have more than | transactionID is being used, a given client MUST NOT have more than | |||
one transaction with the same transactionID in progress at any time | one transaction with the same transactionID in progress at any time | |||
(to a given server). Servers are free to require uniqueness of the | (to a given server). Servers are free to require uniqueness of the | |||
skipping to change at page 35, line 46 ¶ | skipping to change at line 1557 ¶ | |||
messages with the corresponding transaction. Typically, this means | messages with the corresponding transaction. Typically, this means | |||
that a server will require the {client, transactionID} tuple to be | that a server will require the {client, transactionID} tuple to be | |||
unique, or even the transactionID alone to be unique, if it cannot | unique, or even the transactionID alone to be unique, if it cannot | |||
distinguish clients based on any transport-level information. A | distinguish clients based on any transport-level information. A | |||
server receiving the first message of a transaction (which requires | server receiving the first message of a transaction (which requires | |||
more than a single request/response pair) that contains a | more than a single request/response pair) that contains a | |||
transactionID that does not allow it to meet the above constraints | transactionID that does not allow it to meet the above constraints | |||
(typically because the transactionID is already in use) MUST send | (typically because the transactionID is already in use) MUST send | |||
back an ErrorMsgContent with a PKIFailureInfo of transactionIdInUse. | back an ErrorMsgContent with a PKIFailureInfo of transactionIdInUse. | |||
It is RECOMMENDED that the clients fill the transactionID field with | It is RECOMMENDED that the clients fill the transactionID field with | |||
128 bits of (pseudo-) random data for the start of a transaction to | 128 bits of (pseudo-)random data for the start of a transaction to | |||
reduce the probability of having the transactionID in use at the | reduce the probability of having the transactionID in use at the | |||
server. | server. | |||
The senderNonce and recipNonce fields protect the PKIMessage against | The senderNonce and recipNonce fields protect the PKIMessage against | |||
replay attacks. The senderNonce will typically be 128 bits of | replay attacks. The senderNonce will typically be 128 bits of | |||
(pseudo-) random data generated by the sender, whereas the recipNonce | (pseudo-)random data generated by the sender, whereas the recipNonce | |||
is copied from the senderNonce field of the previous message in the | is copied from the senderNonce field of the previous message in the | |||
transaction. | transaction. | |||
The messageTime field contains the time at which the sender created | The messageTime field contains the time at which the sender created | |||
the message. This may be useful to allow end entities to correct/ | the message. This may be useful to allow end entities to correct/ | |||
check their local time for consistency with the time on a central | check their local time for consistency with the time on a central | |||
system. | system. | |||
The freeText field may be used to send a human-readable message to | The freeText field may be used to send a human-readable message to | |||
the recipient (in any number of languages). Each UTF8String MAY | the recipient (in any number of languages). Each UTF8String MAY | |||
include an [RFC5646] language tag to indicate the language of the | include a language tag [RFC5646] to indicate the language of the | |||
contained text. The first language used in this sequence indicates | contained text. The first language used in this sequence indicates | |||
the desired language for replies. | the desired language for replies. | |||
The generalInfo field may be used to send machine-processable | The generalInfo field may be used to send machine-processable | |||
additional data to the recipient. The following generalInfo | additional data to the recipient. The following generalInfo | |||
extensions are defined and MAY be supported. | extensions are defined and MAY be supported. | |||
5.1.1.1. ImplicitConfirm | 5.1.1.1. ImplicitConfirm | |||
This is used by the EE to inform the CA or RA that it does not wish | This is used by the EE to inform the CA or RA that it does not wish | |||
skipping to change at page 37, line 18 ¶ | skipping to change at line 1617 ¶ | |||
generalInfo field of the PKIHeader of a PKIMessage. This is used by | generalInfo field of the PKIHeader of a PKIMessage. This is used by | |||
the RA to inform the CA of the original PKIMessage that it received | the RA to inform the CA of the original PKIMessage that it received | |||
from the EE and modified in some way (e.g., added or modified | from the EE and modified in some way (e.g., added or modified | |||
particular field values or added new extensions) before forwarding | particular field values or added new extensions) before forwarding | |||
the new PKIMessage. This accommodates, for example, cases in which | the new PKIMessage. This accommodates, for example, cases in which | |||
the CA wishes to check the message origin, the POP, or other | the CA wishes to check the message origin, the POP, or other | |||
information on the original EE message. | information on the original EE message. | |||
Note: If the changes made by the RA to the original PKIMessage break | Note: If the changes made by the RA to the original PKIMessage break | |||
the POP of a certificate request, the RA can set the popo field of | the POP of a certificate request, the RA can set the popo field of | |||
the new PKIMessage to raVerified, see Section 5.2.8.4. | the new PKIMessage to raVerified (see Section 5.2.8.4). | |||
Unless the OrigPKIMessage infoValue is in the header of a nested | Unless the OrigPKIMessage infoValue is in the header of a nested | |||
message, it MUST contain exactly one PKIMessage. The contents of | message, it MUST contain exactly one PKIMessage. The contents of | |||
OrigPKIMessage infoValue in the header of a nested message MAY | OrigPKIMessage infoValue in the header of a nested message MAY | |||
contain multiple PKIMessage structures, which MUST be in the same | contain multiple PKIMessage structures, which MUST be in the same | |||
order as the PKIMessage structures in PKIBody. | order as the PKIMessage structures in PKIBody. | |||
id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} | |||
OrigPKIMessageValue ::= PKIMessages | OrigPKIMessageValue ::= PKIMessages | |||
5.1.1.4. CertProfile | 5.1.1.4. CertProfile | |||
This is used by the EE to indicate specific certificate profiles, | This is used by the EE to indicate specific certificate profiles, | |||
e.g., when requesting a new certificate or a certificate request | e.g., when requesting a new certificate or a certificate request | |||
template; see Section 5.3.19.16. | template (see Section 5.3.19.16). | |||
id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21} | |||
CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | CertProfileValue ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
When used in a p10cr message, the CertProfileValue sequence MUST NOT | When used in a p10cr message, the CertProfileValue sequence MUST NOT | |||
contain multiple certificate profile names. When used in an | contain multiple certificate profile names. When used in an | |||
ir/cr/kur/genm message, the CertProfileValue sequence MUST NOT | ir/cr/kur/genm message, the CertProfileValue sequence MUST NOT | |||
contain more certificate profile names than the number of CertReqMsg | contain more certificate profile names than the number of CertReqMsg | |||
or GenMsgContent InfoTypeAndValue elements contained in the message | or GenMsgContent InfoTypeAndValue elements contained in the message | |||
body. | body. | |||
skipping to change at page 38, line 12 ¶ | skipping to change at line 1660 ¶ | |||
InfoTypeAndValue elements, the remaining CertReqMsg or GenMsgContent | InfoTypeAndValue elements, the remaining CertReqMsg or GenMsgContent | |||
InfoTypeAndValue elements have no profile name associated with them. | InfoTypeAndValue elements have no profile name associated with them. | |||
5.1.1.5. KemCiphertextInfo | 5.1.1.5. KemCiphertextInfo | |||
A PKI entity MAY provide the KEM ciphertext for MAC-based message | A PKI entity MAY provide the KEM ciphertext for MAC-based message | |||
protection using KEM (see Section 5.1.3.4) in the generalInfo field | protection using KEM (see Section 5.1.3.4) in the generalInfo field | |||
of a request message to a PKI management entity if it knows that the | of a request message to a PKI management entity if it knows that the | |||
PKI management entity uses a KEM key pair and has its public key. | PKI management entity uses a KEM key pair and has its public key. | |||
id-it-KemCiphertextInfo OBJECT IDENTIFIER ::= { id-it TBD1 } | id-it-KemCiphertextInfo OBJECT IDENTIFIER ::= { id-it 24 } | |||
KemCiphertextInfoValue ::= KemCiphertextInfo | KemCiphertextInfoValue ::= KemCiphertextInfo | |||
For more details of KEM-based message protection see Section 5.1.3.4. | For more details of KEM-based message protection, see | |||
See Section 5.3.19.18 for the definition of {id-it TBD1}. | Section 5.1.3.4. See Section 5.3.19.18 for the definition of {id-it | |||
24}. | ||||
5.1.2. PKI Message Body | 5.1.2. PKI Message Body | |||
PKIBody ::= CHOICE { | PKIBody ::= CHOICE { | |||
ir [0] CertReqMessages, --Initialization Req | ir [0] CertReqMessages, --Initialization Req | |||
ip [1] CertRepMessage, --Initialization Resp | ip [1] CertRepMessage, --Initialization Resp | |||
cr [2] CertReqMessages, --Certification Req | cr [2] CertReqMessages, --Certification Req | |||
cp [3] CertRepMessage, --Certification Resp | cp [3] CertRepMessage, --Certification Resp | |||
p10cr [4] CertificationRequest, --PKCS #10 Cert. Req. | p10cr [4] CertificationRequest, --PKCS #10 Cert. Req. | |||
popdecc [5] POPODecKeyChallContent, --pop Challenge | popdecc [5] POPODecKeyChallContent, --pop Challenge | |||
skipping to change at page 39, line 13 ¶ | skipping to change at line 1709 ¶ | |||
The specific types are described in Section 5.3 below. | The specific types are described in Section 5.3 below. | |||
5.1.3. PKI Message Protection | 5.1.3. PKI Message Protection | |||
Some PKI messages will be protected for integrity. | Some PKI messages will be protected for integrity. | |||
Note: If an asymmetric algorithm is used to protect a message and the | Note: If an asymmetric algorithm is used to protect a message and the | |||
relevant public component has been certified already, then the origin | relevant public component has been certified already, then the origin | |||
of the message can also be authenticated. On the other hand, if the | of the message can also be authenticated. On the other hand, if the | |||
public component is uncertified, then the message origin cannot be | public component is uncertified, then the message origin cannot be | |||
automatically authenticated, but may be authenticated via out-of-band | automatically authenticated but may be authenticated via out-of-band | |||
means. | means. | |||
When protection is applied, the following structure is used: | When protection is applied, the following structure is used: | |||
PKIProtection ::= BIT STRING | PKIProtection ::= BIT STRING | |||
The input to the calculation of PKIProtection is the DER encoding of | The input to the calculation of PKIProtection is the DER encoding of | |||
the following data structure: | the following data structure: | |||
ProtectedPart ::= SEQUENCE { | ProtectedPart ::= SEQUENCE { | |||
skipping to change at page 39, line 38 ¶ | skipping to change at line 1734 ¶ | |||
There MAY be cases in which the PKIProtection BIT STRING is | There MAY be cases in which the PKIProtection BIT STRING is | |||
deliberately not used to protect a message (i.e., this OPTIONAL field | deliberately not used to protect a message (i.e., this OPTIONAL field | |||
is omitted) because other protection, external to PKIX, will be | is omitted) because other protection, external to PKIX, will be | |||
applied instead. Such a choice is explicitly allowed in this | applied instead. Such a choice is explicitly allowed in this | |||
specification. Examples of such external protection include CMS | specification. Examples of such external protection include CMS | |||
[RFC5652] and Security Multiparts [RFC1847] encapsulation of the | [RFC5652] and Security Multiparts [RFC1847] encapsulation of the | |||
PKIMessage (or simply the PKIBody (omitting the CHOICE tag), if the | PKIMessage (or simply the PKIBody (omitting the CHOICE tag), if the | |||
relevant PKIHeader information is securely carried in the external | relevant PKIHeader information is securely carried in the external | |||
mechanism). It is noted, however, that many such external mechanisms | mechanism). It is noted, however, that many such external mechanisms | |||
require that the end entity already possesses a public-key | require that the end entity already possesses a public-key | |||
certificate, and/or a unique Distinguished Name, and/or other such | certificate, a unique Distinguished Name, and/or other such | |||
infrastructure-related information. Thus, they may not be | infrastructure-related information. Thus, they may not be | |||
appropriate for initial registration, key-recovery, or any other | appropriate for initial registration, key-recovery, or any other | |||
process with "boot-strapping" characteristics. For those cases it | process with "boot-strapping" characteristics. For those cases, it | |||
may be necessary that the PKIProtection parameter be used. In the | may be necessary that the PKIProtection parameter be used. In the | |||
future, if/when external mechanisms are modified to accommodate boot- | future, if/when external mechanisms are modified to accommodate boot- | |||
strapping scenarios, the use of PKIProtection may become rare or non- | strapping scenarios, the use of PKIProtection may become rare or non- | |||
existent. | existent. | |||
Depending on the circumstances, the PKIProtection bits may contain a | Depending on the circumstances, the PKIProtection bits may contain a | |||
Message Authentication Code (MAC) or signature. Only the following | Message Authentication Code (MAC) or signature. Only the following | |||
cases can occur: | cases can occur: | |||
5.1.3.1. Shared Secret Information | 5.1.3.1. Shared Secret Information | |||
In this case, the sender and recipient share secret information with | In this case, the sender and recipient share secret information with | |||
sufficient entropy (established via out-of-band means). | sufficient entropy (established via out-of-band means). | |||
PKIProtection will contain a MAC value and the protectionAlg MAY be | PKIProtection will contain a MAC value, and the protectionAlg MAY be | |||
one of the options described in CMP Algorithms Section 6.1 [RFC9481]. | one of the options described in Section 6.1 of CMP Algorithms | |||
[RFC9481]. | ||||
The algorithm identifier id-PasswordBasedMac is defined in | The algorithm identifier id-PasswordBasedMac is defined in | |||
Section 4.4 of [RFC4211] and updated by [RFC9045]. It is mentioned | Section 4.4 of [RFC4211] and updated by [RFC9045]. It is mentioned | |||
in Section 6.1.1 of [RFC9481] for backward compatibility. More | in Section 6.1.1 of [RFC9481] for backward compatibility. More | |||
modern alternatives are listed in Section 6.1 of [RFC9481]. | modern alternatives are listed in Section 6.1 of [RFC9481]. | |||
id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13} | id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13} | |||
PBMParameter ::= SEQUENCE { | PBMParameter ::= SEQUENCE { | |||
salt OCTET STRING, | salt OCTET STRING, | |||
owf AlgorithmIdentifier, | owf AlgorithmIdentifier, | |||
iterationCount INTEGER, | iterationCount INTEGER, | |||
mac AlgorithmIdentifier | mac AlgorithmIdentifier | |||
} | } | |||
The following text gives a method of key expansion to be used when | The following text gives a method of key expansion to be used when | |||
the MAC-algorithm requires an input length that is larger than the | the MAC algorithm requires an input length that is larger than the | |||
size of the one-way-function. | size of the one-way function. | |||
Note: Section 4.4 of [RFC4211] and [RFC9045] do not mention this key | Note: Section 4.4 of [RFC4211] and [RFC9045] do not mention this key | |||
expansion method and gives an example using HMAC algorithms where key | expansion method or give an example using HMAC algorithms where key | |||
expansion is not needed. It is recognized that this omission in | expansion is not needed. It is recognized that this omission in | |||
[RFC4211] can lead to confusion and possible incompatibility if | [RFC4211] can lead to confusion and possible incompatibility if key | |||
[RFC4210] key expansion is not used when needed. Therefore, when key | expansion [RFC4210] is not used when needed. Therefore, when key | |||
expansion is required (when K > H) the key expansion defined in the | expansion is required (when K > H), the key expansion defined in the | |||
following text MUST be used. | following text MUST be used. | |||
In the above protectionAlg, the salt value is appended to the shared | In the above protectionAlg, the salt value is appended to the shared | |||
secret input. The OWF is then applied iterationCount times, where | secret input. The one-way function (OWF) is then applied | |||
the salted secret is the input to the first iteration and, for each | iterationCount times, where the salted secret is the input to the | |||
successive iteration, the input is set to be the output of the | first iteration and, for each successive iteration, the input is set | |||
previous iteration. The output of the final iteration (called | to be the output of the previous iteration. The output of the final | |||
"BASEKEY" for ease of reference, with a size of "H") is what is used | iteration (called "BASEKEY" for ease of reference, with a size of | |||
to form the symmetric key. If the MAC algorithm requires a K-bit key | "H") is what is used to form the symmetric key. If the MAC algorithm | |||
and K <= H, then the most significant K bits of BASEKEY are used. If | requires a K-bit key and K <= H, then the most significant K bits of | |||
K > H, then all of BASEKEY is used for the most significant H bits of | BASEKEY are used. If K > H, then all of BASEKEY is used for the most | |||
the key, OWF("1" || BASEKEY) is used for the next most significant H | significant H bits of the key, OWF("1" || BASEKEY) is used for the | |||
bits of the key, OWF("2" || BASEKEY) is used for the next most | next most significant H bits of the key, OWF("2" || BASEKEY) is used | |||
significant H bits of the key, and so on, until all K bits have been | for the next most significant H bits of the key, and so on, until all | |||
derived. [Here "N" is the ASCII byte encoding the number N and "||" | K bits have been derived. [Here "N" is the ASCII byte encoding the | |||
represents concatenation.] | number N and "||" represents concatenation.] | |||
Note: It is RECOMMENDED that the fields of PBMParameter remain | Note: It is RECOMMENDED that the fields of PBMParameter remain | |||
constant throughout the messages of a single transaction (e.g., | constant throughout the messages of a single transaction (e.g., | |||
ir/ip/certConf/pkiConf) to reduce the overhead associated with | ir/ip/certConf/pkiConf) to reduce the overhead associated with | |||
PasswordBasedMac computation. | PasswordBasedMac computation. | |||
5.1.3.2. DH Key Pairs | 5.1.3.2. DH Key Pairs | |||
Where the sender and receiver possess finite-field or elliptic-curve- | Where the sender and receiver possess finite-field or elliptic-curve- | |||
based Diffie-Hellman certificates with compatible DH parameters, in | based Diffie-Hellman certificates with compatible DH parameters in | |||
order to protect the message the end entity must generate a symmetric | order to protect the message, the end entity must generate a | |||
key based on its private DH key value and the DH public key of the | symmetric key based on its private DH key value and the DH public key | |||
recipient of the PKI message. PKIProtection will contain a MAC value | of the recipient of the PKI message. PKIProtection will contain a | |||
keyed with this derived symmetric key and the protectionAlg will be | MAC value keyed with this derived symmetric key, and the | |||
the following: | protectionAlg will be the following: | |||
id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30} | |||
DHBMParameter ::= SEQUENCE { | DHBMParameter ::= SEQUENCE { | |||
owf AlgorithmIdentifier, | owf AlgorithmIdentifier, | |||
-- AlgId for a One-Way Function | -- AlgId for a One-Way Function | |||
mac AlgorithmIdentifier | mac AlgorithmIdentifier | |||
-- the MAC AlgId | -- the MAC AlgId | |||
} | } | |||
skipping to change at page 41, line 41 ¶ | skipping to change at line 1832 ¶ | |||
symmetric key. If the MAC algorithm requires a K-bit key and K <= H, | symmetric key. If the MAC algorithm requires a K-bit key and K <= H, | |||
then the most significant K bits of BASEKEY are used. If K > H, then | then the most significant K bits of BASEKEY are used. If K > H, then | |||
all of BASEKEY is used for the most significant H bits of the key, | all of BASEKEY is used for the most significant H bits of the key, | |||
OWF("1" || BASEKEY) is used for the next most significant H bits of | OWF("1" || BASEKEY) is used for the next most significant H bits of | |||
the key, OWF("2" || BASEKEY) is used for the next most significant H | the key, OWF("2" || BASEKEY) is used for the next most significant H | |||
bits of the key, and so on, until all K bits have been derived. | bits of the key, and so on, until all K bits have been derived. | |||
[Here "N" is the ASCII byte encoding the number N and "||" represents | [Here "N" is the ASCII byte encoding the number N and "||" represents | |||
concatenation.] | concatenation.] | |||
Note: Hash algorithms that can be used as one-way functions are | Note: Hash algorithms that can be used as one-way functions are | |||
listed in CMP Algorithms [RFC9481] Section 2. | listed in Section 2 of CMP Algorithms [RFC9481]. | |||
5.1.3.3. Signature | 5.1.3.3. Signature | |||
In this case, the sender possesses a signature key pair and simply | In this case, the sender possesses a signature key pair and simply | |||
signs the PKI message. PKIProtection will contain the signature | signs the PKI message. PKIProtection will contain the signature | |||
value and the protectionAlg will be an AlgorithmIdentifier for a | value and the protectionAlg will be an AlgorithmIdentifier for a | |||
digital signature MAY be one of the options described in CMP | digital signature, which MAY be one of the options described in | |||
Algorithms Section 3 [RFC9481]. | Section 3 of CMP Algorithms [RFC9481]. | |||
5.1.3.4. Key Encapsulation | 5.1.3.4. Key Encapsulation | |||
In case the sender of a message has a Key Encapsulation Mechanism | In case the sender of a message has a Key Encapsulation Mechanism | |||
(KEM) key pair, it can be used to establish a shared secret key for | (KEM) key pair, it can be used to establish a shared secret key for | |||
MAC-based message protection. This can be used for message | MAC-based message protection. This can be used for message | |||
authentication. | authentication. | |||
This approach uses the definition of Key Encapsulation Mechanism | This approach uses the definition of Key Encapsulation Mechanism | |||
(KEM) algorithm functions in Section 1 of [RFC9629] as follows: | (KEM) algorithm functions in Section 1 of [RFC9629] as follows: | |||
A KEM algorithm provides three functions: | A KEM algorithm provides three functions: | |||
* KeyGen() -> (pk, sk): | 1. KeyGen() -> (pk, sk): Generate a public key (pk) and a private | |||
(secret) key (sk). | ||||
Generate a public key (pk) and a private (secret) key (sk). | ||||
* Encapsulate(pk) -> (ct, ss): | ||||
Given the public key (pk), produce a ciphertext (ct) and a shared | ||||
secret (ss). | ||||
* Decapsulate(sk, ct) -> (ss): | 2. Encapsulate(pk) -> (ct, ss): Given the public key (pk), produce a | |||
ciphertext (ct) and a shared secret (ss). | ||||
Given the private key (sk) and the ciphertext (ct), produce the | 3. Decapsulate(sk, ct) -> (ss): Given the private key (sk) and the | |||
shared secret (ss). | ciphertext (ct), produce the shared secret (ss). | |||
To support a particular KEM algorithm, the PKI entity that possesses | To support a particular KEM algorithm, the PKI entity that possesses | |||
a KEM key pair and wishes to use it for MAC-based message protection | a KEM key pair and wishes to use it for MAC-based message protection | |||
MUST support the KEM Decapsulate() function. The PKI entity that | MUST support the KEM Decapsulate() function. The PKI entity that | |||
wishes to verify the MAC-based message protection MUST support the | wishes to verify the MAC-based message protection MUST support the | |||
KEM Encapsulate() function. The respective public KEM key is usually | KEM Encapsulate() function. The respective public KEM key is usually | |||
carried in a certificate [I-D.ietf-lamps-kyber-certificates]. | carried in a certificate [ML-KEM]. | |||
Note: Both PKI entities send and receive messages in a PKI management | Note: Both PKI entities send and receive messages in a PKI management | |||
operation. Both PKI entities may independently wish to protect | operation. Both PKI entities may independently wish to protect | |||
messages using their KEM key pairs. For ease of explanation we use | messages using their KEM key pairs. For ease of explanation, we use | |||
the term "Alice" to denote the PKI entity possessing the KEM key pair | the terms "Alice" to denote the PKI entity possessing the KEM key | |||
and who wishes to provide MAC-based message protection, and "Bob" to | pair and who wishes to provide MAC-based message protection and "Bob" | |||
denote the PKI entity having Alice’s authentic public KEM key and who | to denote the PKI entity having Alice's authentic public KEM key and | |||
needs to verify the MAC-based protection provided by Alice. | who needs to verify the MAC-based protection provided by Alice. | |||
Assuming Bob has Alice's KEM public key, he generates the ciphertext | Assuming Bob has Alice's KEM public key, he generates the ciphertext | |||
using KEM encapsulation and transfers it to Alice in an | using KEM encapsulation and transfers it to Alice in an | |||
InfoTypeAndValue structure. Alice then retrieves the KEM shared | InfoTypeAndValue structure. Alice then retrieves the KEM shared | |||
secret from the ciphertext using KEM decapsulation and the associated | secret from the ciphertext using KEM decapsulation and the associated | |||
KEM private key. Using a key derivation function (KDF), she derives | KEM private key. Using a key derivation function (KDF), Alice | |||
a shared secret key from the KEM shared secret and other data sent by | derives a shared secret key from the KEM shared secret and other data | |||
Bob. PKIProtection will contain a MAC value calculated using that | sent by Bob. PKIProtection will contain a MAC value calculated using | |||
shared secret key, and the protectionAlg will be the following: | that shared secret key, and the protectionAlg will be the following: | |||
id-KemBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 16} | id-KemBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 16} | |||
KemBMParameter ::= SEQUENCE { | KemBMParameter ::= SEQUENCE { | |||
kdf AlgorithmIdentifier{KEY-DERIVATION, {...}}, | kdf AlgorithmIdentifier{KEY-DERIVATION, {...}}, | |||
kemContext [0] OCTET STRING OPTIONAL, | kemContext [0] OCTET STRING OPTIONAL, | |||
len INTEGER (1..MAX), | len INTEGER (1..MAX), | |||
mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | |||
} | } | |||
Note: The OID for id-KemBasedMac was assigned on the private-use arc | Note: The OID for id-KemBasedMac was assigned on the private-use arc | |||
{ iso(1) member-body(2) us(840) nortelnetworks(113533) entrust(7) }, | { iso(1) member-body(2) us(840) nortelnetworks(113533) entrust(7) } | |||
and not assigned on an IANA-owned arc because the authors wished to | and not assigned on an IANA-owned arc because the authors wished to | |||
placed it on the same branch as the existing OIDs for id- | place it on the same branch as the existing OIDs for id- | |||
PasswordBasedMac and id-DHBasedMac. | PasswordBasedMac and id-DHBasedMac. | |||
kdf is the algorithm identifier of the chosen KDF, and any associated | kdf is the algorithm identifier of the chosen KDF, and any associated | |||
parameters, used to derive the shared secret key. | parameters, used to derive the shared secret key. | |||
kemContext MAY be used to transfer additional algorithm specific | kemContext MAY be used to transfer additional algorithm-specific | |||
context information, see also the definition of ukm in [RFC9629], | context information (see also the definition of ukm in Section 3 of | |||
Section 3. | [RFC9629]). | |||
len is the output length of the KDF and MUST be the desired size of | len is the output length of the KDF and MUST be the desired size of | |||
the key to be used for MAC-based message protection. | the key to be used for MAC-based message protection. | |||
mac is the algorithm identifier of the chosen MAC algorithm, and any | mac is the algorithm identifier of the chosen MAC algorithm, and any | |||
associated parameters, used to calculate the MAC value. | associated parameters, used to calculate the MAC value. | |||
The KDF and MAC algorithms MAY be chosen from the options in CMP | The KDF and MAC algorithms MAY be chosen from the options in CMP | |||
Algorithms [RFC9481]. | Algorithms [RFC9481]. | |||
The InfoTypeAndValue transferring the KEM ciphertext uses OID id-it- | The InfoTypeAndValue transferring the KEM ciphertext uses OID id-it- | |||
KemCiphertextInfo. It contains a KemCiphertextInfo structure as | KemCiphertextInfo. It contains a KemCiphertextInfo structure, as | |||
defined in Section 5.3.19.18. | defined in Section 5.3.19.18. | |||
Note: This InfoTypeAndValue can be carried in a genm/genp message | Note: This InfoTypeAndValue can be carried in a genm/genp message | |||
body as specified in Section 5.3.19.18 or in the generalInfo field of | body, as specified in Section 5.3.19.18, or in the generalInfo field | |||
PKIHeader in messages of other types, see Section 5.1.1.5. | of PKIHeader in messages of other types (see Section 5.1.1.5). | |||
In the following, a generic message flow for MAC-based protection | In the following, a generic message flow for MAC-based protection | |||
using KEM is specified in more detail. It is assumed that Bob | using KEM is specified in more detail. It is assumed that Bob | |||
possesses the public KEM key of Alice. Alice can be the initiator of | possesses Alice's public KEM key. Alice can be the initiator of a | |||
a PKI management operation or the responder. For more detailed | PKI management operation or the responder. For more detailed | |||
figures see Appendix E. | figures, see Appendix E. | |||
Generic Message Flow: | Generic Message Flow: | |||
Step# Alice Bob | Step# Alice Bob | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
1 perform KEM Encapsulate | 1 perform KEM Encapsulate | |||
<-- KEM Ciphertext <-- | <-- KEM Ciphertext <-- | |||
2 perform KEM Decapsulate, | 2 perform KEM Decapsulate, | |||
perform key derivation, | perform key derivation, | |||
format message with | format message with | |||
MAC-based protection | MAC-based protection | |||
--> message --> | --> message --> | |||
3 perform key derivation, | 3 perform key derivation, | |||
verify MAC-based | verify MAC-based | |||
protection | protection | |||
------------------- Alice authenticated by Bob -------------------- | ------------------- Alice authenticated by Bob -------------------- | |||
Figure 2: Generic Message Flow when Alice has a KEM key pair | Figure 2: Generic Message Flow When Alice Has a KEM Key Pair | |||
1. Bob needs to possess the authentic public KEM key pk of Alice, | 1. Bob needs to possess Alice's authentic public KEM key (pk), for | |||
for instance contained in a KEM certificate that was received and | instance, contained in a KEM certificate that was received and | |||
successfully validated by Bob beforehand. | successfully validated by Bob beforehand. | |||
Bob generates a shared secret ss and the associated ciphertext ct | Bob generates a shared secret (ss) and the associated ciphertext | |||
using the KEM Encapsulate function with Alice's public KEM key | (ct) using the KEM Encapsulate function with Alice's public KEM | |||
pk. Bob MUST NOT reuse the ss and ct for other PKI management | key (pk). Bob MUST NOT reuse the ss and ct for other PKI | |||
operations. From this data, Bob produces a KemCiphertextInfo | management operations. From this data, Bob produces a | |||
structure including the KEM algorithm identifier and the | KemCiphertextInfo structure, including the KEM algorithm | |||
ciphertext ct and sends it to Alice in an InfoTypeAndValue | identifier and the ciphertext (ct) and sends it to Alice in an | |||
structure as defined in Section 5.3.19.18. | InfoTypeAndValue structure, as defined in Section 5.3.19.18. | |||
Encapsulate(pk) -> (ct, ss) | Encapsulate(pk) -> (ct, ss) | |||
2. Alice decapsulates the shared secret ss from the ciphertext ct | 2. Alice decapsulates the shared secret (ss) from the ciphertext | |||
using the KEM Decapsulate function and its private KEM key sk. | (ct) using the KEM Decapsulate function and its private KEM key | |||
(sk). | ||||
Decapsulate(ct, sk) -> (ss) | Decapsulate(ct, sk) -> (ss) | |||
If the decapsulation operation outputs an error, any failInfo | If the decapsulation operation outputs an error, any failInfo | |||
field in an error response message SHALL contain the value | field in an error response message SHALL contain the value | |||
badMessageCheck and the PKI management operation SHALL be | badMessageCheck and the PKI management operation SHALL be | |||
terminated. | terminated. | |||
Alice derives the shared secret key ssk using a KDF. The shared | Alice derives the shared secret key (ssk) using a KDF. The | |||
secret ss is used as input key material for the KDF, the value | shared secret (ss) is used as input key material for the KDF, and | |||
len is the desired output length of the KDF as required by the | the value len is the desired output length of the KDF as required | |||
MAC algorithm to be used for message protection. KDF, len, and | by the MAC algorithm to be used for message protection. KDF, | |||
MAC will be transferred to Bob in the protectionAlg | len, and MAC will be transferred to Bob in the protectionAlg | |||
KemBMParameter. The DER-encoded KemOtherInfo structure, as | KemBMParameter. The DER-encoded KemOtherInfo structure, as | |||
defined below, is used as context for the KDF. | defined below, is used as context for the KDF. | |||
KDF(ss, len, context)->(ssk) | KDF(ss, len, context)->(ssk) | |||
The shared secret key ssk is used for MAC-based protection by | The shared secret key (ssk) is used for MAC-based protection by | |||
Alice. | Alice. | |||
3. Bob derives the same shared secret key ssk using the KDF. Also | 3. Bob derives the same shared secret key (ssk) using the KDF. Also | |||
here the shared secret ss is used as input key material for the | here, the shared secret (ss) is used as input key material for | |||
KDF, the value len is the desired output length for the KDF, and | the KDF, the value len is the desired output length for the KDF, | |||
the DER-encoded KemOtherInfo structure constructed in the same | and the DER-encoded KemOtherInfo structure constructed in the | |||
way as on Alice's side is used as context for the KDF. | same way as on Alice's side is used as context for the KDF. | |||
KDF(ss, len, context)->(ssk) | KDF(ss, len, context)->(ssk) | |||
Bob uses the shared secret key ssk for verifying the MAC-based | Bob uses the shared secret key (ssk) for verifying the MAC-based | |||
protection of the message received and in this way authenticates | protection of the message received and in this way authenticates | |||
Alice. | Alice. | |||
This shared secret key ssk can be reused by Alice for MAC-based | This shared secret key (ssk) can be reused by Alice for MAC-based | |||
protection of further messages sent to Bob within the current PKI | protection of further messages sent to Bob within the current PKI | |||
management operation. | management operation. | |||
This approach employs the notation of KDF(IKM, L, info) as described | This approach employs the notation of KDF(IKM, L, info) as described | |||
in [RFC9629], Section 5 with the following changes: | in Section 5 of [RFC9629] with the following changes: | |||
* IKM is the input key material. It is the symmetric secret called | * IKM is the input key material. It is the symmetric secret called | |||
ss resulting from the key encapsulation mechanism. | "ss" resulting from the key encapsulation mechanism. | |||
* L is dependent of the MAC algorithm that is used with the shared | * L is dependent of the MAC algorithm that is used with the shared | |||
secret key for CMP message protection and is called len in this | secret key for CMP message protection and is called "len" in this | |||
document. | document. | |||
* info is an additional input to the KDF, is called context in this | * info is an additional input to the KDF, is called "context" in | |||
document, and contains the DER-encoded KemOtherInfo structure | this document, and contains the DER-encoded KemOtherInfo structure | |||
defined as: | defined as: | |||
KemOtherInfo ::= SEQUENCE { | KemOtherInfo ::= SEQUENCE { | |||
staticString PKIFreeText, | staticString PKIFreeText, | |||
transactionID OCTET STRING, | transactionID OCTET STRING, | |||
kemContext [0] OCTET STRING OPTIONAL | kemContext [0] OCTET STRING OPTIONAL | |||
} | } | |||
staticString MUST be "CMP-KEM". | staticString MUST be "CMP-KEM". | |||
transactionID MUST be the value from the message containing the | transactionID MUST be the value from the message containing the | |||
ciphertext ct in KemCiphertextInfo. | ciphertext (ct) in KemCiphertextInfo. | |||
Note: The transactionID is used to ensure domain separation of the | Note: The transactionID is used to ensure domain separation of the | |||
derived shared secret key between different PKI management | derived shared secret key between different PKI management | |||
operations. For all PKI management operations with more than one | operations. For all PKI management operations with more than one | |||
exchange the transactionID MUST be set anyway, see Section 5.1.1. | exchange, the transactionID MUST be set anyway (see | |||
In case Bob provided a infoValue of type KemCiphertextInfo to | Section 5.1.1). In case Bob provided an infoValue of type | |||
Alice in the initial request message, see Figure 4 of Appendix E, | KemCiphertextInfo to Alice in the initial request message (see | |||
the transactionID MUST be set by Bob. | Figure 4 of Appendix E), the transactionID MUST be set by Bob. | |||
kemContext MAY contain additional algorithm specific context | kemContext MAY contain additional algorithm-specific context | |||
information. | information. | |||
* OKM is the output keying material of the KDF used for MAC-based | * OKM is the output keying material of the KDF used for MAC-based | |||
message protection of length len and is called ssk in this | message protection of length len and is called "ssk" in this | |||
document. | document. | |||
There are various ways how Alice can request, and Bob can provide the | There are various ways that Alice can request and Bob can provide the | |||
KEM ciphertext, see Appendix E for details. The KemCiphertextInfo | KEM ciphertext (see Appendix E for details). The KemCiphertextInfo | |||
can be requested using PKI general messages as described in | can be requested using PKI general messages, as described in | |||
Section 5.3.19.18. Alternatively, the generalInfo field of the | Section 5.3.19.18. Alternatively, the generalInfo field of the | |||
PKIHeader can be used to convey the same request and response | PKIHeader can be used to convey the same request and response | |||
InfoTypeAndValue structures as described in Section 5.1.1.5. The | InfoTypeAndValue structures, as described in Section 5.1.1.5. The | |||
procedure works also without Alice explicitly requesting the KEM | procedure also works without Alice explicitly requesting the KEM | |||
ciphertext in case Bob knows a KEM key of Alice beforehand and can | ciphertext in case Bob knows one of Alice's KEM keys beforehand and | |||
expect that she is ready to use it. | can expect that she is ready to use it. | |||
If both the initiator and responder in a PKI management operation | If both the initiator and responder in a PKI management operation | |||
have KEM key pairs, this procedure can be applied by both entities | have KEM key pairs, this procedure can be applied by both entities | |||
independently, establishing and using different shared secret keys | independently, establishing and using different shared secret keys | |||
for either direction. | for either direction. | |||
5.1.3.5. Multiple Protection | 5.1.3.5. Multiple Protection | |||
When receiving a protected PKI message, a PKI management entity, such | When receiving a protected PKI message, a PKI management entity, such | |||
as an RA, MAY forward that message adding its own protection. | as an RA, MAY forward that message adding its own protection. | |||
Additionally, multiple PKI messages MAY be aggregated. There are | Additionally, multiple PKI messages MAY be aggregated. There are | |||
several use cases for such messages. | several use cases for such messages. | |||
* The RA confirms having validated and authorized a message and | * The RA confirms having validated and authorized a message and | |||
forwards the original message unchanged. | forwards the original message unchanged. | |||
* A PKI management entity collects several messages that are to be | * A PKI management entity collects several messages that are to be | |||
forwarded in the same direction and forwards them in a batch. | forwarded in the same direction and forwards them in a batch. | |||
Request messages can be transferred as batch upstream (towards the | Request messages can be transferred as a batch upstream (towards | |||
CA); response or announce messages can be transferred as batch | the CA); response or announce messages can be transferred as a | |||
downstream (towards an RA but not to the EE). For instance, this | batch downstream (towards an RA but not to the EE). For instance, | |||
can be used when bridging an off-line connection between two PKI | this can be used when bridging an off-line connection between two | |||
management entities. | PKI management entities. | |||
These use cases are accomplished by nesting the messages within a new | These use cases are accomplished by nesting the messages within a new | |||
PKI message. The structure used is as follows: | PKI message. The structure used is as follows: | |||
NestedMessageContent ::= PKIMessages | NestedMessageContent ::= PKIMessages | |||
In case an RA needs to modify a request message, it MAY include the | In case an RA needs to modify a request message, it MAY include the | |||
original PKIMessage in the generalInfo field of the modified message | original PKIMessage in the generalInfo field of the modified message, | |||
as described in Section 5.1.1.3. | as described in Section 5.1.1.3. | |||
5.2. Common Data Structures | 5.2. Common Data Structures | |||
Before specifying the specific types that may be placed in a PKIBody, | Before specifying the specific types that may be placed in a PKIBody, | |||
we define some data structures that are used in more than one case. | we define some data structures that are used in more than one case. | |||
5.2.1. Requested Certificate Contents | 5.2.1. Requested Certificate Contents | |||
Various PKI management messages require that the originator of the | Various PKI management messages require that the originator of the | |||
message indicate some of the fields that are required to be present | message indicate some of the fields that are required to be present | |||
in a certificate. The CertTemplate structure allows an end entity or | in a certificate. The CertTemplate structure allows an end entity or | |||
RA to specify as much as it wishes about the certificate it requires. | RA to specify as much as it wishes about the certificate it requires. | |||
CertTemplate is identical to a Certificate, but with all fields | CertTemplate is identical to a Certificate but with all fields | |||
optional. | optional. | |||
Note: Even if the originator completely specifies the contents of a | Note: Even if the originator completely specifies the contents of a | |||
certificate it requires, a CA is free to modify fields within the | certificate it requires, a CA is free to modify fields within the | |||
certificate actually issued. If the modified certificate is | certificate actually issued. If the modified certificate is | |||
unacceptable to the requester, the requester MUST send back a | unacceptable to the requester, the requester MUST send back a | |||
certConf message that either does not include this certificate (via a | certConf message that either does not include this certificate (via a | |||
CertHash), or does include this certificate (via a CertHash) along | CertHash) or does include this certificate (via a CertHash) along | |||
with a status of "rejected". See Section 5.3.18 for the definition | with a status of "rejected". See Section 5.3.18 for the definition | |||
and use of CertHash and the certConf message. | and use of CertHash and the certConf message. | |||
Note: Before requesting a new certificate, an end entity can request | Note: Before requesting a new certificate, an end entity can request | |||
a certTemplate structure as a kind of certificate request blueprint, | a certTemplate structure as a kind of certificate request blueprint | |||
in order to learn which data the CA expects to be present in the | in order to learn which data the CA expects to be present in the | |||
certificate request, see Section 5.3.19.16. | certificate request (see Section 5.3.19.16). | |||
See CRMF [RFC4211] for CertTemplate syntax. | See CRMF [RFC4211] for CertTemplate syntax. | |||
If certTemplate is an empty SEQUENCE (i.e., all fields omitted), then | If certTemplate is an empty SEQUENCE (i.e., all fields omitted), then | |||
the controls field in the CertRequest structure MAY contain the id- | the controls field in the CertRequest structure MAY contain the id- | |||
regCtrl-altCertTemplate control, specifying a template for a | regCtrl-altCertTemplate control, specifying a template for a | |||
certificate other than an X.509v3 public-key certificate. | certificate other than an X.509v3 public-key certificate. | |||
Conversely, if certTemplate is not empty (i.e., at least one field is | Conversely, if certTemplate is not empty (i.e., at least one field is | |||
present), then controls MUST NOT contain id-regCtrl-altCertTemplate. | present), then controls MUST NOT contain id-regCtrl-altCertTemplate. | |||
The new control is defined as follows: | The new control is defined as follows: | |||
id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { iso(1) | id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= { iso(1) | |||
identified-organization(3) dod(6) internet(1) security(5) | identified-organization(3) dod(6) internet(1) security(5) | |||
mechanisms(5) pkix(7) pkip(5) regCtrl(1) 7} | mechanisms(5) pkix(7) pkip(5) regCtrl(1) 7} | |||
AltCertTemplate ::= AttributeTypeAndValue | AltCertTemplate ::= AttributeTypeAndValue | |||
See also [RFC4212] for more details on how to manage certificates in | Also see [RFC4212] for more details on how to manage certificates in | |||
alternative formats using CRMF [RFC4211] syntax. | alternative formats using CRMF [RFC4211] syntax. | |||
5.2.2. Encrypted Values | 5.2.2. Encrypted Values | |||
When encrypted data like a private key, certificate, POP challenge, | When encrypted data like a private key, certificate, POP challenge, | |||
or revocation passphrase is sent in PKI messages it is RECOMMENDED to | or revocation passphrase is sent in PKI messages, it is RECOMMENDED | |||
use the EnvelopedData structure. In some cases this is accomplished | to use the EnvelopedData structure. In some cases, this is | |||
by using the EncryptedKey data structure instead of EncryptedValue. | accomplished by using the EncryptedKey data structure instead of | |||
EncryptedValue. | ||||
EncryptedKey ::= CHOICE { | EncryptedKey ::= CHOICE { | |||
encryptedValue EncryptedValue, -- deprecated | encryptedValue EncryptedValue, -- deprecated | |||
envelopedData [0] EnvelopedData } | envelopedData [0] EnvelopedData } | |||
See Certificate Request Message Format (CRMF) [RFC4211] for | See Certificate Request Message Format (CRMF) [RFC4211] for | |||
EncryptedKey and EncryptedValue syntax and Cryptographic Message | EncryptedKey and EncryptedValue syntax and Cryptographic Message | |||
Syntax (CMS) [RFC5652] for EnvelopedData syntax. Using the | Syntax (CMS) [RFC5652] for EnvelopedData syntax. Using the | |||
EncryptedKey data structure offers the choice to either use | EncryptedKey data structure offers the choice to either use | |||
EncryptedValue (for backward compatibility only) or EnvelopedData. | EncryptedValue (for backward compatibility only) or EnvelopedData. | |||
skipping to change at page 48, line 47 ¶ | skipping to change at line 2163 ¶ | |||
Note: The EncryptedKey structure defined in CRMF [RFC4211] is used | Note: The EncryptedKey structure defined in CRMF [RFC4211] is used | |||
here, which makes the update backward compatible. Using the new | here, which makes the update backward compatible. Using the new | |||
syntax with the untagged default choice EncryptedValue is bits-on- | syntax with the untagged default choice EncryptedValue is bits-on- | |||
the-wire compatible with the old syntax. | the-wire compatible with the old syntax. | |||
To indicate support for EnvelopedData, the pvno cmp2021 has been | To indicate support for EnvelopedData, the pvno cmp2021 has been | |||
introduced. Details on the usage of the protocol version number | introduced. Details on the usage of the protocol version number | |||
(pvno) are described in Section 7. | (pvno) are described in Section 7. | |||
The EnvelopedData structure is RECOMMENDED to use in CMP to transport | The EnvelopedData structure is RECOMMENDED to be used in CMP to | |||
a private key, certificate, POP challenge, or revocation passphrase | transport a private key, certificate, POP challenge, or revocation | |||
in encrypted form as follows: | passphrase in encrypted form as follows: | |||
* It contains only one RecipientInfo structure because the content | * It contains only one RecipientInfo structure because the content | |||
is encrypted only for one recipient. | is encrypted only for one recipient. | |||
* It may contain a private key in the AsymmetricKeyPackage structure | * It may contain a private key in the AsymmetricKeyPackage structure | |||
(which is placed in the encryptedContentInfo field), as defined in | (which is placed in the encryptedContentInfo field), as defined in | |||
[RFC5958], that is wrapped in a SignedData structure, as specified | [RFC5958], that is wrapped in a SignedData structure, as specified | |||
in Section 5 of [RFC5652] and [RFC8933], signed by the Key | in Section 5 of [RFC5652] and [RFC8933], signed by the Key | |||
Generation Authority or CA. | Generation Authority or CA. | |||
skipping to change at page 49, line 48 ¶ | skipping to change at line 2213 ¶ | |||
* recipient's certificate with an algorithm identifier and a public | * recipient's certificate with an algorithm identifier and a public | |||
key that supports key encapsulation mechanism and where any given | key that supports key encapsulation mechanism and where any given | |||
key usage extension allows keyEncipherment: The content-encryption | key usage extension allows keyEncipherment: The content-encryption | |||
key will be protected using the key management technique for KEM | key will be protected using the key management technique for KEM | |||
keys, as specified in [RFC9629]. | keys, as specified in [RFC9629]. | |||
Note: There are cases where the algorithm identifier, the type of the | Note: There are cases where the algorithm identifier, the type of the | |||
public key, and the key usage extension will not be sufficient to | public key, and the key usage extension will not be sufficient to | |||
decide on the key management technique to use, e.g., when | decide on the key management technique to use, e.g., when | |||
rsaEncryption is the algorithm identifier. In such cases it is a | rsaEncryption is the algorithm identifier. In such cases, it is a | |||
matter of local policy to decide. | matter of local policy to decide. | |||
5.2.3. Status Codes and Failure Information for PKI Messages | 5.2.3. Status Codes and Failure Information for PKI Messages | |||
All response messages will include some status information. The | All response messages will include some status information. The | |||
following values are defined. | following values are defined. | |||
PKIStatus ::= INTEGER { | PKIStatus ::= INTEGER { | |||
accepted (0), | accepted (0), | |||
grantedWithMods (1), | grantedWithMods (1), | |||
skipping to change at page 52, line 5 ¶ | skipping to change at line 2277 ¶ | |||
failInfo PKIFailureInfo OPTIONAL | failInfo PKIFailureInfo OPTIONAL | |||
} | } | |||
5.2.4. Certificate Identification | 5.2.4. Certificate Identification | |||
In order to identify particular certificates, the CertId data | In order to identify particular certificates, the CertId data | |||
structure is used. | structure is used. | |||
See [RFC4211] for CertId syntax. | See [RFC4211] for CertId syntax. | |||
5.2.5. Out-of-band root CA Public Key | 5.2.5. Out-of-Band Root CA Public Key | |||
Each root CA that provides a self-signed certificate must be able to | Each root CA that provides a self-signed certificate must be able to | |||
publish its current public key via some "out-of-band" means or | publish its current public key via some "out-of-band" means or | |||
together with the respective link certificate using an online | together with the respective link certificate using an online | |||
mechanism. While such mechanisms are beyond the scope of this | mechanism. While such mechanisms are beyond the scope of this | |||
document, we define data structures that can support such mechanisms. | document, we define data structures that can support such mechanisms. | |||
There are generally two methods available: Either the CA directly | There are generally two methods available: Either the CA directly | |||
publishes its self-signed certificate, or this information is | publishes its self-signed certificate, or this information is | |||
available via the directory (or equivalent) and the CA publishes a | available via the directory (or equivalent) and the CA publishes a | |||
skipping to change at page 52, line 34 ¶ | skipping to change at line 2306 ¶ | |||
The fields within this certificate are restricted as follows: | The fields within this certificate are restricted as follows: | |||
* The certificate MUST be self-signed (i.e., the signature must be | * The certificate MUST be self-signed (i.e., the signature must be | |||
verifiable using the SubjectPublicKeyInfo field); | verifiable using the SubjectPublicKeyInfo field); | |||
* The subject and issuer fields MUST be identical; | * The subject and issuer fields MUST be identical; | |||
* If the subject field contains a "NULL-DN", then both | * If the subject field contains a "NULL-DN", then both | |||
subjectAltNames and issuerAltNames extensions MUST be present and | subjectAltNames and issuerAltNames extensions MUST be present and | |||
have exactly the same value; | have exactly the same value; and | |||
* The values of all other extensions must be suitable for a self- | * The values of all other extensions must be suitable for a self- | |||
signed certificate (e.g., key identifiers for subject and issuer | signed certificate (e.g., key identifiers for the subject and | |||
must be the same). | issuer must be the same). | |||
OOBCertHash ::= SEQUENCE { | OOBCertHash ::= SEQUENCE { | |||
hashAlg [0] AlgorithmIdentifier OPTIONAL, | hashAlg [0] AlgorithmIdentifier OPTIONAL, | |||
certId [1] CertId OPTIONAL, | certId [1] CertId OPTIONAL, | |||
hashVal BIT STRING | hashVal BIT STRING | |||
} | } | |||
The intention of the hash value is that anyone who has securely | The intention of the hash value is that anyone who has securely | |||
received the hash value (via the out-of-band means) can verify a | received the hash value (via the out-of-band means) can verify a | |||
self-signed certificate for that CA. | self-signed certificate for that CA. | |||
skipping to change at page 53, line 22 ¶ | skipping to change at line 2339 ¶ | |||
5.2.7. Publication Information | 5.2.7. Publication Information | |||
Requesters may indicate that they wish the PKI to publish a | Requesters may indicate that they wish the PKI to publish a | |||
certificate using the PKIPublicationInfo structure. | certificate using the PKIPublicationInfo structure. | |||
See [RFC4211] for PKIPublicationInfo syntax. | See [RFC4211] for PKIPublicationInfo syntax. | |||
5.2.8. Proof-of-Possession Structures | 5.2.8. Proof-of-Possession Structures | |||
The proof-of-possession structure used is indicated in the popo field | The proof-of-possession structure used is indicated in the popo field | |||
of type ProofOfPossession in the CertReqMsg sequence, see Section 4 | of type ProofOfPossession in the CertReqMsg sequence (see Section 4 | |||
of [RFC4211]. | of [RFC4211]). | |||
ProofOfPossession ::= CHOICE { | ProofOfPossession ::= CHOICE { | |||
raVerified [0] NULL, | raVerified [0] NULL, | |||
signature [1] POPOSigningKey, | signature [1] POPOSigningKey, | |||
keyEncipherment [2] POPOPrivKey, | keyEncipherment [2] POPOPrivKey, | |||
keyAgreement [3] POPOPrivKey | keyAgreement [3] POPOPrivKey | |||
} | } | |||
5.2.8.1. raVerified | 5.2.8.1. raVerified | |||
An EE MUST NOT use raVerified. If an RA performs changes to a | An EE MUST NOT use raVerified. If an RA performs changes to a | |||
certification request breaking the provided proof-of-possession | certification request breaking the provided proof-of-possession | |||
(POP), or if the RA requests a certificate on behalf of an EE and | (POP), or if the RA requests a certificate on behalf of an EE and | |||
cannot provide the POP itself, the RA MUST use raVerified. | cannot provide the POP itself, the RA MUST use raVerified. | |||
Otherwise, it SHOULD NOT use raVerified. | Otherwise, it SHOULD NOT use raVerified. | |||
When introducing raVerified, the RA MUST check the existing POP, or | When introducing raVerified, the RA MUST check the existing POP, or | |||
it MUST ensure by other means that the EE is the holder of the | it MUST ensure by other means that the EE is the holder of the | |||
private key. The RA MAY provide the original message containing the | private key. The RA MAY provide the original message containing the | |||
POP in the generalInfo field using the id-it-origPKIMessage, see | POP in the generalInfo field using the id-it-origPKIMessage (see | |||
Section 5.1.1.3, enabling the CA to verify it. | Section 5.1.1.3) enabling the CA to verify it. | |||
5.2.8.2. POPOSigningKey Structure | 5.2.8.2. POPOSigningKey Structure | |||
If the certification request is for a key pair that supports signing | If the certification request is for a key pair that supports signing | |||
(i.e., a request for a verification certificate), then the proof-of- | (i.e., a request for a verification certificate), then the proof-of- | |||
possession of the private key is demonstrated through use of the | possession of the private key is demonstrated through use of the | |||
POPOSigningKey structure, for details see Section 4.1 of [RFC4211]. | POPOSigningKey structure; for details, see Section 4.1 of [RFC4211]. | |||
POPOSigningKey ::= SEQUENCE { | POPOSigningKey ::= SEQUENCE { | |||
poposkInput [0] POPOSigningKeyInput OPTIONAL, | poposkInput [0] POPOSigningKeyInput OPTIONAL, | |||
algorithmIdentifier AlgorithmIdentifier, | algorithmIdentifier AlgorithmIdentifier, | |||
signature BIT STRING | signature BIT STRING | |||
} | } | |||
POPOSigningKeyInput ::= SEQUENCE { | POPOSigningKeyInput ::= SEQUENCE { | |||
authInfo CHOICE { | authInfo CHOICE { | |||
sender [0] GeneralName, | sender [0] GeneralName, | |||
skipping to change at page 54, line 25 ¶ | skipping to change at line 2390 ¶ | |||
}, | }, | |||
publicKey SubjectPublicKeyInfo | publicKey SubjectPublicKeyInfo | |||
} | } | |||
PKMACValue ::= SEQUENCE { | PKMACValue ::= SEQUENCE { | |||
algId AlgorithmIdentifier, | algId AlgorithmIdentifier, | |||
value BIT STRING | value BIT STRING | |||
} | } | |||
Note: For the purposes of this specification, the ASN.1 comment given | Note: For the purposes of this specification, the ASN.1 comment given | |||
in Appendix C of [RFC4211] pertains not only to certTemplate, but | in Appendix C of [RFC4211] pertains not only to certTemplate but also | |||
also to the altCertTemplate control as defined in Section 5.2.1. | to the altCertTemplate control, as defined in Section 5.2.1. | |||
If certTemplate (or the altCertTemplate control) contains the subject | If certTemplate (or the altCertTemplate control) contains the subject | |||
and publicKey values, then poposkInput MUST be omitted and the | and publicKey values, then poposkInput MUST be omitted and the | |||
signature MUST be computed on the DER-encoded value of certReq field | signature MUST be computed on the DER-encoded value of the certReq | |||
of the CertReqMsg (or the DER-encoded value of AltCertTemplate). If | field of the CertReqMsg (or the DER-encoded value of | |||
certTemplate/altCertTemplate does not contain both the subject and | AltCertTemplate). If certTemplate/altCertTemplate does not contain | |||
public key values (i.e., if it contains only one of these, or | both the subject and public key values (i.e., if it contains only one | |||
neither), then poposkInput MUST be present and the signature MUST be | of these or neither), then poposkInput MUST be present and the | |||
computed on the DER-encoded value of poposkInput (i.e., the "value" | signature MUST be computed on the DER-encoded value of poposkInput | |||
OCTETs of the POPOSigningKeyInput DER). | (i.e., the "value" OCTETs of the POPOSigningKeyInput DER). | |||
In the special case that the CA/RA has a DH certificate that is known | In the special case that the CA/RA has a DH certificate that is known | |||
to the EE and the certification request is for a key agreement key | to the EE and the certification request is for a key agreement key | |||
pair, the EE can also use the POPOSigningKey structure (where the | pair, the EE can also use the POPOSigningKey structure (where the | |||
algorithmIdentifier field is DHBasedMAC and the signature field is | algorithmIdentifier field is DHBasedMAC and the signature field is | |||
the MAC) for demonstrating POP. | the MAC) for demonstrating POP. | |||
5.2.8.3. POPOPrivKey Structure | 5.2.8.3. POPOPrivKey Structure | |||
If the certification request is for a key pair that does not support | If the certification request is for a key pair that does not support | |||
signing (i.e., a request for an encryption or key agreement | signing (i.e., a request for an encryption or key agreement | |||
certificate), then the proof-of-possession of the private key is | certificate), then the proof-of-possession of the private key is | |||
demonstrated through use of the POPOPrivKey structure in one of the | demonstrated through use of the POPOPrivKey structure in one of the | |||
following three ways, for details see Section 4.2 and 4.3 of | following three ways; for details see Sections 4.2 and 4.3 in | |||
[RFC4211]. | [RFC4211]. | |||
POPOPrivKey ::= CHOICE { | POPOPrivKey ::= CHOICE { | |||
thisMessage [0] BIT STRING, -- deprecated | thisMessage [0] BIT STRING, -- deprecated | |||
subsequentMessage [1] SubsequentMessage, | subsequentMessage [1] SubsequentMessage, | |||
dhMAC [2] BIT STRING, -- deprecated | dhMAC [2] BIT STRING, -- deprecated | |||
agreeMAC [3] PKMACValue, | agreeMAC [3] PKMACValue, | |||
encryptedKey [4] EnvelopedData | encryptedKey [4] EnvelopedData | |||
} | } | |||
skipping to change at page 55, line 33 ¶ | skipping to change at line 2446 ¶ | |||
This method mentioned previously in Section 4.3 demonstrates proof- | This method mentioned previously in Section 4.3 demonstrates proof- | |||
of-possession of the private key by including the encrypted private | of-possession of the private key by including the encrypted private | |||
key in the CertRequest in the POPOPrivKey structure or in the | key in the CertRequest in the POPOPrivKey structure or in the | |||
PKIArchiveOptions control structure. This method SHALL only be used | PKIArchiveOptions control structure. This method SHALL only be used | |||
if archival of the private key is desired. | if archival of the private key is desired. | |||
For a certification request message indicating cmp2021(3) in the pvno | For a certification request message indicating cmp2021(3) in the pvno | |||
field of the PKIHeader, the encrypted private key MUST be transferred | field of the PKIHeader, the encrypted private key MUST be transferred | |||
in the encryptedKey choice of POPOPrivKey (or within the | in the encryptedKey choice of POPOPrivKey (or within the | |||
PKIArchiveOptions control) in a CMS EnvelopedData structure as | PKIArchiveOptions control) in a CMS EnvelopedData structure, as | |||
defined in Section 5.2.2. | defined in Section 5.2.2. | |||
Note: The thisMessage choice has been deprecated in favor of | Note: The thisMessage choice has been deprecated in favor of | |||
encryptedKey. When using cmp2000(2) in the certification request | encryptedKey. When using cmp2000(2) in the certification request | |||
message header for backward compatibility, the thisMessage choice of | message header for backward compatibility, the thisMessage choice of | |||
POPOPrivKey is used containing the encrypted private key in an | POPOPrivKey is used containing the encrypted private key in an | |||
EncryptedValue structure wrapped in a BIT STRING. This allows the | EncryptedValue structure wrapped in a BIT STRING. This allows the | |||
necessary conveyance and protection of the private key while | necessary conveyance and protection of the private key while | |||
maintaining bits-on-the-wire compatibility with [RFC4211]. | maintaining bits-on-the-wire compatibility with [RFC4211]. | |||
5.2.8.3.2. Indirect Method - Encrypted Certificate | 5.2.8.3.2. Indirect Method - Encrypted Certificate | |||
The indirect method mentioned previously in Section 4.3 demonstrates | The indirect method mentioned previously in Section 4.3 demonstrates | |||
proof-of-possession of the private key by having the CA return the | proof-of-possession of the private key by having the CA return the | |||
requested certificate in encrypted form, see Section 5.2.2. This | requested certificate in encrypted form (see Section 5.2.2). This | |||
method is indicated in the CertRequest by requesting the encrCert | method is indicated in the CertRequest by requesting the encrCert | |||
option in the subsequentMessage choice of POPOPrivKey. | option in the subsequentMessage choice of POPOPrivKey. | |||
EE RA/CA | EE RA/CA | |||
---- req ----> | ---- req ----> | |||
<--- rep (enc cert) ----- | <--- rep (enc cert) ----- | |||
---- conf (cert hash) ----> | ---- conf (cert hash) ----> | |||
<--- ack ----- | <--- ack ----- | |||
The end entity proves knowledge of the private key to the CA by | The end entity proves knowledge of the private key to the CA by | |||
providing the correct CertHash for this certificate in the certConf | providing the correct CertHash for this certificate in the certConf | |||
message. This demonstrates POP because the EE can only compute the | message. This demonstrates POP because the EE can only compute the | |||
correct CertHash if it is able to recover the encrypted certificate, | correct CertHash if it is able to recover the encrypted certificate, | |||
and it can only recover the certificate if it is able to obtain the | and it can only recover the certificate if it is able to obtain the | |||
symmetric key using the required private key. Clearly, for this to | symmetric key using the required private key. Clearly, for this to | |||
work, the CA MUST NOT publish the certificate until the certConf | work, the CA MUST NOT publish the certificate until the certConf | |||
message arrives (when certHash is to be used to demonstrate POP). | message arrives (when certHash is to be used to demonstrate POP). | |||
See Section 5.3.18 for further details and see Section 8.11 for | See Section 5.3.18 for further details, and see Section 8.11 for | |||
security considerations regarding use of Certificate Transparency | security considerations regarding use of Certificate Transparency | |||
logs. | logs. | |||
The recipient SHOULD maintain a context of the PKI management | The recipient SHOULD maintain a context of the PKI management | |||
operation, e.g., using transactionID and certReqId, to identify the | operation, e.g., using transactionID and certReqId, to identify the | |||
private key to use when decrypting the EnvelopedData containing the | private key to use when decrypting the EnvelopedData containing the | |||
newly issued certificate. The recipient may be unable to use the | newly issued certificate. The recipient may be unable to use the | |||
RecipientInfo structure as it refers to the certificate that is still | RecipientInfo structure as it refers to the certificate that is still | |||
encrypted. The sender MUST populate the rid field as specified by | encrypted. The sender MUST populate the rid field as specified by | |||
CMS and the client MAY ignore it. | CMS, and the client MAY ignore it. | |||
5.2.8.3.3. Direct Method - Challenge-Response Protocol | 5.2.8.3.3. Direct Method - Challenge-Response Protocol | |||
The direct method mentioned previously in Section 4.3 demonstrates | The direct method mentioned previously in Section 4.3 demonstrates | |||
proof-of-possession of the private key by having the end entity | proof-of-possession of the private key by having the end entity | |||
engage in a challenge-response protocol (using the messages popdecc | engage in a challenge-response protocol (using the messages popdecc | |||
of type POPODecKeyChall and popdecr of type POPODecKeyResp; see | of type POPODecKeyChall and popdecr of type POPODecKeyResp; see | |||
below) between CertReqMessages and CertRepMessage. This method is | below) between CertReqMessages and CertRepMessage. This method is | |||
indicated in the CertRequest by requesting the challengeResp option | indicated in the CertRequest by requesting the challengeResp option | |||
in the subsequentMessage choice of POPOPrivKey. | in the subsequentMessage choice of POPOPrivKey. | |||
skipping to change at page 57, line 18 ¶ | skipping to change at line 2523 ¶ | |||
---- resp ---> | ---- resp ---> | |||
---- req' ---> | ---- req' ---> | |||
<--- rep ----- | <--- rep ----- | |||
---- conf ---> | ---- conf ---> | |||
<--- ack ----- | <--- ack ----- | |||
<--- rep ----- | <--- rep ----- | |||
---- conf ---> | ---- conf ---> | |||
<--- ack ----- | <--- ack ----- | |||
This protocol is obviously much longer than the exchange given in | This protocol is obviously much longer than the exchange given in | |||
Section 5.2.8.3.2 above, but allows a local Registration Authority to | Section 5.2.8.3.2 above but allows a local Registration Authority to | |||
be involved and has the property that the certificate itself is not | be involved and has the property that the certificate itself is not | |||
actually created until the proof-of-possession is complete. In some | actually created until the proof-of-possession is complete. In some | |||
environments, a different order of the above messages may be | environments, a different order of the above messages may be | |||
required, such as the following (this may be determined by policy): | required, such as the following (this may be determined by policy): | |||
EE RA CA | EE RA CA | |||
---- req ----> | ---- req ----> | |||
<--- chall --- | <--- chall --- | |||
---- resp ---> | ---- resp ---> | |||
---- req' ---> | ---- req' ---> | |||
<--- rep ----- | <--- rep ----- | |||
<--- rep ----- | <--- rep ----- | |||
---- conf ---> | ---- conf ---> | |||
---- conf ---> | ---- conf ---> | |||
<--- ack ----- | <--- ack ----- | |||
<--- ack ----- | <--- ack ----- | |||
The challenge-response messages for proof-of-possession of a private | The challenge-response messages for proof-of-possession of a private | |||
key are specified as follows (for decryption keys see [MvOV97], p.404 | key are specified as follows (for decryption keys, see [MvOV97], | |||
for details). This challenge-response exchange is associated with | p.404 for details). This challenge-response exchange is associated | |||
the preceding certification request message (and subsequent | with the preceding certification request message (and subsequent | |||
certification response and confirmation messages) by the | certification response and confirmation messages) by the | |||
transactionID used in the PKIHeader and by the protection applied to | transactionID used in the PKIHeader and by the protection applied to | |||
the PKIMessage. | the PKIMessage. | |||
POPODecKeyChallContent ::= SEQUENCE OF Challenge | POPODecKeyChallContent ::= SEQUENCE OF Challenge | |||
Challenge ::= SEQUENCE { | Challenge ::= SEQUENCE { | |||
owf AlgorithmIdentifier OPTIONAL, | owf AlgorithmIdentifier OPTIONAL, | |||
witness OCTET STRING, | witness OCTET STRING, | |||
challenge OCTET STRING, -- deprecated | challenge OCTET STRING, -- deprecated | |||
encryptedRand [0] EnvelopedData OPTIONAL | encryptedRand [0] EnvelopedData OPTIONAL | |||
} | } | |||
Rand ::= SEQUENCE { | Rand ::= SEQUENCE { | |||
int INTEGER, | int INTEGER, | |||
sender GeneralName | sender GeneralName | |||
} | } | |||
More details on the fields in this syntax is available in Appendix F. | More details on the fields in this syntax are available in | |||
Appendix F. | ||||
For a popdecc message indicating cmp2021(3) in the pvno field of the | For a popdecc message indicating cmp2021(3) in the pvno field of the | |||
PKIHeader, the encryption of Rand MUST be transferred in the | PKIHeader, the encryption of Rand MUST be transferred in the | |||
encryptedRand field in a CMS EnvelopedData structure as defined in | encryptedRand field in a CMS EnvelopedData structure as defined in | |||
Section 5.2.2. The challenge field MUST contain an empty OCTET | Section 5.2.2. The challenge field MUST contain an empty OCTET | |||
STRING. | STRING. | |||
The recipient SHOULD maintain a context of the PKI management | The recipient SHOULD maintain a context of the PKI management | |||
operation, e.g., using transactionID and certReqId, to identify the | operation, e.g., using transactionID and certReqId, to identify the | |||
private key to use when decrypting encryptedRand. The sender MUST | private key to use when decrypting encryptedRand. The sender MUST | |||
skipping to change at page 59, line 5 ¶ | skipping to change at line 2599 ¶ | |||
portion will fit should be used (as long as it includes at least the | portion will fit should be used (as long as it includes at least the | |||
common name, and as long as the receiver is able to deal meaningfully | common name, and as long as the receiver is able to deal meaningfully | |||
with the abbreviation). | with the abbreviation). | |||
POPODecKeyRespContent ::= SEQUENCE OF INTEGER | POPODecKeyRespContent ::= SEQUENCE OF INTEGER | |||
On receiving the popdecc message, the end entity decrypts all | On receiving the popdecc message, the end entity decrypts all | |||
included challenges and responds with a popdecr message containing | included challenges and responds with a popdecr message containing | |||
the decrypted integer values in the same order. | the decrypted integer values in the same order. | |||
5.2.8.4. Summary of PoP Options | 5.2.8.4. Summary of POP Options | |||
The text in this section provides several options with respect to POP | The text in this section provides several options with respect to POP | |||
techniques. Using "SK" for "signing key", "EK" for "encryption key", | techniques. Using "SK" for "signing key", "EK" for "encryption key", | |||
"KAK" for "key agreement key", and "KEMK" for "key encapsulation | "KAK" for "key agreement key", and "KEMK" for "key encapsulation | |||
mechanism key", the techniques may be summarized as follows: | mechanism key", the techniques may be summarized as follows: | |||
RAVerified; | RAVerified; | |||
SKPOP; | SKPOP; | |||
EKPOPThisMessage; -- deprecated | EKPOPThisMessage; -- deprecated | |||
KAKPOPThisMessage; -- deprecated | KAKPOPThisMessage; -- deprecated | |||
skipping to change at page 59, line 32 ¶ | skipping to change at line 2626 ¶ | |||
KEMKPOPEncryptedCert; | KEMKPOPEncryptedCert; | |||
EKPOPChallengeResp; | EKPOPChallengeResp; | |||
KAKPOPChallengeResp; and | KAKPOPChallengeResp; and | |||
KEMKPOPChallengeResp. | KEMKPOPChallengeResp. | |||
Given this array of options, it is natural to ask how an end entity | Given this array of options, it is natural to ask how an end entity | |||
can know what is supported by the CA/RA (i.e., which options it may | can know what is supported by the CA/RA (i.e., which options it may | |||
use when requesting certificates). The following guidelines should | use when requesting certificates). The following guidelines should | |||
clarify this situation for EE implementers. | clarify this situation for EE implementers. | |||
RAVerified: This is not an EE decision; the RA uses this if and only | * RAVerified: This is not an EE decision; the RA uses this if and | |||
if it has verified POP before forwarding the request on to the CA, so | only if it has verified POP before forwarding the request on to | |||
it is not possible for the EE to choose this technique. | the CA, so it is not possible for the EE to choose this technique. | |||
SKPOP: If the EE has a signing key pair, this is the only POP method | * SKPOP: If the EE has a signing key pair, this is the only POP | |||
specified for use in the request for a corresponding certificate. | method specified for use in the request for a corresponding | |||
certificate. | ||||
EKPOPThisMessage (deprecated), KAKPOPThisMessage (deprecated), | * EKPOPThisMessage (deprecated), KAKPOPThisMessage (deprecated), | |||
EKPOPEncryptedKey, KAKPOPEncryptedKey, KEMKPOPEncryptedKey: Whether | EKPOPEncryptedKey, KAKPOPEncryptedKey, KEMKPOPEncryptedKey: | |||
or not to give up its private key to the CA/RA is an EE decision. If | Whether or not to give up its private key to the CA/RA is an EE | |||
the EE decides to reveal its key, then these are the only POP methods | decision. If the EE decides to reveal its key, then these are the | |||
available in this specification to achieve this (and the key pair | only POP methods available in this specification to achieve this | |||
type and protocol version used will determine which of these methods | (and the key pair type and protocol version used will determine | |||
to use). The reason for deprecating EKPOPThisMessage and | which of these methods to use). The reason for deprecating | |||
KAKPOPThisMessage options has been given in Section 5.2.8.3.1. | EKPOPThisMessage and KAKPOPThisMessage options has been given in | |||
Section 5.2.8.3.1. | ||||
KAKPOPThisMessageDHMAC: The EE can only use this method if (1) the | * KAKPOPThisMessageDHMAC: The EE can only use this method if (1) the | |||
CA/RA has a DH certificate available for this purpose, and (2) the EE | CA/RA has a DH certificate available for this purpose and (2) the | |||
already has a copy of this certificate. If both these conditions | EE already has a copy of this certificate. If both these | |||
hold, then this technique is clearly supported and may be used by the | conditions hold, then this technique is clearly supported and may | |||
EE, if desired. | be used by the EE, if desired. | |||
EKPOPEncryptedCert, KAKPOPEncryptedCert, KEMKPOPEncryptedCert, | * EKPOPEncryptedCert, KAKPOPEncryptedCert, KEMKPOPEncryptedCert, | |||
EKPOPChallengeResp, KAKPOPChallengeResp, and KEMKPOPChallengeResp: | EKPOPChallengeResp, KAKPOPChallengeResp, and KEMKPOPChallengeResp: | |||
The EE picks one of these (in the subsequentMessage field) in the | The EE picks one of these (in the subsequentMessage field) in the | |||
request message, depending upon preference and key pair type. The EE | request message, depending upon preference and key pair type. The | |||
is not doing POP at this point; it is simply indicating which method | EE is not doing POP at this point; it is simply indicating which | |||
it wants to use. Therefore, if the CA/RA replies with a "badPOP" | method it wants to use. Therefore, if the CA/RA replies with a | |||
error, the EE can re-request using the other POP method chosen in | "badPOP" error, the EE can re-request using the other POP method | |||
subsequentMessage. Note, however, that this specification encourages | chosen in subsequentMessage. Note, however, that this | |||
the use of the EncryptedCert choice and, furthermore, says that the | specification encourages the use of the EncryptedCert choice and, | |||
challenge-response would typically be used when an RA is involved and | furthermore, says that the challenge-response would typically be | |||
doing POP verification. Thus, the EE should be able to make an | used when an RA is involved and doing POP verification. Thus, the | |||
intelligent decision regarding which of these POP methods to choose | EE should be able to make an intelligent decision regarding which | |||
in the request message. | of these POP methods to choose in the request message. | |||
5.2.9. GeneralizedTime | 5.2.9. GeneralizedTime | |||
GeneralizedTime is a standard ASN.1 type and SHALL be used as | GeneralizedTime is a standard ASN.1 type and SHALL be used as | |||
specified in Section 4.1.2.5.2 of [RFC5280]. | specified in Section 4.1.2.5.2 of [RFC5280]. | |||
5.3. Operation-Specific Data Structures | 5.3. Operation-Specific Data Structures | |||
5.3.1. Initialization Request | 5.3.1. Initialization Request | |||
An Initialization request message contains as the PKIBody a | An Initialization request message contains as the PKIBody a | |||
CertReqMessages data structure, which specifies the requested | CertReqMessages data structure, which specifies the requested | |||
certificate(s). Typically, SubjectPublicKeyInfo, KeyId, and Validity | certificate(s). Typically, SubjectPublicKeyInfo, KeyId, and Validity | |||
are the template fields which may be supplied for each certificate | are the template fields that may be supplied for each certificate | |||
requested (see the profiles defined in [RFC9483] Section 4.1.1, | requested (see the profiles defined in Section 4.1.1 of [RFC9483] and | |||
Appendix C.4 and Appendix D.7 for further information). This message | Appendices C.4 and D.7 for further information). This message is | |||
is intended to be used for entities when first initializing into the | intended to be used for entities when first initializing into the | |||
PKI. | PKI. | |||
See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | |||
5.3.2. Initialization Response | 5.3.2. Initialization Response | |||
An Initialization response message contains as the PKIBody a | An Initialization response message contains as the PKIBody a | |||
CertRepMessage data structure, which has for each certificate | CertRepMessage data structure, which has for each certificate | |||
requested a PKIStatusInfo field, a subject certificate, and possibly | requested a PKIStatusInfo field, a subject certificate, and possibly | |||
a private key (normally encrypted using EnvelopedData, see [RFC9483] | a private key (normally encrypted using EnvelopedData; see | |||
Section 4.1.6 for further information). | Section 4.1.6 of [RFC9483] for further information). | |||
See Section 5.3.4 for CertRepMessage syntax. Note that if the PKI | See Section 5.3.4 for CertRepMessage syntax. Note that if the PKI | |||
Message Protection is "shared secret information" (see | message protection is "shared secret information" (see | |||
Section 5.1.3.1), then any certificate transported in the caPubs | Section 5.1.3.1), then any certificate transported in the caPubs | |||
field may be directly trusted as a root CA certificate by the | field may be directly trusted as a root CA certificate by the | |||
initiator. | initiator. | |||
5.3.3. Certification Request | 5.3.3. Certification Request | |||
A Certification request message contains as the PKIBody a | A Certification request message contains as the PKIBody a | |||
CertReqMessages data structure, which specifies the requested | CertReqMessages data structure, which specifies the requested | |||
certificates (see the profiles defined in [RFC9483] Section 4.1.2 and | certificates (see the profiles defined in Section 4.1.2 of [RFC9483] | |||
Appendix C.2 for further information). This message is intended to | and Appendix C.2 for further information). This message is intended | |||
be used for existing PKI entities who wish to obtain additional | to be used for existing PKI entities who wish to obtain additional | |||
certificates. | certificates. | |||
See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | |||
Alternatively, the PKIBody MAY be a CertificationRequest (this | Alternatively, the PKIBody MAY be a CertificationRequest (this | |||
structure is fully specified by the ASN.1 structure | structure is fully specified by the ASN.1 structure | |||
CertificationRequest given in [RFC2986], see the profiles defined in | CertificationRequest given in [RFC2986]; see the profiles defined in | |||
[RFC9483] Section 4.1.4 for further information). This structure may | Section 4.1.4 of [RFC9483] for further information). This structure | |||
be required for certificate requests for signing key pairs when | may be required for certificate requests for signing key pairs when | |||
interoperation with legacy systems is desired, but its use is | interoperation with legacy systems is desired, but its use is | |||
strongly discouraged whenever not absolutely necessary. | strongly discouraged whenever not absolutely necessary. | |||
5.3.4. Certification Response | 5.3.4. Certification Response | |||
A Certification response message contains as the PKIBody a | A Certification response message contains as the PKIBody a | |||
CertRepMessage data structure, which has a status value for each | CertRepMessage data structure, which has a status value for each | |||
certificate requested, and optionally has a CA public key, failure | certificate requested and optionally has a CA public key, failure | |||
information, a subject certificate, and an encrypted private key. | information, a subject certificate, and an encrypted private key. | |||
CertRepMessage ::= SEQUENCE { | CertRepMessage ::= SEQUENCE { | |||
caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate | |||
OPTIONAL, | OPTIONAL, | |||
response SEQUENCE OF CertResponse | response SEQUENCE OF CertResponse | |||
} | } | |||
CertResponse ::= SEQUENCE { | CertResponse ::= SEQUENCE { | |||
certReqId INTEGER, | certReqId INTEGER, | |||
skipping to change at page 62, line 33 ¶ | skipping to change at line 2752 ¶ | |||
-- See [RFC4211] for comments on encoding. | -- See [RFC4211] for comments on encoding. | |||
publicationInfo [1] PKIPublicationInfo OPTIONAL | publicationInfo [1] PKIPublicationInfo OPTIONAL | |||
} | } | |||
CertOrEncCert ::= CHOICE { | CertOrEncCert ::= CHOICE { | |||
certificate [0] CMPCertificate, | certificate [0] CMPCertificate, | |||
encryptedCert [1] EncryptedKey | encryptedCert [1] EncryptedKey | |||
} | } | |||
A p10cr message contains exactly one CertificationRequestInfo data | A p10cr message contains exactly one CertificationRequestInfo data | |||
structure, as specified in PKCS#10 [RFC2986], but no certReqId. | structure, as specified in PKCS #10 [RFC2986], but no certReqId. | |||
Therefore, the certReqId in the corresponding Certification Response | Therefore, the certReqId in the corresponding Certification Response | |||
(cp) message MUST be set to -1. | (cp) message MUST be set to -1. | |||
Only one of the failInfo (in PKIStatusInfo) and certificate (in | Only one of the failInfo (in PKIStatusInfo) and certificate (in | |||
CertifiedKeyPair) fields can be present in each CertResponse | CertifiedKeyPair) fields can be present in each CertResponse | |||
(depending on the status). For some status values (e.g., waiting), | (depending on the status). For some status values (e.g., waiting), | |||
neither of the optional fields will be present. | neither of the optional fields will be present. | |||
Given an EncryptedCert and the relevant decryption key, the | Given an EncryptedCert and the relevant decryption key, the | |||
certificate may be obtained. The purpose of this is to allow a CA to | certificate may be obtained. The purpose of this is to allow a CA to | |||
return the value of a certificate, but with the constraint that only | return the value of a certificate but with the constraint that only | |||
the intended recipient can obtain the actual certificate. The | the intended recipient can obtain the actual certificate. The | |||
benefit of this approach is that a CA may reply with a certificate | benefit of this approach is that a CA may reply with a certificate | |||
even in the absence of a proof that the requester is the end entity | even in the absence of proof that the requester is the end entity | |||
that can use the relevant private key (note that the proof is not | that can use the relevant private key (note that the proof is not | |||
obtained until the certConf message is received by the CA). Thus, | obtained until the certConf message is received by the CA). Thus, | |||
the CA will not have to revoke that certificate in the event that | the CA will not have to revoke that certificate in the event that | |||
something goes wrong with the proof-of-possession (but MAY do so | something goes wrong with the proof-of-possession (but MAY do so | |||
anyway, depending upon policy). | anyway, depending upon policy). | |||
The use of EncryptedKey is described in Section 5.2.2. | The use of EncryptedKey is described in Section 5.2.2. | |||
Note: To indicate support for EnvelopedData, the pvno cmp2021 has | Note: To indicate support for EnvelopedData, the pvno cmp2021 has | |||
been introduced. Details on the usage of different protocol version | been introduced. Details on the usage of different protocol version | |||
numbers (pvno) are described in Section 7. | numbers (pvnos) are described in Section 7. | |||
5.3.5. Key Update Request Content | 5.3.5. Key Update Request Content | |||
For key update requests the CertReqMessages syntax is used. | For key update requests, the CertReqMessages syntax is used. | |||
Typically, SubjectPublicKeyInfo, KeyId, and Validity are the template | Typically, SubjectPublicKeyInfo, KeyId, and Validity are the template | |||
fields that may be supplied for each key to be updated (see the | fields that may be supplied for each key to be updated (see the | |||
profiles defined in [RFC9483] Section 4.1.3 and Appendix C.6 for | profiles defined in Section 4.1.3 of [RFC9483] and Appendix C.6 for | |||
further information). This message is intended to be used to request | further information). This message is intended to be used to request | |||
updates to existing (non-revoked and non-expired) certificates | updates to existing (non-revoked and non-expired) certificates | |||
(therefore, it is sometimes referred to as a "Certificate Update" | (therefore, it is sometimes referred to as a "Certificate Update" | |||
operation). An update is a replacement certificate containing either | operation). An update is a replacement certificate containing either | |||
a new subject public key or the current subject public key (although | a new subject public key or the current subject public key (although | |||
the latter practice may not be appropriate for some environments). | the latter practice may not be appropriate for some environments). | |||
See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | |||
5.3.6. Key Update Response Content | 5.3.6. Key Update Response Content | |||
For key update responses, the CertRepMessage syntax is used. The | For key update responses, the CertRepMessage syntax is used. The | |||
response is identical to the initialization response. | response is identical to the initialization response. | |||
See Section 5.3.4 for CertRepMessage syntax. | See Section 5.3.4 for CertRepMessage syntax. | |||
5.3.7. Key Recovery Request Content | 5.3.7. Key Recovery Request Content | |||
For key recovery requests the syntax used is identical to the | For key recovery requests, the syntax used is identical to the | |||
initialization request CertReqMessages. Typically, | initialization request CertReqMessages. Typically, | |||
SubjectPublicKeyInfo and KeyId are the template fields that may be | SubjectPublicKeyInfo and KeyId are the template fields that may be | |||
used to supply a signature public key for which a certificate is | used to supply a signature public key for which a certificate is | |||
required. | required. | |||
See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. Note | See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. Note | |||
that if a key history is required, the requester must supply a | that if a key history is required, the requester must supply a | |||
Protocol Encryption Key control in the request message. | Protocol Encryption Key control in the request message. | |||
5.3.8. Key Recovery Response Content | 5.3.8. Key Recovery Response Content | |||
For key recovery responses, the following syntax is used. For some | For key recovery responses, the following syntax is used. For some | |||
status values (e.g., waiting) none of the optional fields will be | status values (e.g., waiting), none of the optional fields will be | |||
present. | present. | |||
KeyRecRepContent ::= SEQUENCE { | KeyRecRepContent ::= SEQUENCE { | |||
status PKIStatusInfo, | status PKIStatusInfo, | |||
newSigCert [0] Certificate OPTIONAL, | newSigCert [0] Certificate OPTIONAL, | |||
caCerts [1] SEQUENCE SIZE (1..MAX) OF | caCerts [1] SEQUENCE SIZE (1..MAX) OF | |||
Certificate OPTIONAL, | Certificate OPTIONAL, | |||
keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | keyPairHist [2] SEQUENCE SIZE (1..MAX) OF | |||
CertifiedKeyPair OPTIONAL | CertifiedKeyPair OPTIONAL | |||
} | } | |||
5.3.9. Revocation Request Content | 5.3.9. Revocation Request Content | |||
When requesting revocation of a certificate (or several | When requesting revocation of a certificate (or several | |||
certificates), the following data structure is used (see the profiles | certificates), the following data structure is used (see the profiles | |||
defined in [RFC9483] Section 4.2 for further information). The name | defined in Section 4.2 of [RFC9483] for further information). The | |||
of the requester is present in the PKIHeader structure. | name of the requester is present in the PKIHeader structure. | |||
RevReqContent ::= SEQUENCE OF RevDetails | RevReqContent ::= SEQUENCE OF RevDetails | |||
RevDetails ::= SEQUENCE { | RevDetails ::= SEQUENCE { | |||
certDetails CertTemplate, | certDetails CertTemplate, | |||
crlEntryDetails Extensions OPTIONAL | crlEntryDetails Extensions OPTIONAL | |||
} | } | |||
5.3.10. Revocation Response Content | 5.3.10. Revocation Response Content | |||
skipping to change at page 64, line 42 ¶ | skipping to change at line 2856 ¶ | |||
separate revocation announcement message MAY be sent to the subject | separate revocation announcement message MAY be sent to the subject | |||
of the certificate for which revocation was requested.) | of the certificate for which revocation was requested.) | |||
RevRepContent ::= SEQUENCE { | RevRepContent ::= SEQUENCE { | |||
status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, | |||
revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, | revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, | |||
crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList | crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList | |||
OPTIONAL | OPTIONAL | |||
} | } | |||
5.3.11. Cross Certification Request Content | 5.3.11. Cross-Certification Request Content | |||
Cross certification requests use the same syntax (CertReqMessages) as | Cross-certification requests use the same syntax (CertReqMessages) as | |||
normal certification requests, with the restriction that the key pair | normal certification requests, with the restriction that the key pair | |||
MUST have been generated by the requesting CA and the private key | MUST have been generated by the requesting CA and the private key | |||
MUST NOT be sent to the responding CA (see the profiles defined in | MUST NOT be sent to the responding CA (see the profiles defined in | |||
Appendix D.6 for further information). This request MAY also be used | Appendix D.6 for further information). This request MAY also be used | |||
by subordinate CAs to get their certificates signed by the parent CA. | by subordinate CAs to get their certificates signed by the parent CA. | |||
See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | See Section 5.2.1 and [RFC4211] for CertReqMessages syntax. | |||
5.3.12. Cross Certification Response Content | 5.3.12. Cross-Certification Response Content | |||
Cross certification responses use the same syntax (CertRepMessage) as | Cross-certification responses use the same syntax (CertRepMessage) as | |||
normal certification responses, with the restriction that no | normal certification responses, with the restriction that no | |||
encrypted private key can be sent. | encrypted private key can be sent. | |||
See Section 5.3.4 for CertRepMessage syntax. | See Section 5.3.4 for CertRepMessage syntax. | |||
5.3.13. CA Key Update Announcement Content | 5.3.13. CA Key Update Announcement Content | |||
When a CA updates its own key pair, the following data structure MAY | When a CA updates its own key pair, the following data structure MAY | |||
be used to announce this event. | be used to announce this event. | |||
skipping to change at page 66, line 23 ¶ | skipping to change at line 2934 ¶ | |||
A CA MAY use such an announcement to warn (or notify) a subject that | A CA MAY use such an announcement to warn (or notify) a subject that | |||
its certificate is about to be (or has been) revoked. This would | its certificate is about to be (or has been) revoked. This would | |||
typically be used where the request for revocation did not come from | typically be used where the request for revocation did not come from | |||
the subject concerned. | the subject concerned. | |||
The willBeRevokedAt field contains the time at which a new entry will | The willBeRevokedAt field contains the time at which a new entry will | |||
be added to the relevant CRLs. | be added to the relevant CRLs. | |||
5.3.16. CRL Announcement | 5.3.16. CRL Announcement | |||
When a CA issues a new CRL (or set of CRLs) the following data | When a CA issues a new CRL (or set of CRLs), the following data | |||
structure MAY be used to announce this event. | structure MAY be used to announce this event. | |||
CRLAnnContent ::= SEQUENCE OF CertificateList | CRLAnnContent ::= SEQUENCE OF CertificateList | |||
5.3.17. PKI Confirmation Content | 5.3.17. PKI Confirmation Content | |||
This data structure is used in the protocol exchange as the final | This data structure is used in the protocol exchange as the final | |||
PKIMessage. Its content is the same in all cases -- actually there | PKIMessage. Its content is the same in all cases -- actually, there | |||
is no content since the PKIHeader carries all the required | is no content since the PKIHeader carries all the required | |||
information. | information. | |||
PKIConfirmContent ::= NULL | PKIConfirmContent ::= NULL | |||
Use of this message for certificate confirmation is NOT RECOMMENDED; | Use of this message for certificate confirmation is NOT RECOMMENDED; | |||
certConf SHOULD be used instead. Upon receiving a PKIConfirm for a | certConf SHOULD be used instead. Upon receiving a PKIConfirm for a | |||
certificate response, the recipient MAY treat it as a certConf with | certificate response, the recipient MAY treat it as a certConf with | |||
all certificates being accepted. | all certificates being accepted. | |||
skipping to change at page 67, line 19 ¶ | skipping to change at line 2972 ¶ | |||
certReqId INTEGER, | certReqId INTEGER, | |||
statusInfo PKIStatusInfo OPTIONAL, | statusInfo PKIStatusInfo OPTIONAL, | |||
hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | |||
OPTIONAL | OPTIONAL | |||
} | } | |||
The hashAlg field SHOULD be used only in exceptional cases where the | The hashAlg field SHOULD be used only in exceptional cases where the | |||
signatureAlgorithm of the certificate to be confirmed does not | signatureAlgorithm of the certificate to be confirmed does not | |||
specify a hash algorithm in the OID or in the parameters or no hash | specify a hash algorithm in the OID or in the parameters or no hash | |||
algorithm is specified for hashing certificates signed using the | algorithm is specified for hashing certificates signed using the | |||
signatureAlgorithm. Note that for EdDSA a hash algorithm is | signatureAlgorithm. Note that for EdDSA, a hash algorithm is | |||
specified in Section 3.3 of [RFC9481], such that the hashAlg field is | specified in Section 3.3 of [RFC9481], such that the hashAlg field is | |||
not needed for EdDSA. Otherwise, the certHash value SHALL be | not needed for EdDSA. Otherwise, the certHash value SHALL be | |||
computed using the same hash algorithm as used to create and verify | computed using the same hash algorithm as used to create and verify | |||
the certificate signature or as specified for hashing certificates | the certificate signature or as specified for hashing certificates | |||
signed using the signatureAlgorithm. If hashAlg is used, the CMP | signed using the signatureAlgorithm. If hashAlg is used, the CMP | |||
version indicated by the certConf message header must be cmp2021(3). | version indicated by the certConf message header must be cmp2021(3). | |||
For any particular CertStatus, omission of the statusInfo field | For any particular CertStatus, omission of the statusInfo field | |||
indicates acceptance of the specified certificate. Alternatively, | indicates acceptance of the specified certificate. Alternatively, | |||
explicit status details (with respect to acceptance or rejection) MAY | explicit status details (with respect to acceptance or rejection) MAY | |||
be provided in the statusInfo field, perhaps for auditing purposes at | be provided in the statusInfo field, perhaps for auditing purposes at | |||
the CA/RA. | the CA/RA. | |||
Within CertConfirmContent, omission of a CertStatus structure | Within CertConfirmContent, omission of a CertStatus structure | |||
corresponding to a certificate supplied in the previous response | corresponding to a certificate supplied in the previous response | |||
message indicates rejection of the certificate. Thus, an empty | message indicates rejection of the certificate. Thus, an empty | |||
CertConfirmContent (a zero-length SEQUENCE) MAY be used to indicate | CertConfirmContent (a zero-length SEQUENCE) MAY be used to indicate | |||
rejection of all supplied certificates. See Section 5.2.8.3.2, for a | rejection of all supplied certificates. See Section 5.2.8.3.2 for a | |||
discussion of the certHash field with respect to proof-of-possession. | discussion of the certHash field with respect to proof-of-possession. | |||
5.3.19. PKI General Message Content | 5.3.19. PKI General Message Content | |||
InfoTypeAndValue ::= SEQUENCE { | InfoTypeAndValue ::= SEQUENCE { | |||
infoType OBJECT IDENTIFIER, | infoType OBJECT IDENTIFIER, | |||
infoValue ANY DEFINED BY infoType OPTIONAL | infoValue ANY DEFINED BY infoType OPTIONAL | |||
} | } | |||
-- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4} | -- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4} | |||
skipping to change at page 68, line 18 ¶ | skipping to change at line 3016 ¶ | |||
protect sensitive information during the protocol. | protect sensitive information during the protocol. | |||
GenMsg: {id-it 1}, < absent > | GenMsg: {id-it 1}, < absent > | |||
GenRep: {id-it 1}, Certificate | < absent > | GenRep: {id-it 1}, Certificate | < absent > | |||
EEs MUST ensure that the correct certificate is used for this | EEs MUST ensure that the correct certificate is used for this | |||
purpose. | purpose. | |||
5.3.19.2. Signing Key Pair Types | 5.3.19.2. Signing Key Pair Types | |||
This MAY be used by the EE to get the list of signature algorithm | This MAY be used by the EE to get the list of signature algorithms | |||
whose subject public key values the CA is willing to certify. | whose subject public key values the CA is willing to certify. | |||
GenMsg: {id-it 2}, < absent > | GenMsg: {id-it 2}, < absent > | |||
GenRep: {id-it 2}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 2}, SEQUENCE SIZE (1..MAX) OF | |||
AlgorithmIdentifier | AlgorithmIdentifier | |||
Note: For the purposes of this exchange, rsaEncryption and | Note: For the purposes of this exchange, rsaEncryption and | |||
sha256WithRSAEncryption, for example, are considered to be | sha256WithRSAEncryption, for example, are considered to be | |||
equivalent; the question being asked is, "Is the CA willing to | equivalent; the question being asked is, "Is the CA willing to | |||
certify an RSA public key?" | certify an RSA public key?" | |||
Note: In case several elliptic curves are supported, several id- | Note: In case several elliptic curves are supported, several id- | |||
ecPublicKey elements as defined in [RFC5480] need to be given, one | ecPublicKey elements as defined in [RFC5480] need to be given, one | |||
per named curve. | per named curve. | |||
5.3.19.3. Encryption/Key Agreement Key Pair Types | 5.3.19.3. Encryption / Key Agreement Key Pair Types | |||
This MAY be used by the client to get the list of encryption/key | This MAY be used by the client to get the list of encryption / key | |||
agreement algorithms whose subject public key values the CA is | agreement algorithms whose subject public key values the CA is | |||
willing to certify. | willing to certify. | |||
GenMsg: {id-it 3}, < absent > | GenMsg: {id-it 3}, < absent > | |||
GenRep: {id-it 3}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 3}, SEQUENCE SIZE (1..MAX) OF | |||
AlgorithmIdentifier | AlgorithmIdentifier | |||
Note: In case several elliptic curves are supported, several id- | Note: In case several elliptic curves are supported, several id- | |||
ecPublicKey elements as defined in [RFC5480] need to be given, one | ecPublicKey elements as defined in [RFC5480] need to be given, one | |||
per named curve. | per named curve. | |||
skipping to change at page 69, line 43 ¶ | skipping to change at line 3084 ¶ | |||
that it does not recognize or support from the list submitted by the | that it does not recognize or support from the list submitted by the | |||
client. | client. | |||
GenRep: {id-it 7}, SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER | GenRep: {id-it 7}, SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER | |||
5.3.19.8. Key Pair Parameters | 5.3.19.8. Key Pair Parameters | |||
This MAY be used by the EE to request the domain parameters to use | This MAY be used by the EE to request the domain parameters to use | |||
for generating the key pair for certain public-key algorithms. It | for generating the key pair for certain public-key algorithms. It | |||
can be used, for example, to request the appropriate P, Q, and G to | can be used, for example, to request the appropriate P, Q, and G to | |||
generate the DH/DSA key, or to request a set of well-known elliptic | generate the DH/DSA key or to request a set of well-known elliptic | |||
curves. | curves. | |||
GenMsg: {id-it 10}, OBJECT IDENTIFIER -- (Algorithm object-id) | GenMsg: {id-it 10}, OBJECT IDENTIFIER -- (Algorithm object-id) | |||
GenRep: {id-it 11}, AlgorithmIdentifier | < absent > | GenRep: {id-it 11}, AlgorithmIdentifier | < absent > | |||
An absent infoValue in the GenRep indicates that the algorithm | An absent infoValue in the GenRep indicates that the algorithm | |||
specified in GenMsg is not supported. | specified in GenMsg is not supported. | |||
EEs MUST ensure that the parameters are acceptable to it and that the | EEs MUST ensure that the parameters are acceptable to it and that the | |||
GenRep message is authenticated (to avoid substitution attacks). | GenRep message is authenticated (to avoid substitution attacks). | |||
skipping to change at page 70, line 35 ¶ | skipping to change at line 3123 ¶ | |||
5.3.19.11. ConfirmWaitTime | 5.3.19.11. ConfirmWaitTime | |||
See Section 5.1.1.2 for the definition and use of {id-it 14}. | See Section 5.1.1.2 for the definition and use of {id-it 14}. | |||
5.3.19.12. Original PKIMessage | 5.3.19.12. Original PKIMessage | |||
See Section 5.1.1.3 for the definition and use of {id-it 15}. | See Section 5.1.1.3 for the definition and use of {id-it 15}. | |||
5.3.19.13. Supported Language Tags | 5.3.19.13. Supported Language Tags | |||
This MAY be used to determine the appropriate [RFC5646] language tag | This MAY be used to determine the appropriate language tag [RFC5646] | |||
to use in subsequent messages. The sender sends its list of | to use in subsequent messages. The sender sends its list of | |||
supported languages (in order, most preferred to least); the receiver | supported languages (in order of most to least preferred); the | |||
returns the one it wishes to use. (Note: each UTF8String MUST | receiver returns the one it wishes to use. (Note: Each UTF8String | |||
include a language tag.) If none of the offered tags are supported, | MUST include a language tag.) If none of the offered tags are | |||
an error MUST be returned. | supported, an error MUST be returned. | |||
GenMsg: {id-it 16}, SEQUENCE SIZE (1..MAX) OF UTF8String | GenMsg: {id-it 16}, SEQUENCE SIZE (1..MAX) OF UTF8String | |||
GenRep: {id-it 16}, SEQUENCE SIZE (1) OF UTF8String | GenRep: {id-it 16}, SEQUENCE SIZE (1) OF UTF8String | |||
5.3.19.14. CA Certificates | 5.3.19.14. CA Certificates | |||
This MAY be used by the client to get CA certificates. | This MAY be used by the client to get CA certificates. | |||
GenMsg: {id-it 17}, < absent > | GenMsg: {id-it 17}, < absent > | |||
GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | GenRep: {id-it 17}, SEQUENCE SIZE (1..MAX) OF | |||
skipping to change at page 71, line 48 ¶ | skipping to change at line 3184 ¶ | |||
certify. | certify. | |||
The id-regCtrl-algId control MAY be used to identify a cryptographic | The id-regCtrl-algId control MAY be used to identify a cryptographic | |||
algorithm (see Section 4.1.2.7 of [RFC5280]) other than | algorithm (see Section 4.1.2.7 of [RFC5280]) other than | |||
rsaEncryption. The algorithm field SHALL identify a cryptographic | rsaEncryption. The algorithm field SHALL identify a cryptographic | |||
algorithm. The contents of the optional parameters field will vary | algorithm. The contents of the optional parameters field will vary | |||
according to the algorithm identified. For example, when the | according to the algorithm identified. For example, when the | |||
algorithm is set to id-ecPublicKey, the parameters identify the | algorithm is set to id-ecPublicKey, the parameters identify the | |||
elliptic curve to be used; see [RFC5480]. | elliptic curve to be used; see [RFC5480]. | |||
Note: The client may specify a profile name in the certProfile field, | Note: The client may specify a profile name in the certProfile field | |||
see Section 5.1.1.4. | (see Section 5.1.1.4). | |||
The id-regCtrl-rsaKeyLen control SHALL be used for algorithm | The id-regCtrl-rsaKeyLen control SHALL be used for algorithm | |||
rsaEncryption and SHALL contain the intended modulus bit length of | rsaEncryption and SHALL contain the intended modulus bit length of | |||
the RSA key. | the RSA key. | |||
GenMsg: {id-it 19}, < absent > | GenMsg: {id-it 19}, < absent > | |||
GenRep: {id-it 19}, CertReqTemplateContent | < absent > | GenRep: {id-it 19}, CertReqTemplateContent | < absent > | |||
CertReqTemplateValue ::= CertReqTemplateContent | CertReqTemplateValue ::= CertReqTemplateContent | |||
skipping to change at page 72, line 39 ¶ | skipping to change at line 3221 ¶ | |||
RsaKeyLenCtrl ::= INTEGER (1..MAX) | RsaKeyLenCtrl ::= INTEGER (1..MAX) | |||
The CertReqTemplateValue contains the prefilled certTemplate to be | The CertReqTemplateValue contains the prefilled certTemplate to be | |||
used for a future certificate request. The publicKey field in the | used for a future certificate request. The publicKey field in the | |||
certTemplate MUST NOT be used. In case the PKI management entity | certTemplate MUST NOT be used. In case the PKI management entity | |||
wishes to specify supported public-key algorithms, the keySpec field | wishes to specify supported public-key algorithms, the keySpec field | |||
MUST be used. One AttributeTypeAndValue per supported algorithm or | MUST be used. One AttributeTypeAndValue per supported algorithm or | |||
RSA key length MUST be used. | RSA key length MUST be used. | |||
Note: The controls ASN.1 type is defined in Section 6 of CRMF | Note: The controls for an ASN.1 type are defined in Section 6 of CRMF | |||
[RFC4211] | [RFC4211]. | |||
5.3.19.17. CRL Update Retrieval | 5.3.19.17. CRL Update Retrieval | |||
This MAY be used by the client to get new CRLs, specifying the source | This MAY be used by the client to get new CRLs, specifying the source | |||
of the CRLs and the thisUpdate value of the latest CRL it already | of the CRLs and the thisUpdate value of the latest CRL it already | |||
has, if available. A CRL source is given either by a | has, if available. A CRL source is given either by a | |||
DistributionPointName or the GeneralNames of the issuing CA. The | DistributionPointName or the GeneralNames of the issuing CA. The | |||
DistributionPointName should be treated as an internal pointer to | DistributionPointName should be treated as an internal pointer to | |||
identify a CRL that the server already has and not as a way to ask | identify a CRL that the server already has and not as a way to ask | |||
the server to fetch CRLs from external locations. The server SHALL | the server to fetch CRLs from external locations. The server SHALL | |||
skipping to change at page 73, line 22 ¶ | skipping to change at line 3253 ¶ | |||
CRLStatus ::= SEQUENCE { | CRLStatus ::= SEQUENCE { | |||
source CRLSource, | source CRLSource, | |||
thisUpdate Time OPTIONAL } | thisUpdate Time OPTIONAL } | |||
5.3.19.18. KEM Ciphertext | 5.3.19.18. KEM Ciphertext | |||
This MAY be used by a PKI entity to get the KEM ciphertext for MAC- | This MAY be used by a PKI entity to get the KEM ciphertext for MAC- | |||
based message protection using KEM (see Section 5.1.3.4). | based message protection using KEM (see Section 5.1.3.4). | |||
The PKI entity which possesses a KEM key pair can request the | The PKI entity that possesses a KEM key pair can request the | |||
ciphertext by sending an InfoTypeAndValue structure of type | ciphertext by sending an InfoTypeAndValue structure of type | |||
KemCiphertextInfo where the infoValue is absent. The ciphertext can | KemCiphertextInfo where the infoValue is absent. The ciphertext can | |||
be provided in the following genp message with an InfoTypeAndValue | be provided in the following genp message with an InfoTypeAndValue | |||
structure of the same type. | structure of the same type. | |||
GenMsg: {id-it TBD1}, < absent > | GenMsg: {id-it 24}, < absent > | |||
GenRep: {id-it TBD1}, KemCiphertextInfo | GenRep: {id-it 24}, KemCiphertextInfo | |||
KemCiphertextInfo ::= SEQUENCE { | KemCiphertextInfo ::= SEQUENCE { | |||
kem AlgorithmIdentifier{KEM-ALGORITHM, {...}}, | kem AlgorithmIdentifier{KEM-ALGORITHM, {...}}, | |||
ct OCTET STRING | ct OCTET STRING | |||
} | } | |||
kem is the algorithm identifier of the KEM algorithm, and any | kem is the algorithm identifier of the KEM algorithm, and any | |||
associated parameters, used to generate the ciphertext ct. | associated parameters, used to generate the ciphertext (ct). | |||
ct is the ciphertext output from the KEM Encapsulate function. | ct is the ciphertext output from the KEM Encapsulate function. | |||
NOTE: These InfoTypeAndValue structures can also be transferred in | Note: These InfoTypeAndValue structures can also be transferred in | |||
the generalInfo field of the PKIHeader in messages of other types | the generalInfo field of the PKIHeader in messages of other types | |||
(see Section 5.1.1.5). | (see Section 5.1.1.5). | |||
5.3.20. PKI General Response Content | 5.3.20. PKI General Response Content | |||
GenRepContent ::= SEQUENCE OF InfoTypeAndValue | GenRepContent ::= SEQUENCE OF InfoTypeAndValue | |||
Examples of GenReps that MAY be supported include those listed in the | Examples of GenReps that MAY be supported include those listed in the | |||
subsections of Section 5.3.19. | subsections of Section 5.3.19. | |||
5.3.21. Error Message Content | 5.3.21. Error Message Content | |||
This data structure MAY be used by EE, CA, or RA to convey error | This data structure MAY be used by an EE, CA, or RA to convey error | |||
information and by a PKI management entity to initiate delayed | information and by a PKI management entity to initiate delayed | |||
delivery of responses. | delivery of responses. | |||
ErrorMsgContent ::= SEQUENCE { | ErrorMsgContent ::= SEQUENCE { | |||
pKIStatusInfo PKIStatusInfo, | pKIStatusInfo PKIStatusInfo, | |||
errorCode INTEGER OPTIONAL, | errorCode INTEGER OPTIONAL, | |||
errorDetails PKIFreeText OPTIONAL | errorDetails PKIFreeText OPTIONAL | |||
} | } | |||
This message MAY be generated at any time during a PKI transaction. | This message MAY be generated at any time during a PKI transaction. | |||
If the client sends this request, the server MUST respond with a | If the client sends this request, the server MUST respond with a | |||
PKIConfirm response, or another ErrorMsg if any part of the header is | PKIConfirm response or another ErrorMsg if any part of the header is | |||
not valid. | not valid. | |||
In case a PKI management entity sends an error message to the EE with | In case a PKI management entity sends an error message to the EE with | |||
the pKIStatusInfo field containing the status "waiting", the EE | the pKIStatusInfo field containing the status "waiting", the EE | |||
SHOULD initiate polling as described in Section 5.3.22. If the EE | SHOULD initiate polling as described in Section 5.3.22. If the EE | |||
does not initiate polling, both sides MUST treat this message as the | does not initiate polling, both sides MUST treat this message as the | |||
end of the transaction (if a transaction is in progress). | end of the transaction (if a transaction is in progress). | |||
If protection is desired on the message, the client MUST protect it | If protection is desired on the message, the client MUST protect it | |||
using the same technique (i.e., signature or MAC) as the starting | using the same technique (i.e., signature or MAC) as the starting | |||
skipping to change at page 74, line 52 ¶ | skipping to change at line 3330 ¶ | |||
PollRepContent ::= SEQUENCE OF SEQUENCE { | PollRepContent ::= SEQUENCE OF SEQUENCE { | |||
certReqId INTEGER, | certReqId INTEGER, | |||
checkAfter INTEGER, -- time in seconds | checkAfter INTEGER, -- time in seconds | |||
reason PKIFreeText OPTIONAL } | reason PKIFreeText OPTIONAL } | |||
Unless implicit confirmation has been requested and granted, in | Unless implicit confirmation has been requested and granted, in | |||
response to an ir, cr, p10cr, kur, krr, or ccr request message, | response to an ir, cr, p10cr, kur, krr, or ccr request message, | |||
polling is initiated with an ip, cp, kup, krp, or ccp response | polling is initiated with an ip, cp, kup, krp, or ccp response | |||
message containing status "waiting". For any type of request | message containing status "waiting". For any type of request | |||
message, polling can be initiated with an error response messages | message, polling can be initiated with an error response message with | |||
with status "waiting". The following clauses describe how polling | status "waiting". The following clauses describe how polling | |||
messages are used. It is assumed that multiple certConf messages can | messages are used. It is assumed that multiple certConf messages can | |||
be sent during transactions. There will be one sent in response to | be sent during transactions. There will be one sent in response to | |||
each ip, cp, kup, krp, or ccp that contains a CertStatus for an | each ip, cp, kup, krp, or ccp that contains a CertStatus for an | |||
issued certificate. | issued certificate. | |||
1 In response to an ip, cp, kup, krp, or ccp message, an EE will | 1. In response to an ip, cp, kup, krp, or ccp message, an EE will | |||
send a certConf for all issued certificates and expect a PKIconf | send a certConf for all issued certificates and expect a PKIconf | |||
for each certConf. An EE will send a pollReq message in response | for each certConf. An EE will send a pollReq message in response | |||
to each CertResponse element of an ip, cp, or kup message with | to each CertResponse element of an ip, cp, or kup message with | |||
status "waiting" and in response to an error message with status | status "waiting" and in response to an error message with status | |||
"waiting". Its certReqId MUST be either the index of a | "waiting". Its certReqId MUST be either the index of a | |||
CertResponse data structure with status "waiting" or -1 referring | CertResponse data structure with status "waiting" or -1 referring | |||
to the complete response. | to the complete response. | |||
2 In response to a pollReq, a CA/RA will return an ip, cp, kup, krp, | 2. In response to a pollReq, a CA/RA will return an ip, cp, kup, | |||
or ccp if one or more of still pending requested certificates are | krp, or ccp if one or more of the still pending requested | |||
ready or the final response to some other type of request is | certificates are ready or the final response to some other type | |||
available; otherwise, it will return a pollRep. | of request is available; otherwise, it will return a pollRep. | |||
3 If the EE receives a pollRep, it will wait for at least the number | 3. If the EE receives a pollRep, it will wait for at least the | |||
of seconds given in the checkAfter field before sending another | number of seconds given in the checkAfter field before sending | |||
pollReq. | another pollReq. | |||
[RFC-Editor: Please fix the indentation. This note belongs to 3.] | Note that the checkAfter value heavily depends on the certificate | |||
Note that the checkAfter value heavily depends on the certificate | management environment. There are different possible reasons for | |||
management environment. There are different reasons for a delayed | a delayed delivery of response messages, e.g., high load on the | |||
delivery of response messages possible, e.g., high load on the | server's backend, offline transfer of messages between two PKI | |||
server's backend, offline transfer of messages between two PKI | management entities, or required RA operator approval. | |||
management entities, or required RA operator approval. Therefore, | Therefore, the checkAfter time can vary greatly. This should | |||
the checkAfter time can vary greatly. This should also be | also be considered by the transfer protocol. | |||
considered by the transfer protocol. | ||||
1. [RFC-Editor: Please fix the enumeration and continue with '4'.] | 4. If the EE receives an ip, cp, kup, krp, or ccp, then it will be | |||
If the EE receives an ip, cp, kup, krp, or ccp, then it will be | ||||
treated in the same way as the initial response; if it receives | treated in the same way as the initial response; if it receives | |||
any other response, then this will be treated as the final | any other response, then this will be treated as the final | |||
response to the original request. | response to the original request. | |||
The following client-side state machine describes polling for | The following client-side state machine describes polling for | |||
individual CertResponse elements at the example of an ir request | individual CertResponse elements at the example of an ir request | |||
message. | message. | |||
START | START | |||
| | | | |||
skipping to change at page 79, line 44 ¶ | skipping to change at line 3512 ¶ | |||
Some of the PKI management functions outlined in Section 3.1 are | Some of the PKI management functions outlined in Section 3.1 are | |||
described in this section. | described in this section. | |||
This section deals with functions that are "mandatory" in the sense | This section deals with functions that are "mandatory" in the sense | |||
that all end entity and CA/RA implementations MUST be able to provide | that all end entity and CA/RA implementations MUST be able to provide | |||
the functionality described. This part is effectively the profile of | the functionality described. This part is effectively the profile of | |||
the PKI management functionality that MUST be supported. Note, | the PKI management functionality that MUST be supported. Note, | |||
however, that the management functions described in this section do | however, that the management functions described in this section do | |||
not need to be accomplished using the PKI messages defined in | not need to be accomplished using the PKI messages defined in | |||
Section 5 if alternate means are suitable for a given environment. | Section 5 if alternate means are suitable for a given environment. | |||
See [RFC9483] Section 7 and Appendix C for profiles of the PKIMessage | See Section 7 of [RFC9483] and Appendix C for profiles of the | |||
structures that MUST be supported for specific use cases. | PKIMessage structures that MUST be supported for specific use cases. | |||
6.1. Root CA Initialization | 6.1. Root CA Initialization | |||
[See Section 3.1.1.2 for this document's definition of "root CA".] | [See Section 3.1.1.2 for this document's definition of "root CA".] | |||
If a newly created root CA is at the top of a PKI hierarchy, it | If a newly created root CA is at the top of a PKI hierarchy, it | |||
usually produces a "self-certificate", which is a certificate | usually produces a "self-certificate", which is a certificate | |||
structure with the profile defined for the "newWithNew" certificate | structure with the profile defined for the "newWithNew" certificate | |||
issued following a root CA key update. | issued following a root CA key update. | |||
In order to make the CA's self-certificate useful to end entities | In order to make the CA's self-certificate useful to end entities | |||
that do not acquire the self-certificate via "out-of-band" means, the | that do not acquire the self-certificate via "out-of-band" means, the | |||
CA must also produce a fingerprint for its certificate. End entities | CA must also produce a fingerprint for its certificate. End entities | |||
that acquire this fingerprint securely via some "out-of-band" means | that acquire this fingerprint securely via some "out-of-band" means | |||
can then verify the CA's self-certificate and, hence, the other | can then verify the CA's self-certificate and, hence, the other | |||
attributes contained therein. | attributes contained therein. | |||
The data structure used to carry the fingerprint may be the | The data structure used to carry the fingerprint may be the | |||
OOBCertHash, see Section 5.2.5. | OOBCertHash (see Section 5.2.5). | |||
6.2. Root CA Key Update | 6.2. Root CA Key Update | |||
CA keys (as all other keys) have a finite lifetime and will have to | CA keys (as all other keys) have a finite lifetime and will have to | |||
be updated on a periodic basis. The certificates NewWithNew, | be updated on a periodic basis. The certificates NewWithNew, | |||
NewWithOld, and OldWithNew (see Section 4.4.1) MAY be issued by the | NewWithOld, and OldWithNew (see Section 4.4.1) MAY be issued by the | |||
CA to aid existing end entities who hold the current root CA | CA to aid existing end entities who hold the current root CA | |||
certificate (OldWithOld) to transition securely to the new root CA | certificate (OldWithOld) to transition securely to the new root CA | |||
certificate (NewWithNew), and to aid new end entities who will hold | certificate (NewWithNew) and to aid new end entities who will hold | |||
NewWithNew to acquire OldWithOld securely for verification of | NewWithNew to acquire OldWithOld securely for verification of | |||
existing data. | existing data. | |||
6.3. Subordinate CA Initialization | 6.3. Subordinate CA Initialization | |||
[See Section 3.1.1.2 for this document's definition of "subordinate | [See Section 3.1.1.2 for this document's definition of "subordinate | |||
CA".] | CA".] | |||
From the perspective of PKI management protocols, the initialization | From the perspective of PKI management protocols, the initialization | |||
of a subordinate CA is the same as the initialization of an end | of a subordinate CA is the same as the initialization of an end | |||
entity. The only difference is that the subordinate CA must also | entity. The only difference is that the subordinate CA must also | |||
produce an initial revocation list. | produce an initial revocation list. | |||
6.4. CRL production | 6.4. CRL Production | |||
Before issuing any certificates, a newly established CA (which issues | Before issuing any certificates, a newly established CA (which issues | |||
CRLs) must produce "empty" versions of each CRL which are to be | CRLs) must produce "empty" versions of each CRL, which are to be | |||
periodically produced. | periodically produced. | |||
6.5. PKI Information Request | 6.5. PKI Information Request | |||
When a PKI entity (CA, RA, or EE) wishes to acquire information about | When a PKI entity (CA, RA, or EE) wishes to acquire information about | |||
the current status of a CA, it MAY send that CA a request for such | the current status of a CA, it MAY send that CA a request for such | |||
information. | information. | |||
The CA MUST respond to the request by providing (at least) all of the | The CA MUST respond to the request by providing (at least) all of the | |||
information requested by the requester. If some of the information | information requested by the requester. If some of the information | |||
cannot be provided, then an error must be conveyed to the requester. | cannot be provided, then an error must be conveyed to the requester. | |||
If PKIMessages are used to request and supply this PKI information, | If PKIMessages are used to request and supply this PKI information, | |||
then the request MUST be the GenMsg message, the response MUST be the | then the request MUST be the GenMsg message, the response MUST be the | |||
GenRep message, and the error MUST be the Error message. These | GenRep message, and the error MUST be the Error message. These | |||
messages are protected using a MAC based on shared secret information | messages are protected using a MAC based on shared secret information | |||
(e.g., password-based MAC, see CMP Algorithms [RFC9481] Section 6.1) | (e.g., password-based MAC; see Section 6.1 of "CMP Algorithms" | |||
or using any asymmetric authentication means such as a signature (if | [RFC9481]) or using any asymmetric authentication means such as a | |||
the end entity has an existing certificate). | signature (if the end entity has an existing certificate). | |||
6.6. Cross Certification | 6.6. Cross Certification | |||
The requester CA is the CA that will become the subject of the cross- | The requester CA is the CA that will become the subject of the cross- | |||
certificate; the responder CA will become the issuer of the cross- | certificate; the responder CA will become the issuer of the cross- | |||
certificate. | certificate. | |||
The requester CA must be "up and running" before initiating the | The requester CA must be "up and running" before initiating the | |||
cross-certification operation. | cross-certification operation. | |||
6.6.1. One-Way Request-Response Scheme: | 6.6.1. One-Way Request-Response Scheme | |||
The cross-certification scheme is essentially a one way operation; | The cross-certification scheme is essentially a one-way operation; | |||
that is, when successful, this operation results in the creation of | that is, when successful, this operation results in the creation of | |||
one new cross-certificate. If the requirement is that cross- | one new cross-certificate. If the requirement is that cross- | |||
certificates be created in "both directions", then each CA, in turn, | certificates be created in "both directions", then each CA, in turn, | |||
must initiate a cross-certification operation (or use another | must initiate a cross-certification operation (or use another | |||
scheme). | scheme). | |||
This scheme is suitable where the two CAs in question can already | This scheme is suitable where the two CAs in question can already | |||
verify each other's signatures (they have some common points of | verify each other's signatures (they have some common points of | |||
trust) or where there is an out-of-band verification of the origin of | trust) or where there is an out-of-band verification of the origin of | |||
the certification request. | the certification request. | |||
Detailed Description: | Detailed Description: | |||
Cross certification is initiated at one CA known as the responder. | Cross certification is initiated at one CA known as the responder. | |||
The CA administrator for the responder identifies the CA it wants to | The CA administrator for the responder identifies the CA it wants | |||
cross certify and the responder CA equipment generates an | to cross certify and the responder CA equipment generates an | |||
authorization code. The responder CA administrator passes this | authorization code. The responder CA administrator passes this | |||
authorization code by out-of-band means to the requester CA | authorization code by out-of-band means to the requester CA | |||
administrator. The requester CA administrator enters the | administrator. The requester CA administrator enters the | |||
authorization code at the requester CA in order to initiate the on- | authorization code at the requester CA in order to initiate the | |||
line exchange. | on-line exchange. | |||
The authorization code is used for authentication and integrity | The authorization code is used for authentication and integrity | |||
purposes. This is done by generating a symmetric key based on the | purposes. This is done by generating a symmetric key based on the | |||
authorization code and using the symmetric key for generating Message | authorization code and using the symmetric key for generating | |||
Authentication Codes (MACs) on all messages exchanged. | Message Authentication Codes (MACs) on all messages exchanged. | |||
(Authentication may alternatively be done using signatures instead of | (Authentication may alternatively be done using signatures instead | |||
MACs, if the CAs are able to retrieve and validate the required | of MACs, if the CAs are able to retrieve and validate the required | |||
public keys by some means, such as an out-of-band hash comparison.) | public keys by some means, such as an out-of-band hash | |||
comparison.) | ||||
The requester CA initiates the exchange by generating a cross- | The requester CA initiates the exchange by generating a cross- | |||
certification request (ccr) with a fresh random number (requester | certification request (ccr) with a fresh random number (requester | |||
random number). The requester CA then sends the ccr message to the | random number). The requester CA then sends the ccr message to | |||
responder CA. The fields in this message are protected from | the responder CA. The fields in this message are protected from | |||
modification with a MAC based on the authorization code. | modification with a MAC based on the authorization code. | |||
Upon receipt of the ccr message, the responder CA validates the | Upon receipt of the ccr message, the responder CA validates the | |||
message and the MAC, saves the requester random number, and generates | message and the MAC, saves the requester random number, and | |||
its own random number (responder random number). It then generates | generates its own random number (responder random number). It | |||
(and archives, if desired) a new requester certificate that contains | then generates (and archives, if desired) a new requester | |||
the requester CA public key and is signed with the responder CA | certificate that contains the requester CA public key and is | |||
signature private key. The responder CA responds with the cross | signed with the responder CA signature private key. The responder | |||
certification response (ccp) message. The fields in this message are | CA responds with the cross-certification response (ccp) message. | |||
protected from modification with a MAC based on the authorization | The fields in this message are protected from modification with a | |||
code. | MAC based on the authorization code. | |||
Upon receipt of the ccp message, the requester CA validates the | Upon receipt of the ccp message, the requester CA validates the | |||
message (including the received random numbers) and the MAC. The | message (including the received random numbers) and the MAC. The | |||
requester CA responds with the certConf message. The fields in this | requester CA responds with the certConf message. The fields in | |||
message are protected from modification with a MAC based on the | this message are protected from modification with a MAC based on | |||
authorization code. The requester CA MAY write the requester | the authorization code. The requester CA MAY write the requester | |||
certificate to the Repository as an aid to later certificate path | certificate to the Repository as an aid to later certificate path | |||
construction. | construction. | |||
Upon receipt of the certConf message, the responder CA validates the | Upon receipt of the certConf message, the responder CA validates | |||
message and the MAC, and sends back an acknowledgement using the | the message and the MAC and sends back an acknowledgement using | |||
PKIConfirm message. It MAY also publish the requester certificate as | the PKIConfirm message. It MAY also publish the requester | |||
an aid to later path construction. | certificate as an aid to later path construction. | |||
Notes: | Notes: | |||
1. The ccr message must contain a "complete" certification request; | 1. The ccr message must contain a "complete" certification request; | |||
that is, all fields except the serial number (including, e.g., a | that is, all fields except the serial number (including, e.g., a | |||
BasicConstraints extension) must be specified by the requester | BasicConstraints extension) must be specified by the requester | |||
CA. | CA. | |||
2. The ccp message SHOULD contain the verification certificate of | 2. The ccp message SHOULD contain the verification certificate of | |||
the responder CA; if present, the requester CA must then verify | the responder CA; if present, the requester CA must then verify | |||
skipping to change at page 83, line 23 ¶ | skipping to change at line 3680 ¶ | |||
6.7. End Entity Initialization | 6.7. End Entity Initialization | |||
As with CAs, end entities must be initialized. Initialization of end | As with CAs, end entities must be initialized. Initialization of end | |||
entities requires at least two steps: | entities requires at least two steps: | |||
* acquisition of PKI information | * acquisition of PKI information | |||
* out-of-band verification of one root-CA public key | * out-of-band verification of one root-CA public key | |||
(other possible steps include the retrieval of trust condition | (Other possible steps include the retrieval of trust condition | |||
information and/or out-of-band verification of other CA public keys). | information and/or out-of-band verification of other CA public keys.) | |||
6.7.1. Acquisition of PKI Information | 6.7.1. Acquisition of PKI Information | |||
The information REQUIRED is: | The information REQUIRED is: | |||
* the current root-CA public key | * the current root-CA public key | |||
* (if the certifying CA is not a root-CA) the certification path | * (if the certifying CA is not a root-CA) the certification path | |||
from the root CA to the certifying CA together with appropriate | from the root CA to the certifying CA together with appropriate | |||
revocation lists | revocation lists | |||
* the algorithms and algorithm parameters that the certifying CA | * the algorithms and algorithm parameters that the certifying CA | |||
supports for each relevant usage | supports for each relevant usage | |||
Additional information could be required (e.g., supported extensions | Additional information could be required (e.g., supported extensions | |||
or CA policy information) in order to produce a certification request | or CA policy information) in order to produce a certification request | |||
that will be successful. However, for simplicity we do not mandate | that will be successful. However, for simplicity, we do not mandate | |||
that the end entity acquires this information via the PKI messages. | that the end entity acquires this information via the PKI messages. | |||
The end result is simply that some certification requests may fail | The end result is simply that some certification requests may fail | |||
(e.g., if the end entity wants to generate its own encryption key, | (e.g., if the end entity wants to generate its own encryption key, | |||
but the CA doesn't allow that). | but the CA doesn't allow that). | |||
The required information MAY be acquired as described in Section 6.5. | The required information MAY be acquired as described in Section 6.5. | |||
6.7.2. Out-of-Band Verification of Root CA Key | 6.7.2. Out-of-Band Verification of the Root CA Key | |||
An end entity must securely possess the public key of its root CA. | An end entity must securely possess the public key of its root CA. | |||
One method to achieve this is to provide the end entity with the CA's | One method to achieve this is to provide the end entity with the CA's | |||
self-certificate fingerprint via some secure "out-of-band" means. | self-certificate fingerprint via some secure "out-of-band" means. | |||
The end entity can then securely use the CA's self-certificate. | The end entity can then securely use the CA's self-certificate. | |||
See Section 6.1 for further details. | See Section 6.1 for further details. | |||
6.8. Certificate Request | 6.8. Certificate Request | |||
skipping to change at page 84, line 41 ¶ | skipping to change at line 3742 ¶ | |||
"Certificate Update" operation). If the end entity already possesses | "Certificate Update" operation). If the end entity already possesses | |||
a signing key pair (with a corresponding verification certificate), | a signing key pair (with a corresponding verification certificate), | |||
then this message will typically be protected by the entity's digital | then this message will typically be protected by the entity's digital | |||
signature. The CA returns the new certificate (if the request is | signature. The CA returns the new certificate (if the request is | |||
successful) in a key update response (kup) message, which is | successful) in a key update response (kup) message, which is | |||
syntactically identical to a CertRepMessage. | syntactically identical to a CertRepMessage. | |||
7. Version Negotiation | 7. Version Negotiation | |||
This section defines the version negotiation used to support older | This section defines the version negotiation used to support older | |||
protocols between client and servers. | protocols between clients and servers. | |||
If a client knows the protocol version(s) supported by the server | If a client knows the protocol version(s) supported by the server | |||
(e.g., from a previous PKIMessage exchange or via some out-of-band | (e.g., from a previous PKIMessage exchange or via some out-of-band | |||
means), then it MUST send a PKIMessage with the highest version | means), then it MUST send a PKIMessage with the highest version | |||
supported by both it and the server. If a client does not know what | supported by both it and the server. If a client does not know what | |||
version(s) the server supports, then it MUST send a PKIMessage using | version(s) the server supports, then it MUST send a PKIMessage using | |||
the highest version it supports with the following exception: version | the highest version it supports with the following exception: Version | |||
cmp2021 SHOULD only be used if cmp2021 syntax is needed for the | cmp2021 SHOULD only be used if cmp2021 syntax is needed for the | |||
request being sent or for the expected response. | request being sent or for the expected response. | |||
Note: Using cmp2000 as the default pvno is done to avoid extra | Note: Using cmp2000 as the default pvno is done to avoid extra | |||
message exchanges for version negotiation and to foster compatibility | message exchanges for version negotiation and to foster compatibility | |||
with cmp2000 implementations. Version cmp2021 syntax is only needed | with cmp2000 implementations. Version cmp2021 syntax is only needed | |||
if a message exchange uses EnvelopedData, hashAlg (in CertStatus), | if a message exchange uses EnvelopedData, hashAlg (in CertStatus), | |||
POPOPrivKey with agreeMAC, or ckuann with RootCaKeyUpdateContent. | POPOPrivKey with agreeMAC, or ckuann with RootCaKeyUpdateContent. | |||
If a server receives a message with a version that it supports, then | If a server receives a message with a version that it supports, then | |||
the version of the response message MUST be the same as the received | the version of the response message MUST be the same as the received | |||
version. If a server receives a message with a version higher or | version. If a server receives a message with a version higher or | |||
lower than it supports, then it MUST send back an ErrorMsg with the | lower than it supports, then it MUST send back an ErrorMsg with the | |||
unsupportedVersion bit set (in the failureInfo field of the | unsupportedVersion bit set (in the failureInfo field of the | |||
pKIStatusInfo). If the received version is higher than the highest | pKIStatusInfo). If the received version is higher than the highest | |||
supported version, then the version in the error message MUST be the | supported version, then the version in the error message MUST be the | |||
highest version the server supports; if the received version is lower | highest version the server supports; if the received version is lower | |||
than the lowest supported version then the version in the error | than the lowest supported version, then the version in the error | |||
message MUST be the lowest version the server supports. | message MUST be the lowest version the server supports. | |||
If a client gets back an ErrorMsgContent with the unsupportedVersion | If a client gets back an ErrorMsgContent with the unsupportedVersion | |||
bit set and a version it supports, then it MAY retry the request with | bit set and a version it supports, then it MAY retry the request with | |||
that version. | that version. | |||
7.1. Supporting RFC 2510 Implementations | 7.1. Supporting RFC 2510 Implementations | |||
RFC 2510 did not specify the behavior of implementations receiving | [RFC2510] did not specify the behavior of implementations receiving | |||
versions they did not understand since there was only one version in | versions they did not understand since there was only one version in | |||
existence. With the introduction of the revision in [RFC4210], the | existence. With the introduction of the revision in [RFC4210], the | |||
following versioning behaviour is recommended. | following versioning behavior is recommended. | |||
7.1.1. Clients Talking to RFC 2510 Servers | 7.1.1. Clients Talking to RFC 2510 Servers | |||
If, after sending a message with a protocol version number higher | If, after sending a message with a protocol version number higher | |||
than cmp1999, a client receives an ErrorMsgContent with a version of | than cmp1999, a client receives an ErrorMsgContent with a version of | |||
cmp1999, then it MUST abort the current transaction. | cmp1999, then it MUST abort the current transaction. | |||
If a client receives a non-error PKIMessage with a version of | If a client receives a non-error PKIMessage with a version of | |||
cmp1999, then it MAY decide to continue the transaction (if the | cmp1999, then it MAY decide to continue the transaction (if the | |||
transaction hasn't finished) using RFC 2510 semantics. If it does | transaction hasn't finished) using the semantics described in | |||
not choose to do so and the transaction is not finished, then it MUST | [RFC2510]. If it does not choose to do so and the transaction is not | |||
abort the transaction and send an ErrorMsgContent with a version of | finished, then it MUST abort the transaction and send an | |||
cmp1999. | ErrorMsgContent with a version of cmp1999. | |||
7.1.2. Servers Receiving Version cmp1999 PKIMessages | 7.1.2. Servers Receiving Version cmp1999 PKIMessages | |||
If a server receives a version cmp1999 message it MAY revert to RFC | If a server receives a version cmp1999 message, it MAY revert to the | |||
2510 behaviour and respond with version cmp1999 messages. If it does | behavior described in [RFC2510] and respond with version cmp1999 | |||
not choose to do so, then it MUST send back an ErrorMsgContent as | messages. If it does not choose to do so, then it MUST send back an | |||
described above in Section 7. | ErrorMsgContent as described above in Section 7. | |||
8. Security Considerations | 8. Security Considerations | |||
8.1. On the Necessity of Proof-Of-Possession | 8.1. On the Necessity of Proof-of-Possession | |||
It is well established that the role of a Certification Authority is | It is well established that the role of a Certification Authority is | |||
to verify that the name and public key belong to the end entity prior | to verify that the name and public key belong to the end entity prior | |||
to issuing a certificate. If an entity holding a private key obtains | to issuing a certificate. If an entity holding a private key obtains | |||
a certificate containing the corresponding public key issued for a | a certificate containing the corresponding public key issued for a | |||
different entity, it can authenticate as the entity named in the | different entity, it can authenticate as the entity named in the | |||
certificate. This facilitates masquerading. It is not entirely | certificate. This facilitates masquerading. It is not entirely | |||
clear what security guarantees are lost if an end entity is able to | clear what security guarantees are lost if an end entity is able to | |||
obtain a certificate containing a public key that they do not possess | obtain a certificate containing a public key that they do not possess | |||
the corresponding private key for. There are some scenarios, | the corresponding private key for. There are some scenarios, | |||
described as "forwarding attacks" in Appendix A of [Gueneysu], in | described as "forwarding attacks" in Appendix A of [Gueneysu], in | |||
which this can lead to protocol attacks against a naively-implemented | which this can lead to protocol attacks against a naively implemented | |||
sign-then-encrypt protocol, but in general it merely results in the | sign-then-encrypt protocol, but in general, it merely results in the | |||
end entity obtaining a certificate that they can not use. | end entity obtaining a certificate that they cannot use. | |||
8.2. Proof-Of-Possession with a Decryption Key | 8.2. Proof-of-Possession with a Decryption Key | |||
Some cryptographic considerations are worth explicitly spelling out. | Some cryptographic considerations are worth explicitly spelling out. | |||
In the protocols specified above, when an end entity is required to | In the protocols specified above, when an end entity is required to | |||
prove possession of a decryption key, it is effectively challenged to | prove possession of a decryption key, it is effectively challenged to | |||
decrypt something (its own certificate). This scheme (and many | decrypt something (its own certificate). This scheme (and many | |||
others!) could be vulnerable to an attack if the possessor of the | others!) could be vulnerable to an attack if the possessor of the | |||
decryption key in question could be fooled into decrypting an | decryption key in question could be fooled into decrypting an | |||
arbitrary challenge and returning the cleartext to an attacker. | arbitrary challenge and returning the cleartext to an attacker. | |||
Although in this specification a number of other failures in security | Although in this specification a number of other failures in security | |||
are required in order for this attack to succeed, it is conceivable | are required in order for this attack to succeed, it is conceivable | |||
that some future services (e.g., notary, trusted time) could | that some future services (e.g., notary, trusted time) could | |||
potentially be vulnerable to such attacks. For this reason, we | potentially be vulnerable to such attacks. For this reason, we | |||
reiterate the general rule that implementations should be very | reiterate the general rule that implementations should be very | |||
careful about decrypting arbitrary "ciphertext" and revealing | careful about decrypting arbitrary "ciphertext" and revealing | |||
recovered "plaintext" since such a practice can lead to serious | recovered "plaintext" since such a practice can lead to serious | |||
security vulnerabilities. | security vulnerabilities. | |||
The client MUST return the decrypted values only if they match the | The client MUST return the decrypted values only if they match the | |||
expected content type. In an Indirect Method, the decrypted value | expected content type. In an indirect method, the decrypted value | |||
MUST be a valid certificate, and in the Direct Method, the decrypted | MUST be a valid certificate, and in a direct method, the decrypted | |||
value MUST be a Rand as defined in Section 5.2.8.3.3. | value MUST be a Rand as defined in Section 5.2.8.3.3. | |||
8.3. Proof-Of-Possession by Exposing the Private Key | 8.3. Proof-of-Possession by Exposing the Private Key | |||
Note also that exposing a private key to the CA/RA as a proof-of- | Note also that exposing a private key to the CA/RA as a proof-of- | |||
possession technique can carry some security risks (depending upon | possession technique can carry some security risks (depending upon | |||
whether or not the CA/RA can be trusted to handle such material | whether or not the CA/RA can be trusted to handle such material | |||
appropriately). Implementers are advised to: | appropriately). Implementers are advised to: | |||
* Exercise caution in selecting and using this particular POP | * Exercise caution in selecting and using this particular POP | |||
mechanism. | mechanism. | |||
* Only use this POP mechanism if archival of the private key is | * Only use this POP mechanism if archival of the private key is | |||
desired. | desired. | |||
* When appropriate, have the user of the application explicitly | * When appropriate, have the user of the application explicitly | |||
state that they are willing to trust the CA/RA to have a copy of | state that they are willing to trust the CA/RA to have a copy of | |||
their private key before proceeding to reveal the private key. | their private key before proceeding to reveal the private key. | |||
8.4. Attack Against Diffie-Hellman Key Exchange | 8.4. Attack Against Diffie-Hellman Key Exchange | |||
A small subgroup attack during a Diffie-Hellman key exchange may be | A small subgroup attack during a Diffie-Hellman key exchange may be | |||
carried out as follows. A malicious end entity may deliberately | carried out as follows. A malicious end entity may deliberately | |||
choose D-H parameters that enable it to derive (a significant number | choose DH parameters that enable it to derive (a significant number | |||
of bits of) the D-H private key of the CA during a key archival or | of bits of) the DH private key of the CA during a key archival or key | |||
key recovery operation. Armed with this knowledge, the EE would then | recovery operation. Armed with this knowledge, the EE would then be | |||
be able to retrieve the decryption private key of another | able to retrieve the decryption private key of another unsuspecting | |||
unsuspecting end entity, EE2, during EE2's legitimate key archival or | end entity, EE2, during EE2's legitimate key archival or key recovery | |||
key recovery operation with that CA. In order to avoid the | operation with that CA. In order to avoid the possibility of such an | |||
possibility of such an attack, two courses of action are available. | attack, two courses of action are available. (1) The CA may generate | |||
(1) The CA may generate a fresh D-H key pair to be used as a protocol | a fresh DH key pair to be used as a protocol encryption key pair for | |||
encryption key pair for each EE with which it interacts. (2) The CA | each EE with which it interacts. (2) The CA may enter into a key | |||
may enter into a key validation protocol (not specified in this | validation protocol (not specified in this document) with each | |||
document) with each requesting end entity to ensure that the EE's | requesting end entity to ensure that the EE's protocol encryption key | |||
protocol encryption key pair will not facilitate this attack. Option | pair will not facilitate this attack. Option (1) is clearly simpler | |||
(1) is clearly simpler (requiring no extra protocol exchanges from | (requiring no extra protocol exchanges from either party) and is | |||
either party) and is therefore RECOMMENDED. | therefore RECOMMENDED. | |||
8.5. Perfect Forward Secrecy | 8.5. Perfect Forward Secrecy | |||
Long-term security typically requires perfect forward secrecy (pfs). | Long-term security typically requires perfect forward secrecy (pfs). | |||
When transferring encrypted long-term confidential values such as | When transferring encrypted long-term confidential values such as | |||
centrally generated private keys or revocation passphrases, pfs | centrally generated private keys or revocation passphrases, pfs is | |||
likely is important. Yet it is not needed for CMP message protection | likely important. Yet, it is not needed for CMP message protection | |||
providing integrity and authenticity because transfer of PKI messages | providing integrity and authenticity because transfer of PKI messages | |||
is usually completed in very limited time. For the same reason it | is usually completed in very limited time. For the same reason, it | |||
typically is not required for the indirect method of providing a POP | is not typically required for the indirect method to provide a POP | |||
Section 5.2.8.3.2 delivering the newly issued certificate in | (Section 5.2.8.3.2) delivering the newly issued certificate in | |||
encrypted form. | encrypted form. | |||
Encrypted values Section 5.2.2 are transferred using CMS | Encrypted values (Section 5.2.2) are transferred using CMS | |||
EnvelopedData [RFC5652], which does not offer pfs. In cases where | EnvelopedData [RFC5652], which does not offer pfs. In cases where | |||
long-term security is needed, CMP messages SHOULD be transferred over | long-term security is needed, CMP messages SHOULD be transferred over | |||
a mechanism that provides pfs, such as TLS with appropriate cipher | a mechanism that provides pfs, such as TLS with appropriate cipher | |||
suites selected. | suites selected. | |||
8.6. Private Keys for Certificate Signing and CMP Message Protection | 8.6. Private Keys for Certificate Signing and CMP Message Protection | |||
A CA should not reuse its certificate signing key for other purposes, | A CA should not reuse its certificate signing key for other purposes, | |||
such as protecting CMP responses and TLS connections. This way, | such as protecting CMP responses and TLS connections. This way, | |||
exposure to other parts of the system and the number of uses of this | exposure to other parts of the system and the number of uses of this | |||
skipping to change at page 88, line 46 ¶ | skipping to change at line 3937 ¶ | |||
keys or trust anchors. | keys or trust anchors. | |||
If the entropy of shared secret information protecting the delivery | If the entropy of shared secret information protecting the delivery | |||
of a centrally generated key pair is known, it should not be less | of a centrally generated key pair is known, it should not be less | |||
than the security strength of that key pair; if the shared secret | than the security strength of that key pair; if the shared secret | |||
information is reused for different key pairs, the security of the | information is reused for different key pairs, the security of the | |||
shared secret information should exceed the security strength of each | shared secret information should exceed the security strength of each | |||
individual key pair. | individual key pair. | |||
For the case of a PKI management operation that delivers a new trust | For the case of a PKI management operation that delivers a new trust | |||
anchor (e.g., a root CA certificate) using caPubs or genp that is (a) | anchor (e.g., a root CA certificate), using caPubs or genp that is | |||
not concluded in a timely manner or (b) where the shared secret | (a) not concluded in a timely manner or (b) where the shared secret | |||
information is reused for several key management operations, the | information is reused for several key management operations, the | |||
entropy of the shared secret information, if known, should not be | entropy of the shared secret information, if known, should not be | |||
less than the security strength of the trust anchor being managed by | less than the security strength of the trust anchor being managed by | |||
the operation. The shared secret information should have an entropy | the operation. The shared secret information should have an entropy | |||
that at least matches the security strength of the key material being | that at least matches the security strength of the key material being | |||
managed by the operation. Certain use cases may require shared | managed by the operation. Certain use cases may require shared | |||
secret information that may be of a low security strength, e.g., a | secret information that may be of a low security strength, e.g., a | |||
human-generated password. It is RECOMMENDED that such secret | human-generated password. It is RECOMMENDED that such secret | |||
information be limited to a single PKI management operation. | information be limited to a single PKI management operation. | |||
Importantly for this section further information about algorithm use | Importantly for this section, further information about algorithm use | |||
profiles and their security strength is available in CMP Algorithms | profiles and their security strength is available in Section 7 of CMP | |||
[RFC9481] Section 7. | Algorithms [RFC9481]. | |||
8.8. Recurring Usage of KEM Keys for Message Protection | 8.8. Recurring Usage of KEM Keys for Message Protection | |||
For each PKI management operation using MAC-based message protection | For each PKI management operation using MAC-based message protection | |||
involving KEM, see Section 5.1.3.4, the KEM Encapsulate() function, | involving KEM (see Section 5.1.3.4), the KEM Encapsulate() function, | |||
providing a fresh KEM ciphertext (ct) and shared secret (ss), MUST be | providing a fresh KEM ciphertext (ct) and shared secret (ss), MUST be | |||
invoked. | invoked. | |||
It is assumed that the overall data size of the CMP messages in a PKI | It is assumed that the overall data size of the CMP messages in a PKI | |||
management operation protected by a single shared secret key is small | management operation protected by a single shared secret key is small | |||
enough not to introduce extra security risks. | enough not to introduce extra security risks. | |||
To be appropriate for use with this specification, the KEM algorithm | To be appropriate for use with this specification, the KEM algorithm | |||
MUST explicitly be designed to be secure when the public key is used | MUST explicitly be designed to be secure when the public key is used | |||
many times. For example, a KEM algorithm with a single-use public | many times. For example, a KEM algorithm with a single-use public | |||
key is not appropriate because the public key is expected to be | key is not appropriate because the public key is expected to be | |||
carried in a long-lived certificate [RFC5280] and used over and over. | carried in a long-lived certificate [RFC5280] and used over and over. | |||
Thus, KEM algorithms that offer indistinguishability under adaptive | Thus, KEM algorithms that offer indistinguishability under adaptive | |||
chosen ciphertext attack (IND-CCA2) security are appropriate. A | chosen ciphertext attack (IND-CCA2) security are appropriate. A | |||
common design pattern for obtaining IND-CCA2 security with public key | common design pattern for obtaining IND-CCA2 security with public key | |||
reuse is to apply the Fujisaki-Okamoto (FO) transform [Fujisaki] or a | reuse is to apply the Fujisaki-Okamoto (FO) transform [Fujisaki] or a | |||
variant of the FO transform [Hofheinz]. | variant of the FO transform [Hofheinz]. | |||
Therefore, given a long-term public key using an IND-CCA2 secure KEM | Therefore, given a long-term public key using an IND-CCA2-secure KEM | |||
algorithm, there is no limit to the number of CMP messages that can | algorithm, there is no limit to the number of CMP messages that can | |||
be authenticated using KEM keys for MAC-based message protection. | be authenticated using KEM keys for MAC-based message protection. | |||
8.9. Trust Anchor Provisioning Using CMP Messages | 8.9. Trust Anchor Provisioning Using CMP Messages | |||
A provider of trust anchors, which may be an RA involved in | A provider of trust anchors, which may be an RA involved in | |||
configuration management of its clients, MUST NOT include to-be- | configuration management of its clients, MUST NOT include to-be- | |||
trusted CA certificates in a CMP message unless the specific | trusted CA certificates in a CMP message unless the specific | |||
deployment scenario can ensure that it is adequate that the receiving | deployment scenario can ensure that it is adequate that the receiving | |||
EE trusts these certificates, e.g., by loading them into its trust | EE trusts these certificates, e.g., by loading them into its trust | |||
store. | store. | |||
Whenever an EE receives in a CMP message a CA certificate to be used | Whenever an EE receives in a CMP message a CA certificate to be used | |||
as a trust anchor (for example in the caPubs field of a certificate | as a trust anchor (for example, in the caPubs field of a certificate | |||
response or in a general response), it MUST properly authenticate the | response or in a general response), it MUST properly authenticate the | |||
message sender with existing trust anchors without requiring new | message sender with existing trust anchors without requiring new | |||
trust anchor information included in the message. | trust anchor information included in the message. | |||
Additionally, the EE MUST verify that the sender is an authorized | Additionally, the EE MUST verify that the sender is an authorized | |||
source of trust anchors. This authorization is governed by local | source of trust anchors. This authorization is governed by local | |||
policy and typically indicated using shared secret information or | policy and typically indicated using shared secret information or | |||
with a signature-based message protection using a certificate issued | with a signature-based message protection using a certificate issued | |||
by a PKI that is explicitly authorized for this purpose. | by a PKI that is explicitly authorized for this purpose. | |||
8.10. Authorizing Requests for Certificates with Specific EKUs | 8.10. Authorizing Requests for Certificates with Specific EKUs | |||
When a CA issues a certificate containing extended key usage | When a CA issues a certificate containing extended key usage | |||
extensions as defined in Section 4.5, this expresses delegation of an | extensions as defined in Section 4.5, this expresses delegation of an | |||
authorization that originally is only with the CA certificate itself. | authorization that originally is only with the CA certificate itself. | |||
Such delegation is a very sensitive action in a PKI and therefore | Such delegation is a very sensitive action in a PKI, and therefore, | |||
special care must be taken when approving such certificate requests | special care must be taken when approving such certificate requests | |||
to ensure that only legitimate entities receive a certificate | to ensure that only legitimate entities receive a certificate | |||
containing such an EKU. | containing such an EKU. | |||
8.11. Usage of Certificate Transparency Logs | 8.11. Usage of Certificate Transparency Logs | |||
CAs that support indirect POP MUST NOT also publish final | CAs that support indirect POP MUST NOT also publish final | |||
certificates to Certificate Transparency logs [RFC9162] before having | certificates to Certificate Transparency (CT) logs [RFC9162] before | |||
received the certConf message containing the certHash of that | having received the certConf message containing the certHash of that | |||
certificate to complete the POP. The risk is that a malicious actor | certificate to complete the POP. The risk is that a malicious actor | |||
could fetch the final certificate from the CT log and use that to | could fetch the final certificate from the CT log and use that to | |||
spoof a response to the implicit POP challenge via a certConf | spoof a response to the implicit POP challenge via a certConf | |||
response. This risk does not apply to CT precertificates, so those | response. This risk does not apply to CT precertificates, so those | |||
are ok to publish. | are OK to publish. | |||
If a certificate or its precertificate was published in a CT log it | If a certificate or its precertificate was published in a CT log, it | |||
must be revoked, if a required certConf message could not be | must be revoked if a required certConf message could not be verified, | |||
verified, especially when the implicit POP was used. | especially when the implicit POP was used. | |||
9. IANA Considerations | 9. IANA Considerations | |||
This document updates the ASN.1 modules of CMP Updates Appendix A.2 | This document updates the ASN.1 modules in Appendix A.2 of CMP | |||
[RFC9480]. The OID TBD2 (id-mod-cmp2023-02) was registered in the | Updates [RFC9480]. The OID 116 (id-mod-cmp2023-02) was registered in | |||
"SMI Security for PKIX Module Identifier" registry to identify the | the "SMI Security for PKIX Module Identifier" registry to identify | |||
updated ASN.1 module. | the updated ASN.1 module. | |||
In the SMI-numbers registry "SMI Security for PKIX CMP Information | ||||
Types (1.3.6.1.5.5.7.4)" (see https://www.iana.org/assignments/smi- | ||||
numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.4) as defined in | ||||
[RFC7299] one addition has been performed. | ||||
One new entry has been added: | ||||
Decimal: TBD1 | ||||
Description: id-it-KemCiphertextInfo | IANA has added the following entry in the "SMI Security for PKIX CMP | |||
Information Types" registry within the SMI Numbers registry group | ||||
(see <https://www.iana.org/assignments/smi-numbers>) [RFC7299]: | ||||
Reference: [RFCXXXX] | Decimal: 24 | |||
Description: id-it-KemCiphertextInfo | ||||
Reference: RFC 9810 | ||||
The new OID 1.2.840.113533.7.66.16 was registered by Entrust for id- | The new OID 1.2.840.113533.7.66.16 was registered by Entrust for id- | |||
KemBasedMac in the arch 1.2.840.113533.7.66. Entrust registered also | KemBasedMac in the arc 1.2.840.113533.7.66. Entrust also registered | |||
the OIDs for id-PasswordBasedMac and id-DHBasedMac there. | the OIDs for id-PasswordBasedMac and id-DHBasedMac there. | |||
All existing references to [RFC2510], [RFC4210], and [RFC9480] at | All existing references to [RFC2510], [RFC4210], and [RFC9480] at | |||
https://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml except | <https://www.iana.org/assignments/smi-numbers> except those in the | |||
those in the "SMI Security for PKIX Module Identifier" registry | "SMI Security for PKIX Module Identifier" registry have been replaced | |||
should be replaced with references to this document. | with references to this document. | |||
10. Acknowledgements | ||||
The authors of this document wish to thank Carlisle Adams, Stephen | ||||
Farrell, Tomi Kause, and Tero Mononen, the original authors of | ||||
[RFC4210], for their work. | ||||
We also thank all reviewers of this document for their valuable | ||||
feedback. | ||||
Adding KEM support to this document was partly funded by the German | ||||
Federal Ministry of Education and Research in the project Quoryptan | ||||
through grant number 16KIS2033. | ||||
11. References | 10. References | |||
11.1. Normative References | 10.1. Normative References | |||
[RFC2985] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object | [RFC2985] Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object | |||
Classes and Attribute Types Version 2.0", RFC 2985, | Classes and Attribute Types Version 2.0", RFC 2985, | |||
DOI 10.17487/RFC2985, November 2000, | DOI 10.17487/RFC2985, November 2000, | |||
<https://www.rfc-editor.org/rfc/rfc2985>. | <https://www.rfc-editor.org/info/rfc2985>. | |||
[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/rfc/rfc2986>. | <https://www.rfc-editor.org/info/rfc2986>. | |||
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
2003, <https://www.rfc-editor.org/rfc/rfc3629>. | 2003, <https://www.rfc-editor.org/info/rfc3629>. | |||
[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/rfc/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>. | |||
[RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, | [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, | |||
"Elliptic Curve Cryptography Subject Public Key | "Elliptic Curve Cryptography Subject Public Key | |||
Information", RFC 5480, DOI 10.17487/RFC5480, March 2009, | Information", RFC 5480, DOI 10.17487/RFC5480, March 2009, | |||
<https://www.rfc-editor.org/rfc/rfc5480>. | <https://www.rfc-editor.org/info/rfc5480>. | |||
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying | [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying | |||
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, | Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, | |||
September 2009, <https://www.rfc-editor.org/rfc/rfc5646>. | September 2009, <https://www.rfc-editor.org/info/rfc5646>. | |||
[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/rfc/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/rfc/rfc5958>. | <https://www.rfc-editor.org/info/rfc5958>. | |||
[RFC6402] Schaad, J., "Certificate Management over CMS (CMC) | [RFC6402] Schaad, J., "Certificate Management over CMS (CMC) | |||
Updates", RFC 6402, DOI 10.17487/RFC6402, November 2011, | Updates", RFC 6402, DOI 10.17487/RFC6402, November 2011, | |||
<https://www.rfc-editor.org/rfc/rfc6402>. | <https://www.rfc-editor.org/info/rfc6402>. | |||
[RFC8933] Housley, R., "Update to the Cryptographic Message Syntax | [RFC8933] Housley, R., "Update to the Cryptographic Message Syntax | |||
(CMS) for Algorithm Identifier Protection", RFC 8933, | (CMS) for Algorithm Identifier Protection", RFC 8933, | |||
DOI 10.17487/RFC8933, October 2020, | DOI 10.17487/RFC8933, October 2020, | |||
<https://www.rfc-editor.org/rfc/rfc8933>. | <https://www.rfc-editor.org/info/rfc8933>. | |||
[RFC9045] Housley, R., "Algorithm Requirements Update to the | [RFC9045] Housley, R., "Algorithm Requirements Update to the | |||
Internet X.509 Public Key Infrastructure Certificate | Internet X.509 Public Key Infrastructure Certificate | |||
Request Message Format (CRMF)", RFC 9045, | Request Message Format (CRMF)", RFC 9045, | |||
DOI 10.17487/RFC9045, June 2021, | DOI 10.17487/RFC9045, June 2021, | |||
<https://www.rfc-editor.org/rfc/rfc9045>. | <https://www.rfc-editor.org/info/rfc9045>. | |||
[RFC9481] Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | [RFC9481] Brockhaus, H., Aschauer, H., Ounsworth, M., and J. Gray, | |||
"Certificate Management Protocol (CMP) Algorithms", | "Certificate Management Protocol (CMP) Algorithms", | |||
RFC 9481, DOI 10.17487/RFC9481, November 2023, | RFC 9481, DOI 10.17487/RFC9481, November 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9481>. | <https://www.rfc-editor.org/info/rfc9481>. | |||
[RFC9629] Housley, R., Gray, J., and T. Okubo, "Using Key | [RFC9629] Housley, R., Gray, J., and T. Okubo, "Using Key | |||
Encapsulation Mechanism (KEM) Algorithms in the | Encapsulation Mechanism (KEM) Algorithms in the | |||
Cryptographic Message Syntax (CMS)", RFC 9629, | Cryptographic Message Syntax (CMS)", RFC 9629, | |||
DOI 10.17487/RFC9629, August 2024, | DOI 10.17487/RFC9629, August 2024, | |||
<https://www.rfc-editor.org/rfc/rfc9629>. | <https://www.rfc-editor.org/info/rfc9629>. | |||
[MvOV97] Menezes, A., van Oorschot, P., and S. Vanstone, "Handbook | [MvOV97] Menezes, A., van Oorschot, P., and S. Vanstone, "Handbook | |||
of Applied Cryptography", CRC Press ISBN 0-8493-8523-7, | of Applied Cryptography", CRC Press ISBN 0-8493-8523-7, | |||
1996. | 1996. | |||
[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/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
11.2. Informative References | 10.2. Informative References | |||
[RFC9480] Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | [RFC9480] Brockhaus, H., von Oheimb, D., and J. Gray, "Certificate | |||
Management Protocol (CMP) Updates", RFC 9480, | Management Protocol (CMP) Updates", RFC 9480, | |||
DOI 10.17487/RFC9480, November 2023, | DOI 10.17487/RFC9480, November 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9480>. | <https://www.rfc-editor.org/info/rfc9480>. | |||
[RFC9482] Sahni, M., Ed. and S. Tripathi, Ed., "Constrained | [RFC9482] Sahni, M., Ed. and S. Tripathi, Ed., "Constrained | |||
Application Protocol (CoAP) Transfer for the Certificate | Application Protocol (CoAP) Transfer for the Certificate | |||
Management Protocol", RFC 9482, DOI 10.17487/RFC9482, | Management Protocol", RFC 9482, DOI 10.17487/RFC9482, | |||
November 2023, <https://www.rfc-editor.org/rfc/rfc9482>. | November 2023, <https://www.rfc-editor.org/info/rfc9482>. | |||
[RFC9483] Brockhaus, H., von Oheimb, D., and S. Fries, "Lightweight | [RFC9483] Brockhaus, H., von Oheimb, D., and S. Fries, "Lightweight | |||
Certificate Management Protocol (CMP) Profile", RFC 9483, | Certificate Management Protocol (CMP) Profile", RFC 9483, | |||
DOI 10.17487/RFC9483, November 2023, | DOI 10.17487/RFC9483, November 2023, | |||
<https://www.rfc-editor.org/rfc/rfc9483>. | <https://www.rfc-editor.org/info/rfc9483>. | |||
[I-D.ietf-lamps-rfc6712bis] | [RFC9811] Brockhaus, H., von Oheimb, D., Ounsworth, M., and J. Gray, | |||
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)", RFC 9811, | |||
Progress, Internet-Draft, draft-ietf-lamps-rfc6712bis-10, | June 2025, <https://www.rfc-editor.org/info/rfc9811>. | |||
9 January 2025, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-lamps-rfc6712bis-10>. | ||||
[RFC1847] Galvin, J., Murphy, S., Crocker, S., and N. Freed, | [RFC1847] Galvin, J., Murphy, S., Crocker, S., and N. Freed, | |||
"Security Multiparts for MIME: Multipart/Signed and | "Security Multiparts for MIME: Multipart/Signed and | |||
Multipart/Encrypted", RFC 1847, DOI 10.17487/RFC1847, | Multipart/Encrypted", RFC 1847, DOI 10.17487/RFC1847, | |||
October 1995, <https://www.rfc-editor.org/rfc/rfc1847>. | October 1995, <https://www.rfc-editor.org/info/rfc1847>. | |||
[RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | [RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key | |||
Infrastructure Certificate Management Protocols", | Infrastructure Certificate Management Protocols", | |||
RFC 2510, DOI 10.17487/RFC2510, March 1999, | RFC 2510, DOI 10.17487/RFC2510, March 1999, | |||
<https://www.rfc-editor.org/rfc/rfc2510>. | <https://www.rfc-editor.org/info/rfc2510>. | |||
[RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key | [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key | |||
Infrastructure Operational Protocols: FTP and HTTP", | Infrastructure Operational Protocols: FTP and HTTP", | |||
RFC 2585, DOI 10.17487/RFC2585, May 1999, | RFC 2585, DOI 10.17487/RFC2585, May 1999, | |||
<https://www.rfc-editor.org/rfc/rfc2585>. | <https://www.rfc-editor.org/info/rfc2585>. | |||
[RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | [RFC4210] Adams, C., Farrell, S., Kause, T., and T. Mononen, | |||
"Internet X.509 Public Key Infrastructure Certificate | "Internet X.509 Public Key Infrastructure Certificate | |||
Management Protocol (CMP)", RFC 4210, | Management Protocol (CMP)", RFC 4210, | |||
DOI 10.17487/RFC4210, September 2005, | DOI 10.17487/RFC4210, September 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4210>. | <https://www.rfc-editor.org/info/rfc4210>. | |||
[RFC4212] Blinov, M. and C. Adams, "Alternative Certificate Formats | [RFC4212] Blinov, M. and C. Adams, "Alternative Certificate Formats | |||
for the Public-Key Infrastructure Using X.509 (PKIX) | for the Public-Key Infrastructure Using X.509 (PKIX) | |||
Certificate Management Protocols", RFC 4212, | Certificate Management Protocols", RFC 4212, | |||
DOI 10.17487/RFC4212, October 2005, | DOI 10.17487/RFC4212, October 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4212>. | <https://www.rfc-editor.org/info/rfc4212>. | |||
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | |||
RFC 4303, DOI 10.17487/RFC4303, December 2005, | RFC 4303, DOI 10.17487/RFC4303, December 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4303>. | <https://www.rfc-editor.org/info/rfc4303>. | |||
[RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access | [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access | |||
Protocol (LDAP): The Protocol", RFC 4511, | Protocol (LDAP): The Protocol", RFC 4511, | |||
DOI 10.17487/RFC4511, June 2006, | DOI 10.17487/RFC4511, June 2006, | |||
<https://www.rfc-editor.org/rfc/rfc4511>. | <https://www.rfc-editor.org/info/rfc4511>. | |||
[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
DOI 10.17487/RFC5912, June 2010, | DOI 10.17487/RFC5912, June 2010, | |||
<https://www.rfc-editor.org/rfc/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
[RFC6268] Schaad, J. and S. Turner, "Additional New ASN.1 Modules | [RFC6268] Schaad, J. and S. Turner, "Additional New ASN.1 Modules | |||
for the Cryptographic Message Syntax (CMS) and the Public | for the Cryptographic Message Syntax (CMS) and the Public | |||
Key Infrastructure Using X.509 (PKIX)", RFC 6268, | Key Infrastructure Using X.509 (PKIX)", RFC 6268, | |||
DOI 10.17487/RFC6268, July 2011, | DOI 10.17487/RFC6268, July 2011, | |||
<https://www.rfc-editor.org/rfc/rfc6268>. | <https://www.rfc-editor.org/info/rfc6268>. | |||
[RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | [RFC6712] Kause, T. and M. Peylo, "Internet X.509 Public Key | |||
Infrastructure -- HTTP Transfer for the Certificate | Infrastructure -- HTTP Transfer for the Certificate | |||
Management Protocol (CMP)", RFC 6712, | Management Protocol (CMP)", RFC 6712, | |||
DOI 10.17487/RFC6712, September 2012, | DOI 10.17487/RFC6712, September 2012, | |||
<https://www.rfc-editor.org/rfc/rfc6712>. | <https://www.rfc-editor.org/info/rfc6712>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/rfc/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
[RFC7299] Housley, R., "Object Identifier Registry for the PKIX | [RFC7299] Housley, R., "Object Identifier Registry for the PKIX | |||
Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014, | Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014, | |||
<https://www.rfc-editor.org/rfc/rfc7299>. | <https://www.rfc-editor.org/info/rfc7299>. | |||
[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>. | |||
[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/rfc/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/rfc/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/rfc/rfc8995>. | May 2021, <https://www.rfc-editor.org/info/rfc8995>. | |||
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | |||
<https://www.rfc-editor.org/rfc/rfc9147>. | <https://www.rfc-editor.org/info/rfc9147>. | |||
[RFC9162] Laurie, B., Messeri, E., and R. Stradling, "Certificate | [RFC9162] Laurie, B., Messeri, E., and R. Stradling, "Certificate | |||
Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162, | Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162, | |||
December 2021, <https://www.rfc-editor.org/rfc/rfc9162>. | December 2021, <https://www.rfc-editor.org/info/rfc9162>. | |||
[I-D.ietf-anima-brski-ae] | [RFC9733] von Oheimb, D., Ed., Fries, S., and H. Brockhaus, "BRSKI | |||
von Oheimb, D., Fries, S., and H. Brockhaus, "BRSKI-AE: | with Alternative Enrollment (BRSKI-AE)", RFC 9733, | |||
Alternative Enrollment Protocols in BRSKI", Work in | DOI 10.17487/RFC9733, March 2025, | |||
Progress, Internet-Draft, draft-ietf-anima-brski-ae-13, 17 | <https://www.rfc-editor.org/info/rfc9733>. | |||
September 2024, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-anima-brski-ae-13>. | ||||
[I-D.ietf-lamps-kyber-certificates] | [ML-KEM] Turner, S., Kampanakis, P., Massimo, J., and B. | |||
Turner, S., Kampanakis, P., Massimo, J., and B. | ||||
Westerbaan, "Internet X.509 Public Key Infrastructure - | Westerbaan, "Internet X.509 Public Key Infrastructure - | |||
Algorithm Identifiers for the Module-Lattice-Based Key- | Algorithm Identifiers for the Module-Lattice-Based Key- | |||
Encapsulation Mechanism (ML-KEM)", Work in Progress, | Encapsulation Mechanism (ML-KEM)", Work in Progress, | |||
Internet-Draft, draft-ietf-lamps-kyber-certificates-07, 7 | Internet-Draft, draft-ietf-lamps-kyber-certificates-10, 16 | |||
January 2025, <https://datatracker.ietf.org/doc/html/ | April 2025, <https://datatracker.ietf.org/doc/html/draft- | |||
draft-ietf-lamps-kyber-certificates-07>. | ietf-lamps-kyber-certificates-10>. | |||
[NIST.SP.800_90Ar1] | [NIST.SP.800_90Ar1] | |||
Barker, E. B., Kelsey, J. M., and NIST, "Recommendation | Barker, E. B. and J. M. Kelsey, "Recommendation for Random | |||
for Random Number Generation Using Deterministic Random | Number Generation Using Deterministic Random Bit | |||
Bit Generators", NIST Special Publications | Generators", NIST SP 800-90Ar1, | |||
(General) 800-90Ar1, DOI 10.6028/NIST.SP.800-90Ar1, June | DOI 10.6028/NIST.SP.800-90Ar1, June 2015, | |||
2015, | ||||
<https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | |||
NIST.SP.800-90Ar1.pdf>. | NIST.SP.800-90Ar1.pdf>. | |||
[IEEE.802.1AR-2018] | [IEEE.802.1AR-2018] | |||
"IEEE Standard for Local and Metropolitan Area Networks - | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
Secure Device Identity", IEEE, | Networks - Secure Device Identity", IEEE Std 802.1AR-2018, | |||
DOI 10.1109/ieeestd.2018.8423794, ISBN ["9781504450195"], | DOI 10.1109/ieeestd.2018.8423794, August 2018, | |||
July 2018, <https://doi.org/10.1109/ieeestd.2018.8423794>. | <https://doi.org/10.1109/ieeestd.2018.8423794>. | |||
[CVE-2008-0166] | [CVE-2008-0166] | |||
National Institute of Science and Technology (NIST), | National Institute of Science and Technology (NIST), | |||
"National Vulnerability Database - CVE-2008-0166", May | "National Vulnerability Database - CVE-2008-0166", May | |||
2008, <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | 2008, <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | |||
[MiningPsQs] | [MiningPsQs] | |||
Security'12: Proceedings of the 21st USENIX conference on | Heninger, N., Durumeric, Z., Wustrow, E., and J. A. | |||
Security symposium, Heninger, N., Durumeric, Z., Wustrow, | Halderman, "Mining Your Ps and Qs: Detection of Widespread | |||
E., and J. A. Halderman, "Mining Your Ps and Qs: Detection | Weak Keys in Network Devices", 21st USENIX Security | |||
of Widespread Weak Keys in Network Devices", August 2012, | Symposium (USENIX Security 12), August 2012, | |||
<https://www.usenix.org/conference/usenixsecurity12/ | <https://www.usenix.org/conference/usenixsecurity12/ | |||
technical-sessions/presentation/heninger>. | technical-sessions/presentation/heninger>. | |||
[X509.2019] | [X509.2019] | |||
International Telecommunications Union (ITU), "Information | ITU-T, "Information technology - Open Systems | |||
technology - Open Systems Interconnection - The Directory: | Interconnection - The Directory: Public-key and attribute | |||
Public-key and attribute certificate frameworks", | certificate frameworks", ITU-T Recommendation X.509 | |||
ITU Recommendation X.509 (10/2019), 14 October 2019, | (10/2019), October 2019, | |||
<https://handle.itu.int/11.1002/1000/14033>. | <https://handle.itu.int/11.1002/1000/14033>. | |||
[ISO.20543-2019] | [ISO.20543-2019] | |||
International Organization for Standardization (ISO), | ISO/IEC, "Information technology -- Security techniques -- | |||
"Information technology -- Security techniques -- Test and | Test and analysis methods for random bit generators within | |||
analysis methods for random bit generators within ISO/IEC | ISO/IEC 19790 and ISO/IEC 15408", ISO/IEC 20543:2019, | |||
19790 and ISO/IEC 15408", ISO Draft Standard 20543-2019, | October 2019, <https://www.iso.org/standard/68296.html>. | |||
October 2019. | ||||
[AIS31] Federal Office for Information Security (BSI), Killmann, | [AIS31] Killmann, W. and W. Schindler, "A proposal for: | |||
W., and W. Schindler, "A proposal for: Functionality | Functionality classes for random number generators - | |||
classes for random number generators, version 2.0", | Version 2.0", Federal Office for Information Security | |||
September 2011, | (BSI), September 2011, | |||
<https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/ | <https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/ | |||
Zertifizierung/Interpretationen/AIS_31_Functionality_class | Zertifizierung/Interpretationen/AIS_31_Functionality_class | |||
es_for_random_number_generators_e.pdf>. | es_for_random_number_generators_e.pdf>. | |||
[Gueneysu] Gueneysu, T., Hodges, P., Land, G., Ounsworth, M., | [Gueneysu] Gueneysu, T., Hodges, P., Land, G., Ounsworth, M., | |||
Stebila, D., and G. Zaverucha, "Proof-of-possession for | Stebila, D., and G. Zaverucha, "Proof-of-possession for | |||
KEM certificates using verifiable generation", Cryptology | KEM certificates using verifiable generation", Cryptology | |||
ePrint Archive , 2022, <https://eprint.iacr.org/2022/703>. | ePrint Archive, Paper 2022/703, 2022, | |||
<https://eprint.iacr.org/2022/703>. | ||||
[Fujisaki] Fujisaki, E. and T. Okamoto, "Secure Integration of | [Fujisaki] Fujisaki, E. and T. Okamoto, "Secure Integration of | |||
Asymmetric and Symmetric Encryption Schemes", Springer | Asymmetric and Symmetric Encryption Schemes", Journal of | |||
Science and Business Media LLC, Journal of Cryptology vol. | Cryptology, vol. 26, no. 1, pp. 80-101, | |||
26, no. 1, pp. 80-101, DOI 10.1007/s00145-011-9114-1, | DOI 10.1007/s00145-011-9114-1, December 2011, | |||
December 2011, | ||||
<https://doi.org/10.1007/s00145-011-9114-1>. | <https://doi.org/10.1007/s00145-011-9114-1>. | |||
[Hofheinz] Hofheinz, D., Hövelmanns, K., and E. Kiltz, "A Modular | [Hofheinz] Hofheinz, D., Hövelmanns, K., and E. Kiltz, "A Modular | |||
Analysis of the Fujisaki-Okamoto Transformation", Springer | Analysis of the Fujisaki-Okamoto Transformation", Theory | |||
International Publishing, Lecture Notes in Computer | of Cryptography (TCC 2017), Lecture Notes in Computer | |||
Science pp. 341-371, DOI 10.1007/978-3-319-70500-2_12, | Science, vol. 10677, pp. 341-371, | |||
ISBN ["9783319704999", "9783319705002"], 2017, | DOI 10.1007/978-3-319-70500-2_12, November 2017, | |||
<https://doi.org/10.1007/978-3-319-70500-2_12>. | <https://doi.org/10.1007/978-3-319-70500-2_12>. | |||
[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, 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>. | |||
[UNISIG.Subset-137] | [UNISIG.Subset-137] | |||
UNISIG, "ERTMS/ETCS On-line Key Management FFFIS", Subset- | UNISIG, "ERTMS/ETCS On-line Key Management FFFIS", Subset- | |||
137, V1.0.0 , December 2015, | 137, V1.0.0, December 2015, | |||
<https://www.era.europa.eu/system/files/2023-01/ | <https://www.era.europa.eu/system/files/2023-01/ | |||
sos3_index083_-_subset-137_v100.pdf>. | sos3_index083_-_subset-137_v100.pdf>. | |||
Appendix A. Reasons for the Presence of RAs | Appendix A. Reasons for the Presence of RAs | |||
The reasons that justify the presence of an RA can be split into | The reasons that justify the presence of an RA can be split into | |||
those that are due to technical factors and those which are | those that are due to technical factors and those that are | |||
organizational in nature. Technical reasons include the following. | organizational in nature. Technical reasons include the following. | |||
* If hardware tokens are in use, then not all end entities will have | * If hardware tokens are in use, then not all end entities will have | |||
the equipment needed to initialize these; the RA equipment can | the equipment needed to initialize these; the RA equipment can | |||
include the necessary functionality (this may also be a matter of | include the necessary functionality (this may also be a matter of | |||
policy). | policy). | |||
* Some end entities may not have the capability to publish | * Some end entities may not have the capability to publish | |||
certificates; again, the RA may be suitably placed for this. | certificates; again, the RA may be suitably placed for this. | |||
skipping to change at page 98, line 27 ¶ | skipping to change at line 4369 ¶ | |||
(especially if special token initialization equipment is to be | (especially if special token initialization equipment is to be | |||
used). | used). | |||
* Establishing RAs within an organization can reduce the number of | * Establishing RAs within an organization can reduce the number of | |||
CAs required, which is sometimes desirable. | CAs required, which is sometimes desirable. | |||
* RAs may be better placed to identify people with their | * RAs may be better placed to identify people with their | |||
"electronic" names, especially if the CA is physically remote from | "electronic" names, especially if the CA is physically remote from | |||
the end entity. | the end entity. | |||
* For many applications, there will already be in place some | * For many applications, there will already be some administrative | |||
administrative structure so that candidates for the role of RA are | structure in place so that candidates for the role of RA are easy | |||
easy to find (which may not be true of the CA). | to find (which may not be true of the CA). | |||
Further reasons relevant for automated machine-to-machine certificate | Further reasons relevant for automated machine-to-machine certificate | |||
lifecycle management are available in the Lightweight CMP Profile | lifecycle management are available in the Lightweight CMP Profile | |||
[RFC9483]. | [RFC9483]. | |||
Appendix B. The Use of Revocation Passphrase | Appendix B. The Use of Revocation Passphrase | |||
A revocation request must incorporate suitable security mechanisms, | A revocation request must incorporate suitable security mechanisms, | |||
including proper authentication, in order to reduce the probability | including proper authentication, in order to reduce the probability | |||
of successful denial-of-service attacks. A digital signature or DH/ | of successful denial-of-service attacks. A digital signature or DH/ | |||
KEM-based message protection on the request -- REQUIRED to support | KEM-based message protection on the request -- REQUIRED to support | |||
within this specification depending on the key type used if | within this specification depending on the key type used if | |||
revocation requests are supported -- can provide the authentication | revocation requests are supported -- can provide the authentication | |||
required, but there are circumstances under which an alternative | required, but there are circumstances under which an alternative | |||
mechanism may be desirable (e.g., when the private key is no longer | mechanism may be desirable (e.g., when the private key is no longer | |||
accessible and the entity wishes to request a revocation prior to re- | accessible and the entity wishes to request a revocation prior to re- | |||
certification of another key pair). In order to accommodate such | certification of another key pair). In order to accommodate such | |||
circumstances, a password-based MAC, see CMP Algorithms [RFC9481] | circumstances, a password-based MAC (see Section 6.1 of CMP | |||
Section 6.1, on the request is also REQUIRED to support within this | Algorithms [RFC9481]) on the request is also REQUIRED to support | |||
specification (subject to local security policy for a given | within this specification (subject to local security policy for a | |||
environment) if revocation requests are supported and if shared | given environment) if revocation requests are supported and if shared | |||
secret information can be established between the requester and the | secret information can be established between the requester and the | |||
responder prior to the need for revocation. | responder prior to the need for revocation. | |||
A mechanism that has seen use in some environments is "revocation | A mechanism that has seen use in some environments is "revocation | |||
passphrase", in which a value of sufficient entropy (i.e., a | passphrase", in which a value of sufficient entropy (i.e., a | |||
relatively long passphrase rather than a short password) is shared | relatively long passphrase rather than a short password) is shared | |||
between (only) the entity and the CA/RA at some point prior to | between (only) the entity and the CA/RA at some point prior to | |||
revocation; this value is later used to authenticate the revocation | revocation; this value is later used to authenticate the revocation | |||
request. | request. | |||
skipping to change at page 99, line 24 ¶ | skipping to change at line 4415 ¶ | |||
support. Its precise use in CMP messages is as follows. | support. Its precise use in CMP messages is as follows. | |||
* The OID and value specified in Section 5.3.19.9 MAY be sent in a | * The OID and value specified in Section 5.3.19.9 MAY be sent in a | |||
GenMsg message at any time or MAY be sent in the generalInfo field | GenMsg message at any time or MAY be sent in the generalInfo field | |||
of the PKIHeader of any PKIMessage at any time. (In particular, | of the PKIHeader of any PKIMessage at any time. (In particular, | |||
the EncryptedKey structure as described in Section 5.2.2 may be | the EncryptedKey structure as described in Section 5.2.2 may be | |||
sent in the header of the certConf message that confirms | sent in the header of the certConf message that confirms | |||
acceptance of certificates requested in an initialization request | acceptance of certificates requested in an initialization request | |||
or certificate request message.) This conveys a revocation | or certificate request message.) This conveys a revocation | |||
passphrase chosen by the entity to the relevant CA/RA. When | passphrase chosen by the entity to the relevant CA/RA. When | |||
EnvelopedData is used, this is in the decrypted bytes of | EnvelopedData is used, this is in the decrypted bytes of the | |||
encryptedContent field. When EncryptedValue is used, this is in | encryptedContent field. When EncryptedValue is used, this is in | |||
the decrypted bytes of the encValue field. Furthermore, the | the decrypted bytes of the encValue field. Furthermore, the | |||
transfer is accomplished with appropriate confidentiality | transfer is accomplished with appropriate confidentiality | |||
characteristics. | characteristics. | |||
* If a CA/RA receives the revocation passphrase (OID and value | * If a CA/RA receives the revocation passphrase (OID and value | |||
specified in Section 5.3.19.9) in a GenMsg, it MUST construct and | specified in Section 5.3.19.9) in a GenMsg, it MUST construct and | |||
send a GenRep message that includes the OID (with absent value) | send a GenRep message that includes the OID (with absent value) | |||
specified in Section 5.3.19.9. If the CA/RA receives the | specified in Section 5.3.19.9. If the CA/RA receives the | |||
revocation passphrase in the generalInfo field of a PKIHeader of | revocation passphrase in the generalInfo field of a PKIHeader of | |||
skipping to change at page 100, line 6 ¶ | skipping to change at line 4441 ¶ | |||
set. | set. | |||
* Either the localKeyId attribute of EnvelopedData as specified in | * Either the localKeyId attribute of EnvelopedData as specified in | |||
[RFC2985] or the valueHint field of EncryptedValue MAY contain a | [RFC2985] or the valueHint field of EncryptedValue MAY contain a | |||
key identifier (chosen by the entity, along with the passphrase | key identifier (chosen by the entity, along with the passphrase | |||
itself) to assist in later retrieval of the correct passphrase | itself) to assist in later retrieval of the correct passphrase | |||
(e.g., when the revocation request is constructed by the end | (e.g., when the revocation request is constructed by the end | |||
entity and received by the CA/RA). | entity and received by the CA/RA). | |||
* The revocation request message is protected by a password-based | * The revocation request message is protected by a password-based | |||
MAC, see CMP Algorithms [RFC9481] Section 6.1, with the revocation | MAC (see Section 6.1 of "CMP Algorithms" [RFC9481]) with the | |||
passphrase as the key. If appropriate, the senderKID field in the | revocation passphrase as the key. If appropriate, the senderKID | |||
PKIHeader MAY contain the value previously transmitted in | field in the PKIHeader MAY contain the value previously | |||
localKeyId or valueHint. | transmitted in localKeyId or valueHint. | |||
Note: For a message transferring a revocation passphrase indicating | Note: For a message transferring a revocation passphrase indicating | |||
cmp2021(3) in the pvno field of the PKIHeader, the encrypted | cmp2021(3) in the pvno field of the PKIHeader, the encrypted | |||
passphrase MUST be transferred in the envelopedData choice of | passphrase MUST be transferred in the envelopedData choice of | |||
EncryptedKey as defined in Section 5.2.2. When using cmp2000(2) in | EncryptedKey as defined in Section 5.2.2. When using cmp2000(2) in | |||
the message header for backward compatibility, the encryptedValue is | the message header for backward compatibility, the encryptedValue is | |||
used. This allows the necessary conveyance and protection of the | used. This allows the necessary conveyance and protection of the | |||
passphrase while maintaining bits-on-the-wire compatibility with | passphrase while maintaining bits-on-the-wire compatibility with | |||
[RFC4210]. The encryaptedValue choice has been deprecated in favor | [RFC4210]. The encryptedValue choice has been deprecated in favor of | |||
of encryptedData. | encryptedData. | |||
Using the technique specified above, the revocation passphrase may be | Using the technique specified above, the revocation passphrase may be | |||
initially established and updated at any time without requiring extra | initially established and updated at any time without requiring extra | |||
messages or out-of-band exchanges. For example, the revocation | messages or out-of-band exchanges. For example, the revocation | |||
request message itself (protected and authenticated through a MAC | request message itself (protected and authenticated through a MAC | |||
that uses the revocation passphrase as a key) may contain, in the | that uses the revocation passphrase as a key) may contain, in the | |||
PKIHeader, a new revocation passphrase to be used for authenticating | PKIHeader, a new revocation passphrase to be used for authenticating | |||
future revocation requests for any of the entity's other | future revocation requests for any of the entity's other | |||
certificates. In some environments this may be preferable to | certificates. In some environments, this may be preferable to | |||
mechanisms that reveal the passphrase in the revocation request | mechanisms that reveal the passphrase in the revocation request | |||
message, since this can allow a denial-of-service attack in which the | message, since this can allow a denial-of-service attack in which the | |||
revealed passphrase is used by an unauthorized third party to | revealed passphrase is used by an unauthorized third party to | |||
authenticate revocation requests on the entity's other certificates. | authenticate revocation requests on the entity's other certificates. | |||
However, because the passphrase is not revealed in the request | However, because the passphrase is not revealed in the request | |||
message, there is no requirement that the passphrase must always be | message, there is no requirement that the passphrase must always be | |||
updated when a revocation request is made (that is, the same | updated when a revocation request is made (that is, the same | |||
passphrase MAY be used by an entity to authenticate revocation | passphrase MAY be used by an entity to authenticate revocation | |||
requests for different certificates at different times). | requests for different certificates at different times). | |||
skipping to change at page 101, line 5 ¶ | skipping to change at line 4488 ¶ | |||
typically do not provide cryptographic protection over the fields of | typically do not provide cryptographic protection over the fields of | |||
the request message (so that a request for revocation of one | the request message (so that a request for revocation of one | |||
certificate may be modified by an unauthorized third party to a | certificate may be modified by an unauthorized third party to a | |||
request for revocation of another certificate for that entity). | request for revocation of another certificate for that entity). | |||
Appendix C. PKI Management Message Profiles (REQUIRED) | Appendix C. PKI Management Message Profiles (REQUIRED) | |||
This appendix contains detailed profiles for those PKIMessages that | This appendix contains detailed profiles for those PKIMessages that | |||
MUST be supported by conforming implementations (see Section 6). | MUST be supported by conforming implementations (see Section 6). | |||
Note: Appendix C and D focus on PKI management operations managing | Note: Appendices C and D focus on PKI management operations managing | |||
certificates for human end entities. In contrast, the Lightweight | certificates for human end entities. In contrast, the Lightweight | |||
CMP Profile [RFC9483] focuses on typical use cases of industrial and | CMP Profile [RFC9483] focuses on typical use cases of industrial and | |||
IoT scenarios supporting highly automated certificate lifecycle | IoT scenarios supporting highly automated certificate lifecycle | |||
management scenarios. | management scenarios. | |||
Profiles for the PKIMessages used in the following PKI management | Profiles for the PKIMessages used in the following PKI management | |||
operations are provided: | operations are provided: | |||
* initial registration/certification | * initial registration/certification | |||
skipping to change at page 102, line 14 ¶ | skipping to change at line 4543 ¶ | |||
7. Where any ambiguity arises due to naming of fields, the profile | 7. Where any ambiguity arises due to naming of fields, the profile | |||
names these using a "dot" notation (e.g., "certTemplate.subject" | names these using a "dot" notation (e.g., "certTemplate.subject" | |||
means the subject field within a field called certTemplate). | means the subject field within a field called certTemplate). | |||
8. Where a "SEQUENCE OF types" is part of a message, a zero-based | 8. Where a "SEQUENCE OF types" is part of a message, a zero-based | |||
array notation is used to describe fields within the SEQUENCE OF | array notation is used to describe fields within the SEQUENCE OF | |||
(e.g., crm[0].certReq.certTemplate.subject refers to a subfield | (e.g., crm[0].certReq.certTemplate.subject refers to a subfield | |||
of the first CertReqMsg contained in a request message). | of the first CertReqMsg contained in a request message). | |||
9. All PKI message exchanges in Appendix C.4 to C.6 require a | 9. All PKI message exchanges in Appendices C.4 to C.6 require a | |||
certConf message to be sent by the initiating entity and a | certConf message to be sent by the initiating entity and a | |||
PKIConfirm to be sent by the responding entity. The PKIConfirm | PKIConfirm to be sent by the responding entity. The PKIConfirm | |||
is not included in some of the profiles given since its body is | is not included in some of the profiles given since its body is | |||
NULL and its header contents are clear from the context. Any | NULL and its header contents are clear from the context. Any | |||
authenticated means can be used for the protectionAlg (e.g., | authenticated means can be used for the protectionAlg (e.g., | |||
password-based MAC, if shared secret information is known, or | password-based MAC, if shared secret information is known, or | |||
signature). | signature). | |||
C.2. Algorithm Use Profile | C.2. Algorithm Use Profile | |||
skipping to change at page 102, line 48 ¶ | skipping to change at line 4577 ¶ | |||
+=====================+=============+===========================+ | +=====================+=============+===========================+ | |||
| algorithmIdentifier | MSG_SIG_ALG | only signature protection | | | algorithmIdentifier | MSG_SIG_ALG | only signature protection | | |||
| | | is allowed for this proof | | | | | is allowed for this proof | | |||
+---------------------+-------------+---------------------------+ | +---------------------+-------------+---------------------------+ | |||
| signature | present | bits calculated using | | | signature | present | bits calculated using | | |||
| | | MSG_SIG_ALG | | | | | MSG_SIG_ALG | | |||
+---------------------+-------------+---------------------------+ | +---------------------+-------------+---------------------------+ | |||
Table 2 | Table 2 | |||
Note: For examples of MSG_SIG_ALG OIDs see CMP Algorithms Section 3 | Note: For examples of MSG_SIG_ALG OIDs, see Section 3 of CMP | |||
[RFC9481]. | Algorithms [RFC9481]. | |||
Proof-of-possession of a private decryption key that corresponds to a | Proof-of-possession of a private decryption key that corresponds to a | |||
public encryption key for which a certificate has been requested does | public encryption key for which a certificate has been requested does | |||
not use this profile; the CertHash field of the certConf message is | not use this profile; the CertHash field of the certConf message is | |||
used instead. | used instead. | |||
Not every CA/RA will do Proof-of-Possession (of signing key, | Not every CA/RA will do Proof-of-Possession (of signing key, | |||
decryption key, or key agreement key) in the PKIX-CMP in-band | decryption key, or key agreement key) in the PKIX-CMP in-band | |||
certification request protocol (how POP is done MAY ultimately be a | certification request protocol (how POP is done MAY ultimately be a | |||
policy issue that is made explicit for any given CA in its publicized | policy issue that is made explicit for any given CA in its publicized | |||
skipping to change at page 103, line 29 ¶ | skipping to change at line 4604 ¶ | |||
C.4. Initial Registration/Certification (Basic Authenticated Scheme) | C.4. Initial Registration/Certification (Basic Authenticated Scheme) | |||
An (uninitialized) end entity requests a (first) certificate from a | An (uninitialized) end entity requests a (first) certificate from a | |||
CA. When the CA responds with a message containing a certificate, | CA. When the CA responds with a message containing a certificate, | |||
the end entity replies with a certificate confirmation. The CA sends | the end entity replies with a certificate confirmation. The CA sends | |||
a PKIConfirm back, closing the transaction. All messages are | a PKIConfirm back, closing the transaction. All messages are | |||
authenticated. | authenticated. | |||
This scheme allows the end entity to request certification of a | This scheme allows the end entity to request certification of a | |||
locally-generated public key (typically a signature key). The end | locally generated public key (typically a signature key). The end | |||
entity MAY also choose to request the centralized generation and | entity MAY also choose to request the centralized generation and | |||
certification of another key pair (typically an encryption key pair). | certification of another key pair (typically an encryption key pair). | |||
Certification may only be requested for one locally generated public | Certification may only be requested for one locally generated public | |||
key (for more, use separate PKIMessages). | key (for more, use separate PKIMessages). | |||
The end entity MUST support proof-of-possession of the private key | The end entity MUST support proof-of-possession of the private key | |||
associated with the locally-generated public key. | associated with the locally generated public key. | |||
Preconditions: | Preconditions: | |||
1. The end entity can authenticate the CA's signature based on out- | 1. The end entity can authenticate the CA's signature based on out- | |||
of-band means | of-band means. | |||
2. The end entity and the CA share a symmetric MACing key | 2. The end entity and the CA share a symmetric MACing key. | |||
Message flow: | Message Flow: | |||
Step# End entity PKI | Step# End entity PKI | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
1 format ir | 1 format ir | |||
2 --> ir --> | 2 --> ir --> | |||
3 handle ir | 3 handle ir | |||
4 format ip | 4 format ip | |||
5 <-- ip <-- | 5 <-- ip <-- | |||
6 handle ip | 6 handle ip | |||
7 format certConf | 7 format certConf | |||
8 --> certConf --> | 8 --> certConf --> | |||
9 handle certConf | 9 handle certConf | |||
10 format PKIConf | 10 format PKIConf | |||
11 <-- PKIConf <-- | 11 <-- PKIConf <-- | |||
12 handle PKIConf | 12 handle PKIConf | |||
For this profile, we mandate that the end entity MUST include all | For this profile, we mandate that the end entity MUST include all | |||
(i.e., one or two) CertReqMsg in a single PKIMessage, and that the | (i.e., one or two) CertReqMsg in a single PKIMessage and that the PKI | |||
PKI (CA) MUST produce a single response PKIMessage that contains the | (CA) MUST produce a single response PKIMessage that contains the | |||
complete response (i.e., including the OPTIONAL second key pair, if | complete response (i.e., including the OPTIONAL second key pair, if | |||
it was requested and if centralized key generation is supported). | it was requested and if centralized key generation is supported). | |||
For simplicity, we also mandate that this message MUST be the final | For simplicity, we also mandate that this message MUST be the final | |||
one (i.e., no use of "waiting" status value). | one (i.e., no use of "waiting" status value). | |||
The end entity has an out-of-band interaction with the CA/RA. This | The end entity has an out-of-band interaction with the CA/RA. This | |||
transaction established the shared secret, the referenceNumber and | transaction established the shared secret, the referenceNumber and | |||
OPTIONALLY the distinguished name used for both sender and subject | OPTIONALLY the distinguished name used for both the sender and | |||
name in the certificate template. See Section 8.7 for security | subject name in the certificate template. See Section 8.7 for | |||
considerations on quality of shared secret information. | security considerations on quality of shared secret information. | |||
Initialization Request -- ir | Initialization Request -- ir | |||
Field Value | Field Value | |||
recipient CA name | recipient CA name | |||
-- the name of the CA who is being asked to produce a certificate | -- the name of the CA who is being asked to produce a certificate | |||
protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
-- only MAC protection is allowed for this request, based | -- only MAC protection is allowed for this request, based | |||
-- on initial authentication key | -- on initial authentication key | |||
senderKID referenceNum | senderKID referenceNum | |||
-- the reference number which the CA has previously issued | -- the reference number that the CA has previously issued | |||
-- to the end entity (together with the MACing key) | -- to the end entity (together with the MACing key) | |||
transactionID present | transactionID present | |||
-- implementation-specific value, meaningful to end | -- implementation-specific value, meaningful to end | |||
-- entity. | -- entity. | |||
-- [If already in use at the CA, then a rejection message MUST | -- [If already in use at the CA, then a rejection message MUST | |||
-- be produced by the CA] | -- be produced by the CA] | |||
senderNonce present | senderNonce present | |||
-- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
freeText any valid value | freeText any valid value | |||
body ir (CertReqMessages) | body ir (CertReqMessages) | |||
only one or two CertReqMsg | only one or two CertReqMsg | |||
are allowed | are allowed | |||
-- if more certificates are required, requests MUST be | -- if more certificates are required, requests MUST be | |||
-- packaged in separate PKIMessages | -- packaged in separate PKIMessages | |||
CertReqMsg one or two present | CertReqMsg one or two present | |||
-- see below for details, note: crm[0] means the first | -- see below for details, note: crm[0] means the first | |||
-- (which MUST be present), crm[1] means the second (which | -- (which MUST be present), crm[1] means the second (which | |||
-- is OPTIONAL, and used to ask for a centrally-generated key) | -- is OPTIONAL, and used to ask for a centrally generated key) | |||
crm[0].certReq. fixed value of zero | crm[0].certReq. fixed value of zero | |||
certReqId | certReqId | |||
-- this is the index of the template within the message | -- this is the index of the template within the message | |||
crm[0].certReq present | crm[0].certReq present | |||
certTemplate | certTemplate | |||
-- MUST include subject public key value, otherwise unconstrained | -- MUST include subject public key value, otherwise unconstrained | |||
crm[0].pop... optionally present if public key | crm[0].pop... optionally present if public key | |||
POPOSigningKey from crm[0].certReq.certTemplate is | POPOSigningKey from crm[0].certReq.certTemplate is | |||
a signing key | a signing key | |||
-- proof-of-possession MAY be required in this exchange | -- proof-of-possession MAY be required in this exchange | |||
-- (see Appendix D.3 for details) | -- (see Appendix D.3 for details) | |||
crm[0].certReq. optionally present | crm[0].certReq. optionally present | |||
controls.archiveOptions | controls.archiveOptions | |||
-- the end entity MAY request that the locally-generated | -- the end entity MAY request that the locally generated | |||
-- private key be archived | -- private key be archived | |||
crm[0].certReq. optionally present | crm[0].certReq. optionally present | |||
controls.publicationInfo | controls.publicationInfo | |||
-- the end entity MAY ask for publication of resulting cert. | -- the end entity MAY ask for publication of resulting cert. | |||
crm[1].certReq fixed value of one | crm[1].certReq fixed value of one | |||
certReqId | certReqId | |||
-- the index of the template within the message | -- the index of the template within the message | |||
crm[1].certReq present | crm[1].certReq present | |||
skipping to change at page 108, line 4 ¶ | skipping to change at line 4814 ¶ | |||
-- indicates where certificate has been published (present | -- indicates where certificate has been published (present | |||
-- at discretion of CA) | -- at discretion of CA) | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
extraCerts optionally present | extraCerts optionally present | |||
-- the CA MAY provide additional certificates to the end | -- the CA MAY provide additional certificates to the end | |||
-- entity | -- entity | |||
Certificate confirm -- certConf | Certificate confirm -- certConf | |||
Field Value | Field Value | |||
sender present | sender present | |||
-- same as in ir | -- same as in ir | |||
recipient CA name | recipient CA name | |||
-- the name of the CA who was asked to produce a certificate | -- the name of the CA who was asked to produce a certificate | |||
transactionID present | transactionID present | |||
-- value from corresponding ir and ip messages | -- value from corresponding ir and ip messages | |||
senderNonce present | senderNonce present | |||
-- 128 (pseudo-) random bits | -- 128 (pseudo-)random bits | |||
recipNonce present | recipNonce present | |||
-- value from senderNonce in corresponding ip message | -- value from senderNonce in corresponding ip message | |||
protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
-- only MAC protection is allowed for this message. The | -- only MAC protection is allowed for this message. The | |||
-- MAC is based on the initial authentication key shared | -- MAC is based on the initial authentication key shared | |||
-- between the EE and the CA. | -- between the EE and the CA. | |||
senderKID referenceNum | senderKID referenceNum | |||
-- the reference number which the CA has previously issued | -- the reference number that the CA has previously issued | |||
-- to the end entity (together with the MACing key) | -- to the end entity (together with the MACing key) | |||
body certConf | body certConf | |||
-- see Section 5.3.18, "PKI Confirmation Content", for the | -- see Section 5.3.18, "PKI Confirmation Content", for the | |||
-- contents of the certConf fields. | -- contents of the certConf fields. | |||
-- Note: two CertStatus structures are required if both an | -- Note: two CertStatus structures are required if both an | |||
-- encryption and a signing certificate were sent. | -- encryption and a signing certificate were sent. | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
skipping to change at page 109, line 4 ¶ | skipping to change at line 4846 ¶ | |||
body certConf | body certConf | |||
-- see Section 5.3.18, "PKI Confirmation Content", for the | -- see Section 5.3.18, "PKI Confirmation Content", for the | |||
-- contents of the certConf fields. | -- contents of the certConf fields. | |||
-- Note: two CertStatus structures are required if both an | -- Note: two CertStatus structures are required if both an | |||
-- encryption and a signing certificate were sent. | -- encryption and a signing certificate were sent. | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
Confirmation -- PKIConf | Confirmation -- PKIConf | |||
Field Value | Field Value | |||
sender present | sender present | |||
-- same as in ip | -- same as in ip | |||
recipient present | recipient present | |||
-- sender name from certConf | -- sender name from certConf | |||
transactionID present | transactionID present | |||
-- value from certConf message | -- value from certConf message | |||
senderNonce present | senderNonce present | |||
-- 128 (pseudo-) random bits | -- 128 (pseudo-)random bits | |||
recipNonce present | recipNonce present | |||
-- value from senderNonce from certConf message | -- value from senderNonce from certConf message | |||
protectionAlg MSG_MAC_ALG | protectionAlg MSG_MAC_ALG | |||
-- only MAC protection is allowed for this message. | -- only MAC protection is allowed for this message. | |||
senderKID referenceNum | senderKID referenceNum | |||
body PKIConf | body PKIConf | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG | -- bits calculated using MSG_MAC_ALG | |||
C.5. Certificate Request | C.5. Certificate Request | |||
An (initialized) end entity requests a certificate from a CA (for any | An (initialized) end entity requests a certificate from a CA (for any | |||
reason). When the CA responds with a message containing a | reason). When the CA responds with a message containing a | |||
certificate, the end entity replies with a certificate confirmation. | certificate, the end entity replies with a certificate confirmation. | |||
The CA replies with a PKIConfirm, to close the transaction. All | The CA replies with a PKIConfirm to close the transaction. All | |||
messages are authenticated. | messages are authenticated. | |||
The profile for this exchange is identical to that given in | The profile for this exchange is identical to that given in | |||
Appendix C.4, with the following exceptions: | Appendix C.4, with the following exceptions: | |||
* sender name SHOULD be present | * sender name SHOULD be present; | |||
* protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | * protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | |||
also be supported) in request, response, certConfirm, and | also be supported) in request, response, certConfirm, and | |||
PKIConfirm messages; | PKIConfirm messages; | |||
* senderKID and recipKID are only present if required for message | * senderKID and recipKID are only present if required for message | |||
verification; | verification; | |||
* body is cr or cp; | * body is cr or cp; | |||
* body may contain one or two CertReqMsg structures, but either | * body may contain one or two CertReqMsg structures, but either | |||
CertReqMsg may be used to request certification of a locally- | CertReqMsg may be used to request certification of a locally | |||
generated public key or a centrally-generated public key (i.e., | generated public key or a centrally generated public key (i.e., | |||
the position-dependence requirement of Appendix C.4 is removed); | the position-dependence requirement of Appendix C.4 is removed); | |||
and | ||||
* protection bits are calculated according to the protectionAlg | * protection bits are calculated according to the protectionAlg | |||
field. | field. | |||
C.6. Key Update Request | C.6. Key Update Request | |||
An (initialized) end entity requests a certificate from a CA (to | An (initialized) end entity requests a certificate from a CA (to | |||
update the key pair and/or corresponding certificate that it already | update the key pair and/or corresponding certificate that it already | |||
possesses). When the CA responds with a message containing a | possesses). When the CA responds with a message containing a | |||
certificate, the end entity replies with a certificate confirmation. | certificate, the end entity replies with a certificate confirmation. | |||
The CA replies with a PKIConfirm, to close the transaction. All | The CA replies with a PKIConfirm to close the transaction. All | |||
messages are authenticated. | messages are authenticated. | |||
The profile for this exchange is identical to that given in | The profile for this exchange is identical to that given in | |||
Appendix C.4, with the following exceptions: | Appendix C.4, with the following exceptions: | |||
1. sender name SHOULD be present | 1. sender name SHOULD be present; | |||
2. protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | 2. protectionAlg of MSG_SIG_ALG MUST be supported (MSG_MAC_ALG MAY | |||
also be supported) in request, response, certConfirm, and | also be supported) in request, response, certConfirm, and | |||
PKIConfirm messages; | PKIConfirm messages; | |||
3. senderKID and recipKID are only present if required for message | 3. senderKID and recipKID are only present if required for message | |||
verification; | verification; | |||
4. body is kur or kup; | 4. body is kur or kup; | |||
5. body may contain one or two CertReqMsg structures, but either | 5. body may contain one or two CertReqMsg structures, but either | |||
CertReqMsg may be used to request certification of a locally- | CertReqMsg may be used to request certification of a locally | |||
generated public key or a centrally-generated public key | generated public key or a centrally generated public key | |||
(i.e.,the position-dependence requirement of Appendix C.4 is | (i.e.,the position-dependence requirement of Appendix C.4 is | |||
removed); | removed); | |||
6. protection bits are calculated according to the protectionAlg | 6. protection bits are calculated according to the protectionAlg | |||
field; | field; and | |||
7. regCtrl OldCertId SHOULD be used (unless it is clear to both | 7. regCtrl OldCertId SHOULD be used (unless it is clear to both the | |||
sender and receiver -- by means not specified in this document -- | sender and receiver -- by means not specified in this document -- | |||
that it is not needed). | that it is not needed). | |||
Appendix D. PKI Management Message Profiles (OPTIONAL) | Appendix D. PKI Management Message Profiles (OPTIONAL) | |||
This appendix contains detailed profiles for those PKIMessages that | This appendix contains detailed profiles for those PKIMessages that | |||
MAY be supported by implementations. | MAY be supported by implementations. | |||
Profiles for the PKIMessages used in the following PKI management | Profiles for the PKIMessages used in the following PKI management | |||
operations are provided: | operations are provided: | |||
skipping to change at page 111, line 4 ¶ | skipping to change at line 4944 ¶ | |||
This appendix contains detailed profiles for those PKIMessages that | This appendix contains detailed profiles for those PKIMessages that | |||
MAY be supported by implementations. | MAY be supported by implementations. | |||
Profiles for the PKIMessages used in the following PKI management | Profiles for the PKIMessages used in the following PKI management | |||
operations are provided: | operations are provided: | |||
* root CA key update | * root CA key update | |||
* information request/response | * information request/response | |||
* cross-certification request/response (1-way) | * cross-certification request/response (1-way) | |||
* in-band initialization using external identity certificate | * in-band initialization using external identity certificate | |||
Later versions of this document may extend the above to include | Future versions of this document may extend the above to include | |||
profiles for the operations listed below (along with other | profiles for the operations listed below (along with other | |||
operations, if desired). | operations, if desired). | |||
* revocation request | * revocation request | |||
* certificate publication | * certificate publication | |||
* CRL publication | * CRL publication | |||
D.1. General Rules for Interpretation of These Profiles. | D.1. General Rules for Interpretation of These Profiles | |||
Identical to Appendix C.1. | Identical to Appendix C.1. | |||
D.2. Algorithm Use Profile | D.2. Algorithm Use Profile | |||
Identical to Appendix C.2. | Identical to Appendix C.2. | |||
D.3. Self-Signed Certificates | D.3. Self-Signed Certificates | |||
Profile of how a certificate structure may be "self-signed". These | Profile of how a certificate structure may be "self-signed". These | |||
skipping to change at page 113, line 8 ¶ | skipping to change at line 5035 ¶ | |||
| | | certificates | | | | | certificates | | |||
| | | signed using the | | | | | signed using the | | |||
| | | new private key) | | | | | new private key) | | |||
+------------+--------------------------------+---------------------+ | +------------+--------------------------------+---------------------+ | |||
Table 4 | Table 4 | |||
D.5. PKI Information Request/Response | D.5. PKI Information Request/Response | |||
The end entity sends a general message to the PKI requesting details | The end entity sends a general message to the PKI requesting details | |||
that will be required for later PKI management operations. RA/CA | that will be required for later PKI management operations. The RA/CA | |||
responds with a general response. If an RA generates the response, | responds with a general response. If an RA generates the response, | |||
then it will simply forward the equivalent message that it previously | then it will simply forward the equivalent message that it previously | |||
received from the CA, with the possible addition of certificates to | received from the CA, with the possible addition of certificates to | |||
the extraCerts fields of the PKIMessage. A confirmation message is | the extraCerts fields of the PKIMessage. A confirmation message is | |||
not required from the end entity. | not required from the end entity. | |||
Message Flows: | Message Flows: | |||
Step# End entity PKI | Step# End entity PKI | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
skipping to change at page 114, line 8 ¶ | skipping to change at line 5077 ¶ | |||
GenMsgContent empty SEQUENCE | GenMsgContent empty SEQUENCE | |||
-- all relevant information requested | -- all relevant information requested | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG | -- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG | |||
genP: | genP: | |||
Field Value | Field Value | |||
sender CA name | sender CA name | |||
-- name of the CA which produced the message | -- name of the CA that produced the message | |||
protectionAlg MSG_MAC_ALG or MSG_SIG_ALG | protectionAlg MSG_MAC_ALG or MSG_SIG_ALG | |||
-- any authenticated protection alg. | -- any authenticated protection alg. | |||
senderKID present if required | senderKID present if required | |||
-- must be present if required for verification of message | -- must be present if required for verification of message | |||
-- protection | -- protection | |||
body genp (GenRepContent) | body genp (GenRepContent) | |||
CAProtEncCert present (object identifier one | CAProtEncCert present (object identifier one | |||
of PROT_ENC_ALG), with relevant | of PROT_ENC_ALG), with relevant | |||
value | value | |||
-- to be used if end entity needs to encrypt information for | -- to be used if end entity needs to encrypt information for | |||
-- the CA (e.g., private key for recovery purposes) | -- the CA (e.g., private key for recovery purposes) | |||
SignKeyPairTypes present, with relevant value | SignKeyPairTypes present, with relevant value | |||
-- the set of signature algorithm identifiers that this CA will | -- the set of signature algorithm identifiers that this CA will | |||
-- certify for subject public keys | -- certify for subject public keys | |||
EncKeyPairTypes present, with relevant value | EncKeyPairTypes present, with relevant value | |||
-- the set of encryption/key agreement algorithm identifiers that | -- the set of encryption / key agreement algorithm identifiers that | |||
-- this CA will certify for subject public keys | -- this CA will certify for subject public keys | |||
PreferredSymmAlg present (object identifier one | PreferredSymmAlg present (object identifier one | |||
of PROT_SYM_ALG) , with relevant | of PROT_SYM_ALG) , with relevant | |||
value | value | |||
-- the symmetric algorithm that this CA expects to be used | -- the symmetric algorithm that this CA expects to be used | |||
-- in later PKI messages (for encryption) | -- in later PKI messages (for encryption) | |||
RootCaKeyUpdate optionally present, with | RootCaKeyUpdate optionally present, with | |||
relevant value | relevant value | |||
-- Use RootCaKeyUpdate; if backward compatibility with cmp2000 is | -- Use RootCaKeyUpdate; if backward compatibility with cmp2000 is | |||
-- required, use CAKeyUpdateInfo. | -- required, use CAKeyUpdateInfo. | |||
skipping to change at page 115, line 5 ¶ | skipping to change at line 5117 ¶ | |||
-- that the responding CA is the root CA in question) | -- that the responding CA is the root CA in question) | |||
CurrentCRL optionally present, with relevant value | CurrentCRL optionally present, with relevant value | |||
-- the CA MAY provide a copy of a complete CRL (i.e., | -- the CA MAY provide a copy of a complete CRL (i.e., | |||
-- fullest possible one) | -- fullest possible one) | |||
protection present | protection present | |||
-- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG | -- bits calculated using MSG_MAC_ALG or MSG_SIG_ALG | |||
extraCerts optionally present | extraCerts optionally present | |||
-- can be used to send some certificates to the end | -- can be used to send some certificates to the end | |||
-- entity. An RA MAY add its certificate here. | -- entity. An RA MAY add its certificate here. | |||
D.6. Cross Certification Request/Response (1-way) | D.6. Cross-Certification Request/Response (1-way) | |||
Creation of a single cross-certificate (i.e., not two at once). The | Creation of a single cross-certificate (i.e., not two at once). The | |||
requesting CA MAY choose who is responsible for publication of the | requesting CA MAY choose who is responsible for publication of the | |||
cross-certificate created by the responding CA through use of the | cross-certificate created by the responding CA through use of the | |||
PKIPublicationInfo control. | PKIPublicationInfo control. | |||
Preconditions: | Preconditions: | |||
1. Responding CA can verify the origin of the request (possibly | 1. Responding CA can verify the origin of the request (possibly | |||
requiring out-of-band means) before processing the request. | requiring out-of-band means) before processing the request. | |||
2. Requesting CA can authenticate the authenticity of the origin of | 2. Requesting CA can authenticate the authenticity of the origin of | |||
the response (possibly requiring out-of-band means) before | the response (possibly requiring out-of-band means) before | |||
processing the response | processing the response. | |||
The use of certificate confirmation and the corresponding server | The use of certificate confirmation and the corresponding server | |||
confirmation is determined by the generalInfo field in the PKIHeader | confirmation is determined by the generalInfo field in the PKIHeader | |||
(see Section 5.1.1). The following profile does not mandate support | (see Section 5.1.1). The following profile does not mandate support | |||
for either confirmation. | for either confirmation. | |||
Message Flows: | Message Flows: | |||
Step# Requesting CA Responding CA | Step# Requesting CA Responding CA | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
skipping to change at page 116, line 8 ¶ | skipping to change at line 5169 ¶ | |||
protectionAlg MSG_SIG_ALG | protectionAlg MSG_SIG_ALG | |||
-- only signature protection is allowed for this request | -- only signature protection is allowed for this request | |||
senderKID present if required | senderKID present if required | |||
-- must be present if required for verification of message | -- must be present if required for verification of message | |||
-- protection | -- protection | |||
recipKID present if required | recipKID present if required | |||
-- must be present if required for verification of message | -- must be present if required for verification of message | |||
-- protection | -- protection | |||
transactionID present | transactionID present | |||
-- implementation-specific value, meaningful to requesting CA. | -- implementation-specific value, meaningful to requesting CA. | |||
-- [If already in use at responding CA then a rejection message | -- [If already in use at responding CA, then a rejection message | |||
-- MUST be produced by responding CA] | -- MUST be produced by responding CA] | |||
senderNonce present | senderNonce present | |||
-- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
freeText any valid value | freeText any valid value | |||
body ccr (CertReqMessages) | body ccr (CertReqMessages) | |||
only one CertReqMsg | only one CertReqMsg | |||
allowed | allowed | |||
-- if multiple cross certificates are required, they MUST be | -- if multiple cross-certificates are required, they MUST be | |||
-- packaged in separate PKIMessages | -- packaged in separate PKIMessages | |||
certTemplate present | certTemplate present | |||
-- details follow | -- details follow | |||
version v1 or v3 | version v1 or v3 | |||
-- v3 STRONGLY RECOMMENDED | -- v3 STRONGLY RECOMMENDED | |||
signingAlg present | signingAlg present | |||
-- the requesting CA must know in advance with which algorithm it | -- the requesting CA must know in advance with which algorithm it | |||
-- wishes the certificate to be signed | -- wishes the certificate to be signed | |||
subject present | subject present | |||
skipping to change at page 116, line 38 ¶ | skipping to change at line 5199 ¶ | |||
validity present | validity present | |||
-- MUST be completely specified (i.e., both fields present) | -- MUST be completely specified (i.e., both fields present) | |||
issuer present | issuer present | |||
-- may be NULL-DN only if issuerAltNames extension value proposed | -- may be NULL-DN only if issuerAltNames extension value proposed | |||
publicKey present | publicKey present | |||
-- the key to be certified (which must be for a signing algorithm) | -- the key to be certified (which must be for a signing algorithm) | |||
extensions optionally present | extensions optionally present | |||
-- a requesting CA must propose values for all extensions | -- a requesting CA must propose values for all extensions | |||
-- that it requires to be in the cross-certificate | -- that it requires to be in the cross-certificate | |||
POPOSigningKey present | POPOSigningKey present | |||
-- see Section D3: Proof-of-possession profile | -- see Appendix C.3: Proof-of-Possession Profile | |||
protection present | protection present | |||
-- bits calculated using MSG_SIG_ALG | -- bits calculated using MSG_SIG_ALG | |||
extraCerts optionally present | extraCerts optionally present | |||
-- MAY contain any additional certificates that requester wishes | -- MAY contain any additional certificates that requester wishes | |||
-- to include | -- to include | |||
ccp: | ccp: | |||
Field Value | Field Value | |||
skipping to change at page 117, line 28 ¶ | skipping to change at line 5231 ¶ | |||
recipKID present if required | recipKID present if required | |||
transactionID present | transactionID present | |||
-- value from corresponding ccr message | -- value from corresponding ccr message | |||
senderNonce present | senderNonce present | |||
-- 128 (pseudo-)random bits | -- 128 (pseudo-)random bits | |||
recipNonce present | recipNonce present | |||
-- senderNonce from corresponding ccr message | -- senderNonce from corresponding ccr message | |||
freeText any valid value | freeText any valid value | |||
body ccp (CertRepMessage) | body ccp (CertRepMessage) | |||
only one CertResponse allowed | only one CertResponse allowed | |||
-- if multiple cross certificates are required they MUST be | -- if multiple cross-certificates are required, they MUST be | |||
-- packaged in separate PKIMessages | -- packaged in separate PKIMessages | |||
response present | response present | |||
status present | status present | |||
PKIStatusInfo.status present | PKIStatusInfo.status present | |||
-- if PKIStatusInfo.status is one of: | -- if PKIStatusInfo.status is one of: | |||
-- accepted, or | -- accepted, or | |||
-- grantedWithMods, | -- grantedWithMods, | |||
-- then certifiedKeyPair MUST be present and failInfo MUST | -- then certifiedKeyPair MUST be present and failInfo MUST | |||
-- be absent | -- be absent | |||
failInfo present depending on | failInfo present depending on | |||
PKIStatusInfo.status | PKIStatusInfo.status | |||
-- if PKIStatusInfo.status is: | -- if PKIStatusInfo.status is: | |||
-- rejection | -- rejection, | |||
-- then certifiedKeyPair MUST be absent and failInfo MUST be | -- then certifiedKeyPair MUST be absent and failInfo MUST be | |||
-- present and contain appropriate bit settings | -- present and contain appropriate bit settings | |||
certifiedKeyPair present depending on | certifiedKeyPair present depending on | |||
PKIStatusInfo.status | PKIStatusInfo.status | |||
certificate present depending on | certificate present depending on | |||
certifiedKeyPair | certifiedKeyPair | |||
-- content of actual certificate must be examined by requesting CA | -- content of actual certificate must be examined by requesting CA | |||
-- before publication | -- before publication | |||
protection present | protection present | |||
-- bits calculated using MSG_SIG_ALG | -- bits calculated using MSG_SIG_ALG | |||
extraCerts optionally present | extraCerts optionally present | |||
-- MAY contain any additional certificates that responder wishes | -- MAY contain any additional certificates that responder wishes | |||
-- to include | -- to include | |||
D.7. In-Band Initialization Using External Identity Certificate | D.7. In-Band Initialization Using External Identity Certificate | |||
An (uninitialized) end entity wishes to initialize into the PKI with | An (uninitialized) end entity wishes to initialize into the PKI with | |||
a CA, CA-1. It uses, for authentication purposes, a pre-existing | a CA, CA-1. It uses, for authentication purposes, a pre-existing | |||
identity certificate issued by another (external) CA, CA-X. A trust | identity certificate issued by another (external) CA, CA-X. A trust | |||
relationship must already have been established between CA-1 and CA-X | relationship must already have been established between CA-1 and CA-X | |||
so that CA-1 can validate the EE identity certificate signed by CA-X. | so that CA-1 can validate the EE identity certificate signed by CA-X. | |||
Furthermore, some mechanism must already have been established within | Furthermore, some mechanism must already have been established within | |||
the Trusted Execution Environment (TEE) also known as Personal | the Trusted Execution Environment (TEE), also known as Personal | |||
Security Environment (PSE) of the EE that would allow it to | Security Environment (PSE), of the EE that would allow it to | |||
authenticate and verify PKIMessages signed by CA-1 (as one example, | authenticate and verify PKIMessages signed by CA-1 (as one example, | |||
the TEE may contain a certificate issued for the public key of CA-1, | the TEE may contain a certificate issued for the public key of CA-1, | |||
signed by another CA that the EE trusts on the basis of out-of-band | signed by another CA that the EE trusts on the basis of out-of-band | |||
authentication techniques). | authentication techniques). | |||
The EE sends an initialization request to start the transaction. | The EE sends an initialization request to start the transaction. | |||
When CA-1 responds with a message containing the new certificate, the | When CA-1 responds with a message containing the new certificate, the | |||
end entity replies with a certificate confirmation. CA-1 replies | end entity replies with a certificate confirmation. CA-1 replies | |||
with a PKIConfirm to close the transaction. All messages are signed | with a PKIConfirm to close the transaction. All messages are signed | |||
(the EE messages are signed using the private key that corresponds to | (the EE messages are signed using the private key that corresponds to | |||
skipping to change at page 118, line 48 ¶ | skipping to change at line 5299 ¶ | |||
* the EE and CA-1 do not share a symmetric MACing key (i.e., there | * the EE and CA-1 do not share a symmetric MACing key (i.e., there | |||
is no out-of-band shared secret information between these | is no out-of-band shared secret information between these | |||
entities); | entities); | |||
* sender name in ir MUST be present (and identical to the subject | * sender name in ir MUST be present (and identical to the subject | |||
name present in the external identity certificate); | name present in the external identity certificate); | |||
* protectionAlg of MSG_SIG_ALG MUST be used in all messages; | * protectionAlg of MSG_SIG_ALG MUST be used in all messages; | |||
* external identity cert. MUST be carried in ir extraCerts field | * external identity certificate MUST be carried in ir extraCerts | |||
field | ||||
* senderKID and recipKID are not used; | * senderKID and recipKID are not used; | |||
* body is ir or ip; | * body is ir or ip; and | |||
* protection bits are calculated according to the protectionAlg | * protection bits are calculated according to the protectionAlg | |||
field. | field. | |||
Appendix E. Variants of Using KEM Keys for PKI Message Protection | Appendix E. Variants of Using KEM Keys for PKI Message Protection | |||
As described in Section 5.1.3.4, any party in a PKI management | As described in Section 5.1.3.4, any party in a PKI management | |||
operation may wish to use a KEM key pair for message protection. | operation may wish to use a KEM key pair for message protection. | |||
Below possible cases are described. | Possible cases are described below. | |||
For any PKI management operation started by a PKI entity with any | For any PKI management operation started by a PKI entity with any | |||
type of request message, the following message flows describe the use | type of request message, the following message flows describe the use | |||
of a KEM key. There are two cases to distinguish, namely whether the | of a KEM key. There are two cases to distinguish, namely whether the | |||
PKI entity or the PKI management entity owns a KEM key pair. If both | PKI entity or the PKI management entity owns a KEM key pair. If both | |||
sides own KEM key pairs, the flows need to be combined such that for | sides own KEM key pairs, the flows need to be combined such that for | |||
each direction a shared secret key is established. | each direction a shared secret key is established. | |||
In the following message flows Alice indicates the PKI entity that | In the following message flows, Alice indicates the PKI entity that | |||
uses a KEM key pair for message authentication and Bob provides the | uses a KEM key pair for message authentication and Bob provides the | |||
KEM ciphertext using Alice's public KEM key, as described in | KEM ciphertext using Alice's public KEM key, as described in | |||
Section 5.1.3.4. | Section 5.1.3.4. | |||
Message Flow when the PKI entity has a KEM key pair and certificate: | Message Flow when the PKI entity has a KEM key pair and certificate: | |||
Step# PKI entity PKI management entity | Step# PKI entity PKI management entity | |||
(Alice) (Bob) | (Alice) (Bob) | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
1 format unprotected genm | 1 format unprotected genm | |||
skipping to change at page 120, line 47 ¶ | skipping to change at line 5371 ¶ | |||
available key material | available key material | |||
14 <-- response <-- | 14 <-- response <-- | |||
15 verify protection | 15 verify protection | |||
provided by the | provided by the | |||
PKI management entity | PKI management entity | |||
16 Further messages of this PKI management operation | 16 Further messages of this PKI management operation | |||
can be exchanged with MAC-based protection by the PKI | can be exchanged with MAC-based protection by the PKI | |||
entity using the established shared secret key (ssk) | entity using the established shared secret key (ssk) | |||
Figure 3: Message Flow when PKI entity has a KEM key pair | Figure 3: Message Flow When the PKI Entity Has a KEM Key Pair | |||
Message Flow when the PKI entity knows that the PKI management entity | Message Flow when the PKI entity knows that the PKI management entity | |||
uses a KEM key pair and has the authentic public key: | uses a KEM key pair and has the authentic public key: | |||
Step# PKI entity PKI management entity | Step# PKI entity PKI management entity | |||
(Bob) (Alice) | (Bob) (Alice) | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
1 perform KEM Encapsulate | 1 perform KEM Encapsulate | |||
2 format request providing | 2 format request providing | |||
KEM ciphertext in | KEM ciphertext in | |||
skipping to change at page 121, line 35 ¶ | skipping to change at line 5406 ¶ | |||
9 verify MAC-based | 9 verify MAC-based | |||
protection | protection | |||
-------- PKI management entity authenticated by PKI entity -------- | -------- PKI management entity authenticated by PKI entity -------- | |||
10 Further messages of this PKI management operation | 10 Further messages of this PKI management operation | |||
can be exchanged with MAC-based protection by the | can be exchanged with MAC-based protection by the | |||
PKI management entity using the established | PKI management entity using the established | |||
shared secret key (ssk) | shared secret key (ssk) | |||
Figure 4: Message Flow when the PKI entity knows that the PKI | Figure 4: Message Flow When the PKI Entity Knows That the PKI | |||
management entity uses a KEM key pair and has the authentic | Management Entity Uses a KEM Key Pair and Has the Authentic | |||
public key | Public Key | |||
Note: Figure 4 describes the situation where KEM-based message | Note: Figure 4 describes the situation where KEM-based message | |||
protection may not require more that one message exchange. In this | protection may not require more than one message exchange. In this | |||
case, the transactionID MUST also be used by the PKI entity (Bob) to | case, the transactionID MUST also be used by the PKI entity (Bob) to | |||
ensure domain separation between different PKI management operations. | ensure domain separation between different PKI management operations. | |||
Message Flow when the PKI entity does not know that the PKI | Message Flow when the PKI entity does not know that the PKI | |||
management entity uses a KEM key pair: | management entity uses a KEM key pair: | |||
Step# PKI entity PKI management entity | Step# PKI entity PKI management entity | |||
(Bob) (Alice) | (Bob) (Alice) | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
1 format request with | 1 format request with | |||
skipping to change at page 122, line 22 ¶ | skipping to change at line 5435 ¶ | |||
2 --> request --> | 2 --> request --> | |||
3 format unprotected error | 3 format unprotected error | |||
with status "rejection" | with status "rejection" | |||
and failInfo | and failInfo | |||
"wrongIntegrity" and KEM | "wrongIntegrity" and KEM | |||
certificate in | certificate in | |||
extraCerts | extraCerts | |||
4 <-- error <-- | 4 <-- error <-- | |||
5 validate KEM certificate | 5 validate KEM certificate | |||
6 proceed as shown in the Figure before | 6 proceed as shown in the figure before | |||
Figure 5: Message Flow when the PKI entity does not know that the PKI | Figure 5: Message Flow When the PKI Entity Does Not Know That the PKI | |||
management entity uses a KEM key pair | Management Entity Uses a KEM Key Pair | |||
Appendix F. Compilable ASN.1 Definitions | Appendix F. Compilable ASN.1 Definitions | |||
This section contains the updated 2002 ASN.1 module for [RFC5912] as | This section contains the updated 2002 ASN.1 module from [RFC5912], | |||
updated in [RFC9480]. This module replaces the module in Section 9 | which was updated in [RFC9480]. This module replaces the module in | |||
of [RFC5912]. The module contains those changes to the normative | Section 9 of [RFC5912]. The module contains those changes to the | |||
ASN.1 module from Appendix F of [RFC4210] that were specified in | normative ASN.1 module from Appendix F of [RFC4210] that were | |||
[RFC9480], as well as changes made in this document. | specified in [RFC9480], as well as changes made in this document. | |||
PKIXCMP-2023 | PKIXCMP-2023 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-cmp2023-02(TBD2) } | id-mod-cmp2023-02(116) } | |||
DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
IMPORTS | IMPORTS | |||
AttributeSet{}, SingleAttribute{}, Extensions{}, EXTENSION, ATTRIBUTE | AttributeSet{}, SingleAttribute{}, Extensions{}, EXTENSION, ATTRIBUTE | |||
FROM PKIX-CommonTypes-2009 | FROM PKIX-CommonTypes-2009 | |||
{iso(1) identified-organization(3) dod(6) internet(1) security(5) | {iso(1) identified-organization(3) dod(6) internet(1) security(5) | |||
mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} | mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} | |||
AlgorithmIdentifier{}, SIGNATURE-ALGORITHM, ALGORITHM, | AlgorithmIdentifier{}, SIGNATURE-ALGORITHM, ALGORITHM, | |||
skipping to change at page 124, line 6 ¶ | skipping to change at line 5516 ¶ | |||
smime(16) modules(0) id-mod-cms-2009(58)} | smime(16) modules(0) id-mod-cms-2009(58)} | |||
-- The import of EnvelopedData and SignedData from [RFC6268] is | -- The import of EnvelopedData and SignedData from [RFC6268] is | |||
-- added due to the updates made in CMP Updates [RFC9480] | -- added due to the updates made in CMP Updates [RFC9480] | |||
KEM-ALGORITHM | KEM-ALGORITHM | |||
FROM KEMAlgorithmInformation-2023 -- [RFC9629] | FROM KEMAlgorithmInformation-2023 -- [RFC9629] | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-kemAlgorithmInformation-2023(109) } | id-mod-kemAlgorithmInformation-2023(109) } | |||
-- The import of KEM-ALGORITHM was added due to the updates made | -- The import of KEM-ALGORITHM was added due to the updates made | |||
-- in [RFCXXXX] | -- in [RFC9810] | |||
; | ; | |||
-- History of the PKIXCMP ASN.1 modules | -- History of the PKIXCMP ASN.1 modules | |||
-- [RFC2510] | -- [RFC2510] | |||
-- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.9 (id-mod-cmp) | -- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.9 (id-mod-cmp) | |||
-- Obsoleted by RFC 4210 PKIXCMP, 1.3.6.1.5.5.7.0.16 | -- Obsoleted by RFC 4210 PKIXCMP, 1.3.6.1.5.5.7.0.16 | |||
-- (id-mod-cmp2000) | -- (id-mod-cmp2000) | |||
-- [RFC4210] | -- [RFC4210] | |||
-- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.16 (id-mod-cmp2000) | -- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.16 (id-mod-cmp2000) | |||
-- Replaced by RFC 9480 PKIXCMP, 1.3.6.1.5.5.7.0.99 | -- Replaced by RFC 9480 PKIXCMP, 1.3.6.1.5.5.7.0.99 | |||
-- (id-mod-cmp2021-88) | -- (id-mod-cmp2021-88) | |||
-- [RFC5912] | -- [RFC5912] | |||
-- 2002 Syntax, PKIXCMP-2009, 1.3.6.1.5.5.7.0.50 | -- 2002 Syntax, PKIXCMP-2009, 1.3.6.1.5.5.7.0.50 | |||
-- (id-mod-cmp2000-02) | -- (id-mod-cmp2000-02) | |||
-- Replaced by RFC 9480 PKIXCMP-2021, 1.3.6.1.5.5.7.0.100 | -- Replaced by RFC 9480 PKIXCMP-2021, 1.3.6.1.5.5.7.0.100 | |||
-- (id-mod-cmp2021-02) | -- (id-mod-cmp2021-02) | |||
-- [RFC9480] | -- [RFC9480] | |||
-- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.99 (id-mod-cmp2021-88) | -- 1988 Syntax, PKIXCMP, 1.3.6.1.5.5.7.0.99 (id-mod-cmp2021-88) | |||
-- 2002 Syntax, PKIXCMP-2021, 1.3.6.1.5.5.7.0.100 | -- 2002 Syntax, PKIXCMP-2021, 1.3.6.1.5.5.7.0.100 | |||
-- (id-mod-cmp2021-02) | -- (id-mod-cmp2021-02) | |||
-- Obsoleted by [RFCXXXX] PKIXCMP-2023, 1.3.6.1.5.5.7.0.TBD2 | -- Obsoleted by [RFC9810] PKIXCMP-2023, 1.3.6.1.5.5.7.0.116 | |||
-- (id-mod-cmp2023-02) | -- (id-mod-cmp2023-02) | |||
-- [RFCXXXX] | -- [RFC9810] | |||
-- 2002 Syntax, PKIXCMP-2023, 1.3.6.1.5.5.7.0.TBD2 | -- 2002 Syntax, PKIXCMP-2023, 1.3.6.1.5.5.7.0.116 | |||
-- (id-mod-cmp2023-02) | -- (id-mod-cmp2023-02) | |||
-- The rest of the module contains locally defined OIDs and | -- The rest of the module contains locally defined OIDs and | |||
-- constructs: | -- constructs: | |||
CMPCertificate ::= CHOICE { x509v3PKCert Certificate, ... } | CMPCertificate ::= CHOICE { x509v3PKCert Certificate, ... } | |||
-- This syntax, while bits-on-the-wire compatible with the | -- This syntax, while bits-on-the-wire compatible with the | |||
-- standard X.509 definition of "Certificate", allows the | -- standard X.509 definition of "Certificate", allows the | |||
-- possibility of future certificate types (such as X.509 | -- possibility of future certificate types (such as X.509 | |||
-- attribute certificates, card-verifiable certificates, or other | -- attribute certificates, card-verifiable certificates, or other | |||
skipping to change at page 125, line 46 ¶ | skipping to change at line 5604 ¶ | |||
-- nonces used to provide replay protection, senderNonce | -- nonces used to provide replay protection, senderNonce | |||
-- is inserted by the creator of this message; recipNonce | -- is inserted by the creator of this message; recipNonce | |||
-- is a nonce previously inserted in a related message by | -- is a nonce previously inserted in a related message by | |||
-- the intended recipient of this message. | -- the intended recipient of this message. | |||
freeText [7] PKIFreeText OPTIONAL, | freeText [7] PKIFreeText OPTIONAL, | |||
-- this may be used to indicate context-specific instructions | -- this may be used to indicate context-specific instructions | |||
-- (this field is intended for human consumption) | -- (this field is intended for human consumption) | |||
generalInfo [8] SEQUENCE SIZE (1..MAX) OF | generalInfo [8] SEQUENCE SIZE (1..MAX) OF | |||
InfoTypeAndValue OPTIONAL | InfoTypeAndValue OPTIONAL | |||
-- this may be used to convey context-specific information | -- this may be used to convey context-specific information | |||
-- (this field not primarily intended for human consumption) | -- (this field is not primarily intended for human consumption) | |||
} | } | |||
PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String | |||
-- text encoded as UTF-8 string [RFC3629] | -- text encoded as UTF-8 string [RFC3629] | |||
PKIBody ::= CHOICE { -- message-specific body elements | PKIBody ::= CHOICE { -- message-specific body elements | |||
ir [0] CertReqMessages, --Initialization Request | ir [0] CertReqMessages, --Initialization Request | |||
ip [1] CertRepMessage, --Initialization Response | ip [1] CertRepMessage, --Initialization Response | |||
cr [2] CertReqMessages, --Certification Request | cr [2] CertReqMessages, --Certification Request | |||
cp [3] CertRepMessage, --Certification Response | cp [3] CertRepMessage, --Certification Response | |||
skipping to change at page 127, line 19 ¶ | skipping to change at line 5673 ¶ | |||
id-DHBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | id-DHBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | |||
usa(840) nt(113533) nsn(7) algorithms(66) 30 } | usa(840) nt(113533) nsn(7) algorithms(66) 30 } | |||
DHBMParameter ::= SEQUENCE { | DHBMParameter ::= SEQUENCE { | |||
owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, | |||
-- AlgId for a One-Way Function | -- AlgId for a One-Way Function | |||
mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | |||
-- AlgId of the Message Authentication Code algorithm | -- AlgId of the Message Authentication Code algorithm | |||
} | } | |||
-- id-KemBasedMac and KemBMParameter were added in [RFCXXXX] | -- id-KemBasedMac and KemBMParameter were added in [RFC9810] | |||
id-KemBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | id-KemBasedMac OBJECT IDENTIFIER ::= { iso(1) member-body(2) | |||
usa(840) nt(113533) nsn(7) algorithms(66) 16 } | usa(840) nt(113533) nsn(7) algorithms(66) 16 } | |||
KemBMParameter ::= SEQUENCE { | KemBMParameter ::= SEQUENCE { | |||
kdf AlgorithmIdentifier{KEY-DERIVATION, {...}}, | kdf AlgorithmIdentifier{KEY-DERIVATION, {...}}, | |||
-- AlgId of the Key Derivation Function algorithm | -- AlgId of the Key Derivation Function algorithm | |||
kemContext [0] OCTET STRING OPTIONAL, | kemContext [0] OCTET STRING OPTIONAL, | |||
-- MAY contain additional algorithm specific context information | -- MAY contain additional algorithm-specific context information | |||
len INTEGER (1..MAX), | len INTEGER (1..MAX), | |||
-- Defines the length of the keying material output of the KDF | -- Defines the length of the keying material output of the KDF | |||
-- SHOULD be the maximum key length of the MAC function | -- SHOULD be the maximum key length of the MAC function | |||
mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | mac AlgorithmIdentifier{MAC-ALGORITHM, {...}} | |||
-- AlgId of the Message Authentication Code algorithm | -- AlgId of the Message Authentication Code algorithm | |||
} | } | |||
PKIStatus ::= INTEGER { | PKIStatus ::= INTEGER { | |||
accepted (0), | accepted (0), | |||
-- you got exactly what you asked for | -- you got exactly what you asked for | |||
skipping to change at page 129, line 51 ¶ | skipping to change at line 5801 ¶ | |||
hashVal BIT STRING | hashVal BIT STRING | |||
-- hashVal is calculated over the DER encoding of the | -- hashVal is calculated over the DER encoding of the | |||
-- self-signed certificate with the identifier certID. | -- self-signed certificate with the identifier certID. | |||
} | } | |||
POPODecKeyChallContent ::= SEQUENCE OF Challenge | POPODecKeyChallContent ::= SEQUENCE OF Challenge | |||
-- One Challenge per encryption or key agreement key certification | -- One Challenge per encryption or key agreement key certification | |||
-- request (in the same order as these requests appear in | -- request (in the same order as these requests appear in | |||
-- CertReqMessages). | -- CertReqMessages). | |||
-- encryptedRand was added in [RFCXXXX] | -- encryptedRand was added in [RFC9810] | |||
Challenge ::= SEQUENCE { | Challenge ::= SEQUENCE { | |||
owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | owf AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} | |||
OPTIONAL, | OPTIONAL, | |||
-- MUST be present in the first Challenge; MAY be omitted in | -- MUST be present in the first Challenge; MAY be omitted in | |||
-- any subsequent Challenge in POPODecKeyChallContent (if | -- any subsequent Challenge in POPODecKeyChallContent (if | |||
-- omitted, then the owf used in the immediately preceding | -- omitted, then the owf used in the immediately preceding | |||
-- Challenge is to be used). | -- Challenge is to be used). | |||
witness OCTET STRING, | witness OCTET STRING, | |||
-- the result of applying the one-way function (owf) to a | -- the result of applying the one-way function (owf) to a | |||
-- randomly-generated INTEGER, A. (Note that a different | -- randomly generated INTEGER, A. (Note that a different | |||
-- INTEGER MUST be used for each Challenge.) | -- INTEGER MUST be used for each Challenge.) | |||
challenge OCTET STRING, | challenge OCTET STRING, | |||
-- MUST be used for cmp2000(2) popdecc messages and MUST be | -- MUST be used for cmp2000(2) popdecc messages and MUST be | |||
-- the encryption of Rand (using a mechanism depending on the | -- the encryption of Rand (using a mechanism depending on the | |||
-- private key type). | -- private key type). | |||
-- MUST be an empty OCTET STRING for cmp2021(3) popdecc messages. | -- MUST be an empty OCTET STRING for cmp2021(3) popdecc messages. | |||
-- Note: Using challenge omitting the optional encryptedRand is | -- Note: Using challenge omitting the optional encryptedRand is | |||
-- bit-compatible to the syntax without adding this optional | -- bit-compatible to the syntax without adding this optional | |||
-- field. | -- field. | |||
encryptedRand [0] EnvelopedData OPTIONAL | encryptedRand [0] EnvelopedData OPTIONAL | |||
skipping to change at page 132, line 24 ¶ | skipping to change at line 5920 ¶ | |||
crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL | crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL | |||
-- the resulting CRLs (there may be more than one) | -- the resulting CRLs (there may be more than one) | |||
} | } | |||
CAKeyUpdAnnContent ::= SEQUENCE { | CAKeyUpdAnnContent ::= SEQUENCE { | |||
oldWithNew CMPCertificate, -- old pub signed with new priv | oldWithNew CMPCertificate, -- old pub signed with new priv | |||
newWithOld CMPCertificate, -- new pub signed with old priv | newWithOld CMPCertificate, -- new pub signed with old priv | |||
newWithNew CMPCertificate -- new pub signed with new priv | newWithNew CMPCertificate -- new pub signed with new priv | |||
} | } | |||
-- CAKeyUpdContent was added in [RFCXXXX] | -- CAKeyUpdContent was added in [RFC9810] | |||
CAKeyUpdContent ::= CHOICE { | CAKeyUpdContent ::= CHOICE { | |||
cAKeyUpdAnnV2 CAKeyUpdAnnContent, -- deprecated | cAKeyUpdAnnV2 CAKeyUpdAnnContent, -- deprecated | |||
cAKeyUpdAnnV3 [0] RootCaKeyUpdateContent | cAKeyUpdAnnV3 [0] RootCaKeyUpdateContent | |||
} | } | |||
-- With cmp2021 the use of CAKeyUpdAnnContent is deprecated , use | -- With cmp2021, the use of CAKeyUpdAnnContent is deprecated, use | |||
-- RootCaKeyUpdateContent instead. | -- RootCaKeyUpdateContent instead. | |||
CertAnnContent ::= CMPCertificate | CertAnnContent ::= CMPCertificate | |||
RevAnnContent ::= SEQUENCE { | RevAnnContent ::= SEQUENCE { | |||
status PKIStatus, | status PKIStatus, | |||
certId CertId, | certId CertId, | |||
willBeRevokedAt GeneralizedTime, | willBeRevokedAt GeneralizedTime, | |||
badSinceDate GeneralizedTime, | badSinceDate GeneralizedTime, | |||
crlDetails Extensions{{...}} OPTIONAL | crlDetails Extensions{{...}} OPTIONAL | |||
skipping to change at page 134, line 22 ¶ | skipping to change at line 6014 ¶ | |||
} | } | |||
CRLSource ::= CHOICE { | CRLSource ::= CHOICE { | |||
dpn [0] DistributionPointName, | dpn [0] DistributionPointName, | |||
issuer [1] GeneralNames } | issuer [1] GeneralNames } | |||
CRLStatus ::= SEQUENCE { | CRLStatus ::= SEQUENCE { | |||
source CRLSource, | source CRLSource, | |||
thisUpdate Time OPTIONAL } | thisUpdate Time OPTIONAL } | |||
-- KemCiphertextInfo and KemOtherInfo were added in [RFCXXXX] | -- KemCiphertextInfo and KemOtherInfo were added in [RFC9810] | |||
KemCiphertextInfo ::= SEQUENCE { | KemCiphertextInfo ::= SEQUENCE { | |||
kem AlgorithmIdentifier{KEM-ALGORITHM, {...}}, | kem AlgorithmIdentifier{KEM-ALGORITHM, {...}}, | |||
-- AlgId of the Key Encapsulation Mechanism algorithm | -- AlgId of the Key Encapsulation Mechanism algorithm | |||
ct OCTET STRING | ct OCTET STRING | |||
-- Ciphertext output from the Encapsulate function | -- Ciphertext output from the Encapsulate function | |||
} | } | |||
KemOtherInfo ::= SEQUENCE { | KemOtherInfo ::= SEQUENCE { | |||
staticString PKIFreeText, | staticString PKIFreeText, | |||
-- MUST be "CMP-KEM" | -- MUST be "CMP-KEM" | |||
transactionID OCTET STRING, | transactionID OCTET STRING, | |||
-- MUST contain the values from the message previously received | -- MUST contain the values from the message previously received | |||
-- containing the ciphertext (ct) in KemCiphertextInfo | -- containing the ciphertext (ct) in KemCiphertextInfo | |||
kemContext [0] OCTET STRING OPTIONAL | kemContext [0] OCTET STRING OPTIONAL | |||
-- MAY contain additional algorithm specific context information | -- MAY contain additional algorithm-specific context information | |||
} | } | |||
INFO-TYPE-AND-VALUE ::= TYPE-IDENTIFIER | INFO-TYPE-AND-VALUE ::= TYPE-IDENTIFIER | |||
InfoTypeAndValue ::= SEQUENCE { | InfoTypeAndValue ::= SEQUENCE { | |||
infoType INFO-TYPE-AND-VALUE. | infoType INFO-TYPE-AND-VALUE. | |||
&id({SupportedInfoSet}), | &id({SupportedInfoSet}), | |||
infoValue INFO-TYPE-AND-VALUE. | infoValue INFO-TYPE-AND-VALUE. | |||
&Type({SupportedInfoSet}{@infoType}) } | &Type({SupportedInfoSet}{@infoType}) } | |||
skipping to change at page 136, line 21 ¶ | skipping to change at line 6109 ¶ | |||
-- UTF8String | -- UTF8String | |||
-- - id-it-certProfile added in [RFC9480] | -- - id-it-certProfile added in [RFC9480] | |||
-- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | -- id-it-crlStatusList OBJECT IDENTIFIER ::= {id-it 22} | |||
-- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLStatusListValue ::= SEQUENCE SIZE (1..MAX) OF | |||
-- CRLStatus | -- CRLStatus | |||
-- - id-it-crlStatusList added in [RFC9480] | -- - id-it-crlStatusList added in [RFC9480] | |||
-- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | -- id-it-crls OBJECT IDENTIFIER ::= {id-it 23} | |||
-- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | -- CRLsValue ::= SEQUENCE SIZE (1..MAX) OF | |||
-- CertificateList | -- CertificateList | |||
-- - id-it-crls added in [RFC9480] | -- - id-it-crls added in [RFC9480] | |||
-- id-it-KemCiphertextInfo OBJECT IDENTIFIER ::= {id-it TBD1} | -- id-it-KemCiphertextInfo OBJECT IDENTIFIER ::= {id-it 24} | |||
-- KemCiphertextInfoValue ::= KemCiphertextInfo | -- KemCiphertextInfoValue ::= KemCiphertextInfo | |||
-- - id-it-KemCiphertextInfo was added in [RFCXXXX] | -- - id-it-KemCiphertextInfo was added in [RFC9810] | |||
-- | -- | |||
-- where | -- where | |||
-- | -- | |||
-- id-pkix OBJECT IDENTIFIER ::= { | -- id-pkix OBJECT IDENTIFIER ::= { | |||
-- iso(1) identified-organization(3) | -- iso(1) identified-organization(3) | |||
-- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | -- dod(6) internet(1) security(5) mechanisms(5) pkix(7)} | |||
-- and | -- and | |||
-- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | -- id-it OBJECT IDENTIFIER ::= {id-pkix 4} | |||
-- | -- | |||
-- | -- | |||
skipping to change at page 137, line 49 ¶ | skipping to change at line 6185 ¶ | |||
-- The EKUs for the CA and RA are reused from CMC, as defined in | -- The EKUs for the CA and RA are reused from CMC, as defined in | |||
-- [RFC6402] | -- [RFC6402] | |||
-- | -- | |||
-- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | -- id-kp-cmcCA OBJECT IDENTIFIER ::= { id-kp 27 } | |||
-- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | -- id-kp-cmcRA OBJECT IDENTIFIER ::= { id-kp 28 } | |||
id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | id-kp-cmKGA OBJECT IDENTIFIER ::= { id-kp 32 } | |||
END | END | |||
Appendix G. History of Changes | Acknowledgements | |||
Note: This appendix will be deleted in the final version of the | ||||
document. | ||||
From version 17 -> 18: | ||||
* Deleted last paragraph of Appendix D.3 to resolve the DISCUSS from | ||||
Paul Wouters | ||||
From version 16 -> 17: | ||||
* Addressing DISCUSS from Paul Wouters by extending text of Sections | ||||
3.1.1.2, 4.4, 5.2.5, 6, and D.3. | ||||
* Updated IPSEC -> IPsec | ||||
From version 15 -> 16: | ||||
* Addressed IESG review comments from Erik Kline, Gunter Van de | ||||
Velde, Orie Steele, Zaheduzzaman Sarker, Éric Vyncke, and Paul | ||||
Wouters, except the DISCUSS issue Paul raised | ||||
From version 14 -> 15: | ||||
* Addressed SECDIR, OPSDIR, and TSVART review comments | ||||
From version 13 -> 14: | ||||
* Implemented some editorial changes throughout the document, | ||||
specifically in Sections 5.1.1, 5.1.1.3, 5.1.3.4, 5.2.2, 5.2.8.3, | ||||
5.3.18, 5.3.19.2, 5.2.22, 7, C.1, and C.4 | ||||
* Aligned formatting of message flow diagrams | ||||
* Updated the page header to 'CMP' | ||||
* Removed one instruction to RFC Editors | ||||
* Fixed some nits in Section 5.2.2 | ||||
* Fixed one reference to RFC 9629 in the ASN.1 Module | ||||
From version 12 -> 13: | ||||
* Updated the definition of "NULL-DN" in Section 5.1.1 and | ||||
Appendix D.1 and added a specification of how the RA/CA shall | ||||
generate the rid content to Section 5.2.8.3.3 to clarify direct | ||||
POP (see thread "CMS RecipientInfo for EnvelopedData in CMC") | ||||
* Added one minor clarification in Section 5.2.2 | ||||
* Updated reference from draft-ietf-lamps-cms-kemri to RFC 9629 | ||||
From version 11 -> 12: | ||||
* Adding a paragraph to Section 5.2.8.3.2 to clarify Indirect POP | ||||
(see thread "Using cms-kemri this CMP Indirect POP") | ||||
* Updated Appendix F addressing comments from Russ (see thread "WG | ||||
Last Call for draft-ietf-lamps-rfc4210bis and draft-ietf-lamps- | ||||
rfc6712bis") | ||||
* Extended the Acknowledgments section. | ||||
From version 10 -> 11: | ||||
* Updated Section 4.2.2 addressing the comment from Tomas Gustavsson | ||||
and as presented during IETF 119 (see thread "draft-ietf-lamps- | ||||
rfc4210bis-v10 Section 4.2.2 - removing normative language") | ||||
From version 09 -> 10: | ||||
* Implemented some minor editorial changes modernizing the text in | ||||
Section 3, 4, and 5.2.8 as proposed during IETF 119, without | ||||
changing normative language. | ||||
* Added to Section 4.2.2 two ToDos for further discussion, based on | ||||
the comment from Tomas Gustavsson as presented during IETF 119. | ||||
* Addressed erratum 7888 | ||||
From version 08 -> 09: | ||||
* Changed reference from ITU-T X.509 to RFC 5280 (see thread " CMP | ||||
vs RFC5280"). | ||||
* Deprecated CAKeyUpdAnnContent in favor of RootCaKeyUpdateContent | ||||
in CMP V3 as proposed by Tomas. | ||||
* Updated Section 4.4 incorporating RootCaKeyUpdateContent as | ||||
alternative to using a repository for providing root CA key | ||||
updates. | ||||
* Deleting an obsolete sentence in Section 8.8. | ||||
* Added IANA considerations addressing IANA early review. | ||||
From version 07 -> 08: | ||||
* Aligned with released RFC 9480 - RFC 9483 | ||||
* Updated Section 1.3 | ||||
* Added text on usage of transactionID with KEM-bases message | ||||
protection to Section 5.1.1 | ||||
* Reverted a change to Section 5.1.3.1 from -02 and reinserting the | ||||
deleted text and adding some text explaining when a key expansion | ||||
is required. | ||||
* Consolidated the definition and transferal of KemCiphertextInfo. | ||||
Added a new Section 5.1.1.5 introducing KemCiphertextInfo in the | ||||
generalInfo filed and moving text on how to request a KEM | ||||
ciphertext using genm/genp from Section 5.1.3.4 to | ||||
Section 5.3.19.18 | ||||
* Some editorial changes to Section 5.1.3.4 and Appendix E after | ||||
discussion with David resolving #30 and discussing at IETF 117. | ||||
Also introducing optional field kemContext to KemBasedMac and | ||||
KemOtherInfo as CMP-specific alternative to ukm in cms-kemri. | ||||
* Added ToDo for reviewing the reduced content of KemOtherInfo to | ||||
Section 5.1.3.4 | ||||
* Added a cross-reference to Section 5.1.1.3 regarding use of | ||||
OrigPKIMessage to Section 5.1.3.5 | ||||
* Added POP for KEM keys to Section 5.2.8. Restructured the section | ||||
and fixed some references which broke from RFC2510 to RFC4210. | ||||
Introduced a section on the usage of raVerified. | ||||
* Fixed the issue in Section 5.3.19.15, resulting from a change made | ||||
in draft-ietf-lamps-cmp-updates-14, that no plain public-key can | ||||
be used in the request message in CMPCertificate. | ||||
* Updated Appendix B regarding KEM-based message protection and | ||||
usage of CMS EnvelopedData | ||||
From version 06 -> 07: | ||||
* Updated section 5.1.1.4 addressing a question from Liao Lijun on | ||||
how to interpret less profile names than certReqMsgs | ||||
* Updated section 5.1.3.4 specifying establishing a shares secret | ||||
key for one arbitrary side of the CMP communication only | ||||
* Removed the note and the security consideration regarding combiner | ||||
function for HPKE | ||||
* Added security considerations 8.1 and 8.8 | ||||
* Updates IANA Considerations in section 9 to add new OID for the | ||||
updates ASN.1 module and for id-it-KemCiphertextInfo | ||||
* Added new appendix E showing different variants of using KEM keys | ||||
for PKI message protection | ||||
* Updates ASN.1 module in appendix F | ||||
From version 05 -> 06: | ||||
* Updated section 5.1.3.4 exchanging HPKE with plain KEM+KDF as also | ||||
used in draft-ietf-lamps-cms-kemri | ||||
From version 04 -> 05: | ||||
* Updated sections 5.1.3.4, 5.2.2, and 8.9 addressing comments from | ||||
Russ (see thread "I-D Action: draft-ietf-lamps-rfc4210bis-04.txt") | ||||
From version 03 -> 04: | ||||
* Added Section 4.3.4 regarding POP for KEM keys | ||||
* Added Section 5.1.3.4 on message protection using KEM keys and | ||||
HPKE | ||||
* Aligned Section 5.2.2 on guidance which CMS key management | ||||
technique to use with encrypted values (see thread "CMS: selection | ||||
of key management technique to use for EnvelopedData") also adding | ||||
support for KEM keys | ||||
* Added Section 8.9 and extended Section 3.1.2 regarding use of | ||||
Certificate Transparency logs | ||||
* Deleted former Appendix C as announced in the -03 | ||||
* Fixed some nits resulting from XML -> MD conversion | ||||
From version 02 -> 03: | ||||
* Updated Section 4.4.1 clarifying the definition of "new with new" | ||||
certificate validity period (see thread "RFC4210bis - notAfter | ||||
time of newWithNew certificate") | ||||
* Added ToDo to Section 4.3 and 5.2.8 on required alignment | ||||
regarding POP for KEM keys. | ||||
* Updated Sections 5.2.1, 5.2.8, and 5.2.8.1 incorporating text of | ||||
former Appendix C (see thread "draft-ietf-lamps-rfc4210bis - ToDo | ||||
on review of Appendix C") | ||||
* Added a ToDo to Appendix B to indicate additional review need to | ||||
try pushing the content to Sections 4 and Section 5 | ||||
From version 01 -> 02: | ||||
* Added Section 3.1.1.4 introducing the Key Generation Authority | ||||
* Added Section 5.1.1.3 containing description of origPKIMessage | ||||
content moved here from Section 5.1.3.4 | ||||
* Added ToDos on defining POP and message protection using KEM keys | ||||
* Added a ToDo to Section 4.4.3 | ||||
* Added a ToDo to Appendix C to do a more detailed review | ||||
* Removed concrete algorithms and referred to CMP Algorithms instead | ||||
* Added references to Appendix D and E as well as the Lightweight | ||||
CMP Profile for further information | ||||
* Broaden the scope from human users also to devices and services | ||||
* Addressed idnits feedback, specifically changing from historic | ||||
LDAP V2 to LDAP V3 (RFC4511) | ||||
* Did some further editorial alignment to the XML | ||||
From version 00 -> 01: | ||||
* Performed all updates specified in CMP Updates Section 2 and | ||||
Appendix A.2. | ||||
* Did some editorial alignment to the XML | ||||
Version 00: | ||||
This version consists of the text of RFC4210 with the following | ||||
changes: | ||||
* Introduced the authors of this document and thanked the authors of | The authors of this document wish to thank Carlisle Adams, Stephen | |||
RFC4210 for their work. | Farrell, Tomi Kause, and Tero Mononen, the original authors of | |||
[RFC4210], for their work. | ||||
* Added a paragraph to the introduction explaining the background of | We also thank all reviewers of this document for their valuable | |||
this document. | feedback. | |||
* Added the change history to this appendix. | Adding KEM support to this document was partly funded by the German | |||
Federal Ministry of Education and Research in the project Quoryptan | ||||
through grant number 16KIS2033. | ||||
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. 436 change blocks. | ||||
1305 lines changed or deleted | 1030 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |