<?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.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-authz-01" category="std" consensus="true" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Lightweight Authorization using EDHOC">Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-01"/>
    <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="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 102?>

<t>This document describes a procedure for authorizing enrollment of new devices using the lightweight authenticated key exchange protocol Ephemeral Diffie-Hellman Over COSE (EDHOC). The procedure 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://ericssonresearch.github.io/ace-ake-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/EricssonResearch/ace-ake-authz"/>.</t>
    </note>
  </front>
  <middle>
    <?line 106?>

<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 a procedure for augmenting the lightweight authenticated Diffie-Hellman key exchange EDHOC <xref target="I-D.ietf-lake-edhoc"/> with third party-assisted authorization.</t>
      <t>The procedure 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 which provides relevant authorization information to the device (a "voucher") and to the authenticator. The high-level model is similiar 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>The protocol assumes that authentication between device and authenticator is performed with EDHOC <xref target="I-D.ietf-lake-edhoc"/>, and defines the integration of a lightweight authorization procedure using the External Authorization Data (EAD) fields defined in EDHOC.</t>
      <t>The protocol 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"/> and EDHOC <xref target="I-D.ietf-lake-edhoc"/>.
Appendix C.1 of <xref target="I-D.ietf-lake-edhoc"/> contains some basic info about CBOR.</t>
      </section>
    </section>
    <section anchor="prob-desc">
      <name>Problem Description</name>
      <t>The (potentially constrained) device (U) wants to enroll into a domain over a constrained link.
The device authenticates and enforces authorization of the (non-constrained) domain authenticator (V) with the help of a voucher conveying authorization information.
The voucher has a similar role as in <xref target="RFC8366"/> but should be considerably more compact.
The domain authenticator, in turn, authenticates the device and authorizes its enrollment into the domain.</t>
      <t>The procedure is assisted by a (non-constrained) enrollment server (W) located in a non-constrained network behind the domain authenticator, e.g. on the Internet, providing information to the device (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 which is lightweight over the constrained link by reusing elements of EDHOC <xref target="I-D.ietf-lake-edhoc"/> 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 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 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-nonstrained 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 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 or a CBOR Web Token (CWT, <xref target="RFC8392"/>). CRED_U may, for example, be carried in ID_CRED_I of EDHOC message_3 or be provisioned to V over a non-constrained network, see bottom of <xref target="fig-protocol"/>.</t>
        <t>U also needs to identify itself to W, this device identifier is denoted by 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="I-D.ietf-lake-edhoc"/>), 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, which is a CWT Claims Set <xref target="RFC8392"/> 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="I-D.ietf-lake-edhoc"/>) 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 access the same credential CRED_V as V used with U, 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>
        <ul spacing="normal">
          <li>
            <t>V and W may protect the Voucher Request/Response protocol using TLS 1.3 with client authentication <xref target="RFC8446"/> if CRED_V is an X.509 certificate of a signature public key. However, note that CRED_V may not be a valid credential to use with TLS 1.3, e.g., when U and V run EDHOC with method 1 or 3, where the public key of CRED_V is a static Diffie-Hellman key.</t>
          </li>
          <li>
            <t>V may run EDHOC with W using ID_CRED_I = CRED_V. In this case the secure connection between V and W may be based on OSCORE <xref target="RFC8613"/>.</t>
          </li>
        </ul>
        <t>Note that both TLS 1.3 and EDHOC may be run between V and W during this setup procedure. For example, W may authenticate to V using TLS 1.3 with server certificates signed by a CA trusted by V, and then V may run EDHOC using CRED_V over the secure TLS connection to W, see <xref target="fig-protocol"/>.</t>
        <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="the-protocol">
      <name>The Protocol</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The 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="3" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
        <figure anchor="fig-protocol">
          <name>Overview of the protocol: 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="304" y="148">Proof</text>
                  <text x="340" y="148">of</text>
                  <text x="396" y="148">possession</text>
                  <text x="468" y="148">w.r.t.</text>
                  <text x="516" y="148">CRED</text>
                  <text x="380" y="180">(e.g.,</text>
                  <text x="436" y="180">EDHOC)</text>
                  <text x="228" y="276">CORE</text>
                  <text x="284" y="276">PROTOCOL</text>
                  <text x="104" y="324">EDHOC</text>
                  <text x="168" y="324">message_1</text>
                  <text x="52" y="356">(EAD_1</text>
                  <text x="88" y="356">=</text>
                  <text x="124" y="356">LOC_W,</text>
                  <text x="200" y="356">ENC_U_INFO)</text>
                  <text x="352" y="388">Voucher</text>
                  <text x="416" y="388">Request</text>
                  <text x="476" y="388">(VREQ)</text>
                  <text x="360" y="420">(message_1,</text>
                  <text x="468" y="420">?opaque_state)</text>
                  <text x="352" y="452">Voucher</text>
                  <text x="420" y="452">Response</text>
                  <text x="484" y="452">(VRES)</text>
                  <text x="320" y="484">(message_1,</text>
                  <text x="404" y="484">Voucher,</text>
                  <text x="500" y="484">?opaque_state)</text>
                  <text x="104" y="516">EDHOC</text>
                  <text x="168" y="516">message_2</text>
                  <text x="100" y="548">(EAD_2</text>
                  <text x="136" y="548">=</text>
                  <text x="180" y="548">Voucher)</text>
                  <text x="104" y="596">EDHOC</text>
                  <text x="168" y="596">message_3</text>
                  <text x="540" y="708">Credential</text>
                  <text x="548" y="724">Database</text>
                  <text x="352" y="756">ID_CRED_I</text>
                  <text x="412" y="756">from</text>
                  <text x="472" y="756">message_3</text>
                  <text x="420" y="804">CRED_U</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
