<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-edhoc-psk-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <?v3xml2rfc silence="Found SVG with width or height specified"?>
  <front>
    <title abbrev="EDHOC-PSK">EDHOC Authenticated with Pre‑Shared Keys (PSK)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-psk-05"/>
    <author initials="E." surname="Lopez-Perez" fullname="Elsa Lopez-Perez">
      <organization>Inria</organization>
      <address>
        <email>elsa.lopez-perez@inria.fr</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="R." surname="Marin-Lopez" fullname="Rafael Marin-Lopez">
      <organization>University of Murcia</organization>
      <address>
        <email>rafa@um.es</email>
      </address>
    </author>
    <author initials="F." surname="Lopez-Gomez" fullname="Francisco Lopez-Gomez">
      <organization>University of Murcia</organization>
      <address>
        <email>francisco.lopezg@um.es</email>
      </address>
    </author>
    <date year="2025" month="September" day="17"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 82?>

<t>This document specifies a Pre-Shared Key (PSK) authentication method for the Ephemeral Diffie-Hellman Over COSE (EDHOC) key exchange protocol. The PSK method enhances computational efficiency while providing mutual authentication, ephemeral key exchange, identity protection, and quantum resistance. It is particularly suited for systems where nodes share a PSK provided out-of-band (external PSK) and enables efficient session resumption with less computational overhead when the PSK is provided from a previous EDHOC session (resumption PSK). This document details the PSK method flow, key derivation changes, message formatting, processing, and security considerations.</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/psk/#go.draft-ietf-lake-edhoc-psk.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lake-edhoc-psk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        LAKE 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/psk"/>.</t>
    </note>
  </front>
  <middle>
    <?line 86?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a Pre-Shared Key (PSK) authentication method for the Ephemeral Diffie-Hellman Over COSE (EDHOC) key exchange protocol <xref target="RFC9528"/>. The PSK method balances the complexity of credential distribution with computational efficiency. While symmetric key distribution is more complex than asymmetric approaches, PSK authentication offers greater computational efficiency compared to the methods outlined in <xref target="RFC9528"/>. The PSK method retains mutual authentication, asymmetric ephemeral key exchange, and identity protection established by <xref target="RFC9528"/>.</t>
      <t>EDHOC with PSK authentication benefits use cases where two nodes share a Pre-Shared Key (PSK) provided out-of-band (external PSK). Examples include the Authenticated Key Management Architecture (AKMA) in mobile systems or the Peer and Authenticator in Extensible Authentication Protocol (EAP) systems. The PSK method enables the nodes to perform ephemeral key exchange, achieving Perfect Forward Secrecy (PFS). This ensures that even if the PSK is compromised, past communications remain secure against active attackers, while future communications are protected against passive attackers. Additionally, by leveraging the PSK for both authentication and key derivation, the method provides quantum-resistant key exchange and authentication even when used with ECDHE.</t>
      <t>Another important use case of PSK authentication in the EDHOC protocol is session resumption. This allows previously connected parties to quickly reestablish secure communication using pre-shared keys from a prior session, reducing the overhead associated with key exchange and asymmetric authentication. By using PSK authentication, EDHOC allows session keys to be refreshed with significantly lower computational overhead compared to public-key authentication. In this case, the resumption PSK is provisioned after the establishment of a previous EDHOC session by using EDHOC_Exporter. Thus, the external PSK serves as a long-term credential while the resumption PSK acts as a session key.</t>
      <t>Section 3 provides an overview of the PSK method flow and credentials. Section 4 outlines the changes to key derivation compared to <xref target="RFC9528"/>. Section 5 details message formatting and processing, and Section 6 describes the usage of PSK for resumption. Section 7 defines the use of EDHOC-PSK with OSCORE. Security considerations are described in Section 8, and Section 9 outlines the IANA considerations.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts described in EDHOC <xref target="RFC9528"/>, CBOR <xref target="RFC8949"/>, CBOR Sequences <xref target="RFC8742"/>, COSE Structures and Processing <xref target="RFC9052"/>, COSE Algorithms <xref target="RFC9053"/>, CWT and CCS <xref target="RFC8392"/>, and the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>, which is used to express CBOR data structures.</t>
    </section>
    <section anchor="protocol">
      <name>Protocol</name>
      <t>This document specifies a new EDHOC authentication method (see <xref section="3.2" sectionFormat="of" target="RFC9528"/>) referred to as the Pre-Shared Key method (EDHOC-PSK). This method shares some features with, and differs in other respects from, the authentication methods previously defined in EDHOC.</t>
      <t>Authentication is based on a Pre-Shared Key (PSK) shared between the Initiator and the Responder. As in the methods defined in <xref target="RFC9528"/>, CRED_I and CRED_R are authentication credentials containing identifying information for the Initiator and Responder, respectively. However, unlike those methods, there is a single shared authentication credential identifier, ID_CRED_PSK, which the Responder uses to retrieve the PSK and the associated authentication credentials.</t>
      <section anchor="credentials">
        <name>Credentials</name>
        <t>The Initiator and Responder are assumed to share a PSK (either an external PSK or a resumption PSK) with high entropy that meets the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Only the Initiator and the Responder have access to the PSK.</t>
          </li>
          <li>
            <t>The Responder can retrieve the PSK, CRED_I, and CRED_R, using ID_CRED_PSK.</t>
          </li>
        </ul>
        <section anchor="idcredpsk">
          <name>ID_CRED_PSK</name>
          <t>ID_CRED_PSK is a COSE header map containing header parameters that can identify a pre-shared key. For example:</t>
          <artwork><![CDATA[
ID_CRED_PSK = {4 : h'0f' }; 4 = 'kid'
]]></artwork>
          <t>The purpose of ID_CRED_PSK is to facilitate retrieval of the correct PSK. While ID_CRED_PSK use encoding and representation patterns from <xref target="RFC9528"/>, it differs fundamentally in that it identifies a symmetric key rather than a public authentication key.</t>
          <t>It is <bcp14>RECOMMENDED</bcp14> that ID_CRED_PSK uniquely or stochastically identifies the corresponding PSK. Uniqueness avoids ambiguity that could require the recipient to try multiple keys, while stochasticity reduces the risk of identifier collisions and supports stateless processing. These properties align with the requirements for rKID in session resumption.</t>
        </section>
        <section anchor="credi-and-credr">
          <name>CRED_I and CRED_R</name>
          <t>CRED_I and CRED_R are authentication credentials associated with the PSK. The notation CRED_x refers to either CRED_I or CRED_R. Authentication is achieved implicitly through the successful use of the PSK to derive keying material, and to encrypt and subsequently decrypt protected messages.</t>
          <t>When using an external PSK, a common representation of CRED_I and CRED_R is a CBOR Web Token (CWT) or CWT Claims Set (CCS) <xref target="RFC8392"/>, where the 'cnf' claim includes the confirmation method COSE_Key. An example of CRED_I and CRED_R is shown below:</t>
          <artwork><![CDATA[
{                                               /CCS/
  2 : "42-50-31-FF-EF-37-32-39",                /sub/
  8 : {                                         /cnf/
    1 : {                                       /COSE_Key/
       1 : 4,                                   /kty/
       2 : h'0f',                               /kid/
    }
  }
}
]]></artwork>
          <artwork><![CDATA[
{                                               /CCS/
  2 : "23-11-58-AA-B3-7F-10",                   /sub/
  8 : {                                         /cnf/
    1 : {                                       /COSE_Key/
       1 : 4,                                   /kty/
       2 : h'0f',                               /kid/
    }
  }
}
]]></artwork>
          <t>Alternative formats for CRED_I and CRED_R <bcp14>MAY</bcp14> be used. When a resumption PSK is employed, CRED_I and CRED_R <bcp14>MUST</bcp14> be the same credentials used in the initial EDHOC exchange, for example, public-key credentials such as X.509 certificates.</t>
          <t>Implementations <bcp14>MUST</bcp14> ensure that CRED_I and CRED_R are distinct, for example by including different identities in their sub-claims (e.g., "42-50-31-FF-EF-37-32-39" and "23-11-58-AA-B3-7F-10"). Ensuring distinct credentials simplifies correct party identification and prevents reflection and misbinding attacks, as described in <xref section="D.2" sectionFormat="of" target="RFC9528"/>.</t>
        </section>
        <section anchor="encoding-and-processing-guidelines">
          <name>Encoding and processing guidelines</name>
          <t>The following guidelines apply to the encoding and handling of CRED_x and ID_CRED_PSK. Requirements on CRED_x applies both to CRED_I and to CRED_R.</t>
          <ul spacing="normal">
            <li>
              <t>If CRED_x is CBOR-encoded, it <bcp14>SHOULD</bcp14> use deterministic encoding as specified in Sections <xref target="RFC8949" section="4.2.1" sectionFormat="bare"/> and <xref target="RFC8949" section="4.2.2." sectionFormat="bare"/> of <xref target="RFC8949"/>. Deterministic encoding ensures consistent identification and avoids interoperability issues caused by non-deterministic CBOR variants.</t>
            </li>
            <li>
              <t>If CRED_x is provisioned out-of-band and transported by value, it <bcp14>SHOULD</bcp14> be used as received without re-encoding. Re-encoding can cause mismatches when comparing identifiers such as hash values or 'kid' references.</t>
            </li>
            <li>
              <t>ID_CRED_PSK <bcp14>SHOULD</bcp14> uniquely identify the corresponding PSK to avoid ambiguity. When ID_CRED_PSK contains a key identifier, care must be taken to ensure that 'kid' is unique for the PSK.</t>
            </li>
            <li>
              <t>When ID_CRED_PSK consists solely of a 'kid' parameter (i.e., { 4 : kid }), the compact encoding optimization defined in <xref section="3.5.3.2" sectionFormat="of" target="RFC9528"/> <bcp14>MUST</bcp14> be applied in plaintext fields (such as PLAINTEXT_3A). For example:  </t>
              <ul spacing="normal">
                <li>
                  <t>{ 4 : h'0f' } encoded as h'0f' (CBOR byte string)</t>
                </li>
                <li>
                  <t>{ 4 : 21 } encoded as 0x15 (CBOR integer)</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>These optimizations <bcp14>MUST NOT</bcp14> be applied in COSE header parameters or in other contexts where the full map structure is required.</t>
          <ul spacing="normal">
            <li>
              <t>To mitigate misbinding attacks, identity information such as a 'sub' (subject) claim <bcp14>MUST</bcp14> be included in both CRED_I and CRED_R.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="message-flow-of-edhoc-psk">
        <name>Message Flow of EDHOC-PSK</name>
        <t>The message flow of EDHOC-PSK follows the structure defined in <xref target="RFC9528"/>, with authentication based on symmetric keys rather than public keys. For identity protection, credential-related message fields appear first in message_3.</t>
        <t>ID_CRED_PSK is encrypted using a key derived from a shared secret obtained through the first two messages. If Diffie-Hellman key exchange is used, G_X and G_Y are the ephemeral public keys, and the shared secret G_XY is the DH shared secret, as in <xref target="RFC9528"/>. If the Diffie-Hellman procedure is replaced by a KEM, then G_X and G_Y are encapsulation key and ciphertext, respectively, and the shared secret G_XY is derived by the KEM, see <xref target="I-D.spm-lake-pqsuites"/>.</t>
        <t>The Responder authenticates the Initiator first. <xref target="fig-variant2"/> illustrates the message flow of the EDHOC-PSK authentication method.</t>
        <figure anchor="fig-variant2">
          <name>Overview of Message Flow of EDHOC-PSK.</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="560" viewBox="0 0 560 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,272" fill="none" stroke="black"/>
                <path d="M 552,48 L 552,272" fill="none" stroke="black"/>
                <path d="M 8,64 L 544,64" fill="none" stroke="black"/>
                <path d="M 16,128 L 552,128" fill="none" stroke="black"/>
                <path d="M 8,192 L 544,192" fill="none" stroke="black"/>
                <path d="M 16,256 L 552,256" 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="552,64 540,58.4 540,69.6" fill="black" transform="rotate(0,544,64)"/>
                <polygon class="arrowhead" points="24,256 12,250.4 12,261.6" fill="black" transform="rotate(180,16,256)"/>
                <polygon class="arrowhead" points="24,128 12,122.4 12,133.6" fill="black" transform="rotate(180,16,128)"/>
                <g class="text">
                  <text x="40" y="36">Initiator</text>
                  <text x="520" y="36">Responder</text>
                  <text x="184" y="52">METHOD,</text>
                  <text x="256" y="52">SUITES_I,</text>
                  <text x="316" y="52">G_X,</text>
                  <text x="356" y="52">C_I,</text>
                  <text x="400" y="52">EAD_1</text>
                  <text x="280" y="84">message_1</text>
                  <text x="204" y="116">G_Y,</text>
                  <text x="244" y="116">Enc(</text>
                  <text x="284" y="116">C_R,</text>
                  <text x="328" y="116">EAD_2</text>
                  <text x="360" y="116">)</text>
                  <text x="280" y="148">message_2</text>
                  <text x="180" y="180">Enc(</text>
                  <text x="252" y="180">ID_CRED_PSK,</text>
                  <text x="328" y="180">AEAD(</text>
                  <text x="376" y="180">EAD_3</text>
                  <text x="408" y="180">)</text>
                  <text x="424" y="180">)</text>
                  <text x="280" y="212">message_3</text>
                  <text x="248" y="244">AEAD(</text>
                  <text x="296" y="244">EAD_4</text>
                  <text x="328" y="244">)</text>
                  <text x="280" y="276">message_4</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
