<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 4.0.1) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-papon-lake-pq-edhoc-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PQ-EDHOC - Sign and KEM">Post-Quantum EDHOC - Initiator and Responder using signature and/or KEM</title>

    <author fullname="Clément Papon">
      <organization>XLIM UMR CNRS 7252 - Limoges University</organization>
      <address>
        <email>clement.papon@unilim.fr</email>
      </address>
    </author>
    <author fullname="Cristina Onete">
      <organization>XLIM UMR CNRS 7252 - Limoges University</organization>
      <address>
        <email>maria-cristina.onete@unilim.fr</email>
      </address>
    </author>

    <date year="2026" month="March" day="01"/>

    
    <workgroup>LAKE</workgroup>
    <keyword>EDHOC</keyword> <keyword>Post-Quantum</keyword> <keyword>Authentication Key Exchange</keyword>

    <abstract>


<?line 80?>

<t>This document specifies two extensions to the Ephemeral Diffie-Hellman over COSE (EDHOC). These two protocol versions aim to provide quantum-resistance to the original EDHOC protocol, while reducing message-complexity with respect to parallel drafts. The document defines: (1) a 3-message quantum-resistant EDHOC proposal when the Initiator knows the Responder; in this version, the Initiator authenticates using a signature, while the Responder uses a KEM; (2) a 3-or-4-message quantum-resistant EDHOC proposal, which proposes a tradeoff between message-complexity and computational overhead.</t>



    </abstract>



  </front>

  <middle>


<?line 84?>

<section anchor="introduction"><name>Introduction</name>

<t>This document aims to present new alternatives for rendering the Ephemeral Diffie-Hellman Over COSE (EDHOC) protocol quantum-resistant. The main goal is to reduce the number of messages exchanged during the handshake, using a combination of KEMs and signatures, as well as Post-Quantum Cryptography (PQC) cipher suites, for secure key-exchange and authentication.</t>

<t>In this draft we:</t>

<t><list style="symbols">
  <t>propose, building on <xref target="I-D.pocero-authkem-ikr-edhoc"/>, a version of quantum-resistant EDHOC where the Initiator knows the Responder, but in a scenario where the Initiator authenticates with a signature (ML-DSA) and the Responder with a KEM (ML-KEM).</t>
  <t>propose, building on <xref target="I-D.pocero-authkem-edhoc"/>, a version of the protocol that requires, depending on the case, either only 3 or 4 mandatory messages. This second version reduces the message overhead, but comes at an additional computational overhead for (at least) one of the two parties.</t>
</list></t>

<t>The two proposals in this draft can be viewed to extend (in the case of the first bullet-point) and respectively to provide an alternative (in the case of the second bullet-point) to the current proposal for quantum-resistant EDHOC.</t>

<section anchor="terminology-and-requirements-language"><name>Terminology and Requirements Language</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"/> and COSE Algorithms <xref target="RFC9053"/>.</t>

</section>
<section anchor="definitions"><name>Definitions</name>

<section anchor="kems-key-encapsulation-mechanisms"><name>KEMs (Key Encapsulation Mechanisms)</name>

<t>A Key Encapsulation Mechanism (KEM) consists of three algorithms:</t>

<t><list style="symbols">
  <t><spanx style="verb">KEM.KeyGen</spanx>: a probabilistic key generation algorithm, which takes as input a security parameter <spanx style="verb">k</spanx> and outputs a key pair <spanx style="verb">(kem.sk, kem.pk)</spanx>, where <spanx style="verb">kem.sk</spanx> is secret and <spanx style="verb">kem.pk</spanx> is public.</t>
  <t><spanx style="verb">KEM.Encapsulation</spanx>: a probabilistic encapsulation algorithm, which takes as input a KEM public key <spanx style="verb">kem.pk</spanx>, and generates a pair <spanx style="verb">(ss, kem.ct)</spanx>, where <spanx style="verb">ss</spanx> is the shared-secret and <spanx style="verb">kem.ct</spanx> is a ciphertext.</t>
  <t><spanx style="verb">KEM.Decapsulation</spanx>: a deterministic decapsulation algorithm, which takes as input a KEM secret key <spanx style="verb">kem.sk</spanx> and a KEM ciphertext <spanx style="verb">kem.ct</spanx>, and outputs the shared-secret <spanx style="verb">ss</spanx> (associated to <spanx style="verb">kem.ct</spanx>).</t>
</list></t>

<t>In practice, if Alice and Bob use a KEM, Alice generates the public and private keys, sends the public key to Bob, who generates the shared-secret and ciphertext. He then returns the latter to Alice, who can subsequently recover the same shared-secret using her private key and the ciphertext.</t>

</section>
<section anchor="digital-signature"><name>Digital Signature</name>

<t>A Digital Signature (DS) scheme consists of three algorithms:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.KeyGen</spanx>: a probabilistic key generation algorithm, which takes as input a security parameter <spanx style="verb">k</spanx> and outputs a key pair <spanx style="verb">(sign.sk, sign.pk)</spanx>, where <spanx style="verb">sign.sk</spanx> is secret and <spanx style="verb">sign.pk</spanx> is public.</t>
  <t><spanx style="verb">DS.Sign</spanx>: a probabilistic algorithm, which takes as input a signing secret key <spanx style="verb">sign.sk</spanx> and a message <spanx style="verb">m</spanx>, and generates a signature <spanx style="verb">s</spanx>.</t>
  <t><spanx style="verb">DS.Verify</spanx>: a deterministic algorithm, which takes as input a signing public key <spanx style="verb">sign.pk</spanx>, a message <spanx style="verb">m</spanx> and a signature <spanx style="verb">s</spanx>, and outputs <spanx style="verb">1</spanx> if the signature is valid for the message, and <spanx style="verb">0</spanx> otherwise.</t>
</list></t>

<t>In practice, if Alice and Bob use a DS scheme, Alice generates the public and private keys, and sends the public key to Bob. Later, Alice sends a message together with a signature to Bob. Bob can then verify the validity of the signature on the message under the public key.</t>

</section>
</section>
</section>
<section anchor="post-quantum-edhoc-when-the-initiator-knows-the-responder-pq-edhoc-ikr"><name>Post-Quantum EDHOC when the Initiator knows the Responder (PQ-EDHOC-IKR)</name>

<section anchor="motivation"><name>Motivation</name>

<t>In <xref target="I-D.pocero-authkem-ikr-edhoc"/>, the authors adopt an EDHOC approach for use cases where the Initiator already knows the identity of the Responder, in a post-quantum version using ephemeral and static KEMs for authentication. The Initiator, knowing the long-term public key of the Responder, can derive the shared-secret <spanx style="verb">ss_R</spanx> and compute a key, then encrypt part of the first message. It can thus send its identity directly and securely authenticate himself, since only the Responder with its long-term secret key can decrypt the first message. Knowing the Initiator's identity, the Responder can derive the second shared-secret <spanx style="verb">ss_I</spanx> and continue the key derivation schedule. Sending the encrypted second message allows it to securely confirm its identity to the Initiator.</t>

<t>The key motivation behind our current proposal is a desire to reduce the message-complexity of quantum-resistant EDHOC. We propose an extension to draft proposal <xref target="I-D.pocero-authkem-ikr-edhoc"/>, which allows the Initiator and Responder to authenticate using different mechanisms -- much as in the original EDHOC. In particular, while the Responder still authenticates using a KEM, in our proposal the Initiator will use a signature.</t>

<t>This approach comes with the following benefit: there is no need to partially encrypt the first message. Instead, during the third message, the Initiator calculates a MAC and signs it. Upon receiving the encrypted third message, the Responder, after decryption, authenticates the Initiator in the usual EDHOC manner.</t>

</section>
<section anchor="pq-edhoc-ikr-protocol-overview"><name>PQ-EDHOC-IKR protocol overview</name>

<section anchor="pq-edhoc-ikr-protocol-description"><name>PQ-EDHOC-IKR protocol description</name>

<t>We present here a high-level description of our PQ-EDHOC-IKR where the Initiator authenticates with a signature and the Responder with a KEM.</t>

<figure><artwork><![CDATA[
  I                                                            R
 ---                                                          ---
  |     METHOD, SUITES_I, kem.pk_eph, kem.ct_R, C_I, EAD_1     |
  +------------------------------------------------------------>
  |                          message_1                         |
  |                                                            |
  | kem.ct_eph, Enc(KEYSTREAM_2, C_R, ID_CRED_R, MAC_2, EAD_2) |
  <------------------------------------------------------------+
  |                          message_2                         |
  |                                                            |
  |             AEAD(ID_CRED_I, SIGNATURE_3, EAD_3)            |
  +------------------------------------------------------------>
  |                          message_3                         |
  |                                                            |
  |                         AEAD(EAD_4)                        |
  <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  |                          message_4                         |
]]></artwork></figure>

<t>Figure 1: PQ-EDHOC-IKR (I sign, R kem) message flow.</t>

<section anchor="formatting-and-sending-message1"><name>Formatting and sending <spanx style="verb">message_1</spanx></name>

<t>As in the usual EDHOC protocol, the first message (<spanx style="verb">message_1</spanx>) consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">METHOD</spanx> --&gt; as specified in <xref target="RFC9528"/> it is an integer specifying the authentication method the Initiator wants to use;</t>
  <t><spanx style="verb">SUITES_I</spanx> --&gt; it consists of an ordered set of algorithms supported by the Initiator and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">C_I</spanx> (and also as <spanx style="verb">C_R</spanx>, which will appears later) --&gt; the Connection Identifiers chosen by the Initiator (<spanx style="verb">C_I</spanx>) and by the Responder (<spanx style="verb">C_R</spanx>) as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">EAD_1</spanx> (and also <spanx style="verb">EAD_2</spanx>, <spanx style="verb">EAD_3</spanx> and <spanx style="verb">EAD_4</spanx>, which will appear later) -&gt; External Authorization Data, respectively included in <spanx style="verb">message_1</spanx>, <spanx style="verb">message_2</spanx>, <spanx style="verb">message_3</spanx> (and optionally) <spanx style="verb">message_4</spanx>, and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">kem.pk_eph</spanx> --&gt; the Ephemeral KEM public key generated by the Initiator;</t>
  <t><spanx style="verb">kem.ct_R</spanx> --&gt; based on the Responder long-term KEM public key, the Initiator computes <spanx style="verb">ss_R</spanx> and <spanx style="verb">kem.ct_R</spanx> with the KEM.Encapsulation algorithm. He keeps secret <spanx style="verb">ss_R</spanx> to compute, later, <spanx style="verb">PRK_3e2m</spanx>, and sends <spanx style="verb">kem.ct_R</spanx> to the Responder.</t>
</list></t>

</section>
<section anchor="processing-message1-formatting-and-sending-message2"><name>Processing <spanx style="verb">message_1</spanx>, formatting and sending <spanx style="verb">message_2</spanx></name>

<t>On the reception of the first message, the Responder first recovers <spanx style="verb">ss_R</spanx> thanks to his long-term KEM secret key <spanx style="verb">kem.sk_R</spanx> and <spanx style="verb">kem.ct_R</spanx>, using the <spanx style="verb">KEM.Decapsulation</spanx> algorithm (if the decapsulation process fails, he aborts). He then proceeds as in the original EDHOC protocol with elements <spanx style="verb">METHOD</spanx>, <spanx style="verb">SUITES_I</spanx>, <spanx style="verb">C_I</spanx> and <spanx style="verb">EAD_1</spanx>. Finally, using <spanx style="verb">kem.pk_eph</spanx> and the <spanx style="verb">KEM.Encapsulation</spanx> algorithm, he computes the ephemeral ciphertext <spanx style="verb">kem.ct_eph</spanx> and the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>.</t>

<t>The Responder selects its Connection Identifier <spanx style="verb">C_R</spanx> as specified in <xref target="RFC9528"/>. He then computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_2 = H(kem.ct_eph, H(message_1))</spanx>;</t>
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx>.</t>
</list></t>

<t>And also, as in <xref target="RFC9528"/>:</t>

<t><list style="symbols">
  <t><spanx style="verb">KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length)</spanx>;</t>
  <t><spanx style="verb">SALT_3e2m = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length)</spanx>.</t>
</list></t>

<t>Compared to <xref target="RFC9528"/>, the computation of <spanx style="verb">PRK_3e2m</spanx> is modified as follows :</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx>.</t>
</list></t>

<t>The Responder now computes <spanx style="verb">MAC_2</spanx> and assembles <spanx style="verb">PLAINTEXT_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">MAC_2 = EDHOC_KDF(PRK_3e2m, 2, C_R, ID_CRED_R, TH_2, EAD_2, mac_length_2)</spanx>;</t>
  <t><spanx style="verb">PLAINTEXT_2 = (C_R, ID_CRED_R, MAC_2, EAD_2)</spanx>.</t>
</list></t>

<t>So the second message consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">kem.ct_eph</spanx> --&gt; the ephemeral ciphertext obtained with <spanx style="verb">kem.pk_eph</spanx>;</t>
  <t><spanx style="verb">CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message2-formatting-and-sending-message3"><name>Processing <spanx style="verb">message_2</spanx>, formatting and sending <spanx style="verb">message_3</spanx></name>

<t>On reception of the second message, the Initiator, using <spanx style="verb">kemp.ct_eph</spanx>, can compute the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>. As the Responder did, he computes <spanx style="verb">TH_2</spanx>, <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">KEYSTREAM_2</spanx>. He can now decipher and retrieve : <spanx style="verb">PLAINTEXT_2 = CIPHERTEXT_2 XOR KEYSTREAM_2</spanx>.</t>

<t>Thanks to <spanx style="verb">ID_CRED_R</spanx>, the Initiator verifies the validity of the long-term KEM public key of the Responder, <spanx style="verb">kemp.pk_R</spanx>, and computes <spanx style="verb">SALT_3e2m</spanx> and <spanx style="verb">PRK_3e2m</spanx>, using the shared-secret <spanx style="verb">ss_R</spanx> he generates at the beginning of the exchange.</t>

<t>At this point the Initiator is able to authenticate the Responder (at least, make sure he is talking to the endpoint he hopes to talk to). For that, he computes, as the Responder did, the MAC <spanx style="verb">MAC_2</spanx>. If it matches with the one he received, then he properly authenticated the Responder. Otherwise he aborts.</t>

<t>It is now up to the Initiator to authenticate himself. To do so, the Initiator computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_3 = H(TH_2, PLAINTEXT_2, ID_CRED_R)</spanx>;</t>
  <t><spanx style="verb">K_3 = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_3 = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length)</spanx>;</t>
  <t><spanx style="verb">MAC_3 = EDHOC_KDF(PRK_3e2m, 6, ID_CRED_I, TH_3, EAD_3, mac_length_3)</spanx>.</t>
</list></t>

