<?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-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-brski-cloud-15" category="std" consensus="true" updates="8995" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="BRSKI-CLOUD">BRSKI Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-15"/>
    <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>Ciena</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="2025" month="June" day="26"/>
    <abstract>
      <?line 51?>

<t>Bootstrapping Remote Secure Key Infrastructures (BRSKI) 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 help the device. This document extends BRSKI and defines new device behavior for deployments where no local infrastructure is available, such as in a home or remote office. This document defines how the device can use a well-defined "call-home" mechanism to find the operator-maintained infrastructure.</t>
      <t>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. The Cloud Registrar enables discovery of the operator-maintained infrastructure, and may enable establishment of trust with operator-maintained infrastructure that does not support BRSKI mechanisms.</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/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/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>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bootstrapping Remote Secure Key Infrastructures <xref target="BRSKI"/> BRSKI specifies automated and secure provisioning  of nodes (which are called Pledges) with cryptographic keying material (trust  anchors and certificates) to enable authenticated and confidential communication with other similarly enrolled nodes.
This bootstrapping process is also called enrollment.</t>
      <t>In BRSKI, the Pledge performs enrollment by communicating with a BRSKI Registrar belonging to the owner of the Pledge.
The Pledge does not know who its owner will be when manufactured.
Instead, in BRSKI it is assumed that the network to which the Pledge connects belongs to the owner of the Pledge and therefore network-supported discovery mechanisms can resolve generic, non-owner specific names to the owner's Registrar.</t>
      <t>To support enrollment of Pledges without such an owner based access network, the mechanisms
of BRSKI Cloud are required which assume that Pledge and Registrar simply connect to the
Internet.</t>
      <t>This work is in support of <xref section="2.7" sectionFormat="comma" target="BRSKI"/>, which 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 kind of non-network onboarding is sometimes called "Application Onboarding", as the purpose is typically to deploy a credential that will be used by the device in its intended use.
For instance, a SIP <xref target="RFC3261"/> phone might have a client certificate to be used with a SIP proxy.</t>
      <t>This document further specifies use of a BRSKI Cloud Registrar and clarifies operations that are left out of scope in <xref target="BRSKI"/>.
Two modes of operation are specified in this document.
The Cloud Registrar MAY redirect the Pledge to the owner's Registrar, or the Cloud Registrar MAY issue a voucher to the Pledge that includes the domain of the owner's Enrollment over Secure Transport <xref target="RFC7030"/> (EST) server.</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.
<?line -6?>
        </t>
        <t>This document uses the terms Pledge, Registrar, MASA, and Voucher from <xref target="BRSKI"/> and <xref target="RFC8366bis"/>.</t>
        <dl>
          <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>EST:</dt>
          <dd>
            <t>Enrollment over Secure Transport <xref target="RFC7030"/>.</t>
          </dd>
          <dt>Local Domain:</dt>
          <dd>
            <t>The domain where the Pledge is physically located and bootstrapping from. This may be different from the Pledge owner's domain.</t>
          </dd>
          <dt>Manufacturer:</dt>
          <dd>
            <t>The term manufacturer is used throughout this document as the entity that created the Pledge. This is typically the original equipment manufacturer (OEM), but in more complex situations, it could be a value added retailer (VAR), or possibly even a systems integrator. Refer to <xref target="BRSKI"/> for more detailed descriptions of manufacturer, VAR and OEM.</t>
          </dd>
          <dt>Owner Domain:</dt>
          <dd>
            <t>The domain that the Pledge needs to discover and bootstrap with.</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>OEM:</dt>
          <dd>
            <t>Original Equipment Manufacturer.  The company that created the device.</t>
          </dd>
          <dt>Provisional TLS:</dt>
          <dd>
            <t>A mechanism defined in Section 5.1 of <xref target="BRSKI"/> whereby a Pledge establishes a provisional TLS connection with a Registrar before the Pledge is provisioned with a trust anchor that can be used for verifying the Registrar identity.</t>
          </dd>
          <dt>SIP:</dt>
          <dd>
            <t>Session Initiation Protocol defined in <xref target="RFC3261"/></t>
          </dd>
          <dt>VAR:</dt>
          <dd>
            <t>Value Added Reseller.  A VAR will often collect products from many OEMs, creating a complete solution, and then sells that composite solution to end customers.  A VAR will often need to provision products to be operate in a specific manner.  For instance, a VoIP phone might have SIP functionality as well as MGCP functionality, but in a particular deployment, only one will be used.</t>
          </dd>
          <dt>Cloud VAR Registrar:</dt>
          <dd>
            <t>The non-default Registrar that is operated by a value added reseller (VAR).</t>
          </dd>
        </dl>
      </section>
      <section anchor="target-use-cases">
        <name>Target Use Cases</name>
        <t>This document specifies procedures for two high-level use cases.</t>
        <ul spacing="normal">
          <li>
            <t>Bootstrap via Cloud Registrar and Owner Registrar: The operator-maintained infrastructure supports BRSKI and has a BRSKI Registrar deployed. More details are provided in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>.</t>
          </li>
          <li>
            <t>Bootstrap via Cloud Registrar and Owner EST Service: The operator-maintained infrastructure does not support BRSKI, does not have a BRSKI Registrar deployed, but does have an Enrollment over Secure Transport (EST) <xref target="RFC7030"/> service deployed. More detailed are provided in <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>.</t>
          </li>
        </ul>
        <t>There are DHCP options that a network operator can use to configure devices such as a VoIP phone.
DHCP options 66, 150 (TFTP/HTTP server names), option 120 (SIP Server), or even option 157 (Certificate Provisioning) to inform a VoIP phone about how to do application onboarding.
(Such a network can probably also use BRSKI without this mechanism)
Such a network has no need for the mechanisms described in this document.</t>
        <t>Where the need for the mechanism is needed is to allow the use of BRSKI in many small sites, such as teleworkers working from home, with minimum expectations against their network infrastructure.
In particular, the home office user is not qualified or authorized to change DHCP options on the local network.</t>
        <t>The procedures defined in this document support situations where a manufacturer sells a number of devices (in bulk) to a Value Added Reseller (VAR).