U                              V                                       W
|                              |                                       |
|                              |                                       |
|                              |        Establish secure channel       |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |      (e.g., TLS with server cert.)    |
|                              |                                       |
|                              |   Proof of possession w.r.t. CRED     |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |            (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 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.</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="I-D.ietf-lake-edhoc"/>):  </t>
            <ul spacing="normal">
              <li>
                <t>EDHOC AEAD algorithm: used to encrypt ID_U</t>
              </li>
              <li>
                <t>EDHOC hash algorithm: used for key derivation and to calculate the voucher</t>
              </li>
              <li>
                <t>EDHOC MAC length in bytes: length of the voucher</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="I-D.ietf-lake-edhoc"/>. This document specifies the EAD items with ead_label = TBD1, 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. CRED_V is transported in ID_CRED_R in message_2, see <xref target="V_2"/>.</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="I-D.ietf-lake-edhoc"/>).</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, see <xref section="4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>:</t>
        <ul spacing="normal">
          <li>
            <t>OKM = EDHOC-Expand(PRK, info, length)  </t>
            <t>
where</t>
          </li>
        </ul>
        <artwork><![CDATA[
info = (
   info_label : int,
   context : bstr,
   length : uint,
)
]]></artwork>
      </section>
      <section anchor="stateless-operation-of-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.
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 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>V MUST encrypt and integrity protect the encapsulated state using a uniformly-distributed (pseudo-)random key, known only to itself.
How V serializes and encrypts its internal state is out of scope of this specification.
For example, V may use the existing CBOR and COSE libraries.</t>
        <t>Editor's note: Consider to include an example of serialized internal state.</t>
        <t>W sends to V the voucher together with echoed message_1, as received from U, and V's internal state.
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>
      </section>
      <section anchor="U-W">
        <name>Device &lt;-&gt; Enrollment Server (U &lt;-&gt; W)</name>
        <t>The protocol between U and W is carried between U and V in message_1 and message_2 (<xref target="U-V"/>), and between V and W in the Voucher Request/Response (<xref target="V-W"/>). The data is protected between the endpoints using secret keys derived from a Diffie-Hellman shared secret (see <xref target="reuse"/>) as further detailed in this section.</t>
        <section anchor="voucher_info">
          <name>Voucher Info</name>
          <t>The external authorization data EAD_1 contains an EAD item with ead_label = TBD1 and ead_value = Voucher_Info, which is a CBOR byte string:</t>
          <artwork><![CDATA[
Voucher_Info = bstr .cbor Voucher_Info_Seq
]]></artwork>
          <artwork><![CDATA[
Voucher_Info_Seq = (
    LOC_W:      tstr,
    ENC_U_INFO:     bstr
)
]]></artwork>
          <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 '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>
          <artwork><![CDATA[
plaintext = (
    ID_U:            bstr,
    ?OPAQUE_INFO:    bstr,
)
]]></artwork>
          <artwork><![CDATA[
external_aad = (
    SS:              int,
)
]]></artwork>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>ID_U is an identifier of the device, see <xref target="device"/>.</t>
            </li>
            <li>
              <t>OPAQUE_INFO is an opaque field provided by the application.
