<?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-18" 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">Bootstrapping Remote Secure Key Infrastructure (BRSKI) Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-18"/>
    <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="September" day="01"/>
    <abstract>
      <?line 58?>

<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.
On networks without that, there is nothing present to help onboard the device.</t>
      <t>This document extends BRSKI and defines behavior for bootstrapping devices 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  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>
      <t>This document updates RFC 8995 (BRSKI).</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 71?>

<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 entire work is an update to <xref target="BRSKI"/>.</t>
      <t>Specifically, it extends <xref section="2.7" sectionFormat="comma" target="BRSKI"/> to describe 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 is deployed in a network that does 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 updates <xref target="BRSKI"/> by clarifying operations that are left out of scope in <xref target="BRSKI"/>.
Two modes of operation are specified in this document.
The Cloud Registrar can choose between redirecting the Pledge to the owner's Registrar, or it 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 Domain, 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>Cloud VAR Registrar:</dt>
          <dd>
            <t>The non-default Registrar that is operated by a value added reseller (VAR).</t>
          </dd>
          <dt>CSR:</dt>
          <dd>
            <t>Certificate Signing Request</t>
          </dd>
          <dt>DHCP</dt>
          <dd>
            <t>refers to DHCPv4 <xref target="RFC2131"/> or DHCPv6 <xref target="RFC8914"/>.</t>
          </dd>
          <dt>EST:</dt>
          <dd>
            <t>Enrollment over Secure Transport <xref target="RFC7030"/>.</t>
          </dd>
          <dt>IDevID:</dt>
          <dd>
            <t>An initial device identity certificate as described in <xref target="IDEVID"/></t>
          </dd>
          <dt>LDevID:</dt>
          <dd>
            <t>A local device identity certificate as described in <xref target="IDEVID"/></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>OEM:</dt>
          <dd>
            <t>Original Equipment Manufacturer.  The company that manufactured the device.</t>
          </dd>
          <dt>Owner:</dt>
          <dd>
            <t>The owner is the organization that has purchased the new device (the pledge).  The device might be deployed in a network that the owner does not control.</t>
          </dd>
          <dt>Owner Delegate:</dt>
          <dd>
            <t>The owner delegate is an entity distinct from the Owner that has been contracted to operate/manage the devices in question.  For instance, an IT maintenance and support-desk company.</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>Pledge operator:</dt>
          <dd>
            <t>The person or organization that removes the device from the shipping box and connects power and network to it.</t>
          </dd>
          <dt>Provisional TLS:</dt>
          <dd>
            <t>A mechanism defined in <xref section="5.1" sectionFormat="comma" 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 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>
        </dl>
      </section>
      <section anchor="use-cases">
        <name>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 existing DHCP options that network operators use to configure devices such as a VoIP phone.
This includes DHCP options 66 <xref target="RFC2132"/>, 150 (TFTP/HTTP server names) <xref target="RFC5859"/>, and 120 (SIP Server) <xref target="RFC3361"/>, which inform a VoIP phone about how to do application onboarding.
A network with an operator that is able to provision these options would also be able to use BRSKI without changes.
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 for 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>One 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 <xref target="IDEVID"/>
and configuration that connections the phone with the Enterprises' VoIP PBX.
The home employee's network has no special provisions.</t>
        <t>The procedures defined 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 Registrar 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 the first use case, 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>
      <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="528" viewBox="0 0 528 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 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="176" y="116">307</text>
                <text x="228" y="116">redirect</text>
                <text x="472" y="116">Registrar</text>
                <text x="224" y="180">Owner</text>
                <text x="468" y="180">MASA</text>
                <text x="108" y="196">VR-sign(N)</text>
                <text x="232" y="196">Registrar</text>
                <text x="348" y="196">sign(VR-sign(N))</text>
                <text x="316" y="244">CA</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |------------------------------------------| Cloud     |
+--------+          307 redirect                    | Registrar |
    |                                               +-----------+
    |
    |                 +-----------+                 +-----------+
    +---------------->|  Owner    |-----------------|   MASA    |
        VR-sign(N)    | Registrar |sign(VR-sign(N)) +-----------+
                      +-----------+
                            |    +-----------+
                            +----|    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 Manufacturer Authorized Signing Authority (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>In <xref target="arch-one"/> the two signatures that the Pledge and the Owner Registrar place on the Voucher Request (VR) are shown as <tt>VR-sign(N)</tt> and <tt>sign(VR-sign(N))</tt>
This is as described in <xref section="3" sectionFormat="comma" target="BRSKI"/>.
There are also signatures from Pledge to Cloud Registrar and to MASA in <xref target="arch-two"/>, but they are omitted as they would make the diagram too busy.</t>
      <t>For the second use case, 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>
      <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="180" y="116">referral</text>
                <text x="232" y="116">via</text>
                <text x="292" y="116">est-domain</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     |
+--------+        referral via est-domain           | Registrar |
    |                                               +--+--------+
    |                                                  | BRSKI-MASA
    |                                               +--+--------+
    |                                               |   MASA    |
    |                                               +-----------+
    |                 +-----------+
    +-----------------| EST       |
                      | Server    |
                      +-----------+
                            |    +-----------+
                            +--->|    CA     |
                                 +-----------+
]]></artwork>
        </artset>
      </figure>
      <t>It is also possible for the Cloud Registrar to 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 <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>In the two use cases, there are different mechanisms for a Cloud Registrar to handle voucher requests.</t>
      <t>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 can be embedded in the voucher using the <tt>additional-configuration-url</tt> attribute.