Initiator                                                   Responder
|                  METHOD, SUITES_I, G_X, C_I, EAD_1                |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                      G_Y, Enc( C_R, EAD_2 )                       |
|<------------------------------------------------------------------+
|                             message_2                             |
|                                                                   |
|                   Enc( ID_CRED_PSK, AEAD( EAD_3 ) )               |
+------------------------------------------------------------------>|
|                             message_3                             |
|                                                                   |
|                           AEAD( EAD_4 )                           |
|<------------------------------------------------------------------+
|                             message_4                             |
]]></artwork>
          </artset>
        </figure>
        <t>This approach provides identity protection against passive attackers for both Initiator and Responder. EDHOC message_4 remains <bcp14>OPTIONAL</bcp14>, but is needed to authenticate the Responder and achieve mutual authentication in EDHOC when external applications (e.g., OSCORE) are not relied upon. In either case, the inclusion of a fourth message provides mutual authentication and explicit key confirmation (see <xref target="message-4"/>).</t>
      </section>
    </section>
    <section anchor="key-der">
      <name>Key Derivation</name>
      <t>The pseudorandom keys (PRKs) used in the EDHOC-PSK authentication method are derived with EDHOC_Extract, as in <xref target="RFC9528"/>.</t>
      <artwork><![CDATA[
PRK  = EDHOC_Extract( salt, IKM )
]]></artwork>
      <t>where <tt>salt</tt> and input keying material (<tt>IKM</tt>) are defined for each key. The definition of EDHOC_Extract depends on the EDHOC hash algorithm selected in the cipher suite, see <xref section="4.1.1" sectionFormat="of" target="RFC9528"/>.</t>
      <t>To maintain a uniform key schedule across all EDHOC authentication methods, the same pseudorandom key notation (PRK_2e, PRK_3e2m, and PRK_4e3m) is retained. The index notation is preserved for consistency with other EDHOC authentication variants, even though it does not fully reflect the functional role of the keys in this method; for example, no MACs are used in EDHOC-PSK.</t>
      <t>PRK_2e is extracted as in <xref target="RFC9528"/> with</t>
      <ul spacing="normal">
        <li>
          <t><tt>salt</tt> = TH_2, and</t>
        </li>
        <li>
          <t><tt>IKM</tt> = G_XY,</t>
        </li>
      </ul>
      <t>where the transcript hash TH_2 = H( G_Y, H(message_1) ) is defined in <xref section="5.3.2" sectionFormat="of" target="RFC9528"/>.</t>
      <t>SALT_4e3m is derived from PRK_3e2m and TH_3, as shown in Figure 6 of <xref target="RFC9528"/>.</t>
      <t>The other PRKs and transcript hashes are modified as specified below. <xref target="fig-variant2key"/> lists the key derivations that differ from <xref section="4.1.2" sectionFormat="of" target="RFC9528"/>.</t>
      <figure anchor="fig-variant2key">
        <name>Key Derivation of EDHOC-PSK.</name>
        <artwork align="center"><![CDATA[
PRK_3e2m     = PRK_2e
KEYSTREAM_2A = EDHOC_KDF( PRK_2e,   0, TH_2,  plaintext_length_2a )
PRK_4e3m     = EDHOC_Extract( SALT_4e3m, PSK )
KEYSTREAM_3A = EDHOC_KDF( PRK_3e2m, 12, TH_3, plaintext_length_3a )
K_3          = EDHOC_KDF( PRK_4e3m, 3, TH_3, key_length )
IV_3         = EDHOC_KDF( PRK_4e3m, 4, TH_3, iv_length )
]]></artwork>
      </figure>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>KEYSTREAM_2A is used to encrypt PLAINTEXT_2A in message_2.
          </t>
          <ul spacing="normal">
            <li>
              <t>plaintext_length_2a is the length of PLAINTEXT_2A in message_2.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>KEYSTREAM_3A is used to encrypt PLAINTEXT_3A (the concatenation of ID_CRED_PSK and CIPHERTEXT_3B) in message_3.
          </t>
          <ul spacing="normal">
            <li>
              <t>plaintext_length_3a is the length of PLAINTEXT_3A in message_3.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>TH_3 = H( TH_2, PLAINTEXT_2A ).</t>
        </li>
      </ul>
      <t>The definition of the transcript hash TH_4 is modified as follows:</t>
      <ul spacing="normal">
        <li>
          <t>TH_4 = H( TH_3, ID_CRED_PSK, PLAINTEXT_3B, CRED_I, CRED_R )</t>
        </li>
      </ul>
    </section>
    <section anchor="message-formatting-and-processing">
      <name>Message Formatting and Processing</name>
      <t>This section specifies the differences in message formatting and processing compared to <xref section="5" sectionFormat="of" target="RFC9528"/>. Note that if any processing step fails, then the Responder <bcp14>MUST</bcp14> send an EDHOC error message back as defined in <xref section="6" sectionFormat="of" target="RFC9528"/>, and the EDHOC session <bcp14>MUST</bcp14> be aborted.</t>
      <section anchor="message-1">
        <name>Message 1</name>
        <t>Message 1 is formatted and processed as specified in <xref section="5.2" sectionFormat="of" target="RFC9528"/>.</t>
      </section>
      <section anchor="message-2">
        <name>Message 2</name>
        <section anchor="formatting-of-message-2">
          <name>Formatting of Message 2</name>
          <t>Message 2 is formatted as specified in <xref section="5.3.1" sectionFormat="of" target="RFC9528"/>.</t>
        </section>
        <section anchor="responder-composition-of-message-2">
          <name>Responder Composition of Message 2</name>
          <t>CIPHERTEXT_2A is calculated with a binary additive stream cipher, using a keystream generated with EDHOC_Expand, and the following plaintext:</t>
          <ul spacing="normal">
            <li>
              <t>PLAINTEXT_2A = ( C_R, ? EAD_2 )</t>
            </li>
            <li>
              <t>CIPHERTEXT_2A = PLAINTEXT_2A XOR KEYSTREAM_2A</t>
            </li>
          </ul>
          <t>C_R, EAD_2 are defined in <xref section="5.3.2" sectionFormat="of" target="RFC9528"/>. In contrast to <xref target="RFC9528"/>, ID_CRED_R, MAC_2, and Signature_or_MAC_2 are not included in message_2. This omission is the primary difference from the signature and MAC-based authentication methods defined in <xref target="RFC9528"/>, as authentication in EDHOC-PSK relies solely on the shared PSK and the successful decryption of protected messages. KEYSTREAM_2A is defined in <xref target="key-der"/>.</t>
        </section>
        <section anchor="initiator-processing-of-message-2">
          <name>Initiator Processing of Message 2</name>
          <t>Upon receiving message_2, the Initiator processes it as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Compute KEYSTREAM_2A as defined in <xref target="key-der"/>.</t>
            </li>
            <li>
              <t>Decrypt CIPHERTEXT_2A using binary XOR, i.e., PLAINTEXT_2A = CIPHERTEXT_2A XOR KEYSTREAM_2A</t>
            </li>
          </ul>
          <t>In contrast to <xref section="5.3.3" sectionFormat="of" target="RFC9528"/>, ID_CRED_R is not made available to the application in step 4, and steps 5 and 6 are skipped.</t>
        </section>
      </section>
      <section anchor="message-3">
        <name>Message 3</name>
        <section anchor="formatting-of-message-3">
          <name>Formatting of Message 3</name>
          <t>Message 3 is formatted as specified in <xref section="5.4.1" sectionFormat="of" target="RFC9528"/>.</t>
        </section>
        <section anchor="initiator-composition-of-message-3">
          <name>Initiator Composition of Message 3</name>
          <ul spacing="normal">
            <li>
              <t>CIPHERTEXT_3A is computed using a binary additive stream cipher with a keystream generated by EDHOC_Expand, applied to the following plaintext:  </t>
              <ul spacing="normal">
                <li>
                  <t>PLAINTEXT_3A = ( ID_CRED_PSK / bstr / -24..23, CIPHERTEXT_3B )      </t>
                  <ul spacing="normal">
                    <li>
                      <t>If ID_CRED_PSK contains a single 'kid' parameter, i.e., ID_CRED_PSK = { 4 : kid_PSK }, then the compact encoding is applied, see <xref section="3.5.3.2" sectionFormat="of" target="RFC9528"/>.</t>
                    </li>
                    <li>
                      <t>For the case of plaintext_length exceeding the EDHOC_KDF output size, see <xref section="G" sectionFormat="of" target="RFC9528"/>.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>Compute KEYSTREAM_3A as in <xref target="key-der"/>.</t>
                </li>
                <li>
                  <t>CIPHERTEXT_3A = PLAINTEXT_3A XOR KEYSTREAM_3A</t>
                </li>
              </ul>
            </li>
            <li>
              <t>CIPHERTEXT_3B is the 'ciphertext' of COSE_Encrypt0 object as defined in Section <xref target="RFC9528" section="5.2" sectionFormat="bare"/> and Section <xref target="RFC9528" section="5.3" sectionFormat="bare"/> of <xref target="RFC9528"/>, with the EDHOC AEAD algorithm of the selected cipher suite, using the encryption key K_3, the initialization vector IV_3 (if used by the AEAD algorithm), the parameters described in <xref section="5.2" sectionFormat="of" target="RFC9528"/>, plaintext PLAINTEXT_3B and the following parameters as input:  </t>
              <ul spacing="normal">
                <li>
                  <t>protected = h''</t>
                </li>
                <li>
                  <t>external_aad = &lt;&lt; ID_CRED_PSK, TH_3, CRED_I, CRED_R &gt;&gt;</t>
                </li>
                <li>
                  <t>K_3 and IV_3 as defined in <xref target="key-der"/></t>
                </li>
                <li>
                  <t>PLAINTEXT_3B = ( ? EAD_3 )</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>The Initiator computes TH_4 as defined in <xref target="key-der"/>.</t>
          <t>There is no need for MAC_3 or signature, since AEAD's built-in integrity and the use of PSK-based key derivation provides implicit authentication of the Initiator.</t>
        </section>
        <section anchor="responder-processing-of-message-3">
          <name>Responder Processing of Message 3</name>
          <t>Upon receiving message_3, the Responder proceeds as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Derive K_3 and IV_3 as defined in <xref target="key-der"/>.</t>
            </li>
            <li>
              <t>Parse the structure of message_3, which consists of a stream-cipher encrypted structure, CIPHERTEXT_3A = PLAINTEXT_3A XOR KEYSTREAM_3A, where PLAINTEXT_3A = ( ID_CRED_PSK, CIPHERTEXT_3B ) and CIPHERTEXT_3B is the inner AEAD-encrypted object.</t>
            </li>
            <li>
              <t>Generate KEYSTREAM_3A with the same method the Initiator used.</t>
            </li>
            <li>
              <t>Decrypt CIPHERTEXT_3A using binary XOR with KEYSTREAM_3A to recover PLAINTEXT_3A.</t>
            </li>
            <li>
              <t>Use ID_CRED_PSK to identify the authentication credentials and retrieve PSK.</t>
            </li>
            <li>
              <t>AEAD-decrypt CIPHERTEXT_3B using:  </t>
              <ul spacing="normal">
                <li>
                  <t>K_3, IV_3</t>
                </li>
                <li>
                  <t>external_aad = &lt;&lt; ID_CRED_PSK, TH_3, CRED_I, CRED_R &gt;&gt;</t>
                </li>
                <li>
                  <t>protected = h''</t>
                </li>
                <li>
                  <t>AEAD algorithm from cipher suite</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>If AEAD verification fails, this indicates a processing problem or that the message was tampered with. If it succeeds, the Responder concludes that the Initiator possesses the PSK, correctly derived TH_3, and is actively participating in the protocol.</t>
          <t>Finally, the Responder computes TH_4 as defined in <xref target="key-der"/>.</t>
          <t>No MAC_3 or signature is needed, as the AEAD tag guarantees both integrity and authenticity in this symmetric setting.</t>
        </section>
      </section>
      <section anchor="message-4">
        <name>Message 4</name>
        <t>Message 4 is formatted and processed as specified in <xref section="5.5" sectionFormat="of" target="RFC9528"/>.</t>
        <t>After successfully verifying message_4, or another fourth message from the Responder protected with an exported application key such as an OSCORE message, the Initiator is assured that the Responder has derived PRK_out (key confirmation) and that no other party can derive this key.</t>
        <t>The Initiator <bcp14>MUST NOT</bcp14> persistently store PRK_out or application keys until it has successfully verified such a fourth message and the application has authenticated the Responder.</t>
        <t>Compared to <xref target="RFC9528"/>, the fourth message not only provides key confirmation but also authenticates the Responder. For mutual authentication a fourth message is therefore mandatory.</t>
      </section>
    </section>
    <section anchor="psk-resumption">
      <name>PSK usage for Session Resumption</name>
      <t>This section specifies how EDHOC-PSK is used for session resumption in EDHOC. The EDHOC_Exporter, as defined in <xref section="4.2" sectionFormat="of" target="RFC9528"/>, is used to derive the resumption parameters rPSK and rKID:</t>
      <figure anchor="fig-resumption">
        <name>Resumption Parameters.</name>
        <artwork align="center"><![CDATA[
rPSK         = EDHOC_Exporter( TBD2, h'', resumption_psk_length )
rKID         = EDHOC_Exporter( TBD3, h'', id_cred_psk_length )
rID_CRED_PSK = { 4 : rKID }
]]></artwork>
      </figure>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>resumption_psk_length defaults to the key_length, i.e., the length of the encryption key of the EDHOC AEAD algorithm in the selected cipher suite of the session where the EDHOC_Exporter is invoked.</t>
        </li>
        <li>
          <t>id_cred_psk_length defaults to 2 bytes.</t>
        </li>
      </ul>
      <t>A peer that has successfully completed an EDHOC session, regardless of the authentication method used or whether the session was a PSK resumption, <bcp14>MUST</bcp14> generate a resumption key for the next resumption within the current "session series", provided that PSK resumption is supported.</t>
      <t>To ensure both peers share the same resumption key, when a resumption session is run using rPSK_i as the resumption key:</t>
      <ul spacing="normal">
        <li>
          <t>The Responder <bcp14>MAY</bcp14> delete the previous resumption key rPSK_(i-1), if present, after successfully verifying message_3. At that point the Responder can be certain that the Initiator has access to the current resumption key rPSK_i.</t>
        </li>
        <li>
          <t>The Initiator <bcp14>MAY</bcp14> delete rPSK_i after successfully verifying the fourth message. At that point, the Initiator can be certain that the Responder already has derived the next resumption key, rPSK_(i+1).</t>
        </li>
        <li>
          <t>The Responder <bcp14>MAY</bcp14> delete rPSK_i after successfully verifying a fifth message from the Initiator protected with an exported application key such as an OSCORE message, if present. At that point, the Initiator can be certain that the Responder already has derived the next resumption key, rPSK_(i+1).</t>
        </li>
      </ul>
      <section anchor="cipher-suite-requirements-for-resumption">
        <name>Cipher Suite Requirements for Resumption</name>
        <t>When using a resumption PSK derived from a previous EDHOC exchange:</t>
        <ol spacing="normal" type="1"><li>
            <t>The resumption PSK <bcp14>MUST</bcp14> only be used with the same cipher suite from which it was derived, or with a cipher suite that provides stronger security guarantees.</t>
          </li>
          <li>
            <t>Implementations <bcp14>MUST</bcp14> maintain a mapping between each resumption PSK and its originating cipher suite to enforce this requirement.</t>
          </li>
          <li>
            <t>If a resumption PSK is offered with a cipher suite that provides weaker security, the Responder <bcp14>MUST</bcp14> reject the ongoing EDHOC session.</t>
          </li>
        </ol>
      </section>
      <section anchor="privacy-considerations-for-resumption">
        <name>Privacy Considerations for Resumption</name>
        <t>When using resumption PSKs:</t>
        <ul spacing="normal">
          <li>
            <t>ID_CRED_PSK is not exposed to passive attackers, and under normal operation it is not reused. Reuse of the same ID_CRED_PSK can occur due to transmission errors or when a peer loses its stored resumption key. An active attacker can obtain the value of ID_CRED_PSK and force its reuse. This aligns with the security goals of EDHOC-PSK, which are to provide identity protection against passive attackers, but not against active attackers.</t>
          </li>
        </ul>
      </section>
      <section anchor="security-considerations-for-resumption">
        <name>Security Considerations for Resumption</name>
        <ul spacing="normal">
          <li>
            <t>Resumption PSKs <bcp14>MUST NOT</bcp14> be used for purposes other than EDHOC session resumption.</t>
          </li>
          <li>
            <t>Resumption PSKs <bcp14>MUST</bcp14> be securely stored with the same level of protection as the session keys.</t>
          </li>
          <li>
            <t>Parties <bcp14>SHOULD</bcp14> prevent excessive reuse of the same resumption PSK.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="edhoc-psk-and-extensible-authentication-protocol-eap">
      <name>EDHOC-PSK and Extensible Authentication Protocol (EAP)</name>
      <t>EDHOC with PSK authentication has several important use cases within the Extensible Authentication Protocol (EAP).</t>
      <t>One use case is the resumption of a session established with the EAP method EAP-EDHOC <xref target="I-D.ietf-emu-eap-edhoc"/>, regardless of the EDHOC-based authentication method originally used in that session. This is similar to the resumption mechanism in EAP-TLS 1.3 <xref target="RFC9190"/>. Resumption reduces the number of round trips and allows the EAP-EDHOC server to avoid database lookups that might be required during an initial handshake. If the server accepts resumption, the resumed session is considered authenticated and securely bound to the prior authentication or resumption.</t>
      <t>The use of resumption with EAP-EDHOC is optional for the peer, but it is <bcp14>RECOMMENDED</bcp14> whenever a valid rPSK is available. On the server side, resumption acceptance is also optional, but it is <bcp14>RECOMMENDED</bcp14> if the rPSK remains valid. The server may, however, require a new initial handshake by refusing resumption. It is further <bcp14>RECOMMENDED</bcp14> to use Network Access Identifiers (NAIs) with the same realm in the identity response during both the full handshake and resumption. For example, the NAI @realm can safely be reused since it does not expose information that links a user’s resumption attempt with the original full handshake.</t>
      <t>EAP-EDHOC-PSK also provides a significant improvement over EAP-PSK <xref target="RFC4764"/>, which lacks support for identity protection, cryptographic agility, and ephemeral key exchange, now considered essential for meeting current security requirements. Without perfect forward secrecy, compromise of the PSK enables a passive attacker to decrypt both past and future sessions. Note that PSK authentication is not allowed in EAP-TLS <xref target="RFC9190"/>.</t>
    </section>
    <section anchor="edhoc-psk-and-oscore">
      <name>EDHOC-PSK and OSCORE</name>
      <t>Before sending message_3 the Initiator can derive PRK_out and create an OSCORE-protected request. The request payload <bcp14>MAY</bcp14> convey both an EDHOC message_3 and OSCORE-protected data combined together, as described in <xref section="3" sectionFormat="of" target="RFC9668"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The EDHOC-PSK authentication method introduces deviations from the initial specification of EDHOC <xref target="RFC9528"/>. This section analyzes the security implications of these changes.</t>
      <section anchor="identity-protection">
        <name>Identity Protection</name>
        <t>In EDHOC-PSK, ID_CRED_PSK in message_3 is encrypted with a keystream derived from the ephemeral shared secret G_XY. As a result, unlike the asymmetric authentication methods in <xref section="9.1" sectionFormat="of" target="RFC9528"/>, which protect the Initiator’s identity against active attackers and the Responder’s identity against passive attackers, EDHOC-PSK protects both the Initiator and the Responder identities against passive attackers.</t>
      </section>
      <section anchor="mutual-authentication">
        <name>Mutual Authentication</name>
        <t>EDHOC-PSK provides mutual authentication and explicit key confirmation through an additional message that demonstrates possession of the PSK. This may be the optional message_4 or an application message (e.g., an OSCORE message) protected with a key derived from EDHOC.</t>
        <t>To mitigate reflection or Selfie attacks, the identities in CRED_I and CRED_R <bcp14>MUST</bcp14> be distinct.</t>
      </section>
      <section anchor="protection-of-external-authorization-data-ead">
        <name>Protection of External Authorization Data (EAD)</name>
        <t>As in <xref target="RFC9528"/>, EDHOC-PSK ensures the confidentiality and integrity of External Authorization Data (EAD). The security guarantees for EAD fields remain unchanged from the original EDHOC specification.</t>
      </section>
      <section anchor="post-quantum-considerations">
        <name>Post Quantum Considerations</name>
        <t>Advances in quantum computing suggest that a Cryptographically Relevant Quantum Computer (CRQC) may eventually be realized. Such a machine would render many asymmetric algorithms, including Elliptic Curve Diffie-Hellman (ECDH), insecure.</t>
        <t>EDHOC-PSK derives authentication and session keys primarily from a symmetric PSK, which provides quantum resistance even when combined with ECDHE. However, if a CRQC is realized, the ECDHE contribution degenerates to providing only randomness. In that case, EDHOC-PSK with ECDHE offers neither identity protection nor Perfect Forward Secrecy (PFS) against quantum adversaries. Moreover, if the PSK is compromised, a passive quantum attacker could decrypt both past and future sessions.</t>
        <t>By contrast, combining EDHOC-PSK with a quantum-resistant Key Encapsulation Mechanism (KEM), such as ML-KEM, ensures both identity protection and PFS even against quantum-capable attackers. Future EDHOC cipher suites incorporating ML-KEM are expected to be registered; see <xref target="I-D.spm-lake-pqsuites"/>.</t>
      </section>
      <section anchor="independence-of-session-keys">
        <name>Independence of Session Keys</name>
        <t>NIST requires that an ephemeral private key be used in only one key-establishment transaction (<xref target="SP-800-56A"/>, Section 5.6.3.3). This requirement preserves session key independence and forward secrecy, and EDHOC-PSK complies with it.</t>
        <t>In other protocols, reuse of ephemeral keys, especially when combined with missing public key validation, has led to severe vulnerabilities, enabling attackers to recover “ephemeral” private keys and compromise both past and future sessions between two legitimate parties. Assuming breach and minimizing the impact of compromise are fundamental principles of zero-trust security.</t>
      </section>
      <section anchor="unified-approach-and-recommendations">
        <name>Unified Approach and Recommendations</name>
        <t>For use cases where application data is transmitted, it can be sent together with message_3, maintaining efficiency. In applications such as EAP-EDHOC <xref target="I-D.ietf-emu-eap-edhoc"/>, where no application data is exchanged between Initiator and Responder, message_4 is mandatory. In such cases, EDHOC-PSK does not increase the total number of messages. Other implementations may replace message_4 with an OSCORE-protected message. In this case, the following requirement applies: The Initiator <bcp14>SHALL NOT</bcp14> persistently store PRK_out or derived application keys until successfully verifying message_4 or a message protected with an exported application key (e.g., an OSCORE message). This ensures that key material is stored only after its authenticity is confirmed, thereby strengthening privacy by preventing premature storage of potentially compromised keys. Finally, the order of authentication (i.e., whether the Initiator or the Responder authenticates first) is not relevant in EDHOC-PSK. While this ordering affects privacy properties in the asymmetric methods of <xref target="RFC9528"/>, it has no significant impact in EDHOC-PSK.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requires the following IANA actions.</t>
      <section anchor="edhoc-method-type-registry">
        <name>EDHOC Method Type Registry</name>
        <t>IANA is requested to register the following entry in the "EDHOC Method Type" registry under the group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)".</t>
        <table anchor="tab-method-psk">
          <name>Addition to the EDHOC Method Type Registry.</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Initiator Authentication Key</th>
              <th align="left">Responder Authentication Key</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD4</td>
              <td align="left">PSK</td>
              <td align="left">PSK</td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: Suggested value: TBD4 = 4.