If present, it will contain application data that U may want to convey to W, e.g., enrollment hints, see <xref target="hints"/>.
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.
The same applies to other references of OPAQUE_INFO throughout this document.</t>
            </li>
            <li>
              <t>SS is the selected cipher suite in SUITES_I of EDHOC message_1, see <xref target="U-V"/>.</t>
            </li>
          </ul>
          <t>The external_aad is wrapped in an enc_structure as defined in <xref section="5.3" sectionFormat="of" target="RFC9052"/>.</t>
          <t>Editor's note: Add more context to external_aad.</t>
          <t>The derivation of K_1 = EDHOC-Expand(PRK, info, length) uses the following input to the info struct (see OKM in <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 0</t>
            </li>
            <li>
              <t>context  = h'' (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of 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 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 voucher is an assertion to U that W has authorized V.
The voucher consists of the 'ciphertext' field of a COSE_Encrypt0 object:</t>
          <artwork><![CDATA[
Voucher = COSE_Encrypt0.ciphertext
]]></artwork>
          <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.</t>
          <t>The external authorization data EAD_2 contains an EAD item with ead_label = TBD1 and ead_value = Voucher, which is computed from the following:</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>
          <artwork><![CDATA[
plaintext = (
    ?OPAQUE_INFO: bstr
)
]]></artwork>
          <artwork><![CDATA[
external_aad = (
    H(message_1):  bstr,
    CRED_V:        bstr,
)
]]></artwork>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>OPAQUE_INFO is an opaque field provided by the application.</t>
            </li>
            <li>
              <t>H(message_1) is the hash of EDHOC message_1, calculated from the associated voucher request, see <xref target="voucher_request"/>.</t>
            </li>
            <li>
              <t>CRED_V is the CWT Claims Set <xref target="RFC8392"/> containing the public authentication key of V, see <xref target="V_2"/></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 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 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 include 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="I-D.ietf-lake-edhoc"/>. 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 which 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="I-D.ietf-lake-edhoc"/>.</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="I-D.ietf-lake-edhoc"/>, 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="I-D.ietf-lake-edhoc"/>. 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>
          </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 (-TBD1, Voucher) included in EAD_2, where the Voucher is specified in <xref target="U-W"/>.</t>
            <t>CRED_V is a CWT Claims Set <xref target="RFC8392"/> containing the public authentication key of V encoded as a COSE_Key in the 'cnf' claim, see <xref section="3.5.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</t>
            <t>ID_CRED_R contains the CWT Claims Set with 'kccs' as COSE header_map, see <xref section="9.6" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>.</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.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>, with the additional step of processing the EAD item in EAD_2.</t>
            <t>If U does not recognize the EAD item or the EAD item contains information that U cannot process, then U MUST abort the EDHOC session, see <xref section="3.8" sectionFormat="of" target="I-D.ietf-lake-edhoc"/>. Otherwise U MUST verify the Voucher by performing the same calculation as in <xref target="voucher"/> using H(message_1) and CRED_V received in ID_CRED_R of message_2. If the voucher calculated in this way is not identical to what was received in message_2, then U MUST abort the EDHOC session.</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 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 learnt 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 with 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>
            <artwork><![CDATA[
Voucher_Request = [
    message_1:      bstr,
    ? opaque_state: bstr
]
]]></artwork>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>message_1 is the EDHOC message_1 as it was received from U.</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. The voucher request essentially contains EDHOC message_1 as sent by U to V. W SHALL NOT process message_1 as if it was an EDHOC message intended for W.</t>
            <t>W extracts from message_1:</t>
            <ul spacing="normal">
              <li>
                <t>SS - the selected cipher suite, which is the (last) integer of SUITES_I.</t>
              </li>
              <li>
                <t>G_X - the ephemeral public key of U</t>
              </li>
              <li>
                <t>ENC_U_INFO - the encryption of (1) the device identifier ID_U and (2) the optional OPAQUE_INFO field, contained in the Voucher_Info field of the EAD item with ead_label = TBD1 (with minus sign indicating criticality)</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>In case OPAQUE_INFO is present, it is made available to the application.</t>
            <t>W calculates the hash of message_1 H(message_1), and associates this session identifier to the device identifier ID_U. If H(message_1) is not unique among session identifiers associated to this device identifier of U, the EDHOC session SHALL be aborted.</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>
          </section>
        </section>
        <section anchor="voucher_response">
          <name>Voucher Response</name>
          <section anchor="processing-in-w-1">
            <name>Processing in W</name>
            <t>W retrieves CRED_V associated to the secure connection with V, and constructs the 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>
            <artwork><![CDATA[
Voucher_Response = [
    message_1:      bstr,
    Voucher:        bstr,
    ? opaque_state: bstr
]
]]></artwork>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>message_1 is the EDHOC message_1 as it was received from V.</t>
              </li>
              <li>
                <t>The Voucher is defined in <xref target="voucher"/>.</t>
              </li>
              <li>
                <t>opaque_state is the echoed byte string opaque_state from Voucher_Request, if present.</t>
              </li>
            </ul>
          </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 EDHOC 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 the proposed protocol.</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>This protocol 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.</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>
          <artwork><![CDATA[
plaintext = (
    OPAQUE_INFO:     bstr,
 )
]]></artwork>
          <artwork><![CDATA[
external_aad = (
    H(message_1):    bstr,
 )
]]></artwork>
          <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(message_1) is the hash of EDHOC message_1, calculated from the associated voucher request, see <xref target="voucher_request"/>.</t>
            </li>
          </ul>
        </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 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 use HTTP.
If the authentication credential CRED_V can be used in a TLS handshake, e.g. an X.509 certificate of a signature public key, then V SHOULD use it to authenticate to W as a client.
If the authentication credential CRED_V cannot be used in a TLS handshake, e.g. if the public key is a static Diffie-Hellman key, then V SHOULD first perform a TLS handshake with W using available compatible keys.
V MUST then perform an EDHOC session over the TLS connection proving to W the possession of the private key corresponding to CRED_V.
Performing the EDHOC session is only necessary if V did not authenticate with CRED_V in the TLS handshake with W.</t>
        <t>Editor's note: Clarify that performing TLS handshake is not necessary for each device request; if there already is a TLS connection between V and W that should be reused. Similar considerations for 5.2 and 5.3.</t>
      </section>
      <section anchor="scheme-coaps">
        <name>Scheme "coaps"</name>
        <t>In case the scheme indicates "coaps", V SHOULD perform a DTLS handshake with W and access the resources defined in <xref target="uris"/> using CoAP.
The normative requirements in <xref target="scheme-https"/> on performing the DTLS handshake and EDHOC session remain the same, except that TLS is replaced with DTLS.</t>
      </section>
      <section anchor="scheme-coap">
        <name>Scheme "coap"</name>
        <t>In case the scheme indicates "coap", V SHOULD perform an EDHOC session with W, as specified in <xref section="A" sectionFormat="of" target="I-D.ietf-lake-edhoc"/> and access the resources defined in <xref target="uris"/> using OSCORE and CoAP.
The authentication credential in this EDHOC session MUST be CRED_V.</t>
      </section>
      <section anchor="uris">
        <name>URIs</name>
        <t>The URIs defined below are valid for both HTTP and CoAP.
W MUST support the use of the path-prefix "/.well-known/", as defined in <xref target="RFC8615"/>, and the registered name "lake-authz".
A valid URI in case of HTTP thus begins with</t>
        <ul spacing="normal">
          <li>
            <t>"https://www.example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of CoAP with DTLS:</t>
        <ul spacing="normal">
          <li>
            <t>"coaps://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of EDHOC and OSCORE:</t>
        <ul spacing="normal">
          <li>
            <t>"coap://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>Each operation specified in the following is indicated by a path-suffix.</t>
        <section anchor="voucher-request-voucherrequest">
          <name>Voucher Request (/voucherrequest)</name>
          <t>To request a voucher, V MUST issue a request:</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 200 OK response with payload containing the serialized Voucher Response object, as specified in <xref target="voucher_response"/>.</t>
        </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:</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>
          </ul>
          <t>In case of a successful lookup of the authentication credential at W, W MUST issue 200 OK response with payload containing the serialized CRED_U.</t>
        </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="I-D.ietf-lake-edhoc"/> 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="8.2" sectionFormat="of" target="I-D.ietf-lake-edhoc"/> 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 with input of public key of W (G_W) and device identifier of U (ID_U), and 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 entry in the "EDHOC External Authorization Data" registry under the group name "Ephemeral Diffie-
   Hellman Over COSE (EDHOC)".
The ead_label = TBD1 corresponds to the ead_value Voucher_Info in EAD_1, and Voucher in EAD_2 with processing specified in <xref target="m1"/> and <xref target="m2"/>, respectively, of this document.</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 related information</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="the-well-known-uri-registry">
        <name>The Well-Known URI Registry</name>
        <t>IANA has registered the following entry in "The Well-Known URI Registry", using the template from <xref target="RFC8615"/>:</t>
        <ul spacing="normal">
          <li>
            <t>URI suffix: lake-authz</t>
          </li>
          <li>
            <t>Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: [[this document]]</t>
          </li>
          <li>
            <t>Related information: None</t>
          </li>
        </ul>
      </section>
      <section anchor="well-known-name-under-arpa-name-space">
        <name>Well-Known Name Under ".arpa" Name Space</name>
        <t>This document allocates a well-known name under the .arpa name space according to the rules given in <xref target="RFC3172"/> and <xref target="RFC6761"/>.
The name "lake-authz.arpa" is requested.
No subdomains are expected, and addition of any such subdomains requires the publication of an IETF Standards Track RFC.
No A, AAAA, or PTR record is requested.</t>
      </section>
      <section anchor="media-types-registry">
        <name>Media Types Registry</name>
        <t>IANA has added the media types "application/lake-authz-voucherrequest+cbor" to the "Media Types" registry.</t>
        <section anchor="applicationlake-authz-voucherrequestcbor-media-type-registration">
          <name>application/lake-authz-voucherrequest+cbor Media Type Registration</name>
          <ul spacing="normal">
            <li>
              <t>Type name: application</t>
            </li>
            <li>
              <t>Subtype name: lake-authz-voucherrequest+cbor</t>
            </li>
            <li>
              <t>Required parameters: N/A</t>
            </li>
            <li>
              <t>Optional paramaters: N/A</t>
            </li>
            <li>
              <t>Encoding considerations: binary</t>
            </li>
            <li>
              <t>Security cosniderations: 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: See "Authors' Addresses" section.</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: N/A</t>
            </li>
            <li>
              <t>Author: See "Authors' Addresses" section.</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="coap-content-formats-registry">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA has added the media type "application/lake-authz-voucherrequest+cbor" to 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">Media Type</th>
              <th align="left">Encoding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/lake-authz-voucherrequest+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">[[this document]]</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <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="I-D.ietf-lake-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-edhoc-23" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <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="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="22" month="January" 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 OSCORE security context. By reusing COSE for cryptography, CBOR for encoding, and CoAP for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
        </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="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="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="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-10" 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="29" month="November" year="2023"/>
            <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-10"/>
        </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="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>
      </references>
    </references>
    <?line 814?>

<section anchor="use-with-constrained-join-protocol-cojp">
      <name>Use with Constrained Join Protocol (CoJP)</name>
      <t>This section outlines how the protocol 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"/>).
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 the 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>The Uri-Path option 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="I-D.ietf-lake-edhoc"/>.
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="hints">
      <name>Enrollment Hints</name>
      <t>This section defines items that can be used in the OPAQUE_INFO field of either EAD_1 or the Access Denied error response.
The purpose of the proposed items is to improve protocol scalability, aiming to reduce battery usage and enrollment delay.
The main use case is when several potential gateways (V) are detected by U's radio, which can lead to U trying to enroll (and failing) several times until it finds a suitable V.</t>
      <section anchor="domain-authenticator-hints">
        <name>Domain Authenticator hints</name>
        <t>In case W denies the enrollment of U to a given V, a list of Domain Authenticator hints (v_hint) can be sent from W to U.
The hint is optional and is included in the REJECT_INFO item in the Access Denied error message.
It consists of a list of application-defined identifiers of V (e.g. MAC addresses, SSIDs, PAN IDs, etc.), as defined below:</t>
        <t>v_hint = [ 1* bstr ]</t>
      </section>
      <section anchor="device-hints">
        <name>Device Hints</name>
        <t>U may send a Device hint (u_hint) so that it can help W to select which Vs to include in v_hint.
This can be useful in large scale scenarios with many gateways (V).
The hint is an optional field included in the OPAQUE_INFO field within EAD_1, and it must be encrypted.
The hint itself is application dependent, and can contain GPS coordinates, application-specific tags, the list of Vs detected by U, or other relevant information.
It is defined as follows:</t>
        <t>u_hint: [ 1* bstr ]</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section presents high level examples of the protocol execution.</t>
      <t>Note: the examples below include samples of access policies used by W. These are provided for the sake of completeness only, since the authorization mechanism used by W is out of scope in this document.</t>
      <section anchor="example_minimal">
        <name>Minimal</name>
        <t>This is a simple example that demonstrates successful execution of the protocol.</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 identifers 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 verifies 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 of REJECT_INFO contains 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.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91923Lb2LXgO79il1w1lmwStiTbbStxElmiY3XblqLrSSVd
KpDcJBGDAAOAkhVbU+dtnuZ95mlmfmI+YM6ZHzlfMuu2bwCoS7fTSY2Saksk
sC9rr/tt93q9TpVUqd5S75PJtLrU+F+1vaimeZH8La6SPFOLMskmqj+f6pku
4lTtJuNxonvvdJrO4kztX+hC7ewf9TujfJjFMxhrVMTjqpfoatxL40+6F8N4
f+s9Xe/Eg0GhL+4w2e67/Z1OMi+2VFUsymrj6dNXTzc6w7jaUmU16pSLwSwp
S3ihuprDhHv947eduNDxljrSw0WRVFedy7z4NCnyxRym2/6hr87gbxz79/hZ
55O+ggdG8GpW6SLTVW8XF90Z5iN4aEstYO0vO/NkSz1QwxjXpVVcFPGVWk3G
Kk5TdaXLNZUXahqXUzXVhe4oVeXDLfwCfi3zoir0uLR/X838P+HJkZ5X0y21
0enEBIKtTk8x/H7/b/+7gDmPdBpnI13g24uCv/I+ywtYZ79IhmUJgNt+Ax8N
80VWFVfw2KUe6Qw+0bM4SbfUJIcBo1Je/p2Wt6JhPrOzfp9PM3VQ6MW//Q/1
Ia4qfABGSLKkSuIUVv69v5Dmg/dZz19grmgm77Yv50OcJv/3f8XqdPHv/xXW
8O//xZ/d/5Dm3ft4uLftz/gWNjzUbsYZDFfG0cViCO8Nf5dkRRJH48LBXOcX
cabVWz0q9HCqy0+JP2H48d2mnPCQ0di925z3QzKcxjpVh/hvMWJQ2mmDT2nW
IzxBIryjfFxdAtITZpf+QnbiLB7F3t6HxWOkxt+V5uVoGHc6nSwv4AySC73V
gYcP3+683HzxYsv8+mrD/Prq2Sv59dXT5/bTF+ub+OtebzdypK5HU6AB+Pjj
3tFx7+XTp73nL7bxb6UMliv66cm/iGCAW/1IvYmLT4TY/MMA6KdxAqcSfFd7
9X2kdqaEXP6L75P0yv+89tJ2pA7zCfz66ar24naa6qz+ZfPt0xj4T6ov6m/P
87LK0/rXtfcPI7UbXyRl7WU5be87Yc6HGihjprMRM8kxsJ2DOCl6ZwmwpR/0
Va9fVvEAEHwKD1XqaIi8ulQnxEx3k3JY6Eqr9/kkBtY4namd4mpe5ZMink+v
VI/OSh3N9RDoXB0sYKAhTyTn14UFwIrwk01aFqwDVrXxdP1l7+kzXmhcTDRw
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

-->

</rfc>