<t>In this version of the protocol, the Initiator authenticates itself to the Responder with a signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_3 = DS.Sign(sign.sk_I, (ID_CRED_I, TH_3, EAD_3, MAC_3, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_I</spanx> is the long-term signing private key of the Initiator.</t>

<t>Setting <spanx style="verb">PLAINTEXT_3 = (ID_CRED_I, SIGNATURE_3, EAD_3)</spanx>, the Initiator ciphers <spanx style="verb">PLAINTEXT_3</spanx> with the AEAD encryption algorithm negociated in <spanx style="verb">SUITES_I</spanx>.</t>

</section>
<section anchor="processing-message3"><name>Processing <spanx style="verb">message_3</spanx></name>

<t>On reception of <spanx style="verb">message_3</spanx>, the Responder computes <spanx style="verb">TH_3</spanx>, <spanx style="verb">K_3</spanx>, and <spanx style="verb">IV_3</spanx> as the Initiator did, and deciphers <spanx style="verb">CIPHERTEXT_3</spanx> with the AEAD decryption algorithm. With <spanx style="verb">PLAINTEXT_3</spanx>, he can compute <spanx style="verb">MAC_3</spanx> on his side, and verify the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_I, (ID_CRED_I, TH_3, EAD_3, MAC_3, sign_length), SIGNATURE_3)</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.pk_I</spanx> is the long-term signing public key of the Initiator. If the verification algorithm returns 1, the Responder properly authenticated the Initiator. Otherwise he aborts.</t>

</section>
<section anchor="optionally-formatting-sending-and-receiving-message4"><name>Optionally formatting, sending and receiving <spanx style="verb">message_4</spanx></name>

<t>If the Responder decides of a fourth mandatory message, he then computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3, ID_CRED_I)</spanx>;</t>
  <t><spanx style="verb">K_4 = EDHOC_KDF(PRK_3e2m, 8, TH_4, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_4 = EDHOC_KDF(PRK_3e2m, 9, TH_4, iv_length)</spanx>.</t>
</list></t>

<t>Using the AEAD encryption algorithm, he ciphers <spanx style="verb">PLAINTEXT_4 = EAD_4</spanx> and sends it to the Initiator. The latter computes <spanx style="verb">TH_4</spanx>, <spanx style="verb">K_4</spanx>, <spanx style="verb">IV_4</spanx>, and deciphers <spanx style="verb">CIPHERTEXT_4</spanx> thanks to the AEAD decryption algorithm.</t>

</section>
<section anchor="computing-the-session-key-prkout"><name>Computing the session key <spanx style="verb">PRK_out</spanx></name>

<t>It doesn't matter if there is a fourth mandatory message, in any case, both the Initiator and the Responder, in order to compute the key <spanx style="verb">PRK_out</spanx>, have to calculate the fourth transcript hash:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3, ID_CRED_I)</spanx>.</t>
</list></t>

<t>With that element, using the EDHOC_KDF algorithm, they both obtain:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_out = EDHOC_KDF(PRK_3e2m, 7, TH_4, hash_length)</spanx></t>
</list></t>

<t>which is the desired session key, and the authentication process is fully achieved.</t>

</section>
</section>
<section anchor="key-derivation-schedule"><name>Key Derivation Schedule</name>

<t>In this section we summarize the key derivation operations that appears throughout the protocol.</t>

<figure><sourcecode type="~"><![CDATA[
          +--------------------------------+
          |TH_2=H(kem.ct_eph, H(message_1))|
          +-------+------------------------+              PLAINTEXT_2
                 |                                               |
  +------+   +---+---+   +------+   +------+   +-----------+   +-+-+
  |ss_eph|-->|Extract|-->|PRK_2e|-->|Expand|-->|KEYSTREAM_2|-->|XOR|
  +------+   +-------+   +---+--+   +---+--+   +-----------+   +-+-+
                             |          |                        |
                             |          |                        v
                             |        +-+--+           +---------+--+
                             |        |TH_2|           |CIPHERTEXT_2|
                             |        +--+-+           +------------+
                         +---+--+        |
                         |Expand|--------+
                         +---+--+
                            |
                            |
                      +-----+---+
               +------|SALT_3e2m|
               |      +---------+
               |
  +----+   +---+---+   +--------+   +------+   +-----+
  |ss_R|-->|Extract|-->|PRK_3e2m|-->|Expand|-->|MAC_2|
  +----+   +-------+   +---+----+   +------+   +-----+
                           |                              PLAINTEXT_3
                           |                                   |
                           |        +------+   +--------+   +--+-+
                           +--------|Expand|-->|K_3/IV_3|-->|AEAD|
                           |        +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_3|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_3=H(TH_2, PLAINTEXT_2, ID_CRED_R)|
                           |   +------------------------------------+
                           |
                           |       +------+   +-----+   +-----------+
                           +-------|Expand|-->|MAC_3|-->|SIGNATURE_3|
                           |       +------+   +-----+   +-----------+
                           |
                           |                              PLAINTEXT_4
                           |                                   |
                           |        +------+   +--------+   +--+-+
               message_4?  +--------|Expand|-->|K_4/IV_4|-->|AEAD|
                           |        +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_4|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_4=H(TH_3, PLAINTEXT_3, ID_CRED_I)|
                           |   +--------+---------------------------+
                           |            |
                           |            |
                           |        +---+--+   +-------+
                           +--------|Expand|-->|PRK_out|
                                    +------+   +-------+
]]></sourcecode></figure>
<t>Figure 2: PQ-EDHOC-IKR (I sign, R kem) key derivation schedule.</t>

<t>So we can summarize the different computations as in <xref target="RFC9528"/>:</t>

<figure><artwork><![CDATA[
  PRK_2e      = EDHOC_Extract(TH_2, ss_eph);
  KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length);
  SALT_3e2m   = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length);
  PRK_3e2m    = EDHOC_Extract(SALT_3e2m, ss_R);
  MAC_2       = EDHOC_KDF(PRK_3e2m, 2, context_2, mac_length_2)
                (with context_2 = C_R, ID_CRED_R, TH_2, EAD_2);
  K_3         = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length);
  IV_3        = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length);
  MAC_3       = EDHOC_KDF(PRK_3e2m, 6, context_3, mac_length_3)
                     (with context_3 = ID_CRED_I, TH_3, EAD_3);
  K_4         = EDHOC_KDF(PRK_3e2m, 8, TH_4, key_length);
  IV_4        = EDHOC_KDF(PRK_3e2m, 9, TH_4, iv_length);
  PRK_out     = EDHOC_KDF(PRK_3e2m, 7, TH_4, hash_length).
]]></artwork></figure>

</section>
<section anchor="additional-explanations"><name>Additional explanations</name>

<t>We detail here the main elements that differ from the original EDHOC protocol.</t>

<section anchor="ephemeral-kem"><name>Ephemeral KEM</name>

<t>As explained in <xref target="I-D.pocero-authkem-ikr-edhoc"/>, the usual ephemeral Diffie-Hellman elements <spanx style="verb">(x,g^x)</spanx> and <spanx style="verb">(y,g^y)</spanx>, are here replaced by an ephemeral KEM:</t>

<t><list style="symbols">
  <t>At first, the Initiator generates a ephemeral KEM key pair <spanx style="verb">(kem.sk_eph, kem.pk_eph)</spanx> using the <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter);</t>
  <t>On reception of the ephemeral KEM public key <spanx style="verb">kemp.pk_eph</spanx>, the Responder generates a pair <spanx style="verb">(ss_eph, kem.ct_eph)</spanx> with the <spanx style="verb">KEM.Encapsulation</spanx> algorithm (with input <spanx style="verb">kem.pk_eph</spanx>). The element <spanx style="verb">ss_eph</spanx> is the ephemeral shared-secret, later used to derive a key, and <spanx style="verb">kem.ct_eph</spanx> is the ephemeral KEM ciphertext, used by the Initiator to retrieve the ephemeral shared-secret;</t>
  <t>On reception of the ephemeral KEM ciphertext, the Initiator recovers the ephemeral shared-secret <spanx style="verb">ss_eph</spanx> thanks to the <spanx style="verb">KEM.Decapsulation' algorithm (with input </spanx>kem.sk_eph<spanx style="verb"> and </spanx>kem.ct_eph`).</t>
</list></t>

</section>
<section anchor="authentication-keys"><name>Authentication keys</name>

<t>For the Initiator, the authentication key <bcp14>MUST</bcp14> be a static signing key pair <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

<t>For the Responder, the authentication key <bcp14>MUST</bcp14> be a static KEM key pair <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

</section>
<section anchor="key-derivation"><name>Key derivation</name>

<t>In this version of the protocol, the EDHOC_Extract fonction is used to derive two keys, in a way that slightly differ from the original EDHOC protocol.</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">TH_2</spanx> and the IKM <bcp14>SHALL</bcp14> be the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_3e2m</spanx> directly derived from <spanx style="verb">PRK_2e</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_R</spanx>.</t>
</list></t>

<t>Concerning <spanx style="verb">PRK_out</spanx>, there is no modifications compared to the original EDHOC protocol.</t>

</section>
</section>
</section>
<section anchor="analysis"><name>Analysis</name>

<t>In summary, we retain here the use case proposed by <xref target="I-D.pocero-authkem-ikr-edhoc"/>, where the Initiator already knows the Responder identity. Our protocol proposes a hybridization between the protocol proposed by <xref target="I-D.pocero-authkem-ikr-edhoc"/> and EDHOC method 1. In other words, Diffie-Hellman elements are replaced with KEMs, and the Initiator authenticates here using a signature (instead of a KEM).
An important difference with the proposal of <xref target="I-D.pocero-authkem-ikr-edhoc"/> concerns the first message message_1, which in our version is simplified and remains closer to the standard EDHOC structure. Indeed, the Initiator authenticates via a signature at the third message. So he no longer needs to derive a key and encrypt part of the first message to securely send its identity.
The second message also finds itself simplified. Since the Initiator does not use KEM in this situation, the Responder has no need to generate a shared-secret <spanx style="verb">ss_I</spanx> and send the KEM ciphertext <spanx style="verb">kem.ct_I</spanx>. The second message is therefore closer to the usual EDHOC structure.
Finally, the third message is almost 'identical' to the third message of the EDHOC method 1 protocol.
It seems important to note that complete and secure authentication is ensured here entirely in three messages, and the fourth message is optional.
Regarding the Key Derivation Schedule, the changes are minor compared to <xref target="RFC9528"/> (adaptation of notations, especially for the IKM to take into account the post-quantum nature of the cryptographic material) and <xref target="I-D.pocero-authkem-ikr-edhoc"/> (simply one less key derivation, since the Initiator uses a signature rather than a static KEM).
We will discuss security considerations further in this document. We will also soon present a byte comparison for each message.</t>

</section>
</section>
<section anchor="kem-sign-authentication-for-post-quantum-edhoc"><name>KEM &amp; Sign Authentication for Post-Quantum EDHOC</name>

<section anchor="motivation-1"><name>Motivation</name>

<t>Our second idea is to propose a tradeoff, allowing for a reduced number of messages in the quantum-resistant EDHOC handshake, which come at a slightly higher computational overhead compared to <xref target="I-D.pocero-authkem-edhoc"/>.</t>

<t>Starting from the standard EDHOC protocol, method 0 allows for mutual authentication via signature between both users. As proposed in <xref target="I-D.pocero-authkem-edhoc"/>, replacing classical signatures with post-quantum resistant signatures such as ML-DSA and ephemeral Diffie-Hellman elements with a KEM like ML-KEM seems reasonable to make EDHOC post-quantum resistant (even if this still needs to be proved).
These two changes do not affect the number of mandatory messages, since the fundamental structure of the protocol is preserved (however a post-quantum signature will likely be more computationally expensive, just like a KEM).
Things get complicated when trying to apply these modifications to the other three methods. Continuing on this track, we replace ephemeral Diffie-Hellman elements with an ephemeral KEM. This does not affect the usual structure of EDHOC. However, if we want to take it further and also replace long-term Diffie-Hellman elements with a KEM, managing asymmetric keys for the latter poses a problem when trying to preserve the authentication structure of EDHOC, namely a MAC derived from a long-term secret.
As proposed in <xref target="I-D.pocero-authkem-edhoc"/>, we go from 3 to 4 or 5 mandatory messages to achieve complete mutual authentication.
Here, we want to explore a different path. Our solution aims to strike a balance between the number of mandatory messages and the computations performed by each endpoint.</t>

<t>The principle is as follows. Suppose that the Initiator authenticates with a signature and the Responder uses a KEM. In this case, we will need an obligatory fourth message (for the Initiator to authenticate the Responder via the MAC, as proposed in <xref target="I-D.pocero-authkem-edhoc"/>).
To avoid this obligatory fourth message and return to three, we propose removing the MAC <spanx style="verb">MAC_2</spanx> used to authenticate the Responder (eliminating calculations on both sides) and replacing it with a signature from the Responder (adding calculations on both sides). To do this, the Responder signs an element (which should not be chosen randomly for security reasons and which must allow the Initiator to identify the session) and sends it directly (encrypted) in the second message.
The Initiator can then immediately identify the Responder: it retrieves its identity from the encrypted message and verifies the signature. The rest of the protocol remains 'unchanged', and the calculation of <spanx style="verb">PRK_out</spanx> is possible directly after sending/receiving the third message (thus no more obligatory fourth message). The costs of calculations are compensated, but the delicate point remains the size of the second message (we will provide a bytes analysis for this message later).
We decline this procedure when the Initiator wants to authenticate with a KEM and the Responder with a signature, or when both parties want to authenticate with KEMs. In these two latter cases, the number of mandatory messages compared to <xref target="I-D.pocero-authkem-edhoc"/> decreases from 5 to 4.</t>

</section>
<section anchor="first-case-initiator-signs-responder-kem-and-signs"><name>First case: Initiator signs, Responder KEM and signs</name>

<t>We describe below the equivalent of EDHOC method 1. The Initiator will authenticate with a signature, and the Responder with a KEM and a signature.</t>

<section anchor="protocol-overview"><name>Protocol overview</name>

<figure><artwork><![CDATA[
  I                                                                R
 ---                                                              ---
  |            METHOD, SUITES_I, kem.pk_eph, C_I, EAD_1            |
  +---------------------------------------------------------------->
  |                            message_1                           |
  |                                                                |
  |kem.ct_eph, Enc(KEYSTREAM_2, C_R, ID_CRED_R, EAD_2, SIGNATURE_2)|
  <----------------------------------------------------------------+
  |                            message_2                           |
  |                                                                |
  |          kem.ct_R, AEAD(ID_CRED_I, SIGNATURE_3, EAD_3)         |
  +---------------------------------------------------------------->
  |                            message_3                           |
  |                                                                |
  |                           AEAD(EAD_4)                          |
  <- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  |                            message_4                           |
]]></artwork></figure>

<t>Figure 3: PQ-EDHOC, I Signs - R KEM &amp; Signs message flow.</t>

</section>
<section anchor="protocol-description"><name>Protocol description</name>

<section anchor="formatting-and-sending-message1-1"><name>Formatting and sending <spanx style="verb">message_1</spanx></name>

<t>As in the usual EDHOC protocol, the first message (<spanx style="verb">message_1</spanx>) consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">METHOD</spanx> --&gt; as specified in <xref target="RFC9528"/> it is an integer specifying the authentication method the Initiator wants to use;</t>
  <t><spanx style="verb">SUITES_I</spanx> --&gt; it consists of an ordered set of algorithms supported by the Initiator and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">C_I</spanx> (and also as <spanx style="verb">C_R</spanx>, which will appears later) --&gt; the Connection Identifiers chosen by the Initiator (<spanx style="verb">C_I</spanx>) and by the Responder (<spanx style="verb">C_R</spanx>) as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">EAD_1</spanx> (and also <spanx style="verb">EAD_2</spanx>, <spanx style="verb">EAD_3</spanx> and <spanx style="verb">EAD_4</spanx>, which will appear later) -&gt; External Authorization Data, respectively included in <spanx style="verb">message_1</spanx>, <spanx style="verb">message_2</spanx>, <spanx style="verb">message_3</spanx> (and optionally) <spanx style="verb">message_4</spanx>, and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">kem.pk_eph</spanx> --&gt; the Ephemeral KEM public key generated by the Initiator.</t>
</list></t>

</section>
<section anchor="processing-message1-formatting-and-sending-message2-1"><name>Processing <spanx style="verb">message_1</spanx>, formatting and sending <spanx style="verb">message_2</spanx></name>

<t>On the reception of the first message, the Responder proceeds as in the original EDHOC protocol with elements <spanx style="verb">METHOD</spanx>, <spanx style="verb">SUITES_I</spanx>, <spanx style="verb">C_I</spanx> and <spanx style="verb">EAD_1</spanx>.
In a second step, using <spanx style="verb">kem.pk_eph</spanx> and the <spanx style="verb">KEM.Encapsulation</spanx> algorithm, he computes the ephemeral ciphertext <spanx style="verb">kem.ct_eph</spanx> and the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>.</t>

<t>The Responder selects its Connection Identifier <spanx style="verb">C_R</spanx> as specified in <xref target="RFC9528"/>. He then computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_2 = H(kem.ct_eph, H(message_1))</spanx>;</t>
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx>;</t>
  <t><spanx style="verb">KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length)</spanx>.</t>
</list></t>

<t>The Responder now assembles <spanx style="verb">PLAINTEXT_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PLAINTEXT_2 = (C_R, ID_CRED_R, TH_2, EAD_2)</spanx></t>
</list></t>

<t>then signs this message :</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_2 = DS.Sign(sign.sk_R, (PLAINTEXT_2, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_R</spanx> is the long-term signing private key of the Responder, and finally ciphers <spanx style="verb">PLAINTEXT_2A = (PLAINTEXT_2, SIGNATURE_2)</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_2 = PLAINTEXT_2A XOR KEYSTREAM_2</spanx>.</t>
</list></t>

<t>So the second message then consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">kem.ct_eph</spanx> --&gt; the ephemeral ciphertext obtained with <spanx style="verb">kem.pk_eph</spanx>;</t>
  <t><spanx style="verb">CIPHERTEXT_2</spanx>.</t>
</list></t>

<t><strong>Important note:</strong> let us mention that the element signed by the Responder, for security considerations during the security analysis, could be subject to slight changes. However, it serves here to illustrate the principle proposed here.</t>

</section>
<section anchor="processing-message2-formatting-and-sending-message3-1"><name>Processing <spanx style="verb">message_2</spanx>, formatting and sending <spanx style="verb">message_3</spanx></name>

<t>On reception of the second message, the Initiator, using <spanx style="verb">kemp.ct_eph</spanx>, can compute the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>. As the Responder did, he computes <spanx style="verb">TH_2</spanx>, <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">KEYSTREAM_2</spanx>. He can now decipher and retrieve : <spanx style="verb">PLAINTEXT_2A = CIPHERTEXT_2 XOR KEYSTREAM_2</spanx>.</t>

<t>Thanks to <spanx style="verb">ID_CRED_R</spanx>, the Initiator obtains the long-term public keys of the Responder, <spanx style="verb">kemp.pk_R</spanx> and <spanx style="verb">sign.pk_R</spanx>.
At first, he checks the validity of the signature of the Responder:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_R, (PLAINTEXT_2, sign_length), SIGNATURE_2)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator properly authenticated the Responder. Otherwise he aborts.</t>

<t>Assuming everything goes well, using the KEM encapsulation algorithm <spanx style="verb">KEM.Encapsulation</spanx>, and the long-term input material <spanx style="verb">kem.pk_R</spanx> of the Responder, the Initiator generated the couple <spanx style="verb">(ss_R, kem.ct_R)</spanx>.</t>

<t>The shared-secret <spanx style="verb">ss_R</spanx> will then serve as IKM for the computation of <spanx style="verb">PRK_3e2m</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">SALT_3e2m = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx>.</t>
</list></t>

<t>It is now the turn of the Initiator to authenticate himself. To do so, he computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_3 = H(TH_2, PLAINTEXT_2A, ID_CRED_R)</spanx>;</t>
  <t><spanx style="verb">K_3 = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_3 = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length)</spanx>;</t>
  <t><spanx style="verb">MAC_3 = EDHOC_KDF(PRK_3e2m, 6, ID_CRED_I, TH_3, EAD_3, mac_length_3)</spanx></t>
