<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.4 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-brski-cloud-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="BRSKI-CLOUD">BRSKI Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-08"/>
    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>Auth0</organization>
      <address>
        <email>rifaat.s.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2023" month="August" day="24"/>
    <abstract>
      <t>Bootstrapping Remote Secure Key Infrastructures defines how to onboard a device securely into an operator maintained infrastructure.  It assumes that there is local network infrastructure for the device to discover and to help the device.   This document extends the new device behaviour so that if no local infrastructure is available, such as in a home or remote office, that the device can use a well defined "call-home" mechanism to find the operator maintained infrastructure.</t>
      <t>To this, this document defines how to contact a well-known Cloud Registrar, and two ways in which the new device may be redirected towards the operator maintained infrastructure.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-anima-brski-cloud/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        anima Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anima-wg/brski-cloud"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Bootstrapping Remote Secure Key Infrastructures <xref target="BRSKI"/> and <xref target="RFC8994"/> specifies automated network onboarding of devices,  referred to as pledges, within an Autonomic Control Plane or other managed network infrastructure.
BRSKI Section 2.7 describes how a pledge "MAY contact a well-known URI of a Cloud Registrar if a local Registrar cannot be discovered or if the pledge's target use cases do not include a local Registrar".</t>
      <t>This document further specifies use of a BRSKI Cloud Registrar and clarifies operations that are not sufficiently specified in BRSKI.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document uses the terms Pledge, Registrar, MASA, and Voucher from <xref target="BRSKI"/> and <xref target="RFC8366"/>.</t>
        <dl>
          <dt>Local Domain:</dt>
          <dd>
            <t>The domain where the pledge is physically located and bootstrapping from. This may be different to the pledge owner's domain.</t>
          </dd>
          <dt>Owner Domain:</dt>
          <dd>
            <t>The domain that the pledge needs to discover and bootstrap with.</t>
          </dd>
          <dt>Cloud Registrar:</dt>
          <dd>
            <t>The default Registrar that is deployed at a URI that is well known to the pledge.</t>
          </dd>
          <dt>Owner Registrar:</dt>
          <dd>
            <t>The Registrar that is operated by the Owner, or the Owner's delegate.
There may not be an Owner Registrar in all deployment scenarios.</t>
          </dd>
          <dt>Local Domain Registrar:</dt>
          <dd>
            <t>The Registrar discovered on the Local Domain.
There may not be a Local Domain Registrar in all deployment scenarios.</t>
          </dd>
          <dt>EST:</dt>
          <dd>
            <t>Enrollment over Secure Transport <xref target="RFC7030"/></t>
          </dd>
          <dt>VAR:</dt>
          <dd>
            <t>Value Added Reseller</t>
          </dd>
        </dl>
      </section>
      <section anchor="target-use-cases">
        <name>Target Use Cases</name>
        <t>Two high level use cases are documented here.
There are more details provided in sections <xref target="redirect2Registrar"/> and <xref target="voucher2EST"/>.
While both use cases aid with incremental deployment of BRSKI infrastructure, for many smaller sites (such as teleworkers) no further infrastructure is expected.</t>
        <t>The pledge is not expected to know which of these two situations it is in.
The pledge determines this based upon signals that it receives from the Cloud Registrar.
The Cloud Registrar is expected to make the determination based upon the identity presented by the pledge.</t>
        <t>A Cloud Registrar will typically handle all the devices of a particular product line from a particular manufacturer. This document places no restrictions on how many different deployments or owner sites the Cloud Registrar can handle, or how many devices per site that the Cloud Registrar can handle.
It is also entirely possible that all devices sold by through a particular Value Added Reseller (VAR) might be preloaded with a configuration that changes the Cloud Registrar URL to point to a VAR.
Such an effort would require unboxing each device in a controlled environment, but the provisioning could occur using a regular BRSKI or SZTP <xref target="RFC8572"/> process.</t>
        <section anchor="owner-registrar-discovery">
          <name>Owner Registrar Discovery</name>
          <t>A pledge is bootstrapping from a remote location with no local domain Registrar (specifically: with no local infrastructure to provide for automated discovery), and needs to discover its owner Registrar.
The Cloud Registrar is used by the pledge to discover the owner Registrar.
The Cloud Registrar redirects the pledge to the owner Registrar, and the pledge completes bootstrap against the owner Registrar.</t>
          <t>A typical example is an enduser deploying a pledge in a home or small branch office, where the pledge belongs to the enduser's employer.
There is no local domain Registrar, and the pledge needs to discover and bootstrap with the employer's Registrar which is deployed in headquarters.
For example, an enduser is deploying an IP phone in a home office and the phone needs to register to an IP PBX deployed in their employer's office.</t>
        </section>
        <section anchor="bootstrapping-with-no-owner-registrar">
          <name>Bootstrapping with no Owner Registrar</name>
          <t>A pledge is bootstrapping where the owner organization does not yet have an owner Registrar deployed.
The Cloud Registrar issues a voucher, and the pledge completes trust bootstrap using the Cloud Registrar.
The voucher issued by the cloud includes domain information for the owner's Enrollment over Secure Transport (EST) <xref target="RFC7030"/> service the pledge should use for certificate enrollment.</t>
          <t>In one use case, an organization has an EST service deployed, but does not have yet a BRSKI capable Registrar service deployed.
The pledge is deployed in the organization's domain, but does not discover a local domain Registrar or owner Registrar.
The pledge uses the Cloud Registrar to bootstrap, and the Cloud Registrar provides a voucher that includes instructions on finding the organization's EST service.</t>
        </section>
      </section>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The high level architecture is illustrated in <xref target="architecture-figure"/>.</t>
      <t>The pledge connects to the Cloud Registrar during bootstrap.</t>
      <t>The Cloud Registrar may redirect the pledge to an owner Registrar in order to complete bootstrap against the owner Registrar.</t>
      <t>If the Cloud Registrar issues a voucher itself without redirecting the pledge to an owner Registrar, the Cloud Registrar will inform the pledge what domain to use for accessing EST services in the voucher response.</t>
      <t>Finally, when bootstrapping against an owner Registrar, this Registrar may interact with a backend CA to assist in issuing certificates to the pledge.