The manufacturer knows which devices have been sold to which VAR, but not who the ultimate owner will be.
The VAR then sells devices to other entities, such as enterprises, and records this in the VARs Cloud Registrar.
Specifically, the VAR will record that a specific device has been sold to an enterprise, and will know that when this device bootstraps it should be redirected to the enterprise's Owner Registrar or Owner EST Service.</t>
        <t>A typical example is a VoIP phone manufacturer provides telephones to a local system integration company (a VAR).
The VAR records this sale in its Cloud VAR Registrar system. The VAR has sold a VoIP system to an enterprise (e.g., a SIP PBX). When a new employee needs a phone at their home office, the VAR ships that unit across town to the employee.  When the employee plugs in the device and turns it on, the device will be provisioned with a LDevID and configuration that connections the phone with the Enterprises' VoIP PBX.
The home employee's network has no special provisions.</t>
        <t>The procedures define in this document also support a chain of VARs through chained HTTP redirects.
This also supports a situation where in effect, a large enterprise might also stock devices in a central location.</t>
        <t>The Pledge is not expected to know whether the operator-maintained infrastructure has a BRSKI Registrar deployed or not.
The Pledge determines this based upon the response to its Voucher Request message that it receives from the Cloud Registrar.
The Cloud Registrar is expected to determine whether the operator-maintained infrastructure has a BRSKI Registrar deployed based upon the identity presented by the Pledge.</t>
        <t>A Cloud Registrar will receive BRSKI communications from all devices configured with its URI.
This could be, for example, all devices of a particular product line from a particular manufacturer.
When this is a significantly large number, a Cloud  Registrar may need to be scaled with the usual web-service scaling mechanisms.</t>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-registrar">
          <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
          <t>A Pledge is bootstrapping from a location with no Local Domain Registrar (for example, the small site or teleworker use case 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>This mechanism is useful to help an employee who is deploying a Pledge in a home or small branch office, where the Pledge belongs to the employer.
As there is no Local Domain Registrar in the employee's local network, the Pledge needs to discover and bootstrap with the employer's Registrar which is deployed within the employer's network, and the Pledge needs the keying material to trust the Registrar.
As a very specific example, an employee 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>
          <t>Protocol details for this use case are provided in <xref target="redirect2Registrar"/>.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-est-service">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>A Pledge is bootstrapping where the owner organization does not yet have an Owner Registrar deployed, but does have an EST service 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 EST service that the Pledge should use for certificate enrollment.</t>
          <t>For example, an organization has an EST service deployed, but does not yet have 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>
          <t>This option can be used to introduce the benefits of BRSKI for an initial period when BRSKI is not available in existing EST Servers.
Additionally, it can also be used long-term as a security-equivalent solution in which BRSKI and EST Server are set up in a modular fashion.</t>
          <t>The use of an EST Server instead of a BRSKI Registrar may mean that not all the EST options required by <xref target="BRSKI"/> may be available and hence this option may not support all BRSKI deployment cases.
For example, certificates to enroll into an ACP <xref target="RFC8994"/> needs to include an AcpNodeName (see <xref section="6.2.2" sectionFormat="comma" target="RFC8994"/>, which non-BRSKI-capable EST Servers may not support.</t>
          <t>Protocol details for this use case are provided in <xref target="voucher2EST"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The high-level architectures for the two high-level use cases are illustrated in <xref target="arch-one"/> and <xref target="arch-two"/>.</t>
      <t>In both use cases, the Pledge connects to the Cloud Registrar during bootstrap.</t>
      <t>For use case one, as described in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>, the Cloud Registrar redirects the Pledge to an Owner Registrar in order to complete bootstrap with the Owner Registrar. When bootstrapping against an Owner Registrar, the Owner Registrar will interact with a CA to assist in issuing certificates to the Pledge. This is illustrated in <xref target="arch-one"/>.</t>
      <t>For use case two, as described <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>, 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. In this model, the Pledge interacts directly with the EST service to enroll. The EST service will interact with a CA to assist in issuing a certificate to the Pledge. This is illustrated in <xref target="arch-two"/>.</t>
      <t>It is also possible that the Cloud Registrar MAY redirect the Pledge to another Cloud Registrar operated by a VAR, with that VAR's Cloud Registrar then redirecting the Pledge to the Owner Registrar.
This scenario is discussed further in Sections <xref target="multiplehttpredirects"/> and <xref format="counter" target="considerationsfor-http-redirect"/>.</t>
      <t>The mechanisms and protocols by which the Registrar or EST service interacts with the CA are transparent to the Pledge and are outside the scope of this document.</t>
      <t>The architectures show the Cloud Registrar and MASA as being logically separate entities.
The two functions could of course be integrated into a single entity.</t>
      <t>There are two different mechanisms for a Cloud Registrar to handle voucher requests.
It can redirect the request to the Owner Registrar for handling, or it can return a voucher
that includes an "est-domain" attribute that points to the Owner EST Service.
When returning a voucher, additional bootstrapping information is embedded in the voucher.
Both mechanisms are described in detail later in this document.</t>
      <figure anchor="arch-one">
        <name>Architecture: Bootstrap via Cloud Registrar and Owner Registrar</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="536" viewBox="0 0 536 272" 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,176" 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 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 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 440,128 L 440,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"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6" fill="black" transform="rotate(0,392,32)"/>
              <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="492" y="148">BRSKI-MASA</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>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |------------------------------------------| Cloud     |
+--------+                                          | Registrar |
    |                                               +-+---------+
    |                                                 | BRSKI-MASA
    |                 +-----------+                 +-+---------+
    +---------------->|  Owner    |-----------------|   MASA    |
        VR-sign(N)    | Registrar |sign(VR-sign(N)) +-----------+
                      +-----------+
                            |    +-----------+
                            +----|    CA     |
                                 +-----------+
]]></artwork>
        </artset>
      </figure>
      <figure anchor="arch-two">
        <name>Architecture: Bootstrap via Cloud Registrar and Owner EST Service</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="544" viewBox="0 0 544 320" 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,224" fill="none" stroke="black"/>
              <path d="M 80,80 L 80,112" fill="none" stroke="black"/>
              <path d="M 184,208 L 184,256" fill="none" stroke="black"/>
              <path d="M 232,264 L 232,288" fill="none" stroke="black"/>
              <path d="M 272,272 L 272,304" fill="none" stroke="black"/>
              <path d="M 280,208 L 280,256" fill="none" stroke="black"/>
              <path d="M 368,272 L 368,304" 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 448,128 L 448,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 424,160 L 520,160" 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 40,224 L 176,224" fill="none" stroke="black"/>
              <path d="M 184,256 L 280,256" fill="none" stroke="black"/>
              <path d="M 272,272 L 368,272" fill="none" stroke="black"/>
              <path d="M 232,288 L 264,288" fill="none" stroke="black"/>
              <path d="M 272,304 L 368,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6" fill="black" transform="rotate(0,392,32)"/>
              <polygon class="arrowhead" points="272,288 260,282.4 260,293.6" fill="black" transform="rotate(0,264,288)"/>
              <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="500" y="148">BRSKI-MASA</text>
                <text x="468" y="180">MASA</text>
                <text x="208" y="228">EST</text>
                <text x="220" y="244">Server</text>
                <text x="316" y="292">CA</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |------------------------------------------| Cloud     |
