<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc linkmailto="no" ?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-references-in-index="yes" ?>

<!DOCTYPE rfc []>

<!-- Notes for Paul and Tony

Have a section that is just examples of what is new in v3 (such as new table features)
	Want to add examples of <blockquote>
		Example of a cite for a reference that is already in the spec.
	In the v3-only examples, use "ascii" attributes liberally

-->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-wang-ipsecme-kem-auth-ikev2-03"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="2">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
       * obsoletes can be an RFC number as NNNN 
-->

<front>
<title abbrev="KEM-based Authentication for IKEv2"> KEM-based Authentication for IKEv2 with Post-quantum Security </title>
<!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

<seriesInfo name="Internet-Draft" value="draft-wang-ipsecme-kem-auth-ikev2-03"/>
   
    <author fullname="Guilin Wang" initials="G." role="editor" surname="Wang">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
    <!-- Can have more than one author -->
      
    <!-- all of the following elements are optional -->
      <organization>Huawei Int. Pte Ltd</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <street>9 North Buona Vista Drive, #13-01</street>
		  <street> The Metropolis Tower 1</street>
          <city>Singapore</city>
          <code>138588</code>
          <country>Singapore</country>
          <!-- Uses two letter country code -->
        </postal>        
        <email>Wang.Guilin@huawei.com</email>  
      </address>
    </author>

    <author initials='V.' surname="Smyslov" fullname='Valery Smyslov'>
      <organization>ELVIS-PLUS</organization>
      <address>
        <postal>
          <street>PO Box 81</street>
            <city>Moscow (Zelenograd)</city>
            <code>124460</code>
            <country>RU</country>
          </postal>
        <email>svan@elvis.ru</email>
      </address>
    </author>
	
<date/>
<!-- On draft subbmission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->
	
<area>General</area>
    <workgroup> IP Security Maintenance and Extensions </workgroup>
	<!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword>keyword</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <!-- RFC 9370 specifies a framework that supports mulitple key encapsulation mechanisms (KEMs) in the Internet Key Exchange Protocol Version 2 (IKEv2) by allowing up to 7 layers of additiona KEMs employed with the oringal ECDH to derive the final shared secret keys for IPsec protocols. The primitive goal is to mitigate the security threat against quantum computers by hybriding additional post-quantum (PQ) KEMs with the orinigal ECDH key exchange. This draft specifies how one QP KEMs, FrodoKEM, is instantiated in the IKEv2 as the additional KEMs with the main ECDH to achieve hybrid key agreement.-->
	  
	 <t> This draft specifies a new authentication mechanism, called KEM (Key Encapsulation Mechanism) -based authentication, 
     for the Internet Key Exchange Protocol Version 2 (IKEv2). This is motivated by the fact that some post-quantum KEMs (like  ML-KEM)
     are more efficient than post-quantum signature algorithms (like ML-DSA).
     </t>
    </abstract>

<!-- <note title="Editorial Note (To be removed by RFC Editor)">
<t> Discussion of this draft takes place on the rfc-interest mailing list (rfc-interest@rfc-editor.org), which has its home page at
<eref target="https://www.rfc-editor.org/mailman/listinfo/rfc-interest"/>. </t>
</note> -->

</front>

<middle>

<!-- <section title="Revision history"> 

<\section> -->

<section title="Introduction">

<section title="Notes of Change">

<t> Version -02 was completely rewritten to accommodate ideas expressed in PQuAKE protocol.</t>

<t> Two changes have been made in version -01, as a response to comments received at 122 meeting: </t>

<ul spacing="normal">
         
        <li> More details about how each side does for running KEM authentication in <xref target="Exchanges"></xref>. </li>
		
        <li> Added section about KEM authentication with preshared public key. </li>
        </ul>
</section>

<section title="Introduction">

    <t> Cryptographically-relevant quantum computers (CRQC) pose a threat to cryptographically protected data. In particular, 
    the so-called harvest-now-and-decrypt-later (HNDL) attack is considered an imminent threat. To mitigate this threat against 
    the Internet Key Exchange Protocol Version 2 (IKEv2) <xref target="RFC7296"> </xref>, an extension allowing multiple key exchanges in 
    IKEv2 <xref target="RFC9370"></xref> was introduced to achieve post-quantum (PQ) security for the key exchange. 
    <!-- To offering post-quantum security for the authentication in the IKEv2, "Announcing Supported Authentication Methods 
    in the Internet Key Exchange Protocol Version 2 (IKEv2)" <xref target="RFC9593"></xref> specifies a new Notify type, 
    called the SUPPORTED_AUTH_METHODS, which allows two peers to indicate the list of supported authentication methods 
    while establishing IKEv2 SA. One purpose of <xref target="RFC9593"></xref> is to support post-quantum signature algorithms 
    for authenticaion in the IKEv2, as further described by the following drafts.--></t>  

    <t> "Signature Authentication in the Internet Key Exchange Version 2 (IKEv2) using PQC" <xref target="I-D.ietf-ipsecme-ikev2-pqc-auth"></xref> specifies 
    how NIST PQ digital algorithms ML-DSA <xref target="FIPS204"></xref> and SLH-DSA <xref target="FIPS205"></xref> can be used in IKEv2. 
    <!-- by indicating the supported signature algorithms via exchanging the Notify SIGNATURE_HASH_ALGORITHMS, defined in <xref target="RFC7427"></xref>. --> 
    <!-- Similarly, "IKEv2 Support of ML-DSA" <xref target="I-D.sfluhrer-ipsecme-ikev2-mldsa"></xref> specifies how ML-DSA can be run in the IKEv2, by indicating 
    the supported signature algorithms via exchanging the SUPPORTED_AUTH_METHODS Notify, defined in <xref target="RFC9593"></xref>.  --> On the other hand, 
    "Post-Quantum Traditional (PQ/T) Hybrid PKI Authentication in the Internet Key Exchange Version 2 (IKEv2)" 
    <xref target="I-D.hu-ipsecme-pqt-hybrid-auth"> </xref> specifies how to run general hybrid PQ/T digital algorithms in IKEv2<!-- via introducing 
    some extensions in the SUPPORTED_AUTH_METHODS Notify -->. </t>

    <!-- <t> For all of those Internet standard drafts, it is the same that the corresponding public key certificates and singatures for the involved 
    siganture algorithms are exchanged via the IKE_INTERMEDIATE Exchange, defined in <xref target="RFC9242"></xref>. </t> -->

    <t> Motivated by the fact that ML-KEM <xref target="FIPS203"></xref> is much more efficient than ML-DSA <xref target="FIPS204"></xref>, 
    "KEM-based Authentication for TLS 1.3" <xref target="I-D.celi-wiggers-tls-authkem"></xref> <xref target="I-D.wiggers-tls-authkem-psk"></xref> 
    specifies how a KEM can be used to achieve post-quantum secure authentication for the TLS 1.3 protocol. The basic idea is as follows: 
    when one entity A receives the certified long term public key of another entity B, A can authenticate B by encapsulating a secret key k 
    using B's KEM public key, and confirming that the communicating entity is indeed B if the entity can successfully return the correct k to A. 
    A similar idea for TLS is presented in  <xref target="SSW20"></xref>, followed by a number of research papers then. 
    Besides saving communication overhead and computational time, as pointed out in <xref target="I-D.celi-wiggers-tls-authkem"></xref>, 
    KEM-based authentication also reduces implementation code size, as the code for PQ signature may not be needed, and KEM-based authentication 
    can re-use the KEM code for ephemeral key establishment. </t>
    
    <t> This draft specifies how to use KEM-based authentication for the Internet Key Exchange Protocol Version 2 (IKEv2) <xref target="RFC7296"> </xref>. 
    <!-- This is achieved by defining a new authenication method, called KEM-based Authentication. Namely, this draft asks to add a new value of 
    the "IKEv2 Authenticaion Method" registry <xref target="IANA-IKEv2"></xref>, mantained by IANA. To run this new authenticaiton method, 
    two peers <bcp14>MUST</bcp14> send the SUPPORTED_AUTH_METHODS Notify, defined by  <xref target="RFC9593"> </xref>, in the IKE_SA_INIT Exchange, 
    to negotiate the supported KEM algorithms. After that, the correponding KEM certificates and cipthertext are exchanged via 
    the IKE_INTERMEDIATE Exchange <xref target="RFC9593"> </xref>.--> <!-- This documents also specified the instantiation with ML-KEM for this new 
    general authenticaiton method for the IKEv2. --></t>
		
