<?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.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-authz-05" category="std" consensus="true" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="ELA">Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE (ELA)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-05"/>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Vučinić" fullname="Mališa Vučinić">
      <organization>INRIA</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>malisa.vucinic@inria.fr</email>
      </address>
    </author>
    <author initials="G." surname="Fedrecheski" fullname="Geovane Fedrecheski">
      <organization>INRIA</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>geovane.fedrecheski@inria.fr</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 112?>

<t>Ephemeral Diffie-Hellman Over COSE (EDHOC) is a lightweight authenticated key exchange protocol intended for use in constrained scenarios.
This document specifies Lightweight Authorization using EDHOC (ELA).
The procedure allows authorizing enrollment of new devices using the extension point defined in EDHOC.
ELA is applicable to zero-touch onboarding of new devices to a constrained network leveraging trust anchors installed at manufacture time.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lake-wg.github.io/authz/draft-ietf-lake-authz.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lake-authz/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Lightweight Authenticated Key Exchange Working Group mailing list (<eref target="mailto:lake@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/lake/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/lake/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lake-wg/authz"/>.</t>
    </note>
  </front>
  <middle>
    <?line 119?>

<section anchor="intro">
      <name>Introduction</name>
      <t>For constrained IoT deployments <xref target="RFC7228"/> the overhead and processing contributed by security protocols may be significant, which motivates the specification of lightweight protocols that are optimizing, in particular, message overhead (see <xref target="I-D.ietf-lake-reqs"/>).
This document describes Lightweight Authorization using EDHOC (ELA), a procedure for augmenting the lightweight authenticated Diffie-Hellman key exchange EDHOC <xref target="RFC9528"/> with third party-assisted authorization.</t>
      <t>ELA involves a device, a domain authenticator, and an enrollment server.
The device and domain authenticator perform mutual authentication and authorization, assisted by the enrollment server that provides relevant authorization information to the device (a "voucher") and to the authenticator. The high-level model is similar to BRSKI <xref target="RFC8995"/>.</t>
      <t>In this document, we consider the target interaction for which authorization is needed to be "enrollment", for example joining a network for the first time (e.g., <xref target="RFC9031"/>), but it can be applied to authorize other target interactions.</t>
      <t>The enrollment server may represent the manufacturer of the device, or some other party with information about the device from which a trust anchor has been pre-provisioned into the device.
The (domain) authenticator may represent the service provider or some other party controlling access to the network in which the device is enrolling.</t>
      <t>ELA assumes that authentication between device and authenticator is performed with EDHOC <xref target="RFC9528"/>, and defines the integration of a lightweight authorization procedure using the External Authorization Data (EAD) fields defined in EDHOC.</t>
      <t>ELA enables a low message count by performing authorization and enrollment in parallel with authentication, instead of in sequence, which is common for network access.
It further reuses protocol elements from EDHOC, leading to reduced message sizes on constrained links.</t>
      <t>This protocol is applicable to a wide variety of settings, and can be mapped to different authorization architectures.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to have an understanding of CBOR <xref target="RFC8949"/>, CDDL <xref target="RFC8610"/>, and EDHOC <xref target="RFC9528"/>.
Appendix C.1 of <xref target="RFC9528"/> contains some basic info about CBOR.</t>
      </section>
    </section>
    <section anchor="outline">
      <name>Protocol Outline</name>
      <t>The goal of ELA is to enable a (potentially constrained) device (U) to enroll into a domain over a constrained link.
The device authenticates and enforces authorization of the (non-constrained) domain authenticator (V) with the help of a voucher conveying authorization information.
The voucher has a similar role as in <xref target="RFC8366"/> but should be considerably more compact.
The domain authenticator, in turn, authenticates the device and authorizes its enrollment into the domain.</t>
      <t>The procedure is assisted by a (non-constrained) enrollment server (W) located in a non-constrained network behind the domain authenticator, e.g., on the Internet, providing information to the device (conveyed in the voucher) and to the domain authenticator as part of the protocol.</t>
      <t>The objective of this document is to specify such a protocol that is lightweight over the constrained link, by reusing elements of EDHOC <xref target="RFC9528"/> and by shifting message overhead to the non-constrained side of the network.
See illustration in <xref target="fig-overview"/>.</t>
      <t>Note the cardinality of the involved parties. It is expected that the domain authenticator needs to handle a large unspecified number of devices, but for a given device type or manufacturer it is expected that one or a few nodes host enrollment servers.</t>
      <figure anchor="fig-overview">
        <name>Overview of the message flow. EDHOC is used on the constrained link between U and V. Voucher Info and Voucher are sent in EDHOC External Authorization Data (EAD). The link between V and W is not constrained.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="560" viewBox="0 0 560 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
              <path d="M 96,64 L 96,160" fill="none" stroke="black"/>
              <path d="M 136,104 L 136,160" fill="none" stroke="black"/>
              <path d="M 152,64 L 152,104" fill="none" stroke="black"/>
              <path d="M 200,64 L 200,160" fill="none" stroke="black"/>
              <path d="M 328,64 L 328,160" fill="none" stroke="black"/>
              <path d="M 424,64 L 424,160" fill="none" stroke="black"/>
              <path d="M 552,64 L 552,160" fill="none" stroke="black"/>
              <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 200,64 L 328,64" fill="none" stroke="black"/>
              <path d="M 424,64 L 552,64" fill="none" stroke="black"/>
              <path d="M 96,96 L 144,96" fill="none" stroke="black"/>
              <path d="M 160,96 L 192,96" fill="none" stroke="black"/>
              <path d="M 328,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 104,112 L 128,112" fill="none" stroke="black"/>
              <path d="M 144,112 L 200,112" fill="none" stroke="black"/>
              <path d="M 336,112 L 424,112" fill="none" stroke="black"/>
              <path d="M 96,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 96,160" fill="none" stroke="black"/>
              <path d="M 200,160 L 328,160" fill="none" stroke="black"/>
              <path d="M 424,160 L 552,160" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6" fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="344,112 332,106.4 332,117.6" fill="black" transform="rotate(180,336,112)"/>
              <polygon class="arrowhead" points="200,128 188,122.4 188,133.6" fill="black" transform="rotate(0,192,128)"/>
              <polygon class="arrowhead" points="200,96 188,90.4 188,101.6" fill="black" transform="rotate(0,192,96)"/>
              <polygon class="arrowhead" points="112,112 100,106.4 100,117.6" fill="black" transform="rotate(180,104,112)"/>
              <circle cx="136" cy="112" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="152" cy="96" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="160" y="36">Voucher</text>
                <text x="148" y="52">Info</text>
                <text x="376" y="68">Voucher</text>
                <text x="376" y="84">Request</text>
                <text x="52" y="100">Device</text>
                <text x="260" y="100">Domain</text>
                <text x="492" y="100">Enrollment</text>
                <text x="264" y="116">Authenticator</text>
                <text x="492" y="116">Server</text>
                <text x="48" y="132">(U)</text>
                <text x="264" y="132">(V)</text>
                <text x="376" y="132">Voucher</text>
                <text x="488" y="132">(W)</text>
                <text x="380" y="148">Response</text>
                <text x="144" y="180">Voucher</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                Voucher
                Info
+----------+      |     +---------------+  Voucher  +---------------+
|          |      |     |               |  Request  |               |
|  Device  +------o---->|    Domain     +---------->|   Enrollment  |
|          |<---o-------+ Authenticator |<----------+     Server    |
|   (U)    +----+------>|      (V)      |  Voucher  |      (W)      |
|          |    |       |               |  Response |               |
+----------+    |       +---------------+           +---------------+
              Voucher
]]></artwork>
        </artset>
      </figure>
    </section>
    <section anchor="assumptions">
      <name>Assumptions</name>
      <t>The protocol is based on the following pre-existing relations between the device (U), the domain authenticator (V) and the enrollment server (W), see <xref target="fig-trust"/>.</t>
      <ul spacing="normal">
        <li>
          <t>U and W have an explicit relation: U is configured with a public key of W, see <xref target="device"/>.</t>
        </li>
        <li>
          <t>V and W have an implicit relation, e.g., based on web PKI with trusted CA certificates, see <xref target="domain-auth"/>.</t>
        </li>
        <li>
          <t>U and V need not have any previous relation. This protocol establishes a relation between U and V.</t>
        </li>
      </ul>
      <t>Each of the three parties can gain protected communication with the other two during the protocol.</t>
      <t>V may be able to access credentials over non-constrained networks, but U may be limited to constrained networks. Implementations wishing to leverage the zero-touch capabilities of this protocol are expected to support transmission of credentials from V to U by value during the EDHOC exchange, which will impact the message size depending on the type of credential used.</t>
      <figure anchor="fig-trust">
        <name>Overview of pre-existing relations.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="568" viewBox="0 0 568 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,96 L 8,192" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,96" fill="none" stroke="black"/>
              <path d="M 48,192 L 48,224" fill="none" stroke="black"/>
              <path d="M 96,96 L 96,192" fill="none" stroke="black"/>
              <path d="M 200,96 L 200,192" fill="none" stroke="black"/>
              <path d="M 264,192 L 264,224" fill="none" stroke="black"/>
              <path d="M 328,96 L 328,192" fill="none" stroke="black"/>
              <path d="M 432,96 L 432,192" fill="none" stroke="black"/>
              <path d="M 496,64 L 496,96" fill="none" stroke="black"/>
              <path d="M 496,192 L 496,224" fill="none" stroke="black"/>
              <path d="M 560,96 L 560,192" fill="none" stroke="black"/>
              <path d="M 64,64 L 480,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 96,96" fill="none" stroke="black"/>
              <path d="M 200,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 432,96 L 560,96" fill="none" stroke="black"/>
              <path d="M 8,192 L 96,192" fill="none" stroke="black"/>
              <path d="M 200,192 L 328,192" fill="none" stroke="black"/>
              <path d="M 432,192 L 560,192" fill="none" stroke="black"/>
              <path d="M 64,224 L 248,224" fill="none" stroke="black"/>
              <path d="M 280,224 L 480,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="488,224 476,218.4 476,229.6" fill="black" transform="rotate(0,480,224)"/>
              <polygon class="arrowhead" points="488,64 476,58.4 476,69.6" fill="black" transform="rotate(0,480,64)"/>
              <polygon class="arrowhead" points="288,224 276,218.4 276,229.6" fill="black" transform="rotate(180,280,224)"/>
              <polygon class="arrowhead" points="256,224 244,218.4 244,229.6" fill="black" transform="rotate(0,248,224)"/>
              <polygon class="arrowhead" points="72,224 60,218.4 60,229.6" fill="black" transform="rotate(180,64,224)"/>
              <polygon class="arrowhead" points="72,64 60,58.4 60,69.6" fill="black" transform="rotate(180,64,64)"/>
              <g class="text">
                <text x="108" y="52">Explicit</text>
                <text x="180" y="52">relation</text>
                <text x="244" y="52">(e.g.,</text>
                <text x="292" y="52">from</text>
                <text x="340" y="52">device</text>
                <text x="420" y="52">manufacture)</text>
                <text x="52" y="132">Device</text>
                <text x="148" y="132">con-</text>
                <text x="260" y="132">Domain</text>
                <text x="360" y="132">not</text>
                <text x="396" y="132">con-</text>
                <text x="500" y="132">Enrollment</text>
                <text x="148" y="148">strained</text>
                <text x="264" y="148">Authenticator</text>
                <text x="380" y="148">strained</text>
                <text x="500" y="148">Server</text>
                <text x="48" y="164">(U)</text>
                <text x="144" y="164">network</text>
                <text x="264" y="164">(V)</text>
                <text x="376" y="164">network</text>
                <text x="496" y="164">(W)</text>
                <text x="92" y="244">No</text>
                <text x="140" y="244">previous</text>
                <text x="212" y="244">relation</text>
                <text x="340" y="244">Implicit</text>
                <text x="412" y="244">relation</text>
                <text x="316" y="260">(e.g.,</text>
                <text x="360" y="260">web</text>
                <text x="392" y="260">PKI</text>
                <text x="436" y="260">based)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[

         Explicit relation (e.g., from device manufacture)
     | <---------------------------------------------------> |
     |                                                       |
+----+-----+            +---------------+            +-------+-------+
|          |            |               |            |               |
|  Device  |    con-    |    Domain     |  not con-  |   Enrollment  |
|          |  strained  | Authenticator |  strained  |     Server    |
|   (U)    |  network   |      (V)      |  network   |      (W)      |
|          |            |               |            |               |
+----+-----+            +-------+-------+            +-------+-------+
     |                          |                            |
     | <----------------------> | <------------------------> |
          No previous relation        Implicit relation
                                    (e.g., web PKI based)
]]></artwork>
        </artset>
      </figure>
      <section anchor="device">
        <name>Device (U)</name>
        <t>To authenticate to V, the device (U) runs EDHOC in the role of Initiator with authentication credential CRED_U, for example, an X.509 certificate <xref target="RFC5280"/> or a CBOR Web Token (CWT, <xref target="RFC8392"/>). CRED_U may, for example, be carried by value in ID_CRED_I of EDHOC message_3 or be provisioned to V over a non-constrained network, leveraging a credential identifier in ID_CRED_I (see bottom of <xref target="fig-protocol"/>).</t>
        <t>U also needs to identify itself to W. The device identifier used for this is ID_U. The purpose of ID_U is for W to be able to determine if the device with this identifier is authorized to enroll with V. ID_U may be a reference to CRED_U, like ID_CRED_I in EDHOC (see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>), or a device identifier from a different name space, such as EUI-64 identifiers.</t>
        <t>U is also provisioned with information about W:</t>
        <ul spacing="normal">
          <li>
            <t>A static public DH key of W (G_W) used to establish secure communication with the enrollment server (see <xref target="U-W"/>).</t>
          </li>
          <li>
            <t>Location information about the enrollment server (LOC_W) that can be used by V to reach W. This is typically a URI but may alternatively be only the domain name.</t>
          </li>
        </ul>
      </section>
      <section anchor="domain-auth">
        <name>Domain Authenticator (V)</name>
        <t>To authenticate to U, the domain authenticator (V) runs EDHOC in the role of Responder with an authentication credential CRED_V containing a public key of V, see <xref target="V_2"/>. This proves to U the possession of the private key corresponding to the public key of CRED_V. CRED_V typically needs to be transported to U in EDHOC (using  ID_CRED_R = CRED_V, see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>) since there is no previous relation between U and V.</t>
        <t>V and W need to establish a secure (confidentiality and integrity protected) connection for the Voucher Request/Response protocol.
Furthermore, W needs to access the same credential CRED_V that V uses with U (to compute the Voucher), and V needs to prove to W the possession of the private key corresponding to the public key of CRED_V.
It is RECOMMENDED that V authenticates to W using the same credential CRED_V as with U.</t>
        <t>Note that the choice of protocols may affect which type of credential and methods should be used by V.