+--------+                                          | Registrar |
    |                                               +--+--------+
    |                                                  | BRSKI-MASA
    |                                               +--+--------+
    |                                               |   MASA    |
    |                                               +-----------+
    |                 +-----------+
    +-----------------| EST       |
                      | Server    |
                      +-----------+
                            |    +-----------+
                            +--->|    CA     |
                                 +-----------+
]]></artwork>
        </artset>
      </figure>
      <t>As depicted in <xref target="arch-one"/> and <xref target="arch-two"/>, there are a number of parties involved in the process.
The Manufacturer, or Original Equipment Manufacturer (OEM) builds the device, but also is expected to run the MASA, or arrange for it to exist.
The interaction between the Cloud Registrar and the MASA is described by <xref section="5.4" sectionFormat="comma" target="BRSKI"/>.</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>There is a potential additional party involved who may operate the Cloud Registrar: the value added reseller (VAR).
The VAR 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 VAR and manufacturer are aware of which devices have been shipped to the VAR 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 so that it is able to make DNS queries, and be able to send requests to the Cloud Registrar.
There are many ways to accomplish this, from routable IPv4 or IPv6 addresses, to use of NAT44, to using HTTP or SOCKS proxies.</t>
        <t>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.</t>
        <t>For many telephony applications, this is typically going to be a wired
connection. For wireless use cases, existing Wi-Fi onboarding mechanisms such as <xref target="WPS"/> can be used.</t>
        <t>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 registrar are all out of scope of this document.</t>
      </section>
      <section anchor="pledge-certificate-identity-considerations">
        <name>Pledge Certificate Identity Considerations</name>
        <t><xref section="5.9.2" sectionFormat="of" target="BRSKI"/> specifies that the Pledge MUST send an EST <xref target="RFC7030"/> CSR Attributes request to the EST server before it requests a client certificate.
For the use case described in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>, the Owner Registrar operates as the EST server as described in <xref section="2.5.3" sectionFormat="comma" target="BRSKI"/>, and the Pledge sends the CSR Attributes request to the Owner Registrar.
For the use case described in <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>, the EST server operates as described in <xref target="RFC7030"/>, and the Pledge sends the CSR Attributes request to the EST server.
Note that the Pledge only sends the CSR Attributes request to the entity acting
as the EST server as per <xref section="2.6" sectionFormat="of" target="RFC7030"/>, and MUST NOT send the CSR
Attributes request to the Cloud Registrar, because the Cloud Registrar does not have authority to issue a certificate for the customer domain.  (The Cloud Registrar is not a full EST server)
If a Pledge sends a CSR Attributes request to the Cloud Registrar, then the Cloud Registrar MUST reply with 404 response code.</t>
        <t>The EST server 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 EST server 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 or Subject Alternative Name identity 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 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>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <t>This section outlines the high-level protocol requirements and operations that take place. <xref target="protocol-details"/> outlines the exact sequence of message interactions between the Pledge, the Cloud Registrar, the Owner Registrar and the Owner EST server.</t>
      <section anchor="pledge-sends-voucher-request-to-cloud-registrar">
        <name>Pledge Sends Voucher Request to 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 URI of the Cloud Registrar, including the protocol and path components, which are typically "https://" and "/.well-known/brski", respectively.</t>
        </section>
        <section anchor="pledge-cloud-registrar-tls-establishment-details">
          <name>Pledge - Cloud Registrar TLS Establishment Details</name>
          <t>According to <xref section="2.7" sectionFormat="comma" target="BRSKI"/>, the Pledge MUST use an Implicit Trust Anchor database (see EST <xref target="RFC7030"/>) to authenticate the Cloud Registrar service.
The Pledge MUST establish a mutually authenticated TLS connection with the Cloud Registrar.
Unlike the Provisional TLS procedures documented in Section 5.1 of <xref target="BRSKI"/>, the Pledge MUST NOT establish a Provisional TLS connection with the Cloud Registrar.</t>
          <t>Pledges MUST and Cloud/Owner Registrars SHOULD support the use of the "server_name" TLS extension (SNI, <xref target="RFC6066"/>) when using TLS 1.2.
Support for SNI is mandatory with TLS 1.3.</t>
          <t>Pledges SHOULD send a valid "server_name" extension (SNI) whenever they know the domain name of the registrar they connect to.
A Pledge creating a Provisional TLS connection according to <xref target="BRSKI"/> will often only know the link local IPv6 address of a Join Proxy that connects it to the Registrar.
Registrars are accordingly expected to ignore SNI information, as in most cases, the Pledge will not know how to set the SNI correctly.</t>
          <t>The Pledge MUST be manufactured with preloaded trust anchors that are used to verify the identity of the Cloud Registrar when establishing the TLS connection.
The TLS connection can be verified using a public Web PKI trust anchor using <xref target="RFC9525"/> DNS-ID mechanisms or a pinned certification authority.
This is a local implementation decision.
Refer to <xref target="trust-anchors-for-cloud-registrar"/> for trust anchor security considerations.</t>
          <t>The Cloud Registrar MUST verify 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>In addition to other protections against DoS attacks, the Cloud Registrar is able to reject TLS connections when it can determine during TLS authentication that it cannot support the Pledge.  For example, the Pledge cannot provide an IDevID signed by a CA recognized/supported by the Cloud Registrar.</t>
        </section>
        <section anchor="pledge-sends-voucher-request-message">
          <name>Pledge Sends Voucher Request Message</name>
          <t>After the Pledge has established a mutually authenticated TLS connection with the Cloud Registrar, the Pledge generates a voucher request message as outlined in Section 5.2 of <xref target="BRSKI"/>, and sends the voucher request message to the Cloud Registrar.</t>
        </section>
      </section>
      <section anchor="cloud-registrar-processes-voucher-request-message">
        <name>Cloud Registrar Processes Voucher Request Message</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.
