| rfc9646.original | rfc9646.txt | |||
|---|---|---|---|---|
| NETCONF Working Group K. Watsen | Internet Engineering Task Force (IETF) K. Watsen | |||
| Internet-Draft Watsen Networks | Request for Comments: 9646 Watsen Networks | |||
| Updates: 8572 (if approved) R. Housley | Updates: 8572 R. Housley | |||
| Intended status: Standards Track Vigil Security, LLC | Category: Standards Track Vigil Security | |||
| Expires: 3 September 2022 S. Turner | ISSN: 2070-1721 S. Turner | |||
| sn3rd | sn3rd | |||
| 2 March 2022 | 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 | |||
| draft-ietf-netconf-sztp-csr-14 | ||||
| Abstract | Abstract | |||
| This draft 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., an LDevID from IEEE 802.1AR) as part | an identity certificate (e.g., a Local Device Identifier (LDevID) | |||
| of the "onboarding information" response provided in the RPC-reply. | from IEEE 802.1AR) as part of the "onboarding information" response | |||
| provided in the RPC-reply. | ||||
| Editorial Note (To be removed by RFC Editor) | ||||
| This draft contains many placeholder values that need to be replaced | ||||
| with finalized values at the time of publication. This note | ||||
| summarizes all of the substitutions that are needed. No other RFC | ||||
| Editor instructions are specified elsewhere in this document. | ||||
| Artwork in this document contains shorthand references to drafts in | ||||
| progress. Please apply the following replacements: | ||||
| * XXXX --> the assigned numerical RFC value for this draft | ||||
| * AAAA --> the assigned RFC value for I-D.ietf-netconf-crypto-types | ||||
| Artwork in this document contains a placeholder value for the | ||||
| publication date of this draft. Please apply the following | ||||
| replacement: | ||||
| * 2022-03-02 --> the publication date of this draft | ||||
| This document contains references to other drafts in progress, both | ||||
| in the Normative References section, as well as in body text | ||||
| throughout. Please update the following references to reflect their | ||||
| final RFC assignments: | ||||
| * I-D.ietf-netconf-crypto-types | ||||
| * I-D.ietf-netconf-keystore | ||||
| * I-D.ietf-netconf-trust-anchors | ||||
| 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 September 2022. | 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/rfc9646. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2024 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Overview | |||
| 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Terminology | |||
| 1.3. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.3. Requirements Language | |||
| 1.4. Conventions . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.4. Conventions | |||
| 2. The "ietf-sztp-csr" Module . . . . . . . . . . . . . . . . . 4 | 2. The "ietf-sztp-csr" Module | |||
| 2.1. Data Model Overview . . . . . . . . . . . . . . . . . . . 5 | 2.1. Data Model Overview | |||
| 2.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 8 | 2.2. Example Usage | |||
| 2.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.3. YANG Module | |||
| 3. The "ietf-ztp-types" Module . . . . . . . . . . . . . . . . . 17 | 3. The "ietf-ztp-types" Module | |||
| 3.1. Data Model Overview . . . . . . . . . . . . . . . . . . . 17 | 3.1. Data Model Overview | |||
| 3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17 | 3.2. YANG Module | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 4. Security Considerations | |||
| 4.1. SZTP-Client Considerations . . . . . . . . . . . . . . . 27 | 4.1. SZTP-Client Considerations | |||
| 4.1.1. Ensuring the Integrity of Asymmetric Private Keys . . 27 | 4.1.1. Ensuring the Integrity of Asymmetric Private Keys | |||
| 4.1.2. Reuse of a Manufacturer-generated Private Key . . . . 28 | 4.1.2. Reuse of a Manufacturer-Generated Private Key | |||
| 4.1.3. Replay Attack Protection . . . . . . . . . . . . . . 29 | 4.1.3. Replay Attack Protection | |||
| 4.1.4. Connecting to an Untrusted Bootstrap Server . . . . . 29 | 4.1.4. Connecting to an Untrusted Bootstrap Server | |||
| 4.1.5. Selecting the Best Origin Authentication Mechanism . 30 | 4.1.5. Selecting the Best Origin Authentication Mechanism | |||
| 4.1.6. Clearing the Private Key and Associated | 4.1.6. Clearing the Private Key and Associated Certificate | |||
| Certificate . . . . . . . . . . . . . . . . . . . . . 30 | 4.2. SZTP-Server Considerations | |||
| 4.2. SZTP-Server Considerations . . . . . . . . . . . . . . . 30 | 4.2.1. Verifying Proof-of-Possession | |||
| 4.2.1. Verifying Proof of Possession . . . . . . . . . . . . 30 | 4.2.2. Verifying Proof-of-Origin | |||
| 4.2.2. Verifying Proof of Origin . . . . . . . . . . . . . . 31 | 4.2.3. Supporting SZTP-Clients That Don't Trust the | |||
| 4.2.3. Supporting SZTP-Clients that don't trust the | SZTP-Server | |||
| SZTP-Server . . . . . . . . . . . . . . . . . . . . . 31 | 4.3. Security Considerations for the "ietf-sztp-csr" YANG Module | |||
| 4.3. Security Considerations for the "ietf-sztp-csr" YANG | ||||
| Module . . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 4.4. Security Considerations for the "ietf-ztp-types" YANG | 4.4. Security Considerations for the "ietf-ztp-types" YANG | |||
| Module . . . . . . . . . . . . . . . . . . . . . . . . . 32 | Module | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 5. IANA Considerations | |||
| 5.1. The "IETF XML" Registry . . . . . . . . . . . . . . . . . 32 | 5.1. The IETF XML Registry | |||
| 5.2. The "YANG Module Names" Registry . . . . . . . . . . . . 32 | 5.2. The YANG Module Names Registry | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 6. References | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 32 | 6.1. Normative References | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 34 | 6.2. Informative References | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 36 | Acknowledgements | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | Contributors | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| 1.1. Overview | 1.1. Overview | |||
| This draft extends the input to the "get-bootstrapping-data" RPC | This document extends the input to the "get-bootstrapping-data" RPC | |||
| defined in [RFC8572] to include an optional certificate signing | defined in [RFC8572] to include an optional certificate signing | |||
| request (CSR) [RFC2986], enabling a bootstrapping device to | request (CSR) [RFC2986], enabling a bootstrapping device to | |||
| additionally obtain an identity certificate (e.g., an LDevID | additionally obtain an identity certificate (e.g., an LDevID from | |||
| [Std-802.1AR-2018]) as part of the "onboarding information" response | [Std-802.1AR-2018]) as part of the "onboarding information" response | |||
| provided in the RPC-reply. | provided in the RPC-reply. | |||
| The ability to provision an identity certificate that is purpose- | The ability to provision an identity certificate that is purpose- | |||
| built for a production environment during the bootstrapping process | built for a production environment during the bootstrapping process | |||
| removes reliance on the manufacturer CA, and it also enables the | removes reliance on the manufacturer Certification Authority (CA), | |||
| bootstrapped device to join the production environment with an | and it also enables the bootstrapped device to join the production | |||
| appropriate identity and other attributes in its identity certificate | environment with an appropriate identity and other attributes in its | |||
| (e.g., an LDevID). | identity certificate (e.g., an LDevID). | |||
| Two YANG [RFC7950] modules are defined. The "ietf-ztp-types" module | Two YANG [RFC7950] modules are defined. The "ietf-ztp-types" module | |||
| defines three YANG groupings for the various messages defined in this | defines three YANG groupings for the various messages defined in this | |||
| document. The "ietf-sztp-csr" module augments two groupings into the | document. The "ietf-sztp-csr" module augments two groupings into the | |||
| "get-bootstrapping-data" RPC and defines a YANG Data Structure | "get-bootstrapping-data" RPC and defines a YANG data structure | |||
| [RFC8791] around the third grouping. | [RFC8791] around the third grouping. | |||
| 1.2. Terminology | 1.2. Terminology | |||
| This document uses the following terms from [RFC8572]: | This document uses the following terms from [RFC8572]: | |||
| * Bootstrap Server | * Bootstrap Server | |||
| * Bootstrapping Data | * Bootstrapping Data | |||
| * Conveyed Information | * Conveyed Information | |||
| * Device | * Device | |||
| * Manufacturer | * Manufacturer | |||
| * Onboarding Information | * Onboarding Information | |||
| * Signed Data | * Signed Data | |||
| This document defines the following new terms: | This document defines the following new terms: | |||
| SZTP-client The term "SZTP-client" refers to a "device" that is | SZTP-client: The term "SZTP-client" refers to a "device" that is | |||
| using a "bootstrap server" as a source of "bootstrapping data". | using a "bootstrap server" as a source of "bootstrapping data". | |||
| SZTP-server The term "SZTP-server" is an alternative term for | SZTP-server: The term "SZTP-server" is an alternative term for | |||
| "bootstrap server" that is symmetric with the "SZTP-client" term. | "bootstrap server" that is symmetric with the "SZTP-client" term. | |||
| 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 BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 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 as real base64 encoded structures are | of [RFC7950]). This placeholder value is used because real | |||
| often many lines long and hence distracting to 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 page 5, line 47 ¶ | 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: | |||
| * The "csr-support" node is used by the SZTP-client to signal to the | 1. The SZTP-client sends a "csr-support" node, encoded in a first | |||
| SZTP-server that it supports the ability to generate CSRs. This | "get-bootstrapping-data" request to the SZTP-server, to indicate | |||
| parameter conveys if the SZTP-client is able to generate a new | that it supports the ability to generate CSRs. This input | |||
| asymmetric key and, if so, which key algorithms it supports, as | parameter conveys if the SZTP-client is able to generate a new | |||
| well as conveys what kinds of CSR structures the SZTP-client is | asymmetric key and, if so, which key algorithms it supports, as | |||
| able to generate. | well as what kinds of CSR structures the SZTP-client is able to | |||
| generate. | ||||
| * The "csr-request" structure is used by the SZTP-server to request | 2. The SZTP-server responds with an error, containing the "csr- | |||
| the SZTP-client to generate a CSR. This structure is used to | request" structure, to request the SZTP-client to generate a CSR. | |||
| select the key algorithm the SZTP-client should use to generate a | This structure is used to select the key algorithm the SZTP- | |||
| new asymmetric key, if supported, the kind of CSR structure the | client should use to generate a new asymmetric key (if | |||
| SZTP-client should generate and, optionally, the content for the | supported), the kind of CSR structure the SZTP-client should | |||
| CSR itself. | generate, and optionally the content for the CSR itself. | |||
| * The various "csr" nodes are used by the SZTP-client to communicate | 3. The SZTP-client sends one of the "*-csr" nodes, encoded in a | |||
| a CSR to the SZTP-server. | second "get-bootstrapping-data" request to the SZTP-server. This | |||
| node encodes the server-requested CSR. | ||||
| | No data model is defined enabling an SZTP-server to communicate | 4. The SZTP-server responds with onboarding information to | |||
| | the signed certificate to the SZTP-client. How to do this is | communicate the signed certificate to the SZTP-client. How to do | |||
| | 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. | |||
| The following tree diagram [RFC8340] illustrates SZTP's "get- | The following tree diagram [RFC8340] illustrates SZTP's "get- | |||
| bootstrapping-data" RPC with the augmentation in place. | bootstrapping-data" RPC with the augmentation in place. | |||
| =============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
| skipping to change at page 8, line 25 ¶ | skipping to change at line 293 ¶ | |||
| +--ro sztp-csr:key-generation! | +--ro sztp-csr:key-generation! | |||
| | +--ro sztp-csr:selected-algorithm | | +--ro sztp-csr:selected-algorithm | |||
| | +--ro sztp-csr:algorithm-identifier binary | | +--ro sztp-csr:algorithm-identifier binary | |||
| +--ro sztp-csr:csr-generation | +--ro sztp-csr:csr-generation | |||
| | +--ro sztp-csr:selected-format | | +--ro sztp-csr:selected-format | |||
| | +--ro sztp-csr:format-identifier identityref | | +--ro sztp-csr:format-identifier identityref | |||
| +--ro sztp-csr:cert-req-info? ct:csr-info | +--ro sztp-csr:cert-req-info? ct:csr-info | |||
| 2.2. Example Usage | 2.2. Example Usage | |||
| | The examples below are encoded using JSON, but they could | | NOTE: The examples below are encoded using JSON, but they could | |||
| | equally well be encoded using XML, as is supported by SZTP. | | equally well be encoded using XML, as is supported by SZTP. | |||
| An SZTP-client implementing this specification would signal to the | An SZTP-client implementing this specification would signal to the | |||
| bootstrap server its willingness to generate a CSR by including the | bootstrap server its willingness to generate a CSR by including the | |||
| "csr-support" node in its "get-bootstrapping-data" RPC. In the | "csr-support" node in its "get-bootstrapping-data" RPC. In the | |||
| example below, the SZTP-client additionally indicates that it is able | example below, the SZTP-client additionally indicates that it is able | |||
| to generate keys and provides a list of key algorithms it supports, | to generate keys and provides a list of key algorithms it supports, | |||
| as well as provide a list of certificate formats it supports. | as well as provide a list of certificate formats it supports. | |||
| REQUEST | REQUEST | |||
| skipping to change at page 10, line 37 ¶ | skipping to change at line 382 ¶ | |||
| }, | }, | |||
| "cert-req-info": "BASE64VALUE=" | "cert-req-info": "BASE64VALUE=" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Upon being prompted to provide a CSR, the SZTP-client would POST | Upon being prompted to provide a CSR, the SZTP-client would POST | |||
| another "get-bootstrapping-data" request, but this time including one | another "get-bootstrapping-data" request but this time including one | |||
| of the "csr" nodes to convey its CSR to the SZTP-server: | of the "csr" nodes to convey its CSR to the SZTP-server: | |||
| REQUEST | REQUEST | |||
| =============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
| POST /restconf/operations/ietf-sztp-bootstrap-server:get-bootstrappi\ | POST /restconf/operations/ietf-sztp-bootstrap-server:get-bootstrappi\ | |||
| ng-data HTTP/1.1 | ng-data HTTP/1.1 | |||
| HOST: example.com | HOST: example.com | |||
| Content-Type: application/yang-data+json | Content-Type: application/yang-data+json | |||
| { | { | |||
| "ietf-sztp-bootstrap-server:input" : { | "ietf-sztp-bootstrap-server:input" : { | |||
| "hw-model": "model-x", | "hw-model": "model-x", | |||
| "os-name": "vendor-os", | "os-name": "vendor-os", | |||
| "os-version": "17.3R2.1", | "os-version": "17.3R2.1", | |||
| "nonce": "extralongbase64encodedvalue=", | "nonce": "extralongbase64encodedvalue=", | |||
| "ietf-sztp-csr:p10-csr": "BASE64VALUE=" | "ietf-sztp-csr:p10-csr": "BASE64VALUE=" | |||
| } | } | |||
| } | } | |||
| At this point, it is expected that the SZTP-server, perhaps in | At this point, it is expected that the SZTP-server, perhaps in | |||
| conjunction with other systems, such as a backend CA or RA, will | conjunction with other systems, such as a backend CA or registration | |||
| validate the CSR's origin and proof-of-possession and, assuming the | authority (RA), will validate the CSR's origin and proof-of- | |||
| CSR is approved, issue a signed certificate for the bootstrapping | possession and, assuming the CSR is approved, issue a signed | |||
| device. | certificate for the bootstrapping device. | |||
| The SZTP-server responds with "onboarding-information" (encoded | The SZTP-server responds with conveyed information (the "conveyed- | |||
| inside the "conveyed-information" node, shown below) containing a | information" node shown below) that encodes "onboarding-information" | |||
| signed identity certificate for the CSR provided by the SZTP-client: | (inside the base64 value) containing a signed identity certificate | |||
| for the CSR provided by the SZTP-client: | ||||
| RESPONSE | RESPONSE | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Date: Sat, 31 Oct 2021 17:02:40 GMT | Date: Sat, 31 Oct 2021 17:02:40 GMT | |||
| Server: example-server | Server: example-server | |||
| Content-Type: application/yang-data+json | Content-Type: application/yang-data+json | |||
| { | { | |||
| "ietf-sztp-bootstrap-server:output" : { | "ietf-sztp-bootstrap-server:output" : { | |||
| skipping to change at page 12, line 7 ¶ | skipping to change at line 438 ¶ | |||
| How the signed certificate is conveyed inside the onboarding | How the signed certificate is conveyed inside the onboarding | |||
| information is outside the scope of this document. Some | information is outside the scope of this document. Some | |||
| implementations may choose to convey it inside a script (e.g., SZTP's | implementations may choose to convey it inside a script (e.g., SZTP's | |||
| "pre-configuration-script"), while other implementations may choose | "pre-configuration-script"), while other implementations may choose | |||
| to convey it inside the SZTP "configuration" node. SZTP onboarding | to convey it inside the SZTP "configuration" node. SZTP onboarding | |||
| information is described in Section 2.2 of [RFC8572]. | information is described in Section 2.2 of [RFC8572]. | |||
| Below are two examples of conveying the signed certificate inside the | Below are two examples of conveying the signed certificate inside the | |||
| "configuration" node. Both examples assume that the SZTP-client | "configuration" node. Both examples assume that the SZTP-client | |||
| understands the "ietf-keystore" module defined in | understands the "ietf-keystore" module defined in [RFC9642]. | |||
| [I-D.ietf-netconf-keystore]. | ||||
| This first example illustrates the case where the signed certificate | This first example illustrates the case where the signed certificate | |||
| is for the same asymmetric key used by the SZTP-client's | is for the same asymmetric key used by the SZTP-client's | |||
| manufacturer-generated identity certificate (e.g., an IDevID, from | manufacturer-generated identity certificate (e.g., an Initial Device | |||
| [Std-802.1AR-2018]). As such, the configuration needs to associate | Identifier (IDevID) from [Std-802.1AR-2018]). As such, the | |||
| the newly signed certificate with the existing asymmetric key: | configuration needs to associate the newly signed certificate with | |||
| the existing asymmetric key: | ||||
| =============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
| { | { | |||
| "ietf-keystore:keystore": { | "ietf-keystore:keystore": { | |||
| "asymmetric-keys": { | "asymmetric-keys": { | |||
| "asymmetric-key": [ | "asymmetric-key": [ | |||
| { | { | |||
| "name": "Manufacturer-Generated Hidden Key", | "name": "Manufacturer-Generated Hidden Key", | |||
| "public-key-format": "ietf-crypto-types:subject-public-key\ | "public-key-format": "ietf-crypto-types:subject-public-key\ | |||
| skipping to change at page 13, line 47 ¶ | skipping to change at line 524 ¶ | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| In addition to configuring the signed certificate, it is often | In addition to configuring the signed certificate, it is often | |||
| necessary to also configure the Issuer's signing certificate so that | necessary to also configure the issuer's signing certificate so that | |||
| the device (i.e., STZP-client) can authenticate certificates | the device (i.e., STZP-client) can authenticate certificates | |||
| presented by peer devices signed by the same issuer as its own. | presented by peer devices signed by the same issuer as its own. | |||
| While outside the scope of this document, one way to do this would be | While outside the scope of this document, one way to do this would be | |||
| to use the "ietf-truststore" module defined in | to use the "ietf-truststore" module defined in [RFC9641]. | |||
| [I-D.ietf-netconf-trust-anchors]. | ||||
| 2.3. YANG Module | 2.3. YANG Module | |||
| This module augments an RPC defined in [RFC8572]. The module uses a | This module augments an RPC defined in [RFC8572]. The module uses | |||
| data types and groupings defined in [RFC8572], [RFC8791], and | data types and groupings defined in [RFC8572], [RFC8791], and | |||
| [I-D.ietf-netconf-crypto-types]. The module also has an informative | [RFC9640]. The module also has an informative reference to | |||
| reference to [Std-802.1AR-2018]. | [Std-802.1AR-2018]. | |||
| <CODE BEGINS> file "ietf-sztp-csr@2022-03-02.yang" | <CODE BEGINS> file "ietf-sztp-csr@2022-03-02.yang" | |||
| module ietf-sztp-csr { | module ietf-sztp-csr { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-sztp-csr"; | namespace "urn:ietf:params:xml:ns:yang:ietf-sztp-csr"; | |||
| prefix sztp-csr; | prefix sztp-csr; | |||
| import ietf-sztp-bootstrap-server { | import ietf-sztp-bootstrap-server { | |||
| prefix sztp-svr; | prefix sztp-svr; | |||
| reference | reference | |||
| "RFC 8572: Secure Zero Touch Provisioning (SZTP)"; | "RFC 8572: Secure Zero Touch Provisioning (SZTP)"; | |||
| } | } | |||
| import ietf-yang-structure-ext { | import ietf-yang-structure-ext { | |||
| prefix sx; | prefix sx; | |||
| reference | reference | |||
| "RFC 8791: YANG Data Structure Extensions"; | "RFC 8791: YANG Data Structure Extensions"; | |||
| } | } | |||
| import ietf-ztp-types { | import ietf-ztp-types { | |||
| prefix zt; | prefix zt; | |||
| reference | reference | |||
| "RFC XXXX: Conveying a Certificate Signing Request (CSR) | "RFC 9646: Conveying a Certificate Signing Request (CSR) | |||
| in a Secure Zero Touch Provisioning (SZTP) | in a Secure Zero-Touch Provisioning (SZTP) | |||
| Bootstrapping Request"; | Bootstrapping Request"; | |||
| } | } | |||
| organization | organization | |||
| "IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
| contact | contact | |||
| "WG Web: https://datatracker.ietf.org/wg/netconf | "WG Web: https://datatracker.ietf.org/wg/netconf | |||
| WG List: NETCONF WG list <mailto:netconf@ietf.org> | WG List: NETCONF WG list <mailto:netconf@ietf.org> | |||
| Authors: Kent Watsen <mailto:kent+ietf@watsen.net> | Authors: Kent Watsen <mailto:kent+ietf@watsen.net> | |||
| skipping to change at page 15, line 8 ¶ | skipping to change at line 581 ¶ | |||
| Sean Turner <mailto:sean@sn3rd.com>"; | Sean Turner <mailto:sean@sn3rd.com>"; | |||
| description | description | |||
| "This module augments the 'get-bootstrapping-data' RPC, | "This module augments the 'get-bootstrapping-data' RPC, | |||
| defined in the 'ietf-sztp-bootstrap-server' module from | defined in the 'ietf-sztp-bootstrap-server' module from | |||
| SZTP (RFC 8572), enabling the SZTP-client to obtain a | SZTP (RFC 8572), enabling the SZTP-client to obtain a | |||
| signed identity certificate (e.g., an LDevID from IEEE | signed identity certificate (e.g., an LDevID from IEEE | |||
| 802.1AR) as part of the SZTP onboarding information | 802.1AR) as part of the SZTP onboarding information | |||
| response. | response. | |||
| Copyright (c) 2022 IETF Trust and the persons identified | ||||
| as authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with | ||||
| or without modification, is permitted pursuant to, and | ||||
| subject to the license terms contained in, the Revised | ||||
| BSD License set forth in Section 4.c of the IETF Trust's | ||||
| Legal Provisions Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX | ||||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC | ||||
| itself for full legal notices. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | |||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | |||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this | 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this | |||
| document are to be interpreted as described in BCP 14 | document are to be interpreted as described in BCP 14 | |||
| (RFC 2119) (RFC 8174) when, and only when, they appear | (RFC 2119) (RFC 8174) when, and only when, they appear | |||
| in all capitals, as shown here."; | in all capitals, as shown here. | |||
| Copyright (c) 2024 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject to | ||||
| the license terms contained in, the Revised BSD License set | ||||
| forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC 9646 | ||||
| (https://www.rfc-editor.org/info/rfc9646); see the | ||||
| RFC itself for full legal notices."; | ||||
| revision 2022-03-02 { | revision 2022-03-02 { | |||
| description | description | |||
| "Initial version"; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: Conveying a Certificate Signing Request (CSR) | "RFC 9646: Conveying a Certificate Signing Request (CSR) | |||
| in a Secure Zero Touch Provisioning (SZTP) | in a Secure Zero-Touch Provisioning (SZTP) | |||
| Bootstrapping Request"; | Bootstrapping Request"; | |||
| } | } | |||
| // Protocol-accessible nodes | // Protocol-accessible nodes | |||
| augment "/sztp-svr:get-bootstrapping-data/sztp-svr:input" { | augment "/sztp-svr:get-bootstrapping-data/sztp-svr:input" { | |||
| description | description | |||
| "This augmentation adds the 'csr-support' and 'csr' nodes to | "This augmentation adds the 'csr-support' and 'csr' nodes to | |||
| the SZTP (RFC 8572) 'get-bootstrapping-data' request message, | the SZTP (RFC 8572) 'get-bootstrapping-data' request message, | |||
| enabling the SZTP-client to obtain an identity certificate | enabling the SZTP-client to obtain an identity certificate | |||
| (e.g., an LDevID from IEEE 802.1AR) as part of the onboarding | (e.g., an LDevID from IEEE 802.1AR) as part of the onboarding | |||
| information response provided by the SZTP-server. | information response provided by the SZTP-server. | |||
| The 'csr-support' node enables the SZTP-client to indicate | The 'csr-support' node enables the SZTP-client to indicate | |||
| that it supports generating certificate signing requests | that it supports generating certificate signing requests | |||
| (CSRs), and to provide details around the CSRs it is able | (CSRs) and to provide details around the CSRs it is able | |||
| to generate. | to generate. | |||
| The 'csr' node enables the SZTP-client to relay a CSR to | The 'csr' node enables the SZTP-client to relay a CSR to | |||
| the SZTP-server."; | the SZTP-server."; | |||
| reference | reference | |||
| "IEEE 802.1AR: IEEE Standard for Local and metropolitan | "IEEE 802.1AR: IEEE Standard for Local and Metropolitan | |||
| area networks - Secure Device Identity | Area Networks - Secure Device Identity | |||
| RFC 8572: Secure Zero Touch Provisioning (SZTP)"; | RFC 8572: Secure Zero Touch Provisioning (SZTP)"; | |||
| choice msg-type { | choice msg-type { | |||
| description | description | |||
| "Messages are mutually exclusive."; | "Messages are mutually exclusive."; | |||
| case csr-support { | case csr-support { | |||
| description | description | |||
| "Indicates how the SZTP-client supports generating CSRs. | "Indicates how the SZTP-client supports generating CSRs. | |||
| If present and a SZTP-server wishes to request the | If present and a SZTP-server wishes to request the | |||
| SZTP-client generate a CSR, the SZTP-server MUST | SZTP-client generate a CSR, the SZTP-server MUST | |||
| respond with HTTP code 400 Bad Request with an | respond with an HTTP 400 Bad Request error code with an | |||
| 'ietf-restconf:errors' message having the 'error-tag' | 'ietf-restconf:errors' message having the 'error-tag' | |||
| value 'missing-attribute' and the 'error-info' node | value 'missing-attribute' and the 'error-info' node | |||
| containing the 'csr-request' structure described | containing the 'csr-request' structure described | |||
| in this module."; | in this module."; | |||
| uses zt:csr-support-grouping; | uses zt:csr-support-grouping; | |||
| } | } | |||
| case csr { | case csr { | |||
| description | description | |||
| "Provides the CSR generated by the SZTP-client. | "Provides the CSR generated by the SZTP-client. | |||
| When present, the SZTP-server SHOULD respond with | When present, the SZTP-server SHOULD respond with | |||
| an SZTP onboarding information message containing | an SZTP onboarding information message containing | |||
| a signed certificate for the conveyed CSR. The | a signed certificate for the conveyed CSR. The | |||
| SZTP-server MAY alternatively respond with another | SZTP-server MAY alternatively respond with another | |||
| HTTP error containing another 'csr-request', in | HTTP error containing another 'csr-request'; in | |||
| which case the SZTP-client MUST delete any key | which case, the SZTP-client MUST delete any key | |||
| generated for the previously generated CSR."; | generated for the previously generated CSR."; | |||
| uses zt:csr-grouping; | uses zt:csr-grouping; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| sx:structure csr-request { | sx:structure csr-request { | |||
| description | description | |||
| "A YANG data structure, per RFC 8791, that specifies | "A YANG data structure, per RFC 8791, that specifies | |||
| details for the CSR that the ZTP-client is to generate."; | details for the CSR that the ZTP-client is to generate."; | |||
| skipping to change at page 17, line 9 ¶ | skipping to change at line 679 ¶ | |||
| "RFC 8791: YANG Data Structure Extensions"; | "RFC 8791: YANG Data Structure Extensions"; | |||
| uses zt:csr-request-grouping; | uses zt:csr-request-grouping; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 3. The "ietf-ztp-types" Module | 3. The "ietf-ztp-types" Module | |||
| This section defines a YANG 1.1 [RFC7950] module that defines three | This section defines a YANG 1.1 [RFC7950] module that defines three | |||
| YANG groupings, one each for messages sent between a ZTP-client and | YANG groupings, one for each message sent between a ZTP-client and | |||
| ZTP-server. This module is defined independently of the "ietf-sztp- | ZTP-server. This module is defined independently of the "ietf-sztp- | |||
| csr" module so that it's groupings may be used by bootstrapping | csr" module so that its groupings may be used by bootstrapping | |||
| protocols other than SZTP [RFC8572]. | protocols other than SZTP [RFC8572]. | |||
| 3.1. Data Model Overview | 3.1. Data Model Overview | |||
| The following tree diagram [RFC8340] illustrates the three groupings | The following tree diagram [RFC8340] illustrates the three groupings | |||
| defined in the "ietf-ztp-types" module. | defined in the "ietf-ztp-types" module. | |||
| module: ietf-ztp-types | module: ietf-ztp-types | |||
| grouping csr-support-grouping | grouping csr-support-grouping | |||
| skipping to change at page 17, line 48 ¶ | skipping to change at line 718 ¶ | |||
| +-- (csr-type) | +-- (csr-type) | |||
| +--:(p10-csr) | +--:(p10-csr) | |||
| | +-- p10-csr? ct:csr | | +-- p10-csr? ct:csr | |||
| +--:(cmc-csr) | +--:(cmc-csr) | |||
| | +-- cmc-csr? binary | | +-- cmc-csr? binary | |||
| +--:(cmp-csr) | +--:(cmp-csr) | |||
| +-- cmp-csr? binary | +-- cmp-csr? binary | |||
| 3.2. YANG Module | 3.2. YANG Module | |||
| This module uses a data types and groupings [RFC8791] and | This module uses data types and groupings defined in [RFC8791] and | |||
| [I-D.ietf-netconf-crypto-types]. The module has additional normative | [RFC9640]. The module has additional normative references to | |||
| references to [RFC2986], [RFC4210], [RFC5272], and [ITU.X690.2015], | [RFC2986], [RFC4210], [RFC5272], and [ITU.X690.2021] and an | |||
| and an informative reference to [Std-802.1AR-2018]. | informative reference to [Std-802.1AR-2018]. | |||
| <CODE BEGINS> file "ietf-ztp-types@2022-03-02.yang" | <CODE BEGINS> file "ietf-ztp-types@2022-03-02.yang" | |||
| module ietf-ztp-types { | module ietf-ztp-types { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ztp-types"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ztp-types"; | |||
| prefix zt; | prefix zt; | |||
| import ietf-crypto-types { | import ietf-crypto-types { | |||
| prefix ct; | prefix ct; | |||
| reference | reference | |||
| "RFC AAAA: YANG Data Types and Groupings for Cryptography"; | "RFC 9640: YANG Data Types and Groupings for Cryptography"; | |||
| } | } | |||
| organization | organization | |||
| "IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
| contact | contact | |||
| "WG Web: https://datatracker.ietf.org/wg/netconf | "WG Web: https://datatracker.ietf.org/wg/netconf | |||
| WG List: NETCONF WG list <mailto:netconf@ietf.org> | WG List: NETCONF WG list <mailto:netconf@ietf.org> | |||
| Authors: Kent Watsen <mailto:kent+ietf@watsen.net> | Authors: Kent Watsen <mailto:kent+ietf@watsen.net> | |||
| Russ Housley <mailto:housley@vigilsec.com> | Russ Housley <mailto:housley@vigilsec.com> | |||
| Sean Turner <mailto:sean@sn3rd.com>"; | Sean Turner <mailto:sean@sn3rd.com>"; | |||
| description | description | |||
| "This module defines three groupings that enable | "This module defines three groupings that enable | |||
| bootstrapping devices to 1) indicate if and how they | bootstrapping devices to 1) indicate if and how they | |||
| support generating CSRs, 2) obtain a request to | support generating CSRs, 2) obtain a request to | |||
| generate a CSR, and 3) communicate the requested CSR. | generate a CSR, and 3) communicate the requested CSR. | |||
| Copyright (c) 2022 IETF Trust and the persons identified | ||||
| as authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with | ||||
| or without modification, is permitted pursuant to, and | ||||
| subject to the license terms contained in, the Revised | ||||
| BSD License set forth in Section 4.c of the IETF Trust's | ||||
| Legal Provisions Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX | ||||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC | ||||
| itself for full legal notices. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | |||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | |||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this | 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this | |||
| document are to be interpreted as described in BCP 14 | document are to be interpreted as described in BCP 14 | |||
| (RFC 2119) (RFC 8174) when, and only when, they appear | (RFC 2119) (RFC 8174) when, and only when, they appear | |||
| in all capitals, as shown here."; | in all capitals, as shown here. | |||
| Copyright (c) 2024 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject to | ||||
| the license terms contained in, the Revised BSD License set | ||||
| forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC 9646 | ||||
| (https://www.rfc-editor.org/info/rfc9646); see the | ||||
| RFC itself for full legal notices."; | ||||
| revision 2022-03-02 { | revision 2022-03-02 { | |||
| description | description | |||
| "Initial version"; | "Initial version."; | |||
| reference | reference | |||
| "RFC XXXX: Conveying a Certificate Signing Request (CSR) | "RFC 9646: Conveying a Certificate Signing Request (CSR) | |||
| in a Secure Zero Touch Provisioning (SZTP) | in a Secure Zero-Touch Provisioning (SZTP) | |||
| Bootstrapping Request"; | Bootstrapping Request"; | |||
| } | } | |||
| identity certificate-request-format { | identity certificate-request-format { | |||
| description | description | |||
| "A base identity for the request formats supported | "A base identity for the request formats supported | |||
| by the ZTP-client. | by the ZTP-client. | |||
| Additional derived identities MAY be defined by | Additional derived identities MAY be defined by | |||
| future efforts."; | future efforts."; | |||
| skipping to change at page 19, line 41 ¶ | skipping to change at line 807 ¶ | |||
| "RFC 2986: PKCS #10: Certification Request Syntax | "RFC 2986: PKCS #10: Certification Request Syntax | |||
| Specification Version 1.7"; | Specification Version 1.7"; | |||
| } | } | |||
| identity cmp-csr { | identity cmp-csr { | |||
| base certificate-request-format; | base certificate-request-format; | |||
| description | description | |||
| "Indicates that the ZTP-client supports generating | "Indicates that the ZTP-client supports generating | |||
| requests using a profiled version of the PKIMessage | requests using a profiled version of the PKIMessage | |||
| that MUST contain a PKIHeader followed by a PKIBody | that MUST contain a PKIHeader followed by a PKIBody | |||
| containing only the ir, cr, kur, or p10cr structure | containing only the ir, cr, kur, or p10cr structures | |||
| defined in RFC 4210."; | defined in RFC 4210."; | |||
| reference | reference | |||
| "RFC 4210: Internet X.509 Public Key Infrastructure | "RFC 4210: Internet X.509 Public Key Infrastructure | |||
| Certificate Management Protocol (CMP)"; | Certificate Management Protocol (CMP)"; | |||
| } | } | |||
| identity cmc-csr { | identity cmc-csr { | |||
| base certificate-request-format; | base certificate-request-format; | |||
| description | description | |||
| "Indicates that the ZTP-client supports generating | "Indicates that the ZTP-client supports generating | |||
| skipping to change at page 20, line 17 ¶ | skipping to change at line 831 ¶ | |||
| "RFC 5272: Certificate Management over CMS (CMC)"; | "RFC 5272: Certificate Management over CMS (CMC)"; | |||
| } | } | |||
| // Protocol-accessible nodes | // Protocol-accessible nodes | |||
| grouping csr-support-grouping { | grouping csr-support-grouping { | |||
| description | description | |||
| "A grouping enabling use by other efforts."; | "A grouping enabling use by other efforts."; | |||
| container csr-support { | container csr-support { | |||
| description | description | |||
| "Enables a ZTP-client to indicate that it supports | "Enables a ZTP-client to indicate that it supports | |||
| generating certificate signing requests (CSRs) and | generating certificate signing requests (CSRs) and | |||
| provides details about the CSRs it is able to | provides details about the CSRs it is able to | |||
| generate."; | generate."; | |||
| container key-generation { | container key-generation { | |||
| presence | presence "Indicates that the ZTP-client is capable of | |||
| "Indicates that the ZTP-client is capable of | generating a new asymmetric key pair. | |||
| generating a new asymmetric key pair. | ||||
| If this node is not present, the ZTP-server MAY | If this node is not present, the ZTP-server MAY | |||
| request a CSR using the asymmetric key associated | request a CSR using the asymmetric key associated | |||
| with the device's existing identity certificate | with the device's existing identity certificate | |||
| (e.g., an IDevID from IEEE 802.1AR)."; | (e.g., an IDevID from IEEE 802.1AR)."; | |||
| description | description | |||
| "Specifies details for the ZTP-client's ability to | "Specifies details for the ZTP-client's ability to | |||
| generate a new asymmetric key pair."; | generate a new asymmetric key pair."; | |||
| container supported-algorithms { | container supported-algorithms { | |||
| description | description | |||
| "A list of public key algorithms supported by the | "A list of public key algorithms supported by the | |||
| ZTP-client for generating a new asymmetric key."; | ZTP-client for generating a new asymmetric key."; | |||
| leaf-list algorithm-identifier { | leaf-list algorithm-identifier { | |||
| type binary; | type binary; | |||
| min-elements 1; | min-elements 1; | |||
| description | description | |||
| "An AlgorithmIdentifier, as defined in RFC 2986, | "An AlgorithmIdentifier, as defined in RFC 2986, | |||
| encoded using ASN.1 distinguished encoding rules | encoded using ASN.1 Distinguished Encoding Rules | |||
| (DER), as specified in ITU-T X.690."; | (DER), as specified in ITU-T X.690."; | |||
| reference | reference | |||
| "RFC 2986: PKCS #10: Certification Request Syntax | "RFC 2986: PKCS #10: Certification Request Syntax | |||
| Specification Version 1.7 | Specification Version 1.7 | |||
| ITU-T X.690: | ITU-T X.690: | |||
| Information technology - ASN.1 encoding rules: | Information technology - ASN.1 encoding rules: | |||
| Specification of Basic Encoding Rules (BER), | Specification of Basic Encoding Rules (BER), | |||
| Canonical Encoding Rules (CER) and Distinguished | Canonical Encoding Rules (CER) and Distinguished | |||
| Encoding Rules (DER)."; | Encoding Rules (DER)"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container csr-generation { | container csr-generation { | |||
| description | description | |||
| "Specifies details for the ZTP-client's ability to | "Specifies details for the ZTP-client's ability to | |||
| generate a certificate signing requests."; | generate certificate signing requests."; | |||
| container supported-formats { | container supported-formats { | |||
| description | description | |||
| "A list of certificate request formats supported | "A list of certificate request formats supported | |||
| by the ZTP-client for generating a new key."; | by the ZTP-client for generating a new key."; | |||
| leaf-list format-identifier { | leaf-list format-identifier { | |||
| type identityref { | type identityref { | |||
| base zt:certificate-request-format; | base zt:certificate-request-format; | |||
| } | } | |||
| min-elements 1; | min-elements 1; | |||
| description | description | |||
| skipping to change at page 21, line 34 ¶ | skipping to change at line 894 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping csr-request-grouping { | grouping csr-request-grouping { | |||
| description | description | |||
| "A grouping enabling use by other efforts."; | "A grouping enabling use by other efforts."; | |||
| container key-generation { | container key-generation { | |||
| presence | presence "Provided by a ZTP-server to indicate that it wishes | |||
| "Provided by a ZTP-server to indicate that it wishes | the ZTP-client to generate a new asymmetric key. | |||
| the ZTP-client to generate a new asymmetric key. | ||||
| This statement is present so the mandatory descendant | This statement is present so the mandatory | |||
| nodes do not imply that this node must be configured."; | descendant nodes do not imply that this node must | |||
| be configured."; | ||||
| description | description | |||
| "The key generation parameters selected by the ZTP-server. | "The key generation parameters selected by the ZTP-server. | |||
| This leaf MUST only appear if the ZTP-client's | This leaf MUST only appear if the ZTP-client's | |||
| 'csr-support' included the 'key-generation' node."; | 'csr-support' included the 'key-generation' node."; | |||
| container selected-algorithm { | container selected-algorithm { | |||
| description | description | |||
| "The key algorithm selected by the ZTP-server. The | "The key algorithm selected by the ZTP-server. The | |||
| algorithm MUST be one of the algorithms specified by | algorithm MUST be one of the algorithms specified by | |||
| the 'supported-algorithms' node in the ZTP-client's | the 'supported-algorithms' node in the ZTP-client's | |||
| message containing the 'csr-support' structure."; | message containing the 'csr-support' structure."; | |||
| leaf algorithm-identifier { | leaf algorithm-identifier { | |||
| type binary; | type binary; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "An AlgorithmIdentifier, as defined in RFC 2986, | "An AlgorithmIdentifier, as defined in RFC 2986, | |||
| encoded using ASN.1 distinguished encoding rules | encoded using ASN.1 Distinguished Encoding Rules | |||
| (DER), as specified in ITU-T X.690."; | (DER), as specified in ITU-T X.690."; | |||
| reference | reference | |||
| "RFC 2986: PKCS #10: Certification Request Syntax | "RFC 2986: PKCS #10: Certification Request Syntax | |||
| Specification Version 1.7 | Specification Version 1.7 | |||
| ITU-T X.690: | ITU-T X.690: | |||
| Information technology - ASN.1 encoding rules: | Information technology - ASN.1 encoding rules: | |||
| Specification of Basic Encoding Rules (BER), | Specification of Basic Encoding Rules (BER), | |||
| Canonical Encoding Rules (CER) and Distinguished | Canonical Encoding Rules (CER) and Distinguished | |||
| Encoding Rules (DER)."; | Encoding Rules (DER)"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container csr-generation { | container csr-generation { | |||
| description | description | |||
| "Specifies details for the CSR that the ZTP-client | "Specifies details for the CSR that the ZTP-client | |||
| is to generate."; | is to generate."; | |||
| container selected-format { | container selected-format { | |||
| description | description | |||
| "The CSR format selected by the ZTP-server. The | "The CSR format selected by the ZTP-server. The | |||
| format MUST be one of the formats specified by | format MUST be one of the formats specified by | |||
| the 'supported-formats' node in the ZTP-client's | the 'supported-formats' node in the ZTP-client's | |||
| request message."; | request message."; | |||
| leaf format-identifier { | leaf format-identifier { | |||
| type identityref { | type identityref { | |||
| base zt:certificate-request-format; | base zt:certificate-request-format; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A certificate request format to be used by the | "A certificate request format to be used by the | |||
| ZTP-client."; | ZTP-client."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf cert-req-info { | leaf cert-req-info { | |||
| type ct:csr-info; | type ct:csr-info; | |||
| description | description | |||
| "A CertificationRequestInfo structure, as defined in | "A CertificationRequestInfo structure, as defined in | |||
| RFC 2986, and modeled via a 'typedef' statement by | RFC 2986, and modeled via a 'typedef' statement by | |||
| RFC AAAA. | RFC 9640. | |||
| Enables the ZTP-server to provide a fully-populated | Enables the ZTP-server to provide a fully populated | |||
| CertificationRequestInfo structure that the ZTP-client | CertificationRequestInfo structure that the ZTP-client | |||
| only needs to sign in order to generate the complete | only needs to sign in order to generate the complete | |||
| 'CertificationRequest' structure to send to ZTP-server | 'CertificationRequest' structure to send to the ZTP-server | |||
| in its next 'get-bootstrapping-data' request message. | in its next 'get-bootstrapping-data' request message. | |||
| When provided, the ZTP-client MUST use this structure | When provided, the ZTP-client MUST use this structure | |||
| to generate its CSR; failure to do so will result in a | to generate its CSR; failure to do so will result in a | |||
| 400 Bad Request response containing another 'csr-request' | 400 Bad Request response containing another 'csr-request' | |||
| structure. | structure. | |||
| When not provided, the ZTP-client SHOULD generate a CSR | When not provided, the ZTP-client SHOULD generate a CSR | |||
| using the same structure defined in its existing identity | using the same structure defined in its existing identity | |||
| certificate (e.g., an IDevID from IEEE 802.1AR). | certificate (e.g., an IDevID from IEEE 802.1AR). | |||
| If the 'AlgorithmIdentifier' field contained inside the | If the 'AlgorithmIdentifier' field contained inside the | |||
| certificate 'SubjectPublicKeyInfo' field does not match | certificate 'SubjectPublicKeyInfo' field does not match | |||
| the algorithm identified by the 'selected-algorithm' node, | the algorithm identified by the 'selected-algorithm' node, | |||
| then the client MUST reject the certificate and raise an | then the client MUST reject the certificate and raise an | |||
| error."; | error."; | |||
| reference | reference | |||
| "RFC 2986: | "RFC 2986: | |||
| PKCS #10: Certification Request Syntax Specification | PKCS #10: Certification Request Syntax Specification | |||
| RFC AAAA: | Version 1.7 | |||
| RFC 9640: | ||||
| YANG Data Types and Groupings for Cryptography"; | YANG Data Types and Groupings for Cryptography"; | |||
| } | } | |||
| } | } | |||
| grouping csr-grouping { | grouping csr-grouping { | |||
| description | description | |||
| "Enables a ZTP-client to convey a certificate signing | "Enables a ZTP-client to convey a certificate signing | |||
| request, using the encoding format selected by a | request, using the encoding format selected by a | |||
| ZTP-server's 'csr-request' response to the ZTP-client's | ZTP-server's 'csr-request' response to the ZTP-client's | |||
| previously sent request containing the 'csr-support' | previously sent request containing the 'csr-support' | |||
| node."; | node."; | |||
| choice csr-type { | choice csr-type { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "A choice amongst certificate signing request formats. | "A choice amongst certificate signing request formats. | |||
| Additional formats MAY be augmented into this 'choice' | Additional formats MAY be augmented into this 'choice' | |||
| statement by future efforts."; | statement by future efforts."; | |||
| case p10-csr { | case p10-csr { | |||
| leaf p10-csr { | leaf p10-csr { | |||
| type ct:csr; | type ct:p10-csr; | |||
| description | description | |||
| "A CertificationRequest structure, per RFC 2986. | "A CertificationRequest structure, per RFC 2986. | |||
| Encoding details are defined in the 'ct:csr' | Encoding details are defined in the 'ct:csr' | |||
| typedef defined in RFC AAAA. | typedef defined in RFC 9640. | |||
| A raw P10 does not support origin authentication in | A raw P10 does not support origin authentication in | |||
| the CSR structure. External origin authentication | the CSR structure. External origin authentication | |||
| may be provided via the ZTP-client's authentication | may be provided via the ZTP-client's authentication | |||
| to the ZTP-server at the transport layer (e.g., TLS)."; | to the ZTP-server at the transport layer (e.g., TLS)."; | |||
| reference | reference | |||
| "RFC 2986: PKCS #10: Certification Request Syntax | "RFC 2986: PKCS #10: Certification Request Syntax | |||
| Specification | Specification Version 1.7 | |||
| RFC AAAA: YANG Data Types and Groupings for | RFC 9640: YANG Data Types and Groupings for | |||
| Cryptography"; | Cryptography"; | |||
| } | } | |||
| } | } | |||
| case cmc-csr { | case cmc-csr { | |||
| leaf cmc-csr { | leaf cmc-csr { | |||
| type binary; | type binary; | |||
| description | description | |||
| "A profiled version of the 'Full PKI Request' | "A profiled version of the 'Full PKI Request' | |||
| message defined in RFC 5272, encoded using ASN.1 | message defined in RFC 5272, encoded using ASN.1 | |||
| distinguished encoding rules (DER), as specified | Distinguished Encoding Rules (DER), as specified | |||
| in ITU-T X.690. | in ITU-T X.690. | |||
| For asymmetric key-based origin authentication of a | For asymmetric-key-based origin authentication of a | |||
| CSR based on the initial device identity certificate's | CSR based on the initial device identity certificate's | |||
| private key for the associated identity certificate's | private key for the associated identity certificate's | |||
| public key, the PKIData contains one reqSequence | public key, the PKIData contains one reqSequence | |||
| element and no cmsSequence or otherMsgSequence | element and no cmsSequence or otherMsgSequence | |||
| elements. The reqSequence is the TaggedRequest | elements. The reqSequence is the TaggedRequest, | |||
| and it is the tcr CHOICE branch. The tcr is the | and it is the tcr CHOICE branch. The tcr is the | |||
| TaggedCertificationRequest and it is the bodyPartId | TaggedCertificationRequest, and it is the bodyPartID | |||
| and the certificateRequest elements. The | and the certificateRequest elements. The | |||
| certificateRequest is signed with the initial device | certificateRequest is signed with the initial device | |||
| identity certificate's private key. The initial device | identity certificate's private key. The initial device | |||
| identity certificate and optionally its certificate | identity certificate, and optionally its certificate | |||
| chain is included in the SignedData certificates that | chain is included in the SignedData certificates that | |||
| encapsulates the PKIData. | encapsulate the PKIData. | |||
| For asymmetric key-based origin authentication based on | For asymmetric-key-based origin authentication based on | |||
| the initial device identity certificate's private key | the initial device identity certificate's private key | |||
| that signs the encapsulated CSR signed by the local | that signs the encapsulated CSR signed by the local | |||
| device identity certificate's private key, the | device identity certificate's private key, the | |||
| PKIData contains one cmsSequence element and no | PKIData contains one cmsSequence element and no | |||
| reqSequence or otherMsgSequence | reqSequence or otherMsgSequence | |||
| elements. The cmsSequence is the TaggedContentInfo | elements. The cmsSequence is the TaggedContentInfo, | |||
| and it includes a bodyPartID element and a contentInfo. | and it includes a bodyPartID element and a contentInfo. | |||
| The contentInfo is a SignedData encapsulating a PKIData | The contentInfo is a SignedData encapsulating a PKIData | |||
| with one reqSequence element and no cmsSequence or | with one reqSequence element and no cmsSequence or | |||
| otherMsgSequence elements. The reqSequence is the | otherMsgSequence elements. The reqSequence is the | |||
| TaggedRequest and it is the tcr CHOICE. The tcr is the | TaggedRequest, and it is the tcr CHOICE. The tcr is the | |||
| TaggedCertificationRequest and it is the bodyPartId and | TaggedCertificationRequest, and it is the bodyPartID and | |||
| the certificateRequest elements. PKIData contains one | the certificateRequest elements. PKIData contains one | |||
| cmsSequence element and no controlSequence, reqSequence, | cmsSequence element and no controlSequence, reqSequence, | |||
| or otherMsgSequence elements. The certificateRequest | or otherMsgSequence elements. The certificateRequest | |||
| is signed with the local device identity certificate's | is signed with the local device identity certificate's | |||
| private key. The initial device identity certificate | private key. The initial device identity certificate | |||
| and optionally its certificate chain is included in the | and optionally its certificate chain is included in | |||
| SignedData certificates that encapsulates the PKIData. | the SignedData certificates that encapsulate the | |||
| PKIData. | ||||
| For shared secret-based origin authentication of a | For shared-secret-based origin authentication of a | |||
| CSR signed by the local device identity certificate's | CSR signed by the local device identity certificate's | |||
| private key, the PKIData contains one cmsSequence | private key, the PKIData contains one cmsSequence | |||
| element and no reqSequence or otherMsgSequence | element and no reqSequence or otherMsgSequence | |||
| elements. The cmsSequence is the TaggedContentInfo | elements. The cmsSequence is the TaggedContentInfo, | |||
| and it includes a bodyPartID element and a contentInfo. | and it includes a bodyPartID element and a contentInfo. | |||
| The contentInfo is an AuthenticatedData encapsulating | The contentInfo is an AuthenticatedData encapsulating | |||
| a PKIData with one reqSequence element and no | a PKIData with one reqSequence element and no | |||
| cmsSequences or otherMsgSequence elements. The | cmsSequences or otherMsgSequence elements. The | |||
| reqSequence is the TaggedRequest and it is the tcr | reqSequence is the TaggedRequest, and it is the tcr | |||
| CHOICE. The tcr is the TaggedCertificationRequest | CHOICE. The tcr is the TaggedCertificationRequest, | |||
| and it is the bodyPartId and the certificateRequest | and it is the bodyPartID and the certificateRequest | |||
| elements. The certificateRequest is signed with the | elements. The certificateRequest is signed with the | |||
| local device identity certificate's private key. The | local device identity certificate's private key. The | |||
| initial device identity certificate and optionally its | initial device identity certificate and optionally its | |||
| certificate chain is included in the SignedData | certificate chain is included in the SignedData | |||
| certificates that encapsulates the PKIData."; | certificates that encapsulate the PKIData."; | |||
| reference | reference | |||
| "RFC 5272: Certificate Management over CMS (CMC) | "RFC 5272: Certificate Management over CMS (CMC) | |||
| ITU-T X.690: | ITU-T X.690: | |||
| Information technology - ASN.1 encoding rules: | Information technology - ASN.1 encoding rules: | |||
| Specification of Basic Encoding Rules (BER), | Specification of Basic Encoding Rules (BER), | |||
| Canonical Encoding Rules (CER) and Distinguished | Canonical Encoding Rules (CER) and Distinguished | |||
| Encoding Rules (DER)."; | Encoding Rules (DER)"; | |||
| } | } | |||
| } | } | |||
| case cmp-csr { | case cmp-csr { | |||
| leaf cmp-csr { | leaf cmp-csr { | |||
| type binary; | type binary; | |||
| description | description | |||
| "A PKIMessage structure, as defined in RFC 4210, | "A PKIMessage structure, as defined in RFC 4210, | |||
| encoded using ASN.1 distinguished encoding rules | encoded using ASN.1 Distinguished Encoding Rules | |||
| (DER), as specified in ITU-T X.690. | (DER), as specified in ITU-T X.690. | |||
| For asymmetric key-based origin authentication of a | For asymmetric-key-based origin authentication of a | |||
| CSR based on the initial device identity certificate's | CSR based on the initial device identity certificate's | |||
| private key for the associated initial device identity | private key for the associated initial device identity | |||
| certificate's public key, PKIMessages contains one | certificate's public key, PKIMessages contain one | |||
| PKIMessage with the header and body elements, no | PKIMessage with the header and body elements, do not | |||
| protection element, and SHOULD contain the extraCerts | contain a protection element, and SHOULD contain the | |||
| element. The header element contains the pvno, sender, | extraCerts element. The header element contains the | |||
| and recipient elements. The pvno contains cmp2000, and | pvno, sender, and recipient elements. The pvno contains | |||
| the sender contains the subject of the initial device | cmp2000, and the sender contains the subject of the | |||
| identity certificate. The body element contains an ir, | initial device identity certificate. The body element | |||
| cr, kur, or p10cr CHOICE of type CertificationRequest. | contains an ir, cr, kur, or p10cr CHOICE of type | |||
| It is signed with the initial device identity | CertificationRequest. It is signed with the initial | |||
| certificate's private key. The extraCerts element | device identity certificate's private key. The | |||
| contains the initial device identity certificate, | extraCerts element contains the initial device identity | |||
| optionally followed by its certificate chain excluding | certificate, optionally followed by its certificate | |||
| the trust anchor. | chain excluding the trust anchor. | |||
| For asymmetric key-based origin authentication based | For asymmetric-key-based origin authentication based | |||
| on the initial device identity certificate's private | on the initial device identity certificate's private | |||
| key that signs the encapsulated CSR signed by the local | key that signs the encapsulated CSR signed by the local | |||
| device identity certificate's private key, PKIMessages | device identity certificate's private key, PKIMessages | |||
| contains one PKIMessage with the header, body, and | contain one PKIMessage with the header, body, and | |||
| protection elements, and SHOULD contain the extraCerts | protection elements and SHOULD contain the extraCerts | |||
| element. The header element contains the pvno, sender, | element. The header element contains the pvno, sender, | |||
| recipient, protectionAlg, and optionally senderKID | recipient, protectionAlg, and optionally senderKID | |||
| elements. The pvno contains cmp2000, the sender | elements. The pvno contains cmp2000, the sender | |||
| contains the subject of the initial device identity | contains the subject of the initial device identity | |||
| certificate, the protectionAlg contains the | certificate, the protectionAlg contains the | |||
| AlgorithmIdentifier of the used signature algorithm, | AlgorithmIdentifier of the used signature algorithm, | |||
| and the senderKID contains the subject key identifier | and the senderKID contains the subject key identifier | |||
| of the initial device identity certificate. The body | of the initial device identity certificate. The body | |||
| element contains an ir, cr, kur, or p10cr CHOICE of | element contains an ir, cr, kur, or p10cr CHOICE of | |||
| type CertificationRequest. It is signed with the local | type CertificationRequest. It is signed with the local | |||
| device identity certificate's private key. The | device identity certificate's private key. The | |||
| protection element contains the digital signature | protection element contains the digital signature | |||
| generated with the initial device identity | generated with the initial device identity | |||
| certificate's private key. The extraCerts element | certificate's private key. The extraCerts element | |||
| contains the initial device identity certificate, | contains the initial device identity certificate, | |||
| optionally followed by its certificate chain excluding | optionally followed by its certificate chain excluding | |||
| the trust anchor. | the trust anchor. | |||
| For shared secret-based origin authentication of a | For shared-secret-based origin authentication of a | |||
| CSR signed by the local device identity certificate's | CSR signed by the local device identity certificate's | |||
| private key, PKIMessages contains one PKIMessage with | private key, PKIMessages contain one PKIMessage with | |||
| the header, body, and protection element, and no | the header, body, and protection element and no | |||
| extraCerts element. The header element contains the | extraCerts element. The header element contains the | |||
| pvno, sender, recipient, protectionAlg, and senderKID | pvno, sender, recipient, protectionAlg, and senderKID | |||
| elements. The pvno contains cmp2000, the protectionAlg | elements. The pvno contains cmp2000, the protectionAlg | |||
| contains the AlgorithmIdentifier of the used MAC | contains the AlgorithmIdentifier of the used Message | |||
| algorithm, and the senderKID contains a reference the | Authentication Code (MAC) algorithm, and the senderKID | |||
| recipient can use to identify the shared secret. The | contains a reference the recipient can use to identify | |||
| body element contains an ir, cr, kur, or p10cr CHOICE | the shared secret. The body element contains an ir, cr, | |||
| of type CertificationRequest. It is signed with the | kur, or p10cr CHOICE of type CertificationRequest. It | |||
| local device identity certificate's private key. The | is signed with the local device identity certificate's | |||
| protection element contains the MAC value generated | private key. The protection element contains the MAC | |||
| with the shared secret."; | value generated with the shared secret."; | |||
| reference | reference | |||
| "RFC 4210: | "RFC 4210: | |||
| Internet X.509 Public Key Infrastructure | Internet X.509 Public Key Infrastructure | |||
| Certificate Management Protocol (CMP) | Certificate Management Protocol (CMP) | |||
| ITU-T X.690: | ITU-T X.690: | |||
| Information technology - ASN.1 encoding rules: | Information technology - ASN.1 encoding rules: | |||
| Specification of Basic Encoding Rules (BER), | Specification of Basic Encoding Rules (BER), | |||
| Canonical Encoding Rules (CER) and Distinguished | Canonical Encoding Rules (CER) and Distinguished | |||
| Encoding Rules (DER)."; | Encoding Rules (DER)"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| This document builds on top of the solution presented in [RFC8572] | This document builds on top of the solution presented in [RFC8572], | |||
| and therefore all the Security Considerations discussed in RFC 8572 | and therefore all the security considerations discussed in [RFC8572] | |||
| apply here as well. | apply here as well. | |||
| For the various CSR formats, when using PKCS#10, the security | For the various CSR formats, when using PKCS#10, the security | |||
| considerations in [RFC2986] apply, when using CMP, the security | considerations in [RFC2986] apply; when using CMP, the security | |||
| considerations in [RFC4210] apply and, when using CMC, the security | considerations in [RFC4210] apply; and when using CMC, the security | |||
| considerations in [RFC5272] apply. | considerations in [RFC5272] apply. | |||
| For the various authentication mechanisms, when using TLS-level | For the various authentication mechanisms, when using TLS-level | |||
| authentication, the security considerations in [RFC8446] apply and, | authentication, the security considerations in [RFC8446] apply, and | |||
| when using HTTP-level authentication, the security considerations in | when using HTTP-level authentication, the security considerations in | |||
| [RFC7235] apply. | [RFC9110] apply. | |||
| 4.1. SZTP-Client Considerations | 4.1. SZTP-Client Considerations | |||
| 4.1.1. Ensuring the Integrity of Asymmetric Private Keys | 4.1.1. Ensuring the Integrity of Asymmetric Private Keys | |||
| The private key the SZTP-client uses for the dynamically-generated | The private key the SZTP-client uses for the dynamically generated | |||
| identity certificate MUST be protected from inadvertent disclosure in | identity certificate MUST be protected from inadvertent disclosure in | |||
| order to prevent identity fraud. | order to prevent identity fraud. | |||
| The security of this private key is essential in order to ensure the | The security of this private key is essential in order to ensure the | |||
| associated identity certificate can be used to authenticate the | associated identity certificate can be used to authenticate the | |||
| device it is issued to. | device it is issued to. | |||
| It is RECOMMENDED that devices are manufactured with an HSM (hardware | It is RECOMMENDED that devices are manufactured with a hardware | |||
| security module), such as a TPM (trusted platform module), 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 NMS controller/orchestrator | private keys. For instance, a Network Management System (NMS) | |||
| application could periodically prompt the SZTP-client to generate a | controller/orchestrator application could periodically prompt the | |||
| new private key and provide a certificate signing request (CSR) or, | SZTP-client to generate a new private key and provide a certificate | |||
| alternatively, push both the key and an identity certificate to the | signing request (CSR) or, alternatively, push both the key and an | |||
| SZTP-client using, e.g., a PKCS #12 message [RFC7292]. In another | identity certificate to the SZTP-client using, e.g., a PKCS#12 | |||
| example, the SZTP-client could be configured to periodically reset | message [RFC7292]. In another example, the SZTP-client could be | |||
| the configuration to its factory default, thus causing removal of the | configured to periodically reset the configuration to its factory | |||
| private key and associated identity certificates and re-execution of | default, thus causing removal of the private key and associated | |||
| 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 | |||
| It is RECOMMENDED that a new private key is generated for each CSR | It is RECOMMENDED that a new private key is generated for each CSR | |||
| described in this document. | described in this document. | |||
| Implementations must randomly generate nonces and private keys. The | Implementations must randomly generate nonces and private keys. The | |||
| use of inadequate pseudo-random number generators (PRNGs) to generate | use of inadequate pseudorandom number generators (PRNGs) to generate | |||
| cryptographic keys can result in little or no security. An attacker | cryptographic keys can result in little or no security. An attacker | |||
| may find it much easier to reproduce the PRNG environment that | may find it much easier to reproduce the PRNG environment that | |||
| produced the keys, searching the resulting small set of | produced the keys, searching the resulting small set of | |||
| possibilities, rather than brute force searching the whole key space. | possibilities, rather than brute force searching the whole key space. | |||
| As an example of predictable random numbers see CVE-2008-0166 | As an example of predictable random numbers, see CVE-2008-0166 | |||
| [CVE-2008-0166], and some consequences of low-entropy random numbers | [CVE-2008-0166], and some consequences of low-entropy random numbers | |||
| are discussed in Mining Your Ps and Qs [MiningPsQs]. The generation | are discussed in "Mining Your Ps and Qs" [MiningPsQs]. The | |||
| of quality random numbers is difficult. [ISO.20543-2019], | generation of quality random numbers is difficult. [ISO.20543-2019], | |||
| [NIST.SP.800-90Ar1], BSI AIS 31 [AIS31], BCP 106 [RFC4086], and | [NIST.SP.800-90Ar1], BSI AIS 31 [AIS31], BCP 106 [RFC4086], and | |||
| others offer valuable guidance in this area. | others offer valuable guidance in this area. | |||
| This private key SHOULD be protected as well as the built-in private | This private key SHOULD be protected as well as the built-in private | |||
| key associated with the SZTP-client's initial device identity | key associated with the SZTP-client's initial device identity | |||
| certificate (e.g., the IDevID, from [Std-802.1AR-2018]). | certificate (e.g., the IDevID from [Std-802.1AR-2018]). | |||
| In cases where it is not possible to generate a new private key that | In cases where it is not possible to generate a new private key that | |||
| is protected as well as the built-in private key, it is RECOMMENDED | is protected as well as the built-in private key, it is RECOMMENDED | |||
| to reuse the built-in private key rather than generate a new private | to reuse the built-in private key rather than generate a new private | |||
| key that is not as well protected. | key that is not as well protected. | |||
| 4.1.3. Replay Attack Protection | 4.1.3. Replay Attack Protection | |||
| This RFC enables an SZTP-client to announce an ability to generate a | This RFC enables an SZTP-client to announce an ability to generate a | |||
| new key to use for its CSR. | new key to use for its CSR. | |||
| skipping to change at page 29, line 34 ¶ | skipping to change at line 1277 ¶ | |||
| generated identity certificate (e.g., IDevID) is used for the | generated identity certificate (e.g., IDevID) is used for the | |||
| request, there may not be confirmation to the SZTP-client that the | request, there may not be confirmation to the SZTP-client that the | |||
| response has not been replayed; however, the worst case result is a | response has not been replayed; however, the worst case result is a | |||
| lost certificate that is associated to the private key known only to | lost certificate that is associated to the private key known only to | |||
| the SZTP-client. Protection of the private-key information is vital | the SZTP-client. Protection of the private-key information is vital | |||
| to public-key cryptography. Disclosure of the private-key material | to public-key cryptography. Disclosure of the private-key material | |||
| to another entity can lead to masquerades. | to another entity can lead to masquerades. | |||
| 4.1.4. Connecting to an Untrusted Bootstrap Server | 4.1.4. Connecting to an Untrusted Bootstrap Server | |||
| [RFC8572] allows SZTP-clients to connect to untrusted SZTP-servers, | [RFC8572] allows SZTP-clients to connect to untrusted SZTP-servers by | |||
| by blindly authenticating the SZTP-server's TLS end-entity | blindly authenticating the SZTP-server's TLS end-entity certificate. | |||
| certificate. | ||||
| As is discussed in Section 9.5 of [RFC8572], in such cases the SZTP- | As is discussed in Section 9.5 of [RFC8572], in such cases, the SZTP- | |||
| client MUST assert that the bootstrapping data returned is signed, if | client MUST assert that the bootstrapping data returned is signed if | |||
| the SZTP-client is to trust it. | the SZTP-client is to trust it. | |||
| However, the HTTP error message used in this document cannot be | However, the HTTP error message used in this document cannot be | |||
| signed data, as described in RFC 8572. | signed data, as described in [RFC8572]. | |||
| Therefore, the solution presented in this document cannot be used | Therefore, the solution presented in this document cannot be used | |||
| when the SZTP-client connects to an untrusted SZTP-server. | when the SZTP-client connects to an untrusted SZTP-server. | |||
| Consistent with the recommendation presented in Section 9.6 of | Consistent with the recommendation presented in Section 9.6 of | |||
| [RFC8572], SZTP-clients SHOULD NOT pass the "csr-support" input | [RFC8572], SZTP-clients SHOULD NOT pass the "csr-support" input | |||
| parameter to an untrusted SZTP-server. SZTP-clients SHOULD pass | parameter to an untrusted SZTP-server. SZTP-clients SHOULD instead | |||
| instead the "signed-data-preferred" input parameter, as discussed in | pass the "signed-data-preferred" input parameter, as discussed in | |||
| Appendix B of [RFC8572]. | Appendix B of [RFC8572]. | |||
| 4.1.5. Selecting the Best Origin Authentication Mechanism | 4.1.5. Selecting the Best Origin Authentication Mechanism | |||
| The origin of the CSR must be verified before a certificate is | The origin of the CSR must be verified before a certificate is | |||
| issued. | issued. | |||
| When generating a new key, it is important that the SZTP-client be | When generating a new key, it is important that the SZTP-client be | |||
| able to provide additional proof that it was the entity that | able to provide additional proof that it was the entity that | |||
| generated the key. | generated the key. | |||
| The CMP and CMC certificate request formats defined in this document | The CMP and CMC certificate request formats defined in this document | |||
| support origin authentication. A raw PKCS#10 CSR does not support | support origin authentication. A raw PKCS#10 CSR does not support | |||
| origin authentication. | origin authentication. | |||
| The CMP and CMC request formats support origin authentication using | The CMP and CMC request formats support origin authentication using | |||
| both PKI and shared secret. | both PKI and a shared secret. | |||
| Typically, only one possible origin authentication mechanism can | Typically, only one possible origin authentication mechanism can | |||
| possibly be used but, in the case that the SZTP-client authenticates | possibly be used, but in the case that the SZTP-client authenticates | |||
| itself using both TLS-level (e.g., IDevID) and HTTP-level credentials | itself using both TLS-level (e.g., IDevID) and HTTP-level credentials | |||
| (e.g., Basic), as is allowed by Section 5.3 of [RFC8572], then the | (e.g., Basic), as is allowed by Section 5.3 of [RFC8572], then the | |||
| SZTP-client may need to choose between the two options. | SZTP-client may need to choose between the two options. | |||
| In the case that the SZTP-client must choose between an asymmetric | In the case that the SZTP-client must choose between an asymmetric | |||
| key option versus a shared secret for origin authentication, it is | key option versus a shared secret for origin authentication, it is | |||
| RECOMMENDED that the SZTP-client choose using the asymmetric key. | RECOMMENDED that the SZTP-client choose using the asymmetric key. | |||
| 4.1.6. Clearing the Private Key and Associated Certificate | 4.1.6. Clearing the Private Key and Associated Certificate | |||
| Unlike a manufacturer-generated identity certificate (e.g., IDevID), | Unlike a manufacturer-generated identity certificate (e.g., IDevID), | |||
| the deployment-generated identity certificate (e.g., LDevID) and the | the deployment-generated identity certificate (e.g., LDevID) and the | |||
| associated private key (assuming a new private key was generated for | associated private key (assuming a new private key was generated for | |||
| the purpose), are considered user data and SHOULD be cleared whenever | the purpose) are considered user data and SHOULD be cleared whenever | |||
| the SZTP-client is reset to its factory default state, such as by the | the SZTP-client is reset to its factory default state, such as by the | |||
| "factory-reset" RPC defined in [RFC8808]. | "factory-reset" RPC defined in [RFC8808]. | |||
| 4.2. SZTP-Server Considerations | 4.2. SZTP-Server Considerations | |||
| 4.2.1. Verifying Proof of Possession | 4.2.1. Verifying Proof-of-Possession | |||
| Regardless if using a new asymmetric key or the bootstrapping | Regardless, if using a new asymmetric key or the bootstrapping | |||
| device's manufacturer-generated key (e.g., the IDevID key), the | device's manufacturer-generated key (e.g., the IDevID key), the | |||
| public key is placed in the CSR and the CSR is signed by that private | public key is placed in the CSR and the CSR is signed by that private | |||
| key. Proof-of-possession of the private key is verified by ensuring | key. Proof-of-possession of the private key is verified by ensuring | |||
| the signature over the CSR using the public key placed in the CSR. | the signature over the CSR using the public key placed in the CSR. | |||
| 4.2.2. Verifying Proof of Origin | 4.2.2. Verifying Proof-of-Origin | |||
| When the bootstrapping device's manufacturer-generated private key | When the bootstrapping device's manufacturer-generated private key | |||
| (e.g., the IDevID key) is reused for the CSR, proof-of-origin is | (e.g., the IDevID key) is reused for the CSR, proof-of-origin is | |||
| verified by validating the IDevID-issuer cert and ensuring that the | verified by validating the IDevID-issuer cert and ensuring that the | |||
| CSR uses the same key pair. | CSR uses the same key pair. | |||
| When the bootstrapping device's manufacturer-generated private key | When the bootstrapping device's manufacturer-generated private key | |||
| (e.g., an IDevID key from IEEE 802.1AR) is reused for the CSR, proof- | (e.g., an IDevID key from IEEE 802.1AR) is reused for the CSR, proof- | |||
| of-origin is verified by validating the IDevID certification path and | of-origin is verified by validating the IDevID certification path and | |||
| ensuring that the CSR uses the same key pair. | ensuring that the CSR uses the same key pair. | |||
| When a fresh asymmetric key is used with the CMP or CMC formats, the | When a fresh asymmetric key is used with the CMP or CMC formats, the | |||
| authentication is part of the protocols, which could employ either | authentication is part of the protocols, which could employ either | |||
| the manufacturer-generated private key or a shared secret. In | the manufacturer-generated private key or a shared secret. In | |||
| addition, CMP and CMC support processing by a RA before the request | addition, CMP and CMC support processing by an RA before the request | |||
| is passed to the CA, which allows for more robust handling of errors. | is passed to the CA, which allows for more robust handling of errors. | |||
| 4.2.3. Supporting SZTP-Clients that don't trust the SZTP-Server | 4.2.3. Supporting SZTP-Clients That Don't Trust the SZTP-Server | |||
| [RFC8572] allows SZTP-clients to connect to untrusted SZTP-servers, | [RFC8572] allows SZTP-clients to connect to untrusted SZTP-servers by | |||
| by blindly authenticating the SZTP-server's TLS end-entity | blindly authenticating the SZTP-server's TLS end-entity certificate. | |||
| certificate. | ||||
| As is recommended in Section 4.1.4 in this document, in such cases, | As is recommended in Section 4.1.4 of this document, in such cases, | |||
| SZTP-clients SHOULD pass the "signed-data-preferred" input parameter. | SZTP-clients SHOULD pass the "signed-data-preferred" input parameter. | |||
| The reciprocal of this statement is that SZTP-servers, wanting to | The reciprocal of this statement is that SZTP-servers, wanting to | |||
| support SZTP-clients that don't trust them, SHOULD support the | support SZTP-clients that don't trust them, SHOULD support the | |||
| "signed-data-preferred" input parameter, as discussed in Appendix B | "signed-data-preferred" input parameter, as discussed in Appendix B | |||
| of [RFC8572]. | of [RFC8572]. | |||
| 4.3. Security Considerations for the "ietf-sztp-csr" YANG Module | 4.3. Security Considerations for the "ietf-sztp-csr" YANG Module | |||
| The recommended format for documenting the Security Considerations | The recommended format for documenting the security considerations | |||
| for YANG modules is described in Section 3.7 of [RFC8407]. However, | for YANG modules is described in Section 3.7 of [RFC8407]. However, | |||
| this module only augments two input parameters into the "get- | this module only augments two input parameters into the "get- | |||
| bootstrapping-data" RPC in [RFC8572], and therefore only needs to | bootstrapping-data" RPC in [RFC8572] and therefore only needs to | |||
| point to the relevant Security Considerations sections in that RFC. | point to the relevant Security Considerations sections in that RFC. | |||
| * Security considerations for the "get-bootstrapping-data" RPC are | * Security considerations for the "get-bootstrapping-data" RPC are | |||
| described in Section 9.16 of [RFC8572]. | described in Section 9.16 of [RFC8572]. | |||
| * Security considerations for the "input" parameters passed inside | * Security considerations for the "input" parameters passed inside | |||
| the "get-bootstrapping-data" RPC are described in Section 9.6 of | the "get-bootstrapping-data" RPC are described in Section 9.6 of | |||
| [RFC8572]. | [RFC8572]. | |||
| 4.4. Security Considerations for the "ietf-ztp-types" YANG Module | 4.4. Security Considerations for the "ietf-ztp-types" YANG Module | |||
| The recommended format for documenting the Security Considerations | The recommended format for documenting the security considerations | |||
| for YANG modules is described in Section 3.7 of [RFC8407]. However, | for YANG modules is described in Section 3.7 of [RFC8407]. However, | |||
| this module does not define any protocol-accessible nodes (it only | this module does not define any protocol-accessible nodes (it only | |||
| defines "identity" and "grouping" statements) and therefore there are | defines "identity" and "grouping" statements), and therefore there | |||
| no Security considerations to report. | are no security considerations to report. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| 5.1. The "IETF XML" Registry | 5.1. The IETF XML Registry | |||
| This document registers two URIs in the "ns" subregistry of the IETF | IANA has registered two URIs in the "ns" registry of the "IETF XML | |||
| XML Registry [RFC3688] maintained at | Registry" [RFC3688] maintained at <https://www.iana.org/assignments/ | |||
| https://www.iana.org/assignments/xml-registry/xml-registry.xhtml#ns. | xml-registry/>. | |||
| Following the format in [RFC3688], the following registrations are | ||||
| requested: | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-sztp-csr | URI: urn:ietf:params:xml:ns:yang:ietf-sztp-csr | |||
| Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-ztp-types | URI: urn:ietf:params:xml:ns:yang:ietf-ztp-types | |||
| Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| 5.2. The "YANG Module Names" Registry | 5.2. The YANG Module Names Registry | |||
| This document registers two YANG modules in the YANG Module Names | IANA has registered two YANG modules in the "YANG Module Names" | |||
| registry [RFC6020] maintained at https://www.iana.org/assignments/ | registry [RFC6020] maintained at <https://www.iana.org/assignments/ | |||
| yang-parameters/yang-parameters.xhtml. Following the format defined | yang-parameters/>. | |||
| in [RFC6020], the below registrations are requested: | ||||
| name: ietf-sztp-csr | Name: ietf-sztp-csr | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-sztp-csr | Namespace: urn:ietf:params:xml:ns:yang:ietf-sztp-csr | |||
| prefix: sztp-csr | Prefix: sztp-csr | |||
| reference: RFC XXXX | Reference: RFC 9646 | |||
| name: ietf-ztp-types | Name: ietf-ztp-types | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ztp-types | Namespace: urn:ietf:params:xml:ns:yang:ietf-ztp-types | |||
| prefix: ztp-types | Prefix: ztp-types | |||
| reference: RFC XXXX | Reference: RFC 9646 | |||
| 6. References | 6. References | |||
| 6.1. Normative References | 6.1. Normative References | |||
| [I-D.ietf-netconf-crypto-types] | [ITU.X690.2021] | |||
| Watsen, K., "YANG Data Types and Groupings for | ITU, "Information technology - ASN.1 encoding rules: | |||
| Cryptography", Work in Progress, Internet-Draft, draft- | Specification of Basic Encoding Rules (BER), Canonical | |||
| ietf-netconf-crypto-types-21, 14 September 2021, | Encoding Rules (CER) and Distinguished Encoding Rules | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netconf- | (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1, | |||
| crypto-types-21>. | February 2021, <https://www.itu.int/rec/T-REC-X.690/>. | |||
| [ITU.X690.2015] | ||||
| International Telecommunication Union, "Information | ||||
| Technology - ASN.1 encoding rules: Specification of Basic | ||||
| Encoding Rules (BER), Canonical Encoding Rules (CER) and | ||||
| Distinguished Encoding Rules (DER)", ITU-T Recommendation | ||||
| X.690, ISO/IEC 8825-1, August 2015, | ||||
| <https://www.itu.int/rec/T-REC-X.690/>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2986] Nystrom, M. and B. Kaliski, "PKCS #10: Certification | [RFC2986] Nystrom, M. and B. Kaliski, "PKCS #10: Certification | |||
| Request Syntax Specification Version 1.7", RFC 2986, | Request Syntax Specification Version 1.7", RFC 2986, | |||
| DOI 10.17487/RFC2986, November 2000, | DOI 10.17487/RFC2986, November 2000, | |||
| <https://www.rfc-editor.org/info/rfc2986>. | <https://www.rfc-editor.org/info/rfc2986>. | |||
| skipping to change at page 33, line 49 ¶ | skipping to change at line 1467 ¶ | |||
| [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | |||
| (CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | (CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | |||
| <https://www.rfc-editor.org/info/rfc5272>. | <https://www.rfc-editor.org/info/rfc5272>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
| Protocol (HTTP/1.1): Authentication", RFC 7235, | ||||
| DOI 10.17487/RFC7235, June 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7235>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [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, | |||
| skipping to change at page 34, line 30 ¶ | skipping to change at line 1492 ¶ | |||
| [RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | [RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero | |||
| Touch Provisioning (SZTP)", RFC 8572, | Touch Provisioning (SZTP)", RFC 8572, | |||
| DOI 10.17487/RFC8572, April 2019, | DOI 10.17487/RFC8572, April 2019, | |||
| <https://www.rfc-editor.org/info/rfc8572>. | <https://www.rfc-editor.org/info/rfc8572>. | |||
| [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, | ||||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | ||||
| DOI 10.17487/RFC9110, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9110>. | ||||
| [RFC9640] Watsen, K., "YANG Data Types and Groupings for | ||||
| Cryptography", RFC 9640, DOI 10.17487/RFC9640, October | ||||
| 2024, <https://www.rfc-editor.org/info/rfc9640>. | ||||
| 6.2. Informative References | 6.2. Informative References | |||
| [AIS31] Bundesamt für Sicherheit in der Informationstechnik (BSI), | [AIS31] Killmann, W. and W. Schindler, "A proposal for: | |||
| 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", 18 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>. | |||
| [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", 13 May | "National Vulnerability Database - CVE-2008-0166 Detail", | |||
| 2008, <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | May 2008, | |||
| <https://nvd.nist.gov/vuln/detail/CVE-2008-0166>. | ||||
| [I-D.ietf-netconf-keystore] | ||||
| Watsen, K., "A YANG Data Model for a Keystore", Work in | ||||
| Progress, Internet-Draft, draft-ietf-netconf-keystore-23, | ||||
| 14 December 2021, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-ietf-netconf-keystore-23>. | ||||
| [I-D.ietf-netconf-trust-anchors] | ||||
| Watsen, K., "A YANG Data Model for a Truststore", Work in | ||||
| Progress, Internet-Draft, draft-ietf-netconf-trust- | ||||
| anchors-16, 14 December 2021, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-netconf- | ||||
| trust-anchors-16>. | ||||
| [ISO.20543-2019] | [ISO.20543-2019] | |||
| International Organization for Standardization (ISO), | International Organization for Standardization (ISO), | |||
| "Information technology -- Security techniques -- Test and | "Information technology -- Security techniques -- Test and | |||
| analysis methods for random bit generators within ISO/IEC | analysis methods for random bit generators within ISO/IEC | |||
| 19790 and ISO/IEC 15408", ISO Draft Standard 20543-2019, | 19790 and ISO/IEC 15408", ISO/IEC 20543:2019, October | |||
| October 2019. | 2019. | |||
| [MiningPsQs] | [MiningPsQs] | |||
| Security'12: Proceedings of the 21st USENIX conference on | Heninger, N., Durumeric, Z., Wustrow, E., and J. | |||
| 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", Security'12: Proceedings of | |||
| of Widespread Weak Keys in Network Devices", August 2012, | the 21st USENIX Conference on Security Symposium, August | |||
| <https://www.usenix.org/conference/usenixsecurity12/ | 2012, <https://www.usenix.org/conference/usenixsecurity12/ | |||
| technical-sessions/presentation/heninger>. | technical-sessions/presentation/heninger>. | |||
| [NIST.SP.800-90Ar1] | [NIST.SP.800-90Ar1] | |||
| Barker, Elaine B. and John M. Kelsey, "Recommendation for | Barker, E. and J. Kelsey, "Recommendation for Random | |||
| Random Number Generation Using Deterministic Random Bit | Number Generation Using Deterministic Random Bit | |||
| Generators", DOI 10.6028/NIST.SP.800-90Ar1, NIST NIST SP | Generators", DOI 10.6028/NIST.SP.800-90Ar1, NIST | |||
| 800-90Ar1, June 2015, | SP 800-90Ar1, June 2015, | |||
| <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ | |||
| NIST.SP.800-90Ar1.pdf>. | NIST.SP.800-90Ar1.pdf>. | |||
| [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
| "Randomness Requirements for Security", BCP 106, RFC 4086, | "Randomness Requirements for Security", BCP 106, RFC 4086, | |||
| DOI 10.17487/RFC4086, June 2005, | DOI 10.17487/RFC4086, June 2005, | |||
| <https://www.rfc-editor.org/info/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
| [RFC7292] Moriarty, K., Ed., Nystrom, M., Parkinson, S., Rusch, A., | [RFC7292] Moriarty, K., Ed., Nystrom, M., Parkinson, S., Rusch, A., | |||
| and M. Scott, "PKCS #12: Personal Information Exchange | and M. Scott, "PKCS #12: Personal Information Exchange | |||
| skipping to change at page 36, line 5 ¶ | 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", | ||||
| RFC 9641, DOI 10.17487/RFC9641, October 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9641>. | ||||
| [RFC9642] Watsen, K., "A YANG Data Model for a Keystore", RFC 9642, | ||||
| DOI 10.17487/RFC9642, October 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9642>. | ||||
| [Std-802.1AR-2018] | [Std-802.1AR-2018] | |||
| Group, W. -. H. L. L. P. W., "IEEE Standard for Local and | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
| metropolitan area networks - Secure Device Identity", 14 | Networks - Secure Device Identity", August 2018, | |||
| June 2018, | <https://standards.ieee.org/ieee/802.1AR/6995/>. | |||
| <https://standards.ieee.org/standard/802_1AR-2018.html>. | ||||
| Acknowledgements | Acknowledgements | |||
| The authors would like to thank for following for lively discussions | The authors would like to thank for following for lively discussions | |||
| on list and in the halls (ordered by first name): Benjamin Kaduk, | on list and in the halls (ordered by first name): Benjamin Kaduk, Dan | |||
| David von Oheimb, Dan Romascanu, Eric Vyncke, Hendrik Brockhaus, Guy | Romascanu, David von Oheimb, Éric Vyncke, Guy Fedorkow, Hendrik | |||
| Fedorkow, Joe Clarke, Meral Shirazipour, Murray Kucherawy, Rich Salz, | Brockhaus, Joe Clarke, Meral Shirazipour, Murray Kucherawy, Rich | |||
| Rob Wilton, Roman Danyliw, Qin Wu, Yaron Sheffer, and Zaheduzzaman | Salz, Rob Wilton, Roman Danyliw, Qin Wu, Yaron Sheffer, and | |||
| Sarkar. | Zaheduzzaman Sarkar. | |||
| Contributors | Contributors | |||
| Special thanks go to David von Oheimb and Hendrik Brockhaus for | Special thanks go to David von Oheimb and Hendrik Brockhaus for | |||
| helping with the descriptions for the "cmc-csr" and "cmp-csr" nodes. | helping with the descriptions for the "cmc-csr" and "cmp-csr" nodes. | |||
| Authors' Addresses | Authors' Addresses | |||
| Kent Watsen | Kent Watsen | |||
| Watsen Networks | Watsen Networks | |||
| End of changes. 154 change blocks. | ||||
| 433 lines changed or deleted | 392 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||