</list></t>

<t>as in the original EDHOC protocol. Then comes the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_3 = DS.Sign(sign.sk_I, (ID_CRED_I, TH_3, EAD_3, MAC_3, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_I</spanx> is the long-term signing private key of the Initiator.</t>

<t>Setting <spanx style="verb">PLAINTEXT_3 = (ID_CRED_I, SIGNATURE_3, EAD_3)</spanx>, the Initiator ciphers <spanx style="verb">PLAINTEXT_3</spanx> with the AEAD encryption algorithm negociated in <spanx style="verb">SUITES_I</spanx>.
The third message is then composed of:</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_3</spanx>;</t>
  <t><spanx style="verb">kem.ct_R</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message3-1"><name>Processing <spanx style="verb">message_3</spanx></name>

<t>On reception of <spanx style="verb">message_3</spanx>, the Responder computes <spanx style="verb">TH_3</spanx>. He also used the <spanx style="verb">KEM.Decapsulation</spanx> algorithm with its long-term KEM private key <spanx style="verb">kem.sk_R</spanx> and the KEM ciphertext <spanx style="verb">kem.ct_R</spanx>, to obtain the shared-secret <spanx style="verb">ss_R</spanx>.</t>

<t>He can now compute <spanx style="verb">SALT_3e2m</spanx>, <spanx style="verb">PRK_3e2m</spanx>, <spanx style="verb">K_3</spanx>, and <spanx style="verb">IV_3</spanx> as the Initiator did, and deciphers <spanx style="verb">CIPHERTEXT_3</spanx> with the AEAD decryption algorithm.
With <spanx style="verb">PLAINTEXT_3</spanx>, he calculates <spanx style="verb">MAC_3</spanx> on his side, and verifies the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_I, (ID_CRED_I, TH_3, EAD_3, MAC_3, sign_length), SIGNATURE_3)</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.pk_I</spanx> is the long-term signing public key of the Initiator. If the verification algorithm returns 1, the Initiator is properly authenticated to the Initiator. Otherwise the Responder aborts.</t>

</section>
<section anchor="optionally-formatting-sending-and-receiving-message4-1"><name>Optionally formatting, sending and receiving <spanx style="verb">message_4</spanx></name>

<t>If the Responder decides of a fourth mandatory message, he then computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3, ID_CRED_I)</spanx>;</t>
  <t><spanx style="verb">K_4 = EDHOC_KDF(PRK_3e2m, 8, TH_4, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_4 = EDHOC_KDF(PRK_3e2m, 9, TH_4, iv_length)</spanx>.</t>
</list></t>

<t>Using the AEAD encryption algorithm, he ciphers <spanx style="verb">PLAINTEXT_4 = EAD_4</spanx> and sends it to the Initiator. The latter computes <spanx style="verb">TH_4</spanx>, <spanx style="verb">K_4</spanx>, <spanx style="verb">IV_4</spanx>, and deciphers <spanx style="verb">CIPHERTEXT_4</spanx> thanks to the AEAD decryption algorithm.</t>

</section>
<section anchor="computing-the-session-key-prkout-1"><name>Computing the session key <spanx style="verb">PRK_out</spanx></name>

<t>Here again, it doesn't matter if there is a fourth mandatory message, in any case, both the Initiator and the Responder, in order to compute the key <spanx style="verb">PRK_out</spanx>, have to calculate the fourth transcript hash as in the original EDHOC protocol:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3, ID_CRED_I)</spanx>.</t>
</list></t>

<t>With this element, using the EDHOC_KDF, they both obtain:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_out = EDHOC_KDF(PRK_3e2m, 7, TH_4, hash_length)</spanx></t>
</list></t>

<t>which is the desired session key, and the authentication process is fully achieved.</t>

</section>
</section>
<section anchor="associated-key-derivation-schedule"><name>Associated key derivation schedule</name>

<t>In this section we present the key derivation schedule of the previously described protocol version.</t>

<figure><artwork><![CDATA[
          +--------------------------------+
          |TH_2=H(kem.ct_eph, H(message_1))|
          +------+----------------------+--+             PLAINTEXT_2A
                 |                      |                        |
  +------+   +---+---+   +------+   +---+--+   +-----------+   +-+-+
  |ss_eph|-->|Extract|-->|PRK_2e|-->|Expand|-->|KEYSTREAM_2|-->|XOR|
  +------+   +-------+   +---+--+   +---+--+   +-----------+   +-+-+
                             |                                   |
                             |                                   v
                             |                         +---------+--+
                             |                         |CIPHERTEXT_2|
                             |                         +---------+--+
                             |
           +---------+   +---+--+
           |SALT_3e2m|<--|Expand|
           +---+-----+   +---+--+                         PLAINTEXT_3
               |                                               |
  +----+   +---+---+   +--------+   +------+   +--------+   +--+-+
  |ss_R|-->|Extract|-->|PRK_3e2m|-->|Expand|-->|K_3/IV_3|-->|AEAD|
  +----+   +-------+   +---+----+   +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_3|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_3=H(TH_2, PLAINTEXT_2, ID_CRED_R)|
                           |   +------------------------------------+
                           |
                           |       +------+   +-----+   +-----------+
                           +-------|Expand|-->|MAC_3|-->|SIGNATURE_3|
                           |       +------+   +-----+   +-----------+
                           |
                           |                              PLAINTEXT_4
                           |                                   |
                           |        +------+   +--------+   +--+-+
               message_4?  +--------|Expand|-->|K_4/IV_4|-->|AEAD|
                           |        +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_4|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_4=H(TH_3, PLAINTEXT_3, ID_CRED_I)|
                           |   +--------+---------------------------+
                           |            |
                           |            |
                           |        +---+--+   +-------+
                           +--------|Expand|-->|PRK_out|
                                    +------+   +-------+
]]></artwork></figure>
<t>Figure 4: PQ-EDHOC, I Signs - R KEM &amp; Signs key derivation schedule.</t>

<t>So we can summarize the different computations as previously:</t>

<figure><artwork><![CDATA[
  PRK_2e      = EDHOC_Extract(TH_2, ss_eph);
  KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length);
  SALT_3e2m   = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length);
  PRK_3e2m    = EDHOC_Extract(SALT_3e2m, ss_R);
  K_3         = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length);
  IV_3        = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length);
  MAC_3       = EDHOC_KDF(PRK_3e2m, 6, context_3, mac_length_3)
                     (with context_3 = ID_CRED_I, TH_3, EAD_3);
  K_4         = EDHOC_KDF(PRK_3e2m, 8, TH_4, key_length);
  IV_4        = EDHOC_KDF(PRK_3e2m, 9, TH_4, iv_length);
  PRK_out     = EDHOC_KDF(PRK_3e2m, 7, TH_4, hash_length).
]]></artwork></figure>

</section>
<section anchor="additional-explanations-1"><name>Additional explanations</name>

<t>We detail here the main elements that differ from the original EDHOC protocol.</t>

<section anchor="ephemeral-kem-1"><name>Ephemeral KEM</name>

<t>As previously explain the usual ephemeral Diffie-Hellman elements are replaced by an ephemeral KEM. In this protocol, it works exactly as we previously described.</t>

</section>
<section anchor="authentication-keys-1"><name>Authentication keys</name>

<t>For the Initiator, the authentication key <bcp14>MUST</bcp14> be a static signing key pair <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

<t>For the Responder, the authentication key <bcp14>MUST</bcp14> be: (1) a static KEM key pair <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter) <strong>and</strong> (2) a static signing key pair <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

</section>
<section anchor="key-derivation-1"><name>Key derivation</name>

<t>In this version of the protocol, the keys <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">PRK_3e2m</spanx> are obtain thanks to EDHOC_Extract fonction:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">TH_2</spanx> and the IKM <bcp14>SHALL</bcp14> be the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_3e2m</spanx> directly derived from <spanx style="verb">PRK_2e</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_R</spanx>.</t>
</list></t>

<t>Concerning <spanx style="verb">PRK_out</spanx>, here again, there is no modifications compared to the original EDHOC protocol.</t>

</section>
</section>
<section anchor="analysis-1"><name>Analysis</name>

<t>In this version of the protocol, we assumed that the Initiator has a pair of static signature keys <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> and that the Responder has not only a pair of static signature keys <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> but also a pair of static KEM keys <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx>.
This is not an unusual case. We can suppose that each user, when registering in a Public Key Infrastructure (PKI), provides pairs of keys of both types (signature and KEM), which they update regularly. The difference in our protocol is that the Responder is forced to use both types during the same AKE.
From a technical point of view, the first message <spanx style="verb">message_1</spanx> and the third message <spanx style="verb">message_3</spanx> do not differ from those proposed in <xref target="I-D.pocero-authkem-edhoc"/>. Two major differences are worth noting regarding the messages.
Firstly, here we have only an <strong>optional</strong> fourth message <spanx style="verb">message_4</spanx>. Secondly, our second message <spanx style="verb">message_2</spanx> contains an additional signature <spanx style="verb">SIGNATURE_2</spanx> in <spanx style="verb">PLAINTEXT_2A</spanx> (before ciphering) (we will propose a byte analysis of this message later).
Finally, from a computational point of view, both the Initiator and the Responder no longer need to calculate the MAC <spanx style="verb">MAC_2</spanx>. In return, the Responder must sign a message, and the Initiator must verify this signature.
Regarding the Key Derivation Schedule, aside from the IKM which adapts to post-quantum cryptographic material, we remain close to the one of EDHOC's method 1.
We thus have a tradeoff between the size of messages, calculation capabilities, and the number of messages.</t>

</section>
</section>
<section anchor="second-case-initiator-kem-and-signs-responder-signs"><name>Second case: Initiator KEM and signs, Responder signs</name>

<t>We now invert the roles and describe below the equivalent of EDHOC method 2. The Initiator will authenticate with a KEM and a signature, and the Responder only with a signature.</t>

<section anchor="protocol-overview-1"><name>Protocol overview</name>

<figure><artwork><![CDATA[
  I                                                                R
 ---                                                              ---
  |            METHOD, SUITES_I, kem.pk_eph, C_I, EAD_1            |
  +---------------------------------------------------------------->
  |                            message_1                           |
  |                                                                |
  |kem.ct_eph, Enc(KEYSTREAM_2, C_R, ID_CRED_R, EAD_2, SIGNATURE_2)|
  <----------------------------------------------------------------+
  |                            message_2                           |
  |                                                                |
  |               AEAD(ID_CRED_I, EAD_3, SIGNATURE_3)              |
  +---------------------------------------------------------------->
  |                            message_3                           |
  |                                                                |
  |                      kem.ct_I, AEAD(EAD_4)                     |
  <----------------------------------------------------------------+
  |                            message_4                           |
]]></artwork></figure>

<t>Figure 5: PQ-EDHOC, I KEM &amp; Signs - R Signs message flow.</t>

</section>
<section anchor="protocol-description-1"><name>Protocol description</name>

<section anchor="formatting-and-sending-message1-2"><name>Formatting and sending <spanx style="verb">message_1</spanx></name>

<t>As for our previous protocol version, the first message (<spanx style="verb">message_1</spanx>) consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">METHOD</spanx> --&gt; as specified in <xref target="RFC9528"/> it is an integer specifying the authentication method the Initiator wants to use;</t>
  <t><spanx style="verb">SUITES_I</spanx> --&gt; it consists of an ordered set of algorithms supported by the Initiator and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">C_I</spanx> (and also as <spanx style="verb">C_R</spanx>, which will appears later) --&gt; the Connection Identifiers chosen by the Initiator (<spanx style="verb">C_I</spanx>) and by the Responder (<spanx style="verb">C_R</spanx>) as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">EAD_1</spanx> (and also <spanx style="verb">EAD_2</spanx>, <spanx style="verb">EAD_3</spanx> and <spanx style="verb">EAD_4</spanx>, which will appear later) -&gt; External Authorization Data, respectively included in <spanx style="verb">message_1</spanx>, <spanx style="verb">message_2</spanx>, <spanx style="verb">message_3</spanx> (and optionally) <spanx style="verb">message_4</spanx>, and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">kem.pk_eph</spanx> --&gt; the Ephemeral KEM public key generated by the Initiator.</t>
</list></t>

</section>
<section anchor="processing-message1-formatting-and-sending-message2-2"><name>Processing <spanx style="verb">message_1</spanx>, formatting and sending <spanx style="verb">message_2</spanx></name>

<t>On the reception of the first message, the Responder proceeds as in the original EDHOC protocol with elements <spanx style="verb">METHOD</spanx>, <spanx style="verb">SUITES_I</spanx>, <spanx style="verb">C_I</spanx> and <spanx style="verb">EAD_1</spanx>.
In a second step, using <spanx style="verb">kem.pk_eph</spanx> and the <spanx style="verb">KEM.Encapsulation</spanx> algorithm, he computes the ephemeral ciphertext <spanx style="verb">kem.ct_eph</spanx> and the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>.</t>

<t>The Responder selects its Connection Identifier <spanx style="verb">C_R</spanx> as specified in <xref target="RFC9528"/>. He then computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_2 = H(kem.ct_eph, H(message_1))</spanx>;</t>
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx>;</t>
  <t><spanx style="verb">KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length)</spanx>.</t>
</list></t>

<t>In order to authenticate himself to the Initiator, in this version, similarly to the EDHOC method 2, the Responder computes a MAC <spanx style="verb">MAC_2</spanx> and signs it with its long-term signing private key <spanx style="verb">sign.sk_R</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">MAC_2 = EDHOC_KDF(PRK_2e, 2, C_R, ID_CRED_R, TH_2, EAD_2, mac_length_2)</spanx>;</t>
  <t><spanx style="verb">SIGNATURE_2 = DS.Sign(sign.sk_R, (C_R, ID_CRED_R, TH_2, EAD_2, MAC_2, sign_length))</spanx>.</t>
</list></t>

<t>The Responder now assembles <spanx style="verb">PLAINTEXT_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PLAINTEXT_2 = (C_R, ID_CRED_R, SIGNATURE_2, EAD_2)</spanx></t>
</list></t>

<t>then ciphers this message :</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</spanx></t>
</list></t>

<t>and finally sends <spanx style="verb">message_2</spanx> composed of <spanx style="verb">CIPHERTEXT_2</spanx> and <spanx style="verb">kem.ct_eph</spanx>.
So, so far, except the ephemeral KEM material, everything works like in the usual EDHOC method 2 protocol.</t>

</section>
<section anchor="processing-message2-formatting-and-sending-message3-2"><name>Processing <spanx style="verb">message_2</spanx>, formatting and sending <spanx style="verb">message_3</spanx></name>

<t>On reception of the second message, the Initiator, using <spanx style="verb">kemp.ct_eph</spanx>, can compute the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>. As the Responder did, he computes <spanx style="verb">TH_2</spanx>, <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">KEYSTREAM_2</spanx>. He can now decipher and retrieve : <spanx style="verb">PLAINTEXT_2 = CIPHERTEXT_2 XOR KEYSTREAM_2</spanx>.</t>

<t>Thanks to <spanx style="verb">ID_CRED_R</spanx>, the Initiator obtains the long-term signing public key of the Responder, <spanx style="verb">sign.pk_R</spanx>.
He can then compute <spanx style="verb">MAC_2</spanx> on its own, and check the validity of the signature of the Responder:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_R, (C_R, ID_CRED_R, TH_2, EAD_2, MAC_2, sign_length), SIGNATURE_2)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator properly authenticated the Responder. Otherwise he aborts.</t>