</section>
</section>

    <section>
        <name>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>
    </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->
	  
<section>  <name> Key Encapsulation Mechanism and Digital Signature</name>
    
	<t> A key encapsulation mechanism (KEM) is a set of algorithms that allows key exchange to be performed, which allows one entity to encapsulate a secret key under a 
    (longterm or ephemeral) public key of another entity. By following the definition given in <xref target="I-D.ietf-ipsecme-ikev2-mlkem"></xref>, 
    a KEM consists of three algorithms:
    </t>

	<ul spacing="normal">
        <li>KeyGen(k) -> (pk, sk): A probabilistic key generation algorithm, which generates a public encapsulation key pk and 
        a secret decapsulation key sk, when a security parameter k is given.</li>
        <li>Encaps(pk) -> (ct, ss): A probabilistic encapsulation algorithm, which takes as input a public encapsulation key pk and 
        outputs a ciphertext ct and shared secret ss. </li>
        <li> Decaps(sk, ct) -> ss: A decapsulation algorithm, which takes as input a secret decapsulation key sk and ciphertext ct and
        outputs a shared secret ss.</li>
      </ul>
	  
	<t>  By following the definition given in <xref target="I-D.ietf-pquip-hybrid-signature-spectrums"></xref>, a signature scheme 
    consists of the following three algorithms: </t>

      <ul spacing="normal">
	  <li> SKeyGen(k) -> (spk, ssk): A probabilistic key generation algorithm, which generates a public verifying key spk and 
      a private signing key ssk, when a security parameter k is given..</li>
	  
	  <li> Sign(ssk, m) -> s: A deterministic or probabilistic signature generation algorithm, which takes as input 
      a private signing key ssk and a message m, and outputs a signature s. </li>
      
	  <li> Verify(spk, s, m) -> b: A deterministic verification algorithm, which takes as input a public verifying key spk, 
      a signature s and a message m, and outputs a bit b indicating accept (b=1) or reject (b=0) of the signature-message pair (s, m). </li>
      </ul>

	  <t> In August of 2024, NIST released ML-KEM <xref target="FIPS203"></xref> and ML-DSA <xref target="FIPS204"></xref>, which are both 
      module-lattice-based post-quantum algorithms. Each of both algorithms has three sets of parameters corresponding to three NIST security levels. 
      Namely, ML-KEM-512 for Level 1, ML-KEM-768 for Level 3, and ML-KEM-1024 for for Level 5, while ML-DSA-44 for Level 2, ML-DSA-65 for Level 3, 
      and ML-DSA-87 for Level 5. </t>
	  
	  </section>

    <section>  <name> Comparison of ML-KEM and ML-DSA </name>
    
	  <t> This section compares ML-KEM and ML-DSA, with respect to the sizes of key, ciphertext and signature, and also the computational 
      overhead of key generation, encapsulation, signing, decapsulation, and verifying. </t>
	  
	  <t> To compare the communication overhead when using ML-DSA and ML-KEM, data from Table 2 in <xref target="FIPS204"></xref> and 
      Table 3 in <xref target="FIPS204"></xref> are used to generate the following <xref target="size_comp" />. The results show the comparison 
      of keys and signature over ciphertext between ML-DSA and ML-KEM. Namely, for all corresponding security levels, the following statements can be concluded: </t>
	  
	  <ul spacing="normal">
         
        <li> The private key size of ML-DSA is about 1.5 times of the decapsulation key size of ML-KEM,  </li>
		<li> The public size of ML-DSA is about 1.6 times of that of ML-KEM, and  </li>
        <li> The signature size of ML-DSA is about 3 times of the ciphertext size of ML-KEM.  </li>
        </ul>

      <table anchor="size_comp">
        <name>Communication Overhead Comparison of ML-DSA and ML-KEM</name>
        <thead>
          <tr>
            <th></th>
            <th align="center">Private Key/Decapsulation Key</th>
            <th align="center">Public Key/Encapsulation Key</th>
            <th align="center">Signature/Ciphertext</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>ML-DSA-44/ML-KEM-512</td>
            <td align="center">2,650/1,632<br/>=157%</td>
            <td align="center">1,312/800<br/>=164%</td>
            <td align="center">2,420/768<br/>=315%</td>
          </tr>
          <tr>
            <td>ML-DSA-65/ML-KEM-768</td>
            <td align="center">4,032/2,400<br/>=168%</td>
            <td align="center">1,952/1,184<br/>=165%</td>
            <td align="center">3,309/1,088<br/>=304%</td>
          </tr>
          <tr>
            <td>ML-DSA-87/ML-KEM-1024</td>
            <td align="center">4,896/3,168<br/>=155%</td>
            <td align="center">2,592/1,568<br/>=165%</td>
            <td align="center">4,627/1,568<br/>=295%</td>
          </tr>
        </tbody>
      </table>

      <t> Specifically, for the three security levels, when ML-KEM is used to replace ML-DSA for authentication, the saved communication overhead, 
      namely public key+signature for ML-DSA and encapsulation key+ciphertext for ML-KEM, is 2,164, 2,989, and 4,083 bytes, respectively. 
      Those savings are helpful to improve the performance of IKEv2. In fact, as shown in the experiment in simulated environment, 
      the average time delay for IKEv2 can increase a few times due to large size of PQ public key, ciphertext and signature, 
      especially when the IP packet loss rate reaches about 1%. </t>

      <t> Next, the computation overhead comparison will be given now. In <xref target="HAZ24"></xref>, the authors present their implementation 
      results of Dilithium and Kyber, via various optimization techniques for Keccak and the two PQ algorithms. Concretely, Table 6 
      in <xref target="HAZ24"></xref> shows the performance comparison of Dilithium and Kyber on ARMv7 Cortex-M4 processor, presented by clock cycles. 
      By ignoring the small difference between ML-KEM and its informal version Kyber, also ML-DSA and its informal version Dilithium, 
      the following <xref target="computation_comp" /> is obtained. </t>

      <table anchor="computation_comp">
          <name>Computational Overhead Comparison of ML-DSA and ML-KEM</name>
          <thead>
    <tr>
      <th></th>
      <th align="center">KeyGen Time/SKeyGen Time</th>
      <th align="center">Encap Time/Sign Time</th>
      <th align="center">Decap Time/Verify Time</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ML-DSA-44/ML-KEM-512</td>
      <td align="center">1,357k/369k<br/>=368%</td>
      <td align="center">3,487k/448k<br/>=778%</td>
      <td align="center">1,350k/409k<br/>=330%</td>
    </tr>
    <tr>
      <td>ML-DSA-65/ML-KEM-768</td>
      <td align="center">2,394k/604k<br/>=396%</td>
      <td align="center">5,574k/732k<br/>=761%</td>
      <td align="center">2,302k/674k<br/>=342%</td>
    </tr>
    <tr>
      <td>ML-DSA-87/ML-KEM-1024</td>
      <td align="center">4,069k/962k<br/>=423%</td>
      <td align="center">7,730k/1,119k<br/>=691%</td>
      <td align="center">3,998k/1,043k<br/>=383%</td>
    </tr>
        </tbody>
    </table>

    <t> By assuming that the computational comparison shown in <xref target="computation_comp" /> reasonably presents a performance difference 
    of ML-KEM and ML-DSA on the same platform with optimal implementations, for all three corresponding security levels, 
    the following statements can be derived: </t>

    <ul>
    <li> The private key generation time of ML-DSA is about 4 times of that of ML-KEM. </li> 
    <li> The signature signing time of ML-DSA is about 7 times of the encapsulation time of ML-KEM. </li>
    <li> The signature verifying time of ML-DSA is over 3 times of the decapsulation time of ML-KEM. </li>
    </ul>

    <t> In the scenario of KEM-based authentication, both the private keys for ML-DSA and ML-KEM will be long term keys, so the private key generation time 
    can be ignored, as it is just one time overhead. Therefore, by combining signature signing and verifying together, 
    and also combining encapsulation and decapsulation together, we can simply say that the computational time of ML-DSA is about 5 times of that of ML-KEM. </t>

    </section>
	
    <section title="Protocol Overview for KEM-based Authentication" anchor="Overview">
        <t> With a KEM-based authentication in IKEv2 peers first perform an ephemeral key exchange that allows
        them to derive session keys for protecting subsequent exchanges. This ephemeral key exchange
        may take place entirely in the IKE_SA_INIT exchange or be accompanied by a series of subsequent IKE_INTERMEDIATE
        exchanges <xref target="RFC9370" />, in which case it would be a hybrid key exchange.
        </t>

