<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-authz-06" category="std" consensus="true" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="ELA">Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE (ELA)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-06"/>
    <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="October" day="20"/>
    <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.
ELA also enables scenarios where only V needs to authorize U, by allowing the voucher to be optional.</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="312" y="484">(message_1,</text>
                  <text x="400" y="484">?Voucher,</text>
                  <text x="500" y="484">?opaque_state)</text>
                  <text x="104" y="516">EDHOC</text>
                  <text x="168" y="516">message_2</text>
                  <text x="100" y="548">(EAD_2</text>
                  <text x="136" y="548">=</text>
                  <text x="180" y="548">Voucher)</text>
                  <text x="104" y="596">EDHOC</text>
                  <text x="168" y="596">message_3</text>
                  <text x="540" y="708">Credential</text>
                  <text x="548" y="724">Database</text>
                  <text x="352" y="756">ID_CRED_I</text>
                  <text x="412" y="756">from</text>
                  <text x="472" y="756">message_3</text>
                  <text x="420" y="804">CRED_U</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
U                              V                                       W
|                              |                                       |
|                              |                                       |
|                              |        Establish secure channel       |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |      (e.g., TLS with server cert.)    |
|                              |                                       |
|                              |   Proof-of-possession w.r.t. CRED_V   |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |            (e.g., EDHOC)              |
|                              |                                       |
|                              |                                       |
|                              |                                       |

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

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

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

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

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

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

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

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

          ( ... protocol continues normally ... )
]]></artwork>
            </artset>
          </figure>
          <t>The V_INFO structure is sent as part of the CoAP payload.
It is encoded as a CBOR sequence:</t>
          <sourcecode type="cddl"><![CDATA[
V_INFO = (
  ?DOMAIN_ID: bstr,
)
]]></sourcecode>
          <t>One advantage of this approach is that, since U is the initiator, its identity is protected in the context of the EDHOC handshake.
On the other hand, the periodic multicast may have resource usage impacts in the network.</t>
        </section>
      </section>
    </section>
    <section anchor="use-with-constrained-join-protocol-cojp">
      <name>Use with Constrained Join Protocol (CoJP)</name>
      <t>This section outlines how ELA is used for network enrollment and parameter provisioning.
An IEEE 802.15.4 network is used as an example of how a new device (U) can be enrolled into the domain managed by the domain authenticator (V).</t>
      <figure anchor="fig-cojp">
        <name>Use of draft-ietf-lake-authz with CoJP.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="560" viewBox="0 0 560 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,400" fill="none" stroke="black"/>
              <path d="M 304,48 L 304,384" fill="none" stroke="black"/>
              <path d="M 552,48 L 552,384" fill="none" stroke="black"/>
              <path d="M 280,80 L 296,80" fill="none" stroke="black"/>
              <path d="M 16,112 L 304,112" fill="none" stroke="black"/>
              <path d="M 8,160 L 296,160" fill="none" stroke="black"/>
              <path d="M 304,192 L 544,192" fill="none" stroke="black"/>
              <path d="M 312,224 L 552,224" fill="none" stroke="black"/>
              <path d="M 16,256 L 304,256" fill="none" stroke="black"/>
              <path d="M 8,320 L 296,320" fill="none" stroke="black"/>
              <path d="M 16,368 L 296,368" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="552,192 540,186.4 540,197.6" fill="black" transform="rotate(0,544,192)"/>
              <polygon class="arrowhead" points="320,224 308,218.4 308,229.6" fill="black" transform="rotate(180,312,224)"/>
              <polygon class="arrowhead" points="304,320 292,314.4 292,325.6" fill="black" transform="rotate(0,296,320)"/>
              <polygon class="arrowhead" points="304,160 292,154.4 292,165.6" fill="black" transform="rotate(0,296,160)"/>
              <polygon class="arrowhead" points="304,80 292,74.4 292,85.6" fill="black" transform="rotate(0,296,80)"/>
              <polygon class="arrowhead" points="24,368 12,362.4 12,373.6" fill="black" transform="rotate(180,16,368)"/>
              <polygon class="arrowhead" points="24,256 12,250.4 12,261.6" fill="black" transform="rotate(180,16,256)"/>
              <polygon class="arrowhead" points="24,112 12,106.4 12,117.6" fill="black" transform="rotate(180,16,112)"/>
              <g class="text">
                <text x="8" y="36">U</text>
                <text x="304" y="36">V</text>
                <text x="552" y="36">W</text>
                <text x="24" y="84">-</text>
                <text x="40" y="84">-</text>
                <text x="56" y="84">-</text>
                <text x="72" y="84">-</text>
                <text x="88" y="84">-</text>
                <text x="104" y="84">-</text>
                <text x="120" y="84">-</text>
                <text x="136" y="84">-</text>
                <text x="152" y="84">-</text>
                <text x="168" y="84">-</text>
                <text x="184" y="84">-</text>
                <text x="200" y="84">-</text>
                <text x="216" y="84">-</text>
                <text x="232" y="84">-</text>
                <text x="248" y="84">-</text>
                <text x="264" y="84">-</text>
                <text x="76" y="100">Optional</text>
                <text x="144" y="100">network</text>
                <text x="228" y="100">solicitation</text>
                <text x="120" y="132">Network</text>
                <text x="192" y="132">discovery</text>
                <text x="112" y="180">EDHOC</text>
                <text x="176" y="180">message_1</text>
                <text x="368" y="212">Voucher</text>
                <text x="432" y="212">Request</text>
                <text x="492" y="212">(VREQ)</text>
                <text x="368" y="244">Voucher</text>
                <text x="436" y="244">Response</text>
                <text x="500" y="244">(VRES)</text>
                <text x="112" y="276">EDHOC</text>
                <text x="176" y="276">message_2</text>
                <text x="56" y="340">EDHOC</text>
                <text x="120" y="340">message_3</text>
                <text x="168" y="340">+</text>
                <text x="196" y="340">CoJP</text>
                <text x="248" y="340">request</text>
                <text x="124" y="388">CoJP</text>
                <text x="180" y="388">response</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
