<?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.17 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-authz-02" category="std" consensus="true" submissionType="IETF" tocDepth="2" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.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-02"/>
    <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="July" day="05"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 104?>

<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://lake-wg.github.io/authz/draft-ietf-lake-authz.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lake-authz/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Lightweight Authenticated Key Exchange Working Group mailing list (<eref target="mailto:lake@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/lake/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/lake/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lake-wg/authz"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

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

         Explicit relation (e.g., from device manufacture)
     | <---------------------------------------------------> |
     |                                                       |
+----+-----+            +---------------+            +-------+-------+
|          |            |               |            |               |
|  Device  |    con-    |    Domain     |  not con-  |   Enrollment  |
|          |  strained  | Authenticator |  strained  |     Server    |
|   (U)    |  network   |      (V)      |  network   |      (W)      |
|          |            |               |            |               |
+----+-----+            +-------+-------+            +-------+-------+
     |                          |                            |
     | <----------------------> | <------------------------> |
          No previous relation        Implicit relation
                                    (e.g., web PKI based)
]]></artwork>
        </artset>
      </figure>
      <section anchor="device">
        <name>Device (U)</name>
        <t>To authenticate to V, the device (U) runs EDHOC in the role of Initiator with authentication credential CRED_U, for example, an X.509 certificate <xref target="RFC5280"/> or a CBOR Web Token (CWT, <xref target="RFC8392"/>). CRED_U may, for example, be carried by value in ID_CRED_I of EDHOC message_3 or be provisioned to V over a non-constrained network, leveraging a credential identifier in ID_CRED_I (see bottom of <xref target="fig-protocol"/>).</t>
        <t>U also needs to identify itself to W. The device identifier used for this is ID_U. The purpose of ID_U is for W to be able to determine if the device with this identifier is authorized to enroll with V. ID_U may be a reference to CRED_U, like ID_CRED_I in EDHOC (see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>), or a device identifier from a different name space, such as EUI-64 identifiers.</t>
        <t>U is also provisioned with information about W:</t>
        <ul spacing="normal">
          <li>
            <t>A static public DH key of W (G_W) used to establish secure communication with the enrollment server (see <xref target="U-W"/>).</t>
          </li>
          <li>
            <t>Location information about the enrollment server (LOC_W) that can be used by V to reach W. This is typically a URI but may alternatively be only the domain name.</t>
          </li>
        </ul>
      </section>
      <section anchor="domain-auth">
        <name>Domain Authenticator (V)</name>
        <t>To authenticate to U, the domain authenticator (V) runs EDHOC in the role of Responder with an authentication credential CRED_V containing a public key of V, see <xref target="V_2"/>. This proves to U the possession of the private key corresponding to the public key of CRED_V. CRED_V typically needs to be transported to U in EDHOC (using  ID_CRED_R = CRED_V, see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>) since there is no previous relation between U and V.</t>
        <t>V and W need to establish a secure (confidentiality and integrity protected) connection for the Voucher Request/Response protocol.
Furthermore, W needs to access the same credential CRED_V that V uses with U (to compute the Voucher), and V needs to prove to W the possession of the private key corresponding to the public key of CRED_V.
It is RECOMMENDED that V authenticates to W using the same credential CRED_V as with U.</t>
        <t>Note that the choice of protocols may affect which type of credential and methods should be used by V.
For example, in case V and W select TLS for the secure channel and PoP, then CRED_V is a X.509 certificate, and the EDHOC method used by V is signature-based.
Some of the possible combinations of protocols to secure the connection between V and W are listed in <xref target="creds-table"/> below.</t>
        <table anchor="creds-table">
          <name>Examples of how to secure the connection between V and W.</name>
          <thead>
            <tr>
              <th align="left">Secure channel between V and W</th>
              <th align="left">Proof-of-Possession from V to W</th>
              <th align="left">Type of CRED_V</th>
              <th align="left">EDHOC method used by V</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">[D]TLS 1.3 with mutual authentication, where V is the client and W is the server.</td>
              <td align="left">Provided by [D]TLS.</td>
              <td align="left">Restricted to types that are supported by both [D]TLS and EDHOC, e.g., X.509 certificates.</td>
              <td align="left">V MUST authenticate using a signature.</td>
            </tr>
            <tr>
              <td align="left">[D]TLS 1.3 with client authentication, where V is the client and W is the server.</td>
              <td align="left">Run an EDHOC session on top of the TLS-protected channel.</td>
              <td align="left">Any type supported by EDHOC, e.g., X.509, C509, CWT, or CCS.</td>
              <td align="left">Any method may be used.</td>
            </tr>
            <tr>
              <td align="left">EDHOC and OSCORE, where V is the initiator and W is the responder.</td>
              <td align="left">Already provided by EDHOC during the setup of the secure channel.</td>
              <td align="left">Any type supported by EDHOC.</td>
              <td align="left">Any method may be used.</td>
            </tr>
          </tbody>
        </table>
        <t>Note also that the secure connection between V and W may be long-lived and reused for multiple voucher requests/responses.</t>
        <t>Other details of proof-of-possession related to CRED_V and transport of CRED_V are out of scope of this document.</t>
      </section>
      <section anchor="authz-server">
        <name>Enrollment Server (W)</name>
        <t>The enrollment server (W) is assumed to have the private DH key corresponding to G_W, which is used to establish secure communication with the device (see <xref target="U-W"/>). W provides to U the authorization decision for enrollment with V in the form of a voucher (see <xref target="voucher"/>). Authorization policies are out of scope for this document.</t>
        <t>Authentication credentials and communication security with V is described in <xref target="domain-auth"/>. To calculate the voucher, W needs access to message_1 and CRED_V as used in the EDHOC session between U and V, see <xref target="voucher"/>.</t>
        <ul spacing="normal">
          <li>
            <t>W MUST verify that CRED_V is bound to the secure connection between W and V</t>
          </li>
          <li>
            <t>W MUST verify that V is in possession of the private key corresponding to the public key of CRED_V</t>
          </li>
        </ul>
        <t>W needs to be available during the execution of the protocol between U and V.</t>
      </section>
    </section>
    <section anchor="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="2" sectionFormat="of" target="RFC9528"/>.</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="360" y="148">Proof-of-possession</text>
                  <text x="468" y="148">w.r.t.</text>
                  <text x="524" y="148">CRED_V</text>
                  <text x="380" y="180">(e.g.,</text>
                  <text x="436" y="180">EDHOC)</text>
                  <text x="228" y="276">CORE</text>
                  <text x="284" y="276">PROTOCOL</text>
                  <text x="104" y="324">EDHOC</text>
                  <text x="168" y="324">message_1</text>
                  <text x="52" y="356">(EAD_1</text>
                  <text x="88" y="356">=</text>
                  <text x="124" y="356">LOC_W,</text>
                  <text x="200" y="356">ENC_U_INFO)</text>
                  <text x="352" y="388">Voucher</text>
                  <text x="416" y="388">Request</text>
                  <text x="476" y="388">(VREQ)</text>
                  <text x="360" y="420">(message_1,</text>
                  <text x="468" y="420">?opaque_state)</text>
                  <text x="352" y="452">Voucher</text>
                  <text x="420" y="452">Response</text>
                  <text x="484" y="452">(VRES)</text>
                  <text x="320" y="484">(message_1,</text>
                  <text x="404" y="484">Voucher,</text>
                  <text x="500" y="484">?opaque_state)</text>
                  <text x="104" y="516">EDHOC</text>
                  <text x="168" y="516">message_2</text>
                  <text x="100" y="548">(EAD_2</text>
                  <text x="136" y="548">=</text>
                  <text x="180" y="548">Voucher)</text>
                  <text x="104" y="596">EDHOC</text>
                  <text x="168" y="596">message_3</text>
                  <text x="540" y="708">Credential</text>
                  <text x="548" y="724">Database</text>
                  <text x="352" y="756">ID_CRED_I</text>
                  <text x="412" y="756">from</text>
                  <text x="472" y="756">message_3</text>
                  <text x="420" y="804">CRED_U</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