<!--        <t> After that peers exchange their long-term KEM certificates and then exchange random
        values encrypted with each other's certificate, both using IKE_INTERMEDIATE exchanges.
        In the subsequent IKE_AUTH exchange peers confirm that they both know the random values
        send by the other side, thus confirming that they can decapsulate these values,
        thus confirming that they do possess the private keys for their certificates.
        </t> -->

        <t> To run KEM-based Authentication in IKEv2, the two peers first exchange their long-term KEM certificates, 
        and then exchange random values encapsulated with each other's long-term KEM public key from the corresponding KEM certificate. 
        Here, both long-term KEM certificates and the KEM ciphertexts encapsulating the random values are sent via the IKE_INTERMEDIATE exchanges. 
        After decapsulating these random values the two peers cam demonstrate their knowledge of the random values 
        sent by the other side in the subsequent IKE_AUTH exchange, thus confirming that they do possess the corresponding KEM 
        private keys linked to their long-term KEM certificates.
        </t>

        <t> Mode details about the KEM-based authentication are provided in &lt;citations for PQuAKE and other papers needed&gt;.
        </t>
    </section>
    
    <section title="Protocol Details for KEM-based Authentication" anchor="Protocol">

        <t> The KEM-based authentication in IKEv2 relies on the IKE_INTERMEDIATE exchange <xref target="RFC9242" />
        that <bcp14>MUST</bcp14> be supported. In addition, the following extensions can contribute 
        to the security and the robustness of the protocol.
            <ul>
                <li> IKE fragmentation <xref target="RFC7383" /> <bcp14>SHOULD</bcp14> be negotiated in case peers use UDP as a transport for IKE,
                since KEM public key and KEM ciphertext can be of significant size.</li>
                <li> Multiple key exchanges <xref target="RFC9370" /> has to be utilized if a hybrid key exchange combining
                traditional and post-quantum key exchange methods is required.</li>
                <li> Using group Postquantum Preshared Key (PPK) <xref target="RFC9867" /> can
                contribute to the identity hiding, thus it is <bcp14>RECOMMENDED</bcp14> to use.</li>
                <li> The ability to authenticate the full protocol transcript <xref target="I-D.smyslov-ipsecme-ikev2-downgrade-prevention" /> protects
                peers against downgrade attacks and <bcp14>SHOULD</bcp14> be used.</li>
            </ul>
        </t>
	
<!--	<t> By following <xref target="RFC9593"></xref>, two communicating peers send ech other the Notify Message Type SUPPORTED_AUTH_METHODS 
    to negotiate which authentication method will be used to authenticate them to each other. Bascially, the authentication method can be 
    any one registered in the "IKEv2 Authentication Method" registry under "Internet Key Exchange Version 2 (IKEv2) Parameters" <xref target="IANA-IKEv2"></xref>, 
    maintained by IANA. To run KEM-based Authentication, the draft is supposed to apply the value of &lt;TBD&gt; for "KEM-based Authentication" 
    in the "IKEv2 Authentication Method" registry (<xref target="IANA "></xref>).</t> -->
	
    <section title="Exchanges for KEM-based Authentication" anchor="Exchanges">

<!--        <t> After the initiator starts the IKE_SA_INIT exchange as usual, the responder sends the notify SUPPORTED_AUTH_METHODS with value of &lt;TBD&gt; 
        to indicate that the responder wants to run KEM-based Authentication with respect to some specific KEM algorithms, which the responder supports. 
        These KEMs will be listed in the SUPPORTED_AUTH_METHODS Notify Payload (<xref target="Payload"></xref>), ordered by the responder's preference, 
        among other possible authentication methods. </t>

        <t> After the initiator receives SUPPORTED_AUTH_METHODS from the resonder, it will select the KEM algorithm from the list of KEMs sent by the responder 
        that has the highest preference and is supported by the initator as well. After that, the responder <bcp14>MUST</bcp14> use this KEM algorithm 
        to authenticate itself to the initiator. </t>

        <t> <xref target="exchanges_example" /> below gives an example to show how two peers use the SUPPORTED_AUTH_METHODS notification to run KEM-based 
        authentication. In the protocol, the IKE_INTERMEDIATE exchange may be used to faciliate the hybrid key exchange in the IKEv2 
        as specified in <xref target="RFC9370"></xref>, and to transfer PQ certifates between the responder and the intitator 
        for completing KEM-based authentication. </t>
 
        <t> Once the responder and the inititator have negotiated to run KEM-based authentication, shown as the value of 16 in the SUPPORTED_AUTH_METHODS 
        notification, one specific KEM algorithm <bcp14>MUST</bcp14> be selected by the initiator. After that, both parties <bcp14>MUST</bcp14> encapsulate 
        a shared secret under the public key of the other party and send out the resulting ciphertext. Then, the peer <bcp14>MUST</bcp14> decapsualte 
        the ciphertext received to obtain the shared secret key encapsulated by the other party. Next, the AUTH data <bcp14>MUST</bcp14> be calculated 
        according to the specification <xref target="RFC7296"></xref> via using the MAC algorithm selected. Finally, once each party 
        successfully verifies the MAC code for the AUTH data received from the other party, the whole IKE key exchange and authentication is successful. </t> -->
 
 <!-- RFC 9593: If these payloads are sent, they MUST be identical to the IDi/IDr payloads sent later in the IKE_AUTH request -->

        <section anchor="ike_sa_init" title="The IKE_SA_INIT Exchange">

            <t> The initiator wishing to use the KEM-based authentication indicates this to the responder
            by including a new status type notification USE_AUTHKEM (with type &lt;TBA2&gt;) into the IKE_SA_INIT request message.
            This notification has the Protocol ID and SPI Size both set to 0 (meaning no SPI is present), and its notification data is empty.
            To be able to use the KEM-based authentication the initiator <bcp14>MUST</bcp14> also include
            the INTERMEDIATE_EXCHANGE_SUPPORTED notification.
            </t>

            <t> If the responder receives the IKE_SA_INIT request containing the USE_AUTHKEM
            notification and it supports and is configured to use the KEM-based authentication,
            then it sends this notification back in the response. The responder can optionally
            include the Certificate Request payload (as defined in <xref target="RFC7296" />)
            to help the initiator to select the right KEM certificate. The responder can also 
            indicate which KEMs it is willing to use for authentication by including
            the SUPPORTED_AUTH_METHODS notification <xref target="RFC9593" /> in the response.
            In this case the notification <bcp14>SHOULD NOT</bcp14> contain announcements
            with the Auth Method other than a newly defined "KEM-based Authentication" (&lt;TBA1&gt;).
            The format of announcement is defined in <xref target="announcement" />.
            </t>

            <t> Peers can also negotiate other IKEv2 extensions during IKE_SA_INIT. Some of them are listed in <xref target="Protocol" />.
            In particular, the figures below show the optional use of PPK <xref target="RFC9867" /> during
            KEM-based authentication.
            </t>

            <figure anchor="fig_ike_sa_init" title="The IKE_SA_INIT Exchange">
            <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_SA_INIT), SAi1, KEi, Ni,    --->