U                                    V                              W
|                                    |                              |
|                                    |                              |
+ - - - - - - - - - - - - - - - - -->|                              |
|    Optional network solicitation   |                              |
|<-----------------------------------+                              |
|          Network discovery         |                              |
|                                    |                              |
+----------------------------------->|                              |
|          EDHOC message_1           |                              |
|                                    +----------------------------->|
|                                    |    Voucher Request (VREQ)    |
|                                    |<-----------------------------+
|                                    |    Voucher Response (VRES)   |
|<-----------------------------------+                              |
|          EDHOC message_2           |                              |
|                                    |                              |
|                                    |                              |
+----------------------------------->|                              |
|   EDHOC message_3 + CoJP request   |                              |
|                                    |                              |
+<-----------------------------------|                              |
|            CoJP response           |                              |
|
]]></artwork>
        </artset>
      </figure>
      <section anchor="network-discovery">
        <name>Network Discovery</name>
        <t>When a device first boots, it needs to discover the network it attempts to join.
The network discovery procedure is defined by the link-layer technology in use.
In case of Time-slotted Channel Hopping (TSCH) networks, a mode of <xref target="IEEE802.15.4"/>, the device scans the radio channels for Enhanced Beacon (EB) frames, a procedure known as passive scan.
EBs carry the information about the network, and particularly the network identifier.
Based on the EB, the network identifier, the information pre-configured into the device, the device makes the decision on whether it should join the network advertised by the received EB frame.
This process is described in <xref section="4.1" sectionFormat="of" target="RFC9031"/>.
In case of other, non-TSCH modes of IEEE 802.15.4, it is possible to use the active scan procedure and send solicitation frames.
These solicitation frames trigger the nearest network coordinator to respond by emitting a beacon frame.
The network coordinator emitting beacons may be multiple link-layer hops away from the domain authenticator (V), in which case it plays the role of a Join Proxy (see <xref target="RFC9031"/>).
The Join Proxy does not participate in the protocol and acts as a transparent router between the device and the domain authenticator.
For simplicity, <xref target="fig-cojp"/> illustrates the case when the device and the domain authenticator are a single hop away and can communicate directly.</t>
      </section>
      <section anchor="the-enrollment-protocol-with-parameter-provisioning">
        <name>The Enrollment Protocol with Parameter Provisioning</name>
        <section anchor="flight-1">
          <name>Flight 1</name>
          <t>Once the device has discovered the network it wants to join, it constructs EDHOC message_1, as described in <xref target="U-V"/>.
