| rfc9646v4.txt | rfc9646.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) K. Watsen | Internet Engineering Task Force (IETF) K. Watsen | |||
| Request for Comments: 9646 Watsen Networks | Request for Comments: 9646 Watsen Networks | |||
| Updates: 8572 R. Housley | Updates: 8572 R. Housley | |||
| Category: Standards Track Vigil Security | Category: Standards Track Vigil Security | |||
| ISSN: 2070-1721 S. Turner | ISSN: 2070-1721 S. Turner | |||
| sn3rd | sn3rd | |||
| September 2024 | October 2024 | |||
| Conveying a Certificate Signing Request (CSR) in a Secure Zero-Touch | Conveying a Certificate Signing Request (CSR) in a Secure Zero-Touch | |||
| Provisioning (SZTP) Bootstrapping Request | Provisioning (SZTP) Bootstrapping Request | |||
| Abstract | Abstract | |||
| This document extends the input to the "get-bootstrapping-data" RPC | This document extends the input to the "get-bootstrapping-data" RPC | |||
| defined in RFC 8572 to include an optional certificate signing | defined in RFC 8572 to include an optional certificate signing | |||
| request (CSR), enabling a bootstrapping device to additionally obtain | request (CSR), enabling a bootstrapping device to additionally obtain | |||
| an identity certificate (e.g., a Local Device Identifier (LDevID) | an identity certificate (e.g., a Local Device Identifier (LDevID) | |||
| skipping to change at line 145 ¶ | skipping to change at line 145 ¶ | |||
| 1.3. Requirements Language | 1.3. Requirements Language | |||
| 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. | |||
| 1.4. Conventions | 1.4. Conventions | |||
| Various examples used in this document use a placeholder value for | Various examples in this document use "BASE64VALUE=" as a placeholder | |||
| binary data that has been base64 encoded (e.g., "BASE64VALUE="). | value for binary data that has been base64 encoded (per Section 9.8 | |||
| This placeholder value is used since real base64-encoded structures | of [RFC7950]). This placeholder value is used because real | |||
| are often many lines long and hence distract from the example being | base64-encoded structures are often many lines long and hence | |||
| presented. | distracting to the example being presented. | |||
| Various examples in this document contain long lines that may be | ||||
| folded, as described in [RFC8792]. | ||||
| 2. The "ietf-sztp-csr" Module | 2. The "ietf-sztp-csr" Module | |||
| The "ietf-sztp-csr" module is a YANG 1.1 [RFC7950] module that | The "ietf-sztp-csr" module is a YANG 1.1 [RFC7950] module that | |||
| augments the "ietf-sztp-bootstrap-server" module defined in [RFC8572] | augments the "ietf-sztp-bootstrap-server" module defined in [RFC8572] | |||
| and defines a YANG "structure" that is to be conveyed in the "error- | and defines a YANG "structure" that is to be conveyed in the "error- | |||
| info" node defined in Section 7.1 of [RFC8040]. | info" node defined in Section 7.1 of [RFC8040]. | |||
| 2.1. Data Model Overview | 2.1. Data Model Overview | |||
| skipping to change at line 200 ¶ | skipping to change at line 203 ¶ | |||
| | +-- format-identifier identityref | | +-- format-identifier identityref | |||
| +-- cert-req-info? ct:csr-info | +-- cert-req-info? ct:csr-info | |||
| The augmentation defines two kinds of parameters that an SZTP-client | The augmentation defines two kinds of parameters that an SZTP-client | |||
| can send to an SZTP-server. The YANG structure defines one | can send to an SZTP-server. The YANG structure defines one | |||
| collection of parameters that an SZTP-server can send to an SZTP- | collection of parameters that an SZTP-server can send to an SZTP- | |||
| client. | client. | |||
| In the order of their intended use: | In the order of their intended use: | |||
| 1. The SZTP-client sends a "csr-support” node, encoded in a first | 1. The SZTP-client sends a "csr-support" node, encoded in a first | |||
| “get-bootstrapping-data” request to the SZTP-server, to indicate | "get-bootstrapping-data" request to the SZTP-server, to indicate | |||
| that it supports the ability to generate CSRs. This input | that it supports the ability to generate CSRs. This input | |||
| parameter conveys if the SZTP-client is able to generate a new | parameter conveys if the SZTP-client is able to generate a new | |||
| asymmetric key and, if so, which key algorithms it supports, as | asymmetric key and, if so, which key algorithms it supports, as | |||
| well as what kinds of CSR structures the SZTP-client is able to | well as what kinds of CSR structures the SZTP-client is able to | |||
| generate. | generate. | |||
| 2. The SZTP-server responds with an error, containing the "csr- | 2. The SZTP-server responds with an error, containing the "csr- | |||
| request” structure, to request the SZTP-client to generate a CSR. | request" structure, to request the SZTP-client to generate a CSR. | |||
| This structure is used to select the key algorithm the SZTP- | This structure is used to select the key algorithm the SZTP- | |||
| client should use to generate a new asymmetric key (if | client should use to generate a new asymmetric key (if | |||
| supported), the kind of CSR structure the SZTP-client should | supported), the kind of CSR structure the SZTP-client should | |||
| generate, and optionally the content for the CSR itself. | generate, and optionally the content for the CSR itself. | |||
| 3. The SZTP-client sends one of the "*-csr” nodes, encoded in a | 3. The SZTP-client sends one of the "*-csr" nodes, encoded in a | |||
| second “get-bootstrapping-data” request to the SZTP-server. This | second "get-bootstrapping-data" request to the SZTP-server. This | |||
| node encodes the server-requested CSR. | node encodes the server-requested CSR. | |||
| 4. The SZTP-server responds with onboarding information to | 4. The SZTP-server responds with onboarding information to | |||
| communicate the signed certificate to the SZTP-client. How to do | communicate the signed certificate to the SZTP-client. How to do | |||
| this is discussed in Section 2.2. | this is discussed in Section 2.2. | |||
| To further illustrate how the augmentation and structure defined by | To further illustrate how the augmentation and structure defined by | |||
| the "ietf-sztp-csr" module are used, below are two additional tree | the "ietf-sztp-csr" module are used, below are two additional tree | |||
| diagrams showing these nodes placed where they are used. | diagrams showing these nodes placed where they are used. | |||
| skipping to change at line 1208 ¶ | skipping to change at line 1211 ¶ | |||
| It is RECOMMENDED that devices are manufactured with a hardware | It is RECOMMENDED that devices are manufactured with a hardware | |||
| security module (HSM), such as a trusted platform module (TPM), to | security module (HSM), such as a trusted platform module (TPM), to | |||
| generate and contain the private key within the security perimeter of | generate and contain the private key within the security perimeter of | |||
| the HSM. In such cases, the private key and its associated | the HSM. In such cases, the private key and its associated | |||
| certificates MAY have long validity periods. | certificates MAY have long validity periods. | |||
| In cases where the SZTP-client does not possess an HSM or is unable | In cases where the SZTP-client does not possess an HSM or is unable | |||
| to use an HSM to protect the private key, it is RECOMMENDED to | to use an HSM to protect the private key, it is RECOMMENDED to | |||
| periodically reset the private key (and associated identity | periodically reset the private key (and associated identity | |||
| certificates) in order to minimize the lifetime of unprotected | certificates) in order to minimize the lifetime of unprotected | |||
| private keys. For instance, an Network Management System (NMS) | private keys. For instance, a Network Management System (NMS) | |||
| controller/orchestrator application could periodically prompt the | controller/orchestrator application could periodically prompt the | |||
| SZTP-client to generate a new private key and provide a certificate | SZTP-client to generate a new private key and provide a certificate | |||
| signing request (CSR) or, alternatively, push both the key and an | signing request (CSR) or, alternatively, push both the key and an | |||
| identity certificate to the SZTP-client using, e.g., a PKCS#12 | identity certificate to the SZTP-client using, e.g., a PKCS#12 | |||
| message [RFC7292]. In another example, the SZTP-client could be | message [RFC7292]. In another example, the SZTP-client could be | |||
| configured to periodically reset the configuration to its factory | configured to periodically reset the configuration to its factory | |||
| default, thus causing removal of the private key and associated | default, thus causing removal of the private key and associated | |||
| identity certificates and re-execution of the SZTP protocol. | identity certificates and re-execution of the SZTP protocol. | |||
| 4.1.2. Reuse of a Manufacturer-Generated Private Key | 4.1.2. Reuse of a Manufacturer-Generated Private Key | |||
| skipping to change at line 1495 ¶ | skipping to change at line 1498 ¶ | |||
| [RFC8791] Bierman, A., Björklund, M., and K. Watsen, "YANG Data | [RFC8791] Bierman, A., Björklund, M., and K. Watsen, "YANG Data | |||
| Structure Extensions", RFC 8791, DOI 10.17487/RFC8791, | Structure Extensions", RFC 8791, DOI 10.17487/RFC8791, | |||
| June 2020, <https://www.rfc-editor.org/info/rfc8791>. | June 2020, <https://www.rfc-editor.org/info/rfc8791>. | |||
| [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
| DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
| <https://www.rfc-editor.org/info/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
| [RFC9640] Watsen, K., "YANG Data Types and Groupings for | [RFC9640] Watsen, K., "YANG Data Types and Groupings for | |||
| Cryptography", RFC 9640, DOI 10.17487/RFC9640, September | Cryptography", RFC 9640, DOI 10.17487/RFC9640, October | |||
| 2024, <https://www.rfc-editor.org/info/rfc9640>. | 2024, <https://www.rfc-editor.org/info/rfc9640>. | |||
| 6.2. Informative References | 6.2. Informative References | |||
| [AIS31] Killmann, W. and W. Schindler, "A proposal for: | [AIS31] Killmann, W. and W. Schindler, "A proposal for: | |||
| Functionality classes for random number generators - | Functionality classes for random number generators - | |||
| Version 2.0", September 2011, | Version 2.0", 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>. | |||
| skipping to change at line 1555 ¶ | skipping to change at line 1558 ¶ | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
| Documents Containing YANG Data Models", BCP 216, RFC 8407, | Documents Containing YANG Data Models", BCP 216, RFC 8407, | |||
| DOI 10.17487/RFC8407, October 2018, | DOI 10.17487/RFC8407, October 2018, | |||
| <https://www.rfc-editor.org/info/rfc8407>. | <https://www.rfc-editor.org/info/rfc8407>. | |||
| [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, | ||||
| "Handling Long Lines in Content of Internet-Drafts and | ||||
| RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, | ||||
| <https://www.rfc-editor.org/info/rfc8792>. | ||||
| [RFC8808] Wu, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | [RFC8808] Wu, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | |||
| Factory Default Settings", RFC 8808, DOI 10.17487/RFC8808, | Factory Default Settings", RFC 8808, DOI 10.17487/RFC8808, | |||
| August 2020, <https://www.rfc-editor.org/info/rfc8808>. | August 2020, <https://www.rfc-editor.org/info/rfc8808>. | |||
| [RFC9641] Watsen, K., "A YANG Data Model for a Truststore", | [RFC9641] Watsen, K., "A YANG Data Model for a Truststore", | |||
| RFC 9641, DOI 10.17487/RFC9641, September 2024, | RFC 9641, DOI 10.17487/RFC9641, October 2024, | |||
| <https://www.rfc-editor.org/info/rfc9641>. | <https://www.rfc-editor.org/info/rfc9641>. | |||
| [RFC9642] Watsen, K., "A YANG Data Model for a Keystore", RFC 9642, | [RFC9642] Watsen, K., "A YANG Data Model for a Keystore", RFC 9642, | |||
| DOI 10.17487/RFC9642, September 2024, | DOI 10.17487/RFC9642, October 2024, | |||
| <https://www.rfc-editor.org/info/rfc9642>. | <https://www.rfc-editor.org/info/rfc9642>. | |||
| [Std-802.1AR-2018] | [Std-802.1AR-2018] | |||
| IEEE, "IEEE Standard for Local and Metropolitan Area | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| Networks - Secure Device Identity", August 2018, | Networks - Secure Device Identity", August 2018, | |||
| <https://standards.ieee.org/ieee/802.1AR/6995/>. | <https://standards.ieee.org/ieee/802.1AR/6995/>. | |||
| Acknowledgements | Acknowledgements | |||
| The authors would like to thank for following for lively discussions | The authors would like to thank for following for lively discussions | |||
| End of changes. 10 change blocks. | ||||
| 15 lines changed or deleted | 23 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||