<?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-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <?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-06"/>
    <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="October" day="20"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 94?>

<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 98?>

<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 and discusses the security properties of EDHOC authenticated with PSK.</t>
      <section anchor="identity-protection">
        <name>Identity Protection</name>
        <t>In EDHOC-PSK, the ID_CRED_PSK in message_3 is encrypted with a keystream derived from the ephemeral shared secret G_XY. As a result, EDHOC-PSK protects both the Initiator and the Responder identities against passive attackers. This contrasts with 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 ones.</t>
        <t>However, EDHOC-PSK does not satisfy the stronger identity protection notion defined by Cottier and Pointcheval <xref target="Cottier-Pointcheval"/>, which requires security against an active Man-in-the-Middle (MitM) attacker. Under this stronger notion, an active attacker must not only be prevented from learning the identity but also from forcing a specific identity to be used in a way that allows them to later distinguish between the legitimate owner of a secret (the PSK) and any other user.
Because message_3 is sent before the key material used for the keystream is cryptographically bound to the authenticated identities, the MitM retains full control over the communication channel and can conduct a distinguisher attack. Specifically, the attacker can intercept message_3 and perform a chosen-plaintext attack by manipulating the ciphertext. By observing the protocol's subsequent behavior, such as the Responder's failure to retrieve a valid PSK and aborting the session, the attacker can link the Initiator's identity to the specific (coerced) ID_CRED_PSK value, thereby breaking the strong guarantee of anonymity that would otherwise be expected under an active threat model.</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 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>
        <t>EDHOC-PSK does not provide Key Compromise Impersonation (KCI) protection. Compromise of the long-term PSK enables an attacker to impersonate either the Initiator or the Responder to the other party. While compromise of the ephemeral Diffie-Hellman secret only affects the specific session in which it is used, compromise of the PSK allows full active impersonation in all future sessions that rely on the compromised key.</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="cryptographic-strength">
        <name>Cryptographic strength</name>
        <t>EDHOC-PSK provides a minimum of 64-bit security against online brute force attacks and, provided the PSK has sufficient entropy, a minimum of 128-bit security against offline brute force attacks. If the PSK entropy is lower, the effective offline security is limited by the entropy of the PSK. To break 64-bit security against online brute force, an attacker would on average have to send 4.3 billion messages per second for 68 years, which is infeasible in constrained IoT radio technologies. A successful forgery of the AEAD authentication tag in EDHOC-PSK breaks the security of all future application data derived from the session, while a forgery in the subsequent application protocol (e.g., OSCORE <xref target="RFC8613"/>) typically only breaks the security of the forged packet.</t>
      </section>
      <section anchor="downgrade-protection">
        <name>Downgrade Protection</name>
        <t>Following <xref target="RFC9528"/>, EDHOC-PSK must support cryptographic agility, including modularity and negotiation of preferred cryptographic primitives. In message 1, the Initiator sends an ordered list of supported cipher suites (SUITES_I). The Responder verifies that the suite selected by the Initiator is the most preferred option in SUITES_I that is mutually supported. If this condition is not met, the Responder <bcp14>MUST</bcp14> abort the session.</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="confidentiality">
        <name>Confidentiality</name>
        <t>The primary security goal of EDHOC-PSK is to establish a shared secret known only to the authenticated Initiator and Responder. The protocol ensures key indistinguishability by relying on the security of the PSK and the ephemeral key shares, making it computationally infeasible for an adversary to distinguish the true session secret from a random value.</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. By deriving the final shared secret from a fresh, session-specific ephemeral secret (G_XY), the protocol ensures that even if the PSK is compromised, an attacker is unable to decrypt the past sessions. Similarly, if a session secret were to be compromised, future session secrets remain protected by fresh ephemeral keys.</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="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="I-D.ietf-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="15" month="October" 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-06"/>
        </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="Cottier-Pointcheval" target="https://doi.org/10.1007/978-3-031-30122-3_1">
          <front>
            <title>Security Analysis of Improved EDHOC Protocol</title>
            <author initials="B." surname="Cottier">
              <organization/>
            </author>
            <author initials="D." surname="Pointcheval">
              <organization/>
            </author>
            <date year="2022" month="December"/>
          </front>
          <seriesInfo name="FPS" value="International Symposium on Foundations and Practice of Security"/>
        </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 528?>

<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>
      <t>This work has been partially supported by the French National Research Agency under the France 2030 label (NF-HiSec ANR-22-PEFT-0009)</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Iej9omL7Ir7t3ysYAe7sd0AD7vU6/mHL77b96dSfTP3usd/t+N0+eDvFt2Be
8K0TeOv5Pb4Chryizab2N7z3SrHmldrDwrd7JZqqXv2Um7c6Ssc/9eYr0P38
1lcP//9rwQ787fjd6frttn944g8G/rDrH0/9dqvMbPH/Ob8HK7ldeq/CIKxK
y0sD3ER08NCLQSMbxiU8hasnhLWVPGKct6IFdIxnvH4zMKWOWiXvSKJu8qtA
v7CDY6LSS4M5GnaAzW4HlOMdOjR/bB62+mKOlmNJAXrUY2f46lqpqIwp4ug1
W8Fqa4BbNaBkcocCDLGx5kG1yCgBjaXc3YhC5UREKWpaf86abT9s3jYb9eqA
Yx+VwovbEEgr98ckuWMng0EwQEEijN0afGBFsdHHIsMJJmolvUT8fh1ls4iB
A8fMOejhuOxfvgw2mJoVfRbjgmMpDe3EhlvGpgsAHIuQIlQM+Qy+Nr/gZhda
PEbLDnADOVis8A+lvD/T1zYYBkxtoQJjibFRZAxF9aFta6bVX5e4fynOdNMR
++g+kYAiDWBPxl3Q7i4QLK9BVhH8WHRmJsmNmSWd8Ez0mp1mm7rET52m5BwH
OZpiXN2g2l2hSF6WGxlz5lOiOoqHIWAKZgiXYerBTcKXA1pgILNxEvsu6WSP
7wPACcCyMg/sULS9RUasS4M4o9AytQ2YfBvafJIKA5kC4hhG9xI1QTvwha/G
iLOm/yDPg+hFYQSNhNuevDXCsV3LeY4QXaklDzD0jkmgfTVyMxiBUdSIR2YB
ajWXCldrb6cSQ1OgBJlskLPUg3ab0q9CmIOayXal56hK1tssJx0YIPQhQGa0
D1OMoSIiSUcC2MnzK3tDkcAgzIo8A9wR4Fa0Oyf2o2YIGueLQEcMfhNfDxp6
azsAHaEZn4AqX8u0MzfkYeJIh81iLEnrdV5i9MYGlB1I4udcwNhXIJf7apIu
3g3O3l9P/nh90x0cFNxIzB9lMqW/KOTSo9mlr/ZJWGePOXoeKAkH1ludtvtK
63P7UL6B1NyG6QGpHQTN1lClHcAYqTsK22m23GPemOWgFs43DDOzoCng8hX5
2Dqsh1MqnZUFTeR1AqKdR7fozVYpXL1DbseFFAdhhsGevESWzv4F5uVAwmA1
DRIO0whI25WMGkdbzuXuxxT3XexNCVbNenOk+LNU2gy3zRjrQmTkJBW37FXA
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
lOpy4LYAAA==

-->

</rfc>