N(INTERMEDIATE_EXCHANGE_SUPPORTED), 
[N(USE_PPK_INT),] 
N(USE_AUTHKEM)
                     <--- HDR(IKE_SA_INIT), SAr1, KEr, Nr, [CERTREQ,]
                                  N(INTERMEDIATE_EXCHANGE_SUPPORTED),
                                         [N(SUPPORTED_AUTH_METHODS),]
                                                    [N(USE_PPK_INT),]
                                                       N(USE_AUTHKEM)
            ]]></artwork> 
            </figure>

            <t> Peers <bcp14>MUST</bcp14> ignore the USE_AUTHKEM notification in the message if it is not accompanied 
            by the INTERMEDIATE_EXCHANGE_SUPPORTED notification.
            </t>

            <t> If using KEM-based authentication is mandatory for the responder and the initiator did not propose
            it or failed to make a valid proposal, then the responder <bcp14>MUST</bcp14> send the NO_PROPOSAL_CHOSEN notification
            indicating that the proposed parameters are unacceptable.
            Otherwise the responder can continue establishing IKE SA using other authentication method.
            </t>

            <t> If using the KEM-based authentication is mandatory for the initiator and it failed
            to negotiate it with the responder, then the initiator <bcp14>MUST</bcp14> cancel
            establishing IKE SA. Otherwise the initiator can continue using other authentication method.
            </t>

            <t> After the IKE_SA_INIT exchange completes, peers calculate the session keys as defined in Section 2.14
            of <xref target="RFC7296" /> and use these keys to protect the next exchange.
            </t>
        </section>

        <section anchor="ike_intermediate" title="The IKE_INTERMEDIATE Exchanges">
            <t> Once the KEM-based authentication is negotiated in IKE_SA_INIT, a series of the
            IKE_INTERMEDIATE exchanges takes place. These exchanges can be classified as those
            for the purpose of the KEM-based authentication and those for other purposes.
            The exchanges for the KEM base authentication <bcp14>MUST</bcp14> follow all
            other IKE_INTERMEDIATE exchanges, so that they take place right before the IKE_AUTH exchange.
            </t>

            <section anchor="ike_intermediate_no_pqake" title="The IKE_INTERMEDIATE Exchanges for Other Purposes">

                <t> First, if multiple key exchanges were negotiated, then one or more IKE_INTERMEDIATE exchanges 
                are performed, right after the IKE_SA_INIT exchange, as defined in <xref target="RFC9370" />.
                </t>

                <figure anchor="fig_intermediate_addke" title="Additional Key Exchange(s)">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {KEi(n)}   --->
                            <---   HDR(IKE_INTERMEDIATE), SK {KEr(n)}
                ]]></artwork> 
                </figure>

                <t> Each of these exchanges updates the session keys as defined in Section 2.2.2 of <xref target="RFC9370" />.
                </t>

                <t> If the use of PPKs as defined in <xref target="RFC9867" /> is negotiated,
                then the IKE_INTERMEDIATE exchange negotiating the PPK to use is performed then as defined 
                in Section 3.1 of <xref target="RFC9867" />.
                </t>

                <figure anchor="fig_intermediate_ppk" title="PPK Negotiation">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {PPK_IDENTITY_KEY)}   --->
                   <---   HDR(IKE_INTERMEDIATE), SK {N(PPK_IDENTITY)}
                ]]></artwork> 
                </figure>

                <t> After this exchange the session keys are updated as defined in Section 3.1.1 of 
                <xref target="RFC9867" />.
                </t>

                <t> If both additional key exchange(s) and the use of PPKs as defined in <xref target="RFC9867" /> are negotiated,
                then the last additional key exchange <bcp14>MAY</bcp14> alternatively be combined with negotiating the PPK 
                in a single IKE_INTERMEDIATE exchange as shown in <xref target="fig_intermediate_ppk" />. Note, that in many cases only one
                additional key exchange will be negotiated (as a part of PQ/T hybrid key exchange), thus 
                in this case the last additional key exchange will also be the only one.
                </t>

                <figure anchor="fig_intermediate_addke_ppk" title="Last Additional Key Exchange Combined with PPK Negotiation">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {KEi(m), 
(PPK_IDENTITY_KEY)}   --->
                            <---   HDR(IKE_INTERMEDIATE), SK {KEr(m),
                                                     N(PPK_IDENTITY)}
                ]]></artwork> 
                </figure>

                <t> If this combined IKE_INTERMEDIATE exchange takes place, then upon its completion session 
                keys are updated twice - fist as defined in Section 2.2.2 of <xref target="RFC9370" /> and
                then, provided the peers negotiate the PPK to use, as defined in Section 3.1.1 of 
                <xref target="RFC9867" />.
                </t>

                <t> Note, that while <xref target="RFC9867" /> generally requires that the PPK negotiation
                is performed in the last IKE_INTERMEDIATE exchange right before the IKE_AUTH exchange, it also allows
                this requirement to be overridden by other specification. This document specifically overrides
                this requirement by allowing the IKE_INTERMEDIATE exchanges concerned with the KEM-based authentication
                to take place between the negotiation of PPK and the IKE_AUTH exchange.
                </t>
            </section>

            <section anchor="ike_intermediate_pqake" title="The IKE_INTERMEDIATE Exchanges for the KEM-based Authentication">

                <t> The next two IKE_INTERMEDIATE exchanges perform the necessary actions for the KEM-based authentication.
                </t>

                <t> In the first exchange the responder sends its KEM certificate to the initiator.
                The initiator can optionally include the Certificate Request payload in the request message 
                to help the responder to select the right KEM certificate. The Certificate Request payload
                can also be used to indicate which format(s) of certificate are acceptable for the sender
                of this payload. This is done by setting the Cert Encoding field to appropriate value.
                For KEM-based authentication this field <bcp14>MUST</bcp14> be either "X.509 bundle" 
                (new certificate encoding defined in this document, it value is &lt;TBA5 by IANA&gt;)
                or "Hash and URL of X.509 bundle" (value 13). If both encoding are acceptable, then two Certificate Request payloads 
                <bcp14>MUST</bcp14> be included (with possibly different list of CAs) each with its own value in the Cert Encoding field.
                Since the Certificate Request payload is optional, its absence leaves the choice of the certificate
                and its encoding on the certificate sender's discretion. Note that these rules are also 
                applicable to the Certificate Request payload sent by the responder in the IKE_SA_INIT exchange
                (see <xref target="ike_sa_init" />).
                </t>

                <t> The initiator can also indicate which KEMs it is willing to use for authentication by including
                the SUPPORTED_AUTH_METHODS notification <xref target="RFC9593" /> in the request.
                In this case the notification <bcp14>SHOULD NOT</bcp14> contain announcements
                with the Auth Method other than the  "KEM Authentication" (&lt;TBA1&gt;).
                The format of announcement is defined in <xref target="announcement" />.
                </t>

                <t> The responder sends its KEM certificate in the response. Besides the KEM certificate, additional 
                intermediate signing certificates and CRLs can be sent. All these certificates and CRLs are packed into
                the CertificateBundle ASN.1 structure defined in Section 3.6 of <xref target="RFC7296" />.
                The KEM certificate <bcp14>MUST</bcp14> be the only KEM certificate in the bundle.
                The bundle can either be present in the Certificate payload (with the Cert Encoding field set to a new value
                "X.509 bundle") or provided by reference (with the Cert Encoding field set to "Hash and URL of X.509 bundle").
                If certificate bundle is provided by reference, then a host can avoid downloading the peer's certificates 
                if it cached them from a previous connection. Only one Certificate payload <bcp14>MUST</bcp14> be present in the response.
                </t>

                <figure anchor="fig_intermediate_cert" title="Obtaining Responder's KEM Certificate">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {[CERTREQ+,]
[N(SUPPORTED_AUTH_METHODS)]}   --->
                              <---   HDR(IKE_INTERMEDIATE), SK {CERT}
                ]]></artwork> 
                </figure>

                <t> This exchange does not update the current session keys.
                </t>

                <t> The initiator verifies the responder's certificate to make sure that it is valid, 
                properly signed by a certificate chain leaded to a trusted CA, and that it is acceptable for responder authentication 
                based on the initiator's local policy. The exact verification steps are out of scope of this document, 
                but generally should follow those defined in <xref target="RFC5280" />.
                </t>

                <t> Then the initiator starts the next IKE_INTERMEDIATE exchange. In the request message it sends the ciphertext CT_i, produced as a result 
                of encapsulation of a random value SS_i using the KEM public keys from the responder's certificate. CT_i is sent in a new status type 
                notification AUTHKEM_CT (with type &lt;TBA3&gt;). The Protocol ID and SPI Size fields are set to 0 (meaning no SPI is present). 
                The notification data contains the ciphertext CT_i.
                </t>

                <t> In the same request the initiator also sends its KEM certificate. Besides the KEM certificate, additional 
                intermediate signing certificates and CRLs can be sent. All these certificates and CRLs are packed into
                the CertificateBundle ASN.1 structure defined in Section 3.6 of <xref target="RFC7296" />.
                The KEM certificate <bcp14>MUST</bcp14> be the only KEM certificate in the bundle.
                The bundle can either be present in the Certificate payload (with the Cert Encoding field set to a new value
                "X.509 bundle") or provided by reference (with the Cert Encoding field set to "Hash and URL of X.509 bundle").
                If certificate bundle is provided by reference, then a host can avoid downloading the peer's certificates 
                if it cached them from a previous connection. 
                </t>

                <t> This content (either bundle or hash &amp; URL) is sent in a new payload Encrypted Certificate 
                (with type &lt;TBA0 by IANA&gt;). The content is encrypted using key derived from SS_i.
                The details of the Certificate payload encryption are provided in <xref target="encryptedcert" />.
                Encryption provides protection of initiator's identity against active attackers, since only a responder
                a responder with the private key corresponding to the responder's certificate is able to decrypt the 
                initiator's KEM certificate. 
                </t>

                <aside>
                    <t> Note, that if the bundle is provided
                    by reference and an attacker can monitor the responder's network activity, then this identity protection
                    might not work.
                    </t>
                </aside>

                <t> Exactly one Encrypted Certificate payload <bcp14>MUST</bcp14> be present in the message.
                </t>

