<?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.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-edhoc-psk-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <?v3xml2rfc silence="Found SVG with width or height specified"?>
  <front>
    <title>EDHOC Authenticated with Pre-Shred Keys (PSK)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-psk-03"/>
    <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>
    <date year="2025" month="March" day="01"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 71?>

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

<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 symmetrical key distribution is more complex than asymmetrical 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 systems where two nodes nodes share a Pre-Shared Key (PSK) provided out-of-band (external PSK). This applies to scenarios like 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 from passive attackers. Additionally, by leveraging the PSK for both authentication and key derivation, the method offers quantum resistance key exchange and authentication.</t>
      <t>Another key use case of PSK authentication in the EDHOC protocol is session resumption. This enables 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 PSK is provisioned after the establishment of a previous EDHOC session by using EDHOC_Exporter (resumption PSK).</t>
      <t>Therefore, the external PSK is supposed to be a long-term credential while the resumption PSK is 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 discusses security considerations. How to derive keys for resumption is described in Section 7.</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>In this method, the Pre-Shared Key identifier (ID_CRED_PSK) is sent in message_3. The ID_CRED_PSK allows retrieval of CRED_PSK, a COSE_Key compatible authentication credential that contains the PSK. Through this document we will refer to the Pre-Shared Key authentication method as EDHOC-PSK.</t>
      <section anchor="credentials">
        <name>Credentials</name>
        <t>Initiator and Responder are assumed to have a PSK (external PSK or resumption PSK) with good amount of randomness and the requirements that:</t>
        <ul spacing="normal">
          <li>
            <t>Only the Initiator and the Responder have access to the PSK.</t>
          </li>
          <li>
            <t>The Responder is able to retrieve the PSK using ID_CRED_PSK.</t>
          </li>
        </ul>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>ID_CRED_PSK is a COSE header map containing header parameters that can identify a pre-shared key. For example:</t>
          </li>
        </ul>
        <artwork><![CDATA[
ID_CRED_PSK = {4 : h'0f' }
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>CRED_PSK is a COSE_Key compatible authentication credential, i.e., a CBOR Web Token (CWT) or CWT Claims Set (CCS) <xref target="RFC8392"/> whose 'cnf' claim uses the confirmation method 'COSE_Key' encoding the PSK. For example:</t>
          </li>
        </ul>
        <artwork><![CDATA[
{                                               /CCS/
  2 : "mydotbot",                               /sub/
  8 : {                                         /cnf/
    1 : {                                       /COSE_Key/
       1 : 4,                                   /kty/
       2 : h'0f',                               /kid/
      -1 : h'50930FF462A77A3540CF546325DEA214'  /k/
    }
  }
}
]]></artwork>
        <t>The purpose of ID_CRED_PSK is to facilitate the retrieval of the PSK.
It is <bcp14>RECOMMENDED</bcp14> that it uniquely identifies the CRED_PSK as the recipient might otherwise have to try several keys.
If ID_CRED_PSK contains a single 'kid' parameter, then the compact encoding is applied; see <xref section="3.5.3.2" sectionFormat="of" target="RFC9528"/>.
The authentication credential CRED_PSK substitutes CRED_I and CRED_R specified in <xref target="RFC9528"/>, and, when applicable, <bcp14>MUST</bcp14> follow the same guidelines described in Section <xref target="RFC9528" section="3.5.2" sectionFormat="bare"/> and Section <xref target="RFC9528" section="3.5.3" sectionFormat="bare"/> of <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="message-flow-of-psk">
        <name>Message Flow of PSK</name>
        <t>The ID_CRED_PSK is sent in message_3, encrypted using a key derived from the ephemeral shared secret, G_XY. The Responder authenticates the Initiator first.
<xref target="fig-variant2"/> shows the message flow of PSK authentication method.</t>
        <figure anchor="fig-variant2">
          <name>Overview of Message Flow of 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 protection against passive attackers for both Initiator and Responder.
message_4 remains optional, but is needed to authenticate the Responder and achieve mutual authentication in EDHOC if not relaying on external applications, such as OSCORE. With this fourth message, the protocol achieves both explicit key confirmation and mutual authentication.</t>
      </section>
    </section>
    <section anchor="key-der">
      <name>Key Derivation</name>
      <t>The pseudorandom keys (PRKs) used for PSK authentication method in EDHOC are derived using EDHOC_Extract, as done in <xref target="RFC9528"/>.</t>
      <artwork><![CDATA[
PRK  = EDHOC_Extract( salt, IKM )
]]></artwork>
      <t>where the salt and input keying material (IKM) are defined for each key.
The definition of EDHOC_Extract depends on the EDHOC hash algorithm selected in the cipher suite.</t>
      <t><xref target="fig-variant2key"/> lists the key derivations that differ from those specified in <xref section="4.1.2" sectionFormat="of" target="RFC9528"/>.</t>
      <figure anchor="fig-variant2key">
        <name>Key Derivation of EDHOC PSK Authentication Method.</name>
        <artwork align="center"><![CDATA[
PRK_3e2m    = PRK_2e
PRK_4e3m    = EDHOC_Extract( SALT_4e3m, CRED_PSK )
KEYSTREAM_3 = EDHOC_KDF( PRK_3e2m, 11, TH_3, plaintext_length_3 )
K_3         = EDHOC_KDF( PRK_4e3m, 12, TH_3, key_length )
IV_3        = EDHOC_KDF( PRK_4e3m, 13, TH_3, iv_length )
]]></artwork>
      </figure>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>KEYSTREAM_3 is used to encrypt the ID_CRED_PSK in message_3.</t>
        </li>
        <li>
          <t>TH_3 = H( TH_2, PLAINTEXT_2 )</t>
        </li>
      </ul>
      <t>Additionally, the definition of the transcript hash TH_4 is modified as:</t>
      <ul spacing="normal">
        <li>
          <t>TH_4 = H( TH_3, ID_CRED_PSK, ? EAD_3, CRED_PSK )</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"/>.</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_2 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_2B = ( C_R, ? EAD_2 )</t>
            </li>
            <li>
              <t>CIPHERTEXT_2 = PLAINTEXT_2B XOR KEYSTREAM_2</t>
            </li>
          </ul>
          <t>Contrary to <xref target="RFC9528"/>, ID_CRED_R, MAC_2, and Signature_or_MAC_2 are not used. C_R, EAD_2, and KEYSTREAM_2 are defined in <xref section="5.3.2" sectionFormat="of" target="RFC9528"/>.</t>
        </section>
        <section anchor="initiator-processing-of-message-2">
          <name>Initiator Processing of Message 2</name>
          <t>Compared 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_3 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_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>If the length of PLAINTEXT_3A exceeds the output of EDHOC_KDF, then <xref section="G" sectionFormat="of" target="RFC9528"/> applies.</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>Compute KEYSTREAM_3 as in <xref target="key-der"/>, where plaintext_length is the length of PLAINTEXT_3A. For the case of plaintext_length exceeding the EDHOC_KDF output size, see <xref section="G" sectionFormat="of" target="RFC9528"/>.</t>
                </li>
                <li>
                  <t>CIPHERTEXT_3 = PLAINTEXT_3A XOR KEYSTREAM_3</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_PSK &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 = H( TH_3, ID_CRED_PSK, PLAINTEXT_3B, CRED_PSK ), defined in <xref target="key-der"/>.</t>
        </section>
        <section anchor="responder-processing-of-message-3">
          <name>Responder Processing of Message 3</name>
        </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>Compared to <xref target="RFC9528"/>, a fourth message does not only provide key confirmation but also Responder authentication. To authenticate the Responder and achieve mutual authentication, a fourth message is mandatory.</t>
        <t>After verifying message_4, the Initiator is assured that the Responder has calculated the key PRK_out (key confirmation) and that no other party can derive the key. The Initiator <bcp14>MUST NOT</bcp14> persistently store PRK_out or application keys until the Initiator has verified message_4 or a message protected with a derived application key, such as an OSCORE message, from the Responder and the application has authenticated the Responder.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>PSK authentication method introduces changes with respect to the current 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>EDHOC-PSK encrypts ID_CRED_PSK in message 3, XOR encrypted with a keystream derived from the ephemeral shared secret G_XY. As a consequence, contrary to the current EDHOC methods that protect the Initiator’s identity against active attackers and the Responder’s identity against passive attackers (See <xref section="9.1" sectionFormat="of" target="RFC9528"/>), EDHOC-PSK provides identity protection for both the Initator and the Responder against passive attackers.</t>
      </section>
      <section anchor="mutual-authentication">
        <name>Mutual Authentication</name>
        <t>Authentication in EDHOC-PSK depends on the security of the session key and the protocol's confidentiality. Both security properties hold as long as the PSK remains secret. Even though the foruth message (message_4) remains optional, mutual authentication is not guaranteed without it, or without an OSCORE message or any application data that confirms that the Responder owns the PSK. When message_4 is included, the protocol achieves explicit key confirmation in addition to mutual authentication.</t>
      </section>
      <section anchor="external-authorization-data-protection">
        <name>External Authorization Data Protection</name>
        <t>Similarly to <xref target="RFC9528"/>, EDHOC-PSK provides external authorization data protection. The integrity and confidentiality of EAD fields follow the same security guarantees as in the original EDHOC specification.</t>
      </section>
      <section anchor="post-quantum-considerations">
        <name>Post Quantum Considerations</name>
        <t>Recent achievements in developing quantum computers demonstrate that it is probably feasible to build one that is cryptographically significant. If such a computer is implemented, many of the cryptographic algorithms and protocols currently in use would be insecure. A quantum computer would be able to solve Diffie-Hellman (DH) and Elliptic Curve Diffie-Hellman (ECDH) problems in polynomial time.</t>
        <t>EDCHOC with pre-shared keys would not be vulnerable to quantum attacks because those keys are used as inputs to the key derivation function. The use of intermediate keys derived through key derivation functions ensure that the message is not immediately compromised if the symmetrically distributed key (PSK) is compromised, or if the algorithm used to distribute keys asymmetrically (DH) is broken. If the pre-shared key has sufficient entropy and the Key Derivation Function (KDF), encryption, and authentication transforms are quantum secure, then the resulting system is believed to be quantum secure.
Therefore, provided that the PSK remains secret, EDHOC-PSK provides confidentiality, mutual authentication and Perfect Forward Secrecy (PFS) even in the presence of quantum attacks. What is more, the key exchange is still a key agreement where both parties contribute with randomness.</t>
      </section>
      <section anchor="independence-of-session-keys">
        <name>Independence of Session Keys</name>
        <t>NIST mandates that that an ephemeral private key shall be used in exactly one key-establishment transaction (see Section 5.6.3.3 of <xref target="SP-800-56A"/>). This requirement is essential for preserving session key independence and ensuring forward secrecy. The EDHOC protocol complies with this NIST requirement.</t>
        <t>In other protocols, the reuse of ephemeral keys, particularly when combined with implementation flaws such as the absence of public key validation, has resulted in critical security vulnerabilities. Such weaknesses have allowed attackers to recover the so called “ephemeral” private key from a compromised session, thereby enabling them to compromise the security of both past and future sessions between legitimate parties. Assuming breach and minimizing the impact of compromise are fundamental zero-trust principles.</t>
      </section>
      <section anchor="unified-approach-and-recommendations">
        <name>Unified Approach and Recommendations</name>
        <t>For use cases involving the transmission of application data, application data can be sent concurrently with message_3, maintaining the protocol's efficiency.
In applications such as EAP-EDHOC, where application data is not sent, message_4 is mandatory. Thus, EDHOC-PSK authentication method does not include any extra messages.
Other implementations may continue using OSCORE in place of EDHOC message_4, with a required change in the protocol's language to:
      The Initiator <bcp14>SHALL NOT</bcp14> persistently store PRK_out or application keys until the Initiator has verified message_4 or a message protected with a derived application key, such as an OSCORE message.</t>
        <t>This change ensures that key materials are only stored once their integrity and authenticity are confirmed, thereby enhancing privacy by preventing early storage of potentially compromised keys.</t>
        <t>Lastly, whether the Initiator or Responder authenticates first is not relevant when using symmetric keys.
This consideration was important for the privacy properties when using asymmetric authentication but is not significant in the context of symmetric key usage.</t>
      </section>
    </section>
    <section anchor="psk-resumption">
      <name>PSK usage for Session Resumtpion</name>
      <t>This section defines how PSKs are used for session resumption in EDHOC.
Each time EDHOC-PSK is run a new PRK_out and PRK_exporter will be generated.
Following <xref section="4.2" sectionFormat="of" target="RFC9528"/>, EDHOC_Exporter can be used to derive both CRED_PSK and ID_CRED_PSK:</t>
      <artwork><![CDATA[
CRED_PSK = EDHOC_Exporter( 2, h'', resumption_psk_length )
ID_CRED_PSK = EDHOC_Exporter( 3, h'', id_cred_psk_length )
]]></artwork>
      <section anchor="ciphersuite-requirements-for-resumption">
        <name>Ciphersuite 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 ciphersuite that was used in the original EDHOC exchange, or with a ciphersuite that provides equal or higher security guarantees.</t>
          </li>
          <li>
            <t>Implmentations <bcp14>SHOULD</bcp14> manitain a mapping between the resumption PSK and its originating ciphersuite to enforce this requirement.</t>
          </li>
          <li>
            <t>If a resumption PSK is offered with a weaker ciphersuite than its original exchange, the recipient <bcp14>MUST</bcp14> reject the connection attempt.</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>The same ID_CRED_PSK is reused each time EDHOC is executed with a specific resumption PSK.</t>
          </li>
          <li>
            <t>To prevent long-term tracking, implementations <bcp14>SHOULD</bcp14> periodically initiate a full EDHOC exchange to generate a new resumption PSK and corresponding ID_CRED_PSK. Alternatively, as stated in <xref section="H" sectionFormat="of" target="RFC9528"/>, EDHOC_KeyUpdate can be used to derive a new PRK_out, and consequently a new CRED_PSK and ID_CRED_PSK for session resumption.</t>
          </li>
        </ul>
        <t>While PSK reuse enhances efficiency by reducing the overhead of key exchanges, it presents privacy risks if not managed properly through periodic renewal.</t>
      </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 original session keys.</t>
          </li>
          <li>
            <t>Parties <bcp14>SHOULD</bcp14> implement mechanisms to detect and prevent excessive reuse of the same resumption PSK.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has 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 OCSE (EDHOC)".</t>
        <figure anchor="fig-method-psk">
          <name>Addition to the EDHOC Method Type Registry.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="800" viewBox="0 0 800 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,96" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,96" fill="none" stroke="black"/>
                <path d="M 632,32 L 632,96" fill="none" stroke="black"/>
                <path d="M 792,32 L 792,96" fill="none" stroke="black"/>
                <path d="M 8,32 L 792,32" fill="none" stroke="black"/>
                <path d="M 8,62 L 792,62" fill="none" stroke="black"/>
                <path d="M 8,66 L 792,66" fill="none" stroke="black"/>
                <path d="M 8,96 L 792,96" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Value</text>
                  <text x="160" y="52">Initiator</text>
                  <text x="260" y="52">Authentication</text>
                  <text x="336" y="52">Key</text>
                  <text x="408" y="52">Responder</text>
                  <text x="508" y="52">Authentication</text>
                  <text x="584" y="52">Key</text>
                  <text x="680" y="52">Reference</text>
                  <text x="32" y="84">4</text>
                  <text x="264" y="84">PSK</text>
                  <text x="512" y="84">PSK</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+------------------------------+---------------------------------+-------------------+
| Value      | Initiator Authentication Key | Responder Authentication Key    | Reference         |
+============+==============================+=================================+===================+
|  4         |                 PSK          |                 PSK             |                   |
+------------+------------------------------+---------------------------------+-------------------+

]]></artwork>
          </artset>
        </figure>
      </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 OCSE (EDHOC)".</t>
        <figure anchor="fig-exporter-psk">
          <name>Addition to the EDHOC Exporter Label Registry.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="688" viewBox="0 0 688 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,128" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,128" fill="none" stroke="black"/>
                <path d="M 520,32 L 520,128" fill="none" stroke="black"/>
                <path d="M 680,32 L 680,128" fill="none" stroke="black"/>
                <path d="M 8,32 L 680,32" fill="none" stroke="black"/>
                <path d="M 8,62 L 680,62" fill="none" stroke="black"/>
                <path d="M 8,66 L 680,66" fill="none" stroke="black"/>
                <path d="M 8,96 L 680,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 680,128" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Label</text>
                  <text x="168" y="52">Descritpion</text>
                  <text x="396" y="52">Change</text>
                  <text x="468" y="52">Controller</text>
                  <text x="568" y="52">Reference</text>
                  <text x="32" y="84">2</text>
                  <text x="164" y="84">Resumption</text>
                  <text x="244" y="84">CRED_PSK</text>
                  <text x="436" y="84">IETF</text>
                  <text x="560" y="84">Section</text>
                  <text x="600" y="84">7</text>
                  <text x="32" y="116">3</text>
                  <text x="164" y="116">Resumption</text>
                  <text x="256" y="116">ID_CRED_PSK</text>
                  <text x="436" y="116">IETF</text>
                  <text x="560" y="116">Section</text>
                  <text x="600" y="116">7</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+------------------------------+-------------------+-------------------+