<t>Assuming everything goes well, the Initiator computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_3 = H(TH_2, PLAINTEXT_2, ID_CRED_R)</spanx>;</t>
  <t><spanx style="verb">K_3 = EDHOC_KDF(PRK_2e, 3, TH_3, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_3 = EDHOC_KDF(PRK_2e, 4, TH_3, iv_length)</spanx>.</t>
</list></t>

<t>Then, in order to authenticate, he forms <spanx style="verb">PLAINTEXT_3 = (ID_CRED_I, TH_3, EAD_3)</spanx> and signs it:</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_3 = DS.Sign(sign.sk_I, (PLAINTEXT_3, sign_length))</spanx>.</t>
</list></t>

<t>where <spanx style="verb">sign.sk_I</spanx> is the long-term signing private key of the Initiator. Finally he ciphers <spanx style="verb">PLAINTEXT_3A = (PLAINTEXT_3, SIGNATURE_3)</spanx> with the AEAD encryption algorithm negociated in <spanx style="verb">SUITES_I</spanx>, as <spanx style="verb">CIPHERTEXT_3</spanx>.</t>

<t>The third message is then composed of:</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_3</spanx>.</t>
</list></t>

<t><strong>Important note:</strong> let us mention that the element signed by the Initiator, here again, for security considerations during the security analysis, could be subject to slight changes.</t>

</section>
<section anchor="processing-message3-formatting-and-sending-message4"><name>Processing <spanx style="verb">message_3</spanx>, formatting and sending <spanx style="verb">message_4</spanx></name>

<t>On reception of <spanx style="verb">message_3</spanx>, the Responder computes <spanx style="verb">TH_3</spanx>, <spanx style="verb">K_3</spanx> and <spanx style="verb">IV_3</spanx>, and deciphers <spanx style="verb">CIPHERTEXT_3</spanx> with the AEAD decryption algorithm.
With <spanx style="verb">PLAINTEXT_3A</spanx>, he obtains the Initiator's long-term signing public key, and so he verifies the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_I, (PLAINTEXT_3, sign_length), SIGNATURE_3)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator is properly authenticated to the Initiator. Otherwise the Responder aborts.
With <spanx style="verb">PLAINTEXT_3</spanx>, the Responder also gets the Initiator's long-term KEM public key. He then uses the <spanx style="verb">KEM.Encapsulation</spanx> algorithm to generate <spanx style="verb">ss_I</spanx> and <spanx style="verb">kem.ct_I</spanx>.</t>

<t>Following that, he computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3A, ID_CRED_I)</spanx>;</t>
  <t><spanx style="verb">SALT_4e3m = EDHOC_KDF(PRK_2e, 5, TH_4, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx>;</t>
  <t><spanx style="verb">K_4 = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_4 = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length)</spanx>.</t>
</list></t>

<t>Using the AEAD encryption algorithm, he ciphers <spanx style="verb">PLAINTEXT_4 = EAD_4</spanx> and sends it to the Initiator, along with <spanx style="verb">kem.ct_I</spanx>.
He then finishes the AKE by computing the final key <spanx style="verb">PRK_out</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_out = EDHOC_KDF(PRK_4e3m, 7, TH_4, hash_length)</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message4"><name>Processing <spanx style="verb">message_4</spanx></name>

<t>In this situation the fourth message is mandatory. It is used to send the KEM ciphertext <spanx style="verb">kem.ct_I</spanx> to the Initiator (it cannot be shared before, since the Responder only learns the identity of the Initiator with the third message).</t>

<t>When receiving this last message, the Initiator computes the shared-secret <spanx style="verb">ss_I</spanx> thanks to the <spanx style="verb">KEM.Decapsulation</spanx> algorithm, and elements <spanx style="verb">kem.sk_I</spanx>, <spanx style="verb">kem.ct_I</spanx>.
After that, he can compute <spanx style="verb">TH_4</spanx>, <spanx style="verb">K_4</spanx>, <spanx style="verb">IV_4</spanx>, and decipher <spanx style="verb">CIPHERTEXT_4</spanx> thanks to the AEAD decryption algorithm. Once he had checked the well formedness of <spanx style="verb">PLAINTEXT_4</spanx>, he can finally compute <spanx style="verb">PRK_out</spanx> as the Responder did.</t>

</section>
</section>
<section anchor="associated-key-derivation-schedule-1"><name>Associated key derivation schedule</name>

<t>In this section we present the key derivation schedule of the previously described protocol version.</t>

<figure><artwork><![CDATA[
          +--------------------------------+
          |TH_2=H(kem.ct_eph, H(message_1))|
          +------+----------------------+--+              PLAINTEXT_2
                 |                      |                        |
  +------+   +---+---+   +------+   +---+--+   +-----------+   +-+-+
  |ss_eph|-->|Extract|-->|PRK_2e|-->|Expand|-->|KEYSTREAM_2|-->|XOR|
  +------+   +-------+   +---+--+   +---+--+   +-----------+   +-+-+
                             |                                   |
                             |                                   v
                             |                         +---------+--+
                             |                         |CIPHERTEXT_2|
                             |                         +------------+
                             |
                             |     +------+   +-----+   +-----------+
                             +-----|Expand|-->|MAC_2|-->|SIGNATURE_2|
                             |     +------+   +-----+   +-----------+
                             |
                             | +------------------------------------+
                             | |TH_3=H(TH_2, PLAINTEXT_2, ID_CRED_R)|
                             | +--------+---------------------------+
                             |          |
                             |          |                PLAINTEXT_3A
                             |          |                      |
                             |      +---+--+   +--------+   +--+-+
                             +------|Expand|-->|K_3/IV_3|-->|AEAD|
                             |      +---+--+   +--------+   +--+-+
                             |                                 |
                             |                                 v
                             |                         +-------+----+
                             |                         |CIPHERTEXT_3|
                             |                         +-------+----+
                             |
           +---------+   +---+--+
           |SALT_4e3m|<--|Expand|
           +---+-----+   +---+--+                         PLAINTEXT_4
               |                                               |
  +----+   +---+---+   +--------+   +------+   +--------+   +--+-+
  |ss_I|-->|Extract|-->|PRK_4e3m|-->|Expand|-->|K_4/IV_4|-->|AEAD|
  +----+   +-------+   +---+----+   +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_4|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_4=H(TH_3, PLAINTEXT_3, ID_CRED_I)|
                           |   +--------+---------------------------+
                           |            |
                           |        +---+--+   +-------+
                           +--------|Expand|-->|PRK_out|
                                    +------+   +-------+
]]></artwork></figure>
<t>Figure 6: PQ-EDHOC, I KEM &amp; Signs - R Signs key derivation schedule.</t>

<t>So we can summarize the different computations as previously:</t>

<figure><artwork><![CDATA[
  PRK_2e      = EDHOC_Extract(TH_2, ss_eph);
  KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length);
  MAC_2       = EDHOC_KDF(PRK_2e, 2, context_2, mac_length_2)
              (with context_2 = C_R, ID_CRED_R, TH_2, EAD_2);
  K_3         = EDHOC_KDF(PRK_2e, 3, TH_3, key_length);
  IV_3        = EDHOC_KDF(PRK_2e, 4, TH_3, iv_length);
  SALT_4e3m   = EDHOC_KDF(PRK_2e, 5, TH_4, hash_length);
  PRK_4e3m    = EDHOC_Extract(SALT_4e3m, ss_I);
  K_4         = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length);
  IV_4        = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length);
  PRK_out     = EDHOC_KDF(PRK_4e3m, 7, TH_4, hash_length).
]]></artwork></figure>

</section>
<section anchor="additional-explanations-2"><name>Additional explanations</name>

<t>We detail here the main elements that differ from the original EDHOC protocol.</t>

<section anchor="ephemeral-kem-2"><name>Ephemeral KEM</name>

<t>As previously explain the usual ephemeral Diffie-Hellman elements are replaced by an ephemeral KEM. In this protocol, it works exactly as we previously described.</t>

</section>
<section anchor="authentication-keys-2"><name>Authentication keys</name>

<t>For the Initiator, the authentication key <bcp14>MUST</bcp14> be: (1) a static KEM key pair <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter) <strong>and</strong> (2) a static signing key pair <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

<t>For the Responder, the authentication key <bcp14>MUST</bcp14> be a static signing key pair <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

</section>
<section anchor="key-derivation-2"><name>Key derivation</name>

<t>In this version of the protocol, the keys <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">PRK_4e3m</spanx> are obtain thanks to EDHOC_Extract fonction:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">TH_2</spanx> and the IKM <bcp14>SHALL</bcp14> be the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>;</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_4e3m</spanx> directly derived from <spanx style="verb">PRK_2e</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_I</spanx>.</t>
</list></t>

<t>Concerning <spanx style="verb">PRK_out</spanx>, here again, there is no modifications compared to the original EDHOC protocol.
We can note that in this two previous cases, the Key Derivation Schedule remains close to the standard EDHOC Key Derivation Schedule of method 1 and 2.</t>

</section>
</section>
<section anchor="analysis-2"><name>Analysis</name>

<t>This is actually a mirror version of the previous protocol presented, in the sense that this time we assumed that the Responder has a pair of static signature keys <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> and that the Initiator has not only a pair of static signature keys <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> but also a pair of static KEM keys <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx>.
For the same reasons, this is not an unusual case.</t>

<t>From a technical point of view, messages <spanx style="verb">message_1</spanx>,<spanx style="verb">message_2</spanx> and <spanx style="verb">message_4</spanx> do not differ from those proposed in <xref target="I-D.pocero-authkem-edhoc"/>. Here again, two major differences are worth noting regarding the messages.
Firstly, here we no more have a fifth mandatory message <spanx style="verb">message_5</spanx>. Secondly, our third message <spanx style="verb">message_3</spanx> contains an additional signature <spanx style="verb">SIGNATURE_3</spanx> in <spanx style="verb">PLAINTEXT_3A</spanx> (before ciphering) (as this was the case for the previous protocol we propose, with <spanx style="verb">SIGNATURE_2</spanx>) (we will propose a byte analysis of this message later).
Finally, from a computational point of view, both the Initiator and the Responder no longer need to calculate the MAC <spanx style="verb">MAC_3</spanx>. In return, in the same vein, the Initiator must sign a message, and the Responder must verify this signature, in order to authenticate the Initiator, and send him the KEM ciphertext <spanx style="verb">kem.ct_I</spanx>.
Regarding the Key Derivation Schedule, aside from the IKM which adapts to post-quantum cryptographic material, we remain close to the one of EDHOC's method 2.
So compared to <xref target="I-D.pocero-authkem-edhoc"/>, we reduce the number of mandatory messages, from 5 to 4, and again we obtain a tradeoff between the size of messages, calculation capabilities, and the number of messages.</t>

</section>
</section>
<section anchor="third-case-initiator-and-responder-kem-and-sign-version-1"><name>Third case: Initiator and Responder KEM and sign - version 1</name>

<t>We now present the equivalent of EDHOC method 3, which is in our case, an hybridation of the previous cases. We propose two variant of this version. We start here with the first one, where the Initiator authenticates with a KEM and a signature, and the Responder with only a KEM. More specifically, this first version is a kind of hybrid between a protocol proposed in <xref target="I-D.pocero-authkem-edhoc"/> and one of the protocols we have proposed above.</t>

<section anchor="protocol-overview-2"><name>Protocol overview</name>

<figure><artwork><![CDATA[
  I                                                              R
 ---                                                            ---
  |           METHOD, SUITES_I, kem.pk_eph, C_I, EAD_1           |
  +-------------------------------------------------------------->
  |                           message_1                          |
  |                                                              |
  |      kem.ct_eph, Enc(KEYSTREAM_2, C_R, ID_CRED_R, EAD_2)     |
  <--------------------------------------------------------------+
  |                           message_2                          |
  |                                                              |
  |         kem.ct_R, AEAD(ID_CRED_I, EAD_3, SIGNATURE_3)        |
  +-------------------------------------------------------------->
  |                           message_3                          |
  |                                                              |
  |                 kem.ct_I, AEAD(EAD_4, MAC_2)                 |
  <--------------------------------------------------------------+
  |                           message_4                          |
]]></artwork></figure>

<t>Figure 7: PQ-EDHOC, I KEM &amp; Signs - R KEM message flow.</t>

</section>
<section anchor="protocol-description-2"><name>Protocol description</name>

<section anchor="formatting-and-sending-message1-3"><name>Formatting and sending <spanx style="verb">message_1</spanx></name>

<t>As for our previous protocol version, the first message (<spanx style="verb">message_1</spanx>) consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">METHOD</spanx> --&gt; as specified in <xref target="RFC9528"/> it is an integer specifying the authentication method the Initiator wants to use;</t>
  <t><spanx style="verb">SUITES_I</spanx> --&gt; it consists of an ordered set of algorithms supported by the Initiator and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">C_I</spanx> (and also as <spanx style="verb">C_R</spanx>, which will appears later) --&gt; the Connection Identifiers chosen by the Initiator (<spanx style="verb">C_I</spanx>) and by the Responder (<spanx style="verb">C_R</spanx>) as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">EAD_1</spanx> (and also <spanx style="verb">EAD_2</spanx>, <spanx style="verb">EAD_3</spanx> and <spanx style="verb">EAD_4</spanx>, which will appear later) -&gt; External Authorization Data, respectively included in <spanx style="verb">message_1</spanx>, <spanx style="verb">message_2</spanx>, <spanx style="verb">message_3</spanx> (and optionally) <spanx style="verb">message_4</spanx>, and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">kem.pk_eph</spanx> --&gt; the Ephemeral KEM public key generated by the Initiator.</t>
</list></t>

</section>
<section anchor="processing-message1-formatting-and-sending-message2-3"><name>Processing <spanx style="verb">message_1</spanx>, formatting and sending <spanx style="verb">message_2</spanx></name>

<t>On the reception of the first message, the Responder proceeds as in the original EDHOC protocol with elements <spanx style="verb">METHOD</spanx>, <spanx style="verb">SUITES_I</spanx>, <spanx style="verb">C_I</spanx> and <spanx style="verb">EAD_1</spanx>.
In a second step, using <spanx style="verb">kem.pk_eph</spanx> and the <spanx style="verb">KEM.Encapsulation</spanx> algorithm, he computes the ephemeral ciphertext <spanx style="verb">kem.ct_eph</spanx> and the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>.</t>

<t>The Responder selects its Connection Identifier <spanx style="verb">C_R</spanx> as specified in <xref target="RFC9528"/>. He then computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_2 = H(kem.ct_eph, H(message_1))</spanx>;</t>
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx>;</t>
  <t><spanx style="verb">KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length)</spanx>.</t>
</list></t>

<t>In this version the Responder authenticates with the fourth mandatory message. So he directly assembles <spanx style="verb">PLAINTEXT_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PLAINTEXT_2 = (C_R, ID_CRED_R, TH_2, EAD_2)</spanx></t>
</list></t>

<t>then ciphers this message :</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_2 = PLAINTEXT_2 XOR KEYSTREAM_2</spanx></t>
</list></t>

<t>and finally sends <spanx style="verb">message_2</spanx> composed of <spanx style="verb">CIPHERTEXT_2</spanx> and <spanx style="verb">kem.ct_eph</spanx>.</t>

</section>
<section anchor="processing-message2-formatting-and-sending-message3-3"><name>Processing <spanx style="verb">message_2</spanx>, formatting and sending <spanx style="verb">message_3</spanx></name>

<t>On reception of the second message, the Initiator, using <spanx style="verb">kemp.ct_eph</spanx>, can compute the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>. As the Responder did, he computes <spanx style="verb">TH_2</spanx>, <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">KEYSTREAM_2</spanx>. He can now decipher and retrieve : <spanx style="verb">PLAINTEXT_2 = CIPHERTEXT_2 XOR KEYSTREAM_2</spanx>.</t>

<t>Thanks to <spanx style="verb">ID_CRED_R</spanx>, the Initiator obtains the long-term KEM public key of the Responder, <spanx style="verb">kem.pk_R</spanx>. He then uses the <spanx style="verb">KEM.Encapsulation</spanx> algorithm to generate <spanx style="verb">ss_R</spanx> and <spanx style="verb">kem.ct_R</spanx>.</t>

<t>He then computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">SALT_3e2m = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx>;</t>
  <t><spanx style="verb">TH_3 = H(TH_2, PLAINTEXT_2, ID_CRED_R)</spanx>;</t>
  <t><spanx style="verb">K_3 = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_3 = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length)</spanx>.</t>
</list></t>