The Registrar returns the following errors:</t>
        <ul spacing="normal">
          <li>
            <t>in the case of an unknown Pledge, a 404 is returned.</t>
          </li>
          <li>
            <t>for a malformed request, 400 is returned.</t>
          </li>
          <li>
            <t>in case of server overload, 503 is returned.</t>
          </li>
        </ul>
        <t>If the request is correct and the Registrar is able to handle it, but unable to determine ownership at that time, 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.
In this scenario, the Registrar SHOULD include a Retry-After header that includes a time to defer.
The absence of a Retry-After header indicates to the Pledge not to attempt again.
The Pledge MUST restart the bootstrapping process from the beginning.</t>
        <t>A Pledge with some kind of indicator (such as a screen or LED) SHOULD consider all 4xx and 5xx errors to be a bootstrapping 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>
            <t>error: 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.</t>
          </li>
          <li>
            <t>redirect to Owner Registrar: redirect the Pledge to an Owner Registrar via 307 response code.</t>
          </li>
          <li>
            <t>redirect to owner EST server: issue a voucher (containing an "est-domain" attribute) and return a 200 response code.</t>
          </li>
        </ul>
        <section anchor="PledgeOwnershipLookup">
          <name>Pledge Ownership Look Up</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 look up a database of Pledge IDevID serial numbers to owners.</t>
          <t>The mechanism by which the Cloud Registrar determines Pledge ownership is, however, outside the scope of this document.
The Cloud Registrar is strongly tied to the manufacturers' processes for device identity.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-registrar-1">
          <name>Bootstrap via Cloud Registrar and 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.
If the owner wants the Cloud Registrar to redirect Pledges to their Owner Registrar, the owner must register their Owner Registrar URI with cloud Registrar.
The mechanism by which Pledge owners register their Owner Registrar URI with the Cloud Registrar is outside the scope of this document.</t>
          <t>In case of redirection, the Cloud Registrar replies to the voucher request with an HTTP 307 Temporary Redirect response code, including the owner's Local Domain in the HTTP Location header.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-est-service-1">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>If the Cloud Registrar issues a voucher, it returns the voucher in an 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 new "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 new "additional-configuration" field.
This field points the Pledge to a URI where Pledge specific additional configuration information SHOULD be retrieved.
For example, a SIP phone might retrieve a manufacturer specific configuration file that contains information about how to do SIP Registration.
One advantage of this mechanism over current mechanisms like DHCP options 120 defined in <xref target="RFC3361"/> or option 125 defined in <xref target="RFC3925"/> is that the voucher is returned in a confidential (TLS-protected) transport, and so can include device-specific credentials for retrieval of the configuration.</t>
          <t>The exact Pledge and Registrar behavior for handling and specifying the "additional-configuration" field is outside the 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>Bootstrap via Cloud Registrar and Owner Registrar</name>
          <t>The Cloud Registrar has returned a 307 response to a voucher request.
The Cloud Registrar MAY be redirecting the Pledge to the Owner Registrar, or to a different Cloud Registrar operated by a VAR.</t>
          <t>The Pledge MUST restart its bootstrapping process by sending a new voucher
request message (with a fresh nonce) using the location provided in the HTTP redirect.</t>
          <t>The Pledge MUST attempt to validate the identity of the Cloud VAR Registrar specified in the 307 response using its Implicit Trust Anchor Database.
If validation of this identity succeeds using the Implicit Trust Anchor Database, then the Pledge MAY accept a subsequent 307 response from this Cloud VAR Registrar.</t>
          <t>The Pledge MAY continue to follow a number of 307 redirects provided that each 307 redirect target Registrar identity is validated using the Implicit Trust Anchor Database.</t>
          <t>However, if validation of a 307 redirect target Registrar identity using the Implicit Trust Anchor Database fails, then the Pledge MUST NOT accept the 307 responses from the Registrar.
At this point, the TLS connection that has been established is considered a Provisional TLS, as per Section 5.1 of <xref target="BRSKI"/>.</t>
          <t>The Pledge then (re)sends a voucher-request on this connection.
As explained by <xref target="BRSKI"/>, the connection is validated using the pinned credential from the voucher.</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.
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>
          <t>In order to avoid permanent bootstrap cycles, the Pledge MUST NOT revisit a prior location.
<xref target="multiplehttpredirects"/> further outlines risks associated with redirects.
However, in some scenarios, Pledges MAY visit the current location multiple times, for example when handling a 401 Unauthorized response, or when handling a 503 Service Unavailable that includes a Retry-After HTTP header.
If it happens that a location is repeated, then the Pledge MUST fail the bootstrapping attempt and go back to the beginning, which includes listening to other sources of bootstrapping information as specified in <xref target="BRSKI"/> section 4.1 and 5.0.
The Pledge MUST also have a limit on the total 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>When the Pledge cannot validate the connection, then it MUST establish a Provisional TLS connection with the specified Local Domain Registrar at the location specified.</t>
          <t>The Pledge then sends a voucher request message via the Local Domain Registrar.</t>
          <t>After the Pledge receives the voucher, it verifies 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="bootstrap-via-cloud-registrar-and-owner-est-service-2">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>The Cloud Registrar returned a voucher to the Pledge.