The mechanisms and protocols by which the Registrar interacts with the CA are transparent to the pledge and are out-of-scope of this document.</t>
      <t>The architecture shows the Cloud Registrar and MASA as being logically separate entities.
The two functions could of course be integrated into a single service.</t>
      <t>There are two different mechanisms for a Cloud Registrar to handle voucher requests.
It can redirect the request to Owner Registrar for handling, or it can return a voucher
that pins the actual Owner Registrar.
When returning a voucher, additional bootstrapping information embedded in the voucher.
Both mechanisms are described in detail later in this document.</t>
      <figure anchor="architecture-figure">
        <name>High Level Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="528" viewBox="0 0 528 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
              <path d="M 40,120 L 40,304" fill="none" stroke="black"/>
              <path d="M 80,80 L 80,112" fill="none" stroke="black"/>
              <path d="M 184,160 L 184,208" fill="none" stroke="black"/>
              <path d="M 184,288 L 184,320" fill="none" stroke="black"/>
              <path d="M 232,216 L 232,240" fill="none" stroke="black"/>
              <path d="M 272,224 L 272,256" fill="none" stroke="black"/>
              <path d="M 280,160 L 280,208" fill="none" stroke="black"/>
              <path d="M 280,288 L 280,320" fill="none" stroke="black"/>
              <path d="M 368,224 L 368,256" fill="none" stroke="black"/>
              <path d="M 424,80 L 424,128" fill="none" stroke="black"/>
              <path d="M 424,160 L 424,192" fill="none" stroke="black"/>
              <path d="M 472,128 L 472,160" fill="none" stroke="black"/>
              <path d="M 520,80 L 520,128" fill="none" stroke="black"/>
              <path d="M 520,160 L 520,192" fill="none" stroke="black"/>
              <path d="M 16,32 L 128,32" fill="none" stroke="black"/>
              <path d="M 176,32 L 392,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 424,80 L 520,80" fill="none" stroke="black"/>
              <path d="M 88,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 80,112" fill="none" stroke="black"/>
              <path d="M 424,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 184,160 L 280,160" fill="none" stroke="black"/>
              <path d="M 424,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 40,176 L 176,176" fill="none" stroke="black"/>
              <path d="M 288,176 L 416,176" fill="none" stroke="black"/>
              <path d="M 424,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 184,208 L 280,208" fill="none" stroke="black"/>
              <path d="M 272,224 L 368,224" fill="none" stroke="black"/>
              <path d="M 232,240 L 264,240" fill="none" stroke="black"/>
              <path d="M 272,256 L 368,256" fill="none" stroke="black"/>
              <path d="M 184,288 L 280,288" fill="none" stroke="black"/>
              <path d="M 40,304 L 176,304" fill="none" stroke="black"/>
              <path d="M 184,320 L 280,320" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="424,176 412,170.4 412,181.6 " fill="black" transform="rotate(0,416,176)"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6 " fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6 " fill="black" transform="rotate(0,392,32)"/>
              <polygon class="arrowhead" points="272,240 260,234.4 260,245.6 " fill="black" transform="rotate(0,264,240)"/>
              <polygon class="arrowhead" points="184,304 172,298.4 172,309.6 " fill="black" transform="rotate(0,176,304)"/>
              <polygon class="arrowhead" points="184,176 172,170.4 172,181.6 " fill="black" transform="rotate(0,176,176)"/>
              <polygon class="arrowhead" points="24,32 12,26.4 12,37.6 " fill="black" transform="rotate(180,16,32)"/>
              <g class="text">
                <text x="8" y="36">|</text>
                <text x="152" y="36">OWNER</text>
                <text x="400" y="36">|</text>
                <text x="476" y="36">MANUFACTURER</text>
                <text x="40" y="68">On-site</text>
                <text x="216" y="68">Cloud</text>
                <text x="44" y="100">Pledge</text>
                <text x="456" y="100">Cloud</text>
                <text x="472" y="116">Registrar</text>
                <text x="224" y="180">Owner</text>
                <text x="468" y="180">MASA</text>
                <text x="108" y="196">VR-sign(N)</text>
                <text x="232" y="196">Registrar</text>
                <text x="348" y="196">sign(VR-sign(N))</text>
                <text x="316" y="244">CA</text>
                <text x="228" y="308">Services</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |----------------------------------------->| Cloud     |
+--------+                                          | Registrar |
    |                                               +-----+-----+
    |                                                     |
    |                 +-----------+                 +-----+-----+
    +---------------->|  Owner    |---------------->|   MASA    |
    |   VR-sign(N)    | Registrar |sign(VR-sign(N)) +-----------+
    |                 +-----------+
    |                       |    +-----------+
    |                       +--->|    CA     |
    |                            +-----------+
    |
    |                 +-----------+
    +---------------->| Services  |
                      +-----------+
]]></artwork>
        </artset>
      </figure>
      <t>As depicted in <xref target="architecture-figure"/>, there are a number of parties involve in the process.
The Manufacturer, or Original Equipment Maker (OEM) builds the device, but also is expected to run the MASA, or arrange for it to exist.</t>
      <t>The network operator or enterprise is the intended owner of the new device: the pledge.
This could be the enterprise itself, or in many cases there is some outsourced IT department that might be involved.
They are the operator of the Registrar or EST Server.
They may also operate the CA, or they may contract those services from another entity.</t>
      <t>Unlike in <xref target="BRSKI"/> there is a potential additional party involved, the network integrator, who may operate the Cloud Registrar.
This is typically a value added reseller who works with the OEM to ship products with the right configuration to the owner.
For example, SIP telephones or other conferencing systems may be installed by this VAR, often shipped directly from a warehouse to the customer's remote office location.
The network integrator and manufacturer are aware of which devices have been shipped to the integrator through sales channel integrations, and so the manufacturer's Cloud Registrar is able to redirect the pledge through a chain of Cloud Registrars, as explained in <xref target="redirect-response"/>.</t>
      <section anchor="network-connectivity">
        <name>Network Connectivity</name>
        <t>The assumption is that the pledge already has network connectivity prior to connecting to the Cloud Registrar.