<t>Then, in order to authenticate, he then forms <spanx style="verb">PLAINTEXT_3 = (ID_CRED_I, TH_3, EAD_3)</spanx> and signs it:</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_3 = DS.Sign(sign.sk_I, (PLAINTEXT_3, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_I</spanx> is the long-term signing private key of the Initiator. Finally he sets <spanx style="verb">PLAINTEXT_3A = (PLAINTEXT_3, SIGNATURE_3)</spanx> and ciphers it with the AEAD encryption algorithm negociated in <spanx style="verb">SUITES_I</spanx>, as <spanx style="verb">CIPHERTEXT_3</spanx>.</t>

<t>The third message is then composed of:</t>

<t><list style="symbols">
  <t><spanx style="verb">kem.ct_R</spanx>;</t>
  <t><spanx style="verb">CIPHERTEXT_3</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message3-formatting-and-sending-message4-1"><name>Processing <spanx style="verb">message_3</spanx>, formatting and sending <spanx style="verb">message_4</spanx></name>

<t>On reception of <spanx style="verb">message_3</spanx>, the Responder computes <spanx style="verb">TH_3</spanx>. He also used the <spanx style="verb">KEM.Decapsulation</spanx> algorithm with its long-term KEM private key <spanx style="verb">kem.sk_R</spanx> and the KEM ciphertext <spanx style="verb">kem.ct_R</spanx>, to obtain the shared-secret <spanx style="verb">ss_R</spanx>.</t>

<t>He can now compute <spanx style="verb">SALT_3e2m</spanx>, <spanx style="verb">PRK_3e2m</spanx>, <spanx style="verb">K_3</spanx>, and <spanx style="verb">IV_3</spanx> as the Initiator did, and deciphers <spanx style="verb">CIPHERTEXT_3</spanx> with the AEAD decryption algorithm.
With <spanx style="verb">PLAINTEXT_3A</spanx>, he obtains <spanx style="verb">kem.pk_I</spanx> and <spanx style="verb">sign.pk_I</spanx>, and verifies the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_I, (PLAINTEXT_3, sign_length), SIGNATURE_3)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator is properly authenticated to the Initiator. Otherwise the Responder aborts.</t>

<t>He then uses the <spanx style="verb">KEM.Encapsulation</spanx> algorithm to generate <spanx style="verb">ss_I</spanx> and <spanx style="verb">kem.ct_I</spanx>.</t>

<t>Following that, he computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3A, ID_CRED_I)</spanx>;</t>
  <t><spanx style="verb">SALT_4e3m = EDHOC_KDF(PRK_3e2m, 5, TH_4, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx>;</t>
  <t><spanx style="verb">K_4 = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_4 = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length)</spanx>.</t>
</list></t>

<t>The Responder now needs to authenticate. For that, he computes a MAC <spanx style="verb">MAC_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">MAC_2 = EDHOC_KDF(PRK_4e3m, 2, C_R, ID_CRED_R, TH_4, EAD_4, mac_length_2)</spanx>.</t>
</list></t>

<t>Using the AEAD encryption algorithm, he ciphers <spanx style="verb">PLAINTEXT_4 = (EAD_4, MAC_2)</spanx> and sends it to the Initiator, along with <spanx style="verb">kem.ct_I</spanx>.
He then finishes the AKE by computing the final key <spanx style="verb">PRK_out</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_out = EDHOC_KDF(PRK_4e3m, 7, TH_4, hash_length)</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message4-1"><name>Processing <spanx style="verb">message_4</spanx></name>

<t>In this situation the fourth message is mandatory. It is used to send the KEM ciphertext <spanx style="verb">kem.ct_I</spanx> to the Initiator (it cannot be shared before, since the Responder only learns the identity of the Initiator with the third message).</t>

<t>When receiving this last message, the Initiator computes the shared-secret <spanx style="verb">ss_I</spanx> thanks to the <spanx style="verb">KEM.Decapsulation</spanx> algorithm, and elements <spanx style="verb">kem.sk_I</spanx>, <spanx style="verb">kem.ct_I</spanx>.
After that, he can compute <spanx style="verb">TH_4</spanx>, <spanx style="verb">K_4</spanx>, <spanx style="verb">IV_4</spanx>, and decipher <spanx style="verb">CIPHERTEXT_4</spanx> thanks to the AEAD decryption algorithm. Once he had checked the well formedness of <spanx style="verb">PLAINTEXT_4</spanx>, he can authenticate the Responder by computing <spanx style="verb">MAC_2</spanx> on its own and comparing with the one he finds in <spanx style="verb">PLAINTEXT_4</spanx>. If everything goes well, he finally computes <spanx style="verb">PRK_out</spanx> as the Responder did.</t>

</section>
</section>
<section anchor="associated-key-derivation-schedule-2"><name>Associated key derivation schedule</name>

<t>In this section we present the key derivation schedule of the previously described protocol version.</t>

<figure><artwork><![CDATA[
          +--------------------------------+
          |TH_2=H(kem.ct_eph, H(message_1))|
          +------+----------------------+--+              PLAINTEXT_2
                 |                      |                        |
  +------+   +---+---+   +------+   +---+--+   +-----------+   +-+-+
  |ss_eph|-->|Extract|-->|PRK_2e|-->|Expand|-->|KEYSTREAM_2|-->|XOR|
  +------+   +-------+   +---+--+   +---+--+   +-----------+   +-+-+
                             |                                   |
                             |                                   v
                             |                         +---------+--+
                             |                         |CIPHERTEXT_2|
                             |                         +------------+
           +---------+   +---+--+
           |SALT_3e2m|<--|Expand|
           +---+-----+   +---+--+
               |               +------------------------------------+
               |               |TH_3=H(TH_2, PLAINTEXT_2, ID_CRED_R)|
               |               +-------+----------------------------+
               |                       |
               |                       |                 PLAINTEXT_3A
               |                       |                       |
  +----+   +---+---+   +--------+   +--+---+   +--------+   +--+-+
  |ss_R|-->|Extract|-->|PRK_3e2m|-->|Expand|-->|K_3/IV_3|-->|AEAD|
  +----+   +-------+   +---+----+   +---+--+   +--------+   +--+-+
                             |                                 |
                             |                                 v
                             |                         +-------+----+
                             |                         |CIPHERTEXT_3|
                             |                         +-------+----+
                             |
           +---------+   +---+--+
           |SALT_4e3m|<--|Expand|
           +---+-----+   +---+--+
               |
  +----+   +---+---+   +--------+   +------+   +-----+
  |ss_I|-->|Extract|-->|PRK_4e3m|-->|Expand|-->|MAC_2|
  +----+   +-------+   +---+----+   +------+   +-----+
                           |
                           |                              PLAINTEXT_4
                           |                                   |
                           |        +------+   +--------+   +--+-+
                           +--------|Expand|-->|K_4/IV_4|-->|AEAD|
                           |        +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_4|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_4=H(TH_3, PLAINTEXT_3, ID_CRED_I)|
                           |   +--------+---------------------------+
                           |            |
                           |        +---+--+   +-------+
                           +--------|Expand|-->|PRK_out|
                                    +------+   +-------+
]]></artwork></figure>
<t>Figure 8: PQ-EDHOC, I KEM &amp; Signs - R KEM key derivation schedule.</t>

<t>As above, we summarize the different computations:</t>

<figure><artwork><![CDATA[
  PRK_2e      = EDHOC_Extract(TH_2, ss_eph);
  KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length);
  SALT_3e2m   = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length);
  PRK_3e2m    = EDHOC_Extract(SALT_3e2m, ss_R);
  K_3         = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length);
  IV_3        = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length);
  SALT_4e3m   = EDHOC_KDF(PRK_3e2m, 5, TH_4, hash_length);
  PRK_4e3m    = EDHOC_Extract(SALT_4e3m, ss_I);
  K_4         = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length);
  IV_4        = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length);
  MAC_2       = EDHOC_KDF(PRK_4e3m, 2, context_2, mac_length_2)
                (with context_2 = C_R, ID_CRED_R, TH_4, EAD_4);
  PRK_out     = EDHOC_KDF(PRK_4e3m, 7, TH_4, hash_length).
]]></artwork></figure>

</section>
<section anchor="additional-explanations-3"><name>Additional explanations</name>

<t>We detail here the main elements that differ from the original EDHOC protocol.</t>

<section anchor="ephemeral-kem-3"><name>Ephemeral KEM</name>

<t>As previously explain the usual ephemeral Diffie-Hellman elements are replaced by an ephemeral KEM. In this protocol, it works exactly as we previously described.</t>

</section>
<section anchor="authentication-keys-3"><name>Authentication keys</name>

<t>For the Initiator, the authentication key <bcp14>MUST</bcp14> be: (1) a static KEM key pair <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter) <strong>and</strong> (2) a static signing key pair <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

<t>For the Responder, the authentication key <bcp14>MUST</bcp14> be a static KEM key pair <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

</section>
<section anchor="key-derivation-3"><name>Key derivation</name>

<t>In this version of the protocol, the keys <spanx style="verb">PRK_2e</spanx>, <spanx style="verb">PRK_3e2m</spanx> and <spanx style="verb">PRK_4e3m</spanx> are obtain thanks to EDHOC_Extract fonction:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">TH_2</spanx> and the IKM <bcp14>SHALL</bcp14> be the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_3e2m</spanx> directly derived from <spanx style="verb">PRK_2e</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_R</spanx>.</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_4e3m</spanx> directly derived from <spanx style="verb">PRK_3e2m</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_I</spanx>.</t>
</list></t>

<t>Concerning <spanx style="verb">PRK_out</spanx>, here again, there is no modifications compared to the original EDHOC protocol.</t>

</section>
</section>
<section anchor="analysis-3"><name>Analysis</name>

<t>This variant combines our PQ-EDHOC I KEM &amp; Signs - R Signs protocol with the version where the Initiator and Responder authenticate using a KEM, as presented in <xref target="I-D.pocero-authkem-edhoc"/>.
The advantage of this alternative is that it preserves Responder authentication via a KEM and simply asks the Initiator to sign its identity. Additionally, there is no longer need to calculate the MAC <spanx style="verb">MAC_3</spanx>.
In this variant, we assumed that the Initiator has a pair of static signature keys <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> and also a pair of static KEM keys <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx>, and that the Responder has only a pair of static KEM keys <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx>. As already explain, this is not an unusual case.
From a technical point of view, messages <spanx style="verb">message_1</spanx>,<spanx style="verb">message_2</spanx> and <spanx style="verb">message_4</spanx> do not differ from those proposed in <xref target="I-D.pocero-authkem-edhoc"/>. Again, two major differences are worth noting regarding the messages.
Firstly, here we no more have a fifth mandatory message <spanx style="verb">message_5</spanx>. Secondly, our third message <spanx style="verb">message_3</spanx> contains an additional signature <spanx style="verb">SIGNATURE_3</spanx> in <spanx style="verb">PLAINTEXT_3A</spanx>(befoire ciphering) (as this was the case for protocols that we have proposed above, with <spanx style="verb">SIGNATURE_2</spanx> or <spanx style="verb">SIGNATURE_3</spanx>) (we will propose a byte analysis of this message later).
Finally, from a computational point of view, both the Initiator and the Responder no longer need to calculate the MAC <spanx style="verb">MAC_3</spanx>. In return, here again, the Initiator must sign a message, and the Responder must verify this signature, in order to authenticate the Initiator, and send him the KEM ciphertext <spanx style="verb">kem.ct_I</spanx>.
Regarding the Key Derivation Schedule, aside from the IKM which adapts to post-quantum cryptographic material, we remain close to the one of EDHOC's method 3.
So compared to <xref target="I-D.pocero-authkem-edhoc"/>, we reduce the number of mandatory messages, from 5 to 4, and again we obtain a tradeoff between the size of messages, calculation capabilities, and the number of messages.</t>

</section>
</section>
<section anchor="third-case-initiator-and-responder-kem-and-sign-version-2"><name>Third case: Initiator and Responder KEM and sign - version 2</name>

<t>We now present the second variant of the equivalent of EDHOC method 3. In this situation both the Initiator and the Responder authenticate with a KEM and a signature, which makes this protocol a hybrid of two of the protocols we presented previously.</t>

<section anchor="protocol-overview-3"><name>Protocol overview</name>

<figure><artwork><![CDATA[
  I                                                                R
 ---                                                              ---
  |            METHOD, SUITES_I, kem.pk_eph, C_I, EAD_1            |
  +---------------------------------------------------------------->
  |                            message_1                           |
  |                                                                |
  |kem.ct_eph, Enc(KEYSTREAM_2, C_R, ID_CRED_R, EAD_2, SIGNATURE_2)|
  <----------------------------------------------------------------+
  |                            message_2                           |
  |                                                                |
  |          kem.ct_R, AEAD(ID_CRED_I, EAD_3, SIGNATURE_3)         |
  +---------------------------------------------------------------->
  |                            message_3                           |
  |                                                                |
  |                      kem.ct_I, AEAD(EAD_4)                     |
  <----------------------------------------------------------------+
  |                            message_4                           |
]]></artwork></figure>

<t>Figure 9: PQ-EDHOC, I KEM &amp; Signs - R KEM &amp; Signs message flow.</t>

</section>
<section anchor="protocol-description-3"><name>Protocol description</name>

<section anchor="formatting-and-sending-message1-4"><name>Formatting and sending <spanx style="verb">message_1</spanx></name>

<t>As for our previous protocol version, the first message (<spanx style="verb">message_1</spanx>) consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">METHOD</spanx> --&gt; as specified in <xref target="RFC9528"/> it is an integer specifying the authentication method the Initiator wants to use;</t>
  <t><spanx style="verb">SUITES_I</spanx> --&gt; it consists of an ordered set of algorithms supported by the Initiator and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">C_I</spanx> (and also as <spanx style="verb">C_R</spanx>, which will appears later) --&gt; the Connection Identifiers chosen by the Initiator (<spanx style="verb">C_I</spanx>) and by the Responder (<spanx style="verb">C_R</spanx>) as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">EAD_1</spanx> (and also <spanx style="verb">EAD_2</spanx>, <spanx style="verb">EAD_3</spanx> and <spanx style="verb">EAD_4</spanx>, which will appear later) -&gt; External Authorization Data, respectively included in <spanx style="verb">message_1</spanx>, <spanx style="verb">message_2</spanx>, <spanx style="verb">message_3</spanx> (and optionally) <spanx style="verb">message_4</spanx>, and formatted as specified in <xref target="RFC9528"/>;</t>
  <t><spanx style="verb">kem.pk_eph</spanx> --&gt; the Ephemeral KEM public key generated by the Initiator.</t>
</list></t>

</section>
<section anchor="processing-message1-formatting-and-sending-message2-4"><name>Processing <spanx style="verb">message_1</spanx>, formatting and sending <spanx style="verb">message_2</spanx></name>

<t>On the reception of the first message, the Responder proceeds as in the original EDHOC protocol with elements <spanx style="verb">METHOD</spanx>, <spanx style="verb">SUITES_I</spanx>, <spanx style="verb">C_I</spanx> and <spanx style="verb">EAD_1</spanx>.
In a second step, using <spanx style="verb">kem.pk_eph</spanx> and the <spanx style="verb">KEM.Encapsulation</spanx> algorithm, he computes the ephemeral ciphertext <spanx style="verb">kem.ct_eph</spanx> and the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>.</t>

<t>The Responder selects its Connection Identifier <spanx style="verb">C_R</spanx> as specified in <xref target="RFC9528"/>. He then computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_2 = H(kem.ct_eph, H(message_1))</spanx>;</t>
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx>;</t>
  <t><spanx style="verb">KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length)</spanx>.</t>
</list></t>

<t>In this version, the Responder authenticates with <spanx style="verb">message_2</spanx> thanks to a signature. So he assembles <spanx style="verb">PLAINTEXT_2</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PLAINTEXT_2 = (C_R, ID_CRED_R, TH_2, EAD_2)</spanx></t>
</list></t>

<t>then signs this message :</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_2 = DS.Sign(sign.sk_R, (PLAINTEXT_2, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_R</spanx> is the long-term signing private key of the Responder. And finally he ciphers <spanx style="verb">PLAINTEXT_2A = (PLAINTEXT_2, SIGNATURE_2)</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">CIPHERTEXT_2 = PLAINTEXT_2A XOR KEYSTREAM_2</spanx></t>
</list></t>

<t>So the second message then consists of:</t>

<t><list style="symbols">
  <t><spanx style="verb">kem.ct_eph</spanx> --&gt; the ephemeral ciphertext obtained with <spanx style="verb">kem.pk_eph</spanx>;</t>
  <t><spanx style="verb">CIPHERTEXT_2</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message2-formatting-and-sending-message3-4"><name>Processing <spanx style="verb">message_2</spanx>, formatting and sending <spanx style="verb">message_3</spanx></name>
<t>On reception of the second message, the Initiator, using <spanx style="verb">kemp.ct_eph</spanx>, can compute the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>. As the Responder did, he computes <spanx style="verb">TH_2</spanx>, <spanx style="verb">PRK_2e</spanx> and <spanx style="verb">KEYSTREAM_2</spanx>. He can now decipher and retrieve : <spanx style="verb">PLAINTEXT_2A = CIPHERTEXT_2 XOR KEYSTREAM_2</spanx>.</t>

<t>Thanks to <spanx style="verb">ID_CRED_R</spanx>, the Initiator obtains the long-term public keys of the Responder, <spanx style="verb">kemp.pk_R</spanx> and <spanx style="verb">sign.pk_R</spanx>.
At first, he checks the validity of the signature of the Responder:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_R, (PLAINTEXT_2, sign_length), SIGNATURE_2)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator properly authenticated the Responder. Otherwise he aborts.</t>

<t>Using the KEM encapsulation algorithm <spanx style="verb">KEM.Encapsulation</spanx>, and the long-term input material <spanx style="verb">kem.pk_R</spanx> of the Responder, the Initiator generated the pair <spanx style="verb">(ss_R, kem.ct_R)</spanx>.</t>

<t>The shared-secret <spanx style="verb">ss_R</spanx> will then serve as IKM for the computation of <spanx style="verb">PRK_3e2m</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">SALT_3e2m = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx>.</t>
</list></t>

<t>It is now the turn of the Initiator to authenticate himself. To do so, he computes the following elements:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_3 = H(TH_2, PLAINTEXT_2A, ID_CRED_R)</spanx>;</t>
  <t><spanx style="verb">K_3 = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_3 = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length)</spanx>;</t>