For example, in case V and W select TLS for the secure channel and PoP, then CRED_V is a X.509 certificate, and the EDHOC method used by V is signature-based.
Some of the possible combinations of protocols to secure the connection between V and W are listed in <xref target="creds-table"/> below.</t>
        <table anchor="creds-table">
          <name>Examples of how to secure the connection between V and W.</name>
          <thead>
            <tr>
              <th align="left">Secure channel between V and W</th>
              <th align="left">Proof-of-Possession from V to W</th>
              <th align="left">Type of CRED_V</th>
              <th align="left">EDHOC method used by V</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">[D]TLS 1.3 with mutual authentication, where V is the client and W is the server.</td>
              <td align="left">Provided by [D]TLS.</td>
              <td align="left">Restricted to types that are supported by both [D]TLS and EDHOC, e.g., X.509 certificates.</td>
              <td align="left">V MUST authenticate using a signature.</td>
            </tr>
            <tr>
              <td align="left">[D]TLS 1.3, where V is the client and W is the server.</td>
              <td align="left">Run an EDHOC session on top of the TLS-protected channel.</td>
              <td align="left">Any type supported by EDHOC, e.g., X.509, C509, CWT, or CCS.</td>
              <td align="left">Any method may be used.</td>
            </tr>
            <tr>
              <td align="left">EDHOC and OSCORE, where V is the initiator and W is the responder.</td>
              <td align="left">Already provided by EDHOC during the setup of the secure channel.</td>
              <td align="left">Any type supported by EDHOC.</td>
              <td align="left">Any method may be used.</td>
            </tr>
          </tbody>
        </table>
        <t>Note also that the secure connection between V and W may be long-lived and reused for multiple voucher requests/responses.</t>
        <t>Other details of proof-of-possession related to CRED_V and transport of CRED_V are out of scope of this document.</t>
      </section>
      <section anchor="authz-server">
        <name>Enrollment Server (W)</name>
        <t>The enrollment server (W) is assumed to have the private DH key corresponding to G_W, which is used to establish secure communication with the device (see <xref target="U-W"/>). W provides to U the authorization decision for enrollment with V in the form of a voucher (see <xref target="voucher"/>). Authorization policies are out of scope for this document.</t>
        <t>Authentication credentials and communication security with V is described in <xref target="domain-auth"/>. To calculate the voucher, W needs access to message_1 and CRED_V as used in the EDHOC session between U and V, see <xref target="voucher"/>.</t>
        <ul spacing="normal">
          <li>
            <t>W MUST verify that CRED_V is bound to the secure connection between W and V</t>
          </li>
          <li>
            <t>W MUST verify that V is in possession of the private key corresponding to the public key of CRED_V</t>
          </li>
        </ul>
        <t>W needs to be available during the execution of the protocol between U and V.</t>
      </section>
    </section>
    <section anchor="protocol">
      <name>The Protocol</name>
      <section anchor="protocol-overview">
        <name>Overview</name>
        <t>The ELA protocol consist of three security sessions going on in parallel:</t>
        <ol spacing="normal" type="1"><li>
            <t>The EDHOC session between device (U) and (domain) authenticator (V)</t>
          </li>
          <li>
            <t>Voucher Request/Response between authenticator (V) and enrollment server (W)</t>
          </li>
          <li>
            <t>An exchange of voucher-related information, including the voucher itself, between device (U) and enrollment server (W), mediated by the authenticator (V).</t>
          </li>
        </ol>
        <t><xref target="fig-protocol"/> provides an overview of the message flow detailed in this section. An outline of EDHOC is given in <xref section="2" sectionFormat="of" target="RFC9528"/>.</t>
        <figure anchor="fig-protocol">
          <name>Overview of ELA: W-assisted authorization of U and V to each other: EDHOC between U and V, and Voucher Request/Response between V and W. Before the protocol, V and W are assumed to have established a secure channel and performed proof-of-possession of relevant keys. Credential lookup of CRED_U may involve W or other credential database.</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="864" width="584" viewBox="0 0 584 864" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,224" fill="none" stroke="black"/>
                <path d="M 8,304 L 8,624" fill="none" stroke="black"/>
                <path d="M 8,688 L 8,848" fill="none" stroke="black"/>
                <path d="M 256,48 L 256,224" fill="none" stroke="black"/>
                <path d="M 256,304 L 256,624" fill="none" stroke="black"/>
                <path d="M 256,688 L 256,848" fill="none" stroke="black"/>
                <path d="M 576,48 L 576,224" fill="none" stroke="black"/>
                <path d="M 576,304 L 576,624" fill="none" stroke="black"/>
                <path d="M 576,736 L 576,848" fill="none" stroke="black"/>
                <path d="M 264,96 L 288,96" fill="none" stroke="black"/>
                <path d="M 312,96 L 328,96" fill="none" stroke="black"/>
                <path d="M 352,96 L 368,96" fill="none" stroke="black"/>
                <path d="M 392,96 L 408,96" fill="none" stroke="black"/>
                <path d="M 432,96 L 448,96" fill="none" stroke="black"/>
                <path d="M 472,96 L 488,96" fill="none" stroke="black"/>
                <path d="M 512,96 L 528,96" fill="none" stroke="black"/>
                <path d="M 552,96 L 568,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 288,160" fill="none" stroke="black"/>
                <path d="M 312,160 L 328,160" fill="none" stroke="black"/>
                <path d="M 352,160 L 368,160" fill="none" stroke="black"/>
                <path d="M 392,160 L 408,160" fill="none" stroke="black"/>
                <path d="M 432,160 L 448,160" fill="none" stroke="black"/>
                <path d="M 472,160 L 488,160" fill="none" stroke="black"/>
                <path d="M 512,160 L 528,160" fill="none" stroke="black"/>
                <path d="M 552,160 L 568,160" fill="none" stroke="black"/>
                <path d="M 8,256 L 576,256" fill="none" stroke="black"/>
                <path d="M 8,336 L 248,336" fill="none" stroke="black"/>
                <path d="M 256,400 L 568,400" fill="none" stroke="black"/>
                <path d="M 264,464 L 576,464" fill="none" stroke="black"/>
                <path d="M 16,528 L 256,528" fill="none" stroke="black"/>
                <path d="M 8,608 L 248,608" fill="none" stroke="black"/>
                <path d="M 8,656 L 576,656" fill="none" stroke="black"/>
                <path d="M 256,768 L 280,768" fill="none" stroke="black"/>
                <path d="M 304,768 L 320,768" fill="none" stroke="black"/>
                <path d="M 344,768 L 360,768" fill="none" stroke="black"/>
                <path d="M 384,768 L 400,768" fill="none" stroke="black"/>
                <path d="M 432,768 L 448,768" fill="none" stroke="black"/>
                <path d="M 472,768 L 488,768" fill="none" stroke="black"/>
                <path d="M 512,768 L 528,768" fill="none" stroke="black"/>
                <path d="M 552,768 L 568,768" fill="none" stroke="black"/>
                <path d="M 264,816 L 280,816" fill="none" stroke="black"/>
                <path d="M 304,816 L 320,816" fill="none" stroke="black"/>
                <path d="M 344,816 L 360,816" fill="none" stroke="black"/>
                <path d="M 384,816 L 400,816" fill="none" stroke="black"/>
                <path d="M 424,816 L 440,816" fill="none" stroke="black"/>
                <path d="M 472,816 L 488,816" fill="none" stroke="black"/>
                <path d="M 512,816 L 528,816" fill="none" stroke="black"/>
                <path d="M 552,816 L 576,816" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="576,768 564,762.4 564,773.6" fill="black" transform="rotate(0,568,768)"/>
                <polygon class="arrowhead" points="576,400 564,394.4 564,405.6" fill="black" transform="rotate(0,568,400)"/>
                <polygon class="arrowhead" points="576,160 564,154.4 564,165.6" fill="black" transform="rotate(0,568,160)"/>
                <polygon class="arrowhead" points="576,96 564,90.4 564,101.6" fill="black" transform="rotate(0,568,96)"/>
                <polygon class="arrowhead" points="272,816 260,810.4 260,821.6" fill="black" transform="rotate(180,264,816)"/>
                <polygon class="arrowhead" points="272,464 260,458.4 260,469.6" fill="black" transform="rotate(180,264,464)"/>
                <polygon class="arrowhead" points="272,160 260,154.4 260,165.6" fill="black" transform="rotate(180,264,160)"/>
                <polygon class="arrowhead" points="272,96 260,90.4 260,101.6" fill="black" transform="rotate(180,264,96)"/>
                <polygon class="arrowhead" points="256,608 244,602.4 244,613.6" fill="black" transform="rotate(0,248,608)"/>
                <polygon class="arrowhead" points="256,336 244,330.4 244,341.6" fill="black" transform="rotate(0,248,336)"/>
                <polygon class="arrowhead" points="24,528 12,522.4 12,533.6" fill="black" transform="rotate(180,16,528)"/>
                <g class="text">
                  <text x="8" y="36">U</text>
                  <text x="256" y="36">V</text>
                  <text x="576" y="36">W</text>
                  <text x="360" y="84">Establish</text>
                  <text x="428" y="84">secure</text>
                  <text x="488" y="84">channel</text>
                  <text x="332" y="116">(e.g.,</text>
                  <text x="376" y="116">TLS</text>
                  <text x="412" y="116">with</text>
                  <text x="460" y="116">server</text>
                  <text x="516" y="116">cert.)</text>
                  <text x="360" y="148">Proof-of-possession</text>
                  <text x="468" y="148">w.r.t.</text>
                  <text x="524" y="148">CRED_V</text>
                  <text x="380" y="180">(e.g.,</text>
                  <text x="436" y="180">EDHOC)</text>
                  <text x="228" y="276">CORE</text>
                  <text x="284" y="276">PROTOCOL</text>
                  <text x="104" y="324">EDHOC</text>
                  <text x="168" y="324">message_1</text>
                  <text x="52" y="356">(EAD_1</text>
                  <text x="88" y="356">=</text>
                  <text x="124" y="356">LOC_W,</text>
                  <text x="200" y="356">ENC_U_INFO)</text>
                  <text x="352" y="388">Voucher</text>
                  <text x="416" y="388">Request</text>
                  <text x="476" y="388">(VREQ)</text>
                  <text x="360" y="420">(message_1,</text>
                  <text x="468" y="420">?opaque_state)</text>
                  <text x="352" y="452">Voucher</text>
                  <text x="420" y="452">Response</text>
                  <text x="484" y="452">(VRES)</text>
                  <text x="320" y="484">(message_1,</text>
                  <text x="404" y="484">Voucher,</text>
                  <text x="500" y="484">?opaque_state)</text>
                  <text x="104" y="516">EDHOC</text>
                  <text x="168" y="516">message_2</text>
                  <text x="100" y="548">(EAD_2</text>
                  <text x="136" y="548">=</text>
                  <text x="180" y="548">Voucher)</text>
                  <text x="104" y="596">EDHOC</text>
                  <text x="168" y="596">message_3</text>
                  <text x="540" y="708">Credential</text>
                  <text x="548" y="724">Database</text>
                  <text x="352" y="756">ID_CRED_I</text>
                  <text x="412" y="756">from</text>
                  <text x="472" y="756">message_3</text>
                  <text x="420" y="804">CRED_U</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
U                              V                                       W
|                              |                                       |
|                              |                                       |
|                              |        Establish secure channel       |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |      (e.g., TLS with server cert.)    |
|                              |                                       |
|                              |   Proof-of-possession w.r.t. CRED_V   |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |            (e.g., EDHOC)              |
|                              |                                       |
|                              |                                       |
|                              |                                       |

------------------------------------------------------------------------
                          CORE PROTOCOL

|                              |                                       |
|         EDHOC message_1      |                                       |
+----------------------------->|                                       |
|  (EAD_1 = LOC_W, ENC_U_INFO) |                                       |
|                              |                                       |
|                              |        Voucher Request (VREQ)         |
|                              +-------------------------------------->|
|                              |       (message_1, ?opaque_state)      |
|                              |                                       |
|                              |        Voucher Response (VRES)        |
|                              |<--------------------------------------+
|                              |  (message_1, Voucher, ?opaque_state)  |
|                              |                                       |
|         EDHOC message_2      |                                       |
|<-----------------------------+                                       |
|        (EAD_2 = Voucher)     |                                       |
|                              |                                       |
|                              |                                       |
|         EDHOC message_3      |                                       |
+----------------------------->|                                       |
|                              |                                       |

------------------------------------------------------------------------

|                              |
|                              |                              Credential
|                              |                                Database
|                              |                                       |
|                              |       ID_CRED_I from message_3        |
|                              +---  ---  ---  ---   ---  ---  ---  -->|
|                              |                                       |
|                              |                 CRED_U                |
|                              |<--  ---  ---  ---  ---   ---  ---  ---+
|                              |                                       |
|                              |                                       |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="reuse">
        <name>Reuse of EDHOC</name>
        <t>The ELA protocol illustrated in <xref target="fig-protocol"/> reuses several components of EDHOC:</t>
        <ul spacing="normal">
          <li>
            <t>G_X, the ephemeral public Diffie-Hellman key of U, is also used in the protocol between U and W.
In case U acts as Responder (see <xref target="reverse-u-responder"/>), G_Y is used instead.</t>
          </li>
          <li>
            <t>SUITES_I includes the cipher suite for EDHOC selected by U, and also defines the algorithms used between U and W (see <xref section="3.6" sectionFormat="of" target="RFC9528"/>):  </t>
            <ul spacing="normal">
              <li>
                <t>EDHOC AEAD algorithm: used to encrypt ID_U and to generate voucher</t>
              </li>
              <li>
                <t>EDHOC hash algorithm: used for key derivation</t>
              </li>
              <li>
                <t>EDHOC key exchange algorithm: used to calculate the shared secret between U and W</t>
              </li>
            </ul>
          </li>
          <li>
            <t>EAD_1, EAD_2 are the External Authorization Data message fields of message_1 and message_2, respectively, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>.
In case U acts as Responder (see <xref target="reverse-u-responder"/>), EAD_2 and EAD_3 are used in message_2 and message_3, respectively.
This document specifies two new EAD items, with ead_label = TBD1 and TBD2, see <xref target="iana-ead"/>.</t>
          </li>
          <li>
            <t>ID_CRED_I and ID_CRED_R are used to identify the authentication credentials CRED_U and CRED_V, respectively. As shown at the bottom of <xref target="fig-protocol"/>, V may use W to obtain CRED_U.
By default, CRED_V is transported in ID_CRED_R in message_2, see <xref target="V_2"/>.
In case U is Responder, CRED_V is transported in ID_CRED_I in message_3.</t>
          </li>
        </ul>
        <t>The protocol also reuses the EDHOC_Extract and EDHOC_Expand key derivation from EDHOC (see <xref section="4" sectionFormat="of" target="RFC9528"/>).</t>
        <ul spacing="normal">
          <li>
            <t>The intermediate pseudo-random key PRK is derived using EDHOC_Extract():
            </t>
            <ul spacing="normal">
              <li>
                <t>PRK = EDHOC_Extract(salt, IKM)
                </t>
                <ul spacing="normal">
                  <li>
                    <t>where salt = 0x (the zero-length byte string)</t>
                  </li>
                  <li>
                    <t>IKM is computed as an ECDH cofactor Diffie-Hellman shared secret from the public key of W, G_W, and the private key corresponding to G_X (or v.v.), see Section 5.7.1.2 of <xref target="NIST-800-56A"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>The output keying material OKM is derived from PRK using EDHOC_Expand(), which is defined in terms of the EDHOC hash algorithm of the selected cipher suite SS, see <xref section="4.1.2" sectionFormat="of" target="RFC9528"/>:</t>
        <ul spacing="normal">
          <li>
            <t>OKM = EDHOC_Expand(PRK, info, length)  </t>
            <t>
where</t>
          </li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
info = (
   info_label : int,
   context : bstr,
   length : uint,
)
]]></sourcecode>
      </section>
      <section anchor="stateless-v">
        <name>Stateless Operation of V</name>
        <t>V may act statelessly with respect to U: the state of the EDHOC session started by U may be dropped at V until authorization from W is received.
