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.