The Pledge MUST perform voucher verification as per Section 5.6.1 of <xref target="BRSKI"/>.</t>
          <t>The Pledge SHOULD extract the "est-domain" field from the voucher, and SHOULD continue with EST enrollment as per standard EST operation. Note that the Pledge has been instructed to connect to the EST server specified in the "est-domain" field, and therefore SHOULD use EST mechanisms, and not BRSKI mechanisms, when connecting to the EST server.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-details">
      <name>Protocol Details</name>
      <section anchor="redirect2Registrar">
        <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
        <t>This flow illustrates the "Bootstrap via Cloud Registrar and Owner Registrar" use case.
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 Owner Registrar on the public internet.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="496" viewBox="0 0 496 624" 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,608" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 192,272 L 192,320" fill="none" stroke="black"/>
              <path d="M 224,328 L 224,608" fill="none" stroke="black"/>
              <path d="M 288,272 L 288,320" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 400,272 L 400,320" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,240" fill="none" stroke="black"/>
              <path d="M 440,328 L 440,560" fill="none" stroke="black"/>
              <path d="M 480,272 L 480,320" 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,272 L 288,272" fill="none" stroke="black"/>
              <path d="M 400,272 L 480,272" fill="none" stroke="black"/>
              <path d="M 192,320 L 288,320" fill="none" stroke="black"/>
              <path d="M 400,320 L 480,320" fill="none" stroke="black"/>
              <path d="M 48,352 L 216,352" fill="none" stroke="black"/>
              <path d="M 48,400 L 216,400" fill="none" stroke="black"/>
              <path d="M 232,416 L 432,416" fill="none" stroke="black"/>
              <path d="M 232,464 L 432,464" fill="none" stroke="black"/>
              <path d="M 48,496 L 216,496" fill="none" stroke="black"/>
              <path d="M 48,544 L 216,544" fill="none" stroke="black"/>
              <path d="M 48,592 L 216,592" fill="none" stroke="black"/>
              <path d="M 48,608 L 216,608" 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="240,464 228,458.4 228,469.6" fill="black" transform="rotate(180,232,464)"/>
              <polygon class="arrowhead" points="224,592 212,586.4 212,597.6" fill="black" transform="rotate(0,216,592)"/>
              <polygon class="arrowhead" points="224,544 212,538.4 212,549.6" fill="black" transform="rotate(0,216,544)"/>
              <polygon class="arrowhead" points="224,400 212,394.4 212,405.6" fill="black" transform="rotate(0,216,400)"/>
              <polygon class="arrowhead" points="224,352 212,346.4 212,357.6" fill="black" transform="rotate(0,216,352)"/>
              <polygon class="arrowhead" points="56,608 44,602.4 44,613.6" fill="black" transform="rotate(180,48,608)"/>
              <polygon class="arrowhead" points="56,544 44,538.4 44,549.6" fill="black" transform="rotate(180,48,544)"/>
              <polygon class="arrowhead" points="56,496 44,490.4 44,501.6" fill="black" transform="rotate(180,48,496)"/>
              <polygon class="arrowhead" points="56,352 44,346.4 44,357.6" fill="black" transform="rotate(180,48,352)"/>
              <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="440" y="68">Registrar</text>
                <text x="60" y="116">1.</text>
                <text x="164" y="116">Mutually-authenticated</text>
                <text x="272" 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="292">Owner</text>
                <text x="436" y="292">MASA</text>
                <text x="240" y="308">Registrar</text>
                <text x="60" y="340">4.</text>
                <text x="120" y="340">Provisional</text>
                <text x="184" y="340">TLS</text>
                <text x="60" y="388">5.</text>
                <text x="104" y="388">Voucher</text>
                <text x="168" y="388">Request</text>
                <text x="244" y="404">6.</text>
                <text x="288" y="404">Voucher</text>
                <text x="352" y="404">Request</text>
                <text x="244" y="452">7.</text>
                <text x="288" y="452">Voucher</text>
                <text x="356" y="452">Response</text>
                <text x="60" y="484">8.</text>
                <text x="104" y="484">Voucher</text>
                <text x="172" y="484">Response</text>
                <text x="60" y="532">9.</text>
                <text x="100" y="532">Verify</text>
                <text x="144" y="532">TLS</text>
                <text x="64" y="580">10.</text>
                <text x="96" y="580">EST</text>
                <text x="140" y="580">enroll</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud    |
|        |                                       |Registrar |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutually-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. Verify TLS        |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 10. EST enroll       |
    |--------------------->|
    |<---------------------|
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud Registrar using the IDevID certificate and the trust anchors created during the manufacturing process of the Pledge.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud Registrar.</t>
        <t>The Cloud Registrar determines Pledge ownership look up as outlined in <xref target="PledgeOwnershipLookup"/>, and determines the Owner Registrar domain.
In step 3, the Cloud Registrar redirects the Pledge to the Owner Registrar domain.</t>
        <t>Steps 4 and onwards follow the standard BRSKI flow, which includes doing EST enroll operations.
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 verifies 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>Bootstrap via Cloud Registrar and Owner EST Service</name>
        <t>This flow illustrates the "Bootstrap via Cloud Registrar and Owner EST Service" use case.