The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa". This is an anycast type of identifier of the domain authenticator (V) that is resolved to its IPv6 address by the Join Proxy.</t>
            </li>
            <li>
              <t>By means of Uri-Path options, the Uri-Path is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The payload is the (true, EDHOC message_1) CBOR sequence, where EDHOC message_1 is constructed as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-2">
          <name>Flight 2</name>
          <t>The domain authenticator receives message_1 and processes it as described in <xref target="U-V"/>.
The message triggers the exchange with the enrollment server, as described in <xref target="V-W"/>.
If the exchange between V and W completes successfully, the domain authenticator prepares EDHOC message_2, as described in <xref target="U-V"/>.
The authenticator SHALL map the message to a CoAP response:</t>
          <ul spacing="normal">
            <li>
              <t>The response code is 2.04 Changed.</t>
            </li>
            <li>
              <t>The payload is the EDHOC message_2, as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-3">
          <name>Flight 3</name>
          <t>The device receives EDHOC message_2 and processes it as described in <xref target="U-V"/>.
Upon successful processing of message_2, the device prepares flight 3, which is an OSCORE-protected CoJP request containing an EDHOC message_3, as described in <xref target="I-D.ietf-core-oscore-edhoc"/>.
EDHOC message_3 is prepared as described in <xref target="U-V"/>.
The OSCORE-protected payload is the CoJP Join Request object specified in <xref section="8.4.1" sectionFormat="of" target="RFC9031"/>.
OSCORE protection leverages the OSCORE Security Context derived from the EDHOC session, as specified in Appendix A of <xref target="RFC9528"/>.
To that end, <xref target="I-D.ietf-core-oscore-edhoc"/> specifies that the Sender ID of the client (device) must be set to the connection identifier selected by the domain authenticator, C_R.
OSCORE includes the Sender ID as the kid in the OSCORE option.
The network identifier in the CoJP Join Request object is set to the network identifier obtained from the network discovery phase.
In case of IEEE 802.15.4 networks, this is the PAN ID.</t>
          <t>The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa".</t>
            </li>
            <li>
              <t>The Uri-Path option is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The EDHOC option <xref target="I-D.ietf-core-oscore-edhoc"/> is set and is empty.</t>
            </li>
            <li>
              <t>The payload is prepared as described in <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-edhoc"/>, with EDHOC message_3 and the CoJP Join Request object as the OSCORE-protected payload.</t>
            </li>
          </ul>
          <t>Note that the OSCORE Sender IDs are derived from the connection identifiers of the EDHOC session.
This is in contrast with <xref target="RFC9031"/> where ID Context of the OSCORE Security Context is set to the device identifier (pledge identifier).
Since the device identity is exchanged during the EDHOC session, and the certificate of the device is communicated to the authenticator as part of the Voucher Response message, there is no need to transport the device identity in OSCORE messages.
The authenticator playing the role of the <xref target="RFC9031"/> JRC obtains the device identity from the execution of the authorization protocol.</t>
        </section>
        <section anchor="flight-4">
          <name>Flight 4</name>
          <t>Flight 4 is the OSCORE response carrying CoJP response message.
The message is processed as specified in <xref section="8.4.2" sectionFormat="of" target="RFC9031"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="example-of-opaquestate">
      <name>Example of opaque_state</name>
      <t>As per <xref target="stateless-v"/>, V may act statelessly and transmit a opaque_state to W during the VREQ call.
The example below contains an IPv4 address, a port number, and a timestamp, serialized as CBOR:</t>
      <artwork><![CDATA[
83             # array(3)
   84          # array(4)
      18 C0    # unsigned(192)
      18 A8    # unsigned(168)
      00       # unsigned(0)
      05       # unsigned(5)
   19 5A18     # unsigned(23064)
   1A 6867EEE4 # unsigned(1751641828)
]]></artwork>
      <t>The above plaintext state can be encrypted using COSE.