</list></t>

<t>assembles <spanx style="verb">PLAINTEXT_3 = (ID_CRED_I, TH_3, EAD_3)</spanx>, and signs <spanx style="verb">PLAINTEXT_3</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">SIGNATURE_3 = DS.Sign(sign.sk_I, (PLAINTEXT_3, sign_length))</spanx></t>
</list></t>

<t>where <spanx style="verb">sign.sk_I</spanx> is the long-term signing private key of the Initiator. Then, with the AEAD encryption algorithm negociated in <spanx style="verb">SUITES_I</spanx>, he ciphers <spanx style="verb">PLAINTEXT_3A = (PLAINTEXT_3,SIGNATURE_3)</spanx> as <spanx style="verb">CIPHERTEXT_3</spanx>.</t>

<t>The third message is then composed of:</t>

<t><list style="symbols">
  <t><spanx style="verb">kem.ct_R</spanx>;</t>
  <t><spanx style="verb">CIPHERTEXT_3</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message3-formatting-and-sending-message4-2"><name>Processing <spanx style="verb">message_3</spanx>, formatting and sending <spanx style="verb">message_4</spanx></name>

<t>On reception of <spanx style="verb">message_3</spanx>, the Responder computes <spanx style="verb">TH_3</spanx>, <spanx style="verb">K_3</spanx> and <spanx style="verb">IV_3</spanx>, and deciphers <spanx style="verb">CIPHERTEXT_3</spanx> with the AEAD decryption algorithm.
With <spanx style="verb">PLAINTEXT_3A</spanx>, he obtains the Initiator's long-term public keys <spanx style="verb">kem.pk_I</spanx> and <spanx style="verb">sign.pk_I</spanx>, and so he verifies the signature:</t>

<t><list style="symbols">
  <t><spanx style="verb">DS.Verify(sign.pk_I, (PLAINTEXT_3, sign_length), SIGNATURE_3)</spanx>.</t>
</list></t>

<t>If the verification algorithm returns 1, the Initiator is properly authenticated to the Initiator. Otherwise the Responder aborts.
He then uses the <spanx style="verb">KEM.Encapsulation</spanx> algorithm to generate <spanx style="verb">ss_I</spanx> and <spanx style="verb">kem.ct_I</spanx>.</t>

<t>Following that, he computes:</t>

<t><list style="symbols">
  <t><spanx style="verb">TH_4 = H(TH_3, PLAINTEXT_3A, ID_CRED_I)</spanx>;</t>
  <t><spanx style="verb">SALT_4e3m = EDHOC_KDF(PRK_3e2m, 5, TH_4, hash_length)</spanx>;</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx>;</t>
  <t><spanx style="verb">K_4 = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length)</spanx>;</t>
  <t><spanx style="verb">IV_4 = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length)</spanx>.</t>
</list></t>

<t>Using the AEAD encryption algorithm, he ciphers <spanx style="verb">PLAINTEXT_4 = EAD_4</spanx> and sends it to the Initiator, along with <spanx style="verb">kem.ct_I</spanx>.
He then finishes the AKE by computing the final key <spanx style="verb">PRK_out</spanx>:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_out = EDHOC_KDF(PRK_3e2m, 7, TH_4, hash_length)</spanx>.</t>
</list></t>

</section>
<section anchor="processing-message4-2"><name>Processing <spanx style="verb">message_4</spanx></name>

<t>In this situation the fourth message is mandatory. It is used to send the KEM ciphertext <spanx style="verb">kem.ct_I</spanx> to the Initiator (it cannot be shared before, since the Responder only learns the identity of the Initiator with the third message).</t>

<t>When receiving this last message, the Initiator computes the shared-secret <spanx style="verb">ss_I</spanx> thanks to the <spanx style="verb">KEM.Decapsulation</spanx> algorithm, and elements <spanx style="verb">kem.sk_I</spanx>, <spanx style="verb">kem.ct_I</spanx>.
After that, he can compute <spanx style="verb">TH_4</spanx>, <spanx style="verb">K_4</spanx>, <spanx style="verb">IV_4</spanx>, and decipher <spanx style="verb">CIPHERTEXT_4</spanx> thanks to the AEAD decryption algorithm. Once he had checked the well formedness of <spanx style="verb">PLAINTEXT_4</spanx>, he can finally compute <spanx style="verb">PRK_out</spanx> as the Responder did.</t>

</section>
</section>
<section anchor="associated-key-derivation-schedule-3"><name>Associated key derivation schedule</name>

<t>In this section we present the key derivation schedule of the previously described protocol version.</t>

<figure><artwork><![CDATA[
          +--------------------------------+
          |TH_2=H(kem.ct_eph, H(message_1))|
          +------+----------------------+--+             PLAINTEXT_2A
                 |                      |                        |
  +------+   +---+---+   +------+   +---+--+   +-----------+   +-+-+
  |ss_eph|-->|Extract|-->|PRK_2e|-->|Expand|-->|KEYSTREAM_2|-->|XOR|
  +------+   +-------+   +---+--+   +---+--+   +-----------+   +-+-+
                             |                                   |
                             |                                   v
                             |                         +---------+--+
                             |                         |CIPHERTEXT_2|
                             |                         +---------+--+
                             |
           +---------+   +---+--+
           |SALT_3e2m|<--|Expand|
           +---+-----+   +---+--+
               |               +------------------------------------+
               |               |TH_3=H(TH_2, PLAINTEXT_2, ID_CRED_R)|
               |               +-------+----------------------------+
               |                       |
               |                       |                 PLAINTEXT_3A
               |                       |                       |
  +----+   +---+---+   +--------+   +--+---+   +--------+   +--+-+
  |ss_R|-->|Extract|-->|PRK_3e2m|-->|Expand|-->|K_3/IV_3|-->|AEAD|
  +----+   +-------+   +---+----+   +---+--+   +--------+   +--+-+
                             |                                 |
                             |                                 v
                             |                         +-------+----+
                             |                         |CIPHERTEXT_3|
                             |                         +-------+----+
                             |
           +---------+   +---+--+
           |SALT_4e3m|<--|Expand|
           +---+-----+   +---+--+                         PLAINTEXT_4
               |                                               |
  +----+   +---+---+   +--------+   +------+   +--------+   +--+-+
  |ss_I|-->|Extract|-->|PRK_4e3m|-->|Expand|-->|K_4/IV_4|-->|AEAD|
  +----+   +-------+   +---+----+   +---+--+   +--------+   +--+-+
                           |            |                      |
                           |            |                      v
                           |            |              +-------+----+
                           |            |              |CIPHERTEXT_4|
                           |            |              +------------+
                           |            |
                           |   +--------+---------------------------+
                           |   |TH_4=H(TH_3, PLAINTEXT_3, ID_CRED_I)|
                           |   +--------+---------------------------+
                           |            |
                           |        +---+--+   +-------+
                           +--------|Expand|-->|PRK_out|
                                    +------+   +-------+
]]></artwork></figure>
<t>Figure 8: PQ-EDHOC, I KEM &amp; Signs - R KEM &amp; Sings key derivation schedule.</t>

<t>Here, we summarize the different computations:</t>

<figure><artwork><![CDATA[
  PRK_2e      = EDHOC_Extract(TH_2, ss_eph);
  KEYSTREAM_2 = EDHOC_KDF(PRK_2e, 0, TH_2, plaintext_length);
  SALT_3e2m   = EDHOC_KDF(PRK_2e, 1, TH_2, hash_length);
  PRK_3e2m    = EDHOC_Extract(SALT_3e2m, ss_R);
  K_3         = EDHOC_KDF(PRK_3e2m, 3, TH_3, key_length);
  IV_3        = EDHOC_KDF(PRK_3e2m, 4, TH_3, iv_length);
  SALT_4e3m   = EDHOC_KDF(PRK_3e2m, 5, TH_4, hash_length);
  PRK_4e3m    = EDHOC_Extract(SALT_4e3m, ss_I);
  K_4         = EDHOC_KDF(PRK_4e3m, 8, TH_4, key_length);
  IV_4        = EDHOC_KDF(PRK_4e3m, 9, TH_4, iv_length);
  PRK_out     = EDHOC_KDF(PRK_4e3m, 7, TH_4, hash_length).
]]></artwork></figure>

</section>
<section anchor="additional-explanations-4"><name>Additional explanations</name>

<t>We detail here the main elements that differ from the original EDHOC protocol.</t>

<section anchor="ephemeral-kem-4"><name>Ephemeral KEM</name>

<t>As previously explain the usual ephemeral Diffie-Hellman elements are replaced by an ephemeral KEM. In this protocol, it works exactly as we previously described.</t>

</section>
<section anchor="authentication-keys-4"><name>Authentication keys</name>

<t>For the Initiator, the authentication key <bcp14>MUST</bcp14> be: (1) a static KEM key pair <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter) <strong>and</strong> (2) a static signing key pair <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

<t>For the Responder, the authentication key <bcp14>MUST</bcp14> be: (1) a static KEM key pair <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx> generated using a <spanx style="verb">KEM.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter) <strong>and</strong> (2) a static signing key pair <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> generated using a <spanx style="verb">DS.KeyGen(k)</spanx> algorithm (where <spanx style="verb">k</spanx> is a security parameter).</t>

</section>
<section anchor="key-derivation-4"><name>Key derivation</name>

<t>In this version of the protocol, the keys <spanx style="verb">PRK_2e</spanx>, <spanx style="verb">PRK_3e2m</spanx> and <spanx style="verb">PRK_4e3m</spanx> are obtain thanks to EDHOC_Extract fonction:</t>

<t><list style="symbols">
  <t><spanx style="verb">PRK_2e = EDHOC_Extract(TH_2, ss_eph)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">TH_2</spanx> and the IKM <bcp14>SHALL</bcp14> be the ephemeral shared-secret <spanx style="verb">ss_eph</spanx>;</t>
  <t><spanx style="verb">PRK_3e2m = EDHOC_Extract(SALT_3e2m, ss_R)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_3e2m</spanx> directly derived from <spanx style="verb">PRK_2e</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_R</spanx>.</t>
  <t><spanx style="verb">PRK_4e3m = EDHOC_Extract(SALT_4e3m, ss_I)</spanx> --&gt; the salt <bcp14>SHALL</bcp14> be <spanx style="verb">SALT_4e3m</spanx> directly derived from <spanx style="verb">PRK_3e2m</spanx>, and the IKM <bcp14>SHALL</bcp14> be the 'static' shared-secret <spanx style="verb">ss_I</spanx>.</t>
</list></t>

<t>Concerning <spanx style="verb">PRK_out</spanx>, here again, there is no modifications compared to the original EDHOC protocol.</t>

</section>
</section>
<section anchor="analysis-4"><name>Analysis</name>

<t>We conclude all these descriptions, with a last one variant which combines our PQ-EDHOC I KEM &amp; Signs - R Signs protocol with our PQ-EDHOC I Signs - R KEM &amp; Signs protocol. In this situation, both the Initiator and the Responder will authenticate using a signature, and there will be no longer MACs <spanx style="verb">MAC_2</spanx> and <spanx style="verb">MAC_3</spanx> to compute.
In this variant, we assumed that the Initiator has a pair of static signature keys <spanx style="verb">(sign.sk_I, sign.pk_I)</spanx> and also a pair of static KEM keys <spanx style="verb">(kem.sk_I, kem.pk_I)</spanx>, and that the Responder has a pair of static signature keys <spanx style="verb">(sign.sk_R, sign.pk_R)</spanx> and also a pair of static KEM keys <spanx style="verb">(kem.sk_R, kem.pk_R)</spanx>. As already explain, this is not an unusual case.
From a technical point of view, only message <spanx style="verb">message_1</spanx> remains unchanged as the one proposed in <xref target="I-D.pocero-authkem-edhoc"/>. Here, four major differences are worth noting regarding the messages.
Firstly, here we no more have a fifth mandatory message <spanx style="verb">message_5</spanx>. Secondly, our second and third messages <spanx style="verb">message_2</spanx> and <spanx style="verb">message_3</spanx> contain each an additional signature <spanx style="verb">SIGNATURE_2</spanx> and <spanx style="verb">SIGNATURE_3</spanx> respectively in <spanx style="verb">PLAINTEXT_2A</spanx> and in <spanx style="verb">PLAINTEXT_3A</spanx>. Moreover, the plaintext <spanx style="verb">PLAINTEXT_4</spanx> no longer includes <spanx style="verb">MAC_2</spanx>, which implies that the ciphertext <spanx style="verb">CIPHERTEXT_4</spanx> is lighter, and so is our fourth message <spanx style="verb">message_4</spanx> (we will propose a byte analysis of these messages later).
Finally, from a computational point of view, both the Initiator and the Responder no longer need to calculate the MACs <spanx style="verb">MAC_2</spanx> and <spanx style="verb">MAC_3</spanx>. In return, both the Initiator and the Responder must sign a message and verify signature, in order to authenticate themselves.
This allows the Initiator to authenticate the Responder directly when he receives the second message, and vice versa for the Responder when he receives the third message. That is why we no longer need <spanx style="verb">MAC_2</spanx> and <spanx style="verb">MAC_3</spanx> in the fourth and fifth messages.
Regarding the Key Derivation Schedule, aside from the IKM which adapts to post-quantum cryptographic material, we remain close to the one of EDHOC's method 3.
So compared to <xref target="I-D.pocero-authkem-edhoc"/>, we reduce the number of mandatory messages, from 5 to 4, and again we obtain a tradeoff between the size of messages, calculation capabilities, and the number of messages.</t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>We propose here a global security analysis of our five proposals (if necessary, we number the protocols from 1 to 5 according to their order of appearance in the document).
At the end of each handshake, both endpoints:</t>

<t><list style="symbols">
  <t>securely compute the session key <spanx style="verb">PRK_out</spanx>;</t>
  <t>securely authenticate their partner.</t>
</list></t>

<t>For the first protocol, the Responder authenticates through the MAC in <spanx style="verb">message_2</spanx>, while the Initiator authenticates through the signature produced in <spanx style="verb">message_3</spanx>. This approach is similar to that of EDHOC <xref target="RFC9528"/> in method 1.</t>

<t>For the second protocol, the Responder's authentication is guaranteed by its signature in <spanx style="verb">message_2</spanx>, while the Initiator authenticates through its signature in <spanx style="verb">message_3</spanx>. Note that in this protocol variant, the Responder's signature is securely ciphered in the second message.</t>

<t>The third protocol is essentially a mirrored version of the second protocol, and the authentication methods of the Initiator and the Responder are switched.</t>

<t>For the fourth protocol, this authentication is ensured by the Responder's MAC, sent in <spanx style="verb">message_4</spanx>, and the Initiator's signature, sent encrypted in <spanx style="verb">message_3</spanx>.</t>

<t>Finally, for the fifth protocol, authentication is guaranteed by the Initiator's and Responder's signatures, both sent encrypted in the third and second message respectively.</t>

<t>Our hybrid approaches (combining KEM and signature for authentication) follow the structure of the Key Derivation Schedule in EDHOC <xref target="RFC9528"/>. The use of a 'static' shared-secret in key derivation strengthens the security of the key between two non-compromised parties (e.g., if the ephemeral KEM key of the session is compromised), and to some extent also strengthens forward-security and authentication (e.g., if a long-term signature secret key is compromised).</t>

<section anchor="forward-secrecy"><name>Forward Secrecy</name>

<t>A forward-secrecy attacker could compromise the long-term signature key <spanx style="verb">sign.sk</spanx> and/or the static KEM secret key <spanx style="verb">kem.sk</spanx> for one of the endpoints, after that particular endpoint has completed a protocol session. The attacker's goal is to compromise the session key <spanx style="verb">PRK_out</spanx>.</t>

<t>First note that compromising long-term signature keys does not compromise the security of past sessions.</t>