U                              V                                       W
|                              |                                       |
|                              |                                       |
|                              |        Establish secure channel       |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |      (e.g., TLS with server cert.)    |
|                              |                                       |
|                              |   Proof-of-possession w.r.t. CRED_V   |
|                              +<---  ---  ---  ---  ---  ---  ---  -->|
|                              |            (e.g., EDHOC)              |
|                              |                                       |
|                              |                                       |
|                              |                                       |

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

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

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

|                              |
|                              |                              Credential
|                              |                                Database
|                              |                                       |
|                              |       ID_CRED_I from message_3        |
|                              +---  ---  ---  ---   ---  ---  ---  -->|
|                              |                                       |
|                              |                 CRED_U                |
|                              |<--  ---  ---  ---  ---   ---  ---  ---+
|                              |                                       |
|                              |                                       |
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="reuse">
        <name>Reuse of EDHOC</name>
        <t>The 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="RFC9528"/>):  </t>
            <ul spacing="normal">
              <li>
                <t>EDHOC AEAD algorithm: used to encrypt ID_U and to generate voucher</t>
              </li>
              <li>
                <t>EDHOC hash algorithm: used for key derivation</t>
              </li>
              <li>
                <t>EDHOC key exchange algorithm: used to calculate the shared secret between U and W</t>
              </li>
            </ul>
          </li>
          <li>
            <t>EAD_1, EAD_2 are the External Authorization Data message fields of message_1 and message_2, respectively, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. 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="RFC9528"/>).</t>
        <ul spacing="normal">
          <li>
            <t>The intermediate pseudo-random key PRK is derived using EDHOC_Extract():
            </t>
            <ul spacing="normal">
              <li>
                <t>PRK = EDHOC_Extract(salt, IKM)
                </t>
                <ul spacing="normal">
                  <li>
                    <t>where salt = 0x (the zero-length byte string)</t>
                  </li>
                  <li>
                    <t>IKM is computed as an ECDH cofactor Diffie-Hellman shared secret from the public key of W, G_W, and the private key corresponding to G_X (or v.v.), see Section 5.7.1.2 of <xref target="NIST-800-56A"/>.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>The output keying material OKM is derived from PRK using EDHOC_Expand(), which is defined in terms of the EDHOC hash algorithm of the selected cipher suite, see <xref section="4.1.2" sectionFormat="of" target="RFC9528"/>:</t>
        <ul spacing="normal">
          <li>
            <t>OKM = EDHOC_Expand(PRK, info, length)  </t>
            <t>
where</t>
          </li>
        </ul>
        <sourcecode type="cddl"><![CDATA[
info = (
   info_label : int,
   context : bstr,
   length : uint,
)
]]></sourcecode>
      </section>
      <section anchor="stateless-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 (see <xref target="voucher_request"/>).
