<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wagner-tls-keysharepqc-04" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="keyshare">New Key Share Extension for Classic McEliece Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-wagner-tls-keysharepqc-04"/>
    <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
      <organization>UNC Charlotte</organization>
      <address>
        <postal>
          <street>9201 University City Blvd</street>
          <city>Charlotte, NC</city>
          <code>28223</code>
          <country>USA</country>
        </postal>
        <email>jwagne31@charlotte.edu</email>
      </address>
    </author>
    <author initials="Y." surname="Wang" fullname="Yongge Wang">
      <organization>UNC Charlotte</organization>
      <address>
        <postal>
          <street>9201 University City Blvd</street>
          <city>Charlotte, NC</city>
          <code>28223</code>
          <country>USA</country>
        </postal>
        <email>yongge.wang@charlotte.edu</email>
      </address>
    </author>
    <date year="2025" month="May" day="29"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>key share</keyword>
    <keyword>Classic McEliece</keyword>
    <abstract>
      <?line 276?>

<t>RFC 8446 is modified to where another key share extension is introduced to accommodate both public keys and ciphertexts in ClientHello and ServerHello messages for post-quantum algorithms that have large public keys, including algorithms of the code-based cryptographic scheme Classic McEliece.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://jwagrunner.github.io/internet-draft/draft-wagner-tls-keysharepqc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wagner-tls-keysharepqc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security  mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jwagrunner/internet-draft"/>.</t>
    </note>
  </front>
  <middle>
    <?line 280?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large public key algorithms, including the code-based cryptographic algorithm family Classic McEliece (see <xref target="NIST"/>, <xref target="DJB25"/>, <xref target="RJM78"/>, and <xref target="OQS24"/>), cannot be easily implemented in Transport Layer Security (TLS) Protocol Version 1.3 ([RF8446]) due to the current key share limitations of 65,535 Bytes. It is important to consider such uses of algorithms given that Classic McEliece is a Round 4 algorithm submitted in the National Institute of Standards and Technology (NIST) standardization process (see <xref target="PQC25"/>). Therefore, this document proposes a new key share that has a higher limit and is utilized in ClientHello and ServerHello messages, which is a modification of <xref target="RFC8446"/>. For example, if a Classic McEliece algorithm is requested in a TLS 1.3 key exchange, this new key share extension will be constructed. However, if a classical algorithm is requested for key exchange, a normal key share extension is constructed. Thus, enabling the use of Classic McEliece algorithms to be used in TLS 1.3 key exchanges and also presenting them as an alternative option to replace classical algorithms for future protection against the threat of attackers in possession of powerful quantum computers that will break classical encryption.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="new-key-share-extension">
      <name>New Key Share Extension</name>
      <t>Based on the key share extension from <xref target="RFC8446"/> is introduced a new key share extension in this document, "key_share_pqc". This is reflected in this document and is represented as KeyShareEntryPQC below, based on the existing KeyShareEntry from <xref target="RFC8446"/>. However, this is modified along with the existing KeyShareEntry structure to test if the key exchange algorithm chosen in a TLS 1.3 connection belongs from the Classic McEliece family, and if it is, then KeyShareEntryPQC is constructed. If the opposite is true, where the key exchange algorithm is not from the Classic McEliece family, then KeyShareEntry is constructed. Note that the "key_exchange" fields are expanded in KeyShareEntryPQC to accommodate a large public key that is greater than 65,535 Bytes:</t>
      <artwork><![CDATA[

       struct {
          NamedGroup group;
          select (KeyShareEntry.group) {
          case classicmceliece6688128:      Empty;
          case classicmceliece6960119:      Empty;
          case classicmceliece8192128:      Empty;
          case rlcel5:                      Empty;
          case other large PQ algorithm1:   Empty;
          case other large PQ algorithm2:   Empty;
          case etc.:                        Empty;
          default:                          opaque key_exchange<1..2^16-1>;
          }
       } KeyShareEntry;

      struct {
          NamedGroup group;
          select (KeyShareEntryPQC.group) {
          case classicmceliece6688128:      opaque key_exchange<1..2^24-1>;
          case classicmceliece6960119:      opaque key_exchange<1..2^24-1>;
          case classicmceliece8192128:      opaque key_exchange<1..2^24-1>;
          case rlcel5:                      opaque key_exchange<1..2^24-1>;
          case other large PQ algorithm1:   opaque key_exchange<1..2^24-1>;
          case other large PQ algorithm2:   opaque key_exchange<1..2^24-1>;
          case etc.:                        opaque key_exchange<1..2^24-1>;
          default:                          Empty;
          }
       } KeyShareEntryPQC;

]]></artwork>
      <t>Note: PQ (Post-Quantum) where "other large PQ algorithm1" and "other large PQ algorithm2" and "etc." above indicates that one or more future post-quantum algorithms with large public key sizes can be added by just defining a constant for each of these post-quantum algorithms.</t>
      <t>Another Note: An additional algorithm is included in the above, "rlcel5", since it also has a large public key beyond the 65,535 Byte limit. See Section 7 for more information discussing this RLCE algorithm.</t>
      <t>This is then applied to the existing KeyShareClientHello structure, which originates from <xref target="RFC8446"/>, that now contains an additional field for KeyShareEntryPQC:</t>
      <artwork><![CDATA[

    struct {
       KeyShareEntry client_shares<0..2^16-1>;
       KeyShareEntryPQC client_shares<0..2^24-1>;
    } KeyShareClientHello;

]]></artwork>
      <t>Since the KeyShareClientHello needs to be expanded to accommodate for the KeyShareEntryPQC struct, the same applies to the existing Extension struct, originated as well from <xref target="RFC8446"/> but "extension_data" is now expanded:</t>
      <artwork><![CDATA[

    struct {
      ExtensionType extension_type;
      opaque extension_data<0..2^24-1>;
    } Extension;

]]></artwork>
      <t>Since there is a new key share extension to accommodate keys larger than the 65,535 Byte limit (KeyShareEntryPQC), this is reflected in the existing ExtensionType structure from <xref target="RFC8446"/> where this is the new type that holds a value of 63, "key_share_pqc":</t>
      <artwork><![CDATA[

    enum {
            server_name(0),                             /* RFC 6066 */
            max_fragment_length(1),                     /* RFC 6066 */
            status_request(5),                          /* RFC 6066 */
            supported_groups(10),                       /* RFC 8422, 7919 */
            signature_algorithms(13),                   /* RFC 8446 */
            use_srtp(14),                               /* RFC 5764 */
            heartbeat(15),                              /* RFC 6520 */
            application_layer_protocol_negotiation(16), /* RFC 7301 */
            signed_certificate_timestamp(18),           /* RFC 6962 */
            client_certificate_type(19),                /* RFC 7250 */
            server_certificate_type(20),                /* RFC 7250 */
            padding(21),                                /* RFC 7685 */
            pre_shared_key(41),                         /* RFC 8446 */
            early_data(42),                             /* RFC 8446 */
            supported_versions(43),                     /* RFC 8446 */
            cookie(44),                                 /* RFC 8446 */
            psk_key_exchange_modes(45),                 /* RFC 8446 */
            certificate_authorities(47),                /* RFC 8446 */
            oid_filters(48),                            /* RFC 8446 */
            post_handshake_auth(49),                    /* RFC 8446 */
            signature_algorithms_cert(50),              /* RFC 8446 */
            key_share(51),                              /* RFC 8446 */
            key_share_pqc(63),
            (65535)
        } ExtensionType;

]]></artwork>
      <t>Since the "extension_data" field will be much larger for a KeyShareClientHello that contains a large public key that is greater than the previously defined 65,535 Byte limit, an example being a Classic McEliece public key, the server must be able to handle this circumstance when receiving the ClientHello message. One way is to compare the value for a packet that contains extensions including a large public key from the ClientHello message to a macro constant (for example,  "CLIENT_HELLO_MIN_EXT_LENGTH" as defined in this introduced TLS implementation in this paper, see <xref target="SRVR1650"/> and <xref target="SRVR1211"/>) and if this packet value is longer than this constant, the server will change the way it normally handles all of the extensions. This constant could be easily modified in the aforementioned TLS Open Secure Socket Layer (OpenSSL) implementation. The process of how the server collects the extensions from a ClientHello message must also be modified, as the server must be able to process the new key share extension of Type 63 differently than the other extensions, should the server see this inside a ClientHello message. For example, see <xref target="EXT652"/>.</t>
      <t>The ServerHello message is modified as well where the KeyShareServerHello structure originates from <xref target="RFC8446"/>:</t>
      <artwork><![CDATA[

struct {
    KeyShareEntry server_share;
    KeyShareEntryPQC server_sharePQC;
} KeyShareServerHello;

]]></artwork>
      <t>This new "key_share_pqc" extension is therefore can be implemented in the full TLS handshake, where Figure 1 from <xref target="RFC8446"/> is modified to be the following:</t>
      <artwork><![CDATA[

       Client                                           Server

Key  ^ ClientHello
Exch | + key_share*
     | + key_share_pqc*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     v + pre_shared_key*       -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                             + key_share_pqc*  |
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                        {CertificateRequest*}  v  Params
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]

              +  Indicates noteworthy extensions sent in the
                 previously noted message.

              *  Indicates optional or situation-dependent
                 messages/extensions that are not always sent.

              {} Indicates messages protected using keys
                 derived from a [sender]_handshake_traffic_secret.

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.

Figure 1: Full TLS Handshake with "key_share_pqc" extension.

]]></artwork>
    </section>
    <section anchor="namedgroup-addition-for-classic-mceliece">
      <name>NamedGroup Addition for Classic McEliece</name>
      <t>The values for Classic McEliece algorithms are added below in the NamedGroup struct that originates from <xref target="RFC8446"/>:</t>
      <artwork><![CDATA[

    enum {

              /* Elliptic Curve Groups (ECDHE) */
              secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019),
              x25519(0x001D), x448(0x001E),

              /* Finite Field Groups (DHE) */
              ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102),
              ffdhe6144(0x0103), ffdhe8192(0x0104),

              /* Reserved Code Points */
              ffdhe_private_use(0x01FC..0x01FF),
              ecdhe_private_use(0xFE00..0xFEFF),
              (0xFFFF)

              /* Classic McEliece Algorithms */
              classicmceliece6688128(0x0203),
              classicmceliece6960119(0x0204),
              classicmceliece8192128(0x0205),

              /* RLCE Algorithm */
              rlcel5(0x0206),
          } NamedGroup;

]]></artwork>
      <t>Note: An RLCE algorithm is also added above. See Section 7 for more information discussing this RLCE algorithm.</t>
    </section>
    <section anchor="modification-to-pskkeyexchangemode-structure">
      <name>Modification to PskKeyExchangeMode structure</name>
      <t>There are two key establishments that are considered when examining the structure of PskKeyExchangeMode from <xref target="RFC8446"/>. Since there is no Diffie Hellman algorithm in use with a pre-shared key (PSK) when considering the use of a Classic McEliece algorithm for key exchange, then there must be another key exchange mode to utilize in this case. Therefore, this is reflected in the existing <xref target="RFC8446"/> PskKeyExchangeMode structure below where "psk_pqc_ke(2)" is added:</t>
      <artwork><![CDATA[

enum {
 psk_ke(0), psk_dhe_ke(1), psk_pqc_ke(2), (255)
} PskKeyExchangeMode;

]]></artwork>
      <t>When selecting a Classic McEliece algorithm and using an external PSK or a resumption PSK, "02" will then be listed for the "psk_key_exchange_modes" extension along with the new "key_share_pqc" extension in the ClientHello message. At the end of this ClientHello message is printed the "00 29" extension (pre-shared key extension), where the PSK identity should be printed and is mapped to the binder that should proceed it in this pre-shared key extension. The ServerHello message will also contain the new "key_share_pqc" extension, and will as well contain the pre-shared key extension, where it should contain "00 00" at the end which represents the server selecting the PSK identity of 0 (for example: the Selected Identity of 0 shown in the pre-shared key extension in a ServerHello message in this Wireshark example: <xref target="RASHOK20"/>). Overall, this is a new key exchange selecting a Classic McEliece algorithm using a PSK, whether its external or resumption, and this can be demonstrated in the TLS Implementation below.</t>
      <t>As stated above, resumption PSK with a Classic McEliece algorithm chosen as a key exchange algorithm involves the use of the new "key_share_pqc" extension for both the ClientHello and ServerHello messages. Thus, the Resumption and PSK Message Flow diagram (which originates from Figure 3 of <xref target="RFC8446"/>) is derived for this situation and has been tested with the TLS Implementation mentioned in this document:</t>
      <artwork><![CDATA[

      Client                                 Server

Initial Handshake
      ClientHello
         key_share_pqc         --------->
                                             ServerHello
                                               key_share_pqc
                                             EncryptedExtensions
                                             Certificate
                                             CertificateVerify
                              <---------     Finished
      Finished                ---------->
                              <---------     NewSessionTicket
                              <---------     NewSessionTicket


Subsequent Handshake
       ClientHello
          key_share_pqc
          pre_shared_key       --------->
                                               ServerHello
                                                  key_share_pqc
                                                  pre_shared_key
                                               EncryptedExtensions
                              <---------       Finished
       Finished               ---------->
                              <---------       NewSessionTicket


Figure 2: A Classic McEliece algorithm used with Resumption PSK.

]]></artwork>
    </section>
    <section anchor="hello-retry-request-using-new-key-share-extension">
      <name>Hello Retry Request using New Key Share Extension</name>
      <t>In a Hello Retry Request scenario, the first ClientHello message will have two algorithms listed in its "supported_groups" extension, where the numerical identifier (NID) for the algorithm that is no longer recognized by the server as an acceptable algorithm (X448 for example as proven in the TLS implementation), will first be listed in this extension, followed by the NID for a Classic McEliece algorithm. In this same ClientHello message is where "02" will be listed in the "psk_key_exchange_modes" extension, and the original "key_share" extension (value 51) is also shown with its public key for the unacceptable algorithm.</t>
      <t>When the server responds with the HelloRetryRequest message, the random is the same special value for SHA-256 as indicated in Section 4.1.3 of <xref target="RFC8446"/>, and has the same exact fields ("legacy_version", "random", "legacy_session_id_echo", "cipher_suite", "legacy_compression_method", and "extensions") as in the ServerHello structure indicated in <xref target="RFC8446"/> (see section 4.1.3). The extensions field not only consists of the "supported_versions" extension, but also the new "key_share_pqc" extension where the server offers the client the Classic McEliece algorithm NID it shares with the client.</t>
      <t>When the client sends a second ClientHello in response to the HelloRetryRequest, this will be the same message as the first ClientHello with one exception: the original "key_share" extension is replaced with the new "key_share_pqc" extension which contains the large public key of a Classic McEliece algorithm. Then the ServerHello message will then respond containing the new "key_share_pqc" extension.</t>
      <t>Therefore, this Hello Retry Request scenario is reflected in Figure 3 below, which is a modification of Figure 2 in <xref target="RFC8446"/>, and this can be demonstrated in the TLS Implementation mentioned in this documentation:</t>
      <artwork><![CDATA[

        Client                                    Server

        ClientHello
          key_share             -------->
                                                  HelloRetryRequest
                                <--------           key_share_pqc
        ClientHello
          key_share_pqc         -------->
                                                  ServerHello
                                                    key_share_pqc
                                                  EncryptedExtensions
                                                  Certificate
                                                  CertificateVerify
                                <--------         Finished
         Finished               -------->
                                <--------         NewSessionTicket
                                <--------         NewSessionTicket

Figure 3: A Classic McEliece algorithm used in a Hello Retry Request scenario.

]]></artwork>
      <t>Note: When the client processes the HelloRetryRequest message, it must mark the new "key_share_pqc" extension as an unsolicited extension, which would be an additional exception to the rule noted in <xref target="RFC8446"/> regarding extension responses <bcp14>MUST NOT</bcp14> be sent if the corresponding extension requests were not sent by a remote endpoint (see section 4.2 in <xref target="RFC8446"/>).</t>
      <t>The following structure would remain intact from <xref target="RFC8446"/>, since support would already be provided for a Classic McEliece algorithm being in NamedGroup (see Section 4):</t>
      <artwork><![CDATA[

struct {
    NamedGroup selected_group;
} KeyShareHelloRetryRequest;

]]></artwork>
      <t>When a Hello Retry Request involves a PSK in use with a Classic McEliece algorithm, both the first and second ClientHello messages (the second one being sent after a HelloRetryRequest message) will contain the exact same content except the first ClientHello will have the original "key_share" extension and the second ClientHello will have the new "key_share_pqc" extension. Another exception includes different binders in both ClientHello messages' pre-shared key extensions. This pre-shared key extension appears as the last extension in both ClientHello messages as well in the ServerHello message.</t>
    </section>
    <section anchor="other-use-case-rlce-algorithm">
      <name>Other Use Case (RLCE Algorithm)</name>
      <t>The Random Linear Code-based Encryption (RLCE) algorithm group (see <xref target="RLCE17"/>) is another code-based cryptographic scheme (NIST Round 1 <xref target="NIST1"/>). "rlcel5" is a RLCE algorithm from this group (where the public key size is 1,232,001 Bytes) that can be used in the new key share extension, and can be demonstrated for use for TLS key exchange in the TLS Implementation mentioned in this document.</t>
    </section>
    <section anchor="tls-implementation">
      <name>TLS Implementation</name>
      <t>A TLS implementation exists that tests the use of a new key share extension for both the ClientHello and ServerHello messages that is implemented for OpenSSL, and also where the mentioned Classic McEliece algorithms can be chosen for key exchange when initiating TLS connections. It can be accessed here: <xref target="JWYW25"/>.</t>
    </section>
    <section anchor="summary-of-changes-from-rfc-8446">
      <name>Summary of Changes from RFC 8446</name>
      <t>A new structure is introduced of KeyShareEntryPQC along with modifications of existing structures including KeyShareEntry, NamedGroup, Extension, ExtensionType, KeyShareClientHello, and KeyShareServerHello. Adding a new ExtensionType of "key_share_pqc" allows for the addition of this new structure of KeyShareEntryPQC, which is based on the existing KeyShareEntry, but "key_exchange" has been expanded and select statements are added to both structures which depend on the KeyShareEntry.group or KeyShareEntryPQC.group being called in a TLS connection for key exchange. This new KeyShareEntryPQC will now also appear in existing structures of KeyShareClientHello and KeyShareServerHello. Thus, the "extension_data" is expanded in the existing Extension structure.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The new "key_share_pqc" extension <bcp14>MUST NOT</bcp14> be used with 0-RTT, as this subjects the server to replay attacks of multiple large ClientHello messages (see <xref target="RFC8446"/> and an example of a replay attack of several ClientHello messages in <xref target="HN23"/>). If this extension were to be used with 0-RTT, the server may receive duplicated ClientHello messages where each of them contain a large public key of a Classic McEliece algorithm in each ClientHello's "key_share_pqc" extension, which will not only cause resource exhaustion on the server (see Section 8.2 in <xref target="RFC8446"/>), but memory utilization will rise quickly than noted in <xref target="MEA23"/> and will cause the client-hello recording defense mechanism (see Section 8.2 in <xref target="RFC8446"/> and <xref target="MEA23"/>) to be used as a Denial-of-Service attack on the server. Therefore, 0-RTT and the use of the "early_data" extension <bcp14>MUST NOT</bcp14> be used with the "key_share_pqc" extension.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Probable request for the new key share proposed in this document "key_share_pqc" to have a value of 63 in the registry specified for TLS ExtensionType Values (see <xref target="TLSE"/>).</t>
      <t>Probable request for the registry for TLS Supported Groups to have the proper values assigned to the Classic McEliece and the RLCE algorithms mentioned in this document (see <xref target="TLSP"/>):</t>
      <t>Description: classicmceliece6688128</t>
      <t>Value: 0x0203</t>
      <t>Description: classicmceliece6960119</t>
      <t>Value: 0x0204</t>
      <t>Description: classicmceliece8192128</t>
      <t>Value: 0x0205</t>
      <t>Description: rlcel5</t>
      <t>Value: 0x0206</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thank you D. J. Bernstein and Simon Josefsson as they advised to have at least one reference for the description of Classic McEliece, and to limit the amount of Classic McEliece variants for this record. Thank you also to Eliot Lear for his feedback on other fields regarding the next algorithm needed.</t>
      <t>Thank you as well to Martin Thomson and David Schinazi, as their Internet Draft template was used to generate this document, before the authors' information was added. The authors also want to thank the contributors of the kramdown-rfc GitHub repository, as their examples helped with the format of the figures, references, and authors' information presented in this document. Thank you also to Joyce Reynolds and Robert Braden, as their Internet Draft <xref target="JR04"/> was helpful as a guide on how to write the citations in this document (i.e., using citation brackets with author's initials, year, etc.).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446" target="https://datatracker.ietf.org/doc/html/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="TLSE" target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="TLSP" target="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST" target="https://csrc.nist.gov/projects/post-quantum-cryptography/round-4-submissions">
          <front>
            <title>Classic McEliece</title>
            <author initials="D." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <author initials="T." surname="Chou" fullname="Tung Chou">
              <organization/>
            </author>
            <author initials="C." surname="Cid" fullname="Carlos Cid">
              <organization/>
            </author>
            <author initials="J." surname="Gilcher" fullname="Jan Gilcher">
              <organization/>
            </author>
            <author initials="T." surname="Lange" fullname="Tanja Lange">
              <organization/>
            </author>
            <author initials="V." surname="Maram" fullname="Varun Maram">
              <organization/>
            </author>
            <author initials="I." surname="von Maurich" fullname="Ingo von Maurich">
              <organization/>
            </author>
            <author initials="R." surname="Misoczki" fullname="Rafael Misoczki">
              <organization/>
            </author>
            <author initials="R." surname="Niederhagen" fullname="Ruben Niederhagen">
              <organization/>
            </author>
            <author initials="E." surname="Persichetti" fullname="Edoardo Persichetti">
              <organization/>
            </author>
            <author initials="C." surname="Peters" fullname="Christiane Peters">
              <organization/>
            </author>
            <author initials="N." surname="Sendrier" fullname="Nicolas Sendrier">
              <organization/>
            </author>
            <author initials="J." surname="Szefer" fullname="Jakub Szefer">
              <organization/>
            </author>
            <author initials="C." surname="Tjhai" fullname="Cen Jung Tjhai">
              <organization/>
            </author>
            <author initials="M." surname="Tomlinson" fullname="Martin Tomlinson">
              <organization/>
            </author>
            <author initials="W." surname="Wang" fullname="Wen Wang">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="NIST1" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/round-1-submissions">
          <front>
            <title>RLCE-KEM</title>
            <author initials="Y." surname="Wang" fullname="Yongge Wang">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="RJM78" target="https://ipnpr.jpl.nasa.gov/progress_report2/42-44/44N.PDF">
          <front>
            <title>A Public-Key Cryptosystem Based On Algebraic Coding Theory</title>
            <author initials="R." surname="McEliece" fullname="R. J. McEliece">
              <organization/>
            </author>
            <date year="1978"/>
          </front>
        </reference>
        <reference anchor="DJB25" target="https://classic.mceliece.org/impl.html">
          <front>
            <title>Classic McEliece: Implementation</title>
            <author initials="D." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <author initials="T." surname="Chou" fullname="Tung Chou">
              <organization/>
            </author>
            <author initials="C." surname="Cid" fullname="Carlos Cid">
              <organization/>
            </author>
            <author initials="J." surname="Gilcher" fullname="Jan Gilcher">
              <organization/>
            </author>
            <author initials="T." surname="Lange" fullname="Tanja Lange">
              <organization/>
            </author>
            <author initials="V." surname="Maram" fullname="Varun Maram">
              <organization/>
            </author>
            <author initials="I." surname="von Maurich" fullname="Ingo von Maurich">
              <organization/>
            </author>
            <author initials="R." surname="Misoczki" fullname="Rafael Misoczki">
              <organization/>
            </author>
            <author initials="R." surname="Niederhagen" fullname="Ruben Niederhagen">
              <organization/>
            </author>
            <author initials="E." surname="Persichetti" fullname="Edoardo Persichetti">
              <organization/>
            </author>
            <author initials="C." surname="Peters" fullname="Christiane Peters">
              <organization/>
            </author>
            <author initials="N." surname="Sendrier" fullname="Nicolas Sendrier">
              <organization/>
            </author>
            <author initials="J." surname="Szefer" fullname="Jakub Szefer">
              <organization/>
            </author>
            <author initials="C." surname="Tjhai" fullname="Cen Jung Tjhai">
              <organization/>
            </author>
            <author initials="M." surname="Tomlinson" fullname="Martin Tomlinson">
              <organization/>
            </author>
            <author initials="W." surname="Wang" fullname="Wen Wang">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RLCE17" target="https://eprint.iacr.org/2017/206.pdf">
          <front>
            <title>Quantum Resistant Public Key Encryption Scheme RLCE and IND-CCA2 Security for McEliece Schemes</title>
            <author initials="Y." surname="Wang" fullname="Yongge Wang">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="PQC25" target="https://csrc.nist.gov/projects/post-quantum-cryptography/round-4-submissions">
          <front>
            <title>Post-Quantum Cryptography: Round 4 Submissions</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="OQS24" target="https://openquantumsafe.org/liboqs/algorithms/kem/classic_mceliece">
          <front>
            <title>liboqs / Algorithms / Classic McEliece</title>
            <author>
              <organization>Open Quantum Safe</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SRVR1650" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/statem_srvr.c#L1650">
          <front>
            <title>ssl/statem/statem_srvr.c#L1650</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SRVR1211" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/statem_srvr.c#L1211">
          <front>
            <title>ssl/statem/statem_srvr.c#L1211</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="EXT652" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/extensions.c#L652C9-L663C9">
          <front>
            <title>ssl/statem/extensions.c#L652C9-L663C9</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="MEA23" target="https://ieeexplore.ieee.org/document/10278190">
          <front>
            <title>Replay Attack in TLS 1.3 0-RTT Handshake: Countermeasure Techniques</title>
            <author initials="M. E." surname="Abdelhafez" fullname="M.E Abdelhafez">
              <organization/>
            </author>
            <author initials="S." surname="Ramadass" fullname="Sureswaran Ramadass">
              <organization/>
            </author>
            <author initials="M. S. M." surname="Gismallab" fullname="Mohammed S. M. Gismallab">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RASHOK20" target="https://stackoverflow.com/questions/58719595/how-to-do-tls-1-3-psk-using-openssl">
          <front>
            <title>How to do TLS 1.3 PSK using openssl?</title>
            <author initials="" surname="rashok" fullname="rashok">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="JWYW25" target="https://github.com/jwagrunner/openssl">
          <front>
            <title>openssl</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <author initials="Y." surname="Wang" fullname="Yongge Wang">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="HN23" target="https://medium.com/@hnasr/the-danger-of-0-rtt-a815d2b99ac6">
          <front>
            <title>The danger of TLS Zero RTT</title>
            <author initials="H." surname="Nasser" fullname="Hussein Nasser">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="JR04" target="https://www.rfc-editor.org/old/instructions2authors.txt">
          <front>
            <title>Instructions to Request for Comments (RFC) Authors</title>
            <author initials="J." surname="Reynolds" fullname="Joyce Reynolds">
              <organization/>
            </author>
            <author initials="R." surname="Braden" fullname="Robert Braden">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
MOUW3WbVVtcxI1c2/hf4tMRSaHUAAA==

-->

</rfc>