The pledge must have an IP address that is able to make DNS queries, and be able to send HTTP requests to the Cloud Registrar.
There are many ways to accomplish this, from routeable IPv4 or IPv6 addresses, to use of NAT44, to using HTTP or SOCKS proxies.
There are are DHCP options that a network operator can configure to accomplish any of these options.
The pledge operator has already connected the pledge to the network, and the mechanism by which this has happened is out of scope of this document.
For many telephony applications, this is typically going to be a wired connection.
For wireless use cases, some kind of existing WiFi onboarding mechanism such as WPS.
Similarly, what address space the IP address belongs to, whether it is an IPv4 or IPv6 address, or if there are firewalls or proxies deployed between the pledge and the cloud registar are all out of scope of this document.</t>
      </section>
      <section anchor="pledge-certificate-identity-considerations">
        <name>Pledge Certificate Identity Considerations</name>
        <t>BRSKI section 5.9.2 specifies that the pledge MUST send an EST <xref target="RFC7030"/> CSR Attributes request to the Registrar. The Registrar MAY use this mechanism to instruct the pledge about the identities it should include in the CSR request it sends as part of enrollment.
The Registrar may use this mechanism to tell the pledge what Subject or Subject Alternative Name identity information to include in its CSR request.
This can be useful if the Subject must have a specific value in order to complete enrollment with the CA.</t>
        <t>EST <xref target="RFC7030"/> is not clear on how the CSR Attributes response should be structured, and in particular is not clear on how a server can instruct a client to include specific attribute values in its CSR.
<xref target="I-D.ietf-lamps-rfc7030-csrattrs"/> clarifies how a server can use CSR Attributes response to specify specific values for attributes that the client should include in its CSR.</t>
        <t>For example, the pledge may only be aware of its IDevID Subject which includes a manufacturer serial number, but must include a specific fully qualified domain name in the CSR in order to complete domain ownership proofs required by the CA.</t>
        <t>As another example, the Registrar may deem the manufacturer serial number in an IDevID as personally identifiable information, and may want to specify a new random opaque identifier that the pledge should use in its CSR.</t>
      </section>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <section anchor="pledge-requests-voucher-from-cloud-registrar">
        <name>Pledge Requests Voucher from Cloud Registrar</name>
        <section anchor="cloud-registrar-discovery">
          <name>Cloud Registrar Discovery</name>
          <t>BRSKI defines how a pledge MAY contact a well-known URI of a Cloud Registrar if a local domain Registrar cannot be discovered.
Additionally, certain pledge types might never attempt to discover a local domain Registrar and might automatically bootstrap against a Cloud Registrar.</t>
          <t>The details of the URI are manufacturer specific, with BRSKI giving the example "brski-registrar.manufacturer.example.com".</t>
          <t>The Pledge SHOULD be provided with the entire URL of the Cloud Registrar, including the path component, which is typically "/.well-known/brski/requestvoucher", but may be another value.</t>
        </section>
        <section anchor="pledge-cloud-registrar-tls-establishment-details">
          <name>Pledge - Cloud Registrar TLS Establishment Details</name>
          <t>The pledge MUST use an Implicit Trust Anchor database (see EST <xref target="RFC7030"/>) to authenticate the Cloud Registrar service.
In order to make use of a Cloud Registrar, the Pledge MUST be manufactured with pre-loaded trust-anchors that are used to validate the TLS connection.
The TLS connection can be validated using a public Web PKI trust anchors using <xref target="RFC6125"/> DNS-ID mechanisms, a pinned certification authority, or even a pinned raw public key.
This is a local implementation decision.</t>
          <t>The pledge MUST NOT establish a provisional TLS connection (see BRSKI section 5.1) with the Cloud Registrar.</t>
          <t>The Cloud Registrar MUST validate the identity of the pledge by sending a TLS CertificateRequest message to the pledge during TLS session establishment.
The Cloud Registrar MAY include a certificate_authorities field in the message to specify the set of allowed IDevID issuing CAs that pledges may use when establishing connections with the Cloud Registrar.</t>
          <t>The Cloud Registrar MAY only allow connections from pledges that have an IDevID that is signed by one of a specific set of CAs, e.g. IDevIDs issued by certain manufacturers.</t>
          <t>The Cloud Registrar MAY allow pledges to connect using self-signed identity certificates or using Raw Public Key <xref target="RFC7250"/> certificates.</t>
        </section>
        <section anchor="pledge-issues-voucher-request">
          <name>Pledge Issues Voucher Request</name>
          <t>After the pledge has established a full TLS connection with the Cloud Registrar and has verified the Cloud Registrar PKI identity, the pledge generates a voucher request message as outlined in BRSKI section 5.2, and sends the voucher request message to the Cloud Registrar.</t>
        </section>
      </section>
      <section anchor="cloud-registrar-handles-voucher-request">
        <name>Cloud Registrar Handles Voucher Request</name>
        <t>The Cloud Registrar must determine pledge ownership.
Prior to ownership determination, the Registrar checks the request for correctness and if it is unwilling or unable to handle the request, it MUST return a suitable 4xx or 5xx error response to the pledge as defined by <xref target="BRSKI"/> and HTTP.
In the case of an unknown pledge a 404 is returned, for a malformed request 400 is returned, or in case of server overload 503.</t>
        <t>If the request is correct and the Registrar is able to handle it, but unable to determine ownership, then it MUST return a 401 Unauthorized response to the pledge.
This signals to the Pledge that there is currently no known owner domain for it, but that retrying later might resolve this situation.
The Registrar MAY also include a Retry-After header that includes a time to defer.
A pledge with some kind of indicator (such as a screen or LED) SHOULD consider this an onboarding failure, and indicate this to the operator.</t>
        <t>If the Cloud Registrar successfully determines ownership, then it MUST take one of the following actions:</t>
        <ul spacing="normal">
          <li>return a suitable 4xx or 5xx error response (as defined by <xref target="BRSKI"/> and HTTP) to the pledge if the request processing failed for any reason</li>
          <li>redirect the pledge to an owner register via 307 response code</li>
          <li>issue a voucher and return a 200 response code</li>
        </ul>
        <section anchor="pledgeOwnershipLookup">
          <name>Pledge Ownership Lookup</name>
          <t>The Cloud Registrar needs some suitable mechanism for knowing the correct owner of a connecting pledge based on the presented identity certificate.