<!--                <t> DISCUSSION: do we have to define a new payload type or we can define a new certificate encodings 
                for encrypted Certificate payload content? Alternatively, the Certificate payload with encrypted content can be wrapped in a new
                status notification, but this also looks not perfect.
                </t> -->

                <t> The responder decrypts the initiator's certificate, verifies it to make sure that it is valid, 
                properly signed by a certificate chain leaded to a trusted CA, and that it is acceptable for initiator authentication 
                based on the responder's local policy. The exact verification steps are out of scope of this document, 
                but generally should follow those defined in <xref target="RFC5280" />.
                </t>

                <t> The initiator's certificate and the responder's one, sent in the previous exchange, <bcp14>MAY</bcp14> contain public keys 
                for different KEMs, provided that peers support these KEMs, - there is no requirement that they are for the same KEM.
                </t>

                <t> The responder then sends a response message containing the ciphertext CT_r, produced as a result 
                of encapsulation of a random value SS_r using the KEM public keys from the initiator's certificate. CT_r is sent in the
                AUTHKEM_CT notification in the same manner as SS_i.
                </t>

                <t> The responder also includes a new status type notification AUTHKEM_SSCONF (with type &lt;TBA3&gt;). 
                The Protocol ID and SPI Size fields are set to 0 (meaning no SPI is present). 
                The notification data is computed as prf(SK_pr, SS_r), where prf is the negotiated PRF for this SA and SK_pr is from the current 
                session keys (see Section 3.3.1 of <xref target="RFC9242" />).
                </t>

                <figure anchor="fig_intermediate_kem" title="Obtaining Initiator's KEM Certificate and Exchange of Encrypted Random Values">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {N(AUTHKEM_CT), ECERT}   --->
                     <---   HDR(IKE_INTERMEDIATE), SK {N(AUTHKEM_CT),
                                                   N(AUTHKEM_SSCONF)}
                ]]></artwork> 
                </figure>

                <t> Upon receiving the response message the initiator decapsulates the received ciphertext CT_r and obtains
                the SS_r key. Then the initiator computes prf(SK_pr, SS_r) using the obtained SS_r and verifies
                that the value matches the content of the AUTHKEM_SSCONF notification. This ensures that there are no
                mis-configurations and the the received SS_r value is indeed the same that was encapsulated.
                </t>

                <t> Upon completion of this exchange the session keys are updated. A new value of SKEYSEED is computed as:

                <figure>
                <artwork><![CDATA[
SKEYSEED' = prf(SK_d, SS_i | SS_r)
                ]]></artwork> 
                </figure>

                Then all the session keys (SK_d, SK_ai, SK_ar, SK_ei, SK_er, SK_pi, and SK_pr)
                are computed as defined in Section 2.14 of <xref target="RFC7296" />. These session
                keys are then used for protecting all subsequent exchanges starting from the IKE_AUTH exchange.
                </t>

            </section>
        </section>

        <section anchor="ike_auth" title="The IKE_AUTH Exchange">
            <t> The IKE_AUTH exchange immediately follows the IKE_INTERMEDIATE exchange
            where peers sent each other encrypted SS values. The IKE_AUTH exchange is basically 
            unchanged from that defined in <xref target="RFC7296" />.
            The Auth Method field in the AUTH payloads <bcp14>MUST</bcp14> be "KEM Authentication".
            The format of the AUTH payload is computed as defined in <xref target="kem-auth-method" />.

            <figure anchor="fig_ike_auth" title="The IKE_AUTH Exchange">
            <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_AUTH), SK{IDi, [IDr,] 
AUTH, SAi2, TSi, TSr}   --->
                                        <---   HDR(IKE_AUTH), SK{IDr,
                                                AUTH, SAr2, TSi, TSr}
            ]]></artwork> 
            </figure>

            </t>

            <section anchor="ike_auth_id" title="Identities in the IKE_AUTH Exchange">
                <t> With KEM based authentication peers have to exchange their KEM certificates
                before actual authentication of each other. Certificates usually contain
                some identity information, that the CA asserts the included public key is bound to.
                This makes peers aware of each other's identity before the IKE_AUTH exchange starts.
                </t>

                <t> However, IKEv2 doesn't rely on the identities from certificates when performing authentication.
                Instead, Identification payloads (IDi and IDr) are mandatory in the IKE_AUTH exchange
                and exactly they are included into the AUTH payload calculation.
                The content of the IDi and IDr payload may differ from the identification
                information in the corresponding certificate, as stated in Section 3.5 of <xref target="RFC7296" />.
                </t>
            </section>

        </section>

