<?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.13 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lopez-lake-edhoc-psk-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="TODO - Abbreviation">EDHOC PSK authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-lopez-lake-edhoc-psk-00"/>
    <author fullname="Elsa Lopez Perez">
      <organization>Inria</organization>
      <address>
        <email>elsa.lopez-perez@inria.fr</email>
      </address>
    </author>
    <date year="2024" month="July" day="03"/>
    <area>Security</area>
    <workgroup>LAKE Working Group</workgroup>
    <abstract>
      <?line 37?>

<t>TODO Abstract</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://elsalopez133.github.io/draft-lopez-lake-edhoc-psk/#go.draft-lopez-lake-edhoc-psk.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lopez-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://example.com/WG"/>.
        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/ElsaLopez133/draft-lopez-lake-psk"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>Pre-shared key (PSK) authentication method provides a balance between security and computational efficiency.
This authentication method was proposed in the first I-Ds of Ephemeral Diffie-Hellman Over COSE (EDHOC) <xref target="RFC9528"/>, and was ruled out to speed out the development process.
However, there is now a renewed effort to reintroduce PSK authentication, making this draft an update to the <xref target="RFC9528"/>.</t>
        <t>One prominent 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 their earlier session, reducing the overhead of full key exchange.
This efficiency is beneficial in scenarios where frequent key updates are needed, such in resource-constrained environments or applications requiring high-frequency secure communications.
The use of PSK authentication in EDHOC ensures that session key can be refreshed without heavy computational overhead, typically associated with public key operations, thus optimizing both performance and security.</t>
        <t>The resumption capability in Extensible Authentication Protocol (EAP) leveraging EDHOC can benefit from this method.
EAP-EDHOC resumption aims to provide a streamlined process for re-establishing secure sessions, reducing latency and resource consumption.
By employing PSK authentication for key updates, EAP-EDHOC resumption can achieve  secure session resumption, enhancing overall efficiency and user experience.</t>
        <t>EDHOC with PSK authentication is also beneficial for existing systems where two nodes have been provided with a PSK from other parties out of band.
This allows the nodes to perform ephemeral Diffie-Hellman to achieve Perfect Forward Secrecy (PFS), ensuring that past communications remain secure even if the PSK is compromised.
The authentication provided by EDHOC prevents eavesdropping by on-path attackers, as they would need to be active participants in the communication to intercept and potentially tamper with the session.
Examples could be Generic Bootstrapping Architecture (GBA) and Authenticated Key Management Architecture (AKMA) in mobile systems, or Peer and Authenticator in EAP.</t>
      </section>
      <section anchor="assumptions">
        <name>Assumptions</name>
      </section>
    </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?>

</section>
    <section anchor="protocol">
      <name>Protocol</name>
      <t>There are currently two proposed versions of the authentication method, depending on where the pre-shared key identifier (ID_CRED_PSK) is sent.