For example, if the pledge establishes TLS using an IDevID that is signed by a known manufacturing CA, the Registrar could extract the serial number from the IDevID and use this to lookup a database of pledge IDevID serial numbers to owners.</t>
          <t>Alternatively, if the Cloud Registrar allows pledges to connect using self-signed certificates, the Registrar could use the thumbprint of the self-signed certificate to lookup a database of pledge self-signed certificate thumbprints to owners.</t>
          <t>The mechanism by which the Cloud Registrar determines pledge ownership is out-of-scope of this document.</t>
        </section>
        <section anchor="cloud-registrar-redirects-to-owner-registrar">
          <name>Cloud Registrar Redirects to Owner Registrar</name>
          <t>Once the Cloud Registrar has determined pledge ownership, the Cloud Registrar MAY redirect the pledge to the owner Registrar in order to complete bootstrap.
Ownership registration will require the owner to register their local domain.
The mechanism by which pledge owners register their domain with the Cloud Registrar is out-of-scope of this document.</t>
          <t>In case of redirection, the Cloud Registrar replies to the voucher request with a HTTP 307 Temporary Redirect response code, including the owner's local domain in the HTTP Location header.</t>
        </section>
        <section anchor="cloud-registrar-issues-voucher">
          <name>Cloud Registrar Issues Voucher</name>
          <t>If the Cloud Registrar issues a voucher, it returns the voucher in a HTTP response with a 200 response code.</t>
          <t>The Cloud Registrar MAY issue a 202 response code if it is willing to issue a voucher, but will take some time to prepare the voucher.</t>
          <t>The voucher MUST include the "est-domain" field as defined in <xref target="RFC8366bis"/>.
This tells the pledge where the domain of the EST service to use for completing certificate enrollment.</t>
          <t>The voucher MAY include the "additional-configuration" field.
This points the pledge to a URI where application specific additional configuration information may be retrieved.
Pledge and Registrar behavior for handling and specifying the "additional-configuration" field is out-of-scope of this document.</t>
        </section>
      </section>
      <section anchor="pledge-handles-cloud-registrar-response">
        <name>Pledge Handles Cloud Registrar Response</name>
        <section anchor="redirect-response">
          <name>Redirect Response</name>
          <t>The Cloud Registrar returned a 307 response to the voucher request.</t>
          <t>The pledge SHOULD restart the process using a new voucher request using the location provided in the HTTP redirect.
Note if the pledge is able to validate the new server using a trust anchor found in its Implicit Trust Anchor database, then it MAY accept additional 307 redirects.</t>
          <t>The pledge MUST never visit a location that it has already been to, in order to avoid any kind of cycle.
If it happens that a location is repeated, then the pledge MUST fail the onboarding attempt and go back to the beginning, which includes listening to other sources of onboarding information as specified in <xref target="BRSKI"/> section 4.1 and 5.0.
The pledge MUST also have a limit on the number of redirects it will a follow, as the cycle detection requires that it keep track of the places it has been.
That limit MUST be in the dozens or more redirects such that no reasonable delegation path would be affected.</t>
          <t>The pledge MUST establish a provisional TLS connection with specified local domain Registrar.
The pledge MUST NOT use its Implicit Trust Anchor database for validating the local domain Registrar identity.
The pledge MUST send a voucher request message via the local domain Registrar.</t>
          <t>After the pledge receives the voucher, it validates the TLS connection to the local domain Registrar and continues with enrollment and bootstrap as per standard BRSKI operation.</t>
          <t>The pledge MUST process any error messages as defined in <xref target="BRSKI"/>, and in case of error MUST restart the process from its provisioned Cloud Registrar.</t>
          <t>The exception is that a 401 Unauthorized code SHOULD cause the Pledge to retry a number of times over a period of a few hours.</t>
        </section>
        <section anchor="voucher-response">
          <name>Voucher Response</name>
          <t>The Cloud Registrar returned a voucher to the pledge.
The pledge SHOULD perform voucher verification as per standard BRSKI operation.
The pledge SHOULD verify the voucher signature using the manufacturer-installed trust anchor(s), SHOULD verify the serial number in the voucher, and SHOULD verify any nonce information in the voucher.</t>
          <t>The pledge SHOULD extract the "est-domain" field from the voucher, and SHOULD continue with EST enrollment as per standard BRSKI operation.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-details">
      <name>Protocol Details</name>
      <section anchor="redirect2Registrar">
        <name>Voucher Request Redirected to Local Domain Registrar</name>
        <t>This flow illustrates the Owner Registrar Discovery flow. A pledge is bootstrapping in a remote location with no local domain Registrar.