<!--    <t> If the resulting SUPPORTED_AUTH_METHODS notification with list of autehnticiton methods is too long such 
    that IP fragmentation <xref target="RFC7383"></xref> of the IKE_SA_INIT response may happen, the responder <bcp14>MAY</bcp14> choose 
    to send empty SUPPORTED_AUTH_METHODS notification in the IKE_SA_INIT exchange response. Then, the responder and the intiatior can send 
    each other the SUPPORTED_AUTH_METHODS notification with list of authentictatin methods they support by using the IKE_INTERMEDIATE exchange, 
    as desribed in Section 3.1 of <xref target="RFC9593"></xref>. </t>

	<t> [EDNOTE: More examples may be provided later.] </t> -->
	
	</section>

        <section anchor="alternatives" title="Alternative Sequences of Exchanges">
            <t> This section is to be removed eventually. It provides ideas for alternative design of the protocol.
            </t>

            <t> The presented sequence of exchanges requires two additional exchanges (namely IKE_INTERMEDIATE exchanges)
            for KEM-based authentication compared to signature-based authentication. It is possible to 
            only have one additional IKE_INTERMEDIATE exchange, but this either results in some degradation
            of security properties or leads to additional protocol complexity. Note, that the amount
            of data exchanged over the wire would not changed, the different items would just
            be combined in one message. This would increase the size of these messages that might
            not be desirable from a reliable delivery point of view.
            </t>

            <section anchor="alternative_1" title="Alternative 1: Send Responder Certificate with Protection Only by the IKE_SA_INIT Keys">
                <t> It is possible to exchange certificates before all additional key exchanges (and optional negotiation of the PPK)
                are completed. In this case the certificates would only be protected with session keys computed after the IKE_SA_INIT
                exchange (in case of hybrid key exchange that would be traditional key exchange).
                </t>

                <t> In this case, the exchange shown in <xref target="fig_intermediate_cert" /> is not needed,
                since the certificates would be exchanged in the previous exchange. For example, the exchange 
                shown in <xref target="fig_intermediate_addke_ppk" /> would look like:

                <figure anchor="fig_intermediate_addke_ppk_alt1" title="Last Additional Key Exchange Combined with PPK Negotiation 
                and Responder's Certificate">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {KEi(m), 
(PPK_IDENTITY_KEY), [CERTREQ+,]
[N(SUPPORTED_AUTH_METHODS)]}   --->
                            <---   HDR(IKE_INTERMEDIATE), SK {KEr(m),
                                                (PPK_IDENTITY), CERT}
                ]]></artwork> 
                </figure>

                This design would decrease the level of identity hiding for responder, since the session keys used to protect
                the responder's certificates in case of hybrid key exchange could be cracked by an attacker using quantum computer.
                </t>
            </section>

            <section anchor="alternative_2" title="Alternative 2: Use &quot;Future&quot; Keys to protect Responder's Certificate">
                <t> In this case the exchange shown in <xref target="fig_intermediate_cert" /> is also not needed.
                The responder sends its certificate in the previous IKE_INTERMEDIATE exchange using new Encrypted Certificate payload.
                Note, that this exchange contains the last additional key exchange and optionally the PPK negotiation,
                thus its messages are not yet protected with the session keys that would result in this exchange - 
                the new keys are calculated only once the exchange completes. However, the responder can 
                calculate the updated keys before it sends the response message. The idea is that 
                the responder calculates new session keys and uses these "future" keys (for the next exchange) 
                to protect its certificate in the Encrypted Certificate payload, 
                that itself is protected with the "current" session keys in the Encrypted payload.
                The Encrypted Certificate payload is protected using keys derived from the SK_d from the next exchange 
                (see <xref target="encryptedcert" /> for details).
                </t>

                <figure anchor="fig_intermediate_addke_ppk_alt2" title="Last Additional Key Exchange Combined with PPK Negotiation 
                and Encrypted Responder's Certificate">
                <artwork><![CDATA[
Initiator                                                   Responder
---------------------------------------------------------------------
HDR(IKE_INTERMEDIATE), SK {KEi(m), 
(PPK_IDENTITY_KEY), [CERTREQ+,]
[N(SUPPORTED_AUTH_METHODS),]}   --->
                            <---   HDR(IKE_INTERMEDIATE), SK {KEr(m),
                                               (PPK_IDENTITY), ECERT}
                ]]></artwork> 
                </figure>

                <t> This sequence of exchanges allows certificates to be protected at the same level as in the original
                sequence of exchanges (in particular, both certificates can be protected with group PPK). 
                The drawback is the added complexity for implementations, since it could break the 
                traditional state transitions logic of IKE.
                </t>

            </section>

        </section>


<!--    <section title="KEM-based Authentication with Preshared Public Key" anchor="PPK">

        <t> In <xref target="Exchanges"></xref>, the protocol may need to run one additional round as KEM-based authentication has to first send out 
        one's KEM public key and the associated certificate, so that the other party can return back an encapsualted secret as a challenge, 
        before finally releasing the MAC for the AUTH data. This is naturally not as efficient as signature authentication, 
        which can be sent out in one message consisting of message being authenticated, the digital signarure, and also the corresponing 
        public key certificate used to verify the singature.</t>

        <t> However, the situation will be changed when both parties have already acquied each other's public key (and the associated certificate) 
        before running KEM-based authentication. Such a public key may be pre-installed, cached, or provisoned via out-bound ways. 
        For TLS authentication, the situation has been specified in <xref target="I-D.wiggers-tls-authkem-psk"></xref>. 
        This KEM-based authentication with preshared public key is expected to be useful in scenarios where one or 
        both parties have constrained capabilities, e.g, IoT devices. </t>

        <t> [EDNOTE: An example may be provided later.] </t>
	
     </section>