RFC Editor: Remove this note.</t>
      </section>
      <section anchor="edhoc-exporter-label-registry">
        <name>EDHOC Exporter Label Registry</name>
        <t>IANA is requested to register the following entry in the "EDHOC Exporter Label" registry under the group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)".</t>
        <table anchor="tab-exporter-psk">
          <name>Additions to the EDHOC Exporter Label Registry.</name>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD2</td>
              <td align="left">Resumption PSK</td>
              <td align="left">IETF</td>
              <td align="left">Section 7</td>
            </tr>
            <tr>
              <td align="left">TBD3</td>
              <td align="left">Resumption kid</td>
              <td align="left">IETF</td>
              <td align="left">Section 7</td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: Suggested values: TBD2 = 2, TBD3 = 3.
RFC Editor: Remove this note.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8392">
          <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="RFC8610">
          <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="RFC8742">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8949">
          <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">
          <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="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</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 a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9528">
          <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="RFC9668">
          <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="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <author fullname="R. Höglund" initials="R." surname="Höglund"/>
            <author fullname="S. Hristozov" initials="S." surname="Hristozov"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="November" 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, including 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="RFC" value="9668"/>
          <seriesInfo name="DOI" value="10.17487/RFC9668"/>
        </reference>
        <reference anchor="I-D.ietf-emu-eap-edhoc">
          <front>
            <title>Using the Extensible Authentication Protocol (EAP) with Ephemeral Diffie-Hellman over COSE (EDHOC)</title>
            <author fullname="Dan Garcia-Carrillo" initials="D." surname="Garcia-Carrillo">
              <organization>University of Oviedo</organization>
            </author>
            <author fullname="Rafael Marin-Lopez" initials="R." surname="Marin-Lopez">
              <organization>University of Murcia</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Francisco Lopez-Gomez" initials="F." surname="Lopez-Gomez">
              <organization>University of Murcia</organization>
            </author>
            <date day="30" month="July" year="2025"/>
            <abstract>
              <t>   The Extensible Authentication Protocol (EAP), defined in RFC 3748,
   provides a standard mechanism for support of multiple authentication
   methods.  This document specifies the EAP authentication method EAP-
   EDHOC, based on Ephemeral Diffie-Hellman Over COSE (EDHOC).  EDHOC is
   a lightweight security handshake protocol, enabling authentication
   and establishment of shared secret keys suitable in constrained
   settings.  This document also provides guidance on authentication and
   authorization for EAP-EDHOC.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-emu-eap-edhoc-05"/>
        </reference>
        <reference anchor="I-D.spm-lake-pqsuites">
          <front>
            <title>Quantum-Resistant Cipher Suites for EDHOC</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <date day="6" month="July" year="2025"/>
            <abstract>
              <t>   The Lightweight Authenticated Key Exchange (LAKE) protocol, Ephemeral
   Diffie-Hellman over COSE (EDHOC), achieves post-quantum security by
   adding new cipher suites with quantum-resistant algorithms, such as
   ML-KEM for key exchange and ML-DSA for digital signatures.  This
   document specifies how EDHOC operates in a post-quantum setting using
   both signature-based and PSK-based authentication methods, and
   defines corresponding cipher suites.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-spm-lake-pqsuites-00"/>
        </reference>
        <reference anchor="SP-800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
        </reference>
        <reference anchor="RFC2119">
          <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="RFC8174">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4764">
          <front>
            <title>The EAP-PSK Protocol: A Pre-Shared Key Extensible Authentication Protocol (EAP) Method</title>
            <author fullname="F. Bersani" initials="F." surname="Bersani"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document specifies EAP-PSK, an Extensible Authentication Protocol (EAP) method for mutual authentication and session key derivation using a Pre-Shared Key (PSK). EAP-PSK provides a protected communication channel when mutual authentication is successful for both parties to communicate over. This document describes the use of this channel only for protected exchange of result indications, but future EAP-PSK extensions may use the channel for other purposes. EAP-PSK is designed for authentication over insecure networks such as IEEE 802.11. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4764"/>
          <seriesInfo name="DOI" value="10.17487/RFC4764"/>
        </reference>
        <reference anchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
      </references>
    </references>
    <?line 499?>