Speficially, it is useful that the plaintext is not only encrypted but also authenticated.
That can be achieved using COSE_Encrypt0 using an AEAD algorithm.</t>
    </section>
    <section anchor="examples-of-protocol-execution">
      <name>Examples of protocol execution</name>
      <t>This section presents high level examples of the protocol execution.</t>
      <t>Note: the examples below include samples of access policies used by W. These are provided for the sake of completeness only, since the authorization mechanism used by W is out of scope in this document.</t>
      <section anchor="example_minimal">
        <name>Minimal</name>
        <t>This is a simple example that demonstrates a successful execution of ELA.</t>
        <t>Premises:</t>
        <ul spacing="normal">
          <li>
            <t>device u1 has ID_U = key id = 14</t>
          </li>
          <li>
            <t>the access policy in W specifies, via a list of ID_U, that device u1 can enroll via any domain authenticator, i.e., the list contains ID_U = 14.
In this case, the policy only specifies a restriction in terms of U, effectively allowing enrollment via any V.</t>
          </li>
        </ul>
        <t>Execution:</t>
        <ol spacing="normal" type="1"><li>
            <t>device u1 discovers a gateway (v1) and tries to enroll</t>
          </li>
          <li>
            <t>gateway v1 identifies the zero-touch join attempt by checking that the label of EAD_1 = -TBD1, and prepares a Voucher Request using the information contained in the value of EAD_1</t>
          </li>
          <li>
            <t>upon receiving the request, W obtains ID_U = 14, authorizes the access, and replies with Voucher Response</t>
          </li>
        </ol>
      </section>
      <section anchor="example_wrong_gateway">
        <name>Wrong gateway</name>
        <t>In this example, a device u1 tries to enroll a domain via gateway v1, but W denies the request because the pairing (u1, v1) is not configured in its access policies.</t>
        <t>This example also illustrates how the REJECT_INFO field of the EDHOC error Access Denied could be used, in this case to suggest that the device should select another gateway for the join procedure.</t>
        <t>Premises:</t>
        <ul spacing="normal">
          <li>
            <t>devices and gateways communicate via Bluetooth Low Energy (BLE), therefore their network identifiers are MAC addresses (EUI-48)</t>
          </li>
          <li>
            <t>device u1 has ID_U = key id = 14</t>
          </li>
          <li>
            <t>there are 3 gateways in the radio range of u1:
            </t>
            <ul spacing="normal">
              <li>
                <t>v1 with MAC address = A2-A1-88-EE-97-75</t>
              </li>
              <li>
                <t>v2 with MAC address = 28-0F-70-84-51-E4</t>
              </li>
              <li>
                <t>v3 with MAC address = 39-63-C9-D0-5C-62</t>
              </li>
            </ul>
          </li>
          <li>
            <t>the access policy in W specifies, via a mapping of shape (ID_U; MAC1, MAC2, ...) that device u1 can only join via gateway v3, i.e., the mapping is: (14; 39-63-C9-D0-5C-62)</t>
          </li>
          <li>
            <t>W is able to map the PoP key of the gateways to their respective MAC addresses</t>
          </li>
        </ul>
        <t>Execution:</t>
        <ol spacing="normal" type="1"><li>
            <t>device u1 tries to join via gateway v1, which forwards the request to W</t>
          </li>
          <li>
            <t>W determines that MAC address A2-A1-88-EE-97-75 is not in the access policy mapping, and replies with an error. The error_content has REJECT_TYPE = 1, and the plaintext OPAQUE_INFO (used to compute the encrypted REJECT_INFO) specifies a list of suggested gateways = [h'3963C9D05C62']. The single element in the list is the 6-byte MAC address of v3, serialized as a bstr.</t>
          </li>
          <li>
            <t>gateway v1 assembles an EDHOC error "Access Denied" with error_content, and sends it to u1</t>
          </li>
          <li>
            <t>device u1 processes the error, decrypts REJECT_INFO, and retries the protocol via gateway v3</t>
          </li>
        </ol>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Aurelio Schellenbaum"/> for his contribution in the initial phase of this work, and Marco Tiloca for extensively reviewing the document.
We also thank Christian Amsüss for his active participation in discussions that led to improvements in the document.</t>
      <t>Work on this document has in part been supported by the Horizon Europe Framework Programme project OpenSwarm (grant agreement No. 101093046).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
TG9vbW+93N16+lzrdt0ks5ub1v8HT56sy2AuAQA=

-->

</rfc>