V encapsulates the internal state that it needs to later respond to U, and sends that to W together with EDHOC message_1.
This state typically contains addressing information of U (e.g., U's IP address and port number), together with any other implementation-specific parameter needed by V to respond to U.
At this point, V can drop the EDHOC session that was initiated by U.</t>
        <t>The encapsulated state MUST be protected using a uniformly-distributed (pseudo-)random key, known only to itself and specific for the current EDHOC session to prevent replay attacks of old encapsulated state.</t>
        <t>How V serializes and encrypts its internal state is out of scope in this specification.
For example, V may use CBOR and COSE.</t>
        <t>Editor's note: Consider to include an example of serialized internal state.</t>
        <t>W sends to V the voucher together with the echoed message_1, as received from U, and V's internal state, see <xref target="voucher_response"/>.
This allows V to act as a simple message relay until it has obtained the authorization from W to enroll U.
The reception of a successful Voucher Response at V from W implies the authorization for V to enroll U.
At this point, V can initialize a new EDHOC session with U, based on the message and the state retrieved from the Voucher Response from W.</t>
      </section>
      <section anchor="U-W">
        <name>Device &lt;-&gt; Enrollment Server (U &lt;-&gt; W)</name>
        <t>The protocol between U and W is carried between U and V in message_1 and message_2 (<xref target="U-V"/>), and between V and W in the Voucher Request/Response (<xref target="V-W"/>). The data is protected between the endpoints using secret keys derived from a Diffie-Hellman shared secret (see <xref target="reuse"/>) as further detailed in this section.</t>
        <section anchor="voucher_info">
          <name>Voucher Info</name>
          <t>The external authorization data EAD_1 contains an EAD item with ead_label = TBD1 and ead_value = Voucher_Info, which is a CBOR byte string:</t>
          <sourcecode type="cddl"><![CDATA[
Voucher_Info = bstr .cborseq Voucher_Info_Seq

Voucher_Info_Seq = [ ; used as a CBOR sequence, not array
    LOC_W:      tstr,
    ENC_U_INFO:     bstr
]
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>LOC_W is a text string used by V to locate W, e.g., a URI or a domain name.</t>
            </li>
            <li>
              <t>ENC_U_INFO is a byte string containing an encrypted identifier of U and, optionally, opaque application data prepared by U. It is calculated as follows:</t>
            </li>
          </ul>
          <t>ENC_U_INFO is encrypted using the EDHOC AEAD algorithm of the selected cipher suite specified in SUITE_I of EDHOC message_1.
It consists of 'ciphertext' of COSE_Encrypt0 (<xref section="5.2" sectionFormat="of" target="RFC9052"/>) computed from the following:</t>
          <ul spacing="normal">
            <li>
              <t>The encryption key K_1 and nonce IV_1 are derived as specified below.</t>
            </li>
            <li>
              <t>'protected' is a byte string of size 0</t>
            </li>
            <li>
              <t>'plaintext' and 'external_aad' as below:</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    ID_U:            bstr,
    ?OPAQUE_INFO:    bstr,
)
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = (
    SS:              int,
)
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>ID_U is an identifier of the device, see <xref target="device"/>.</t>
            </li>
            <li>
              <t>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 the key of the EDHOC AEAD algorithm in bytes (which is the length of K_1)</t>
            </li>
          </ul>
          <t>The derivation of IV_1 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see OKM in <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 1</t>
            </li>
            <li>
              <t>context = h''  (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the nonce of the EDHOC AEAD algorithm in bytes (which is the length of IV_1)</t>
            </li>
          </ul>
        </section>
        <section anchor="voucher">
          <name>Voucher</name>
          <t>The voucher is an assertion to U that W has authorized V.
It is encrypted using the EDHOC AEAD algorithm of the selected cipher suite specified in SUITE_I of EDHOC message_1.
It consists of the 'ciphertext' field of a COSE_Encrypt0 object, which is a byte string, as defined below.</t>
          <sourcecode type="cddl"><![CDATA[
Voucher = bstr
]]></sourcecode>
          <t>Its corresponding plaintext value consists of an opaque field that can be used by W to convey information to U, such as a voucher scope.
The authentication tag present in the ciphertext is also bound to message_1 and the credential of V as described below.</t>
          <ul spacing="normal">
            <li>
              <t>The encryption key K_2 and nonce IV_2 are derived as specified below.</t>
            </li>
            <li>
              <t>'protected' is a byte string of size 0</t>
            </li>
            <li>
              <t>'plaintext' and 'external_aad' as below:</t>
            </li>
          </ul>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    ?OPAQUE_INFO: bstr
)
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = (
    H_message_1:  bstr,
    CRED_V:        bstr,
)
]]></sourcecode>
          <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"/>.