A Pledge is bootstrapping in a location with no Local Domain Registrar.
The Cloud Registrar is instructing the Pledge to connect directly to an EST server for enrollment using EST mechanisms.
The assumption is that the EST domain is accessible, and the Pledge can establish a network connection with the EST server.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="720" width="496" viewBox="0 0 496 720" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 40,104 L 40,704" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,96" fill="none" stroke="black"/>
              <path d="M 184,272 L 184,336" fill="none" stroke="black"/>
              <path d="M 224,344 L 224,384" fill="none" stroke="black"/>
              <path d="M 224,480 L 224,704" fill="none" stroke="black"/>
              <path d="M 272,272 L 272,336" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,96" fill="none" stroke="black"/>
              <path d="M 440,104 L 440,704" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,96" 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,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 400,96 L 488,96" fill="none" stroke="black"/>
              <path d="M 48,144 L 432,144" fill="none" stroke="black"/>
              <path d="M 48,192 L 432,192" fill="none" stroke="black"/>
              <path d="M 48,240 L 432,240" fill="none" stroke="black"/>
              <path d="M 184,272 L 272,272" fill="none" stroke="black"/>
              <path d="M 184,336 L 272,336" fill="none" stroke="black"/>
              <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
              <path d="M 48,448 L 432,448" fill="none" stroke="black"/>
              <path d="M 48,512 L 216,512" fill="none" stroke="black"/>
              <path d="M 48,560 L 216,560" fill="none" stroke="black"/>
              <path d="M 48,608 L 216,608" fill="none" stroke="black"/>
              <path d="M 48,656 L 216,656" fill="none" stroke="black"/>
              <path d="M 48,704 L 216,704" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,448 428,442.4 428,453.6" fill="black" transform="rotate(0,432,448)"/>
              <polygon class="arrowhead" points="440,192 428,186.4 428,197.6" fill="black" transform="rotate(0,432,192)"/>
              <polygon class="arrowhead" points="440,144 428,138.4 428,149.6" fill="black" transform="rotate(0,432,144)"/>
              <polygon class="arrowhead" points="224,704 212,698.4 212,709.6" fill="black" transform="rotate(0,216,704)"/>
              <polygon class="arrowhead" points="224,608 212,602.4 212,613.6" fill="black" transform="rotate(0,216,608)"/>
              <polygon class="arrowhead" points="224,512 212,506.4 212,517.6" fill="black" transform="rotate(0,216,512)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6" fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="56,656 44,650.4 44,661.6" fill="black" transform="rotate(180,48,656)"/>
              <polygon class="arrowhead" points="56,560 44,554.4 44,565.6" fill="black" transform="rotate(180,48,560)"/>
              <polygon class="arrowhead" points="56,384 44,378.4 44,389.6" fill="black" transform="rotate(180,48,384)"/>
              <polygon class="arrowhead" points="56,240 44,234.4 44,245.6" fill="black" transform="rotate(180,48,240)"/>
              <polygon class="arrowhead" points="56,144 44,138.4 44,149.6" fill="black" transform="rotate(180,48,144)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="440" y="68">Registrar</text>
                <text x="416" y="84">/</text>
                <text x="444" y="84">MASA</text>
                <text x="60" y="132">1.</text>
                <text x="164" y="132">Mutually-authenticated</text>
                <text x="272" y="132">TLS</text>
                <text x="60" y="180">2.</text>
                <text x="104" y="180">Voucher</text>
                <text x="168" y="180">Request</text>
                <text x="60" y="228">3.</text>
                <text x="104" y="228">Voucher</text>
                <text x="172" y="228">Response</text>
                <text x="288" y="228">{est-domain:fqdn}</text>
                <text x="224" y="292">RFC7030</text>
                <text x="208" y="308">EST</text>
                <text x="220" y="324">Server</text>
                <text x="60" y="372">4.</text>
                <text x="124" y="372">Authenticate</text>
                <text x="192" y="372">TLS</text>
                <text x="64" y="420">5a.</text>
                <text x="92" y="420">On</text>
                <text x="140" y="420">success:</text>
                <text x="196" y="420">POST</text>
                <text x="280" y="420">/voucher_status</text>
                <text x="376" y="420">success</text>
                <text x="64" y="436">5b.</text>
                <text x="92" y="436">On</text>
                <text x="140" y="436">failure:</text>
                <text x="196" y="436">POST</text>
                <text x="280" y="436">/voucher_status</text>
                <text x="376" y="436">failure</text>
                <text x="60" y="484">6.</text>
                <text x="88" y="484">CSR</text>
                <text x="148" y="484">Attributes</text>
                <text x="104" y="500">Request</text>
                <text x="60" y="532">7.</text>
                <text x="88" y="532">CSR</text>
                <text x="148" y="532">Attributes</text>
                <text x="108" y="548">Response</text>
                <text x="60" y="596">8.</text>
                <text x="88" y="596">EST</text>
                <text x="132" y="596">Enroll</text>
                <text x="60" y="644">9.</text>
                <text x="120" y="644">Certificate</text>
                <text x="64" y="692">10.</text>
                <text x="136" y="692">/enrollstatus</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud    |
|        |                                       |Registrar |
|        |                                       | / MASA   |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutually-authenticated TLS                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. Voucher Response  {est-domain:fqdn}          |
    |<------------------------------------------------|
    |                                                 |
    |                 +----------+                    |
    |                 | RFC7030  |                    |
    |                 | EST      |                    |
    |                 | Server   |                    |
    |                 +----------+                    |
    |                      |                          |
    | 4. Authenticate TLS  |                          |
    |<-------------------->|                          |
    |                                                 |
    | 5a. On success: POST /voucher_status success    |
    | 5b. On failure: POST /voucher_status failure    |
    |------------------------------------------------>|
    |                                                 |
    | 6. CSR Attributes    |                          |
    |    Request           |                          |
    |--------------------->|                          |
    | 7. CSR Attributes    |                          |
    |    Response          |                          |
    |<---------------------|                          |
    |                      |                          |
    | 8. EST Enroll        |                          |
    |--------------------->|                          |
    |                      |                          |
    | 9. Certificate       |                          |
    |<---------------------|                          |
    |                      |                          |
    | 10. /enrollstatus    |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud Registrar/MASA using artifacts created during the manufacturing process of the Pledge.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud Registrar/MASA.</t>
        <t>In step 3, the the Cloud Registrar/MASA replies to the Pledge with an <xref target="RFC8366bis"/> format voucher that includes its assigned EST domain in the "est-domain" attribute.</t>
        <t>In step 4, the Pledge establishes a TLS connection with the EST RA that was specified in the voucher "est-domain" attribute.
The connection may involve crossing the Internet requiring a DNS look up on the provided name.
It MAY also be a local address that includes an IP address literal including both IPv4 <xref target="RFC1918"/> and IPv6 Unique Local Addresses <xref target="RFC4193"/>.
The Pledge attempts to authentiate the TLS connection and verify the EST server identity.
The artifact provided in the pinned-domain-cert is trusted as a trust anchor, and is used to verify the EST server identity.
The EST server identity MUST be verified using the pinned-domain-cert value provided in the voucher as described in <xref target="RFC7030"/> section 3.3.1.</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="RFC9525"/> DNS-ID verification on the certificate against the domain provided in the "est-domain" attribute.
If the "est-domain" was provided with an IP address literal, then it is unlikely that it can be verified, and in that case, it is expected that either a self-signed certificate or an EE certificate will be pinned by the voucher.</t>
        <t>In steps 5.a and 5.b, the Pledge MAY optionally notify the Cloud Registrar/MASA of the success or failure of its attempt to establish a secure TLS channel with the EST server.