Once V has received EDHOC message_1 from U and extracted LOC_W from EAD_1, message_1 is forwarded unmodified to W in the form of a Voucher Request (see <xref target="voucher_request"/>).
V encapsulates the internal state that it needs to later respond to U, and sends that to W together with EDHOC message_1.
This state typically contains addressing information of U (e.g., U's IP address and port number), together with any other implementation-specific parameter needed by V to respond to U.
At this point, V can drop the EDHOC session that was initiated by U.</t>
        <t>The encapsulated state MUST be protected using a uniformly-distributed (pseudo-)random key, known only to itself and specific for the current EDHOC session to prevent replay attacks of old encapsulated state.</t>
        <t>How V serializes and encrypts its internal state is out of scope in this specification.
For example, V may use CBOR and COSE.</t>
        <t>W sends to V the voucher together with the echoed message_1, as received from U, and V's internal state, see <xref target="voucher_response"/>.
This allows V to act as a simple message relay until it has obtained the authorization from W to enroll U.
The reception of a successful Voucher Response at V from W implies the authorization for V to enroll U.
At this point, V can initialize a new EDHOC session with U, based on the message and the state retrieved from the Voucher Response from W.</t>
        <t>Noet that while stateless operation is supported in the default flow, it is not supported in the reverse flow (see <xref target="reverse-u-responder"/>).</t>
      </section>
      <section anchor="U-W">
        <name>Device &lt;-&gt; Enrollment Server (U &lt;-&gt; W)</name>
        <t>The protocol between U and W is carried between U and V in message_1 and message_2 (<xref target="U-V"/>), and between V and W in the Voucher Request/Response (<xref target="V-W"/>). The data is protected between the endpoints using secret keys derived from a Diffie-Hellman shared secret (see <xref target="reuse"/>) as further detailed in this section.</t>
        <section anchor="voucher_info">
          <name>Voucher Info</name>
          <t>The external authorization data EAD_1 contains an EAD item with ead_label = TBD1 and ead_value = Voucher_Info, which is a CBOR byte string:</t>
          <sourcecode type="cddl"><![CDATA[
Voucher_Info = bstr .cborseq Voucher_Info_Seq

Voucher_Info_Seq = [ ; used as a CBOR sequence, not array
    LOC_W:      tstr,
    ENC_U_INFO:     bstr
]
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>LOC_W is a text string used by V to locate W, e.g., a URI or a domain name.</t>
            </li>
            <li>
              <t>ENC_U_INFO is a byte string containing an encrypted identifier of U and, optionally, opaque application data prepared by U. It is calculated as follows:</t>
            </li>
          </ul>
          <t>ENC_U_INFO is encrypted using the EDHOC AEAD algorithm of the selected cipher suite SS specified in SUITE_I of EDHOC message_1.
It consists of 'ciphertext' of COSE_Encrypt0 (<xref section="5.2" sectionFormat="of" target="RFC9052"/>) computed from the following:</t>
          <ul spacing="normal">
            <li>
              <t>The encryption key K_1 and nonce IV_1 are derived as specified below.</t>
            </li>
            <li>
              <t>'protected' is a byte string of size 0</t>
            </li>
            <li>
              <t>'plaintext' and 'external_aad' as below:</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    ID_U:            bstr,
)
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = [ ; used as a CBOR sequence, not array
    "ELA-voucher-info": tstr, ; fixed label
    METHOD:             int,
    SS:                 int,
    C_I:                bstr
]
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>"ELA-voucher-info" is a string literal for the Voucher_Info struct.</t>
            </li>
            <li>
              <t>ID_U is an identifier of the device, see <xref target="device"/>.</t>
            </li>
            <li>
              <t>METHOD is the authentication method of EDHOC message_1.</t>
            </li>
            <li>
              <t>SS is the selected cipher suite in SUITES_I of EDHOC message_1, see <xref target="U-V"/>.</t>
            </li>
            <li>
              <t>C_I is the connection identifier of EDHOC message_1.</t>
            </li>
          </ul>
          <t>The external_aad is wrapped in an enc_structure as defined in <xref section="5.3" sectionFormat="of" target="RFC9052"/>.</t>
          <t>The derivation of K_1 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see OKM in <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 0</t>
            </li>
            <li>
              <t>context  = h'' (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the key of the EDHOC AEAD algorithm in bytes (which is the length of K_1)</t>
            </li>
          </ul>
          <t>The derivation of IV_1 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see OKM in <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 1</t>
            </li>
            <li>
              <t>context = h''  (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the nonce of the EDHOC AEAD algorithm in bytes (which is the length of IV_1)</t>
            </li>
          </ul>
        </section>
        <section anchor="voucher">
          <name>Voucher</name>
          <t>The external authorization data EAD_2 contains an EAD item with ead_label = TBD2 and ead_value = Voucher.</t>
          <t>The voucher is an assertion to U that W has authorized V.
It is encrypted using the EDHOC AEAD algorithm of the selected cipher suite SS specified in SUITE_I of EDHOC message_1.
It consists of the 'ciphertext' field of a COSE_Encrypt0 object, which is a byte string, as defined below.</t>
          <sourcecode type="cddl"><![CDATA[
Voucher = bstr
]]></sourcecode>
          <t>Its corresponding plaintext value consists of an opaque field that can be used by W to convey information to U, such as a voucher scope.
The authentication tag present in the ciphertext is also bound to message_1 and the credential of V as described below.</t>
          <ul spacing="normal">
            <li>
              <t>The encryption key K_2 and nonce IV_2 are derived as specified below.</t>
            </li>
            <li>
              <t>'protected' is a byte string of size 0</t>
            </li>
            <li>
              <t>'plaintext' and 'external_aad' as below:</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    ?OPAQUE_INFO: bstr
)
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = (
    H_handshake:  bstr,
    CRED_V:        bstr,
)
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>OPAQUE_INFO is an opaque field provided by the application.
If present, it will contain application data that W may want to convey to U, e.g., a voucher scope.
Note that OPAQUE_INFO is opaque when viewed as an information element in EDHOC.
It is opaque to V, while the application in U and W can read its contents.</t>
            </li>
            <li>
              <t>H_handshake is the hash of EDHOC message_1, sent by V as part of the voucher request, see <xref target="voucher_request"/>.</t>
            </li>
            <li>
              <t>CRED_V is the credential used by V to authenticate to U and W, see <xref target="V_2"/> and <xref target="creds-table"/>.</t>
            </li>
          </ul>
          <t>The derivation of K_2 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 2</t>
            </li>
            <li>
              <t>context  = h'' (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the key of the EDHOC AEAD algorithm in bytes</t>
            </li>
          </ul>
          <t>The derivation of IV_2 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 3</t>
            </li>
            <li>
              <t>context = h''  (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the nonce of the EDHOC AEAD algorithm in bytes</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="U-V">
        <name>Device &lt;-&gt; Authenticator (U &lt;-&gt; V)</name>
        <t>This section describes the processing in U and V, which includes the EDHOC protocol, see <xref target="fig-protocol"/>. Normal EDHOC processing is omitted here.</t>
        <section anchor="m1">
          <name>Message 1</name>
          <section anchor="processing-in-u">
            <name>Processing in U</name>
            <t>U composes EDHOC message_1 using authentication method, identifiers, etc. according to an agreed application profile, see <xref section="3.9" sectionFormat="of" target="RFC9528"/>. The selected cipher suite, in this document denoted SS, applies also to the interaction with W as detailed in <xref target="reuse"/>, in particular, with respect to the Diffie-Hellman key agreement algorithm used between U and W. As part of the normal EDHOC processing, U generates the ephemeral public key G_X that is reused in the interaction with W, see <xref target="U-W"/>.</t>
            <t>The device sends EDHOC message_1 with EAD item (-TBD1, Voucher_Info) included in EAD_1, where Voucher_Info is specified in <xref target="U-W"/>. The negative sign indicates that the EAD item is critical, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>.</t>
          </section>
          <section anchor="processing-in-v">
            <name>Processing in V</name>
            <t>V receives EDHOC message_1 from U and processes it as specified in <xref section="5.2.3" sectionFormat="of" target="RFC9528"/>, with the additional step of processing the EAD item in EAD_1. Since the EAD item is critical, if V does not recognize it or it contains information that V cannot process, then V MUST abort the EDHOC session, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. Otherwise, the ead_label = TBD1 triggers the voucher request to W as described in <xref target="V-W"/>. The exchange between V and W needs to be completed successfully for the EDHOC session to be continued.</t>
            <t>Note that the selected cipher suite SS is used both in the U &lt;-&gt; W and U &lt;-&gt; V interactions, therefore V must be ready to use the cipher suite SS set by U in message_1.
That is, ELA restricts the cipher suite negotiation in order to provide a streamlined authorization flow from the perspective of U.
Since V has a pre-established trusted channel with W, it has the opportunity to learn which cipher suites should be supported before any authorization attempt begins to take place.</t>
          </section>
        </section>
        <section anchor="m2">
          <name>Message 2</name>
          <section anchor="V_2">
            <name>Processing in V</name>
            <t>V receives the voucher response from W as described in <xref target="V-W"/>.</t>
            <t>V sends EDHOC message_2 to U with the critical EAD item (-TBD2, Voucher) included in EAD_2, i.e., ead_label = TBD2 and ead_value = Voucher, as specified in <xref target="voucher"/>.</t>
            <t>The type of CRED_V may depend on the selected mechanism for the establishment of a secure channel between V and W, See <xref target="creds-table"/>.</t>
            <t>In case the network between U and V is constrained, it is recommended that CRED_V be a CWT Claims Set (CCS) <xref target="RFC8392"/>.
The CCS contains the public authentication key of V encoded as a COSE_Key in the 'cnf' claim, see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>.
ID_CRED_R contains the CWT Claims Set with 'kccs' as COSE header_map, see <xref section="10.6" sectionFormat="of" target="RFC9528"/>.</t>
          </section>
          <section anchor="processing-in-u-1">
            <name>Processing in U</name>
            <t>U receives EDHOC message_2 from V and processes it as specified in <xref section="5.3.3" sectionFormat="of" target="RFC9528"/>, with the additional step of processing the EAD item in EAD_2.</t>
            <t>If U does not recognize the EAD item or the EAD item contains information that U cannot process, then U MUST abort the EDHOC session, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. Otherwise, U MUST verify the Voucher using H_message_1, CRED_V, and the keys derived as in <xref target="voucher"/>. If the verification fails then U MUST abort the EDHOC session.</t>
            <t>If OPAQUE_INFO is present, it is made available to the application.</t>
          </section>
        </section>
        <section anchor="message-3">
          <name>Message 3</name>
          <section anchor="processing-in-u-2">
            <name>Processing in U</name>
            <t>If all verifications are passed, then U sends EDHOC message_3.</t>
            <t>EDHOC message_3 may be combined with an OSCORE-protected application request, see <xref target="I-D.ietf-core-oscore-edhoc"/>.</t>
          </section>
          <section anchor="processing-in-v-1">
            <name>Processing in V</name>
            <t>V performs the normal EDHOC verifications of message_3. V may retrieve CRED_U from a Credential Database, after having learned ID_CRED_I from U.</t>
          </section>
        </section>
      </section>
      <section anchor="V-W">
        <name>Authenticator &lt;-&gt; Enrollment Server (V &lt;-&gt; W)</name>
        <t>It is assumed that V and W have set up a secure connection, W has accessed the authentication credential CRED_V to be used in the EDHOC session between V and U, and that W has verified that V is in possession of the private key corresponding to CRED_V, see <xref target="domain-auth"/> and <xref target="authz-server"/>.
V and W run the Voucher Request/Response protocol over the secure connection.</t>
        <section anchor="voucher_request">
          <name>Voucher Request</name>
          <section anchor="processing-in-v-2">
            <name>Processing in V</name>
            <t>V sends the voucher request to W.
The Voucher Request SHALL be a CBOR array as defined below:</t>
            <sourcecode type="cddl"><![CDATA[
Voucher_Request = [
    SS:             int,
    G_U:            bstr,
    Voucher_Info:   bstr,
    H_handshake:    bstr,
    ? opaque_state: bstr
]
]]></sourcecode>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>SS is the selected cipher suite used in the EDHOC session between U and V</t>
              </li>
              <li>
                <t>G_U is the ephemeral public key (G_X) of U</t>
              </li>
              <li>
                <t>Voucher_Info is as extracted from the EAD_1 field of message_1</t>
              </li>
              <li>
                <t>H_handshake is the hash of message_1. It is computed using the EDHOC hash algorithm of the selected cipher suite SS specified in SUITE_I of EDHOC message_1.</t>
              </li>
              <li>
                <t>opaque_state is OPTIONAL and represents the serialized and encrypted opaque state needed by V to statelessly respond to U after the reception of Voucher_Response.</t>
              </li>
            </ul>
          </section>
          <section anchor="processing-in-w">
            <name>Processing in W</name>
            <t>W receives and parses the voucher request received over the secure connection with V.
W extracts from Voucher_Request:</t>
            <ul spacing="normal">
              <li>
                <t>SS - the selected cipher suite, which is the (last) integer of SUITES_I.</t>
              </li>
              <li>
                <t>G_U - the ephemeral public key of U.</t>
              </li>
              <li>
                <t>ENC_U_INFO - the encryption of the device identifier ID_U, contained in the Voucher_Info field of Voucher_Request.</t>
              </li>
              <li>
                <t>H_handshake - the hash of message_1.</t>
              </li>
            </ul>
            <t>W verifies and decrypts ENC_U_INFO using the relevant algorithms of the selected cipher suite SS (see <xref target="reuse"/>), and obtains ID_U.</t>
            <t>W uses H_handshake as a session identifier, and associates it to the device identifier ID_U.
Note that message_1 contains a unique ephemeral key, therefore H_handshake is expected to be unique.</t>
            <t>If processing fails up until this point, the protocol SHALL be aborted with an error code signaling a generic issue with the request, see <xref target="rest-voucher-request"/>.</t>
            <t>W uses ID_U to look up the associated authorization policies for U and enforces them. This is out of scope for the specification.</t>
            <t>If ID_U is known by W, but authorization fails, the protocol SHALL be aborted with an error code signaling an access control issue, see <xref target="err-handling"/> and <xref target="rest-voucher-request"/>.</t>
          </section>
        </section>
        <section anchor="voucher_response">
          <name>Voucher Response</name>
          <section anchor="processing-in-w-1">
            <name>Processing in W</name>
            <t>W retrieves CRED_V associated with the secure connection with V, and constructs the Voucher for the device with identifier ID_U (see <xref target="voucher"/>).</t>
            <t>W generates the voucher response and sends it to V over the secure connection. The Voucher_Response SHALL be a CBOR array as defined below:</t>
            <sourcecode type="cddl"><![CDATA[
Voucher_Response = [
    Voucher:        bstr,
    ? opaque_state: bstr
]
]]></sourcecode>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>The Voucher is defined in <xref target="voucher"/>.</t>
              </li>
              <li>
                <t>opaque_state is the echoed byte string opaque_state from Voucher_Request, if present.</t>
              </li>
            </ul>
            <t>W signals the successful generation of the voucher via a status code in the REST interface, as defined in <xref target="rest-voucher-request"/>.</t>
          </section>
          <section anchor="processing-in-v-3">
            <name>Processing in V</name>
            <t>V receives the voucher response from W over the secure connection.
If present, V decrypts and verifies opaque_state as received from W. If that verification fails, then the EDHOC session
with U is aborted.
If the voucher response is successfully received from W, then V responds to U with EDHOC message_2 as described in <xref target="V_2"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="err-handling">
        <name>Error Handling</name>
        <t>This section specifies a new EDHOC error code and how it is used in ELA.</t>
        <section anchor="edhoc-error-access-denied">
          <name>EDHOC Error "Access denied"</name>
          <t>This section specifies the new EDHOC error "Access denied", see <xref target="fig-error-codes"/>.</t>
          <figure anchor="fig-error-codes">
            <name>EDHOC error code and error information for ‘Access denied’.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="568" viewBox="0 0 568 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 96,32 L 96,96" fill="none" stroke="black"/>
                  <path d="M 232,32 L 232,96" fill="none" stroke="black"/>
                  <path d="M 560,32 L 560,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 560,32" fill="none" stroke="black"/>
                  <path d="M 8,62 L 560,62" fill="none" stroke="black"/>
                  <path d="M 8,66 L 560,66" fill="none" stroke="black"/>
                  <path d="M 8,96 L 560,96" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="52" y="52">ERR_CODE</text>
                    <text x="140" y="52">ERR_INFO</text>
                    <text x="196" y="52">Type</text>
                    <text x="288" y="52">Description</text>
                    <text x="68" y="84">TBD3</text>
                    <text x="160" y="84">error_content</text>
                    <text x="268" y="84">Access</text>
                    <text x="324" y="84">denied</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
+----------+----------------+----------------------------------------+
| ERR_CODE | ERR_INFO Type  | Description                            |
+==========+================+========================================+
|     TBD3 | error_content  | Access denied                          |
+----------+----------------+----------------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>Error code TBD3 is used to indicate to the receiver that access control has been applied and the sender has aborted the EDHOC session.
The ERR_INFO field contains error_content which is a CBOR Sequence consisting of an integer and an optional byte string.</t>
          <sourcecode type="cddl"><![CDATA[
error_content = (
  REJECT_TYPE : int,
  ? REJECT_INFO : bstr,
)
]]></sourcecode>
          <t>The purpose of REJECT_INFO is for the sender to provide verifiable and actionable information to the receiver about the error, so that an automated action may be taken to enable access.</t>
          <figure anchor="fig-reject">
            <name>REJECT_TYPE and REJECT_INFO for ‘Access denied’.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="568" viewBox="0 0 568 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
                  <path d="M 120,32 L 120,128" fill="none" stroke="black"/>
                  <path d="M 248,32 L 248,128" fill="none" stroke="black"/>
                  <path d="M 560,32 L 560,128" fill="none" stroke="black"/>
                  <path d="M 8,32 L 560,32" fill="none" stroke="black"/>
                  <path d="M 8,62 L 560,62" fill="none" stroke="black"/>
                  <path d="M 8,66 L 560,66" fill="none" stroke="black"/>
                  <path d="M 8,96 L 560,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 560,128" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="64" y="52">REJECT_TYPE</text>
                    <text x="176" y="52">REJECT_INFO</text>
                    <text x="304" y="52">Description</text>
                    <text x="104" y="84">0</text>
                    <text x="136" y="84">-</text>
                    <text x="268" y="84">No</text>
                    <text x="328" y="84">REJECT_INFO</text>
                    <text x="104" y="116">1</text>
                    <text x="148" y="116">bstr</text>
                    <text x="304" y="116">REJECT_INFO</text>
                    <text x="372" y="116">from</text>
                    <text x="424" y="116">trusted</text>
                    <text x="480" y="116">third</text>
                    <text x="528" y="116">party</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
+-------------+---------------+--------------------------------------+
| REJECT_TYPE | REJECT_INFO   | Description                          |
+=============+===============+======================================+
|           0 | -             | No REJECT_INFO                       |
+-------------+---------------+--------------------------------------+
|           1 | bstr          | REJECT_INFO from trusted third party |
+-------------+---------------+--------------------------------------+
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="error-handling-in-w-v-and-u">
          <name>Error handling in W, V, and U</name>
          <t>ELA uses the EDHOC Error "Access denied" in the following way:</t>
          <ul spacing="normal">
            <li>
              <t>W generates error_content and transfers it to V via the secure connection.
If REJECT_TYPE is 1, then REJECT_INFO is encrypted from W to U using the EDHOC AEAD algorithm.
W signals the error via an appropriate status code in the REST interface, as defined in <xref target="rest-voucher-request"/>.</t>
            </li>
            <li>
              <t>V receives error_content, prepares an EDHOC "Access denied" error, and sends it to U.</t>
            </li>
            <li>
              <t>U receives the error message and extracts the error_content.
If REJECT_TYPE is 1, then U decrypts REJECT_INFO, based on which it may retry to gain access.</t>
            </li>
          </ul>
          <t>The encryption of REJECT_INFO follows a procedure analogous to the one defined in <xref target="voucher"/>, with the following differences:</t>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    OPAQUE_INFO:     bstr,
 )
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = (
    H_handshake:    bstr,
 )
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>OPAQUE_INFO is an opaque field that contains actionable information about the error.
It may contain, for example, a list of suggested Vs through which U should join instead.</t>
            </li>
            <li>
              <t>H_handshake is the hash of EDHOC message_1, calculated from the associated voucher request, see <xref target="voucher_request"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="reverse-u-responder">
        <name>Reverse flow with U as Responder</name>
        <t>This section presents a protocol variant in which U is the EDHOC Responder.
This may allow optimizations in certain constrained network technologies.
For example, one use case is having V broadcast message_1, to which U responds with a message_2 whose EAD_2 field contains Voucher_Info.</t>
        <t>Note that this is different from the EDHOC reverse message flow defined in <xref section="A.2.2" sectionFormat="of" target="RFC9528"/>, since we make no assumption about whether U or V is a CoAP server.</t>
        <section anchor="_u-initiator">
          <name>U is the Initiator</name>
          <t>For clarity, we first present the "default flow" with U as Initiator, as described in <xref target="protocol-overview"/> and <xref target="U-V"/>.
Note that Voucher_Info and Voucher are carried in EDHOC message_1 and message_2, respectively.</t>
          <figure anchor="fig-u-initiator">
            <name>In ELA default flow, U is the EDHOC Initiator.</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="432" width="560" viewBox="0 0 560 432" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                  <path d="M 56,80 L 56,416" fill="none" stroke="black"/>
                  <path d="M 104,32 L 104,80" fill="none" stroke="black"/>
                  <path d="M 256,32 L 256,80" fill="none" stroke="black"/>
                  <path d="M 304,80 L 304,416" fill="none" stroke="black"/>
                  <path d="M 352,32 L 352,80" fill="none" stroke="black"/>
                  <path d="M 552,144 L 552,272" fill="none" stroke="black"/>
                  <path d="M 8,32 L 104,32" fill="none" stroke="black"/>
                  <path d="M 256,32 L 352,32" fill="none" stroke="black"/>
                  <path d="M 8,80 L 104,80" fill="none" stroke="black"/>
                  <path d="M 256,80 L 352,80" fill="none" stroke="black"/>
                  <path d="M 56,144 L 296,144" fill="none" stroke="black"/>
                  <path d="M 304,192 L 544,192" fill="none" stroke="black"/>
                  <path d="M 312,272 L 544,272" fill="none" stroke="black"/>
                  <path d="M 64,320 L 296,320" fill="none" stroke="black"/>
                  <path d="M 56,384 L 296,384" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="552,272 540,266.4 540,277.6" fill="black" transform="rotate(0,544,272)"/>
                  <polygon class="arrowhead" points="552,192 540,186.4 540,197.6" fill="black" transform="rotate(0,544,192)"/>
                  <polygon class="arrowhead" points="320,272 308,266.4 308,277.6" fill="black" transform="rotate(180,312,272)"/>
                  <polygon class="arrowhead" points="304,384 292,378.4 292,389.6" fill="black" transform="rotate(0,296,384)"/>
                  <polygon class="arrowhead" points="304,144 292,138.4 292,149.6" fill="black" transform="rotate(0,296,144)"/>
                  <polygon class="arrowhead" points="72,320 60,314.4 60,325.6" fill="black" transform="rotate(180,64,320)"/>
                  <g class="text">
                    <text x="56" y="52">U</text>
                    <text x="304" y="52">V</text>
                    <text x="56" y="68">Initiator</text>
                    <text x="304" y="68">Responder</text>
                    <text x="136" y="132">EDHOC</text>
                    <text x="200" y="132">message_1</text>
                    <text x="552" y="132">W</text>
                    <text x="88" y="164">EAD_1</text>
                    <text x="120" y="164">=</text>
                    <text x="156" y="164">(TBD1,</text>
                    <text x="240" y="164">Voucher_info)</text>
                    <text x="428" y="180">VREQ</text>
                    <text x="332" y="212">(SS,</text>
                    <text x="372" y="212">G_X,</text>
                    <text x="448" y="212">Voucher_Info,</text>
                    <text x="372" y="228">H_message_1,</text>
                    <text x="484" y="228">?opaque_state)</text>
                    <text x="428" y="260">VRES</text>
                    <text x="376" y="292">(Voucher,</text>
                    <text x="476" y="292">?opaque_state)</text>
                    <text x="136" y="308">EDHOC</text>
                    <text x="200" y="308">message_2</text>
                    <text x="104" y="340">EAD_2</text>
                    <text x="136" y="340">=</text>
                    <text x="172" y="340">(TBD2,</text>
                    <text x="236" y="340">Voucher)</text>
                    <text x="136" y="372">EDHOC</text>
                    <text x="200" y="372">message_3</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+-----+-----+                  +-----------+
|     U     |                  |     V     |
| Initiator |                  | Responder |
+-----+-----+                  +-----+-----+
      |                              |
      |                              |
      |       EDHOC message_1        |                              W
      +----------------------------->|                              |
      | EAD_1 = (TBD1, Voucher_info) |                              |
      |                              |             VREQ             |
      |                              +----------------------------->|
      |                              | (SS, G_X, Voucher_Info,      |
      |                              |  H_message_1, ?opaque_state) |
      |                              |                              |
      |                              |             VRES             |
      |                              +<---------------------------->|
      |                              |    (Voucher, ?opaque_state)
      |       EDHOC message_2        |
      +<-----------------------------|
      |   EAD_2 = (TBD2, Voucher)    |
      |                              |
      |       EDHOC message_3        |
      +----------------------------->|
      |                              |
      |                              |
]]></artwork>
            </artset>
          </figure>
          <t>In the ELA default flow, once message_2 processing is finalized (including processing of EAD_2), U considers V authenticated through W.</t>
        </section>
        <section anchor="_u-responder">
          <name>U is the Responder</name>
          <t>ELA also works with U as the EDHOC Responder, a setup we refer to as the "ELA reverse flow", as shown in <xref target="fig-u-responder"/>.</t>
          <t>We present this variant as a set of changes to the regular protocol flow.
That is, here we only describe the differences in processing, when compared to the ELA default flow.</t>
          <t>Here is a summary of the changes needed in the ELA reverse flow:</t>
          <ul spacing="normal">
            <li>
              <t>Voucher_Info and Voucher are transported in EDHOC message_2 and message_3, respectively (instead of message_1 and message_2).</t>
            </li>
            <li>
              <t>The EAD_2 and EAD_3 fields carry EAD items identified with labels TBD1 and TBD2, respectively.</t>
            </li>
            <li>
              <t>The VREQ / VRES protocol takes place between message_2 and message_3.</t>
            </li>
            <li>
              <t>The Voucher_Request carries G_Y instead of G_X, and the transcript hash TH_2 instead of the hash H_message_1.</t>
            </li>
            <li>
              <t>Stateless operation of V (see <xref target="stateless-v"/>) is not supported</t>
            </li>
          </ul>
          <figure anchor="fig-u-responder">
            <name>ELA when U is the EDHOC Responder.</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                  <path d="M 56,80 L 56,464" fill="none" stroke="black"/>
                  <path d="M 104,32 L 104,80" fill="none" stroke="black"/>
                  <path d="M 256,32 L 256,80" fill="none" stroke="black"/>
                  <path d="M 304,80 L 304,464" fill="none" stroke="black"/>
                  <path d="M 352,32 L 352,80" fill="none" stroke="black"/>
                  <path d="M 552,240 L 552,368" fill="none" stroke="black"/>
                  <path d="M 8,32 L 104,32" fill="none" stroke="black"/>
                  <path d="M 256,32 L 352,32" fill="none" stroke="black"/>
                  <path d="M 8,80 L 104,80" fill="none" stroke="black"/>
                  <path d="M 256,80 L 352,80" fill="none" stroke="black"/>
                  <path d="M 64,176 L 296,176" fill="none" stroke="black"/>
                  <path d="M 56,240 L 296,240" fill="none" stroke="black"/>
                  <path d="M 304,288 L 544,288" fill="none" stroke="black"/>
                  <path d="M 312,368 L 544,368" fill="none" stroke="black"/>
                  <path d="M 64,416 L 296,416" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="552,368 540,362.4 540,373.6" fill="black" transform="rotate(0,544,368)"/>
                  <polygon class="arrowhead" points="552,288 540,282.4 540,293.6" fill="black" transform="rotate(0,544,288)"/>
                  <polygon class="arrowhead" points="320,368 308,362.4 308,373.6" fill="black" transform="rotate(180,312,368)"/>
                  <polygon class="arrowhead" points="304,240 292,234.4 292,245.6" fill="black" transform="rotate(0,296,240)"/>
                  <polygon class="arrowhead" points="72,416 60,410.4 60,421.6" fill="black" transform="rotate(180,64,416)"/>
                  <polygon class="arrowhead" points="72,176 60,170.4 60,181.6" fill="black" transform="rotate(180,64,176)"/>
                  <g class="text">
                    <text x="56" y="52">U</text>
                    <text x="304" y="52">V</text>
                    <text x="56" y="68">Initiator</text>
                    <text x="304" y="68">Responder</text>
                    <text x="144" y="116">Trigger</text>
                    <text x="208" y="116">Message</text>
                    <text x="64" y="132">-</text>
                    <text x="80" y="132">-</text>
                    <text x="96" y="132">-</text>
                    <text x="112" y="132">-</text>
                    <text x="128" y="132">-</text>
                    <text x="144" y="132">-</text>
                    <text x="160" y="132">-</text>
                    <text x="176" y="132">-</text>
                    <text x="192" y="132">-</text>
                    <text x="208" y="132">-</text>
                    <text x="224" y="132">-</text>
                    <text x="240" y="132">-</text>
                    <text x="256" y="132">-</text>
                    <text x="272" y="132">-</text>
                    <text x="292" y="132">-&gt;</text>
                    <text x="136" y="164">EDHOC</text>
                    <text x="200" y="164">message_1</text>
                    <text x="136" y="228">EDHOC</text>
                    <text x="200" y="228">message_2</text>
                    <text x="552" y="228">W</text>
                    <text x="88" y="260">EAD_2</text>
                    <text x="120" y="260">=</text>
                    <text x="156" y="260">(TBD1,</text>
                    <text x="240" y="260">Voucher_info)</text>
                    <text x="428" y="276">VREQ</text>
                    <text x="332" y="308">(SS,</text>
                    <text x="372" y="308">G_Y,</text>
                    <text x="448" y="308">Voucher_Info,</text>
                    <text x="344" y="324">TH_2,</text>
                    <text x="428" y="324">?opaque_state)</text>
                    <text x="428" y="356">VRES</text>
                    <text x="376" y="388">(Voucher,</text>
                    <text x="476" y="388">?opaque_state)</text>
                    <text x="120" y="404">EDHOC</text>
                    <text x="184" y="404">message_3</text>
                    <text x="104" y="436">EAD_3</text>
                    <text x="136" y="436">=</text>
                    <text x="172" y="436">(TBD2,</text>
                    <text x="236" y="436">Voucher)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+-----+-----+                  +-----------+
|     U     |                  |     V     |
| Initiator |                  | Responder |
+-----+-----+                  +-----+-----+
      |                              |
      |       Trigger Message        |
      +- - - - - - - - - - - - - - ->|
      |                              |
      |       EDHOC message_1        |
      +<-----------------------------|
      |                              |
      |                              |
      |       EDHOC message_2        |                              W
      +----------------------------->|                              |
      | EAD_2 = (TBD1, Voucher_info) |                              |
      |                              |             VREQ             |
      |                              +----------------------------->|
      |                              | (SS, G_Y, Voucher_Info,      |
      |                              |  TH_2, ?opaque_state)        |
      |                              |                              |
      |                              |             VRES             |
      |                              +<---------------------------->|
      |                              |    (Voucher, ?opaque_state)
      |     EDHOC message_3          |
      +<-----------------------------|
      |   EAD_3 = (TBD2, Voucher)    |
      |                              |
      |                              |
]]></artwork>
            </artset>
          </figure>
          <t>The following detail how the processing changes in each of the three security sessions.</t>
          <t>The way to interpret the subsections below is as follows.