<section anchor="CDDL">
      <name>CDDL Definitions</name>
      <t>This section compiles the CDDL definitions for convenience, incorporating errata filed against <xref target="RFC9528"/>.</t>
      <sourcecode type="CDDL"><![CDATA[
suites = [ 2* int ] / int

ead = (
  ead_label : int,
  ? ead_value : bstr,
)

EAD_1 = (1* ead)
EAD_2 = (1* ead)
EAD_3 = (1* ead)
EAD_4 = (1* ead)

message_1 = (
  METHOD : int,
  SUITES_I : suites,
  G_X : bstr,
  C_I : bstr / -24..23,
  ? EAD_1,
)

message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
)

PLAINTEXT_2A = (
  C_R : bstr / -24..23,
  ? EAD_2,
)

message_3 = (
  CIPHERTEXT_3 : bstr,
)

PLAINTEXT_3A = (
  ID_CRED_PSK : header_map / bstr / -24..23,
  CIPHERTEXT_3B : bstr,
)

PLAINTEXT_3B = (
  ? EAD_3
)

message_4 = (
  CIPHERTEXT_4 : bstr,
)

PLAINTEXT_4 = (
  ? EAD_4,
)

error = (
  ERR_CODE : int,
  ERR_INFO : any,
)

info = (
  info_label : int,
  context : bstr,
  length : uint,
)
]]></sourcecode>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <section anchor="message1">
        <name>message_1</name>
        <t>Both endpoints are authenticated with Pre-Shared Keys (METHOD = 4)</t>
        <t>NOTE: Assuming TBD4 = 4, to be confirmed by IANA.