<t>If the static KEM secret key of the Initiator <spanx style="verb">kem.sk_I</spanx> or of the Responder <spanx style="verb">kem.sk_R</spanx> (depending on the use case and protocol) is compromised, the attacker can retrieve the shared secrets <spanx style="verb">ss_I</spanx> or <spanx style="verb">ss_R</spanx>. However, this knowledge is insufficient to learn <spanx style="verb">PRK_out</spanx>. This is because, as in the case of EDHOC <xref target="RFC9528"/> (and similarly to the recent proposals <xref target="I-D.pocero-authkem-edhoc"/> and <xref target="I-D.pocero-authkem-ikr-edhoc"/>), <spanx style="verb">PRK_out</spanx> is derived from all shared secrets of the session, including the ephemeral KEM secret <spanx style="verb">ss_eph</spanx>. As a result, to recompute <spanx style="verb">PRK_out</spanx>, attackers would also need to compromise the ephemeral KEM secret <spanx style="verb">ss_eph</spanx> used in the session. Thus, each of the five protocols achieves Forward Secrecy (FS) provided that the ephemeral KEM secret <spanx style="verb">ss_eph</spanx> remains uncompromised.</t>

</section>
<section anchor="identity-protection"><name>Identity protection</name>

<t>Protocol 1 is relatively close to the one proposed in <xref target="I-D.pocero-authkem-ikr-edhoc"/>.
Concerning the Identity Protection property, in the way it is constructed, protocol 1 guarantees this property against passive attackers for the Responder and active attackers for the Initiator.
Indeed, the same attacks as in EDHOC <xref target="RFC9528"/> by an active attacker allow learning the identity of the Responder.
Moreover, since all information about identities is encrypted from the second message onwards, this ensures Identity Protection against passive/active attackers for Responder/Initiator, provided that long-term keys are not compromised.
However, we want to point out a disputed aspect regarding this property. We think it might be possible to reuse the security game introduced in <xref target="CottierPointcheval23"/>, reused in <xref target="LIEDHOC"/> and adapted in <xref target="EDHOCPSK"/> to prove Identity Protection.
But this security game seems difficult to adapt to the protocol proposed in <xref target="I-D.pocero-authkem-ikr-edhoc"/> due to the encryption present in the first message.
We suggest a more global approach for this property, possibly based on <xref target="PPAKE"/>.</t>

<t>To return to a more classical definition of Identity Protection property, protocols 2 to 5 keep a similar structure as EDHOC, and so inherit of this property. In other words, the identities of the Initiator and the Responder are never sent in plaintext, always encrypted, and only from the second message onwards. Moreover, the various signatures executed by the endpoints are encrypted in the messages and therefore do not appear in clear in the exchange, as this is the case in the original EDHOC protocol.</t>

<t>According to the definition in <xref target="CottierPointcheval23"/>, protocols 2 to 5 verify the Identity Protection property against passive attackers for the Responder and against active attackers for the Initiator.
However, we can still keep our previous proposal in mind and try to prove this property in a more general framework for these protocols as well.</t>

</section>
<section anchor="downgrade-protection"><name>Downgrade Protection</name>

<t>Our protocols protect against downgrade attacks in the same way as EDHOC since the choice of methods and cipher suites is included in the calculation of certain THs and is linked to Connection Identifiers of each session (and then to endpoint identities). As a result, we have the same Downgrade Protection as in EDHOC <xref target="RFC9528"/>.</t>

</section>
<section anchor="transcript-hash-binding"><name>Transcript Hash Binding</name>

<t>In our protocols, transcript hashes are constructed as in <xref target="RFC9528"/>. They contain elements from previous messages as well as endpoint identities. They are also involved in the computation of derived and intermediaries keys (as explained in the Key Derivation Schedules). Thus, like EDHOC, they provide protection against misbinding attacks (since identities are linked to keys and messages via THs) and inter-session replay attacks (since any changes to a message or injected message from another session invalidates subsequent THs). Consequently, at each step of the handshake, the integrity of the process is verified using THs.</t>

</section>
<section anchor="external-authorization-data-ead"><name>External Authorization Data (EAD)</name>

<t>The External Authorization Data (EAD) in our protocols behaves similarly to what is done in EDHOC <xref target="RFC9528"/> and <xref target="I-D.pocero-authkem-edhoc"/>. The first two messages <spanx style="verb">message_1</spanx> and <spanx style="verb">message_2</spanx> carry EAD (partially encrypted), which are not yet authenticated. This makes them potentially vulnerable to replay attacks by an active attacker. The last two messages <spanx style="verb">message_3</spanx> and <spanx style="verb">message_4</spanx> protect the EAD using either MAC or signature, as well as AEAD encryption. Thus, like in EDHOC <xref target="RFC9528"/>, our 5 protocols' EAD data must be treated as untrusted until the handshake is successfully completed.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">




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

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-spm-lake-pqsuites-01"/>
   
</reference>

<reference anchor="I-D.pocero-authkem-edhoc">
   <front>
      <title>KEM-based Authentication for EDHOC</title>
      <author fullname="Lidia Pocero Fraile" initials="L. P." surname="Fraile">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Christos Koulamas" initials="C." surname="Koulamas">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Apostolos P. Fournaris" initials="A. P." surname="Fournaris">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Evangelos Haleplidis" initials="E." surname="Haleplidis">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document specifies extensions to the Ephemeral Diffie-Hellman
   over COSE (EDHOC) protocol to provide resistance against quantum
   computer adversaries by incorporating Post-Quantum Cryptography (PQC)
   mechanisms for both key exchange and authentication.  It defines a
   Key Encapsulation Mechanism (KEM)-based authentication method to
   enable signature-free post-quantum authentication when PQC KEMs, such
   as NIST-standardized ML-KEM, are used.  The document further
   describes scenarios where both parties employ KEM-based
   authentication, as well as cases where authentication methods are
   combined, with one party using KEM-based authentication and the other
   relying on a PQC signature scheme.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-pocero-authkem-edhoc-02"/>
   
</reference>

<reference anchor="I-D.pocero-authkem-ikr-edhoc">
   <front>
      <title>KEM-based Authentication for EDHOC in Initiator-Known Responder (IKR) Scenarios</title>
      <author fullname="Lidia Pocero Fraile" initials="L. P." surname="Fraile">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Christos Koulamas" initials="C." surname="Koulamas">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Apostolos P. Fournaris" initials="A. P." surname="Fournaris">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <author fullname="Evangelos Haleplidis" initials="E." surname="Haleplidis">
         <organization>ISI, R.C. ATHENA</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document specifies a more efficient variant of a Key
   Encapsulation Mechanism (KEM)-based authentication method for the
   Ephemeral Diffie-Hellman Over COSE (EDHOC) lightweight protocol,
   designed for the specific scenario in which the Initiator has prior
   knowledge of the Responder’s credentials, a case commonly found in
   constrained environments.  Improving upon the approach described in
   KEM-based Authentication for EDHOC, this method uses only a mandatory
   three-message handshake to enable signature-free post-quantum
   authentication when PQC KEMs, such as the NIST-standardized ML-KEM,
   are employed, while still providing mutual authentication, forward
   secrecy, and a degree of identity protection.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-pocero-authkem-ikr-edhoc-02"/>
   
</reference>
<reference anchor="RFC5116">
  <front>
    <title>An Interface and Algorithms for Authenticated Encryption</title>
    <author fullname="D. McGrew" initials="D." surname="McGrew"/>
    <date month="January" year="2008"/>
    <abstract>
      <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5116"/>
  <seriesInfo name="DOI" value="10.17487/RFC5116"/>
</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="RFC8742">
  <front>
    <title>Concise Binary Object Representation (CBOR) Sequences</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq". A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
      <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation. This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8742"/>
  <seriesInfo name="DOI" value="10.17487/RFC8742"/>
</reference>
<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <date month="December" year="2020"/>
    <abstract>
      <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
      <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
  <seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>
<reference anchor="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>
<reference anchor="RFC9360">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="February" year="2023"/>
    <abstract>
      <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9360"/>
  <seriesInfo name="DOI" value="10.17487/RFC9360"/>
</reference>
<reference anchor="RFC9528">
  <front>
    <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
    <author fullname="G. Selander" initials="G." surname="Selander"/>
    <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
    <author fullname="F. Palombini" initials="F." surname="Palombini"/>
    <date month="March" year="2024"/>
    <abstract>
      <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9528"/>
  <seriesInfo name="DOI" value="10.17487/RFC9528"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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="RFC9794">
  <front>
    <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
    <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
    <author fullname="M. Parsons" initials="M." surname="Parsons"/>
    <author fullname="B. Hale" initials="B." surname="Hale"/>
    <date month="June" year="2025"/>
    <abstract>
      <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9794"/>
  <seriesInfo name="DOI" value="10.17487/RFC9794"/>
</reference>

<reference anchor="CottierPointcheval23" target="https://doi.org/10.1007/978-3-031-30122-3_1">
  <front>
    <title>Security Analysis of Improved EDHOC Protocol</title>
    <author initials="B." surname="Cottier" fullname="B. Cottier">
      <organization></organization>
    </author>
    <author initials="D." surname="Pointcheval" fullname="D. Pointcheval">
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>
<reference anchor="LIEDHOC" target="https://hal.science/hal-05126079v1">
  <front>
    <title>Fine-grained, privacy-augmenting LI-compliance in the LAKE standard</title>
    <author initials="P." surname="Lafourcade" fullname="P. Lafourcade">
      <organization></organization>
    </author>
    <author initials="E." surname="López-Pérez" fullname="E. López-Pérez">
      <organization></organization>
    </author>
    <author initials="C." surname="Olivier-Anclin" fullname="C. Olivier-Anclin">
      <organization></organization>
    </author>
    <author initials="C." surname="Onete" fullname="C. Onete">
      <organization></organization>
    </author>
    <author initials="C." surname="Papon" fullname="C. Papon">
      <organization></organization>
    </author>
    <author initials="M." surname="Vučinić" fullname="M. Vučinić">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="EDHOCPSK" target="https://ieeexplore.ieee.org/document/11247913">
  <front>
    <title>Pre-Shared Key Authentication With EDHOC - The Security–Performance Tradeoff</title>
    <author initials="E." surname="López-Pérez" fullname="E. López-Pérez">
      <organization></organization>
    </author>
    <author initials="T." surname="Watteyne" fullname="T. Watteyne">
      <organization></organization>
    </author>
    <author initials="R." surname="Marin-Lopez" fullname="R. Marin-Lopez">
      <organization></organization>
    </author>
    <author initials="C." surname="Onete" fullname="C. Onete">
      <organization></organization>
    </author>
    <author initials="C." surname="Papon" fullname="C. Papon">
      <organization></organization>
    </author>
    <author initials="M." surname="Vučinić" fullname="M. Vučinić">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="PPAKE" target="https://eprint.iacr.org/2022/1338">
  <front>
    <title>Privacy-Preserving Authenticated Key Exchange - Stronger Privacy and Generic Constructions</title>
    <author initials="S." surname="Ramacher" fullname="S. Ramacher">
      <organization></organization>
    </author>
    <author initials="D." surname="Slamanig" fullname="D. Slamanig">
      <organization></organization>
    </author>
    <author initials="A." surname="Weninger" fullname="A. Weninger">
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>


    </references>

</references>


<?line 1533?>



  </back>