The assumption is that the owner Registrar domain is accessible and the pledge can establish a network connection with the owner Registrar.
This may require that the owner network firewall exposes the Registrar on the public internet.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="496" viewBox="0 0 496 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,88 L 40,576" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 192,256 L 192,304" fill="none" stroke="black"/>
              <path d="M 224,312 L 224,576" fill="none" stroke="black"/>
              <path d="M 288,256 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 400,256 L 400,304" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,224" fill="none" stroke="black"/>
              <path d="M 440,312 L 440,576" fill="none" stroke="black"/>
              <path d="M 480,256 L 480,304" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 400,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 400,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 48,128 L 432,128" fill="none" stroke="black"/>
              <path d="M 48,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 48,224 L 432,224" fill="none" stroke="black"/>
              <path d="M 192,256 L 288,256" fill="none" stroke="black"/>
              <path d="M 400,256 L 480,256" fill="none" stroke="black"/>
              <path d="M 192,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,304 L 480,304" fill="none" stroke="black"/>
              <path d="M 48,336 L 216,336" fill="none" stroke="black"/>
              <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
              <path d="M 232,400 L 432,400" fill="none" stroke="black"/>
              <path d="M 232,448 L 432,448" fill="none" stroke="black"/>
              <path d="M 48,480 L 216,480" fill="none" stroke="black"/>
              <path d="M 48,528 L 216,528" fill="none" stroke="black"/>
              <path d="M 48,576 L 216,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,400 428,394.4 428,405.6 " fill="black" transform="rotate(0,432,400)"/>
              <polygon class="arrowhead" points="440,176 428,170.4 428,181.6 " fill="black" transform="rotate(0,432,176)"/>
              <polygon class="arrowhead" points="440,128 428,122.4 428,133.6 " fill="black" transform="rotate(0,432,128)"/>
              <polygon class="arrowhead" points="240,448 228,442.4 228,453.6 " fill="black" transform="rotate(180,232,448)"/>
              <polygon class="arrowhead" points="224,576 212,570.4 212,581.6 " fill="black" transform="rotate(0,216,576)"/>
              <polygon class="arrowhead" points="224,528 212,522.4 212,533.6 " fill="black" transform="rotate(0,216,528)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6 " fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="224,336 212,330.4 212,341.6 " fill="black" transform="rotate(0,216,336)"/>
              <polygon class="arrowhead" points="56,528 44,522.4 44,533.6 " fill="black" transform="rotate(180,48,528)"/>
              <polygon class="arrowhead" points="56,480 44,474.4 44,485.6 " fill="black" transform="rotate(180,48,480)"/>
              <polygon class="arrowhead" points="56,336 44,330.4 44,341.6 " fill="black" transform="rotate(180,48,336)"/>
              <polygon class="arrowhead" points="56,224 44,218.4 44,229.6 " fill="black" transform="rotate(180,48,224)"/>
              <polygon class="arrowhead" points="56,128 44,122.4 44,133.6 " fill="black" transform="rotate(180,48,128)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="468" y="52">RA</text>
                <text x="60" y="116">1.</text>
                <text x="156" y="116">Mutual-authenticated</text>
                <text x="256" y="116">TLS</text>
                <text x="60" y="164">2.</text>
                <text x="104" y="164">Voucher</text>
                <text x="168" y="164">Request</text>
                <text x="60" y="212">3.</text>
                <text x="88" y="212">307</text>
                <text x="144" y="212">Location:</text>
                <text x="268" y="212">owner-ra.example.com</text>
                <text x="224" y="276">Owner</text>
                <text x="436" y="276">MASA</text>
                <text x="240" y="292">Registrar</text>
                <text x="60" y="324">4.</text>
                <text x="120" y="324">Provisional</text>
                <text x="184" y="324">TLS</text>
                <text x="60" y="372">5.</text>
                <text x="104" y="372">Voucher</text>
                <text x="168" y="372">Request</text>
                <text x="244" y="388">6.</text>
                <text x="288" y="388">Voucher</text>
                <text x="352" y="388">Request</text>
                <text x="244" y="436">7.</text>
                <text x="288" y="436">Voucher</text>
                <text x="356" y="436">Response</text>
                <text x="60" y="468">8.</text>
                <text x="104" y="468">Voucher</text>
                <text x="172" y="468">Response</text>
                <text x="60" y="516">9.</text>
                <text x="108" y="516">Validate</text>
                <text x="160" y="516">TLS</text>
                <text x="64" y="564">10.</text>
                <text x="100" y="564">etc.</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud RA |
|        |                                       |          |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutual-authenticated TLS                     |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. 307 Location: owner-ra.example.com           |
    |<------------------------------------------------|
    |
    |                  +-----------+             +---------+
    |                  | Owner     |             |  MASA   |
    |                  | Registrar |             |         |
    |                  +-----------+             +---------+
    | 4. Provisional TLS   |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 5. Voucher Request   |                          |
    |--------------------->| 6. Voucher Request       |
    |                      |------------------------->|
    |                      |                          |
    |                      | 7. Voucher Response      |
    |                      |<-------------------------|
    | 8. Voucher Response  |                          |
    |<---------------------|                          |
    |                      |                          |
    | 9. Validate TLS      |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 10. etc.             |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud RA using artifacts created during the manufacturing process of the Pledge.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud RA.</t>
        <t>The Cloud RA completes pledge ownership lookup as outlined in <xref target="pledgeOwnershipLookup"/>, and determines the owner Registrar domain.
In step 3, the Cloud RA redirects the pledge to the owner Registrar domain.</t>
        <t>Steps 4 and onwards follow the standard BRSKI flow.
The pledge establishes a provisional TLS connection with the owner Registrar, and sends a voucher request to the owner Registrar.
The Registrar forwards the voucher request to the MASA.
Assuming the MASA issues a voucher, then the pledge validates the TLS connection with the Registrar using the pinned-domain-cert from the voucher and completes the BRSKI flow.</t>
      </section>
      <section anchor="voucher2EST">
        <name>Voucher Request Handled by Cloud Registrar</name>
        <t>The Voucher includes the EST domain to use for EST enroll.
It is assumed services are accessed at that domain too.
As trust is already established via the Voucher, the pledge does a full TLS handshake against the local RA indicated by the voucher response.</t>
        <t>The returned voucher will contain the attribute "est-domain".