ID_CRED_PSK allows retrieval of CRED_PSK, a COSE object that contains the PSK.</t>
      <section anchor="credentials">
        <name>Credentials</name>
        <t>In both varaints, Initiator and Responder are assumed to have a 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'lf' }
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>CRED_PSK is a COSE_Key compatible credential, encoded as a CCS or CWT. For example:</t>
          </li>
        </ul>
        <artwork><![CDATA[
{                                               /CCS/
  2 : "mydotbot",                               /sub/
  8 : {                                         /cnf/
    1 : {                                       /COSE_Key/
       1 : 4,                                   /kty/
       2 : h'32',                               /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 Section 3.5.3.2 of <xref target="RFC9528"/>.
The authentication credential CRED_PSK substitutes CRED_I and CRED_R specified in <xref target="RFC9529"/>, and, when applicable, <bcp14>MUST</bcp14> follow the same guidelines described in Sections 3.5.2 and 3.5.3 of <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="variant-1">
        <name>Variant 1</name>
        <t>In the first variant of the method the ID_CRED_PSK is sent in the clear in the first message.
<xref target="fig-variant1"/> shows the message flow of Variant 1.</t>
        <figure anchor="fig-variant1">
          <name>Overview of message flow of Variant 1.</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"/>
                <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,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="120" y="52">METHOD,</text>
                  <text x="192" y="52">SUITES_I,</text>
                  <text x="252" y="52">G_X,</text>
                  <text x="292" y="52">C_I,</text>
                  <text x="364" y="52">ID_CRED_PSK,</text>
                  <text x="440" y="52">EAD_1</text>
                  <text x="280" y="84">message_1</text>
                  <text x="188" y="116">G_Y,</text>
                  <text x="228" y="116">Enc(</text>
                  <text x="268" y="116">C_R,</text>
                  <text x="316" y="116">MAC_2,</text>
                  <text x="368" y="116">EAD_2</text>
                  <text x="400" y="116">)</text>
                  <text x="280" y="148">message_2</text>
                  <text x="248" y="180">AEAD(</text>
                  <text x="296" y="180">EAD_3</text>
                  <text x="328" 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="20" y="260">&lt;-</text>
                  <text x="40" y="260">-</text>
                  <text x="56" y="260">-</text>
                  <text x="72" y="260">-</text>
                  <text x="88" y="260">-</text>
                  <text x="104" y="260">-</text>
                  <text x="120" y="260">-</text>
                  <text x="136" y="260">-</text>
                  <text x="152" y="260">-</text>
                  <text x="168" y="260">-</text>
                  <text x="184" y="260">-</text>
                  <text x="200" y="260">-</text>
                  <text x="216" y="260">-</text>
                  <text x="232" y="260">-</text>
                  <text x="248" y="260">-</text>
                  <text x="264" y="260">-</text>
                  <text x="280" y="260">-</text>
                  <text x="296" y="260">-</text>
                  <text x="312" y="260">-</text>
                  <text x="328" y="260">-</text>
                  <text x="344" y="260">-</text>
                  <text x="360" y="260">-</text>
                  <text x="376" y="260">-</text>
                  <text x="392" y="260">-</text>
                  <text x="408" y="260">-</text>
                  <text x="424" y="260">-</text>
                  <text x="440" y="260">-</text>
                  <text x="456" y="260">-</text>
                  <text x="472" y="260">-</text>
                  <text x="488" y="260">-</text>
                  <text x="504" y="260">-</text>
                  <text x="520" y="260">-</text>
                  <text x="536" y="260">-</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, ID_CRED_PSK, EAD_1           |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                    G_Y, Enc( C_R, MAC_2, EAD_2 )                  |
|<------------------------------------------------------------------+
|                             message_2                             |
|                                                                   |
|                           AEAD( EAD_3 )                           |
+------------------------------------------------------------------>|
|                             message_3                             |
|                                                                   |
|                           AEAD( EAD_4 )                           |
|<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|                             message_4                             |
]]></artwork>
          </artset>
        </figure>
        <t>This variant incurs minimal modifications with respect to the current methods described in <xref target="RFC9528"/> and the fourth message remains optional.
MAC_3 is removed in message_3 and replaced by AEAD.</t>
        <t>Not sure this should go here. Probably not.
This approach is similar to TLS 1.3, and, consequently, has similar privacy issues. For example:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Identity Leakage</strong>: neither the identity of the Initiator nor the Responder are protected against active or passive attackers.
By sending the ID_CRED_PSK in the clear, the initiator reveals its identity to any eavesdropper on the network.
This allows passive observers to learn which entity is attempting to connect to the server.</t>
          </li>
          <li>
            <t><strong>Tracking and correlation</strong>: An attacker can use the plaintext ID_CRED_PSK to track the entity across multiple connections, even if those connections are made from different networks or at different times.
This enables long-term tracking of entities.</t>
          </li>
          <li>
            <t><strong>Information leakage about relationships</strong>: ID_CRED_PSK also reveals information about the relationship between the Initiator and the Responder.
An observer can infer that the two parties have a pre-existing relationship and have previously agreed on a shared secret.</t>
          </li>
          <li>
            <t><strong>Replay and preplay attacks</strong>: ID_CRED_PSK can facilitate replay attacks.
An attacker might use the observed ID_CRED_PSK to initiate their own connection attempts, potentially leading to denial-of-service or other attacks.</t>
          </li>
          <li>
            <t><strong>Downgrade attacks</strong>: If multiple PSKs are available (e.g., of varying strengths or for different purposes), an attacker might attempt to force the use of a weaker or less privacy-preserving PSK by manipulating the ID_CRED_PSK field.</t>
          </li>
        </ul>
      </section>
      <section anchor="variant-2">
        <name>Variant 2</name>
        <t>The ID_CRED_PSK is sent in message_3, encrypted using a key derived from the ephemeral shared secret, G_XY.
In this case, the Responder will authenticate the Initiator first, contrary to Variant 1.
<xref target="fig-variant2"/> shows the message flow of Variant 2.</t>
        <figure anchor="fig-variant2">
          <name>Overview of message flow of Variant 2.</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="248" y="180">ID_CRED_PSK</text>
                  <text x="308" y="180">),</text>
                  <text x="344" y="180">AEAD(</text>
                  <text x="392" y="180">EAD_3</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>Contrary to Variant 1, this approach provides protection against passive attackers for both Initiator and Responder.
message_4 remains optional, but is needed to to authenticate the Responder and achieve mutual authentication in EDHOC if not relaying on external applications, such as OSCORE.</t>
      </section>
    </section>
    <section anchor="key-derivation">
      <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>
      <section anchor="variant-1-1">
        <name>Variant 1</name>
        <t><xref target="fig-variant1key"/> lists the key derivations that differ from those specified in Section 4.1.2 of <xref target="RFC9528"/>.</t>
        <figure anchor="fig-variant1key">
          <name>Key derivation of variant 1 of EDHOC PSK authentication method.</name>
          <artwork align="center"><![CDATA[
PRK_3e2m      = EDHOC_Extract( salt3e_2m, CRED_PSK )
PRK_4e3m      = PRK_3e2m
MAC_2         = EDHOC_KDF( PRK_3e2m,      2,  context_2,  mac_length_2 )
K_3           = EDHOC_KDF( PRK_4e3m,    TBD,  TH_3,       key_length   )
IV_3          = EDHOC_KDF( PRK_4e3m,    TBD,  TH_3,       iv_length    )
]]></artwork>
        </figure>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>context_2 = &lt;&lt;C_R, ID_CRED_PSK, TH_2, CRED_PSK, ? EAD_2&gt;&gt;</t>
          </li>
          <li>
            <t>TH_3 = H( TH_2, PLAINTEXT_2, CRED_PSK )</t>
          </li>
        </ul>
      </section>
      <section anchor="variant-2-1">
        <name>Variant 2</name>
        <t><xref target="fig-variant2key"/> lists the key derivations that differ from those specified in Section 4.1.2 of <xref target="RFC9528"/>.</t>
        <figure anchor="fig-variant2key">
          <name>Key derivation of variant 2 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,    TBD,  TH_3,       key_length )
K_3           = EDHOC_KDF( PRK_4e3m,    TBD,  TH_3,  key_length )
IV_3          = EDHOC_KDF( PRK_4e3m,    TBD,  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, CRED_PSK )</t>
          </li>
          <li>
            <t>TH_4 = H( TH_3, ID_CRED_PSK, ? EAD_3, CRED_PSK )</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="message-formatting-and-processing-differences-with-respect-to-rfc9528">
      <name>Message formatting and processing. Differences with respect to <xref target="RFC9528"/></name>
      <t>This section specifies the differences on the message formatting compared to <xref target="RFC9528"/>.</t>
      <section anchor="variant-1-2">
        <name>Variant 1</name>
        <section anchor="message-1">
          <name>Message 1</name>
          <t>message_1 contains the ID_CRED_PSK.
The composition of message_1 <bcp14>SHALL</bcp14> be a CBOR sequence, as defined below:</t>
          <artwork><![CDATA[
message_1 = (
  METHOD : int,
  SUITES_I : suites,
  G_X : bstr,
  C_I : bstr / -24..23,
  ID_CRED_PSK : header map // kid_value : bstr,
  ? EAD_1,
)

suites =  [ 2* int ] / int
EAD_1 = 1* ead
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>
              <t>ID_CRED_PSK is an identifier used to facilitate retrieval of the PSK.</t>
            </li>
          </ul>
          <t>The Initiator includes ID_CRED_PSK in message_1 and encodes the full message as a sequence of CBOR-encoded data items as specified in Section 5.2.1. of <xref target="RFC9528"/></t>
          <t>The Responder <bcp14>SHALL</bcp14> process message_1 as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Decode message_1.</t>
            </li>
            <li>
              <t>Retrieve CRED_PSK using ID_CRED_PSK.</t>
            </li>
            <li>
              <t>Process message_1 as specified in Section 5.2.3. of <xref target="RFC9528"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="message-2">
          <name>Message 2</name>
          <t>message_2 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
          <artwork><![CDATA[
message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
)
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>
              <t>G_Y_CIPHERTEXT_2 is the concatenation of G_Y (i.e., the ephemeral public key of the Responder) and CIPHERTEXT_2.</t>
            </li>
            <li>
              <t>CIPHERTEXT_2 is calculated with a binary additive stream cipher, using KEYSTREAM_2 and the following plaintext:  </t>
              <ul spacing="normal">
                <li>
                  <t>PLAINTEXT_2 = (C_R, / bstr / -24..23, MAC_2, ? EAD_2)</t>
                </li>
                <li>
                  <t>CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>The Responder uses MAC instead of Signature. Hence, COSE_Sign1 is not used.
The Responder computes MAC_2 as described in Section 4.1.2 of <xref target="RFC9528"/>, with context_2 &lt;&lt;C_R, ID_CRED_PSK, TH_2, CRED_PSK, ? EAD_2&gt;&gt;</t>
        </section>
        <section anchor="message-3">
          <name>Message 3</name>
          <t>message_3 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
          <artwork><![CDATA[
message_3 = (
  CIPHERTEXT_3 : bstr,
)
]]></artwork>
          <t>The Initiator computes a COSE_Encrypt0 object as defined in Section 5.2 and 5.3 of <xref target="RFC9052"/> with the EDHOC AEAD algorithm of the selected cipher suite and the following parameters:</t>
          <ul spacing="normal">
            <li>
              <t>protected = h''</t>
            </li>
            <li>
              <t>external_aad = TH_3, as defined in Section 5.2</t>
            </li>
            <li>
              <t>K_3 and IV_3 as defined in Section 5.2</t>
            </li>
            <li>
              <t>PLAINTEXT_3 = ( ? EAD_3 )</t>
            </li>
          </ul>
          <t>The Initiator computes TH_4 = H( TH_3, PLAINTEXT_3, CRED_PSK )</t>
        </section>
        <section anchor="message-4">
          <name>Message 4</name>
          <t>message_4 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
          <artwork><![CDATA[
message_4 = (
  CIPHERTEXT_4 : bstr,
)
]]></artwork>
          <t>message_4 is optional.</t>
        </section>
      </section>
      <section anchor="variant-2-2">
        <name>Variant 2</name>
        <section anchor="message-1-1">
          <name>Message 1</name>
          <t>Same as message_1 of EDHOC, described in Section 5.2.1 of <xref target="RFC9528"/>.</t>
        </section>
        <section anchor="message-2-1">
          <name>Message 2</name>
          <t>message_2 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
          <artwork><![CDATA[
message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
)
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>
              <t>G_Y_CIPHERTEXT_2 is the concatenation of G_Y (i.e., the ephemeral public key of the Responder) and CIPHERTEXT_2.</t>
            </li>
            <li>
              <t>CIPHERTEXT_2 is calculated with a binary additive stream cipher, using KEYSTREAM_2 and the following plaintext:  </t>
              <ul spacing="normal">
                <li>
                  <t>PLAINTEXT_2 = ( C_R, / bstr / -24..23, ? EAD_2 )</t>
                </li>
                <li>
                  <t>CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Contrary to <xref target="RFC9528"/> and Variant 1, MAC_2 is not needed.</t>
        </section>
        <section anchor="message-3-1">
          <name>Message 3</name>
          <t>message_3 <bcp14>SHALL</bcp14> be a CBOR Sequence, as defined below:</t>
          <artwork><![CDATA[
message_3 = (
  CIPHERTEXT_3
)
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>
              <t>CIPHERTEXT_3 is a concatenation of two different ciphertexts:  </t>
              <ul spacing="normal">
                <li>
                  <t>CIPHERTEXT_3A is calculated with a binary additive stream cipher, using a KESYSTREAM_3 generated with EDHOC_Expand and the following plaintext:      </t>
                  <ul spacing="normal">
                    <li>
                      <t>PLAINTEXT_3A = ( ID_CRED_PSK )</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>CIPHERTEXT_3B is a COSE_Encrypt0 object as defined in Sections 5.2 and 5.3 of <xref target="RFC9052"/>, 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 Section 5.2 of <xref 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; Enc(ID_CRED_PSK), TH_3 &gt;&gt;</t>
                    </li>
                    <li>
                      <t>K_3 and IV_3 as defined in Section 5.2</t>
                    </li>
                    <li>
                      <t>PLAINTEXT_3B = ( ? EAD_3 )</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
          </ul>
          <t>The Initiator computes TH_4 = H( TH_3, ID_CRED_PSK, PLAINTEXT_3, CRED_PSK ), defined in Section 5.2.</t>
        </section>
        <section anchor="message-4-1">
          <name>Message 4</name>
          <t>message_4 <bcp14>SHALL</bcp14> be a CBOR sequence, defined as:</t>
          <artwork><![CDATA[
message_4 = (
  CIPHERTEXT_4 : bstr,
)
]]></artwork>
          <t>A fourth message is mandatory for Responder's authentication.
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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>When evaluating the security considerations, it is important to differentiate between the initial handshake and session resumption phases.</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Initial Handshake</strong>: a fresh CRED_PSK is used to establish a secure connection.</t>
        </li>
        <li>
          <t><strong>Session Resumption</strong>: the same PSK identifier (ID_CRED_PSK) is reused each time EDHOC is executed.
    While this enhances efficiency and reduces the overhead of key exchanges, it presents privacy risks if not managed properly.
    Over multiple resumption sessions, initiating a full EDHOC session changes the resumption PSK, resulting in a new ID_CRED_PSK.
    The periodic renewal of the CRED_PSK and ID_CRED_PSK helps mitigate long-term privacy risks associated with static key identifiers.</t>
        </li>
      </ol>
      <section anchor="identity-protection">
        <name>Identity protection</name>
        <t>The current EDHOC methods protect the Initiator’s identity against active attackers and the Responder’s identity against passive attackers (See Section 9.1 of <xref target="RFC9528"/>).
However, there are differences between the two variants described in this draft:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Variant 1</strong>: neither the Initiator's identity nor the Responder's identity are protected against active or passive attackers.</t>
          </li>
          <li>
            <t><strong>Variant 2</strong>: both the Initiator's and Responder's identities are protected against passive attackers.</t>
          </li>
        </ol>
      </section>
      <section anchor="number-of-messages">
        <name>Number of messages</name>
        <t>The current EDHOC protocol consists of three mandatory messages and an optional fourth message.
The PSK authentication method might require a compulsory message depending on which variant is employed:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Variant 1</strong>: message_4 is optional since both identities are authenticated after message_3.</t>
          </li>
          <li>
            <t><strong>Variant 2</strong>: message_4 remains optional, but mutual authentication is not guaranteed without it, or an OSCORE message or any application data that confirms that the Responder owns the PSK.</t>
          </li>
        </ol>
      </section>
      <section anchor="external-authorization-data">
        <name>External Authorization Data</name>
        <t>In both variants, the Initiator and Responder can send information in EAD_3 and EAD_4 or in OSCORE messages in parallel with message_3 and message_4.
This is possible because the Initiator knows that only the Responder with access to the CRED_PSK can decrypt the information.</t>
      </section>
      <section anchor="optimization">
        <name>Optimization</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Variant 1</strong>: ID_CRED_PSK is sent without encryption, saving computational resources at the cost of privacy.
The exposure of ID_CRED_PSK in message_1 allows for earlier key derivation on the responder's side, potentially speeding up the process.</t>
          </li>
          <li>
            <t><strong>Variant 2</strong>: It requires encryption of ID_CRED_PSK in message_3, which implies higher computational cost.</t>
          </li>
        </ol>
      </section>
      <section anchor="mutual-authentication">
        <name>Mutual Authentication</name>
        <t>Mutual authentication is achieved at earlier stages in Variant 1, which might be important in certain applications, as well as increasing security against Denial of Service attacks or oracle attacks.</t>
      </section>
      <section anchor="attacks">
        <name>Attacks</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Variant 1</strong>: it allows for earlier authentication, potentially improving resistance to some active attacks, but at the cost of reduced privacy and increased vulnerability to passive attacks and traffic analysis.-</t>
          </li>
          <li>
            <t><strong>Variant 2</strong>: it  offers better privacy and resistance to passive attacks but might be more vulnerable to certain active attacks due to delayed authentication.</t>
          </li>
        </ol>
      </section>
      <section anchor="comparison">
        <name>Comparison</name>
        <table anchor="comparison-table">
          <name>Comparison between Variant 1 and Variant 2.</name>
          <thead>
            <tr>
              <th align="right">Aspect</th>
              <th align="left">Variant 1 (Clear ID_CRED_PSK)</th>
              <th align="left">Variant 2 (Encrypted ID_CRED_PSK)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">Privacy</td>
              <td align="left">Lower: ID_CRED_PSK sent in clear in message_1</td>
              <td align="left">Higher: ID_CRED_PSK encrypted in message_3</td>
            </tr>
            <tr>
              <td align="right">Initiator Identity Protection</td>
              <td align="left">Exposed from message_1</td>
              <td align="left">Protected until message_3</td>
            </tr>
            <tr>
              <td align="right">Authentication Timing</td>
              <td align="left">Earlier, possible from message_1</td>
              <td align="left">Delayed until message_3</td>
            </tr>
            <tr>
              <td align="right">Computational Efficiency</td>
              <td align="left">Slightly higher (no encryption of ID_CRED_PSK)</td>
              <td align="left">Slightly lower (encryption of ID_CRED_PSK)</td>
            </tr>
            <tr>
              <td align="right">Resistance to Passive Attacks</td>
              <td align="left">Lower due to exposed identity</td>
              <td align="left">Higher due to identity protection</td>
            </tr>
            <tr>
              <td align="right">Early Access Control</td>
              <td align="left">Possible from message_1</td>
              <td align="left">Limited, delayed until message_3</td>
            </tr>
            <tr>
              <td align="right">DoS Attack Vulnerability</td>
              <td align="left">Lower due to early authentication</td>
              <td align="left">Potentially higher due to delayed authentication</td>
            </tr>
            <tr>
              <td align="right">Resource Allocation</td>
              <td align="left">Fewer resources allocated before authentication</td>
              <td align="left">More resources allocated before authentication</td>
            </tr>
            <tr>
              <td align="right">Compatibility with Systems Expecting Early Identification</td>
              <td align="left">Higher</td>
              <td align="left">Lower</td>
            </tr>
            <tr>
              <td align="right">Flexibility for Identity Protection</td>
              <td align="left">Lower</td>
              <td align="left">Higher</td>
            </tr>
            <tr>
              <td align="right">Key Derivation Timing</td>
              <td align="left">Potentially earlier</td>
              <td align="left">Potentially delayed</td>
            </tr>
            <tr>
              <td align="right">Completeness</td>
              <td align="left">Complete with optional message_4</td>
              <td align="left">Complete with optional message_4</td>
            </tr>
            <tr>
              <td align="right">Suitability for Quick Identification Scenarios</td>
              <td align="left">Higher</td>
              <td align="left">Lower</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
    </section>
    <section anchor="unified-approach-and-recommendations">
      <name>Unified Approach and Recommendations</name>
      <t>To improve privacy during both initial handshake and session resumption, a single unified method for handling PSKs could be beneficial.
Variant 2 is particularly suitable for this purpose as it streamlines key management and usage across different phases.</t>
      <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.
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 anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </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="RFC9529">
        <front>
          <title>Traces of 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="M. Serafin" initials="M." surname="Serafin"/>
          <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
          <author fullname="M. Vučinić" initials="M." surname="Vučinić"/>
          <date month="March" year="2024"/>
          <abstract>
            <t>This document contains example traces of Ephemeral Diffie-Hellman Over COSE (EDHOC).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9529"/>
        <seriesInfo name="DOI" value="10.17487/RFC9529"/>
      </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="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 501?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