The ELA reverse flow described in this section uses most of the ELA default flow processing (<xref target="protocol-overview"/> to <xref target="err-handling"/>), except by the changes detailed in <xref target="reverse-u-w"/>,  <xref target="reverse-u-v"/>, and  <xref target="reverse-v-w"/>.</t>
          <section anchor="reverse-u-w">
            <name>Reverse U &lt;-&gt; W</name>
            <t>The protocol between U and W is carried between U and V in message_2 and message_3, and between V and W in the Voucher Request/Response (<xref target="V-W"/>).</t>
            <t>Voucher Info:</t>
            <ul spacing="normal">
              <li>
                <t>The EAD_2 item has ead_label = TBD1 and ead_value = Voucher_Info.</t>
              </li>
            </ul>
            <t>Voucher:</t>
            <ul spacing="normal">
              <li>
                <t>H_handshake is the transcript hash TH_2, sent by V as part of the voucher request, see <xref target="reverse-v-w"/>.</t>
              </li>
            </ul>
          </section>
          <section anchor="reverse-u-v">
            <name>Reverse U &lt;-&gt; V</name>
            <t>Message 1:</t>
            <ul spacing="normal">
              <li>
                <t>V composes message_1 and sends it to U.</t>
              </li>
              <li>
                <t>U processes message_1 and extracts SS.</t>
              </li>
            </ul>
            <t>Message 2:</t>
            <ul spacing="normal">
              <li>
                <t>U composes message_2 and generates G_Y, which is reused in the interaction with W.</t>
              </li>
              <li>
                <t>U sends message_2 with EAD item (-TBD1, Voucher_Info) included in EAD_2.</t>
              </li>
              <li>
                <t>V processes message_2 and the EAD item in EAD_2, extracting the Voucher_Info struct.</t>
              </li>
              <li>
                <t>V sends the voucher request to W.</t>
              </li>
            </ul>
            <t>Message 3:</t>
            <ul spacing="normal">
              <li>
                <t>V receives the voucher response from W.</t>
              </li>
              <li>
                <t>V sends message_3 with EAD item (-TBD2, Voucher) included in EAD_3.</t>
              </li>
              <li>
                <t>Y processes message_3 and the EAD item in EAD_3.</t>
              </li>
            </ul>
          </section>
          <section anchor="reverse-v-w">
            <name>Reverse V &lt;-&gt; W</name>
            <t>Processing in V:</t>
            <ul spacing="normal">
              <li>
                <t>The Voucher_Request fields are prepared as defined in <xref target="voucher_request"/>, with the following changes:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>G_U is set to G_Y, which is the ephemeral public key of U as extracted from message_2.</t>
                  </li>
                  <li>
                    <t>Voucher_Info is as extracted from the EAD_2 field of message_2.</t>
                  </li>
                  <li>
                    <t>H_handshake is the transcript hash TH_2, computed by V as specified in <xref section="5.3.2" sectionFormat="of" target="RFC9528"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>Processing in W happens as specified in <xref target="voucher_request"/>.</t>
          </section>
        </section>
        <section anchor="interoperability-considerations">
          <name>Interoperability considerations</name>
          <t>A Device (U) MUST implement one of the ELA flows, and it MAY choose to implement both.</t>
          <t>V MUST support the regular flow and MAY support the reverse flow.</t>
          <t>From the point of view of W, there is no difference whether U and V run as EDHOC Initiator or Responder.</t>
        </section>
        <section anchor="security-implications">
          <name>Security implications</name>
          <t>When using the reverse flow, U shares its identity before it can learn (1) V's identity and (2) whether or not the Voucher is valid.</t>
          <t>In the reverse flow, Voucher_Info is confidentiality and integrity protected, while Voucher is also authenticated.
These properties are inherited from EDHOC message_2 and message_3.
This is a higher level of protection than with the regular flow.</t>
        </section>
      </section>
    </section>
    <section anchor="rest_interface">
      <name>REST Interface at W</name>
      <t>The interaction between V and W is enabled through a RESTful interface exposed by W.
This RESTful interface MAY be implemented using either HTTP or CoAP.
V SHOULD access the resources exposed by W through the protocol indicated by the scheme in the LOC_W URI.</t>
      <section anchor="scheme-https">
        <name>Scheme "https"</name>
        <t>In case the scheme indicates "https", V MUST perform a TLS handshake with W and access the resources defined in <xref target="uris"/> using HTTP.
If the authentication credential CRED_V can be used in a TLS handshake, e.g., an X.509 certificate of a signature public key, then V SHOULD use it to authenticate to W as a client.
If the authentication credential CRED_V cannot be used in a TLS handshake, e.g., if the public key is a static Diffie-Hellman key, then V SHOULD first perform a TLS handshake with W using available compatible keys.
V MUST then perform an EDHOC session over the TLS connection proving to W the possession of the private key corresponding to CRED_V.
Performing the EDHOC session is only necessary if V did not authenticate with CRED_V in the TLS handshake with W.</t>
        <t>The relationship between V and W is long-lived.  HTTP/1.1 and higher support persistent connections, and SHOULD be used in order to reduce overhead if a flood of new devices need to be onboarded.  Support for TLS session resumptions tickets <xref section="2.2" sectionFormat="comma" target="RFC8446"/> is appropriate for longer term associations.
While a policy for renewal of the TLS connection should be applied, it is out of scope of this document.</t>
      </section>
      <section anchor="scheme-coaps">
        <name>Scheme "coaps"</name>
        <t>In case the scheme indicates "coaps", V SHOULD perform a DTLS handshake with W and access the resources defined in <xref target="uris"/> using CoAP.
The normative requirements in <xref target="scheme-https"/> on performing the DTLS handshake and EDHOC session remain the same, except that TLS is replaced with DTLS.
As in <xref target="scheme-https"/>, it is RECOMMENDED to allow reuse of the DTLS session.</t>
      </section>
      <section anchor="scheme-coap">
        <name>Scheme "coap"</name>
        <t>In case the scheme indicates "coap", V SHOULD perform an EDHOC session with W, as specified in <xref section="A" sectionFormat="of" target="RFC9528"/> and access the resources defined in <xref target="uris"/> using OSCORE and CoAP.
The authentication credential in this EDHOC session MUST be CRED_V.
As in <xref target="scheme-https"/>, it is RECOMMENDED to allow reuse of the EDHOC session.</t>
      </section>
      <section anchor="uris">
        <name>URIs</name>
        <t>The URIs defined below are valid for both HTTP and CoAP.
W MUST support the use of the path-prefix "/.well-known/", as defined in <xref target="RFC8615"/>, and the registered name "lake-authz".
A valid URI in case of HTTP thus begins with</t>
        <ul spacing="normal">
          <li>
            <t>"https://www.example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of CoAP with DTLS:</t>
        <ul spacing="normal">
          <li>
            <t>"coaps://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of EDHOC and OSCORE:</t>
        <ul spacing="normal">
          <li>
            <t>"coap://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>Each operation specified in the following is indicated by a path-suffix.</t>
        <section anchor="rest-voucher-request">
          <name>Voucher Request (/voucherrequest)</name>
          <t>To request a voucher, V MUST issue a request such that:</t>
          <ul spacing="normal">
            <li>
              <t>Method is POST</t>
            </li>
            <li>
              <t>Payload is the serialization of the Voucher Request object, as specified in <xref target="voucher_request"/>.</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-voucherrequest+cbor"</t>
            </li>
          </ul>
          <t>In case of successful processing at W, W MUST issue a response such that:</t>
          <ul spacing="normal">
            <li>
              <t>Status code is 200 OK if using HTTP, or 2.04 Changed if using CoAP</t>
            </li>
            <li>
              <t>Payload is the serialized Voucher Response object, as specified in <xref target="voucher_response"/></t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-voucherresponse+cbor"</t>
            </li>
          </ul>
          <t>In case of error, two cases should be considered:</t>
          <ul spacing="normal">
            <li>
              <t>U cannot be identified: this happens either if W fails to process the Voucher Request, or if it succeeds but ID_U is considered unknown to W. In this case, W MUST reply with 400 Bad Request if using HTTP, or 4.00 if using CoAP.</t>
            </li>
            <li>
              <t>U is identified but unauthorized: this happens if W is able to process the Voucher Request, and W recognizes ID_U as a known device, but the access policies forbid enrollment. For example, the policy could enforce enrollment within a delimited time window, via a specific V, etc. In this case, W MUST reply with a 403 Forbidden code if using HTTP, or 4.03 if using CoAP; the payload is the serialized error_content object, with Content-Format (Content-Type) set to "application/lake-authz-vouchererror+cbor". The payload MAY be used by V to prepare an EDHOC error "Access Denied", see <xref target="err-handling"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="certificate-request-certrequest">
          <name>Certificate Request (/certrequest)</name>
          <t>V requests the public key certificate of U from W through the "/certrequest" path-suffix.