The pledge is directed to continue enrollment using the EST server found at that URI.
The pledge uses the pinned-domain-cert from the voucher to authenticate the EST server.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="496" viewBox="0 0 496 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,88 L 40,576" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 184,256 L 184,320" fill="none" stroke="black"/>
              <path d="M 224,328 L 224,368" fill="none" stroke="black"/>
              <path d="M 224,464 L 224,576" fill="none" stroke="black"/>
              <path d="M 272,256 L 272,320" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,576" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 400,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 400,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 48,128 L 432,128" fill="none" stroke="black"/>
              <path d="M 48,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 48,224 L 432,224" fill="none" stroke="black"/>
              <path d="M 184,256 L 272,256" fill="none" stroke="black"/>
              <path d="M 184,320 L 272,320" fill="none" stroke="black"/>
              <path d="M 48,368 L 216,368" fill="none" stroke="black"/>
              <path d="M 48,416 L 432,416" fill="none" stroke="black"/>
              <path d="M 48,480 L 216,480" fill="none" stroke="black"/>
              <path d="M 48,528 L 216,528" fill="none" stroke="black"/>
              <path d="M 48,576 L 216,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,416 428,410.4 428,421.6 " fill="black" transform="rotate(0,432,416)"/>
              <polygon class="arrowhead" points="440,176 428,170.4 428,181.6 " fill="black" transform="rotate(0,432,176)"/>
              <polygon class="arrowhead" points="440,128 428,122.4 428,133.6 " fill="black" transform="rotate(0,432,128)"/>
              <polygon class="arrowhead" points="224,576 212,570.4 212,581.6 " fill="black" transform="rotate(0,216,576)"/>
              <polygon class="arrowhead" points="224,480 212,474.4 212,485.6 " fill="black" transform="rotate(0,216,480)"/>
              <polygon class="arrowhead" points="224,368 212,362.4 212,373.6 " fill="black" transform="rotate(0,216,368)"/>
              <polygon class="arrowhead" points="56,528 44,522.4 44,533.6 " fill="black" transform="rotate(180,48,528)"/>
              <polygon class="arrowhead" points="56,368 44,362.4 44,373.6 " fill="black" transform="rotate(180,48,368)"/>
              <polygon class="arrowhead" points="56,224 44,218.4 44,229.6 " fill="black" transform="rotate(180,48,224)"/>
              <polygon class="arrowhead" points="56,128 44,122.4 44,133.6 " fill="black" transform="rotate(180,48,128)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="468" y="52">RA</text>
                <text x="416" y="68">/</text>
                <text x="444" y="68">MASA</text>
                <text x="60" y="116">1.</text>
                <text x="100" y="116">Mutual</text>
                <text x="144" y="116">TLS</text>
                <text x="60" y="164">2.</text>
                <text x="104" y="164">Voucher</text>
                <text x="168" y="164">Request</text>
                <text x="60" y="212">3.</text>
                <text x="104" y="212">Voucher</text>
                <text x="172" y="212">Response</text>
                <text x="288" y="212">{est-domain:fqdn}</text>
                <text x="224" y="276">RFC7030</text>
                <text x="208" y="292">EST</text>
                <text x="220" y="308">Server</text>
                <text x="60" y="356">4.</text>
                <text x="92" y="356">Full</text>
                <text x="128" y="356">TLS</text>
                <text x="96" y="404">3a.</text>
                <text x="176" y="404">/voucher_status</text>
                <text x="260" y="404">POST</text>
                <text x="320" y="404">success</text>
                <text x="92" y="436">ON</text>
                <text x="136" y="436">FAILURE</text>
                <text x="184" y="436">3b.</text>
                <text x="264" y="436">/voucher_status</text>
                <text x="348" y="436">POST</text>
                <text x="60" y="468">5.</text>
                <text x="88" y="468">EST</text>
                <text x="128" y="468">Enrol</text>
                <text x="60" y="516">6.</text>
                <text x="120" y="516">Certificate</text>
                <text x="60" y="564">7.</text>
                <text x="128" y="564">/enrollstatus</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud RA |
|        |                                       | / MASA   |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutual TLS                                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. Voucher Response  {est-domain:fqdn}          |
    |<------------------------------------------------|
    |                                                 |
    |                 +----------+                    |
    |                 | RFC7030  |                    |
    |                 | EST      |                    |
    |                 | Server   |                    |
    |                 +----------+                    |
    |                      |                          |
    | 4. Full TLS          |                          |
    |<-------------------->|                          |
    |                                                 |
    |     3a. /voucher_status POST  success           |
    |------------------------------------------------>|
    |     ON FAILURE 3b. /voucher_status POST         |
    |                                                 |
    | 5. EST Enrol         |                          |
    |--------------------->|                          |
    |                      |                          |
    | 6. Certificate       |                          |
    |<---------------------|                          |
    |                      |                          |
    | 7. /enrollstatus     |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud RA/MASA using artifacts created during the manufacturing process of the Pledge.
In step 2, the Pledge sends a voucher request to the Cloud RA/MASA, and in response the Pledge receives an <xref target="RFC8366"/> format voucher from the Cloud RA/MASA that includes its assigned EST domain in the est-domain attribute.</t>
        <t>At this stage, the Pledge should be able to establish a TLS channel with the EST server.
The connection may involve crossing the Internet requiring a DNS lookup on the provided name.
It may also be a local address that includes an IP address literal including both <xref target="RFC1918"/> and IPv6 Unique Local Address.
The EST server is validated using the pinned-domain-cert value provided in the voucher as described in <xref target="BRSKI"/> section 5.6.2.
This involves treating the artifact provided in the pinned-domain-cert as a trust anchor, and attempting to validate the EST server from this anchor only.</t>
        <t>There is a case where the pinned-domain-cert is the identical End-Entity (EE) Certificate as the EST server.
It also explicitly includes the case where the EST server has a self-signed EE Certificate, but it may also be an EE certificate that is part of a larger PKI.
If the certificate is not a self-signed or EE certificate, then the Pledge SHOULD apply <xref target="RFC6125"/> DNS-ID validation on the certificate against the URL provided in the est-domain attribute.
If the est-domain was provided by with an IP address literal, then it is unlikely that it can be validated, and in that case, it is expected that either a self-signed certificate or an EE certificate will be pinned.</t>
        <t>The Pledge also has the details it needs to be able to create the CSR request to send to the RA based on the details provided in the voucher.</t>
        <t>In step 4, the Pledge establishes a TLS channel with the Cloud RA/MASA, and optionally the pledge should send a request, steps 3.a and 3.b, to the Cloud RA/MASA to inform it that the Pledge was able to establish a secure TLS channel with the EST server.</t>
        <t>The Pledge then follows that, in step 5, with an EST Enroll request with the CSR and obtains the requested certificate.