<!-- ##markdown-source:
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
WZsOB19Y05feyr44M8It1t9qOaBxqyt7v3psdVcfGmkrta7G/N6spUttvPdu
rGrD8HGNPNVIlJaho0oJor4UZIhWsaW3Fd9c/7Z6wq2iqqt/BrdoxdBqfQNV
2kf9sUbize2e7nk7eISLBfoDfY/mvShqnma9eF/7h/PzbRtYqXNWNeCZnxuP
w9U5gxsPpqnOKbay7k47Yb36z9r3oaId/H5NLKV5X1Z9VvelCWHKIl94dyPB
KeobFhpnyfkB+tKcm8ofZ5HzKeoqs3r9Y62u2kFdtbPRVfS5e1218yvWVTu/
X7OE/EB9aT72a95ZwebXdwfUyneNn+y34L/RWS+qnKvtNTlXdanktIV4KRSS
yl3V2uxnZ0dWVm4ne8tXtUNNn5Xb1Bh4uvkeND5t95+D5jvQ36k+qufW7hbj
/bzP64+ptNuLqfvYweLebmma2xT/Nbfjjl/9RjGTyUlDbL5dgk/SVsnKJyt2
TPSQBysf/NoOubhNUs3Z/rhxr6A67KyGbLMOm0cz1ZB3Vj9ZEdDUXIHRmfoH
K6NSfS8HkmJJQ1ulAGsbhVwtQ1Jm+ETkYRQHJsubinSY9BmKGLHoBdMsna/K
vDEBbC8NjNIk6a20jR81hTVxSqWoqz5iE3za77pn/+1dR236tq/gryvc1glp
RzXDbUx4+Zhzz/BJt3cq+jfMOTWquBnkIvy858o4ZZsnzvkJ0KFCVhSDLNvn
HS8jSmOaFdC3jJ/scES8Ku9A1OXbmV1yzjXwNwUq4clemjt332wLrUx7UmLE
qEU3P4MrEumJMnkMOlhak++gsuowJ5XycRRWKbTBVC93pNSYj1LucjulxE+C
BKl8hxWdaUp594X+i0yqXZMUj8KuQDmV7sEqsksnWc2lUcfIZaEwGUIvW63n
Cvvp5KtUhKuRqaiYxIhQPozq09toZTgvalCzAQesZPM/NazIoo6vLxB922tn
P6Jpr6ul98jI7lF1f28jwWYGXnpuT8O9e88fCKZpwnH/SBaFBMvHMJ6WQJqX
4RXrbxlHZzNEKTZX5M2T+0z6lgzjPOCiIUBuTkUyux8HL1/ba01k4bvWNZPo
6vrhZAUZtCbTa8KE0MlS3frOPmDWeVCZPdTHBMIEjFnC2Qdm5yt38GycKDhW
TuvYSThca1BNAUpiF3aKQRVeomHDDSxrujXKVyMWSfE1gSU2gQRb+6Fhmv3g
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
tE9N9SHFPx+oBBH25KuvDsx+KG6G7n71VRDTcQ8BnbdJgWwV59MhHaSsKJuP
rh/GKWy2OfWOzS16mY7ZsBgdGiE8ePQ3dSYf7znpnQg3mo1budmFTnzAIFAc
L/HQQhUrs6FLE9pT5w5tSipdr6TS8K5qKjFjFmXU2ku5un6Sd5oGJTLZNFja
Hhfj8+p6Tc4xCYUX1Jf1WKl+Chqgb0pZNKu+YUlymwJFQymXc6p3AW+9ynFT
KzjDvSE8OtCtK4BeSc2BQVX210ZV7CRx3qbe5DdKBSalPGX+CK0PxNsPSxRJ
yuA9smWqjTWqLHdFPiMbE9ocAguMSQs65F9b8c7YmRvU2fvuJlXxbMkoCp1i
5L9Yp6VJ4aii03OTalHDX0W5qFZrrZdKUcNElev3hH1TA+oWNaBOqvKwjGtL
5tS6Jl55pmKF3HusJ0WmjJaevGU2W1fPteLoElqyObNUqBqr9WfFcoMMXKqs
GrNedbqtY29N7Smb5usX5P1QBbJatQWyzFETq+tjlfaqfmUVsrwKiXVmulRv
yVpqn3E3JbM2JbPupGTWCzoQ5Qw0Dq2BPuvyWetDUDcusIVpuisKbH0+ZbWG
9iDKGgxyZYUtnaqqZ6jiOZtRIC6idCkJZ6LPljUxQJWqXzwGR3/uvchWzQsK
ZZi8GlvDMny2ri5C/YZL0yJba0pbfW5FturvuX0TTYtslT43KrJVvnKTIlu3
64t7+WFhVsoNOEWsfmcrHhTbeFhqo/b9K+o+3bjq3PVqZNk/Ht6gXlZl3adm
tbM2tVTqWtnUfdrUfbqnvmzqPm3qPqnPpu5T0/dt6j5VfD5Y3aedJklUd1n8
ya62fguFnzaFlz6bwkufRN0lJxahSjA5eYbrUXNe7YSK6kkWX2SzFRESk2bn
WPMpZDSEVAGUUlRkU5gGer0btLc6H7U6TfDVV2ASvvoqaG93GtHwyNKwpju3
o+EtauVQ1oOfq2EPbAsJY6N2l3Qwubq6zu6mBM5dlMCZOdF1E0i/XTmcQj2c
1SxxickN4ErQZmYJWYkFPFQJNHjS4XvObWFeqtMcTCnVZrEoSB6kCeFomzZe
ECmEcHHWcrEFpR9kjW4gMLZkKueor5cJK3vcmqAaDOxcOWhTwqkikr/LWKpM
nEUS81IQ34ipp4e8B4jyeJBMs9ACh9uHLw86XY0Uk9RX2jnTyUe8FXKFp5a1
fcgqIsd1DjPtHSwXE9zdgLcv4zCLr3jjyKmmo2rduCj3CvozPm3MzISlXJwu
uOlyoG2C4cv9fus5o5tzMZ4lVIyA0XLQeYQyVWXfO3nFRl78rX03XVqB/X1b
nrpFmtYgZIEQl1iQ4G+0Va3JwcYZLC2MDtrHcWVe6RMNWcNaMNB7rAVDAggi
QXtKzKAJKH+dyw0WoIC4dXZK+8ExZeRhO6kto1G6ExQeOnaUl4ZVRKwHZOff
TVQ9pUQJd7fhNGiPVKUb2giEAXU8VKIq1kE1QwwoMZ0GlZhEUwhHodj9IhuF
uW6yc1coaVTem/MP2EvUPngx84Lgt0gS6JPZRizXpKLbzPlZlDVg0HcNS92E
mGhgnUjU7Cx2VNSGK6C4hSGq69CoegvkpVIFIqOsE1tA4IG04EP0cQndStxm
a6t4EHuNQ7W1Llyk7ThchKMojhDVaYlTrsGi6qQxg5aAlR6O0gVYWmAlZpJE
CZCZtUmWxgrhfz3E5XZjxGUFmrIKe0kyWgRpbmCXN/xsYJflzycLu6RPEXGp
cpzcdKZyI78N2KUuGNddi738sHxybdjlEz9i6MYJMW54r7BLzHhmn5KDE6U0
jQ34cgO+3IAvN+DLDfjy0wdfHjgJlVWIkFJqatcUqTTaXkbziKIP+mbfv69N
nw+9elNmtWHqQ/kp8lVgBgd2aewInfJRRYgKB9GBihbO+9BxxPXo0JVtUm+K
2I17wLw63SxCX3VicCX4tR4tWsLXtVouQpVTl/0AhkFkFMCdpeL6/dZxCkRJ
g2kI/CTeofIqSCyqUbuKdrBlvE1ClRQr6j9onitv82yglo2hlveLtKwHSbiA
SxdgqbrvalWjNbAYMjpplwkbcsJfMsDijuCX15XvzwGV6b/o1jC/pig/1MLX
xvjhQ1UIP9aiiY8JcElFcoLiLVch29ydc98INUfuefkyJV1/V0C9QEVla7Al
g0KBgMKS/1ZIvC6vRVx4lzJiN0Pn3Qnc39G27o7ZvUL/V4II1xuTnVsBDRUu
z4Hl3QcCb8gQPFd5G0o/qHTIjCLn7kg6w+Am8LxaOSqw8s116l2i6Kqwi4U7
cUl8JvJVVPTXi3b5QPVo1y6PvCMUnCMTnKMRMLtCq3SUKM99WA9tGlZB7Whv
fEcMqrHsTyrxSc7GvPektzGPV2iJsxrWx7ddG9bHj308WB9WyE/RhzUlUdQU
6UkH7zqSMzXxw5f7qOrGHiCP/G8f7rYONMajrgaNrXSPCelZPM9DOQnFsyQM
vK8fcP0BXT54/eEdJTIFbYy/hYkq0cu+ccDbm25d98KWTyxCfQCMqXdbKnxg
VKJnuDB/5ifexrdlZyMMshWjKDVeU+XZJesOJvPCHFSM3wRaVJYChVccPhlS
jVwrxc56ogE49KbY0OANUnyGW+DKwVZuKDqTAdfuThA/SHUvrFScmk6auka6
s6YUcFixwNmgDtXzNc2W0FaOK75BHVb0ZMVngzq8SV966/vS5CW3A/roW4ug
o+0C6KjZgG/bl7UvuT2QC1u5PajM68uNgRoenzTnqBJzuZ7mzVu5TjduDnYy
D6yFh95vL9YrnFtrrFvrq/WQq6b6ajVm8M76UkQ4++qgGiWNnvWdo6RLyMOP
iJI+qDTeNOwSSroCebhBSW+Qh79i5OEniyf8ukl20K8OT8g7v/6rCvu/Gj1X
3O0tEN+H2tF+2Ioaw+sghnW7HusAhjUbHwY6SVG06scqI3AapKeeWxuAW4cj
rA/CrcMR1sbh1uEIV4SyNjjCj4sjbITIs2nLNTDCD4rI++RQjb9SHCFK7eeM
I2y2XbESR8gkuA8c4cEHwxH+pLNI9EHVOhEMTwQzycDOmWA14Br/ePWa09Xr
niUAizpSG8m1XcY3GjAfTNOSws5hMI+yLM3K3FvMYFaxYzwQzhzLl9gTJnGw
0VxUIiR9NOONQYweQtJHXd4AIVlQcddBSHq6um+UGWEA1cGIXSZJDW6ytRYl
aA6Ic/Ne3ZwyUiF2O+ouYIFu6cr8jiGC+khCBd6aRtOqwpd2RE9KAMF6ROR1
8IGDIj5wUIMPDFVa4KXahsF5MxXNy9Jhjw3tqj1MF5P4eeINBz7eUEs9cvmF
UJqzCC2sQyAWgIqVCMT6fKXSXrHaSsZU3NU7qJ82qnEb0z0bnwGpGseT46nN
1Yd8O8dEMsFIsrEJ5Wp8CAjlCQltEUGJj1WfSwl+hTZEWwZJ6e5arkBLDjSK
IpIa2831c0EtzK5GWTQJ8yoLR2aZoOxaNlH5XcDiPkxyI5d6xxPvA8OQ5Uq1
6U1zhhXANBPqPRNFMaw6dLkhapPuVtaNFjevUVmpNPsxawfqI/dBE5Ac2fMo
obRjJoCZ6NC1683sA3VMsbHr30qDADcthaP0Qh3kct+o0ttjSnslROkNAKV3
gBNchxJsACa9A4yg08T18aQd08Qt8YHr0IENQKR3S4tg1bmdK1CkH5AvVoBH
75wW+lMFGlWZ32Xs6AfkixWg0UrM6Dero8KEuNggRjeI0Q1idIMYLczvBjG6
QYw6iFEvElxIeS8vAdyE4eISrh8cE1rAREbv/ujPTxL/uAElflqgxIIOrj4B
UuERbwvROPIZQh/OlV/jYKSbnSV4zcKI390V7O/OD/drBv1jRMVHxv/dD/xP
IqboOtg/gsYqRajh9SuhLvcJBTSMXz4JmBr7iBC7zVl+94ck1CpUu372JL2b
H+j3eSEGrZ7/TNF9rJI/T3yf77ij6CS0pCmYjn7AO50FUvrFSlYXG+FuVJcb
2WFbs1MsN3J7AKIfmNogETdIxA0SsYxELG242qnzOLxcX4R9KNrFjLTk6E1P
FoeJLGy7YwFgMDvVNTi0CFlYpNzgIje4yA0uslETnwcusimQ6PrHLa4DCd0M
bVhs5WZow7q+rOzT2r6Y3xvfWPplFdiweSu2G41QVvW/fwZnUW7AhvfSlw8D
Niyx+M2AgdcHAzIKuzFrlt7WjHCliytp/qmf7eh+KoFim7Mdvc8GYdn0fRuE
5d0jLL9dn0tTj68cSk4epFTXJhDLzSGN93JI4yoU5YpI52eCo1wFhzURyoaA
2IaQWB3c3OA4NzjODY7zIx1MeYcQTncj8dcD5/zkj4X8oMBTtUv8aUNPixBP
Qnhq8Aq0MooSISnFWHtltWUv/ERFtSNM8lCJaPFAPN7mgRZWeE1X1cBg6Oha
DCJtRYaTC+g87llp8A3MHuazYs6qOaYR7AC1m13A+Co7gj2/iEIHaCOj+YIs
xnlxnx83wRB/hDsaemOq79hXxtjY2WqMoLO6hefk3s8QvRGIVXN5JWC3Gli7
7uBQzIUL40yEE+MbrAHFfoqY2OFvDw5LaNioKRzWwsCIe6qxYFWYWFBpfk9+
FSDZgnbfwGNvA48dbOCxtfDY7Up4rMpy9sCrq0Gzdolls0caSUjjY0iZT+bh
uZD+Wg5uU7BU7Cdo2CpkqfUd7Arvw0BLNweWVn42B5beJ03snzfCm24OLK1p
5BM+sPTp+oD5v1z72NINBnWDQd1gUDcY1A0G9beNQS2du1QGoboRFBuvdlx4
jUS9ewAq48kq4afrTxf1cu7WQMuOrgctcw4RHDrI1mqEwXYBYVbwUk/XA2qH
FYhaqjXsLOk0fRQrlsytKy9aiVVKFi9vgc8twEEJcBlztr0Sc9YQjvsbQ+MO
7xeOa02RrMHiLhiM6yPJcPNkmLMZYRIgRIAbv6vjQGsF8pM499NiiNCiC9c8
Oa+usF02jmNnIUqAf0xYy4FAV8yJPwTrP1CoQ23XSh08xxWfwWRV7YGxt8Xa
E/c+0HZhNE6XJnRCnwz10BtZtwNIX3ePEOc450j/JfULZ7SM9Kk5WrsfnKQY
vZdp2V24ySmsw4+GxwbKVZrNlVjrrgO29k5R/NRw1ycENb8VZLrappZR2wXQ
dgXQ+m6R1pvTTCtNzjqk8m/lhNMXG7Ty5jTSO8YA86RsMMAbDPDmNNJfJerW
9Ug3qNuKnqz4bFC399SXDSh3A8p1p2sDyl332YBym+iIzQmgmxNAqxvY4FOb
vm+DT/0o+FT8OzlbdQ5oC89K2oBUNyDVzWGfG5DoBiR6xyDRRjS8V6TotWn4
uRw9usGtlvuxwa1+ArhVOkM15UxQkA5KcZDCTWqWXQ0zoWg/QoY0zoXzUG+D
di08Up1+bXpfxsw0hJVxqmwVVrZ8AlymwHAj4aDRXg+fSVOBk+SXQWiEUOOg
/a8BcnqrM2Kbdue+8aq02VVCaG6dmlN+l8kY9OwZJymTtCTXPa+1S1t8nxg2
VWX38fw6u3f+qSAeWtfiVgMRIqxwPXZVN+GhWQuJ5X5mHj9QArzygYoIImOD
aRZS/iaZI4UqY91Iojl5cr6IOe1BcbW7j+rv6eGmZXQ2y0VmEici1lyFPVsX
0NwMIIt601D8o0JkK1WVh5dt9KYK6Kwti3/VFCGLmWUXyPEnXFIgTi8rqgCs
qIJsTO4l7kCrLP3oQu8sF1JaqYPRmIsohCY/z7EFVa148oIJViFt0l/OrpRo
uiSvsgORt/HP5/JMLTvJDeL3IyJ+UU+yc/8MM7gnuEbgtXjLOX6WPa3gLE5H
qPv0I66Qk56IDM4eLF7QjqbAFZgbEmZXRBnVCXdFIJkKW0iFJ0E4HqeKE2hS
0F6S9CAgivA8ISYUKJaapOMlrsg7lElMHjqfLUsKGwzZBPzJc6FkGq6RUtG5
SzQM4aQWsMxIqdd+xtX8zr+/KJDQSWCOHNZXztKS4TH+uqcO9JDPsnR5NtM6
ykMdKVUerz6+123BmiZ4O3KiD2NCdcf6ZgHXQz6dWEbzKA4zpnrogLI9XJzB
um05A1VapmakIEiFVTW87WyJ85gLjp4gFMb2+eZjr28Hh/xDSpOFyqsQm7FO
abHnTmvSYReyoEzVspr1ztcxr4Dn4TL2mZJZwGhEWZZiI4WFcomaWn4rQYey
nKVUAYvHo5lhSYF61GVQ1sfuvEVVkyUSucxEGcMH9AFe7QaUMONSe8dd6Tnp
m45RpGdUmlyZPVuOa2Ckaer1dR1PFd/tFTBw+yKVcij3yNo+TszzMC+uUwf9
fQPKTxUO0FIFjNnm5R9qM7dkAnPUNC1WBuqoRHLmgzxbjl3EQ41VxJ6WJJXS
oDGNjtRm3eo6SkrbCXlGIVuRGAeCFb3qA95u7NAllrJJeqg8QYFHuD5ALYjO
Zlv0z/rg+kwLURMdNjO8LvWx4E4rHcU9mGs/h6ff5Tg1tIJy+wf0uwSnoecY
o0mRLWw/wkIiOc+BIgR2qdAHVQ3jOb8EjST4RFet1tB9L/4UhHkejs8pY3oZ
T5xGaIhVbyXTohaL5Ck90prULgudnqmEvlMGRdvTzo05A3qZ3D6eAnQFMnMD
LV+xX7Eg9KnVSmoCmF30QEA6ztKQVJZawTvjqTSPJLBo7RKjY81jyPw1RJBg
vwUvZEtvsXy3wMiKeq20mdbVtCppQ5sNicV9ikgY97Sv9kQsVM58qncDVFGh
0FHInQKnqMCxYYIwsSgsm92p+ih1eif2jONwwYv0Uqh1HrR8nqSXsZhwYiws
yJfTaTSOKCUx5SxVh+xsxuG/IzEOobddB21LHa+04m1VdgztPZgi5fyiy5/k
jvO2ysslilTeEJ1n+qZO18nVhE56UUEMpxVI4yuFrlrR6kWBr0SqcHUhKuVl
nNOpbDCcYr5o18wSLF5IVkmnmJWiz4Ir38cZysb8GyFagiyS62kg0heuowtX
kC9kUa0E7efHHbzvIpq48bDVfXBCNpYdld460EnM+HJOb221TFmGLZwOcGVC
FZQorYLWBnycae67wVkSPv3uQ/NuBXLIr7qaaJfhlSqzgMBRsnUoSwvbRWPP
bYkeaoLXSOhah0D3C+HManlBSzaBzHTFbQ5M/gDu1rIsw7m+W8PXy0LEm36F
pnkFz2KqqVFMJ7egwJYN8XBeOspElDCOh7KoR7jZqhpAs0rOmPZQzDK44Jmk
CbKWVPqEnTdZOSkFQj6qJJTp7yNnv9FnVaveSamju+nrdOBKo+UwXBSyOlMR
HhhjGEwiidKKYUf0q7zQoDP5/eAncsqSc+SeOUarMBgNzCqjUSxY8pdFK3KG
MwrvclZDP//8LM2BqNkhdgJ8qYsw3h7g+p2eV/e8OqCZVwqPogz6El04PH4J
13AoQJBKzu+3vl/mgU4zd7ojhZhLCo+itSZ6UPtaDI0kXEcWg8nSyLEDQtFZ
7ToQ4xZu6OMyXy7PzoTEeaAwq1rmm/UhC4wzDV1NcXAHQwKxYd8OD4cv91Eh
tE5SFU1j2D41Oo6RzTAmPRGIVdEYtNXqwirPbQ4QnAuxoL0JXq9aNxkkVWXQ
6NhlgqUCc1Ohz/LQAbwYdzMwGs2SIlwxa7ikSpChzerHRGgRqAPazRFV7hGF
3tcIbTHsiwtTrH5jVyvgDgMbObU+jBdIfSotYEzQ1ezgIBJGl6FUFVIoEKa+
UJvveBOgG+gai5FTYnF1OQ+smF+I4bgTvlL0SpNtig6utirXNwnq/iamwdVc
6N3JHKPdxIbFCkXkOVGUJNJ7DdmVVQ++GaPoHosb7czHwBygGDBHRHdDes4D
H0WnDPxeepmcYWjQoQcvQ+0Tyvab0U7MM9q6aQ8GFRJaZC1DDlBqPEsxYkxh
Q4442NOJQW9EOdslt2AOc4qNR8KzoLAonnnygp+nrYbknD2vmrpCOoynlxxt
xcKkVMzaxsptp+AF6rqfZoRVNKsz8H0uhggeCG/2Bi9COQu+j2iBQFkOqUvr
LsZp9a2Y+6S2uxznRr2puEq/sptMOruIlIThKyvBzAD4b8XoVWP4UnJro+Qi
jS+cCfFB+NoZ590nNN5iEoG2EZKNOFZXVVuOto2aEARSnn3fODoXWgvn2B3l
KDhuqOFGcAxGTE7Djm1mO0cV43Aso7B7kTibd1hLGXiqY8fR0+xC+VlXxbbD
BAhOyk2VlDEaGLXf3wTNlKlpRiuVhG2FCVYkVJyCIo9yOZLi70s0AdiLPsXQ
+QcMXoFvxByco7Jgq+IEpcnsYIUxN8SyYDBlwCk0XP6HN+ThDUr4V9SxooNl
OxyCXHsb7U15KmMkUGSkvzy8VDs+E1waVHrDtctBszF8YvwOqltcUTbZ33zd
PgUVkoH2RGRhm4IaFDg1Bq6jNzi1u3kFayMPQq2Wx7rKpwCZSnMTgb1Yxqh1
jdPoMUuld8+DoESP6jEMCmPYOTUqGGcWR8IzKSLiKIz0A9u5aRZWxAtAYk/C
quaAt7mf2Ll8QC+c4GTTZiVm2mQiVJpoCd4w/IrMBRSJfdakaPdyjHw4XWrs
JQWPeMvoYPjDsLRdRMTWGzIUckpSvjMkwUfm7fV64DCOz1ut/w9Arfly3m4B
AA==

-->

</rfc>