-->

    <section title="Data Formats" anchor="formats">
        <section title="Authentication Payload for KEM-based Authentication" anchor="kem-auth-method">
            <t> The format of the Authentication payload is defined in Section 3.8 of <xref target="RFC7296" />.
            In case of KEM-based authentication the Auth Method is set to "KEM Authentication" (&lt;TBA1&gt;).
            The Authentication Data is computed as:

            <figure>
                <artwork align="left"><![CDATA[
For the initiator:

  AUTH = prf( prf(SK_pi, "Key Pad for IKEv2"),
                   <InitiatorSignedOctets>)

For the responder:

  AUTH = prf( prf(SK_pr, "Key Pad for IKEv2"),
                   <ResponderSignedOctets>)
            ]]></artwork>
            </figure>

            The content of the InitiatorSignedOctets and the ResponderSignedOctets is defined 
            in Section 3.3.2 of <xref target="RFC9242" />. If full transcript authentication
            is employed as specified in <xref target="I-D.smyslov-ipsecme-ikev2-downgrade-prevention" />,
            then the InitiatorSignedOctets and the ResponderSignedOctets are additionally
            modified as defined in <xref target="I-D.smyslov-ipsecme-ikev2-downgrade-prevention" />.
            </t>
        </section>

        <section title="Authentication Announcement for KEM Authentication" anchor="announcement">
            <t> The format of the announcement for the "KEM Authentication" is the same as for 
            "Digital Signature" as shown in Section 3.2.3 of <xref target="RFC9593" />. For convenience 
            the format is also shown below.

                <figure align="center" anchor="authmethod3" title="Supported Authentication Method">
                    <artwork align="left"><![CDATA[
                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Length (>3)  |  Auth Method  |   Cert Link   |               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +
|                                                               |
~                AlgorithmIdentifier ASN.1 object               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   ]]></artwork>
                </figure>
            
                <list style="symbols">
                    <t>Length - Length of the announcement in octets, must be greater than 3.</t>
                    <t>Auth Method - Announced authentication method, in this case it is "KEM Authentication".</t>
                    <t>Cert Link - Links this announcement with particular CA; see Section 3.2.2 of <xref target="RFC9593" /> for details.</t>
                    <t>AlgorithmIdentifier ASN.1 object - the AlgorithmIdentifier of PKIX (see Section 4.1.1.2 of <xref target="RFC5280" />), 
                    encoded using distinguished encoding rules (DER) <xref target="X.690" />. 
                    </t>
                </list>

                For "KEM Authentication" announcement the AlgorithmIdentifier <bcp14>MUST</bcp14> contain 
                identifier of a KEM algorithm (and not, for example, of a signature algorithm). Identifiers
                for KEM algorithms are specified in the corresponding documents for these algorithms
                (e.g., for ML-KEM see <xref target="I-D.ietf-lamps-kyber-certificates" />).
            </t>
        </section>

        <section title="Encrypted Certificate Payload" anchor="encryptedcert">
            <t> The Encrypted Certificate payload, denoted ECERT in this document, provides a
            means to transport certificates or other authentication-related
            information in encrypted form. The payload type for the Encrypted Certificate payload is &lt;TBA0 by IANA&gt;.
            This payload is semantically equivalent to the Certificate payload (defined in Section 3.6 of <xref target="RFC7296" />, 
            but it provides a means to encrypt the certificate information. For this purpose the format of the Encrypted Certificate payload 
            mirrors the format of the Encrypted payload (defined in Section 3.14 of <xref target="RFC7296" />) with the difference,
            that it contains not the encrypted IKE payloads, but the encrypted Cert Encoding and Certificate Data
            as defined in Section 3.6 of <xref target="RFC7296" />.
            </t>

            <figure align="center" anchor="enccertpld" title="Encrypted Certificate Payload Format">
                <artwork align="left"><![CDATA[
                        1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Next Payload  |C|  RESERVED   |         Payload Length        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                     Initialization Vector                     ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~         Encrypted Cert Encoding and Certificate Data          ~
   |                                                               |
   |               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               |             Padding (0-255 octets)            |
   +-+-+-+-+-+-+-+-+                               +-+-+-+-+-+-+-+-+
   |                                               |  Pad Length   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                    Integrity Checksum Data                    ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
               ]]></artwork>
            </figure>

            <t> Initialization Vector, Padding, Pad Length and Integrity Checksum Data
            are defined in Section 3.14 of <xref target="RFC7296" />.
            </t>

            <t> This document restricts the possible values of Cert Encoding in the ECERT payload 
            to either "X.509 bundle" (&lt;TBA5 by IANA&gt;) or "Hash and URL of X.509 bundle" (13).
            </t>

            <t> The payload is encrypted and authenticated using the same encryption and integrity algorithms 
            as were negotiated for IKE SA. The encryption and authentication keys are calculated as follows:
            </t>

            <figure>
                <artwork align="left"><![CDATA[
  EC_a | EC_e = prf+ ( SK_d, K )
            ]]></artwork>
            </figure>

            <t>where SK_d is from the current session keys (see Section 3.3.1 of <xref target="RFC9242" />) and K is the key 
            to protect the certificate data (like SS_i in <xref target="ike_intermediate_pqake" />).
            </t>

        </section>
    </section>

    </section>

    <section title="Interaction with Other IKEv2 Extensions" anchor="interaction">
        <t> To be added.
        </t>
    </section>

    <section title="Security Considerations" anchor="Security">

        <t> To be done later.  1) It may be not a good idea by directly showing the decapsulated secret ss as the means of authentication here. 
        The reason is that the entity being authenticated may employ the owner of the KEM public/private key pair as an oracle to decapsualte 
        the secret via running a different session, normally within a separate protocol or scenario where directly showing such a secret is harmless. 
        2) It may be preferable or <bcp14>MUST</bcp14> limit the use of such a KEM certificate only for KEM authentication. </t>

</section>
	

    <section title="IANA Considerations" anchor="IANA">

        <t> IANA is requested to make the following changes in the IKEv2 registries 
         "Internet Key Exchange Version 2 (IKEv2) Parameters" <xref target="IANA-IKEv2"></xref>:
        </t>

        <ol>

            <li> <t>Define a new payload type in the "IKEv2 Payload Types" registry:</t>

            <table>
              <thead>
                <tr>
                  <th align="center">Value</th>
                  <th align="center">Next Payload Type</th>
                  <th align="center">Notation</th>
<!--                  <th align="center">Reference</th> -->
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">TBA0</td>
                  <td align="center">Encrypted Certificate</td>
                  <td align="center">ECERT</td>
<!--                   <td align="center">This document</td> -->
                </tr>
              </tbody>
            </table>
            </li>

            <li> <t>Define a new authentication method in the "IKEv2 Authentication Method" registry:</t>
    	 
            <table>
              <thead>
                <tr>
                  <th align="center">Value</th>
                  <th align="center">IKEv2 Authentication Method</th>
<!--                  <th align="center">Reference</th> -->
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">TBA1</td>
                  <td align="center">KEM Authentication</td>
<!--                   <td align="center">This document</td> -->
                </tr>
              </tbody>
            </table>
            </li>

            <li> <t>Define three new status type notifications in the "IKEv2 Notify Message Status Types" registry:</t>

            <table>
              <thead>
                <tr>
                  <th align="center">Value</th>
                  <th align="center">Notify Message Status Type</th>
<!--                  <th align="center">Reference</th> -->
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">TBA2</td>
                  <td align="center">USE_AUTHKEM</td>
<!--                  <td align="center">This document</td> -->
                </tr>
                <tr>
                  <td align="center">TBA3</td>
                  <td align="center">AUTHKEM_CT</td>
<!--                  <td align="center">This document</td> -->
                </tr>
                <tr>
                  <td align="center">TBA4</td>
                  <td align="center">AUTHKEM_SSCONF</td>
<!--                  <td align="center">This document</td> -->
                </tr>
              </tbody>
            </table>
            </li>

            <li> <t>Define a new certificate encoding in the "IKEv2 Certificate Encodings" registry:</t>

            <table>
              <thead>
                <tr>
                  <th align="center">Value</th>
                  <th align="center">Certificate Encoding</th>
<!--                  <th align="center">Reference</th> -->
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="center">TBA5</td>
                  <td align="center">X.509 bundle</td>
<!--                   <td align="center">This document</td> -->
                </tr>
              </tbody>
            </table>
            </li>

        </ol>

    </section>

</middle>

<back>
  
<!--  
    <displayreference target="I-D.ietf-ipsecme-ikev2-pqc-auth" to="I-D.RSF25"/>
    <displayreference target="I-D.sfluhrer-ipsecme-ikev2-mldsa" to="I-D.Flu25"/>
    <displayreference target="I-D.hu-ipsecme-pqt-hybrid-auth" to="I-D.HMW"/>
    <displayreference target="I-D.celi-wiggers-tls-authkem" to="I-D.WCS"/>
    <displayreference target="I-D.wiggers-tls-authkem-psk" to="I-D.WCSSS"/>
    <displayreference target="I-D.ietf-pquip-hybrid-signature-spectrums" to="I-D.BHCD"/>
    <displayreference target="I-D.ietf-ipsecme-ikev2-mlkem" to="I-D.KR24"/>