The hash is computed by using the EDHOC hash algorithm of the selected cipher suite specified in SUITE_I of EDHOC message_1.</t>
            </li>
            <li>
              <t>CRED_V is the credential used by V to authenticate to U and W, see <xref target="V_2"/> and <xref target="creds-table"/>.</t>
            </li>
          </ul>
          <t>The derivation of K_2 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 2</t>
            </li>
            <li>
              <t>context  = h'' (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the key of the EDHOC AEAD algorithm in bytes</t>
            </li>
          </ul>
          <t>The derivation of IV_2 = EDHOC_Expand(PRK, info, length) uses the following input to the info struct (see <xref target="reuse"/>):</t>
          <ul spacing="normal">
            <li>
              <t>info_label = 3</t>
            </li>
            <li>
              <t>context = h''  (the empty CBOR string)</t>
            </li>
            <li>
              <t>length is length of the nonce of the EDHOC AEAD algorithm in bytes</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="U-V">
        <name>Device &lt;-&gt; Authenticator (U &lt;-&gt; V)</name>
        <t>This section describes the processing in U and V, which includes the EDHOC protocol, see <xref target="fig-protocol"/>. Normal EDHOC processing is omitted here.</t>
        <section anchor="m1">
          <name>Message 1</name>
          <section anchor="processing-in-u">
            <name>Processing in U</name>
            <t>U composes EDHOC message_1 using authentication method, identifiers, etc. according to an agreed application profile, see <xref section="3.9" sectionFormat="of" target="RFC9528"/>. The selected cipher suite, in this document denoted SS, applies also to the interaction with W as detailed in <xref target="reuse"/>, in particular, with respect to the Diffie-Hellman key agreement algorithm used between U and W. As part of the normal EDHOC processing, U generates the ephemeral public key G_X that is reused in the interaction with W, see <xref target="U-W"/>.</t>
            <t>The device sends EDHOC message_1 with EAD item (-TBD1, Voucher_Info) included in EAD_1, where Voucher_Info is specified in <xref target="U-W"/>. The negative sign indicates that the EAD item is critical, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>.</t>
          </section>
          <section anchor="processing-in-v">
            <name>Processing in V</name>
            <t>V receives EDHOC message_1 from U and processes it as specified in <xref section="5.2.3" sectionFormat="of" target="RFC9528"/>, with the additional step of processing the EAD item in EAD_1. Since the EAD item is critical, if V does not recognize it or it contains information that V cannot process, then V MUST abort the EDHOC session, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. Otherwise, the ead_label = TBD1 triggers the voucher request to W as described in <xref target="V-W"/>. The exchange between V and W needs to be completed successfully for the EDHOC session to be continued.</t>
          </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, i.e., ead_label = TBD1 and ead_value = Voucher, as specified in <xref target="voucher"/>.</t>
            <t>The type of CRED_V may depend on the selected mechanism for the establishment of a secure channel between V and W, See <xref target="creds-table"/>.</t>
            <t>In case the network between U and V is constrained, it is recommended that CRED_V be a CWT Claims Set (CCS) <xref target="RFC8392"/>.
The CCS contains the public authentication key of V encoded as a COSE_Key in the 'cnf' claim, see <xref section="3.5.2" sectionFormat="of" target="RFC9528"/>.
ID_CRED_R contains the CWT Claims Set with 'kccs' as COSE header_map, see <xref section="10.6" sectionFormat="of" target="RFC9528"/>.</t>
          </section>
          <section anchor="processing-in-u-1">
            <name>Processing in U</name>
            <t>U receives EDHOC message_2 from V and processes it as specified in <xref section="5.3.3" sectionFormat="of" target="RFC9528"/>, with the additional step of processing the EAD item in EAD_2.</t>
            <t>If U does not recognize the EAD item or the EAD item contains information that U cannot process, then U MUST abort the EDHOC session, see <xref section="3.8" sectionFormat="of" target="RFC9528"/>. Otherwise, U MUST verify the Voucher using H_message_1, CRED_V, and the keys derived as in <xref target="voucher"/>. If the verification fails then U MUST abort the EDHOC session.</t>
          </section>
        </section>
        <section anchor="message-3">
          <name>Message 3</name>
          <section anchor="processing-in-u-2">
            <name>Processing in U</name>
            <t>If all verifications are passed, then U sends EDHOC message_3.</t>
            <t>EDHOC message_3 may be combined with an OSCORE-protected application request, see <xref target="I-D.ietf-core-oscore-edhoc"/>.</t>
          </section>
          <section anchor="processing-in-v-1">
            <name>Processing in V</name>
            <t>V performs the normal EDHOC verifications of message_3. V may retrieve CRED_U from a Credential Database, after having learned ID_CRED_I from U.</t>
          </section>
        </section>
      </section>
      <section anchor="V-W">
        <name>Authenticator &lt;-&gt; Enrollment Server (V &lt;-&gt; W)</name>
        <t>It is assumed that V and W have set up a secure connection, W has accessed the authentication credential CRED_V to be used in the EDHOC session between V and U, and that W has verified that V is in possession of the private key corresponding to CRED_V, see <xref target="domain-auth"/> and <xref target="authz-server"/>.
V and W run the Voucher Request/Response protocol over the secure connection.</t>
        <section anchor="voucher_request">
          <name>Voucher Request</name>
          <section anchor="processing-in-v-2">
            <name>Processing in V</name>
            <t>V sends the voucher request to W.
The Voucher Request SHALL be a CBOR array as defined below:</t>
            <sourcecode type="cddl"><![CDATA[
Voucher_Request = [
    message_1:      bstr,
    ? opaque_state: bstr
]
]]></sourcecode>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>message_1 is a CBOR byte string whose value is the byte serialization of 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.
Note that message_1 contains a unique ephemeral key, therefore H_message_1 is expected to be unique.</t>
            <t>If processing fails up until this point, the protocol SHALL be aborted with an error code signaling a generic issue with the request, see <xref target="rest-voucher-request"/>.</t>
            <t>W uses ID_U to look up the associated authorization policies for U and enforces them. This is out of scope for the specification.</t>
            <t>If ID_U is known by W, but authorization fails, the protocol SHALL be aborted with an error code signaling an access control issue, see <xref target="err-handling"/> and <xref target="rest-voucher-request"/>.</t>
          </section>
        </section>
        <section anchor="voucher_response">
          <name>Voucher Response</name>
          <section anchor="processing-in-w-1">
            <name>Processing in W</name>
            <t>W retrieves CRED_V associated with the secure connection with V, and constructs the Voucher for the device with identifier ID_U (see <xref target="voucher"/>).</t>
            <t>W generates the voucher response and sends it to V over the secure connection. The Voucher_Response SHALL be a CBOR array as defined below:</t>
            <sourcecode type="cddl"><![CDATA[
Voucher_Response = [
    message_1:      bstr,
    Voucher:        bstr,
    ? opaque_state: bstr
]
]]></sourcecode>
            <t>where</t>
            <ul spacing="normal">
              <li>
                <t>message_1 is a CBOR byte string whose value is the byte serialization of 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>
            <t>W signals the successful generation of the voucher via a status code in the REST interface, as defined in <xref target="rest-voucher-request"/>.</t>
          </section>
          <section anchor="processing-in-v-3">
            <name>Processing in V</name>
            <t>V receives the voucher response from W over the secure connection.
If present, V decrypts and verifies opaque_state as received from W. If that verification fails, then the EDHOC session
with U is aborted.
If the voucher response is successfully received from W, then V responds to U with EDHOC message_2 as described in <xref target="V_2"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="err-handling">
        <name>Error Handling</name>
        <t>This section specifies a new EDHOC error code and how it is used in 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.
W signals the error via an appropriate status code in the REST interface, as defined in <xref target="rest-voucher-request"/>.</t>
            </li>
            <li>
              <t>V receives error_content, prepares an EDHOC "Access denied" error, and sends it to U.</t>
            </li>
            <li>
              <t>U receives the error message and extracts the error_content.
If REJECT_TYPE is 1, then U decrypts REJECT_INFO, based on which it may retry to gain access.</t>
            </li>
          </ul>
          <t>The encryption of REJECT_INFO follows a procedure analogous to the one defined in <xref target="voucher"/>, with the following differences:</t>
          <sourcecode type="cddl"><![CDATA[
plaintext = (
    OPAQUE_INFO:     bstr,
 )
]]></sourcecode>
          <sourcecode type="cddl"><![CDATA[
external_aad = (
    H_message_1:    bstr,
 )
]]></sourcecode>
          <t>where</t>
          <ul spacing="normal">
            <li>
              <t>OPAQUE_INFO is an opaque field that contains actionable information about the error.
It may contain, for example, a list of suggested Vs through which U should join instead.</t>
            </li>
            <li>
              <t>H_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 the LOC_W URI.</t>
      <section anchor="scheme-https">
        <name>Scheme "https"</name>
        <t>In case the scheme indicates "https", V MUST perform a TLS handshake with W and access the resources defined in <xref target="uris"/> using HTTP.
If the authentication credential CRED_V can be used in a TLS handshake, e.g., an X.509 certificate of a signature public key, then V SHOULD use it to authenticate to W as a client.
If the authentication credential CRED_V cannot be used in a TLS handshake, e.g., if the public key is a static Diffie-Hellman key, then V SHOULD first perform a TLS handshake with W using available compatible keys.
V MUST then perform an EDHOC session over the TLS connection proving to W the possession of the private key corresponding to CRED_V.
Performing the EDHOC session is only necessary if V did not authenticate with CRED_V in the TLS handshake with W.</t>
        <t>Editor's note: Clarify that performing TLS handshake is not necessary for each device request; if there already is a TLS connection between V and W that should be reused. Similar considerations for 5.2 and 5.3.</t>
      </section>
      <section anchor="scheme-coaps">
        <name>Scheme "coaps"</name>
        <t>In case the scheme indicates "coaps", V SHOULD perform a DTLS handshake with W and access the resources defined in <xref target="uris"/> using CoAP.
The normative requirements in <xref target="scheme-https"/> on performing the DTLS handshake and EDHOC session remain the same, except that TLS is replaced with DTLS.</t>
      </section>
      <section anchor="scheme-coap">
        <name>Scheme "coap"</name>
        <t>In case the scheme indicates "coap", V SHOULD perform an EDHOC session with W, as specified in <xref section="A" sectionFormat="of" target="RFC9528"/> and access the resources defined in <xref target="uris"/> using OSCORE and CoAP.
The authentication credential in this EDHOC session MUST be CRED_V.</t>
      </section>
      <section anchor="uris">
        <name>URIs</name>
        <t>The URIs defined below are valid for both HTTP and CoAP.
W MUST support the use of the path-prefix "/.well-known/", as defined in <xref target="RFC8615"/>, and the registered name "lake-authz".
A valid URI in case of HTTP thus begins with</t>
        <ul spacing="normal">
          <li>
            <t>"https://www.example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of CoAP with DTLS:</t>
        <ul spacing="normal">
          <li>
            <t>"coaps://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>In case of EDHOC and OSCORE:</t>
        <ul spacing="normal">
          <li>
            <t>"coap://example.com/.well-known/lake-authz"</t>
          </li>
        </ul>
        <t>Each operation specified in the following is indicated by a path-suffix.</t>
        <section anchor="rest-voucher-request">
          <name>Voucher Request (/voucherrequest)</name>
          <t>To request a voucher, V MUST issue a request such that:</t>
          <ul spacing="normal">
            <li>
              <t>Method is POST</t>
            </li>
            <li>
              <t>Payload is the serialization of the Voucher Request object, as specified in <xref target="voucher_request"/>.</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-voucherrequest+cbor"</t>
            </li>
          </ul>
          <t>In case of successful processing at W, W MUST issue a response such that:</t>
          <ul spacing="normal">
            <li>
              <t>Status code is 200 OK if using HTTP, or 2.04 Changed if using CoAP</t>
            </li>
            <li>
              <t>Payload is the serialized Voucher Response object, as specified in <xref target="voucher_response"/></t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-voucherresponse+cbor"</t>
            </li>
          </ul>
          <t>In case of error, two cases should be considered:</t>
          <ul spacing="normal">
            <li>
              <t>U cannot be identified: this happens either if W fails to process the Voucher Request, or if it succeeds but ID_U is considered unknown to W. In this case, W MUST reply with 400 Bad Request if using HTTP, or 4.00 if using CoAP.</t>
            </li>
            <li>
              <t>U is identified but unauthorized: this happens if W is able to process the Voucher Request, and W recognizes ID_U as a known device, but the access policies forbid enrollment. For example, the policy could enforce enrollment within a delimited time window, via a specific V, etc. In this case, W MUST reply with a 403 Forbidden code if using HTTP, or 4.03 if using CoAP; the payload is the serialized error_content object, with Content-Format (Content-Type) set to "application/lake-authz-vouchererror+cbor". The payload MAY be used by V to prepare an EDHOC error "Access Denied", see <xref target="err-handling"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="certificate-request-certrequest">
          <name>Certificate Request (/certrequest)</name>
          <t>V requests the public key certificate of U from W through the "/certrequest" path-suffix.
To request U's authentication credential, V MUST issue a request such that:</t>
          <ul spacing="normal">
            <li>
              <t>Method is POST</t>
            </li>
            <li>
              <t>Payload is the serialization of the ID_CRED_I object, as received in EDHOC message_3.</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-certrequest+cbor"</t>
            </li>
          </ul>
          <t>In case of a successful lookup of the authentication credential at W, W MUST issue a response such that:</t>
          <ul spacing="normal">
            <li>
              <t>Status code is 200 OK if using HTTP, or 2.04 Changed if using CoAP</t>
            </li>
            <li>
              <t>Payload is the serialized CRED_U</t>
            </li>
            <li>
              <t>Content-Format (Content-Type) is set to "application/lake-authz-certresponse+cbor"</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>This specification builds on and reuses many of the security constructions of EDHOC, e.g., shared secret calculation and key derivation. The security considerations of EDHOC <xref target="RFC9528"/> apply with modifications discussed here.</t>
      <t>EDHOC provides identity protection of the Initiator, here the device. The encryption of the device identifier ID_U in the first message should consider potential information leaking from the length of ID_U, either by making all identifiers having the same length or the use of a padding scheme.</t>
      <t>Although W learns about the identity of U after receiving VREQ, this information must not be disclosed to V, until U has revealed its identity to V with ID_CRED_I in message_3. W may be used for lookup of CRED_U from ID_CRED_I, or this credential lookup function may be separate from the authorization function of W, see <xref target="fig-protocol"/>. The trust model used here is that U decides to which V it reveals its identity. In an alternative trust model where U trusts W to decide to which V it reveals U's identity, CRED_U could be sent in Voucher Response.</t>
      <t>As noted in <xref section="9.2" sectionFormat="of" target="RFC9528"/> an ephemeral key may be used to calculate several ECDH shared secrets. In this specification, the ephemeral key G_X is also used to calculate G_XW, the shared secret with the enrollment server.</t>
      <t>The private ephemeral key is thus used in the device for calculations of key material relating to both the authenticator and the enrollment server. There are different options for where to implement these calculations. One option is as an addition to EDHOC, i.e., to extend the EDHOC API in the device, so that EDHOC can import the public key of W (G_W) and the device identifier of U (ID_U), and then produce the encryption of ID_U which is included in Voucher_Info in EAD_1.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-ead">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA has registered the following 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 parameters: N/A</t>
            </li>
            <li>
              <t>Encoding considerations: binary (CBOR)</t>
            </li>
            <li>
              <t>Security considerations: See <xref target="sec-cons"/> of this document.</t>
            </li>
            <li>
              <t>Interoperability considerations: N/A</t>
            </li>
            <li>
              <t>Published specification: [[this document]] (this document)</t>
            </li>
            <li>
              <t>Application that use this media type: To be identified</t>
            </li>
            <li>
              <t>Fragment identifier considerations: N/A</t>
            </li>
            <li>
              <t>Additional information:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Magic number(s): N/A</t>
                </li>
                <li>
                  <t>File extension(s): N/A</t>
                </li>
                <li>
                  <t>Macintosh file type code(s): N/A</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information: IETF LAKE Working Group (lake@ietf.org)</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: N/A</t>
            </li>
            <li>
              <t>Author: LAKE WG</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="coap-content-formats-registry">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA has added the following Content-Format number in the "CoAP Content-Formats" registry under the registry group "Constrained RESTful Environments (CoRE) Parameters".</t>
        <table anchor="coap-content-formats">
          <name>Addition to the CoAP Content-Formats registry</name>
          <thead>
            <tr>
              <th align="left">Content Type</th>
              <th align="left">Content Encoding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/lake-authz-voucherrequest+cbor</td>
              <td align="left">-</td>
              <td align="left">TBD2</td>
              <td align="left">[[this document]]</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8366" target="https://www.rfc-editor.org/info/rfc8366" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8366.xml">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9528" target="https://www.rfc-editor.org/info/rfc9528" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9528.xml">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="NIST-800-56A" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography - NIST Special Publication 800-56A, Revision 3</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lily Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis" fullname="Richard Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3172" target="https://www.rfc-editor.org/info/rfc3172" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3172.xml">
          <front>
            <title>Management Guidelines &amp; Operational Requirements for the Address and Routing Parameter Area Domain ("arpa")</title>
            <author fullname="G. Huston" initials="G." role="editor" surname="Huston"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo describes the management and operational requirements for the address and routing parameter area ("arpa") domain. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="52"/>
          <seriesInfo name="RFC" value="3172"/>
          <seriesInfo name="DOI" value="10.17487/RFC3172"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6761" target="https://www.rfc-editor.org/info/rfc6761" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6761.xml">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so. It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8615.xml">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8995" target="https://www.rfc-editor.org/info/rfc8995" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8995.xml">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC9031" target="https://www.rfc-editor.org/info/rfc9031" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9031.xml">
          <front>
            <title>Constrained Join Protocol (CoJP) for 6TiSCH</title>
            <author fullname="M. Vučinić" initials="M." role="editor" surname="Vučinić"/>
            <author fullname="J. Simon" initials="J." surname="Simon"/>
            <author fullname="K. Pister" initials="K." surname="Pister"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes the minimal framework required for a new device, called a "pledge", to securely join a 6TiSCH (IPv6 over the Time-Slotted Channel Hopping mode of IEEE 802.15.4) network. The framework requires that the pledge and the JRC (Join Registrar/Coordinator, a central entity), share a symmetric key. How this key is provisioned is out of scope of this document. Through a single CoAP (Constrained Application Protocol) request-response exchange secured by OSCORE (Object Security for Constrained RESTful Environments), the pledge requests admission into the network, and the JRC configures it with link-layer keying material and other parameters. The JRC may at any time update the parameters through another request-response exchange secured by OSCORE. This specification defines the Constrained Join Protocol and its CBOR (Concise Binary Object Representation) data structures, and it describes how to configure the rest of the 6TiSCH communication stack for this join process to occur in a secure manner. Additional security mechanisms may be added on top of this minimal framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9031"/>
          <seriesInfo name="DOI" value="10.17487/RFC9031"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-edhoc-11" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-edhoc.xml">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="9" month="April" year="2024"/>
            <abstract>
              <t>The lightweight authenticated key exchange protocol Ephemeral Diffie- Hellman Over COSE (EDHOC) can be run over the Constrained Application Protocol (CoAP) and used by two peers to establish a Security Context for the security protocol Object Security for Constrained RESTful Environments (OSCORE). This document details this use of the EDHOC protocol, by specifying a number of additional and optional mechanisms. These especially include an optimization approach for combining the execution of EDHOC with the first OSCORE transaction. This combination reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-11"/>
        </reference>
        <reference anchor="I-D.ietf-lake-reqs" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-reqs-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-reqs.xml">
          <front>
            <title>Requirements for a Lightweight AKE for OSCORE</title>
            <author fullname="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>Inria</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Dan Garcia-Carillo" initials="D." surname="Garcia-Carillo">
              <organization>Odin Solutions S.L.</organization>
            </author>
            <date day="8" month="June" year="2020"/>
            <abstract>
              <t>This document compiles the requirements for a lightweight authenticated key exchange protocol for OSCORE. This draft has completed a working group last call (WGLC) in the LAKE working group. Post-WGLC, the requirements are considered sufficiently stable for the working group to proceed with its work. It is not currently planned to publish this draft as an RFC.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-reqs-04"/>
        </reference>
        <reference anchor="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 847?>

<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"/>).
The Join Proxy does not participate in the protocol and acts as a transparent router between the device and the domain authenticator.
For simplicity, <xref target="fig-cojp"/> illustrates the case when the device and the domain authenticator are a single hop away and can communicate directly.</t>
      </section>
      <section anchor="the-enrollment-protocol-with-parameter-provisioning">
        <name>The Enrollment Protocol with Parameter Provisioning</name>
        <section anchor="flight-1">
          <name>Flight 1</name>
          <t>Once the device has discovered the network it wants to join, it constructs EDHOC message_1, as described in <xref target="U-V"/>.
The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa". This is an anycast type of identifier of the domain authenticator (V) that is resolved to its IPv6 address by the Join Proxy.</t>
            </li>
            <li>
              <t>By means of Uri-Path options, the Uri-Path is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The payload is the (true, EDHOC message_1) CBOR sequence, where EDHOC message_1 is constructed as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-2">
          <name>Flight 2</name>
          <t>The domain authenticator receives message_1 and processes it as described in <xref target="U-V"/>.
The message triggers the exchange with the enrollment server, as described in <xref target="V-W"/>.
If the exchange between V and W completes successfully, the domain authenticator prepares EDHOC message_2, as described in <xref target="U-V"/>.
The authenticator SHALL map the message to a CoAP response:</t>
          <ul spacing="normal">
            <li>
              <t>The response code is 2.04 Changed.</t>
            </li>
            <li>
              <t>The payload is the EDHOC message_2, as defined in <xref target="U-V"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="flight-3">
          <name>Flight 3</name>
          <t>The device receives EDHOC message_2 and processes it as described in <xref target="U-V"/>.
Upon successful processing of message_2, the device prepares flight 3, which is an OSCORE-protected CoJP request containing an EDHOC message_3, as described in <xref target="I-D.ietf-core-oscore-edhoc"/>.
EDHOC message_3 is prepared as described in <xref target="U-V"/>.
The OSCORE-protected payload is the CoJP Join Request object specified in <xref section="8.4.1" sectionFormat="of" target="RFC9031"/>.
OSCORE protection leverages the OSCORE Security Context derived from the EDHOC session, as specified in Appendix A of <xref target="RFC9528"/>.
To that end, <xref target="I-D.ietf-core-oscore-edhoc"/> specifies that the Sender ID of the client (device) must be set to the connection identifier selected by the domain authenticator, C_R.
OSCORE includes the Sender ID as the kid in the OSCORE option.
The network identifier in the CoJP Join Request object is set to the network identifier obtained from the network discovery phase.
In case of IEEE 802.15.4 networks, this is the PAN ID.</t>
          <t>The device SHALL map the message to a CoAP request:</t>
          <ul spacing="normal">
            <li>
              <t>The request method is POST.</t>
            </li>
            <li>
              <t>The type is Confirmable (CON).</t>
            </li>
            <li>
              <t>The Proxy-Scheme option is set to "coap".</t>
            </li>
            <li>
              <t>The Uri-Host option is set to "lake-authz.arpa".</t>
            </li>
            <li>
              <t>The Uri-Path option is set to ".well-known/edhoc".</t>
            </li>
            <li>
              <t>The EDHOC option <xref target="I-D.ietf-core-oscore-edhoc"/> is set and is empty.</t>
            </li>
            <li>
              <t>The payload is prepared as described in <xref section="3.2" sectionFormat="of" target="I-D.ietf-core-oscore-edhoc"/>, with EDHOC message_3 and the CoJP Join Request object as the OSCORE-protected payload.</t>
            </li>
          </ul>
          <t>Note that the OSCORE Sender IDs are derived from the connection identifiers of the EDHOC session.
This is in contrast with <xref target="RFC9031"/> where ID Context of the OSCORE Security Context is set to the device identifier (pledge identifier).
Since the device identity is exchanged during the EDHOC session, and the certificate of the device is communicated to the authenticator as part of the Voucher Response message, there is no need to transport the device identity in OSCORE messages.
The authenticator playing the role of the <xref target="RFC9031"/> JRC obtains the device identity from the execution of the authorization protocol.</t>
        </section>
        <section anchor="flight-4">
          <name>Flight 4</name>
          <t>Flight 4 is the OSCORE response carrying CoJP response message.
The message is processed as specified in <xref section="8.4.2" sectionFormat="of" target="RFC9031"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="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>
        <sourcecode type="cddl"><![CDATA[
v_hint = [ + bstr ]
]]></sourcecode>
      </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>
        <sourcecode type="cddl"><![CDATA[
u_hint = [ + bstr ]
]]></sourcecode>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section presents high level examples of the protocol execution.</t>
      <t>Note: the examples below include samples of access policies used by W. These are provided for the sake of completeness only, since the authorization mechanism used by W is out of scope in this document.</t>
      <section anchor="example_minimal">
        <name>Minimal</name>
        <t>This is a simple example that demonstrates a successful execution of 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 identifiers are MAC addresses (EUI-48)</t>
          </li>
          <li>
            <t>device u1 has ID_U = key id = 14</t>
          </li>
          <li>
            <t>there are 3 gateways in the radio range of u1:
            </t>
            <ul spacing="normal">
              <li>
                <t>v1 with MAC address = A2-A1-88-EE-97-75</t>
              </li>
              <li>
                <t>v2 with MAC address = 28-0F-70-84-51-E4</t>
              </li>
              <li>
                <t>v3 with MAC address = 39-63-C9-D0-5C-62</t>
              </li>
            </ul>
          </li>
          <li>
            <t>the access policy in W specifies, via a mapping of shape (ID_U; MAC1, MAC2, ...) that device u1 can only join via gateway v3, i.e., the mapping is: (14; 39-63-C9-D0-5C-62)</t>
          </li>
          <li>
            <t>W is able to map the PoP key of the gateways to their respective MAC addresses</t>
          </li>
        </ul>
        <t>Execution:</t>
        <ol spacing="normal" type="1"><li>
            <t>device u1 tries to join via gateway v1, which forwards the request to W</t>
          </li>
          <li>
            <t>W determines that MAC address A2-A1-88-EE-97-75 is not in the access policy mapping, and replies with an error. The error_content has REJECT_TYPE = 1, and the plaintext OPAQUE_INFO (used to compute the encrypted REJECT_INFO) specifies a list of suggested gateways = [h'3963C9D05C62']. The single element in the list is the 6-byte MAC address of v3, serialized as a bstr.</t>
          </li>
          <li>
            <t>gateway v1 assembles an EDHOC error "Access Denied" with error_content, and sends it to u1</t>
          </li>
          <li>
            <t>device u1 processes the error, decrypts REJECT_INFO, and retries the protocol via gateway v3</t>
          </li>
        </ol>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank <contact fullname="Aurelio Schellenbaum"/> for his contribution in the initial phase of this work, and Marco Tiloca for extensively reviewing the document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9192XLbWJbgO7/ihhwxlmwS1mI7bVa5umSJTivTtlRauyMr
QwGRlyTKIMACQMkqWxP9Nk/zPvM0Mz8xHzDd8yP9JXO2uwGgJGe6lhhVhVMi
gbuce+7Zl16v16mSKtV99S6ZTKsrjf+q7UU1zYvkL3GV5JlalEk2UYP5VM90
EadqNxmPE917q9N0Fmdq/1IXamf/aNAZ5cMsnsFYoyIeV71EV+NeGn/UvRjG
+0tvfbMTX1wU+vIek+2+3d/pJPOir6piUVab6+sv4fVhXPVVWY065eJilpQl
vFBdz2HCvcHxm05c6LivjvRwUSTVdecqLz5Oinwxh+m2fxyoM/gbx/4eP+t8
1NfwwAhezSpdZLrq7eKiO8N8BA/11QLW/qIzT/rqgRrGuC6t4qKIr9VqMlZx
mqprXa6pvFDTuJyqqS50R6kqH/bxC/i1zIuq0OPS/n098/+EJ0d6Xk37arPT
iQkE/U5PMfy+/7f/XcCcRzqNs5Eu8O1FwV95n+UFrHNQJMOyBMBtv4aPhvki
q4preOxKj3QGn+hZnKR9NclhwKiUl3+v5a1omM/srD/k00wdFHrxb/9DvY+r
Ch+AEZIsqZI4hZX/4C+k+eDXrOdPMFc0k3fbl/M+TpP/+79idbr49/8Ka/j3
/+LP7n9I8+59ONzb9md8AxseajfjDIYr4+hyMYT3hr9PsiKJo3HhYK7zyzjT
6o0eFXo41eXHxJ8w/Ph+U054yGjs3m3O+z4ZTmOdqkP8bzFiUNppg09p1iM8
Qbp4R/m4ugKkJ8wu/YXsxFk8ir29D4vHeBt/X5qXo2Hc6XSyvIAzSC51vwMP
H77ZebH1/Hnf/Ppy0/z68ulL+fXl+jP76fONLfPps80X+OuHvaPj3ov19d6z
59v4t1IGsxX99OS/iFSAT4NIvY6Lj4TM/MObHqRxAicRfFd79V2kdqaEUP6L
75L02v+89tJ2pA7zCfz68br24naa6qz+ZfPt0xhoTqov62/P87LK0/rXtfcP
I7UbXyZl7WU5Ye87IciHGm7DTGcjJoxjIDUHcVL0zhIgRT/q696grOILQOop
PFSpoyHS51KdEAHdTcphoSut3uWTGMjhdKZ2iut5lU+KeD69Vj06K3U010O4
2+pgAQMNeSI5vy4sAFaEn2zRsmAdsKrN9Y0XvfWnvNC4mGigyNOqmpf9J0+y
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
DtHg8EJPl27wYo/7HhR6lpRUUqdnuPlig4yIFHH8isPBsRLOxtNOT0zkDook
XJw5lc2k6xnk4rwOWaAZfUhtb4m6c3Wm6yVqmIRnG2S1JXNkaRtPScXx0gBp
d7wuKirhl5IsXCwTwV4XXKwa807GYxOdSzGaErVqeYFZJXKVgYEmgGwj8nZl
tC+cS2gHMIMNCQIvpDcxj9rZjOwzlxuOBjMX+osu8l6FAiC7UsShhmgEMuHw
I0tpIp1zgDPmEZEcwZHO4jiyBagavnYXauv7ghr1xjky2gyOq17MqRiDSY+p
pl4l6LOgjDcdUNc1fy095Oma+vrUc43LDdcEXg60LXKYxEDK3Ykr/PxcPr+x
SOAVQ3LnUgO960yPp+oOgZNcA2nA6LIXehgb/9A8TkgRWF3AG3i6UjQkcKGR
ybdGbCKJkDKXlhI5fM+DiZQKCmkFJd69DM+Q/9u8lgW1UEm8O0FckgtCOZwx
bk521wkTjTMm+gYkhvwRClpXWDvN4KK2lmP6Dg+E8mvAoirHXJB3sMlBposJ
3I3X7wZrftVz+C0pWiwerG8GAolaHZzs9Z6+WLs31ZKkki23SEFx9vAWZPUF
QC82MKizh7eS0NKbFkbb3uxtb/RevOgNBr2X3/W+e8bPbrY9u/mit/6m9916
78XT3rON3uApP7vV9uzWy97zrd7Oy97ueu/ZTu/55leQ2lnMzm5kLNMYGAtl
lfwGZwAUhX83uyqKorU2KkxEkg44uAxbPuk14ydlX61uPP1Nc7F4CkHSuTEX
HeQHftdQC3pWgJPCy4sIz/cWMmuvc3PZG0alAHS6oihz/xZjmj5SsDMSd7D0
jLEw+mfROGFzwQVdwhMR2LSQM1MgXrIrg5xxxFO/ON8rteHMCK6QnS9ErtqU
L26RK9qKKZPo0Yy1gOk1a8LZQ3il/vjT9OHWy+dbOy9315/tPN98+MefJVuV
HZlaEqxk6zSW6OXPe1QN1occzIKI43dJoR7MQN+izlbA77DV0+wi9Usjtiau
SzOLsKxivVriYqPz1EcQ53Copraea3vJQz41wShfwAxvAwbKAMVF2yAakCg2
GCNyOA5Zj16tZPmKlNFhdleyZFhoitiIs4/q8+fP20A+U6A1aN1MU51dxIvZ
zc0NEdppIiWBk4uFlVCIOyekUpNB1wbYu9iQ93ExzNVxgnklUg+QQs1JlCkA
JvrKsGlPzuz1emqcLsbjzv8DUpiYCKDdAAA=

-->

</rfc>