To request U's authentication credential, V MUST issue a request such that:</t>
          <ul spacing="normal">
            <li>
              <t>Method is POST</t>
            </li>
            <li>
              <t>Payload is the serialization of the ID_CRED_I object, as received in EDHOC message_3.</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-certrequest+cbor"</t>
            </li>
          </ul>
          <t>In case of a successful lookup of the authentication credential at W, W MUST issue a response such that:</t>
          <ul spacing="normal">
            <li>
              <t>Status code is 200 OK if using HTTP, or 2.04 Changed if using CoAP</t>
            </li>
            <li>
              <t>Payload is the serialized CRED_U</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-certresponse+cbor"</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>This specification builds on and reuses many of the security constructions of EDHOC, e.g., shared secret calculation and key derivation. The security considerations of EDHOC <xref target="RFC9528"/> apply with modifications discussed here.</t>
      <t>EDHOC provides identity protection of the Initiator, here the device. The encryption of the device identifier ID_U in the first message should consider potential information leaking from the length of ID_U, either by making all identifiers having the same length or the use of a padding scheme.</t>
      <t>Although W learns about the identity of U after receiving VREQ, this information must not be disclosed to V, until U has revealed its identity to V with ID_CRED_I in message_3. W may be used for lookup of CRED_U from ID_CRED_I, or this credential lookup function may be separate from the authorization function of W, see <xref target="fig-protocol"/>. The trust model used here is that U decides to which V it reveals its identity. In an alternative trust model where U trusts W to decide to which V it reveals U's identity, CRED_U could be sent in Voucher Response.</t>
      <t>As noted in <xref section="9.2" sectionFormat="of" target="RFC9528"/> an ephemeral key may be used to calculate several ECDH shared secrets. In this specification, the ephemeral key G_X is also used to calculate G_XW, the shared secret with the enrollment server.</t>
      <t>The private ephemeral key is thus used in the device for calculations of key material relating to both the authenticator and the enrollment server. There are different options for where to implement these calculations. One option is as an addition to EDHOC, i.e., to extend the EDHOC API in the device, so that EDHOC can import the public key of W (G_W) and the device identifier of U (ID_U), and then produce the encryption of ID_U which is included in Voucher_Info in EAD_1.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-ead">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA has registered the following entries in the "EDHOC External Authorization Data" registry under the group name "Ephemeral Diffie-
   Hellman Over COSE (EDHOC)".</t>
        <table anchor="ead-table">
          <name>Addition to the EDHOC EAD registry</name>
          <thead>
            <tr>
              <th align="right">Label</th>
              <th align="left">Value Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBD1</td>
              <td align="left">bstr</td>
              <td align="left">Voucher_Info structure, prepared by the Device (U).</td>
            </tr>
            <tr>
              <td align="right">TBD2</td>
              <td align="left">bstr</td>
              <td align="left">Voucher structure, prepared by the Enrollment Server (W).</td>
            </tr>
          </tbody>
        </table>
        <t>The ead_label = TBD1 corresponds to the ead_value = Voucher_Info, which can be carried in either EAD_1 or EAD_2, depending on whether U acts as EDHOC Initiator or Responder, see <xref target="reverse-u-responder"/>.</t>
        <t>The ead_label = TBD2 corresponds to ead_value = Voucher, and can be carried in either EAD_2 or EAD_3, see <xref target="reverse-u-responder"/>.</t>
        <t>Note for IANA reviewers: the preferred value range is 0-23 (Standards Action with Expert Review).</t>
      </section>
      <section anchor="the-well-known-uri-registry">
        <name>The Well-Known URI Registry</name>
        <t>IANA has registered the following entry in "The Well-Known URI Registry", using the template from <xref target="RFC8615"/>:</t>
        <ul spacing="normal">
          <li>
            <t>URI suffix: lake-authz</t>
          </li>
          <li>
            <t>Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: [[this document]]</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Related information: None</t>
          </li>
        </ul>
      </section>
      <section anchor="well-known-name-under-arpa-name-space">
        <name>Well-Known Name Under ".arpa" Name Space</name>
        <t>This document allocates a well-known name under the .arpa name space according to the rules given in <xref target="RFC3172"/> and <xref target="RFC6761"/>.
The name "lake-authz.arpa" is requested.
No subdomains are expected, and addition of any such subdomains requires the publication of an IETF Standards Track RFC.
No A, AAAA, or PTR record is requested.</t>
        <section anchor="domain-name-reservation-considerations">
          <name>Domain Name Reservation Considerations</name>
          <t>As required by <xref target="RFC6761"/>, the following considerations apply to the reservation of "lake-authz.arpa":</t>
          <ol spacing="normal" type="1"><li>
              <t>Users:
Are human users expected to recognize these names as special and use them differently? In what way?</t>
            </li>
          </ol>
          <t>No. This name is not intended for direct use or recognition by human users.</t>
          <ol spacing="normal" type="1"><li>
              <t>Application Software:
Are writers of application software expected to make their software recognize these names as special and treat them differently? In what way? (For example, if a human user enters such a name, should the application software reject it with an error message?)</t>
            </li>
          </ol>
          <t>Yes. Applications that implement ELA and use CoAP may include "lake-authz.arpa" in the URI-Host option when the Device (U) does not yet know the address or identity of the Authenticator (V), such as during zero-touch enrollment.</t>
          <ol spacing="normal" type="1"><li>
              <t>Name Resolution APIs and Libraries:
Are writers of name resolution APIs and libraries expected to make their software recognize these names as special and treat them differently? If so, how?</t>
            </li>
          </ol>
          <t>No.</t>
          <ol spacing="normal" type="1"><li>
              <t>Caching DNS Servers:
Are developers of caching domain name servers expected to make their implementations recognize these names as special and treat them differently? If so, how?</t>
            </li>
          </ol>
          <t>No.</t>
          <ol spacing="normal" type="1"><li>
              <t>Authoritative DNS Servers:
Are developers of authoritative domain name servers expected to make their implementations recognize these names as special and treat them differently? If so, how?</t>
            </li>
          </ol>
          <t>No.</t>
          <ol spacing="normal" type="1"><li>
              <t>DNS Server Operators:
Does this reserved Special-Use Domain Name have any potential impact on DNS server operators? If they try to configure their authoritative DNS server as authoritative for this reserved name, will compliant name server software reject it as invalid? Do DNS server operators need to know about that and understand why? Even if the name server software doesn't prevent them from using this reserved name, are there other ways that it may not work as expected, of which the DNS server operator should be aware?</t>
            </li>
          </ol>
          <t>No.</t>
          <ol spacing="normal" type="1"><li>
              <t>DNS Registries/Registrars:
How should DNS Registries/Registrars treat requests to register this reserved domain name? Should such requests be denied? Should such requests be allowed, but only to a specially designated entity? (For example, the name "www.example.org" is reserved for documentation examples and is not available for registration; however, the name is in fact registered; and there is even a website at that name, which states circularly that the name is reserved for use in documentation and cannot be registered!)</t>
            </li>
          </ol>
          <t>Any requests to register this domain name should be denied.</t>
        </section>
      </section>
      <section anchor="media-types-registry">
        <name>Media Types Registry</name>
        <t>IANA has added the media types "application/lake-authz-voucherrequest+cbor" to the "Media Types" registry.</t>
        <section anchor="applicationlake-authz-voucherrequestcbor-media-type-registration">
          <name>application/lake-authz-voucherrequest+cbor Media Type Registration</name>
          <ul spacing="normal">
            <li>
              <t>Type name: application</t>
            </li>
            <li>
              <t>Subtype name: lake-authz-voucherrequest+cbor</t>
            </li>
            <li>
              <t>Required parameters: N/A</t>
            </li>
            <li>
              <t>Optional parameters: N/A</t>
            </li>
            <li>
              <t>Encoding considerations: binary (CBOR)</t>
            </li>
            <li>
              <t>Security considerations: See <xref target="sec-cons"/> of this document.</t>
            </li>
            <li>
              <t>Interoperability considerations: N/A</t>
            </li>
            <li>
              <t>Published specification: [[this document]] (this document)</t>
            </li>
            <li>
              <t>Application that use this media type: To be identified</t>
            </li>
            <li>
              <t>Fragment identifier considerations: N/A</t>
            </li>
            <li>
              <t>Additional information:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Magic number(s): N/A</t>
                </li>
                <li>
                  <t>File extension(s): N/A</t>
                </li>
                <li>
                  <t>Macintosh file type code(s): N/A</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information: IETF LAKE Working Group (lake@ietf.org)</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: N/A</t>
            </li>
            <li>
              <t>Author: LAKE WG</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="coap-content-formats-registry">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA has added the following Content-Format number in the "CoAP Content-Formats" registry under the registry group "Constrained RESTful Environments (CoRE) Parameters".</t>
        <table anchor="coap-content-formats">
          <name>Addition to the CoAP Content-Formats registry</name>
          <thead>
            <tr>
              <th align="left">Content Type</th>
              <th align="left">Content Encoding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/lake-authz-voucherrequest+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD3</td>
              <td align="left">[[this document]]</td>
            </tr>
          </tbody>
        </table>
        <t>Note for IANA reviewers: the preferred value range is 0-255 (Expert Review).</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8366" target="https://www.rfc-editor.org/info/rfc8366" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8366.xml">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9528" target="https://www.rfc-editor.org/info/rfc9528" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9528.xml">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="NIST-800-56A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography - NIST Special Publication 800-56A, Revision 3</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC3172" target="https://www.rfc-editor.org/info/rfc3172" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3172.xml">
          <front>
            <title>Management Guidelines &amp; Operational Requirements for the Address and Routing Parameter Area Domain ("arpa")</title>
            <author fullname="G. Huston" initials="G." role="editor" surname="Huston"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo describes the management and operational requirements for the address and routing parameter area ("arpa") domain. 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="52"/>
          <seriesInfo name="RFC" value="3172"/>
          <seriesInfo name="DOI" value="10.17487/RFC3172"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6761" target="https://www.rfc-editor.org/info/rfc6761" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6761.xml">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so. It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7593" target="https://www.rfc-editor.org/info/rfc7593" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7593.xml">
          <front>
            <title>The eduroam Architecture for Network Roaming</title>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="T. Wolniewicz" initials="T." surname="Wolniewicz"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document describes the architecture of the eduroam service for federated (wireless) network access in academia. The combination of IEEE 802.1X, the Extensible Authentication Protocol (EAP), and RADIUS that is used in eduroam provides a secure, scalable, and deployable service for roaming network access. The successful deployment of eduroam over the last decade in the educational sector may serve as an example for other sectors, hence this document. In particular, the initial architectural choices and selection of standards are described, along with the changes that were prompted by operational experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7593"/>
          <seriesInfo name="DOI" value="10.17487/RFC7593"/>
        </reference>
        <reference anchor="RFC8137" target="https://www.rfc-editor.org/info/rfc8137" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8137.xml">
          <front>
            <title>IEEE 802.15.4 Information Element for the IETF</title>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <author fullname="P. Kinney" initials="P." surname="Kinney"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>IEEE Std 802.15.4 defines Information Elements (IEs) that can be used to extend 802.15.4 in an interoperable manner. The IEEE 802.15 Assigned Numbers Authority (ANA) manages the registry of the Information Elements. This document formulates a request for ANA to allocate a number from that registry for the IETF and describes how the IE is formatted to provide subtypes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8137"/>
          <seriesInfo name="DOI" value="10.17487/RFC8137"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8615.xml">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8995" target="https://www.rfc-editor.org/info/rfc8995" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8995.xml">
          <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="RFC9031" target="https://www.rfc-editor.org/info/rfc9031" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9031.xml">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-edhoc-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-edhoc.xml">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="April" year="2024"/>
            <abstract>
              <t>The lightweight authenticated key exchange protocol Ephemeral Diffie- Hellman Over COSE (EDHOC) can be run over the Constrained Application Protocol (CoAP) and used by two peers to establish a Security Context for the security protocol Object Security for Constrained RESTful Environments (OSCORE). This document details this use of the EDHOC protocol, by specifying a number of additional and optional mechanisms. These especially include an optimization approach for combining the execution of EDHOC with the first OSCORE transaction. This combination reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-11"/>
        </reference>
        <reference anchor="I-D.ietf-lake-reqs" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-reqs-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-reqs.xml">
          <front>
            <title>Requirements for a Lightweight AKE for OSCORE</title>
            <author fullname="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>Inria</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Dan Garcia-Carillo" initials="D." surname="Garcia-Carillo">
              <organization>Odin Solutions S.L.</organization>
            </author>
            <date day="8" month="June" year="2020"/>
            <abstract>
              <t>This document compiles the requirements for a lightweight authenticated key exchange protocol for OSCORE. This draft has completed a working group last call (WGLC) in the LAKE working group. Post-WGLC, the requirements are considered sufficiently stable for the working group to proceed with its work. It is not currently planned to publish this draft as an RFC.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-reqs-04"/>
        </reference>
        <reference anchor="I-D.amsuess-core-coap-over-gatt" target="https://datatracker.ietf.org/doc/html/draft-amsuess-core-coap-over-gatt-07" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.amsuess-core-coap-over-gatt.xml">
          <front>
            <title>CoAP over GATT (Bluetooth Low Energy Generic Attributes)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss"/>
            <date day="25" month="September" year="2024"/>
            <abstract>
              <t>Interaction from computers and cell phones to constrained devices is limited by the different network technologies used, and by the available APIs. This document describes a transport for the Constrained Application Protocol (CoAP) that uses Bluetooth GATT (Generic Attribute Profile) and its use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-over-gatt-07"/>
        </reference>
        <reference anchor="IEEE802.15.4">
          <front>
            <title>IEEE Std 802.15.4 Standard for Low-Rate Wireless Networks</title>
            <author initials="" surname="IEEE standard for Information Technology">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IEEE802.1X">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks - Port-Based Network Access Control</title>
            <author initials="" surname="IEEE standard for Information Technology">
              <organization/>
            </author>
            <date year="2010" month="February"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1082?>

<section anchor="optimization-strat">
      <name>Optimization Strategies</name>
      <t>When ELA is used for zero-touch enrollment of IoT devices, U may have little to no knowledge about V's available in its vicinity.
This may lead to situations where U retries several times at different V's until it finds one that works.
This section presents two optimization strategies for such cases.
They were developed to address scenarios where V's are radio gateways to which U wants to enroll, but may also be applicable to other use cases.</t>
      <section anchor="strat-anycast">
        <name>U broadcasts message_1</name>
        <t>This strategy consists in U broadcasting EDHOC message_1.
When each of the V's in radio range of U receive message_1, one of the following can happen:</t>
        <ul spacing="normal">
          <li>
            <t>V does not implement EDHOC, and drops the message</t>
          </li>
          <li>
            <t>V does not implement ELA, and drops the message (even though the EAD_1 option is critical, broadcast messages should not have error replies)</t>
          </li>
          <li>
            <t>V forwards message_1 to W as VREQ, but W does not authorize it, and error handling is applied</t>
          </li>
          <li>
            <t>V forwards message_1 to W as VREQ, W authorizes it, and the protocol continues normally</t>
          </li>
        </ul>
        <t>U is expected to receive and process at most one message_2 as response, which contains the Voucher.
In case U receives additional message_2's, they MUST be silently dropped.</t>
        <t>This strategy may increase the number of messages that need to be processed by V and W, in exchange for reducing resource usage in U.</t>
        <t>Security concerns related to this strategy, including potential reuse of G_X and double processing of message_2, are discussed in <xref target="sec-cons"/>.</t>
      </section>
      <section anchor="strat-advertise">
        <name>V advertises support for ELA</name>
        <t>In this strategy, V shares some information (V_INFO) with a potential U, that can help it decide whether to try to enroll with that V.</t>
        <t>The exact contents of the V_INFO structure, as well as the mechanism used to transport it, will depend on the underlying communication technology and also on application needs.
For example, V_INFO may state that:</t>
        <ul spacing="normal">
          <li>
            <t>V implements ELA -- similarly to how EAPOL <xref target="IEEE802.1X"/> frames state support for IEEE 802.1X.</t>
          </li>
          <li>
            <t>V is part of a certain domain -- similarly to how Eduroam <xref target="RFC7593"/> is used in the SSID field of IEEE 802.11 packets</t>
          </li>
        </ul>
        <t>V_INFO can be sent over a network beacon (see <xref target="adv-beacon"/>), which may require technology specific profiling, e.g., the IEEE 802.15.4 enhanced beacon may be extended according to <xref target="RFC8137"/>.
Alternatively, V_INFO can be sent as part of an EAD field, as shown in <xref target="adv-ead1"/>.</t>
        <t>As a guideline for implementers, we define the following field that can be included in a V_INFO structure:</t>
        <sourcecode type="cddl"><![CDATA[
DOMAIN_ID: bstr
]]></sourcecode>
        <t>The DOMAIN_ID field identifies the domain to which V belongs to, for example an URL or UUID.</t>
        <t>Below are three examples of how the advertisement strategy may be applied according to different application needs.
The examples include sending V_INFO in network beacons, as part of EAD_1 in reverse message flow, or as part of a periodic CoAP multicast packet.
The advantages, costs, and security impacts of each approach are also discussed.</t>
        <section anchor="adv-beacon">
          <name>V_INFO in network beacons</name>
          <t>This approach allows carrying V_INFO in beacons sent over the network layer, as shown in <xref target="fig-adv-beacon"/>.