This is described in Section 5.7 of <xref target="BRSKI"/>
This telemetry returns allow for the Registrar to better provide diagnostics in the event of failure to onboard.
if the Pledge fails to verify the identity of the EST server, it MUST drop the connection and MUST NOT continue with a CSR Attributes request or an EST Enroll request.</t>
        <t>In step 6, the Pledge follows the procedures outlined in {pledge-certificate-identity-considerations} and sends a CSR Attributes request to the EST server before sending the EST Enroll request.</t>
        <t>In step 7, the EST server returns the CSR Attributes response.</t>
        <t>In step 8, the Pledge sends an EST Enroll request with the CSR.</t>
        <t>In step 9, the EST server returns the requested certificate.</t>
        <t>Step 10 is described in Section 5.9.4 of <xref target="BRSKI"/> as the Enrollment Status Telemetry.
This telemetry return also allows for better diagnostics in the event of a failure.</t>
      </section>
    </section>
    <section anchor="lifecycle-considerations">
      <name>Lifecycle Considerations</name>
      <t>BRSKI and the Cloud Registrar support provided in this document are dependent upon the manufacturer maintaining the required infrastructure. Section 10.7 of <xref target="BRSKI"/> outlines additional considerations about manufacturer life span.</t>
      <t>Sections 11.5 and 11.6 of <xref target="BRSKI"/> outline additional considerations about device trust anchors and how devices establish trust.</t>
      <t>The well-known URL that is used is specified by the manufacturer when designing its firmware, and is therefore completely under the manufacturer's control.
If the manufacturer wishes to change the URL, or discontinue the service, then the manufacturer will need to arrange for a firmware update where appropriate changes are made.
In the event of a merger between two companies, then the mechanism that is described in section 7.2 MAY be applicable.</t>
      <t>In the hosted Registrar, with an Owner EST Server <xref target="voucher2EST"/> use case, the Cloud Registrar MUST know the certificate for the EST Server in order to pin it properly.
In that case, when the owner of the EST Server wishes to change their certificate, then they MUST coordinate this with the upstream Cloud Registrar operator.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="captive-portals">
        <name>Captive Portals</name>
        <t>A Pledge might find itself deployed in a network where a captive portal or an intelligent home gateway that provides access control on all connections is also deployed.
Captive portals that do not follow the requirements of Section 1 of <xref target="RFC8952"/> 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>When the Pledge attempts to connect to the Cloud Registrar, an incorrect connection will be detected because the Pledge will be unable to verify the TLS connection to its Cloud Registrar via DNS-ID check Section 6.3 of <xref target="RFC9525"/>.
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 via 307, or to an EST server 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 section="6.3" sectionFormat="comma" target="RFC9525"/> DNS-ID verification 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.</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>
        <t>The scenarios outlined here when a Pledge is deployed behind a captive portal may result in failure scenarios,
but do not constitute a security risk, so long as the Pledge is correctly verifying all TLS connections as per <xref target="BRSKI"/>.</t>
      </section>
      <section anchor="multiplehttpredirects">
        <name>Multiple HTTP Redirects</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 are additional considerations regarding TLS certificate validation as outlined in <xref target="redirect-response"/>.
If the Registrar returns a 307 response, the Pledge MUST NOT follow this redirect if the Registrar identity was not validated using its Implicit Trust Anchor Database.
If the Registrar identity was validated using the Implicit Trust Anchor Database, then the Pledge MAY follow the redirect.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Cloud Registrar described in this document inherits all the strong security properties that are described in <xref target="BRSKI"/>, and none of the security mechanisms that are defined in <xref target="BRSKI"/> are bypassed or weakened by this document.
The Cloud Registrar also inherits all the potential 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 might be operated by the manufacturer and/or by one or more value-added-resellers.
All the considerations for operation of the MASA also apply to operation of the Cloud Registrar.</t>
      <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, such as the public Internet, on which some amount of connectivity is possible, but there is no other local configuration available.
(Note: there are many possible configurations in which the device might not have unlimited connectivity to the public Internet, but for which there might be connectivity possible.
For instance, the device could be without a default route or NAT44, but able to make HTTP requests via an HTTP proxy configured via DHCP.)</t>
        <t>There is another advantage to being online: the Pledge SHOULD contact the manufacturer before bootstrapping in order to apply any available firmware patches.
Manufacturers are encouraged to make MUD <xref target="RFC8520"/> files available, and in those definitions to allow for retrieval of 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 bootstrapping.</t>
      </section>
      <section anchor="trust-anchors-for-cloud-registrar">
        <name>Trust Anchors for Cloud Registrar</name>
        <t>In order to validate the HTTPS connections to the (series of) Cloud Registrars, the Pledge will need to have an Implicit Trust Anchor database, as described in <xref section="3.6.1" sectionFormat="comma" target="RFC7030"/>, to verify the Cloud Registrar's certificate.</t>
        <t>There is no requirement that Cloud Registrar's certificates are part of the public (WebPKI) database, but it is likely simpler and cheaper for most such systems to use easily obtained certificates.</t>
        <t>Device manufacturers therefore need to include enough trust anchor in their devices (the Pledges) so that all expected Cloud Registrar's can be validated.
This argues for including more trust anchors.</t>
        <t>On the other hand, minimizing the number of trust anchors reduces the security exposure should fraudulent certificates ever be issued.
More trust anchors also implies more maintenance to maintain and update this Implicit Trust Anchor database as different certification authorities renew their trust anchors.</t>
        <t>A device manufacturer could instead ship only their own internal, private trust anchors for a PKI that the manufacturer operates.
This is described in in <xref target="I-D.irtf-t2trg-taxonomy-manufacturer-anchors"/> section 3.
This would imply that all Cloud Registrars (likely operated by VARs) would have to obtain a certificate from the manufacturer.
This has advantages in reliability and predictability, but likely makes the Cloud Registrars much more costly to operate.
In particular, tying the VARs' Cloud Registrar to a single manufacturer means that the VARs might have to operate a Cloud Registrar for each brand of equipment that they represent.</t>
        <t>The recommendation is therefore for manufacturers to work with their VARs to determine if there is a subset of public PKIs that would satisfy all their VARs, and to ship only that subset.</t>
        <t>The final onboarding step, wherein an <xref target="RFC8366bis"/> voucher artifact is returned to authenticate the provisional TLS connection, can use any kind of trust anchor: private or public.