The Pledge must validate that the issued certificate has the expected identifier obtained from the Cloud RA/MASA in step 3.</t>
      </section>
    </section>
    <section anchor="redirected">
      <name>YANG extension for Voucher based redirect</name>
      <t><xref target="RFC8366bis"/> contains the two needed voucher extensions: est-domain and additional-configuration which are needed when a client is redirected to a local EST server.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Cloud Registrar described in this document inherits all of the issues that are described in <xref target="BRSKI"/>.
This includes dependency upon continued operation of the manufacturer provided MASA, as well as potential complications where a manufacturer might interfere with
resale of a device.</t>
      <t>In addition to the dependency upon the MASA, the successful enrollment of a device using a Cloud Registrar depends upon the correct and continued operation of this new service.
This internet accessible service may be operated by the manufacturer and/or by one or more value-added-resellers.
All of the considerations for operation of the MASA also apply to operation of the Cloud Registrar.</t>
      <section anchor="issues-with-security-of-http-redirect">
        <name>Issues with Security of HTTP Redirect</name>
        <t>If the Redirect to Registrar method is used, as described in <xref target="redirect2Registrar"/>,
there may be a series of 307 redirects.
An example of why this might occur is that the manufacturer only knows that it resold the device to a particular value added reseller (VAR), and there may be a chain of such VARs.
It is important the pledge avoid being drawn into a loop of redirects.
This could happen if a VAR does not think they are authoritative for a particular device.
A "helpful" programmer might instead decide to redirect back to the manufacturer in an attempt to restart at the top:  perhaps there is another process that updates the manufacturer's database and this process is underway.
Instead, the VAR MUST return a 404 error if it cannot process the device.
This will force the device to stop, timeout, and then try all mechanisms again.</t>
        <t>There is another case where a connection problem may occur: when the pledge is behind a captive portal or an intelligent home gateway that provides access control on all connections.
Captive portals that do not follow the requirements of <xref target="RFC8952"/> section 1 may forcibly redirect HTTPS connections.
While this is a deprecated practice as it breaks TLS in a way that most users can not deal with, it is still common in many networks.</t>
        <t>On the first connection, the incorrect connection will be discovered because the Pledge will be unable to validate the connection to its Cloud Registrar via DNS-ID.
That is, the certificate returned from the captive portal will not match.</t>
        <t>At this point a network operator who controls the captive portal, noticing the connection to what seems a legitimate destination (the Cloud Registrar), may then permit that connection.
This enables the first connection to go through.</t>
        <t>The connection is then redirected to the Registrar, either via 307, or via est-domain in a voucher.
If it is a 307 redirect, then a provisional TLS connection will be initiated, and it will succeed.
The provisional TLS connection does not do <xref target="RFC6125"/> DNS-ID validation at the beginning of the connection, so a forced redirection to a captive portal system will not be detected.
The subsequent BRSKI POST of a voucher will most likely be met by a 404 or 500 HTTP code.
As the connection is provisional, the pledge will be unable to determine this.</t>
        <t>It is RECOMMENDED therefore that the pledge look for <xref target="RFC8910"/> attributes in DHCP, and if present, use the <xref target="RFC8908"/> API to learn if it is captive.</t>
      </section>
      <section anchor="security-updates-for-the-pledge">
        <name>Security Updates for the Pledge</name>
        <t>Unlike many other uses of BRSKI, in the Cloud Registrar case it is assumed that the Pledge has connected to a network on which there is addressing and connectivity, but there is no other local configuration available.</t>
        <t>There is another advantage to being online: the pledge may be able to contact the manufacturer before onboarding in order to apply the latest firmware updates.
This may also include updates to the Implicit list of Trust Anchors.
In this way, a Pledge that may have been in a dusty box in a warehouse for a long time can be updated to the latest (exploit-free) firmware before attempting onboarding.</t>
      </section>
      <section anchor="trust-anchors-for-cloud-registrar">
        <name>Trust Anchors for Cloud Registrar</name>
        <t>The Implicit TA database is used to authenticate the Cloud Registrar.
This list is built-in by the manufacturer along with a DNS name to which to connect.
(The manufacturer could even build in IP addresses as a last resort)</t>
        <t>The Cloud Registrar does not have a certificate that can be validated using a public (WebPKI) anchor.
The pledge may have any kind of Trust Anchor built in: from full multi-level WebPKI to the single self-signed certificate used by the Cloud Registrar.
There are many tradeoffs to having more or less of the PKI present in the Pledge, which is addressed in part in <xref target="I-D.irtf-t2trg-taxonomy-manufacturer-anchors"/> in sections 3 and 5.</t>
      </section>
      <section anchor="issues-with-redirect-via-voucher">
        <name>Issues with Redirect via Voucher</name>
        <t>The second redirect case is handled by returning a special extension in the voucher.
The Cloud Registrar actually does all of the voucher processing as specified in <xref target="BRSKI"/>.
In this case, the Cloud Registrar may be operated by the same entity as the MASA, and it might even be combined into a single server.
Whether or not this is the case, it behaves as if it was separate.</t>
        <t>It may be the case that one or more 307-Redirects have taken the Pledge from the built-in Cloud Registrar to one operated by a VAR.</t>
        <t>When the Pledge is directed to the owner <xref target="RFC7030"/> Registrar, the Pledge validates the TLS connection with this server using the "pinned-domain-cert" attribute in the voucher.