It requires that the network layer offers a mechanism to configure its beacon packets.
Depending on the network type, a solicitation packet may also be needed, as is the case of non-beaconed IEEE 802.15.4 and BLE with GATT.</t>
          <figure anchor="fig-adv-beacon">
            <name>Advertising ELA using V_INFO in network-layer beacons.</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="480" viewBox="0 0 480 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 72,32 L 72,64" fill="none" stroke="black"/>
                  <path d="M 72,104 L 72,272" fill="none" stroke="black"/>
                  <path d="M 144,32 L 144,96" fill="none" stroke="black"/>
                  <path d="M 336,32 L 336,96" fill="none" stroke="black"/>
                  <path d="M 400,32 L 400,56" fill="none" stroke="black"/>
                  <path d="M 400,104 L 400,272" fill="none" stroke="black"/>
                  <path d="M 472,32 L 472,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 144,32" fill="none" stroke="black"/>
                  <path d="M 336,32 L 472,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 144,64" fill="none" stroke="black"/>
                  <path d="M 336,64 L 472,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 144,96" fill="none" stroke="black"/>
                  <path d="M 336,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 376,128 L 392,128" fill="none" stroke="black"/>
                  <path d="M 80,176 L 400,176" fill="none" stroke="black"/>
                  <path d="M 72,240 L 392,240" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="400,240 388,234.4 388,245.6" fill="black" transform="rotate(0,392,240)"/>
                  <polygon class="arrowhead" points="400,128 388,122.4 388,133.6" fill="black" transform="rotate(0,392,128)"/>
                  <polygon class="arrowhead" points="88,176 76,170.4 76,181.6" fill="black" transform="rotate(180,80,176)"/>
                  <g class="text">
                    <text x="36" y="52">Init</text>
                    <text x="108" y="52">Client</text>
                    <text x="364" y="52">Resp</text>
                    <text x="436" y="52">Server</text>
                    <text x="72" y="84">U</text>
                    <text x="400" y="84">V</text>
                    <text x="88" y="132">-</text>
                    <text x="104" y="132">-</text>
                    <text x="120" y="132">-</text>
                    <text x="136" y="132">-</text>
                    <text x="152" y="132">-</text>
                    <text x="168" y="132">-</text>
                    <text x="184" y="132">-</text>
                    <text x="200" y="132">-</text>
                    <text x="216" y="132">-</text>
                    <text x="232" y="132">-</text>
                    <text x="248" y="132">-</text>
                    <text x="264" y="132">-</text>
                    <text x="280" y="132">-</text>
                    <text x="296" y="132">-</text>
                    <text x="312" y="132">-</text>
                    <text x="328" y="132">-</text>
                    <text x="344" y="132">-</text>
                    <text x="360" y="132">-</text>
                    <text x="148" y="148">Optional</text>
                    <text x="216" y="148">network</text>
                    <text x="300" y="148">solicitation</text>
                    <text x="128" y="196">Network</text>
                    <text x="200" y="196">discovery</text>
                    <text x="280" y="196">(contains</text>
                    <text x="352" y="196">V_INFO)</text>
                    <text x="192" y="228">EDHOC</text>
                    <text x="256" y="228">message_1</text>
                    <text x="168" y="260">(?EAD_1</text>
                    <text x="208" y="260">=</text>
                    <text x="272" y="260">Voucher_Info)</text>
                    <text x="80" y="308">(</text>
                    <text x="104" y="308">...</text>
                    <text x="156" y="308">protocol</text>
                    <text x="232" y="308">continues</text>
                    <text x="308" y="308">normally</text>
                    <text x="360" y="308">...</text>
                    <text x="384" y="308">)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+-------+--------+                       +-------+--------+
| Init  | Client |                       | Resp  | Server |
+-------+--------+                       +----------------+
|       U        |                       |       V        |
+----------------+                       +----------------+
        |                                        |
        + - - - - - - - - - - - - - - - - - - -->|
        |     Optional network solicitation      |
        |                                        |
        |<---------------------------------------+
        |   Network discovery (contains V_INFO)  |
        |                                        |
        |            EDHOC message_1             |
        +--------------------------------------->|
        |        (?EAD_1 = Voucher_Info)         |
        |                                        |

         ( ... protocol continues normally ... )
]]></artwork>
            </artset>
          </figure>
          <t>This strategy can be used, for example, in IEEE 802.15.4, where an Enhanced Beacon <xref target="IEEE802.15.4"/> can be used to transmit V_INFO.
Specifically, a new information element for carrying V_INFO can be defined according to <xref target="RFC8137"/>.</t>
          <t>This approach has the advantage of requiring minimal changes to the default protocol as presented in <xref target="protocol-overview"/>, i.e., no reverse flow.
It requires, however, some profiling of the lower layer beacons.</t>
        </section>
        <section anchor="adv-ead1">
          <name>V_INFO in EAD_1</name>
          <t>The ELA reverse flow (see <xref target="reverse-u-responder"/>) allows implementing advertising where U first sends a trigger packet, in the format of a CoAP request that is broadcasted to the newtork.
When a suitable V receives the solicitation, if it implements ELA, it should respond with an EDHOC message_1 whose EAD_1 has label TBD1 and value V_INFO (see Section <xref target="optimization-strat"/>).</t>
          <figure anchor="fig-adv-ead1">
            <name>Advertising ELA using V_INFO in EAD_1, eploying the EDHOC reverse flow with U as responder.</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="424" viewBox="0 0 424 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 72,32 L 72,64" fill="none" stroke="black"/>
                  <path d="M 72,104 L 72,224" fill="none" stroke="black"/>
                  <path d="M 144,32 L 144,96" fill="none" stroke="black"/>
                  <path d="M 280,32 L 280,96" fill="none" stroke="black"/>
                  <path d="M 344,32 L 344,56" fill="none" stroke="black"/>
                  <path d="M 344,104 L 344,224" fill="none" stroke="black"/>
                  <path d="M 416,32 L 416,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 144,32" fill="none" stroke="black"/>
                  <path d="M 280,32 L 416,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 144,64" fill="none" stroke="black"/>
                  <path d="M 280,64 L 416,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 144,96" fill="none" stroke="black"/>
                  <path d="M 280,96 L 416,96" fill="none" stroke="black"/>
                  <path d="M 72,128 L 336,128" fill="none" stroke="black"/>
                  <path d="M 80,192 L 336,192" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="344,128 332,122.4 332,133.6" fill="black" transform="rotate(0,336,128)"/>
                  <polygon class="arrowhead" points="88,192 76,186.4 76,197.6" fill="black" transform="rotate(180,80,192)"/>
                  <g class="text">
                    <text x="36" y="52">Resp</text>
                    <text x="108" y="52">Client</text>
                    <text x="308" y="52">Init</text>
                    <text x="380" y="52">Server</text>
                    <text x="72" y="84">U</text>
                    <text x="344" y="84">V</text>
                    <text x="116" y="148">CoAP</text>
                    <text x="228" y="148">discovery/solicitation</text>
                    <text x="160" y="180">EDHOC</text>
                    <text x="224" y="180">message_1</text>
                    <text x="160" y="212">(?EAD_1</text>
                    <text x="200" y="212">=</text>
                    <text x="240" y="212">V_INFO)</text>
                    <text x="48" y="260">(</text>
                    <text x="72" y="260">...</text>
                    <text x="120" y="260">reverse</text>
                    <text x="172" y="260">flow</text>
                    <text x="232" y="260">continues</text>
                    <text x="308" y="260">normally</text>
                    <text x="360" y="260">...</text>
                    <text x="384" y="260">)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+-------+--------+                +-------+--------+
| Resp  | Client |                | Init  | Server |
+-------+--------+                +----------------+
|       U        |                |       V        |
+----------------+                +----------------+
        |                                 |
        +-------------------------------->|
        |   CoAP discovery/solicitation   |
        |                                 |
        |        EDHOC message_1          |
        +<--------------------------------|
        |       (?EAD_1 = V_INFO)         |
        |                                 |

     ( ... reverse flow continues normally ... )
]]></artwork>
            </artset>
          </figure>
          <t>Note that V will only reply if it supports ELA.
V_INFO can be structured to contain only an optional domain identifier:</t>
          <sourcecode type="cddl"><![CDATA[
V_INFO = (
  ?DOMAIN_ID: bstr,
)
]]></sourcecode>
          <t>This approach enables a simple filtering mechanism, where only V's that support ELA will reply.
It also encrypts Voucher_Info (as part of EAD_2), whereas it is sent in the clear in the original flow.
In addition, it may not require layer-two profiling (in case the network allows transporting data before authorization).
Finally, note that the reverse flow with U as Responder protects the identity of V (instead of U's as in the forward flow).</t>
        </section>
        <section anchor="adv-coap-mult">
          <name>V_INFO in a CoAP Multicast Packet</name>
          <t>In this approach, V periodically multicasts a CoAP packet containing V_INFO, see <xref target="fig-adv-coap-mult"/>.
Upon receiving one or more CoAP messages and processing V_INFO, U can decide whether or not to initiate the ELA protocol with a given V.
Next, the application can either keep U acting as a server, and thus employ the EDHOC reverse flow, or implement a CoAP client and use the forward flow.</t>
          <figure anchor="fig-adv-coap-mult">
            <name>Advertising ELA using the network layer.</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="512" viewBox="0 0 512 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
                  <path d="M 80,104 L 80,240" fill="none" stroke="black"/>
                  <path d="M 160,32 L 160,96" fill="none" stroke="black"/>
                  <path d="M 352,32 L 352,96" fill="none" stroke="black"/>
                  <path d="M 424,32 L 424,56" fill="none" stroke="black"/>
                  <path d="M 424,104 L 424,240" fill="none" stroke="black"/>
                  <path d="M 504,32 L 504,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 160,32" fill="none" stroke="black"/>
                  <path d="M 352,32 L 504,32" fill="none" stroke="black"/>
                  <path d="M 8,64 L 160,64" fill="none" stroke="black"/>
                  <path d="M 352,64 L 504,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 160,96" fill="none" stroke="black"/>
                  <path d="M 352,96 L 504,96" fill="none" stroke="black"/>
                  <path d="M 88,144 L 424,144" fill="none" stroke="black"/>
                  <path d="M 80,208 L 416,208" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="424,208 412,202.4 412,213.6" fill="black" transform="rotate(0,416,208)"/>
                  <polygon class="arrowhead" points="96,144 84,138.4 84,149.6" fill="black" transform="rotate(180,88,144)"/>
                  <g class="text">
                    <text x="44" y="52">Init</text>
                    <text x="120" y="52">Cli/Ser</text>
                    <text x="388" y="52">Resp</text>
                    <text x="464" y="52">Cli/Ser</text>
                    <text x="80" y="84">U</text>
                    <text x="424" y="84">V</text>
                    <text x="180" y="132">POST</text>
                    <text x="276" y="132">/ela-advertisement</text>
                    <text x="140" y="164">CoAP</text>
                    <text x="200" y="164">multicast</text>
                    <text x="280" y="164">(contains</text>
                    <text x="352" y="164">V_INFO)</text>
                    <text x="216" y="196">EDHOC</text>
                    <text x="280" y="196">message_1</text>
                    <text x="192" y="228">(?EAD_1</text>
                    <text x="232" y="228">=</text>
                    <text x="296" y="228">Voucher_Info)</text>
                    <text x="88" y="276">(</text>
                    <text x="112" y="276">...</text>
                    <text x="164" y="276">protocol</text>
                    <text x="240" y="276">continues</text>
                    <text x="316" y="276">normally</text>
                    <text x="368" y="276">...</text>
                    <text x="392" y="276">)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+--------+---------+                       +--------+---------+
|  Init  | Cli/Ser |                       |  Resp  | Cli/Ser |
+--------+---------+                       +------------------+
|        U         |                       |        V         |
+------------------+                       +------------------+
         |                                          |
         |          POST /ela-advertisement         |
         |<-----------------------------------------+
         |     CoAP multicast (contains V_INFO)     |
         |                                          |
         |              EDHOC message_1             |
         +----------------------------------------->|
         |          (?EAD_1 = Voucher_Info)         |
         |                                          |

          ( ... protocol continues normally ... )
]]></artwork>
            </artset>
          </figure>
          <t>The V_INFO structure is sent as part of the CoAP payload.
It is encoded as a CBOR sequence:</t>
          <sourcecode type="cddl"><![CDATA[
V_INFO = (
  ?DOMAIN_ID: bstr,
)
]]></sourcecode>
          <t>One advantage of this approach is that, since U is the initiator, its identity is protected in the context of the EDHOC handshake.
On the other hand, the periodic multicast may have resource usage impacts in the network.</t>
        </section>
      </section>
    </section>
    <section anchor="use-with-constrained-join-protocol-cojp">
      <name>Use with Constrained Join Protocol (CoJP)</name>
      <t>This section outlines how ELA is used for network enrollment and parameter provisioning.
An IEEE 802.15.4 network is used as an example of how a new device (U) can be enrolled into the domain managed by the domain authenticator (V).</t>
      <figure anchor="fig-cojp">
        <name>Use of draft-ietf-lake-authz with CoJP.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="560" viewBox="0 0 560 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,400" fill="none" stroke="black"/>
              <path d="M 304,48 L 304,384" fill="none" stroke="black"/>
              <path d="M 552,48 L 552,384" fill="none" stroke="black"/>
              <path d="M 280,80 L 296,80" fill="none" stroke="black"/>
              <path d="M 16,112 L 304,112" fill="none" stroke="black"/>
              <path d="M 8,160 L 296,160" fill="none" stroke="black"/>
              <path d="M 304,192 L 544,192" fill="none" stroke="black"/>
              <path d="M 312,224 L 552,224" fill="none" stroke="black"/>
              <path d="M 16,256 L 304,256" fill="none" stroke="black"/>
              <path d="M 8,320 L 296,320" fill="none" stroke="black"/>
              <path d="M 16,368 L 296,368" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="552,192 540,186.4 540,197.6" fill="black" transform="rotate(0,544,192)"/>
              <polygon class="arrowhead" points="320,224 308,218.4 308,229.6" fill="black" transform="rotate(180,312,224)"/>
              <polygon class="arrowhead" points="304,320 292,314.4 292,325.6" fill="black" transform="rotate(0,296,320)"/>
              <polygon class="arrowhead" points="304,160 292,154.4 292,165.6" fill="black" transform="rotate(0,296,160)"/>
              <polygon class="arrowhead" points="304,80 292,74.4 292,85.6" fill="black" transform="rotate(0,296,80)"/>
              <polygon class="arrowhead" points="24,368 12,362.4 12,373.6" fill="black" transform="rotate(180,16,368)"/>
              <polygon class="arrowhead" points="24,256 12,250.4 12,261.6" fill="black" transform="rotate(180,16,256)"/>
              <polygon class="arrowhead" points="24,112 12,106.4 12,117.6" fill="black" transform="rotate(180,16,112)"/>
              <g class="text">
                <text x="8" y="36">U</text>
                <text x="304" y="36">V</text>
                <text x="552" y="36">W</text>
                <text x="24" y="84">-</text>
                <text x="40" y="84">-</text>
                <text x="56" y="84">-</text>
                <text x="72" y="84">-</text>
                <text x="88" y="84">-</text>
                <text x="104" y="84">-</text>
                <text x="120" y="84">-</text>
                <text x="136" y="84">-</text>
                <text x="152" y="84">-</text>
                <text x="168" y="84">-</text>
                <text x="184" y="84">-</text>
                <text x="200" y="84">-</text>
                <text x="216" y="84">-</text>
                <text x="232" y="84">-</text>
                <text x="248" y="84">-</text>
                <text x="264" y="84">-</text>
                <text x="76" y="100">Optional</text>
                <text x="144" y="100">network</text>
                <text x="228" y="100">solicitation</text>
                <text x="120" y="132">Network</text>
                <text x="192" y="132">discovery</text>
                <text x="112" y="180">EDHOC</text>
                <text x="176" y="180">message_1</text>
                <text x="368" y="212">Voucher</text>
                <text x="432" y="212">Request</text>
                <text x="492" y="212">(VREQ)</text>
                <text x="368" y="244">Voucher</text>
                <text x="436" y="244">Response</text>
                <text x="500" y="244">(VRES)</text>
                <text x="112" y="276">EDHOC</text>
                <text x="176" y="276">message_2</text>
                <text x="56" y="340">EDHOC</text>
                <text x="120" y="340">message_3</text>
                <text x="168" y="340">+</text>
                <text x="196" y="340">CoJP</text>
                <text x="248" y="340">request</text>
                <text x="124" y="388">CoJP</text>
                <text x="180" y="388">response</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
U                                    V                              W
|                                    |                              |
|                                    |                              |
+ - - - - - - - - - - - - - - - - -->|                              |
|    Optional network solicitation   |                              |
|<-----------------------------------+                              |
|          Network discovery         |                              |
|                                    |                              |
+----------------------------------->|                              |
|          EDHOC message_1           |                              |
|                                    +----------------------------->|
|                                    |    Voucher Request (VREQ)    |
|                                    |<-----------------------------+
|                                    |    Voucher Response (VRES)   |
|<-----------------------------------+                              |
|          EDHOC message_2           |                              |
|                                    |                              |
|                                    |                              |
+----------------------------------->|                              |
|   EDHOC message_3 + CoJP request   |                              |
|                                    |                              |
+<-----------------------------------|                              |
|            CoJP response           |                              |
|
]]></artwork>
        </artset>
      </figure>
      <section anchor="network-discovery">
        <name>Network Discovery</name>
        <t>When a device first boots, it needs to discover the network it attempts to join.
The network discovery procedure is defined by the link-layer technology in use.
In case of Time-slotted Channel Hopping (TSCH) networks, a mode of <xref target="IEEE802.15.4"/>, the device scans the radio channels for Enhanced Beacon (EB) frames, a procedure known as passive scan.
EBs carry the information about the network, and particularly the network identifier.
Based on the EB, the network identifier, the information pre-configured into the device, the device makes the decision on whether it should join the network advertised by the received EB frame.
This process is described in <xref section="4.1" sectionFormat="of" target="RFC9031"/>.
In case of other, non-TSCH modes of IEEE 802.15.4, it is possible to use the active scan procedure and send solicitation frames.
These solicitation frames trigger the nearest network coordinator to respond by emitting a beacon frame.
The network coordinator emitting beacons may be multiple link-layer hops away from the domain authenticator (V), in which case it plays the role of a Join Proxy (see <xref target="RFC9031"/>).
The Join Proxy does not participate in the protocol and acts as a transparent router between the device and the domain authenticator.
For simplicity, <xref target="fig-cojp"/> illustrates the case when the device and the domain authenticator are a single hop away and can communicate directly.</t>
      </section>
      <section anchor="the-enrollment-protocol-with-parameter-provisioning">
        <name>The Enrollment Protocol with Parameter Provisioning</name>
        <section anchor="flight-1">
          <name>Flight 1</name>
          <t>Once the device has discovered the network it wants to join, it constructs EDHOC message_1, as described in <xref target="U-V"/>.
The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa". This is an anycast type of identifier of the domain authenticator (V) that is resolved to its IPv6 address by the Join Proxy.</t>
            </li>
            <li>
              <t>By means of Uri-Path options, the Uri-Path is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The payload is the (true, EDHOC message_1) CBOR sequence, where EDHOC message_1 is constructed as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-2">
          <name>Flight 2</name>
          <t>The domain authenticator receives message_1 and processes it as described in <xref target="U-V"/>.