-->

    <references title="Normative References">

        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
		<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9242.xml"/>

        <reference anchor="IANA-IKEv2" target="https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml">
          <front>
            <title> Internet Key Exchange Version 2 (IKEv2) Parameters </title>
            <author fullname=" " initials=" " surname=" "/>
		 
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
        </reference>
		
        <!-- The recommended and simplest way to include a well known reference -->
 
    </references>

    <references>
        <name>Informative References</name>
		
		<reference anchor="HAZ24" target="https://tches.iacr.org/index.php/TCHES/article/view/11419">
          <front>
            <title> Revisiting Keccak and Dilithium Implementations on ARMv7-M </title>
            <author fullname="J. Huang" initials="J." surname="Huang"/>
            <author fullname="A. Adomnicai" initials="A." surname="Adomnicai"/>
			<author fullname="J. Zhang" initials="J." surname="Zhang"/>
			<author fullname="W. Dai" initials="W." surname="Dai"/>
            <author fullname="Y. Liu" initials="Y. " surname="Liu"/>
			<author fullname="R. C. C. Cheung" initials="R. C. C." surname="Cheung"/>
			<author fullname="C. K. Koc" initials="C. K." surname="Koc"/>
			<author fullname="D. Chen" initials="D." surname="Chen"/>
            <date month="March" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="IACR Transactions on Cryptographic Hardware and Embedded Systems. " value="ISSN 2569-2925, Vol. 2024, No. 2, pp. 1–24."/>
        </reference>
		
		<reference anchor="SSW20"  target=" ">
          <front>
            <title> Post-quantum TLS without handshake signatures </title>
            <author fullname="P. Schwabe" initials="P." surname="Schwabe"/>
            <author fullname="D. Stebila" initials="D." surname="Stebila"/>
			<author fullname="T. Wiggers" initials="T." surname="Wiggers"/>
            <date month="November" year="2020"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="In the Proceedings of ACM CCS 2020, pages 1461–1480. ACM Press." value="doi:10.1145/3372297.3423350."/>
        </reference>
				
        <reference anchor="FIPS203"  target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.pdf">
          <front>
            <title>FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard </title>
            <author fullname="National Institute of Standards and Technology" initials="" surname="National Institute of Standards and Technology" />
            <date month="August" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Federal Information Processing Standards Publication" value=""/>
        </reference>

    <reference anchor="FIPS204"  target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf">
          <front>
            <title>FIPS 204: Module-Lattice-Based Digital Signature Standard </title>
            <author fullname="National Institute of Standards and Technology" initials="" surname="National Institute of Standards and Technology" />
            <date month="August" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Federal Information Processing Standards Publication" value=""/>
        </reference>

        <reference anchor="FIPS205"  target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf">
          <front>
            <title>FIPS 205: Stateless Hash-Based Digital Signature Standard </title>
            <author fullname="National Institute of Standards and Technology" initials="" surname="National Institute of Standards and Technology" />
            <date month="August" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Federal Information Processing Standards Publication" value=""/>
        </reference>

<!--        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7427.xml"/> -->
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9370.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7383.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9593.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9867.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ipsecme-ikev2-pqc-auth.xml"/>
<!--        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.sfluhrer-ipsecme-ikev2-mldsa.xml"/> -->
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.hu-ipsecme-pqt-hybrid-auth.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.celi-wiggers-tls-authkem.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.wiggers-tls-authkem-psk.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pquip-hybrid-signature-spectrums.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-kyber-certificates.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ipsecme-ikev2-mlkem.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.smyslov-ipsecme-ikev2-downgrade-prevention.xml"/>

        <reference anchor="X.690"  target="">
          <front>
            <title>Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) </title>
            <author fullname="ITU-T " initials="" surname="ITU-T" />
            <date month="February" year="2021"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="ISO/IEC 8825-1:2021 (E),  " value="ITU-T Recommendation X.690"/>
        </reference>
		
      </references>
    
    <section anchor="Acknowledgements" numbered="false">
        <name>Acknowledgements</name>
        <t>Thom Wiggers shared an idea to provide identity protection of one of the peers against active attackers.
        </t>
    </section>
	
    <section anchor="Contributors" numbered="false">
      <name>Contributors</name>

      <t>Uri Blumenthal and Brandon Luo contributed a lot to the design of this protocol as authors of PQuAKE protocol. 
      </t>
    </section>

</back>

</rfc>

<!--

<reference anchor="I-D.Kyber24"  target="https://datatracker.ietf.org/doc/draft-cfrg-schwabe-kyber/">
          <front>
            <title>Kyber Post-Quantum KEM </title>
            <author fullname="Peter Schwabe" initials="P. " surname="Schwabe" />
			<author fullname="Bas Westerbaan" initials="B. " surname="Westerbaan" />
            <date month="January" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Work in Progress, " value="Internet-Draft, "/>
        </reference>
		
	
		<reference anchor="OPM23"  target="">
          <front>
            <title>Where Is the Research on Cryptographic Transition and Agility?</title>
            <author fullname="D. Ott" initials="D." surname="Ott"/>
            <author fullname="K. Paterson" initials="K." surname="Paterson"/>
			<author fullname="D. Moreau" initials="D." surname="Moreau"/>
            <date month="January" year="2023"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Communications of the ACM, " value="66(4): 29-32"/>
        </reference>
		
		<reference anchor="FrodoKEM"  target="https://frodokem.org/files/FrodoKEM-standard_proposal-20230314.pdf">
          <front>
            <title>FrodoKEM: Learning With Errors Key Encapsulation</title>
            <author fullname="E. Alkim" initials="E." surname="Alkim"/>
            <author fullname="J. W. Bos" initials="J. W." surname="Bos"/>
			<author fullname="L. Ducas" initials="L." surname="Ducas"/>
			<author fullname="P. Longa" initials="P." surname="Longa"/>
            <author fullname="I. Mironov" initials="I. " surname="Mironov"/>
			<author fullname="M. Naehrig" initials="N." surname="Naehrig"/>
			<author fullname="V. Nikolaenko" initials="V." surname="Nikolaenko"/>
			<author fullname="C. Peikert" initials="C." surname="Peikert"/>
			<author fullname="A. Raghunathan" initials="A." surname="Raghunathan"/>
            <author fullname="D. Stebila" initials="D. " surname="Stebila"/>
            <date month="March" year="2023"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Preliminary Standardization Proposal submitted to ISO" value=""/>
        </reference>
		
<reference anchor="CD22"  target="https://eprint.iacr.org/2022/975">
          <front>
            <title> An Efficient Key Recovery Attack on SIDH </title>
            <author fullname="W. Castryck" initials="W." surname="Castryck"/>
            <author fullname="T. Decru" initials="T." surname="Decru"/>
            <date month="July" year="2022"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
	         <seriesInfo name="Formal version published in the proceddings of EUROCRYPT 2023" value=""/>
			 </reference>
			 
			 <reference anchor="I-D.D24"  target="https://datatracker.ietf.org/doc/draft-ietf-pquip-pqt-hybrid-terminology/">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="F. Driscoll"/>
            <date month="February" year="2024"/>
            <abstract>
              <t> .. </t>
            </abstract>
          </front>
          <seriesInfo name="Work in Progress, " value="Internet-Draft, "/>
        </reference>
		
-->