There is no provisional TLS connection, and therefore there are no risks associated with being behind a captive portal.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank for following for their detailed reviews: (ordered
by last name): Esko Dijk, Sheng Jiang.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8366" target="https://www.rfc-editor.org/info/rfc8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="BRSKI" target="https://www.rfc-editor.org/info/rfc8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC8366bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-anima-rfc8366bis-10">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software</organization>
            </author>
            <author fullname="Max Pritikin" initials="M." surname="Pritikin">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei Technologies Inc.</organization>
            </author>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <date day="22" month="August" year="2023"/>
            <abstract>
              <t>   This document defines a strategy to securely assign a pledge to an
   owner using an artifact signed, directly or indirectly, by the
   pledge's manufacturer.  This artifact is known as a "voucher".

   This document defines an artifact format as a YANG-defined JSON or
   CBOR document that has been signed using a variety of cryptographic
   systems.

   The voucher artifact is normally generated by the pledge's
   manufacturer (i.e., the Manufacturer Authorized Signing Authority
   (MASA)).

   This document updates RFC8366, merging a number of extensions into
   the YANG.  The RFC8995 voucher request is also merged into this
   document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-10"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC7030" target="https://www.rfc-editor.org/info/rfc7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc7030-csrattrs" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-rfc7030-csrattrs-06">
          <front>
            <title>Clarification of RFC7030 CSR Attributes definition</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>The Industrial Lounge</organization>
            </author>
            <date day="1" month="August" year="2023"/>
            <abstract>
              <t>   The Enrollment over Secure Transport (EST, RFC7030) is ambiguous in
   its specification of the CSR Attributes Response.  This has resulted
   in implementation challenges and implementor confusion.

   This document updates RFC7030 (EST) and clarifies how the CSR
   Attributes Response can be used by an EST server to specify both CSR
   attribute OIDs and also CSR attribute values, in particular X.509
   extension values, that the server expects the client to include in
   subsequent CSR request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-06"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6125" target="https://www.rfc-editor.org/info/rfc6125">
          <front>
            <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Hodges" initials="J." surname="Hodges"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6125"/>
          <seriesInfo name="DOI" value="10.17487/RFC6125"/>
        </reference>
        <reference anchor="RFC8994" target="https://www.rfc-editor.org/info/rfc8994">
          <front>
            <title>An Autonomic Control Plane (ACP)</title>
            <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
            <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8994"/>
          <seriesInfo name="DOI" value="10.17487/RFC8994"/>
        </reference>
        <reference anchor="I-D.irtf-t2trg-taxonomy-manufacturer-anchors" target="https://datatracker.ietf.org/doc/html/draft-irtf-t2trg-taxonomy-manufacturer-anchors-02">
          <front>
            <title>A Taxonomy of operational security considerations for manufacturer installed keys and Trust Anchors</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="6" month="August" year="2023"/>
            <abstract>
              <t>   This document provides a taxonomy of methods used by manufacturers of
   silicon and devices to secure private keys and public trust anchors.
   This deals with two related activities: how trust anchors and private
   keys are installed into devices during manufacturing, and how the
   related manufacturer held private keys are secured against
   disclosure.

   This document does not evaluate the different mechanisms, but rather
   just serves to name them in a consistent manner in order to aid in
   communication.

   RFCEDITOR: please remove this paragraph.  This work is occurring in
   https://github.com/mcr/idevid-security-considerations

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-taxonomy-manufacturer-anchors-02"/>
        </reference>
        <reference anchor="RFC8572" target="https://www.rfc-editor.org/info/rfc8572">
          <front>
            <title>Secure Zero Touch Provisioning (SZTP)</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="I. Farrer" initials="I." surname="Farrer"/>
            <author fullname="M. Abrahamsson" initials="M." surname="Abrahamsson"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document presents a technique to securely provision a networking device when it is booting in a factory-default state. Variations in the solution enable it to be used on both public and private networks. The provisioning steps are able to update the boot image, commit an initial configuration, and execute arbitrary scripts to address auxiliary needs. The updated device is subsequently able to establish secure connections with other systems. For instance, a device may establish NETCONF (RFC 6241) and/or RESTCONF (RFC 8040) connections with deployment-specific network management systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8572"/>
          <seriesInfo name="DOI" value="10.17487/RFC8572"/>
        </reference>
        <reference anchor="RFC7250" target="https://www.rfc-editor.org/info/rfc7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC1918" target="https://www.rfc-editor.org/info/rfc1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC8952" target="https://www.rfc-editor.org/info/rfc8952">
          <front>
            <title>Captive Portal Architecture</title>
            <author fullname="K. Larose" initials="K." surname="Larose"/>
            <author fullname="D. Dolson" initials="D." surname="Dolson"/>
            <author fullname="H. Liu" initials="H." surname="Liu"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document describes a captive portal architecture. Network provisioning protocols such as DHCP or Router Advertisements (RAs), an optional signaling protocol, and an HTTP API are used to provide the solution.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8952"/>
          <seriesInfo name="DOI" value="10.17487/RFC8952"/>
        </reference>
        <reference anchor="RFC8910" target="https://www.rfc-editor.org/info/rfc8910">
          <front>
            <title>Captive-Portal Identification in DHCP and Router Advertisements (RAs)</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Kline" initials="E." surname="Kline"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>In many environments offering short-term or temporary Internet access (such as coffee shops), it is common to start new connections in a captive portal mode. This highly restricts what the user can do until the user has satisfied the captive portal conditions.</t>
              <t>This document describes a DHCPv4 and DHCPv6 option and a Router Advertisement (RA) option to inform clients that they are behind some sort of captive portal enforcement device, and that they will need to satisfy the Captive Portal conditions to get Internet access. It is not a full solution to address all of the issues that clients may have with captive portals; it is designed to be one component of a standardized approach for hosts to interact with such portals. While this document defines how the network operator may convey the captive portal API endpoint to hosts, the specific methods of satisfying and interacting with the captive portal are out of scope of this document.</t>
              <t>This document replaces RFC 7710, which used DHCP code point 160. Due to a conflict, this document specifies 114. Consequently, this document also updates RFC 3679.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8910"/>
          <seriesInfo name="DOI" value="10.17487/RFC8910"/>
        </reference>
        <reference anchor="RFC8908" target="https://www.rfc-editor.org/info/rfc8908">
          <front>
            <title>Captive Portal API</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Thakore" initials="D." role="editor" surname="Thakore"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes an HTTP API that allows clients to interact with a Captive Portal system. With this API, clients can discover how to get out of captivity and fetch state about their Captive Portal sessions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8908"/>
          <seriesInfo name="DOI" value="10.17487/RFC8908"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
XY/SS7i+RfovhSJhlfw3eqNvoSWGAAA=

-->

</rfc>