The message triggers the exchange with the enrollment server, as described in <xref target="V-W"/>.
If the exchange between V and W completes successfully, the domain authenticator prepares EDHOC message_2, as described in <xref target="U-V"/>.
The authenticator SHALL map the message to a CoAP response:</t>
          <ul spacing="normal">
            <li>
              <t>The response code is 2.04 Changed.</t>
            </li>
            <li>
              <t>The payload is the EDHOC message_2, as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-3">
          <name>Flight 3</name>
          <t>The device receives EDHOC message_2 and processes it as described in <xref target="U-V"/>.
Upon successful processing of message_2, the device prepares flight 3, which is an OSCORE-protected CoJP request containing an EDHOC message_3, as described in <xref target="I-D.ietf-core-oscore-edhoc"/>.
EDHOC message_3 is prepared as described in <xref target="U-V"/>.
The OSCORE-protected payload is the CoJP Join Request object specified in <xref section="8.4.1" sectionFormat="of" target="RFC9031"/>.
OSCORE protection leverages the OSCORE Security Context derived from the EDHOC session, as specified in Appendix A of <xref target="RFC9528"/>.
To that end, <xref target="I-D.ietf-core-oscore-edhoc"/> specifies that the Sender ID of the client (device) must be set to the connection identifier selected by the domain authenticator, C_R.
OSCORE includes the Sender ID as the kid in the OSCORE option.
The network identifier in the CoJP Join Request object is set to the network identifier obtained from the network discovery phase.
In case of IEEE 802.15.4 networks, this is the PAN ID.</t>
          <t>The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa".</t>
            </li>
            <li>
              <t>The Uri-Path option is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The EDHOC option <xref target="I-D.ietf-core-oscore-edhoc"/> is set and is empty.</t>
            </li>
            <li>
              <t>The payload is prepared as described in <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-edhoc"/>, with EDHOC message_3 and the CoJP Join Request object as the OSCORE-protected payload.</t>
            </li>
          </ul>
          <t>Note that the OSCORE Sender IDs are derived from the connection identifiers of the EDHOC session.
This is in contrast with <xref target="RFC9031"/> where ID Context of the OSCORE Security Context is set to the device identifier (pledge identifier).
Since the device identity is exchanged during the EDHOC session, and the certificate of the device is communicated to the authenticator as part of the Voucher Response message, there is no need to transport the device identity in OSCORE messages.
The authenticator playing the role of the <xref target="RFC9031"/> JRC obtains the device identity from the execution of the authorization protocol.</t>
        </section>
        <section anchor="flight-4">
          <name>Flight 4</name>
          <t>Flight 4 is the OSCORE response carrying CoJP response message.
The message is processed as specified in <xref section="8.4.2" sectionFormat="of" target="RFC9031"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="example-of-opaquestate">
      <name>Example of opaque_state</name>
      <t>As per <xref target="stateless-v"/>, V may act statelessly and transmit a opaque_state to W during the VREQ call.
The example below contains an IPv4 address, a port number, and a timestamp, serialized as CBOR:</t>
      <artwork><![CDATA[
83             # array(3)
   84          # array(4)
      18 C0    # unsigned(192)
      18 A8    # unsigned(168)
      00       # unsigned(0)
      05       # unsigned(5)
   19 5A18     # unsigned(23064)
   1A 6867EEE4 # unsigned(1751641828)
]]></artwork>
      <t>The above plaintext state can be encrypted using COSE.
Speficially, it is useful that the plaintext is not only encrypted but also authenticated.
That can be achieved using COSE_Encrypt0 using an AEAD algorithm.</t>
    </section>
    <section anchor="examples-of-protocol-execution">
      <name>Examples of protocol execution</name>
      <t>This section presents high level examples of the protocol execution.</t>
      <t>Note: the examples below include samples of access policies used by W. These are provided for the sake of completeness only, since the authorization mechanism used by W is out of scope in this document.</t>
      <section anchor="example_minimal">
        <name>Minimal</name>
        <t>This is a simple example that demonstrates a successful execution of ELA.</t>
        <t>Premises:</t>
        <ul spacing="normal">
          <li>
            <t>device u1 has ID_U = key id = 14</t>
          </li>
          <li>
            <t>the access policy in W specifies, via a list of ID_U, that device u1 can enroll via any domain authenticator, i.e., the list contains ID_U = 14.
In this case, the policy only specifies a restriction in terms of U, effectively allowing enrollment via any V.</t>
          </li>
        </ul>
        <t>Execution:</t>
        <ol spacing="normal" type="1"><li>
            <t>device u1 discovers a gateway (v1) and tries to enroll</t>
          </li>
          <li>
            <t>gateway v1 identifies the zero-touch join attempt by checking that the label of EAD_1 = TBD1, and prepares a Voucher Request using the information contained in the value of EAD_1</t>
          </li>
          <li>
            <t>upon receiving the request, W obtains ID_U = 14, authorizes the access, and replies with Voucher Response</t>
          </li>
        </ol>
      </section>
      <section anchor="example_wrong_gateway">
        <name>Wrong gateway</name>
        <t>In this example, a device u1 tries to enroll a domain via gateway v1, but W denies the request because the pairing (u1, v1) is not configured in its access policies.</t>
        <t>This example also illustrates how the REJECT_INFO field of the EDHOC error Access Denied could be used, in this case to suggest that the device should select another gateway for the join procedure.</t>
        <t>Premises:</t>
        <ul spacing="normal">
          <li>
            <t>devices and gateways communicate via Bluetooth Low Energy (BLE), therefore their network identifiers are MAC addresses (EUI-48)</t>
          </li>
          <li>
            <t>device u1 has ID_U = key id = 14</t>
          </li>
          <li>
            <t>there are 3 gateways in the radio range of u1:
            </t>
            <ul spacing="normal">
              <li>
                <t>v1 with MAC address = A2-A1-88-EE-97-75</t>
              </li>
              <li>
                <t>v2 with MAC address = 28-0F-70-84-51-E4</t>
              </li>
              <li>
                <t>v3 with MAC address = 39-63-C9-D0-5C-62</t>
              </li>
            </ul>
          </li>
          <li>
            <t>the access policy in W specifies, via a mapping of shape (ID_U; MAC1, MAC2, ...) that device u1 can only join via gateway v3, i.e., the mapping is: (14; 39-63-C9-D0-5C-62)</t>
          </li>
          <li>
            <t>W is able to map the PoP key of the gateways to their respective MAC addresses</t>
          </li>
        </ul>
        <t>Execution:</t>
        <ol spacing="normal" type="1"><li>
            <t>device u1 tries to join via gateway v1, which forwards the request to W</t>
          </li>
          <li>
            <t>W determines that MAC address A2-A1-88-EE-97-75 is not in the access policy mapping, and replies with an error. The error_content has REJECT_TYPE = 1, and the plaintext OPAQUE_INFO (used to compute the encrypted REJECT_INFO) specifies a list of suggested gateways = [h'3963C9D05C62']. The single element in the list is the 6-byte MAC address of v3, serialized as a bstr.</t>
          </li>
          <li>
            <t>gateway v1 assembles an EDHOC error "Access Denied" with error_content, and sends it to u1</t>
          </li>
          <li>
            <t>device u1 processes the error, decrypts REJECT_INFO, and retries the protocol via gateway v3</t>
          </li>
        </ol>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Aurelio Schellenbaum"/> for his contribution in the initial phase of this work, and Marco Tiloca for extensively reviewing the document.
We also thank Christian Amsüss for his active participation in discussions that led to improvements in the document.</t>
      <t>Work on this document has in part been supported by the Horizon Europe Framework Programme project OpenSwarm (grant agreement No. 101093046).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+W923Ib2bUg+I6vyKEipsgSAPEiqST6lMsUiSrRJYk0r66w