| Label      | Descritpion                  | Change Controller | Reference         |
+============+==============================+===================+===================+
|  2         | Resumption CRED_PSK          |       IETF        | Section 7         |
+------------+------------------------------+-------------------+-------------------+
|  3         | Resumption ID_CRED_PSK       |       IETF        | Section 7         |
+------------+------------------------------+-------------------+-------------------+

]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="edhoc-info-label-registry">
        <name>EDHOC Info Label Registry</name>
        <t>IANA is requested to register the following registry "EDHOC Info Label" under the group name "Ephemeral Diffie-Hellman Over OCSE (EDHOC)".</t>
        <figure anchor="fig-info-label-psk">
          <name>EDHOC Info Label Registry.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="472" viewBox="0 0 472 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,160" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,160" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,160" fill="none" stroke="black"/>
                <path d="M 464,32 L 464,160" fill="none" stroke="black"/>
                <path d="M 8,32 L 464,32" fill="none" stroke="black"/>
                <path d="M 8,62 L 464,62" fill="none" stroke="black"/>
                <path d="M 8,66 L 464,66" fill="none" stroke="black"/>
                <path d="M 8,96 L 464,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 464,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 464,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Label</text>
                  <text x="208" y="52">Key</text>
                  <text x="360" y="52">Reference</text>
                  <text x="36" y="84">12</text>
                  <text x="216" y="84">KEYSTREAM_3</text>
                  <text x="360" y="84">Section</text>
                  <text x="400" y="84">4</text>
                  <text x="36" y="116">13</text>
                  <text x="216" y="116">K_3</text>
                  <text x="360" y="116">Section</text>
                  <text x="400" y="116">4</text>
                  <text x="36" y="148">14</text>
                  <text x="212" y="148">IV_3</text>
                  <text x="360" y="148">Section</text>
                  <text x="400" y="148">4</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+-----------------------+-------------------+
| Label      |          Key          |  Reference        |
+============+=======================+===================+
|  12        |       KEYSTREAM_3     |   Section 4       |
+------------+-----------------------+-------------------+
|  13        |           K_3         |   Section 4       |
+------------+-----------------------+-------------------+
|  14        |          IV_3         |   Section 4       |
+------------+-----------------------+-------------------+

]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="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="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="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="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="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>
    <?line 404?>

<section anchor="CDDL">
      <name>CDDL Definitions</name>
      <t>This section compiles the CDDL definitions for easy reference, 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_2B = (
  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>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor: Please remove this appendix.</t>
      <ul spacing="normal">
        <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 lenght 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"/>,
<contact fullname="Marco Tiloca"/>,
and
<contact fullname="Francisco Lopez-Gomez"/>
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>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
