<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-authz-04" category="std" consensus="true" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="ELA">Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE (ELA)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-04"/>
    <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="March" day="03"/>
    <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>Editor's note: Consider to include an example of serialized internal state.</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 = (
    SS:              int,
)
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>ID_U is an identifier of the device, see <xref target="device"/>.</t>
            </li>
            <li>
              <t>SS is the selected cipher suite in SUITES_I of EDHOC message_1, see <xref target="U-V"/>.</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>Editor's note: Add more context to external_aad.</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>Editor's note: what about V?</t>
          <ul spacing="normal">
            <li>
              <t>Either (1) V MUST support both flows, or (2) V MUST support the regular flow and MAY support the reverse flow.</t>
            </li>
          </ul>
          <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>Editor's note:</t>
          <ul spacing="normal">
            <li>
              <t>TH_2 is internal EDHOC state, and it is being passed around in VREQ. Is this an issue? Note that TH_2 is simply H( G_U, H_message_1 ), which is all public information.</t>
            </li>
          </ul>
          <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>Editor's note: Clarify that performing TLS handshake is not necessary for each device request; if there already is a TLS connection between V and W that should be reused. Similar considerations for 5.2 and 5.3.</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.</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.</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>
      </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>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>
      <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: IESG</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">TBD2</td>
              <td align="left">[[this document]]</td>
            </tr>
          </tbody>
        </table>
      </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 1036?>

<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 since EAD_1 is critical, it either responds with an error or drops the message (Editor's note: dropping actually conflicts with the EAD field being critical)</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="examples">
      <name>Examples</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.</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:
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
Xp26L+Midoz1e6S9UqMlp0BUrBOvpQy2XmrWi9aUdePIdW5SxvvuI84R1tUn
Lis0U0iVMV8ghGCgojMWRwvFarDJLtJ/2+3UFdi6dOE9XmLsl2kjiWOCDGUE
wAwSEzsNLoo8GsGnlYtWOBcKpzGp5CJQa0ndXqMexAUcNS3P9XzWcoLYAWXv
nLKefcKEFunWWk07Z9NcGL8TbtZC/125o+cW72f8gJFFDs1NHDKGk4EeQ1gZ
lUOz7pnvHOrVFizNzP7YK9w+Ppj2zOURsOmI3mEaYW9yvLEOUFCUlalMwHdX
3NLkFYeizKDdFnO02SZdPV5SLGax6TmY3e5pGBXWemNz+9FSPZcWqIotFxfy
zyNPzWClZyAqTlO5ov+eiqL1yUFw68P28H1aDgz5b8edbe7Ppy97rLUv8J2j
nHVcOOf93NU908KiHYFX/WTShJJJv9LCvb+wd++XjHLXgpeFZRWTkqk5nV+r
fc8Veekitd62X4SX5tdfiN3jLxnl0cLOt8tjN8DrUNtb/i4k/806vIsB6rkA
aYvd1VqS3vKrX3w0t+qPfSVSXPaxNpPLkSJqd+2TW7DWyaKmIhg+uahf5L74
WRuDUcWG3TG/3gGEqwSbV+31E84jqHjhRq0hUENp41LWblwbGf3urC5DXQXK
V5wQUKouoKupHQnZohp1KcqIFy7dxnxFJpVG8LMrnMRr9bcVTtOkjnamFabX
5QP9+rEjrwFYVdMkokkqLGdMl9Y7c4XFDFa1o9vtbTIxJezfym2PKtk55GOt
hoDvDTf1CVRghikJ1NdAZqpvIjb0kasHsRvMeBwVpvZIgZSMgMSSgYsTMqMX
6gy1dnoN3/n8bohIOqTCL+juSFdynlzHjd6L0hcSNZaZ7ZpoA2MSdaPs3LLe
OtHXXiRYhJLqMbNU28AWVMKSk5hNrsqctYV+0Mkk7rBOVXIXUrtekknqIyUc
ksuLzZaTNzC687CxZxw5hPMdt/S7odRYiQe6XdY+rzW63PyH1ttOuC7C5FDW
HnvUCxb870u5/jwt8P5i8B6TfhFsVkQvHuVvoaFu/gfUUH/6hRoqsoz26ym+
EC/Nr/89a6hzdMAv1lC3vqqGOvexdmXRaCwmTghS/Za9p3N8SAsUxBPfkUll
m3yX5LVXYqsKBSgB3Lid5dacK9nEC3sbcXtDnGxSxFIBNr0Qz5j0L5DcTnHM
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
gaZR1xqiVKTVO2MVH7JxxsKVgmVoMTt+R9149DuqaU3Hy1jWpjm3GHpCi/YI
uTmi/jSgwAwmVL6pCbUUuCiCMeKRDXh1ETuubndoKvOp+zK1EwRmvFFCkVyc
DZRndBzxkXJ6yGnYeR//LNcJum4MHFxCFx/ieMIJS6Q6cPvR4kbziCgjEhNy
8tkcBsHFQyZsIljjEnMaYlrGjT1cfC2MlR13mn3OoygQHUv38XHc2iBSubIj
pvnRL5q/58/PP0Yi32nyWtHcJpvvOf+ds7YB0voWFpIEj+M06vmes7a3lrVM
WyCs+bJabNO5EH7ZuvBnOSN1aSvVU2TcuZY3Ve+3LvvaLzZXDctarDI03Gt3
tfmre4yNPKv1TxP+ShU1oVxoHmMiBbedkpu5SrmZ6/4yHhOiPZvR4/2as69X
N5imhoktG/EqGDDeYW6mV9Gc830r2lpJbnKWmv4QQGChTbwWP5f6QHXnWuo3
GRD1sJ94bRPPKUm5zoMyNjV4JpnlB7zU5FBpYnU3/+FwrXZPSD6tMEZQclSm
lrGhO+2ka8jVy5wHw5U3mNBEF5/t1HwN5n0dk/PQ1X0vTnn2G4xstyrR/3hS
Qq9a8azqjaMsurKJxPKpn2G/etpuxw3mHyf7c7r467POUof0zk6bX2eUJfyU
S/TKpQfu8lzePcoyAmCeHPNh4Z+m09I8do9RFjx21yjLsP4lscs/80XO11nR
nT2El8dLoy8CJnis3QOWO8jh0RfBot1BsQ3wWvA3obo5bauDvxvV/bPRbr2V
8aMARYlxCf79VrTMTt8PFlmIUNU9YGnvlDzM/zxRDWrAAb9REV1WPUyz7dl8
T5XVPxwuUqAwn0ZZ4J6ywI66V7Ugjdy5F3mOQd6Ek4xKDlvzG57SBg9EFZZV
cIIgXnsmtQENVmuvqkuczjgsdEFn0GCFkzORUGPk0C3lPknGca9M8woVJcwL
zuI0eCNpbqsnx7tv1nRqjFFTuSO+Vw9GdN06shJUBGkiRKmCQx6XMyvrYY3V
/qs1SWXpehfwcdEF6aFgcd/wsGGn/0rvgGAFsO0GOoG4q+oQqB1TyW9xcW18
UmHnlV4mSKrhq+6cB7uNSSdF3DPBalcZkqo8By1julqCPxgm3KbMViJZjzrd
def5e9SyM/tryv/7rxh3kueqqXhJ48Iw9ao/CTe0UHR9i9JRHGog3bdLMXDc
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
rfUnzzDJq9frBZfp9PKy8/8BR9geLE0dAQA=

-->

</rfc>