HYwkkCTTSmTiZCZIwZI6+q2f+r37aWZ+Yp76qU/Pj/SXzLruWyZAUCX7OLpp
h4oEMvdee++11/3S6/U6dVpnyXb0Jr2+qe8S/DfamdY3RZn+La7TIo+mVZpf
R4PJTTJOyjiL9tKrqzTpvU6ybBzn0cFtUka7B8eDaHXwZmetMyqGeTyGEUdl
fFX30qS+6mXx+6QXw6h/660/68SXl2Vyux3B4510Um5HdTmt6s319Zfrm51h
XG9HVT3qVNPLcVpVAEE9m8Bw+4OTHztxmcTb0XEynJZpPevcFeX767KYTgD+
nZ8H0Tn8jcD+hJ913iczeGAEr+Z1UuZJ3dtDkDrDYgQPbUdTgOxFZ5JuR4+i
YYwLTaK4LONZtJpeRXGWRbOkWouKMrqJq5voJimTThTVxXAbv4Bfq6Ksy+Sq
Mn/Pxu6f8OQomdQ329FmpxPTnm53ehHvzk//9v+WMOdxksX5KCnx7WnJXzmf
FSXAOSjTYVXBSey8go+GxTSvyxk8dpeMkhw+ScZxmm1H1wUM2K/k5d8l8lZ/
WIzNrL8vbvLosEym//Z/RW/jusYHYIQ0T+s0zgDy37uANB98CDx/hbn6Y3m3
HZy3cZb+f/9PHJ1N/8d/Bhj+x39yZ3c/pHn33x3t77gz/ggLHiZ2xjEMV8X9
2+kQ3hv+Ls3LNO5flXbPk+I2zpPox2RUJsObpHqfuhP6Hy835TUP2b+y7zbn
fZsOb+Iki47wv+WIt9JM631Ksx7jCdLlOi6u6jtAesLsygVkN87jUeysfVg+
xrv2u0pf7g/jTqeTFyWcQXqbbHfg4aMfd19sPX++rb++3NRfXz59Kb++XH9m
Pn2+saWfPtt8gb++2z8+6b1YX+89e76Df0eRYnZEPz35LyIV4NOgH72Ky/eE
zPzDix5kcQon4X0XvPqmH+3eEEK5L75Js5n7efDSTj86Kq7h1/ez4MWdLEvy
8Mvm22cx0JwsuQ3fnhRVXWTh18H7R/1oL75Nq+BlOWHnOyG6RwnchnGSj5jS
XgGpOYzTsneeAin6OZn1BlUdXwJS38BDdXQ8RBpcRadEkffSalgmdRK9Ka5j
IIc342i3nE3q4rqMJzezqEdnFR1PkiHc7ehwCgMNeSI5vy4AABDhJ1sEFsAB
UG2ub7zorT9lQOPyOgGKfFPXk2r7yZP8NptML6t+nlZ1/7q4fYK/4CdPZB5n
muoJAtA/PuzLfOVWfzK66nTS/CrEys2NDcW/rY3vFP8A59bl1+ffPd+QX7/b
ZFTEX5+9VAR9sbH1nfn1u6f669Onzy0yr9tfnxnEf/nMIP4WTbHf2+sT2xoW
ZdIrKvpPMroBwu9+S0ytTP610k/jcTVNqopfGxbxpFcAb+xdAwmkRwaDwYv1
zf7Gs/7TbRcLVvCb6LgeRfo1/AG3GFEGUeJNcdc7gpOJztMyyWCG6F1SI+ur
VlouICEiD1m5o+zrpsNpnwCpyousuJ6tuID9sRUsD5IhYBJ8EI2TuiwmRZbC
1xFy5SgXmADvDoEv9l7FVTJSSKOd4RAB3wVuXhbZioNtPyaX5TQuZ4h2619h
PZ3bJJ8m+LZIBiuhaANXCTEUoIMrFg0+wOXMrxOEiSWNFU+MwM+ZxK7gif8O
z74PZBo/j8shcPcVvRz4GH4EeN3Xx57gB08uy+KuSp7gAE/wxWu4rtNLGbJ3
B0+hcITfZABYVTuDyhN9fqWfFvzsk1bxqn9Tj2F3O71eL4ovq7qMh3Wns5Ts
tvf6YHctSqsojjJnw2Jvw0CkihLZsGhSFiDiAFFMQb4CpsPnglJUmgOjynF6
IPKjqBomOVCooup3Tm5gBhARp0TQKqQZAFB1v/iJ4LGEiYPQ5MNkNAXWCIIa
bK5gTfo3fDrJAckymqK4Asy8i0ZA6AADZTRYEiwDgCbaNylgAfDEFQELsNNk
/Q5MRvsxmSBFu8wSkOiivyVl0auL6fAmKvLLArARBwxmgedibwfkckTAOeAc
rgkGFHrhLg0B6gqxvIaFwKNxDeiWT6/g5HB1dTpO+nyg43Q0ypJO5xEKtGUx
mg5pg6KPj1L8+zNw+x/hANx594sTAGqSFTPcjCr6+FHo5+fPtAlIoG6SeER3
mra0og0a4j1NL6d45pezqBKB2xx5BTDOosskqtLrHE4QxOe6G93dAKOLxgUQ
dsRimkGOWBgP7JOLXHa4+gbWjYJOMYEV0yl28SgmcQm4N4Vr1QWaU1XxtQP0
apUksKQmRf78eS1EtVEC3DK9fBiqdeEYLaIhdsfTaxxOkWj+TQlumndxeAY6
CxSr4Czu4HLDgCnQNlzxrIdiRoXjxC6EgAiElPltkd0meFUZ4xDOUQHkJ3eh
KGDP8FxheudCVEkJ+8eXiN+mh9pejyZJiUQ2Gk/rKRJ++yVuF43tggfTKdiA
NHTJwnn5oGFPb1M4kQj5GcjPtT9OlDq0He5SbUFdjaOVW7x9SbmyRhDI9x7g
/QhXdwPH0sMblwFOgkyMl7kC5AJkwrdeHR3/vM+ngELA58+wu/s5noJFG8Dp
hC4UQFvSPCwQEclD4qpiG6N+sIoK7n2CdBFmg7uyYndjpUtvJR/i8QToyl+B
AiFKGS5K3+J0V2kJVAKJQLSa9K/7XUEbEFUAybsRXNEorUl9hRmIVPF8Cgpc
FxinbIEbqDEhQfOM8G6XyaRMKvwQwXAoUomX2J5IF/XjqhjrPIS+jM/uKcaX
xbR2D/KqLMa6ax4tRGUb1gKyOgDQI0xBKk2U2cMFRuFVRty1AHObS8C14cSC
e2Ur3EOWTzI6DBZZZE49GLgjDLWzFjho3kR4Ta4oXITpOFG65t+bSxgK1+fc
Ph94GE9uHqyatrJBMfhmM89iQosnC5K/ktkmF7eIaUmaZYeDD2gjgUvuk8S9
uI6BFu7srQEqJtmoauGTtGDg8MAhSXoo7gypJnUViYGsh/bVmwCX4WAgk3zk
hBmv3N+7LjFKpP2wRHi2Sv51muSIhXwosHOoUcml1DPjk+x39uvoalrScZcJ
yCmVFWGADjGHJLykhXWBW8fE3QEFStgv2DOzsApuVgUSgMdt4fzf861KnaEb
IkQMKxsl0S2IRAngHKykSmpkKRWfqlzmMbzFd3kEvCQpkwaZJFmzTuha4ryP
HoEkjJtMonCEkkFt//7M1x05EZrFqmjl7enxCVAi+m/07oB+Pxr84XT/aLCH
vx+/3nnzxvyiTxy/Pjh9s2d/s2/uHrx9O3i3xy/Dp1Hw0dudX1Z4iSsHhyf7
B+923qzgKXokl6QAJphErCao48INqQwLJ9x7tXsYbTzlK4HKIzBRJuWg+yFD
BaThqYo8m8mfcPIzPIsEGADyuiyDvZ6ACpPhzgNzuCnucrLzwWYeweEnIJkh
OMkHkGJqPoyb+BbvbDRFKxtpJCIA7r46OFJ28vQlXtHdvb038gnonnppG3e5
39kBmGCcD9FufwOHckUDJEmAXhUTq8u4SodEWYWk4qx49NGh4tvBtM7QtvLx
UcG/ycFfF3C7YXARa2EpfGcBH1cnRY2XDHZk5mL0mmG7p2v8Al5UJsRG4kBx
LBB38SL4EoYjG1Vy5+GGoqzso7TwltW8yHs+IG3yyerZmopOwO6TbMKUTwQE
BOk2mTVpjsOYGEp9AVlPbGQEWGuCaAHT8iFuPX8OB4IsFzBlmo0QR1U4gJ2c
gZhR4ifjCbBKWX+rVIY4Py0RQb19qX2RzLBwAKGufCqpnJCGF0ZuyTqSHEcS
i1v2s8n1V8/XgHaz9IogR8E7hpxeJjcpCl5zl8eCCspu8Iga37vCefE4Fsh3
fGYMQm2PxpP1WnEBDgp5uGKQkl/Zm+Lyr3CDQTHn7116w3eB9RRQdaYkkRjq
TQwcHnG5aXErwmCI813cbWQtpIQqS8E715D4cTmoWd2kV6RNNJQblTuCQ0Bk
0zXKgfQ7x6AHpVk2xacEw2Gyq/SaLFC3aXJH0u07uOUMN6mtcZYy+2HxgXQK
1j9AI+9H+7RuS/pwI+buPgq6FZPHfEQ0JUOBE6ik6viAP9PxJYuPoiez+Epq
VXQNZ2NEIrTDRCTFOWJn2gIPyIURvX4F2ndeoEpxU4Ao2cBuZI//wf5EcVzd
XneMnVZ/zhjbGp+jsanzuGd+HvPHn+hf53P9UsZp+a7zyY76yf3Pp8j/gb+P
ULqB1TS/w1H2eK90igL/+S09uccnFMBG3w3sxvAoZsh/0TFoBTve6dKX3tKP
mWYoLMQgdLrHznz41dmaWZHZF/3uXL9r7Msn949wX6oJXImkZV/CM9InWs7I
/DTPyB9VkcLBn87H7eiRe7/YaPr9yoH+LddKr/UVSMV9IQMpmqGSkRLIkIgY
/eCUiMRZ3+zaPrF9/Ew+QNmkErGZx75XjGfV2JvnjMY8J321qF14+iswBdGY
HhCL6/z7lWGC5HwFbU0gc+ygljMhZdKwICP0XsbOIq8KtNIhoUOtLvkAvAn/
AP2fXQUGGJcXnK5151McRKtY2FArM+tGbB7CYyIFk2jgt7Kt50aQA4oCwjlQ
FwVmGx4hRSKHV4H0iA4GTIF8GyRBw/Ge6wQMLo7+rdlLHTwdB4MrdzS7c5dc
Roc/74scg3DC57s70TABOnzFkoGZiTaCTL08naAIkV86PJkXLXUAVTGtzMR4
8K5akqhriZQ2faqBfKDdxWjrZHSub0oARFgEKSrXeDI4KFNl1L6muWq6RjYT
G8Qd6DLTUlVOh0WfqT3R6EisfA9L9CmTb5q57hyZRFjJqQ6TgQgn8nrb08Dc
0O6CCCPodwcbIaqe2GiZUzrmXlAV4ssUeCYuXaUIs52hmlBNJ5MCxBGYOq8k
kAHfcldEuuYZPn2KssBtnE0Td4P4SqvZUHXcuxRFcJIxPRKDKikaexPRSPgu
MSt15yXi084OLeEbhJdCzU8Es1xQhz2vdYQ4/0vv4T+/BcLdSuuX/RG6/7hB
2hfSffOl+W8Lc275494vXe5MXwIO9syTDneGv4Xi9vjL+ew5igwWwx8Be/a/
xJ85/BknFCne8mCHPze/nM+gv3Bv7jupx8udVOvoCyYOoJBn5mDrbxchssFW
+nlXNEmtfrcfEv+GXNn2IxdN+QIxirVW4YPNpi2SRzuPvYebP1KcRVz5+Ei4
GvD1wlNTkVyddQM+HZUg6Kt4w4SHtGeAZZ9iixBNW+x5LlnaPRrsXZx6hnE0
mER/7D9bf+myQ9ajMDYA9CiS/sn0cg4bdlK8B961unt+0lWd/eUmeoNkdOQP
wQyXpA6VKavKTINhCft7F/TKvlXfhNBebOGkl2JJFts0bopaQubwqK7r/Yvd
laf0C+hIpT8z+bcui7oGkktWITx05Tjk4+oAm86qwqpfMtQMLQZJdoUfnbPI
p7ZqOxcJoexoAE4G/4eZT/nhybScFBWfH24bfIkPnothTrn0KGH7Igzr+gSM
O6vylmZtPbxhYk2ih0HK3ZfzoQkAa8nkOaR5FDWy9H3i7I+ResUReJywQ2ar
/6y/ibAbdXuty4jS3ATiZ7FjYsWQnagC7gq4wcYAQOzT/d7zp85rFW09rgh3
30WEOZ6P820UPXcwhAFwXyXJvddGmIxWf7oAWktngnuj0hn7XpN5glWL5Mt7
cdo7Jwz5loI2Gl41649pGeHNwS7CQhq2GKMJLrgfZ2wMR5HwXCRKtJ/MJgAZ
Gg/j6PRon2QxPMk4I20E7S4ZnSsZYx2RHjebDdfCFXcaMj5QIkfqbSVHp/eo
CfOJE2uS6A1i4pTfR5/O1B7Ll9jXCM5UTj+7AKJjBe5bDgk4Zam3qKrEiIMs
B5O/nEYZFmXJMIk0Sg94szAcfYXH7r0hArDRJHaiAMrodOrcFbZOmWt0FH0v
Qyn0C64RCJl0JdFGzvpiC/drqhCqFZGa4mF3rPi9SuqW7DXapfAN9mlp4AHJ
1mt4AHliPa+4QaoPi8HkiTEQWBXjR3b8oIW2K5BUjqJBHkK8+c0Dp2twFpG/
iLDkNFolvWI8mYo9TeZf6zrqGI1Oh09E+KuefYdtc457RaEMDMo4sfXxzVlg
rOuyJkIx9Q1vCiSXJFG4gR8xEEvQPsQR2tQwJELsphhVjqnc0JA+xakYDozR
QiDkGN0ZGBeOfvLm2BywEkFQhPKExz8sDuna57oMCl1qCAtdYyRQJo5gOfSM
ggKugUjBBD0StvqdY/ILX5kzS5HfwYFfprnoi96WoLrHAIo9R/EztLCgkpix
WZ4stLhlVQ/vQoKOhQSNRB0QtI/95YbDfEJnT3HVg/8fWoyy2iQ+cSKnIpvz
ad7yQa7v9ez/YfI/7f0Ft36jv8Vo0Rr8gcoo0gDaP1p1lpLzTi1J6nJPyj7D
i053mpPHx0/hmtZlqhoz4pETCCQKNL8DQtCNAmZ8aGpKaZx5hYOfReTW9HgF
X4XYHng/8lf8wGUdTdGBLVtrbjb6NCaKPjBwzzGP8Iniuzv5jK+Ot9DmwrrR
Lv+LMi1ch93dY31dDlNkJlLraT0MD8J8cLx7cDRorCo1Mrm3sFK5YZ+1o50M
OP1opiETFkDXSFEl9dSs1r+n9yxz8TJQyXHuh6o5A6YadANvirul7x4oP3hX
v1/JIvgfqjxE6kh+M/TOyFpzb7Dal4r8upel6C/BzymagGXp8TSrU4zpUZ9i
yTypelIKU0LZ8YDsYSA+x2mmxIQvtMMiiKHy3VBKjaRMObtzuylwbkqfVMNi
0nRy9UXDc+wLx9br9/ER5+YwYn+eFxaEj7JncTp2fOEuGxOBtsHJQLZ1QjQe
KuSqnulJtnAYJozMCFe+n3eUDDm6nRQ+ux7WOFQWpAg3z28sE8mfNJlvTsfA
5yGaARsbb9QpZ+d35omU7An3F21CLRXIIO4hNAKDygvcM8MQSRFGBGwr5dhA
JtVgN2hiy/7pQGQ7fGIWyHIqIpqtIYv6OZNawBHUPOk2WZ4Miob13M6/YOc8
QftoNBDamb+O/NTpnHvCcnyLgdtIZBy6lnwAWGtvKjH1NuXbR6Q0mwiMj4+M
kk63zphm7BfWMcu3DYMyzAQUU1CJKxsN7gYpZPVVdF2IjdcJmAIVc4PV9/Yz
dMw1CPicyDlQmDqb/fkitY7W7o1ppRqdLbhAuY1/hXUJAvWUxjm6KQqEw2w6
0oPQW8kWje685czxAQGlSmMnIrUBNhxfaFixhCXm8JZ5Hj2h4Hp5UJRktKb1
SviNNSDB9+zmpnusapavYrUb5k8XmwzPlrErws955x4L+7IG+E//+IEGDWYh
0vGSAz1Gg24U3ffPb5eFSMy0KDgSqRakQzG0v/awpd3zs9RAhy0CxF2/7NfG
UPDvsEf8IzslGSYPX9oyP/+MA3XmeRAe+rPAbYDifXR4dHBysHvwpvP32ATf
9r3x0IFCB1zgS3kQRBjAABB8H5GBEjDq3e7F6cX+ux8P1v6ZESVgpcB0jgZ/
sBfh/lu5HJYsfytXzWl2ox+KSQxgXaBhOmnz9S1c2j0/X7JHImbgJh2bTbp/
oCX9zo+XgMjdnjMVpsN9+rvskX/XNh880OJNeHz/GCFEdOM24caphfOhEN3z
wL/nQKFT74EDfU3CtvCBpQf6evzmXph+JdC7RgX+1avHyDa02v7DUc26Icnw
GuDRkmS9IVz9amFr0XMPH0i85g8e6F/mCY/+38tQ46V+vuIetQVa2GjwZqwF
aO7b0fmchE18QGP00OBFoXRo+9sW8tOwr7jhnXN1b7VpRq+Sq6JMPPNE1/M2
hMY6G/U3sr43161iE8/aTJKwHJOy+T6ZVX3nKkdZUbxnU7ANttC4cgAH1G0O
A3QcRSO5vfeGphyhhdWJpH9EJtc244mJg1d7WaDbS+ZXRbEYGbnxityL0ydX
/U8Xf2SvcmKS59Vp38zsxVPumnAA15o2x2h03sdUU/J6wQfDGq2qjjNaDJAl
wlglvWnPWOYplOGni1+MGVXy4cgOd3y6fzI4psAINKBIRskwneCuV9O0Zvuk
Wocy9klczhB4SjhB6N2cwji7LqiyiEwWLKIZd/Hcdxdvc0ThtzLlDkgTdsxt
awfOh1i4hCNAJM/jOskTPEQ1/3gDUT2mcCBcGh4G7BLaBDXcSt/xMrBbgPCN
qNVNjIG/cEHKpA7XjXtNqkg3Yvkolju4KPra2I04jRL2ybfGGqmvS34YzlbJ
Zk2n/IvAXvQrEEmgR4ca/LZF61DstVKoC92WD938gg4Y64slEfDIAfHGVZfN
JICrF1l8CdTm++jk1R6vHX7Z1IWmcR734CmxLVs2iw/aoAUDqhv0FBj4Qmu7
kCVr+w4WE+1oDqD4g+bHXiGVRfKGVImioopLjAqRKfqdV4iHV/E0q7uOLdyN
ynAivY68/faDSJzjTZ2TXWLUfXfUrX4QoE93XWihMftfAAJjdrj1scInE/zD
v1hOlmxIA576FIDO8ETSk0sxxkaTKpmOih7APYJxcOzDo5/Z1VGSU82pxKAw
ra5ty33GZ78Pvqxi3On9n9+uWWPJt+L2xO/ghfUP0aoJ6c6S/Bqw8XIG0KAT
Or/2XoSBJJd4MpXsU/Tz7u69hs8w5BloTcAHfIpBG9T0P5x32RWmMQkL3RfA
gqJVmOi2f9uXbAbd5Wf97/obHJzz8aNbkotuDSW8TWsAHQem7DKYpESGe8AL
030mMHE//Q3HI19dczx2TtI3HmOlxvA2cmx9wcJgPAZ0fBxStKe6EoM1xIAR
0u99iADQLnkKMJQSz28N+QsdsmM1j4ajUUY1puD9VTxV/F2IzjYiYhc/xDiu
5EMNn2CdHPpIkAJ4Aj3kBt2yFHKMyj9VYDqYJDbX/gzkkUq/6t1+1nwGvEnm
80xcekJxyGe5zRuFj/g7qvIWfKUucxMbOSoLSgznqCQgbVkgc9KhklO/TIYJ
nnO/c4BhW2eU4KofNix79B6Tx4SvFTxEpja578zy7AscFXoXlxgbMM3HxYgT
/SgEpeFdbZjBPFfihfjJiWacoUgQTyrix7a8AbFW3i1Oy6ytGw+fLDWCQYIC
cSVVko8kqoTDsIrrhKRQp66CWZGwM5nCBNaZFOx4NCqlQo4bTElCvli5T7+p
ov1DfZJFanTWc/IjJjR5AGCqDkvFqZeR0tO6OeTdG2OcrRYTsVGYdq39zk4t
CSlYzAi5EwZuIqq0YBXtxh1lNlMciCCYqQditn4kW0EOWY54lkAWjaSZ5inu
QzbrjdLKlAxaFQK/Zil8N3qfI2flCNBC45PpiHSpGu0FSgmF4gZQc6whflEm
kwzvV13Hw/dEjIps1AI4rOh1cQebURH1o1Rq9hWSwMl51QFmwR56Hn3j2XML
GQURbFYWoEh0EjAOjgd9dDQLAmJ8uOvN9NGAFI3hTWErTOBNcy8rX07RD78J
oQ788hcaa4LsgFBaimSdcchjHWmiO0aqqGSKvtiZUJS0JlrBUk0yagmuECpj
47hPOeMdIZ7YKiTVlKIPrqZZ08ZLFEypFeZKqNrhTwQ7febP04rsUsQUs6Bi
Fj099OEQx66flqhLV37MKAAMvEwTs+t+hKnAzmBTxGRSy426SbPEEvyoMDwC
0ceEP6Wa5EjiIfmRu5LcjMlAjQdFeGeH80KBvu9mcfxL77dt4T6n9AUF/WAg
TSAVhgoeykCaHOFbKlzhMlBgolUM0jkjDYPS3MM803xx0C68fiYxPpS4gNqT
pNqJxurkisLtIizQ0m4if6Fxwpdy4sUCm9lYNCt8XsMLorVi5jr5cbsf+dm5
Hx/pFUQGoaFUqhYG4Um4MHZpWQ6TG41pgb6EH3KmirHMX+yTXGQkNkmKcQTc
bT+ygKQk92UYCyWhqD+8LAC3/tUb+eI4+ddOJ/wEXvlT9BvWw2Izpy3Kg/hM
FZVJtiZRYptF7FplLseJx18hDJ2/eGa4joh434o0Qssj4Y1X5mcncA0LFLWZ
I3NKAqd/uFkH3zpT85DOZnlh/rkyDMQBmzqitr0uFa0rcpQV8Hf0E2nJH3vQ
wLsmhHDEaqW6gjE60P5xknQFB+VDZmd36jW1WFTuk7wjW4sBdoGsRW35TRsU
Xy5BSMRdv+GBcMu/IfseMLeLAUO1jvdVZPn//n87GQPrzzDzyupQhpaaXPBt
VQ5lgbhXqAn9LBQlL1Bq3T/DP8vEXOe4chYiQdPfRt8Y+vBN8zSRmyNjWKcH
sfYwrwVn+Uav50Ucw7tUfQzGbLsu5k3VLMhkte0akFmZ8PP1GuO4Mz7sDq0M
3uz0NHgKSczKNt8lGOIq/YAlBJBY0LNvByevD/Y86Iz2A9jgf+F9uXux3/h2
4b1sgsVnINufpTVZUIN8DSY78MwUy+WwsYezqvLgntko0GbSPbzHK9Uw5sAC
JOHFbWiONtNjG9bddmv0ohy33hSFhtgdjbeLdpcqDEb2V9OEw+UShBQwxF3J
BcDSXCjQBe8U1Tz1VHKrSz/rb3nXT4Z2LDfw7c8UQ3GPZh0Zy5At3ZDmaFKQ
wMrUnh0zTzIt5A4Ppevt6N7f0/VTvRv+vPnmGzbJJONJPRPEF2PMt6qNY+0d
/k3wQEwpc4kgwIBXv4pWDTPEZ+0gsP61tn0hQvPvszEbzsbwvnzBxjC5/FVb
g1uw5os1RqJZUpjZXF6Y2ZwnzAjamshPGiquKkzxYE3wlEXucy7ZZdNKTW7U
vzvPxEE9vkmGf1aKfP7Jtak82c3hXV33smuK0DxBTmQ4n0rv11VgXLR8jDfe
hRtDXlmEYYDbskDPpbDGbTILa3md2qxZG1BPmjSrhwFxrmOqCKNFbKy/iqBT
j5qJIfc1DnraOhPJEufVCdTtmiNlbPpSxuY/rZTxw8Hhzh9OByIl0wk/TMLg
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
wKWENgs3dHOoL9ORdBAiESryAmpZOiehbUinKKnWzhu0O6SvjJIsHZOWX6dj
FJjyEdobJElUm1mdSe3P+/Y7hh3fQmgAwBFFjuCNatv0LX/TfyO8a94V8tMq
TJFx0gEW3o7lrgYNz/eCU5AVEtH/vfLCYvq0wo6f7LjnJzv6zhyh/ruO/mo5
AGq1Sv45f5Z+96qUkXLla7+nJgHEsSmsuKOt+AzIYSDY4W2upPT3ZCq21JFD
DE3ybCPCZ+trcBJnR1pooNfey7Z/XmwJ+CfiMlx06qttk88rHJvprmdVxkKK
VTLsIYk2+QZuuQYgYyn1CM6lnAy7SalXoFb9kJFNZQKtsEU4oEYUv8WVplek
Mq7f01UrCzsDOyAbcZAEYNU7JoaKce9HrfQ1SqvhlOpgSdVlU8UXMygdM69j
6FQkt9H0ZMKmYDui7v2wiP/CCi5GxCQ7kCYgCI/WxQHNr42GY1NksiR+T9VE
1MLuNMig4jDCrIG6jflJLOXmlH3WhAxVUc0Apat6oIw7ImMPK0ywTzsZ0AUK
u2TDeOWk65hNYzfOFfe7xNtPuR9Hgz90JSPDWQrVVRXZA08lKySFGNgT10g5
laagt0lMjnHXVE+pd3S+c5oKS31+JfdsHQm6wNMumve7vAlUujfsHH81zb38
1wqZhqnqoFTFKVWiz7PPo700+An5nnAbAEcTKXuv3hGpeTiCyzfisFD2op2h
XMV74nsviJ9j2l9G2Vxk43BH5xrPp/xZxRmGPPqcwU8dr0dXt2xoyrtKL4JQ
HAZUwXrZXN3bc5S9DNxkVKXFrbHjHZjX97xC9wnW7sM2xx7pqKwY4xGqbuBr
1Mrb6jNpzgHfsncqoE22C6YVuEwOz4ljKfUnoyOc2noMDj1AXHQoHpEwXr60
Qmb7JptayWYQsK2iNAp+EyhEK5RnysTJfirEqIhTMyJ4rr+aXEYuTP3oAH2I
E20Syf0otBAovi3knIvaYib4hzrJ3Tz9ncN9f+E2s5wfoNaYY2P2CPpRY9W2
8zWz0CYt5d62SPbWjMGDTNtknK0bFJlor3FFux553x+ndb2RT+7vvNtp4ZHY
Cf4zV/LgFGPtPLTjUQEsEAkXA00w5UxeowbyIKrgwEzejIXGtzvAOikGWLZw
5d6ZVmSsEjuljsTwfw1C5ERsPwODoOKkwIgxdVQcoKuAitOu0kxrK7ABn6I3
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
/vS5Vu26yqZXV53/H2VeFYhYLAEA

-->

</rfc>