RFC Editor: Remove this note.</t>
        <artwork><![CDATA[
METHOD (CBOR Data Item) (1 byte)
04
]]></artwork>
        <t>The initiator selects cipher suite 02. A single cipher suite is encoded as an int:</t>
        <artwork><![CDATA[
SUITES_I (CBOR Data Item) (1 byte)
02
]]></artwork>
        <t>The Initiator creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Initiator's ephemeral private key
X (Raw Value) (32 bytes)
09 97 2D FE F1 EA AB 92 6E C9 6E 80 05 FE D2 9F
70 FF BF 4E 36 1C 3A 06 1A 7A CD B5 17 0C 10 E5
]]></artwork>
        <artwork><![CDATA[
Initiator's ephemeral public key
G_X (Raw Value) (32 bytes)
7E C6 81 02 94 06 02 AA B5 48 53 9B F4 2A 35 99
2D 95 72 49 EB 7F 18 88 40 6D 17 8A 04 C9 12 DB
]]></artwork>
        <t>The Initiator selects its connection identifier C_I to be the byte string 0xA, which is encoded as 0xA since it is represented by the 1-byte CBOR int 10:</t>
        <artwork><![CDATA[
Connection identifier chosen by the Initiator
C_I (CBOR Data Item) (1 byte)
0A
]]></artwork>
        <t>No external authorization data</t>
        <artwork><![CDATA[
EAD_1 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Initiator constructs message_1:</t>
        <artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
04 02 58 20 7E C6 81 02 94 06 02 AA B5 48 53 9B
F4 2A 35 99 2D 95 72 49 EB 7F 18 88 40 6D 17 8A
04 C9 12 DB 0A
]]></artwork>
      </section>
      <section anchor="message2">
        <name>message_2</name>
        <t>The Responder supports the most preferred and selected cipher suite 02, so SUITES_I is acceptable.</t>
        <t>The Responder creates an ephemeral key pair for use with the EDHOC key exchange algorithm:</t>
        <artwork><![CDATA[
Responder's ephemeral private key
Y (Raw Value) (32 bytes)
1E 1C 8F 2D F1 AA 71 10 B3 9F 33 BA 5E A8 DC CF
31 41 1E B3 3D 4F 9A 09 4C F6 51 92 D3 35 A7 A3
]]></artwork>
        <artwork><![CDATA[
Responder's ephemeral public key
G_Y (Raw Value) (32 bytes)
ED 15 6A 62 43 E0 AF EC 9E FB AA BC E8 42 9D 5A
D5 E4 E1 C4 32 F7 6A 6E DE 8F 79 24 7B B9 7D 83
]]></artwork>
        <t>The Responder selects its connection identifier C_R to be the byte string 0x05, which is encoded as 0x05 since it is represented by the 1-byte CBOR int 05:</t>
        <artwork><![CDATA[
Connection identifier chosen by the Responder
C_R (CBOR Data Item) (1 byte)
05
]]></artwork>
        <t>The transcript hash TH_2 is calculated using the EDHOC hash algorithm:
TH_2 = H( G_Y, H(message_1) ), where H(message_1) is:</t>
        <artwork><![CDATA[
H(message_1) (Raw Value) (32 bytes)
19 CC 2D 2A 95 7E DD 80 10 90 42 FD E6 CC 20 C2
4B 6A 34 BC 21 C6 D4 9F EA 89 5D 4C 75 92 34 0E
]]></artwork>
        <artwork><![CDATA[
H(message_1) (CBOR Data Item) (34 bytes)
58 20 19 CC 2D 2A 95 7E DD 80 10 90 42 FD E6 CC 20
C2 4B 6A 34 BC 21 C6 D4 9F EA 89 5D 4C 75 92 34 0E
]]></artwork>
        <artwork><![CDATA[
TH_2 (Raw Value) (32 bytes)
5B 48 34 AE 63 0A 8A 0E D0 B0 C6 F3 66 42 60 4D
01 64 78 C4 BC 81 87 BB 76 4D D4 0F 2B EE 3D DE
]]></artwork>
        <artwork><![CDATA[
TH_2 (CBOR Data Item) (34 bytes)
58 20 5B 48 34 AE 63 0A 8A 0E D0 B0 C6 F3 66 42 60
4D 01 64 78 C4 BC 81 87 BB 76 4D D4 0F 2B EE 3D DE
]]></artwork>
        <t>PRK_2e is specified in <xref section="4.1.2" sectionFormat="of" target="RFC9528"/>.