In most cases, the end customer's Registrar will have a private PKI that will be pinned by the voucher.</t>
      </section>
      <section anchor="considerationsfor-http-redirect">
        <name>Considerations for HTTP Redirect</name>
        <t>When the default Cloud Registrar redirects a Pledge using HTTP 307 to an Owner Registrar, or another Cloud Registrar operated by a VAR, the Pledge MUST have validated the TLS connection using an Implicit Trust Anchor.</t>
        <t>However, when connecting to the target Owner Registrar, a provisional TLS connection is required as explained in <xref section="5.1" sectionFormat="comma" target="BRSKI"/>.</t>
        <t>There is a conflict between these requirements: one says to validate, and the other one says not to.
This is resolved by having the Pledge attempt validation, and if it succeeds, then an HTTP 307 redirect will be accepted.
If validation fails, then an HTTP 307 redirect MUST be rejected as an error.
If that occurs, then the onboarding process SHOULD restart after a delay.
This failure should be reported to the initial Cloud Registrar via the mechanism described in <xref section="5.7" sectionFormat="comma" target="BRSKI"/>.</t>
        <t>Note that for use case two, in which redirection to an EST Server occurs, then there is no provisional TLS connection at all.  The connection to the last Cloud Registrar is validated using the Implicit Trust Database, while the EST Server connection is validated by the certificate pinned by the Voucher artifact.</t>
      </section>
      <section anchor="considerations-for-voucher-est-domain">
        <name>Considerations for Voucher est-domain</name>
        <t>A Cloud Registrar supporting the same set of Pledges as a MASA MAY be integrated with the MASA to avoid the need for a network based API between them, and without changing their external behavior as specified here.</t>
        <t>When a Cloud Registrar handles the scenario described in {bootstrap-via-cloud-registrar-and-owner-est-service} by the returning "est-domain" attribute in the voucher, the Cloud Registrar MUST do all the voucher processing as specified in <xref target="BRSKI"/>.
This is an example deployment scenario where the Cloud Registrar MAY be operated by the same entity as the MASA, and it MAY even be integrated with the MASA.</t>
        <t>When a voucher is issued by the Cloud Registrar and that voucher contains an "est-domain" attribute, the Pledge MUST verify the TLS connection with this EST server using the "pinned-domain-cert" attribute in the voucher.</t>
        <t>The reduced operational security mechanisms outlined in Sections 7.3 and 11 of <xref target="BRSKI"/> MAY be supported when the Pledge connects with the EST server.
These mechanisms reduce the security checks that take place when the Pledge enrolls with the EST server.
Refer to <xref target="BRSKI"/> sections 7.3 and 11 for further details.</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, Toerless Eckert, Sheng Jiang.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="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="BRSKI">
          <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">
          <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="1" month="April" year="2025"/>
            <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, includes a number of desired
   extensions into the YANG.  The voucher request defined in RFC8995 is
   also now included in this document, as well as other YANG extensions
   needed for variants of BRSKI/RFC8995.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-14"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc7030-csrattrs">
          <front>
            <title>Clarification and enhancement 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="8" month="May" year="2025"/>
            <abstract>
              <t>   This document updates RFC7030, Enrollment over Secure Transport
   (EST), clarifying how the Certificate Signiing Request (CSR)
   Attributes Response can be used by an EST server to specify both CSR
   attribute Object IDs (OID) and also CSR attribute values, in
   particular X.509 extension values, that the server expects the client
   to include in subsequent CSR request.

   RFC7030 (EST) is ambiguous in its specification of the CSR Attributes
   Response.  This has resulted in implementation challenges and
   implementor confusion.  As a result, there was not universal
   understanding of what was specified.  This document clarifies the
   encoding rules.

   This document therefore also provides a new straightforward approach:
   using a template for CSR contents that may be partially filled in by
   the server.  This also allows an EST server to specify a subject
   Distinguished Name (DN).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-22"/>
        </reference>
        <reference anchor="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="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">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="I-D.irtf-t2trg-taxonomy-manufacturer-anchors">
          <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="28" month="May" year="2025"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-taxonomy-manufacturer-anchors-09"/>
        </reference>
        <reference anchor="WPS" target="https://www.wi-fi.org/discover-wi-fi/wi-fi-protected-setup">
          <front>
            <title>Wi-Fi Protected Setup (WPS)</title>
            <author>
              <organization>Wi-Fi Alliance</organization>
            </author>
            <date year="2025" month="January"/>
          </front>
        </reference>
        <reference anchor="RFC3261">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
            <author fullname="A. Johnston" initials="A." surname="Johnston"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="R. Sparks" initials="R." surname="Sparks"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="E. Schooler" initials="E." surname="Schooler"/>
            <date month="June" year="2002"/>
            <abstract>
              <t>This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3261"/>
          <seriesInfo name="DOI" value="10.17487/RFC3261"/>
        </reference>
        <reference anchor="RFC3361">
          <front>
            <title>Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="August" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3361"/>
          <seriesInfo name="DOI" value="10.17487/RFC3361"/>
        </reference>
        <reference anchor="RFC3925">
          <front>
            <title>Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4)</title>
            <author fullname="J. Littlefield" initials="J." surname="Littlefield"/>
            <date month="October" year="2004"/>
            <abstract>
              <t>The Dynamic Host Configuration Protocol (DHCP) options for Vendor Class and Vendor-Specific Information can be limiting or ambiguous when a DHCP client represents multiple vendors. This document defines two new options, modeled on the IPv6 options for vendor class and vendor-specific information, that contain Enterprise Numbers to remove ambiguity. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3925"/>
          <seriesInfo name="DOI" value="10.17487/RFC3925"/>
        </reference>
        <reference anchor="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="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="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">
          <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">
          <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>
        <reference anchor="RFC8520">
          <front>
            <title>Manufacturer Usage Description Specification</title>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This memo specifies a component-based architecture for Manufacturer Usage Descriptions (MUDs). The goal of MUD is to provide a means for end devices to signal to the network what sort of access and network functionality they require to properly function. The initial focus is on access control. Later work can delve into other aspects.</t>
              <t>This memo specifies two YANG modules, IPv4 and IPv6 DHCP options, a Link Layer Discovery Protocol (LLDP) TLV, a URL, an X.509 certificate extension, and a means to sign and verify the descriptions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8520"/>
          <seriesInfo name="DOI" value="10.17487/RFC8520"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
AAA=

-->

</rfc>