The contents of this additional configuration are device and Manufacturer specific.
Both mechanisms are described in detail later in this document.</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 that is able to reach a recursive DNS server,
and be able to send requests to the Cloud Registrar.
There are many ways to accomplish this, from using 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="comma" target="BRSKI"/> specifies that the Pledge MUST send an EST <xref target="RFC7030"/>
Certificate Signing Request (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="comma" 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 erroneously 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 attributes: <tt>est-domain</tt> and <tt>additional-configuration-url</tt> 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 contacts 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.
If the Pledge fails to connect to the Cloud Registrar for any reason, it should consider that this is a bootstrapping failure, and indicate this.</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 <xref section="5.1" sectionFormat="comma" 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 <xref section="5.2" sectionFormat="comma" 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 <xref target="RFC9110"/>.
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 <xref target="RFC7231"/> 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.</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 <tt>additional-configuration-url</tt> field.
This field points the Pledge to a URI where Pledge specific additional configuration information SHOULD be retrieved.
For example, a SIP user agent (a UA, such as a desk 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 <tt>additional-configuration-url</tt> 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.
The Manufacturer MAY enforce a Manufacturer-specific limit on the number of 307 redirects that the Pledge will follow.
The Pledge MAY be redirected to an Owner Register that then redirects the Pledge via a 3xx response.
The Pledge MUST follow the rules outlined in <xref section="5.6" sectionFormat="comma" target="BRSKI"/> for any redirections other than 307 and MUST NOT follow more than one non-307 redirection (3xx code other than 307) to another web origin.</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 <xref section="5.1" sectionFormat="comma" 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 on the same attempt.
If a loop is detected, then the Pledge MUST abort the current attempt, returning to the initial state where it looks for local Registrars (as per <xref target="BRSKI"/>), starting again with the initial Cloud Registrar if none are found.</t>
          <t><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 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 <xref section="5.6.1" sectionFormat="comma" 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 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.
The resulting IP address can be of any scope: a globally unique IP address, or a local IP address.
An IP address literal MAY be used in the est-domain attributes, including a local address that includes an IP address literal including both IPv4 <xref target="RFC1918"/> and IPv6 Unique Local Addresses <xref target="RFC4193"/>.</t>
        <t>The Pledge attempts to authenticate 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 <xref section="5.7" sectionFormat="comma" 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 <xref target="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 <xref section="5.9.4" sectionFormat="comma" 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. <xref section="10.7" sectionFormat="comma" 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.</t>
      <t>Often the firmware can not be updated because there is significant inventory in a warehouse.
If the Pledge were powered on and connected, then it would get firmware updates.
Since it is not, any URLs built-in to the old firmware need to be maintained until all copies of that firmware have been replaced.
This could be a challenge if a company is going out of business, and in which case the considerations from <xref section="10.7" sectionFormat="comma" target="BRSKI"/> apply.</t>
      <t>If a merger between two companies happens, then it is possible to consolidate the MASA of each company into a single system.
The consolidated MASA will need access to a MASA signing key for both companies to operate correctly.
One way is for both MASA names (such as masa.company1.example, and masa.company2.example) to be added as SubjectAltNames for the HTTPS certificates used by the MASA.
The Cloud Registrar will need a similar treatment.
As an alternative to operating a Registrar under two names, all access to one Cloud Registrar could be replaced with a 307 redirect as described in <xref target="multiplehttpredirects"/>.</t>
      <t>Additionally, in the hosted Registrar use case, 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="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>All privacy considerations outlined in <xref section="10" sectionFormat="comma" target="BRSKI"/> are applicable.</t>
      <t>There are additional privacy considerations as the Pledge connects to a default Cloud Registrar during bootstrap. In particular, <xref section="10.3" sectionFormat="comma" target="BRSKI"/> documents the information that is revealed to the MASA. When Pledges use the mechansisms described in this document, a subset of this information is revealed to the Cloud Registrar, namely:</t>
      <ul spacing="normal">
        <li>
          <t>the identity of the device being enrolled</t>
        </li>
        <li>
          <t>the time the device is activated</t>
        </li>
        <li>
          <t>the IP address of the device, or if the Pledge is behind a NAT, the public IP of the NAT</t>
        </li>
      </ul>
      <t>Refer to <xref section="10" sectionFormat="comma" target="BRSKI"/> for more comprehensive information.</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 are also deployed.
Captive portals that do not follow the requirements of Section 1 of <xref target="RFC8952"/> might 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 any 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 <xref section="6.3" sectionFormat="comma" 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 DNS-ID verification (<xref section="6.3" sectionFormat="comma" target="RFC9525"/>), so the forced redirection to a captive portal system will not be detected.
However, the subsequent BRSKI POST of a voucher request will most likely be met by a 404 or 500 HTTP code.
Even if somehow it did work (because the captive portal was in fact an attacker), any returned voucher would not be signed by a trusted MASA.</t>
        <t>It is RECOMMENDED therefore that the Pledge look for Captive-Portal
Identification attributes <xref target="RFC8910"/> in DHCP, and if present, use the Captive-Portal API <xref target="RFC8908"/> 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 the 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 some connectivity possible)</t>
        <t>The Pledge SHOULD NOT assume that the network is protecting the device.
In a majority of cases, the Pledge will be connected to a network behind an enterprise firewall, or a home router, with typical restrictions on incoming TCP connections due to NAT44 <xref target="RFC6144"/> and <xref section="3.1" sectionFormat="comma" target="RFC7084"/>, and <xref section="4" sectionFormat="comma" target="RFC6092"/>.
In such situations, the Pledge might think it can be assured that it can not be attacked, but this is not the case!</t>
        <t>Pledges could be deployed on networks</t>
        <ul spacing="normal">
          <li>
            <t>with unfiltered connectivity, including public IPv4 and IPv6</t>
          </li>
          <li>
            <t>where incoming connections are enabled via explicit rules</t>
          </li>
          <li>
            <t>where there could be malicious devices within this network</t>
          </li>
        </ul>
        <t>The Pledge SHOULD contact the Manufacturer before bootstrapping in order to apply any available firmware patches.
Firmware patches need to validated before being applied.
This is best done via signatures on the firmware updates, such as described in <xref target="RFC9019"/> or an equivalent mechanism.
Origin authentication of updates is also sometimes enough.</t>
        <t>In order to best protect the Pledge from attacks of all kinds, Manufacturers are encouraged to make MUD <xref target="RFC8520"/> files available.
Care needs to be taken 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>The HTTPS connections that the Pledge makes to the Cloud Registrar, and any subsequent Registrars that it may be redirected to, MUST be validated using the Implicit Trust Anchor database as described in <xref section="3.6.1" sectionFormat="comma" target="RFC7030"/>. Manufacturers MUST include all necessary trust anchors in a Pledge's Implicit Trust Anchor database so that all expected Registrars can be validated.</t>
        <t>Registars may use public (WebPKI) or private PKI Trust Anchors. While there is no requirement that Registrar's certificates are part of any public (WebPKI) Trust Anchor lists, it may be simpler and cheaper for Registrars to use these easily obtained certificates, rather than use a private PKI. It is recommended for Manufacturers to work with their VARs to determine the subset of publicly trusted (Web) PKI Trust Anchors and / or private PKI Trust Anchors that would satisfy all their VARs, and to ship only that minimal set in the Implicit Trust Anchor database.</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>Provisional TLS connections are not immediately validated.
A provisional TLS connection can be intercepted by an attacker, as unlike in <xref target="BRSKI"/>, this connection crosses the Internet.
There can be IP address hijacks, possibly DNS attacks that could send the Pledge to the wrong place.
Such a diversion would be detected when the resulting Voucher can not be validated.</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 and only 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>If the Pledge were to accept a 307 Redirect from a malicious entity, then it could be directed to connect to some other Registrar-like entity.
This could be used to turn the Pledge into part of a distributed denial of service (DDoS) attack.
As the Pledge will send it's details in the Voucher Request that it does send, there is also a possible disclosure of the Pledge's identifiable private information.</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 <xref target="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>
      <!--
    LocalWords:  cryptographic URI onboarding Onboarding bcp MASA OEM TLS
    LocalWords:  OEMs MGCP DHCP TFTP VARs LDevID AcpNodeName VAR's http VR
    LocalWords:  multiplehttpredirects considerationsfor aasvg DNS
    LocalWords:  integrations routable
 -->

<!--
;; Local Variables:
;; ispell-check-comments: exclusive
;; ispell-local-dictionary: "american"
;; End:
-->

</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="28" month="June" 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.  RFC9148 is derived from
   RFC7030, and it is also updated.

   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-23"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </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="22" month="July" 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-11"/>
        </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="IDEVID" target="https://1.ieee802.org/security/802-1ar/">
          <front>
            <title>IEEE 802.1AR Secure Device Identifier</title>
            <author>
              <organization>IEEE Standard</organization>
            </author>
            <date year="2018"/>
          </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="RFC2131">
          <front>
            <title>Dynamic Host Configuration Protocol</title>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>The Dynamic Host Configuration Protocol (DHCP) provides a framework for passing configuration information to hosts on a TCPIP network. DHCP is based on the Bootstrap Protocol (BOOTP), adding the capability of automatic allocation of reusable network addresses and additional configuration options. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2131"/>
          <seriesInfo name="DOI" value="10.17487/RFC2131"/>
        </reference>
        <reference anchor="RFC8914">
          <front>
            <title>Extended DNS Errors</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Hunt" initials="E." surname="Hunt"/>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <author fullname="D. Lawrence" initials="D." surname="Lawrence"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8914"/>
          <seriesInfo name="DOI" value="10.17487/RFC8914"/>
        </reference>
        <reference anchor="RFC2132">
          <front>
            <title>DHCP Options and BOOTP Vendor Extensions</title>
            <author fullname="S. Alexander" initials="S." surname="Alexander"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>This document specifies the current set of DHCP options. Future options will be specified in separate RFCs. The current list of valid options is also available in ftp://ftp.isi.edu/in-notes/iana/assignments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2132"/>
          <seriesInfo name="DOI" value="10.17487/RFC2132"/>
        </reference>
        <reference anchor="RFC5859">
          <front>
            <title>TFTP Server Address Option for DHCPv4</title>
            <author fullname="R. Johnson" initials="R." surname="Johnson"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This memo documents existing usage for the "TFTP Server Address" option. The option number currently in use is 150. This memo documents the current usage of the option in agreement with RFC 3942, which declares that any pre-existing usages of option numbers in the range 128-223 should be documented, and the Dynamic Host Configuration working group will try to officially assign those numbers to those options. The option is defined for DHCPv4 and works only with IPv4 addresses. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5859"/>
          <seriesInfo name="DOI" value="10.17487/RFC5859"/>
        </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="RFC7231">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7231"/>
          <seriesInfo name="DOI" value="10.17487/RFC7231"/>
        </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="RFC6144">
          <front>
            <title>Framework for IPv4/IPv6 Translation</title>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="X. Li" initials="X." surname="Li"/>
            <author fullname="C. Bao" initials="C." surname="Bao"/>
            <author fullname="K. Yin" initials="K." surname="Yin"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This note describes a framework for IPv4/IPv6 translation. This is in the context of replacing Network Address Translation - Protocol Translation (NAT-PT), which was deprecated by RFC 4966, and to enable networks to have IPv4 and IPv6 coexist in a somewhat rational manner while transitioning to an IPv6 network. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6144"/>
          <seriesInfo name="DOI" value="10.17487/RFC6144"/>
        </reference>
        <reference anchor="RFC7084">
          <front>
            <title>Basic Requirements for IPv6 Customer Edge Routers</title>
            <author fullname="H. Singh" initials="H." surname="Singh"/>
            <author fullname="W. Beebee" initials="W." surname="Beebee"/>
            <author fullname="C. Donley" initials="C." surname="Donley"/>
            <author fullname="B. Stark" initials="B." surname="Stark"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document specifies requirements for an IPv6 Customer Edge (CE) router. Specifically, the current version of this document focuses on the basic provisioning of an IPv6 CE router and the provisioning of IPv6 hosts attached to it. The document also covers IP transition technologies. Two transition technologies in RFC 5969's IPv6 Rapid Deployment on IPv4 Infrastructures (6rd) and RFC 6333's Dual-Stack Lite (DS-Lite) are covered in the document. The document obsoletes RFC 6204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7084"/>
          <seriesInfo name="DOI" value="10.17487/RFC7084"/>
        </reference>
        <reference anchor="RFC6092">
          <front>
            <title>Recommended Simple Security Capabilities in Customer Premises Equipment (CPE) for Providing Residential IPv6 Internet Service</title>
            <author fullname="J. Woodyatt" initials="J." role="editor" surname="Woodyatt"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document identifies a set of recommendations for the makers of devices and describes how to provide for "simple security" capabilities at the perimeter of local-area IPv6 networks in Internet-enabled homes and small offices. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6092"/>
          <seriesInfo name="DOI" value="10.17487/RFC6092"/>
        </reference>
        <reference anchor="RFC9019">
          <front>
            <title>A Firmware Update Architecture for Internet of Things</title>
            <author fullname="B. Moran" initials="B." surname="Moran"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="M. Meriac" initials="M." surname="Meriac"/>
            <date month="April" year="2021"/>
            <abstract>
              <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
              <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9019"/>
          <seriesInfo name="DOI" value="10.17487/RFC9019"/>
        </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:
H4sIAAAAAAAAA+192XbcyJXgO74CZj0U2ZWZIqmlSmy33TTFcrEtiRqSKo2P
x8eFzESSsJBAGkCSypbU3zLfMl82d424gYWLqtruWXSOy1ICiLgRcePuy3g8
jpqsydODeOt3ZdnUTZWsVllxGZ+ly7JJ4/N0tq7S+A/pJj4pFlUCL6xnDf60
/buz8z+c7MRHebmew+uXGX5cbUXJdFql1wcxPR8fvTx9+yKal7MiWcIs8ypZ
NOMsbRbjpMiWyXha1e+z8QwHGe99F82SJr0sq81BXDfzKFtVBzHMWDf7u7vP
d/ej9WoOL9QH8XfPnz+NorpJivlfkrwsYOhNWker7CD+U1PORnFdVk2VLmr4
22aJf/lzFCXr5qqsDqJ4HMXwJytgoNNJ/H2VpTn9wjCe3qSF+bGsLg/io6ye
lfTPdJlk+UFcLvCFf53h75NZuQwGPZvE51fp+6vxH9d1ujBDn2WLJGk6D2WK
tEjsFBW9PKknuF3/eok/dmZ6NYExZ1dJNa/Lwkz0Cn9M8/ZDmugcNi3Nl0kR
n5eL5iaBw3xXVu9rO/dyVn1D09b68mSWRFFRVsukya5T2MT47PujZ7vPnsGA
r0/4n3AqTw7iw6M38E86/gP59ak8f/zs2TQDsE/GLyYGCarFTB7Be+5ZnixX
NT77dvfx7nhWV0nTVLXM/Hxvb/cgirJi0QLp+dP9pwc6TAXDNPtNdTlukg9l
US43Y1jKepEQDlcw/QwwgsZ89+b8gHZA78O7bPx9Fr+p4BrMmnQOV6FZr+Jt
eG9ni15EVDyI/w3GS6pNvL+7/5S/T6rLtDmIr5pmVR88enRzczO5ycaLbAK7
/2iOCHMNU9NPj+i/45VOMq5xEhrGIWvsDk5AOszzDABPEYqTF8c/nrw46J14
D7YxTb/b3aeJa7zJWbN5BD+M95LqkV3syfHxcYxv7h2e6Z1/kV5nszQ+madF
ky2ytOqANWaw6ONzvIqAaWZn9nfhQkfXabGms7msyvXqIKYTh38yntG//hWP
G4HEt7Lmaj2VB+Oby0eGQETReDyOkykSmlkTRQ+jWLUjWfN0kRXw76vyJm7K
uCymJUAeJ/CAlkxbleYbuGLwGO5JuUoB+coKkAd+gv8BOmTB4JPopImTul4v
YdzmCu54c5UCGFkd5+UsyeMibW7gkrU+iwF78U2dGaZTBJlEp4V+Vcc3sC3l
uqGhR37somyucO0rWB4cE35/leYrtyQ/9CSKLq7gC6DEACO8mn5o0mJe8z2F
Rc7dtkzTq+Q6A8AQuGmwxzxWTU/m6SovNzgWgEcAFaUstrVImDa5huNOpnkK
9Hg9u4Ktgpdgx6/KZQpYFFd8eOViQbCGoAbn5TdrBicDJBRGuUnzfMxvzeMt
gCAf48Bb8TIF8ldk9RJ3Bh7zjtznOG8DoYxnJXw3a3Tq90V5U7Q54Yg2Fc4v
vkk2tNybK6DGBIEuYZlsYLth9fOsYirTlDdIr+8LZ3wB77UmjoGPwE7XDpU2
sK/3HJCBRrB4kDgFHjvNs/qKtgHHQXZM+HiP4fgqzMuUUBWOfrUCviw45w6n
7my38Hmk58Tq9epOmAQss/k8T6PoK7jiTVXOYbIMONyDCcLHjzTs58+ONNSr
dIbErkZCVwJjgSXhjjBJgHtWXmc1zIXj424U5RwJC58sclJEPvjmDfznMq13
eKNm1WbVlJcAGLwXv083+DkOXmVwW7Z5S2NhRjTfLK2Q6KI4BIMAxslxIPlF
ejxzkAEqLjKi0TAUiAfLdYFPAUY5JCQWcZ0t4f5VOZ5rVRKIBLpctfCWwyrh
ktd0b/O61DXxl3g+cAwnBZ8iESNZbgz4gOy4Nq/G042FCkYnqBLBAY+00xTE
uEt8AVZLyHpTAOCCuTwBQusmc1iFtw/uVhlnQIn4q5ssz/FiAV0qYsPx50Cn
i7pJk/kILyTDkDW0UiLec0e8HcUGcPzFlblh0wu4r7VAXd8CM1MBpI+wNW7U
sVwFmNDfUn8hiLYBhpb5dRpfpjBoBjJtURZjnkHQdEbSXjj717XfVLxXpbt1
5lAAQsFQx1mYLBeyhGlSI37NCA8EZj5qD2QEo/AOMgFC9K/Sv62BlMH2ypWg
XeVNNfvhjx0Qc5VvdENlJXBIcDdgWiUMiN4wOnNQvCFCIfB9d4nh5XPZF0DY
zQgPVrmcvDRCakB3Y3/yLVx75LdpPauyaer+wkQ+UXCRFvaS+7dnJ7iPSYf8
ZvgjM0L/Ixwo4irOI+cN+1vSywZXkAYSWyVKCsM4JAzoaFbM8vU87U6j+/Ue
WR2Rp2KsQ4hMgDcM3qiBPzYZIo/c7q3D1SpXynHq3t0aIa9GEFfralXWBGOz
WfEe8wYiwADLDJYkdIjA1Uu4RlQCMmBYN6wNLytwDTgdeAqvTKLvcTsK1Olm
yIfi85M3cG6/BR7weP/ZHpzW6goUPSD+l1dNDCIKrn+WZ4jPhlwiSDqpkBoc
CGjah80gn/kTYcefiVgBmcwWRKGZv8F+iEiHCJ6nC7g+a7pCcI4rWotBwQvg
90tiCvCCG4A+Vd5CR9tYOJiutfEIaQBwBNzzKZxhmhZOUCAy6dFm6P6PCMMa
wuEMbiLu2HUJFx1uuHyjI+D6BK34uOclcnUnOcjQx4aGAA4rc72okqImIvPx
46/gwFBjQ656fH4BPDWtSJ4Ffv1VfJFWy6wo8/JyE9GqgRvivYY7uvXq7fkF
4Bv9f/z6lP5+dvzf3p6cHb/Av5//cPjypftLJG+c/3D69uUL/zf/5dHpq1fH
r1/wx/BrHPwUbb06/OMWCzxbp28uTk5fH77c6pwNHR3jFKJrBaI2sd46UoJB
5/m7ozf/63/uPZH17+/tPYf18z++2/v2CfwDeRHPVhZwc/ifsLebCNhuinQD
0ARuzCxZZQ3wXbp49RWSGuQek+jXv81BxIrHz377m6iDyLUcG0AI7OMFHd5I
TndkMeLV4fkhg/GjYMKiKpdGFMJHHz96bZ0Iaws3D6IDkjxBLE7WeWOQlhHJ
kDG8N0Qr9QmS0JhJaICDbpYfQQftzISUbHg2vmhMZgDFkxxRfY6UBRUjoG9V
vA3Dovx4dH6GYx4ZinGeXRYsMP5tDfJuFL344egNvAMsO62Iu+IP10+EGu3v
PUZqBFeLfn4mP3/3fO8J7RUgPc7woKuCEhUo3KjKH8SHQB2LjAip0ksirM0m
IHRJHQco+PEjWwM+f46il34w4RFfPBJ9zQjljp1pA2t9IftaXW1q4Q04r0qp
oYCJGIeqC7wvGtA8W8Be414RNpoxlfLwnLBPr4wBRwFCrLdyXoWgEAtorqpy
fSm6c3Ct+b7IbhAiAQMjgA1OMpAhy0NyWGUgqsK+oLizovGC2bdPj1/tjOLp
Gokq8ANUDEoQdNIPIPA0a2YqJKDMynU+xx1ooy3oUw5tiY4D862zKUrw1ymK
BvUGBNklM9FL0sMmgMELJu3+OqOqTgDMeci5HPWKGRvQdwv5iG4fnhisADYb
/ot7fKrrPXbrtccwiekUcIlJIZtppe7QDnGKJ6onx+JmJgpvdQmi5b8zy6RR
ruCYQPAAkbOWYYr0RnF5m8QSOqgdAUH1apIRSKgblKa8vO7kKpTz4NIqjPGL
NE8v0ZYVADuXX0USFQwCsQ7Y8swgMI/hljFFBk4zJKLpK9l6BHuVXKZml8hc
QMQIdgKW1hKNivjkIialG9RC+IlVVBbzgUrW7/Uo/Er67q/bBrlqRZrOa2uD
Cq8uiVNuxA6Fvp0quw0hXHb/wost20lCUMUCt4jKsNDWZMokvfEJpDDYhCor
0YqgNEMMEwoa/LMGjIKJuxiGlqdrlXkYe9wJ1lcZE6xp+UGVbdb7VuWNbI9R
EzPUV96oiQBuy8XLcybB3g6lViovNXqd5Olkj+WEKiU+JqtxJhi0SngTBI+v
IDl9Pwl0atI5WxRaB/ACMhsg2P4gpBC2XqVopCCADCIUN8FRKztB3evkDS72
HDRGBOaEOBjBhTb0clbm4eK9YB9FQHTw2x+JAh4SBTwTxg3Yf0hEidSJctHQ
LYIncNVWbPup+cSWSHuAYAFhJUqO0CZCd+G2gjK9RnBGqpEXMc4gsj2+VgJt
9u+x1QXOHPYGlKWq7oMErwy+6DbVw+TvNxMfp7MDnAWtq63w/FiiotJWclB7
WawLOuIkR1KTiBAF///q90etp47rAKokwOJna1BozH0ZsfiJk1gFbULS+VvQ
NY6A1NZt+dLbxcg4NCfzGRmvQd+5AmDHObClnOyxMxwALXWxs8fF11lXTyYu
06IlTGbvtisKsbPma6SxXbOSMoBJ/MozwZqEejqzuaKjI3NjgFUckpUOM4YJ
2PTif0Oh7f5LBKEQrkaF9OXei+y3m47876IED62ZUYHe5jeLu4VSVtkCLa5m
sPu3Mp3/jL0EyjaW0UkEZgaA46UfiJ1ekogNe2W0cGfPkA0kQU+M8ovskjZO
mKi6GuzVEoun03WDCZ498zL+/ufPo3jv6W68ffH9xZtHP1xcvBFVlq1uO/Lq
0++ePsdX8az39uF1vLDn9KK+8vgxkjm1ibHPMrzvyRQlVPEuzMs4McYYb7iZ
RIdu+Uy6vW/KcV2yEwckCWhdnbo13pDESYZdZLHyNu4h45EaBJFjXeJFPqdd
dBPjPStKpnzqvjKWy0CRCETuX0XRO6cx9H9OPi14gl8TBQVeL04fBNAZHLOC
qX29RGEAyXbtHUsNCBQIKepu+P+qcZCzacQbtwQFa7leAp4BYWvEyJNcJkiO
cbqsGvDYoQHZEFa2ibIXi3xXCGclrjmQ4IAkk8UHFsqe0+zfmWHw7obYp9sR
eAz5Wliya7hoqNIomfAqhqhoSSCtC9uDE10vp2yu1guzDWNO1/l7cjkkvfxY
FWkEKhgVVfpaUFzHI7JDgi9w1bk3pcMQTJxwl9B0TyecNxk6RUIbPs+EbNew
bB0feSz5N0gKySwWpGysyWr8Ee9mlc5K9qzR9acpYdi6TbQnLSuyvMfw8CBi
DvQsXQRHJ+bralk9EDgYDBqGXBZsJMVF8THyGI52sn5YX6mCGDgJVXeVoUGM
bgvKgEsdzoPCe4HENUGZiIiFJULBcQpF5+tEz/lCCnay9umUTyQzqv5tJ7FH
Edy5YOfrJHf23x57jwzMjk18gntK2ymgysTtzY2308nlRM3Gb37330EjfHeV
stZ3E6dL4l2q4yRKdvWymxvsTxzFf2E6a5Bm42RWgQ6OLlpnutJxJ9E7Pkj/
E2im60uHaXK6JHquK7iZMF7JBkB9puJYj4DO5hxrl3GuP2B4Rpvx2oAY7a9Y
0GvYfXXsL8XXvJ2wU3xQtAMK+9d1m9wTqsO5O+DqBxAmYjZKnRKkfWxZpusn
Fhr+Fb4mRqvIrg5KOwIenyNxQuFgvHSxgA8QA3IMhLG4wdI0jwGayHurZQM4
KerkOdurUN+OrJtRSDkzCr574nBMifLcz69+h3SKtxVmCf2baUO28lQuDrvk
1itm6GjYhL+y5IN3Sa25YsQEnlrXibPso547SzNUdJ1226F7fU4IdL6ZpTug
fuH1txbnrJQS2OJtCM5WfNgBVQk0LlNmCvzhsnQ2H/D5O5FRbhpu5NuzE0E6
tc2NiDML1RwFA5AD0OhZov3FZKnn6ezjwGimJIMNjIjTlwWxnaJB6ykhMbPo
kfMymuWSnUTUT6AaNVBlXQbLSyB8gJ44VQmb3qDAAxt38RVofQ9W03D3/fXo
2naFS3ijBBAQa0c2o28HW0tGFyfTkaXICXNOt3RD9gYbqeQ75+AqH8bh/Ow7
IzHctK1dePqtlQ5eCuvU9F44N5S3/90xlCN0Pf681gDOcOGjENi0YY7AyrBd
ABitA2kbY1DXuQscQ56q/ItCKtSTw8YUPXQbusXnNa3QfORYaMc10AqUkEkA
psPahrMNoUkW8tavW2F1QRTKfcyYARDWZao6mvFg4fvh/NXXJiiidSgyO3s2
gzgfXDoZ2gITGu1AElMAiJMnPa0x5xGeRRE7uc0cB+sgChI/dvvBKjg7CPh7
4P6BiZyFIbNKDciLjA2PLSisrDAG8bXs2gEUuffPrNHkQTTHSK+3UR2PbxKC
Y+28zl6ySRtnCWnLy7cZTQCGjhFkgDDUa7LSipf9livLqOCxcl2rdbWXL6vb
nmZQytN2y3qrhlj4XXg07IJql86Vf34R6arangDROvBo8TPrKwyiwL4P+GIR
bjux/P7dM5scnotkDcySFRkmjFrQu//9YTNtV5LzHram9fRhiOw4Jap1GjKv
87q3zwFZsp6sx4H2W07FMlEZQRwGUvJqLeI8HmFWzBVLWgs0u6x0ns0KgSkf
ZUWJmOTbMk0LENqb2ptWiGl6BzRIdlk5ZzVVbC+8eS6il2RvNdfpdUVzeXQ4
n2dsl5ZoLARFDU8ED/KEMTlvSTzUGPUxulWvQZ5Bo4aa410ArTf5+tk4wCbF
iB4mh0tYI0pciwS0OCfTixFJsFI+zTgikGW5toSKUtYyTUS9ooXnOetSMIJa
bjTsDe+lxhKJZ9vvExmp04J23h+PurucegTDMxDGxyUm9eC62RBR9lXgxXQx
64dHb+I/SU7Gnz0PcKFj8MZs9bqcp6+TJaDMOTAYjvqA971L6tlkf7LvTZcY
hRHeUHPg7aV8KdeQu7APQzO7iA+r2VWGGRIg4PFBGpdDYh56G9qQX4LmA0Vh
jcfb6JQ4xhh4pQt/oR9gDI7MgAtUgszgBhmFJF18giLatG856MbsQhR6IGQT
X11kVd24YUc9cRhf4JUY9UIxJGf2u1jLas5igvOe9YhPbcrI9paQL6s42p1m
1DcG63AUZ4XxlmL9ODokSOsaXiLTEfBAHLx9A/riNm45ajiI//iP/4iTpL6+
jD79ehz8OX33+vhsPPznN5/iOH51+Prt94dHF2/Pjs+iKD4txqS2tP7QUUTf
6JfftJ8P//nGTPhN9EmP7dMtcLX+fFK9Ef586oXh8e63Djn6YPhkTudTxL88
7E+4Coakf5zgzXuMY39xp8IoheP37EZM8W8eBvzz49kYVe/t1zud9dLv/vlO
Dwz3We/Qn08Pe/0bXQPeiHANt3/jRgd8jz4exF/pJeD8r3/ZsgT24OH2gK3P
EWoxwLCy2X1oqmYwJeSb8G4IspSQ3HONke9OmJOEhK7TgYJJ7ghO4mAskPyy
fG7DPFgYJHGkZeSq1jxtMMqhd99ovKD81GzibcQqDtNKqoo8OwsOvUXGjMIR
w66UDVmrxvT2UWuVGAlZM8sVQMDoiRt5onwq2Hblg4i9CbPHtqCvE7Xp8CpP
QE4Ra1zbtAg3YocFLopOBa71k78jP9GYP7Vvzk+RUuQuk2st5zHFUXsEIbOt
XwIZmDwD6926UnauaKHdlMIA0w0NXC6zhkN5+Td2jC6T9xKJlSWXVYKeBpBX
1/XG8G2QU8tiPsS4v9D/3c+32xolGqnSfOG8tMMR4V2W258tJiyXfNJmhBvO
OOBAsdKpgpwSoqK+AO+8HAqkGqcn8YlYODEmPg/kJr0LmKeGK8CYaOenMDqj
E20ZfPvoQdJC0s4SuL+4oILg//PiAkVEo68EGQNiryCI//OLiAt+4i8agT5h
NQXJwD8Iiq6w8QsITvd4pyMUwanipRGoBkSGT6oN3/LOf6pg85tfTrBBnvez
BBtjdETR5qRxqZAShO0Tt3ssP06abtNjDlVofxHmLlBkhNBBIMDwz687EQoc
CXF7LlCP2Qqd7xIrSzJFVs/WNQV4riuCjAjeEsMwQOfDKgJOaXQy3K+B8dWg
qkteFOzCGF8c65saxmUjgvDLlRgCalylT6cMLG2Wsnvm4HgCoAal4lCoWlJJ
untLliG+vm4QRObUlKJFSUxBvhXBGFoOak0v78MLusgU3YHbnZeXkgxQpwAK
m0U5AIXlPMRAjcpUPyIAAX+pKJvLxU0Qm6GwCuSpueYjsDCn8ltodxCxyGdM
mK0mDt2Hk/DCPLf8mSQ5dACeNJJsapBWHg/gEs1CAwLImmLGY2Bog5dVotCa
CW9seZ6xFWM5jwwkMjE/r8qs8FaUntiVd4z1OAfzc29kd4bGlvnB2r/FDpqC
sjGfe91Ct8Tb33/yw42DEIvxusp/8mDzUWNEP9VAUCQzwIQBGkkVhIGEIVni
+ZlEv0NLk709VRrKy2xKi3N0K/VkEhJQ7RhJPCQTDyHpFi79Mkhb9gkWB4HH
PXCJt+KPRCplZJDYPDa3Od9eTf4puJpwB2Yw58kF6oug8JHCxikjmrWh+h/t
MAvrNsxAIe1Qj3PJNKSv0BpJNFujsJmIaP7BxmX2kvAI0nSdenmWvdiFCS7b
uPhUctavykZyXc1543I2XntFBypOEgDQSqRjHLwlYe1Cw89cHRC+H8ev8Kpg
iJIPOXdPK9rJVnyQSRJtmZIxZMqEeeEO08JxAKQxM7wamm8kdm0KXKfMYfJF
waYQ6+KweEqcIJ+7SPYSFYDFhkBtqR2b0uD6r+uwBIgJxtEN4MIU5s6Qckjl
iwAfBuMOBRKZj+MIOeAII9FqCsQs0txGsknAYM2f2Dl7eLGJuO1l/DKZiXpq
jcCJnukHULl9coQONVZNShyn8Wu52UcS6HUNmCncDFPt2aeQ9Sj6eZUm8w2H
c8kYMzMGIBGWfOEw6kLFil6LduACW6IXUx2lgEaAxBXWDGhHI8PsFEVcoYun
xgidF6/PJZ56RNFsJhi5Tilek3nUbVAILyR6Q1VWkJXOyGid1VeEliPGPSbv
cBYNTXKC6Zyw3hPM3xSYib+W6iN6fXjx5In8gJ9SWBp8cX569IdzSicnbm/3
wtEn8nzKhst2BmmFuqRODIEPzTBiUlbTgFeYJlxwZHSQgN4j3eDtpk3RW72x
EeUkR7TTGi9LOXHKRbxBb1bkowknlKyCv+Z4ukYica4/Lk5lqgwYJqZBuR8/
vntzDsKk8Uli5pAWJxmx1UFxCMQ8cVMaxPKBJCMXgyYVPIreYx35MguCLgtY
xk2CccRlpSdpQtGMXa5lJSNLTlx5yZDMU/mdxwH3VkayaccnGuR2FMjUUdRj
4HuOXjiThdO+3pQyT9dGfJs2gyO6Jdk53j46P9uJD1WoqdvCn0rlqUsno2BC
uZt9FRgmzk7mnHy/lFerE+TMnLXWbF4D7J1mxv3J08ljTdywsQ9UMIQozvnZ
LRvT0bB+qVX3WAXNuuySWxP4E//iRfmJJtHrsulGhlDy2H1HE/xOiJtEvWcE
qzGQ29N5psvQchCM3zJrNDxrpw7XNJ0lJHP0eWfDXCpn0UdXuVTMsGZDVftV
btG09Dje7rOtaqwEKINAJvzKd6KThUnwrCqQu0Asclub3LGxnSU2VwOeBNq8
Kl2pdfXJ7hMfOjwr56mwMHMqrw7/yClVYbAgBQ9wPEpAG6ecW++CdsmB4xIX
NN5AtC1clq4FX+LV1iQ5I+W00UX3BqtJJSTDmq7P19O/oiyGLFv+ephjVSEq
Fhlj1IMPM7Z6ogmS0DQFD7SqQY5/YfCk1PB50IxGbvJhf6wH9PrfTfEmYxHh
ahNhup7g3CzHmiIYhqVmjTZGCRL4DBMXRDvni5fZTKfecRM9nBmFDAl2OKZg
ttKt0Wv9tNrabPIEON8d1T9RdqACPZmr02QgQPQYWmYjOQyLTWu/xWriP3Ek
T1bRxWQHb6hGGRQktQ9J5dToKPgZV/lwCKIZgWoiaSdqUeCoBoGj94rwxtd/
cktBArMxCWdimC8I6fzd68UtLfWD3EcVynIRRjU5fMNoVdWL7cLDkKl5mi67
PtRgPRSnVeiGMCuoOVhMrskik/gydzl9ecKbhPFLz5TTfCp4DMJ+uUr+tk7d
KBpXZ/mhD3AMzhMktT8evv491w2rNWxSHaCcpeDUvI9f+Zyszyi22aI5XDQs
kzwcNONJYqManDzGHcQ/ebuY+E9vt0H5eoMy6A2nOgnGZnUrW0yztix7j77y
ifmnWqhKQgdr4cJA2nPJQAlirtScqyjCVUCptlGrZlaD7lTyJk+ATOl3Y4kH
wzI6dgrAqBlyBTg9jJPD4iSSxmI853WPiN7rPO2XGUOXd7gjTk4/J8bUdnx3
3c0czNxmui801SCKNJTPlw91bF+qytUPKSs3EKfaV12uHX+JYgx+pSroZgUA
scmtSK8ZIdPlqgkj54dmpHvIaVWcYSFqZDcTobMSkTg0JFCMebhuROgBs+hJ
UCdvQV96Y8VQ7B0Hs27Q+lAj9fByifoxlDJoEk4rmQXmcVVRMfiWfcfwtoSx
CzzjzsxYmuM4qJ36gtcLFHSG6ZCibfcXJgx4CYlwVOgWqCVaNmawjAsKHz/k
kh3zBCZCjWO7TtOO+sfJvKZwaO9WueDhi9bMrvwIRtWumzUdc1iHtK8OSa/J
5m2RZxJe0aqTEuQRiuZ8W5mU7g6hhmBhbU9wLwAjLYtJQ+Kp0yuPWkSkjqXW
nEbtqt4nyLzFJOV//AX57xZN7znK9vlrWM2fpHz6n3eYeLOVCd/cm+xj0j0P
jBgM78dUKquYo3lJJHl+9bGBWWEiMwAKN9m8DUkIBU+dSsLSRtOS00B6kCV5
qwe96i/exKdlmLIrt+x+0oP/WPfGV1UhyckBA+zh/Zj5l7XrMJX8tzKjAjMf
tIaXRuNmjiiY4zUHSLYbhQSrapkAsOyyQEMH7XsgfNRczqtueuKACX5Xj1ZK
OWBIOukGrzEZsWJreGg1JEybpmHBLDrhVZXmZYLs3RboMcUoNaafq/NYJcyV
fO5E+yCuuWuiLq/whJgGtE5NVB6aKqOSnXzQqzWMNIvfpdP4DXC6oJQQv0Ny
EZblh0N+8fp8DNKeMQ2SxxKILVo2vaZNeKLK+MTHjmnOH8qdSCIkwQe4RE2A
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

-->

</rfc>