To compute it, the Elliptic Curve Diffie-Hellman (ECDH) shared secret G_XY is needed.
It is computed from G_X and Y or G_Y and X:</t>
        <artwork><![CDATA[
G_XY (Raw Value) (ECDH shared secret) (32 bytes)
2F 4A 79 9A 5A B0 C5 67 22 0C B6 72 08 E6 CF 8F
4C A5 FE 38 5D 1B 11 FD 9A 57 3D 41 60 F3 B0 B2
]]></artwork>
        <t>Then, PRK_2e is calculated as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9528"/></t>
        <artwork><![CDATA[
PRK_2e (Raw Value) (32 bytes)
D0 39 D6 C3 CF 35 EC A0 CD F8 19 E3 25 79 C7 7E
1F 30 3E FC C4 36 20 50 99 48 A9 FD 47 FB D9 29
]]></artwork>
        <t>Since the Responder authenticates using PSK, PRK_3e2m = PRK_2e.</t>
        <artwork><![CDATA[
PRK_3e2m (Raw Value) (32 bytes)
D0 39 D6 C3 CF 35 EC A0 CD F8 19 E3 25 79 C7 7E
1F 30 3E FC C4 36 20 50 99 48 A9 FD 47 FB D9 29
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_2 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Responder constructs PLAINTEXT_2A:</t>
        <artwork><![CDATA[
PLAINTEXT_2A (CBOR Sequence) (1 byte)
05
]]></artwork>
        <t>The Responder computes KEYSTREAM_2 as defined in <xref section="4.1.2" sectionFormat="of" target="RFC9528"/></t>
        <artwork><![CDATA[
KEYSTREAM_2A (Raw Value) (1 byte)
EC
]]></artwork>
        <t>The Responder calculates CIPHERTEXT_2B as XOR between PLAINTEXT_2A and KEYSTREAM_2:</t>
        <artwork><![CDATA[
CIPHERTEXT_2B (CBOR Sequence) (1 byte)
E9
]]></artwork>
        <t>The Responder constructs message_2 as defined in <xref section="5.3.1" sectionFormat="of" target="RFC9528"/>:</t>
        <artwork><![CDATA[
message_2 (CBOR Sequence) (35 bytes)
58 21 ED 15 6A 62 43 E0 AF EC 9E FB AA BC E8 42
9D 5A D5 E4 E1 C4 32 F7 6A 6E DE 8F 79 24 7B B9
7D 83 E9
]]></artwork>
      </section>
      <section anchor="message3">
        <name>message_3</name>
        <t>The Initiator computes PRK_4e3m, as described in Section 4, using SALT_4e3m and PSK:</t>
        <artwork><![CDATA[
SALT_4e3m (Raw Value) (32 bytes)
ED E0 76 12 14 83 19 EB 72 59 52 71 2A 54 2C 20
97 61 0A 13 9C 4A 14 1C 8E C5 7A 5F 62 E5 E9 DD
]]></artwork>
        <artwork><![CDATA[
PSK (Raw Value) (16 bytes)
50 93 0F F4 62 A7 7A 35 40 CF 54 63 25 DE A2 14
]]></artwork>
        <artwork><![CDATA[
PRK_4e3m (Raw Value) (32 bytes)
C6 2C C0 4F 55 D0 08 CF EB 8A 68 1E 84 63 FD DD
A2 FF 6C A8 4B 9E D6 11 6C 86 5C D8 1E 06 24 60
]]></artwork>
        <t>The transcript hash TH_3 is calculated using the EDHOC hash algorithm:</t>
        <t>TH_3 = H( TH_2, PLAINTEXT_2A )</t>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
38 6A 9D 05 2B 25 59 92 EE E5 FF B5 94 34 7D 32
74 18 A2 EA 51 83 48 6C 0C 9E 20 42 6E 0B CA 2F
]]></artwork>
        <artwork><![CDATA[
TH_3 (CBOR Data Item) (34 bytes)
58 20 38 6A 9D 05 2B 25 59 92 EE E5 FF B5 94 34 7D
32 74 18 A2 EA 51 83 48 6C 0C 9E 20 42 6E 0B CA 2F
]]></artwork>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_3 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Initiator constructs firstly PLAINTEXT_3B as defined in Section 5.3.1.:</t>
        <artwork><![CDATA[
PLAINTEXT_3B (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>It then computes CIPHERTEXT_3B as defined in Section 5.3.2. It uses ID_CRED_PSK, CRED_I, CRED_R and TH_3 as external_aad:</t>
        <artwork><![CDATA[
ID_CRED_PSK (CBOR Data Item) (1 byte)
10
]]></artwork>
        <artwork><![CDATA[
CRED_I (Raw Value) (38 bytes)
A2 02 69 69 6E 69 74 69 61 74 6F 72 08 A1 01 A3
01 04 02 41 10 20 50 50 93 0F F4 62 A7 7A 35 40
CF 54 63 25 DE A2 14
]]></artwork>
        <artwork><![CDATA[
CRED_R (Raw Value) (38 bytes)
A2 02 69 72 65 73 70 6F 6E 64 65 72 08 A1 01 A3
01 04 02 41 10 20 50 50 93 0F F4 62 A7 7A 35 40
CF 54 63 25 DE A2 14
]]></artwork>
        <artwork><![CDATA[
TH_3 (Raw Value) (32 bytes)
38 6A 9D 05 2B 25 59 92 EE E5 FF B5 94 34 7D 32
74 18 A2 EA 51 83 48 6C 0C 9E 20 42 6E 0B CA 2F
]]></artwork>
        <t>The Initiator computes K_3 and IV_3</t>
        <artwork><![CDATA[
K_3 (Raw Value) (16 bytes)
96 6A 57 9C EA 26 CA 3C EB 44 2A C7 27 EA B2 32
]]></artwork>
        <artwork><![CDATA[
IV_3 (Raw Value) (13 bytes)
5B F1 AD 0E 4F FB 96 76 D7 8D F2 3F 6E
]]></artwork>
        <t>It then computes CIPHERTEXT_3B:</t>
        <artwork><![CDATA[
CIPHERTEXT_3B (CBOR Sequence) (9 bytes)
48 04 88 B7 F2 A6 66 B6 29
]]></artwork>
        <t>The Initiator computes KEYSTREAM_3A as defined in Section 4:</t>
        <artwork><![CDATA[
KEYSTREAM_3A (Raw Value) (10 bytes)
03 E5 D1 57 1B BC 93 32 47 1B
]]></artwork>
        <t>It then calculates PLAINTEXT_3A as stated in Section 5.3.2.:</t>
        <artwork><![CDATA[
PLAINTEXT_3A (CBOR Sequence) (10 bytes)
10 48 04 88 B7 F2 A6 66 B6 29
]]></artwork>
        <t>It then uses KEYSTREAM_3A to derive CIPHERTEXT_3A:</t>
        <artwork><![CDATA[
CIPHERTEXT_3A (CBOR Sequence) (10 bytes)
13 AD D5 DF AC 4E 35 54 F1 32
]]></artwork>
        <t>The Initiator computes message_3 as defined in Section 5.3.2.:</t>
        <artwork><![CDATA[
message_3 (CBOR Sequence) (11 bytes)
4A 13 AD D5 DF AC 4E 35 54 F1 32
]]></artwork>
        <t>The transcript hash TH_4 is calculated using the EDHOC hash algorithm:
TH_4 = H( TH_3, ID_CRED_PSK, ? EAD_3, CRED_I, CRED_R )</t>
        <artwork><![CDATA[
TH_4 (Raw Value) (32 bytes)
11 48 1B 9A FE F9 5C 67 9A 52 03 82 17 EE DD 0E
0C E0 8F AA 86 5B DC 82 55 11 CA 6D C3 91 94 13
]]></artwork>
        <artwork><![CDATA[
TH_4 (CBOR Data Item) (34 bytes)
58 20 11 48 1B 9A FE F9 5C 67 9A 52 03 82 17 EE DD
0E 0C E0 8F AA 86 5B DC 82 55 11 CA 6D C3 91 94 13
]]></artwork>
      </section>
      <section anchor="message4">
        <name>message_4</name>
        <t>No external authorization data:</t>
        <artwork><![CDATA[
EAD_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Responder constructs PLAINTEXT_4:</t>
        <artwork><![CDATA[
PLAINTEXT_4 (CBOR Sequence) (0 bytes)
]]></artwork>
        <t>The Responder computes K_4 and IV_4:</t>
        <artwork><![CDATA[
K_4 (Raw Value) (16 bytes)
BC AB 1D F0 13 8D C0 5C 88 5F D3 71 E9 50 C6 7F
]]></artwork>
        <artwork><![CDATA[
IV_4 (Raw Value) (13 bytes)
41 11 34 D0 E0 C5 08 D9 5D A7 C3 AC DC
]]></artwork>
        <t>The Responder computes message_4:</t>
        <artwork><![CDATA[
message_4 (CBOR Sequence) (9 bytes)
48 8A DD 93 DB 40 48 59 F9
]]></artwork>
      </section>
      <section anchor="prkout-and-prkexporter">
        <name>PRK_out and PRK_exporter</name>
        <t>After the exchange, the following PRK_out and PRK_exporter are derived by both entities:</t>
        <artwork><![CDATA[
PRK_out (Raw Value) (32 bytes)
BB A6 DE D3 B0 38 D2 32 37 74 D8 92 14 A5 13 A2
49 16 F0 42 29 6C 7C 72 9C D1 A6 7B 43 6F B4 14
]]></artwork>
        <artwork><![CDATA[
PRK_exporter (Raw Value) (32 bytes)
2F CD 08 C0 C0 10 77 C6 D6 48 6B 9F 9B 67 70 20
E8 D6 8F 04 BC DC CE 71 5D D2 77 ED 25 93 1B EF
]]></artwork>
      </section>
      <section anchor="rpsk-and-rkid">
        <name>rPSK and rKID</name>
        <t>Both peers generate a resumption key for use in the next resumption attempt, as explained in <xref target="psk-resumption"/>:</t>
        <artwork><![CDATA[
rPSK (Raw Value) (16 bytes)
5B 0B C7 63 F6 EA D1 7E 0E EA ED FD D3 36 A5 EE
]]></artwork>
        <artwork><![CDATA[
rKID (Raw Value) (1 byte)
55
]]></artwork>
      </section>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor: Please remove this appendix.</t>
      <ul spacing="normal">
        <li>
          <t>From -04 to -05  </t>
          <ul spacing="normal">
            <li>
              <t>Fixed misbinding attacks and resumption</t>
            </li>
            <li>
              <t>Updated privacy considerations</t>
            </li>
            <li>
              <t>Added EDHOC-PSK and EAP section</t>
            </li>
            <li>
              <t>Editorial changes</t>
            </li>
            <li>
              <t>Fixed test vectors</t>
            </li>
          </ul>
        </li>
        <li>
          <t>From -03 to -04  </t>
          <ul spacing="normal">
            <li>
              <t>Test Vectors</t>
            </li>
            <li>
              <t>Editorial changes</t>
            </li>
          </ul>
        </li>
        <li>
          <t>From -02 to -03  </t>
          <ul spacing="normal">
            <li>
              <t>Updated abstract and Introduction</t>
            </li>
            <li>
              <t>Changed message_3 to hide the identity length from passive attackers</t>
            </li>
            <li>
              <t>CDDL Definitions</t>
            </li>
            <li>
              <t>Security considerations of independence of Session Keys</t>
            </li>
            <li>
              <t>Editorial changes</t>
            </li>
          </ul>
        </li>
        <li>
          <t>From -01 to -02  </t>
          <ul spacing="normal">
            <li>
              <t>Changes to message_3 formatting and processing</t>
            </li>
          </ul>
        </li>
        <li>
          <t>From -00 to -01  </t>
          <ul spacing="normal">
            <li>
              <t>Editorial changes and corrections</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors want to thank
<contact fullname="Christian Amsüss"/>,
<contact fullname="Scott Fluhrer"/>,
<contact fullname="Charlie Jacomme"/>,
and
<contact fullname="Marco Tiloca"/>
for reviewing and commenting on intermediate versions of the draft.</t>
      <t>This work has been partly funded by PID2023-148104OB-C43 funded by MICIU/AEI/10.13039/501100011033 (ONOFRE4), FEDER/UE EU HE CASTOR under Grant Agreement No 101167904 and EU CERTIFY under Grant Agreement No 101069471.</t>
      <t>This work was supported partially by Vinnova - the Swedish Agency for Innovation Systems - through the EUREKA CELTIC-NEXT project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
guh6ffO+7UPjmPWgWy7opoz3koV/YHXZKelSllmrXdOzsdVlh7p8YSOerTak
t45pAmzUL+PN82+tVyve7Jo3w9v8xZ1QgWZKo4WCGXksRuB1QIeXlDMldg6U
3obMo0F0P3fO2w3es6iXzpJ2bvVoKP+yuhWbhM4DJOD+vt5CJAwRZYO2wwQc
RTl/+3x0Ie/0DwpBhQq6Ozvp7vQKrdR51kRliMA6gzzQq9a1YhWapyvHS/Kl
qwM4PEN833TTKST8WAT282wUvTNyQEAjw5BuCm2ef6cRY6rXdp7DRsSaXZOp
bJY8mI9bSO7NM3odZaFex2sdUQ0BuKJ7uwUYrJWaU/qvjmG4SJGDaGnA4W2z
/5QksC6GtgkgrGyIlCjsI4eQPL7h5mZn8dIJB87daFzL87KfNG+aF8HMZkVR
AxesRsmWTNZ+WzZorPmyPIF23nm70PmO7jrb4Ia6yJk6wKzFaSamVm/WShIF
MfUXdFovy67w1SSM/ORe+Xxq45YjjoG/1HirZkfq9J3rIKJ05yIqXYF/+Yzk
G0/ZSsVy+NpdZc+UDhv8wQQO8IRL8jP3je/fXDg6DyPMww5+MUq6w86TI0Gx
5YROy7iZ7PkaRcsAOhqRqEtoYc7CfB8n7/l65qLYIeFcOUo2Z6yrBRj1tErC
JTE8X5tinxljmi64Q/RRl0huRR5nVUiYgtjl7he7G+xQ5XsakR0itDMLrTwY
nb2iBawkh2XLEjm0Ge/IiG7ullqJxK7kvltxygvtabH3YbhaK4QZzYpNCe06
uvdrXhebdeDSVtQtFm1fwxiL0XKFUNaAXigQQRh73vIpCLP70raobomcLZ+d
gmrLZJCdcMjY0p9BLG6pLAMdVtPbt5YDzZlZpH27+hApfqfQ3fT7iEU1/RCu
VkWF2NmlsDq5wuo8XmF1yxVWPmkVCqvjuetfAIUcBrI2DXZqLKPWyvTV5L6o
rfRelGZmudIC3vjahRKkt2zM8lTRCXL8p97uNhptWHkHwZAlFwz5NW0GVGxn
6uzhwu6iEbVCzqfZa+S/P1uWdmvPUaJJNMqi11y219jIKR3rzVFzDK6IuGhv
JQhm5lxZBo5pD5vCBmn4Y+aoZ+kM35T0VrZOO73MYbR1hzztCMgzd2rcVdfp
FSWqb9TwV/muyVec7kCJQyPBrE0V885fJQ4hCGAfDDrcWr5Z6qKudQMLZQU3
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

-->

</rfc>
