<?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-01" category="std" 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-01"/>
    <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="16"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>key share</keyword>
    <keyword>Classic McEliece</keyword>
    <abstract>
      <?line 223?>

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large public key algorithms, including the code-based cryptographic algorithm family Classic McEliece (see <xref target="SJ25"/>, <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 include case statements 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" field is expanded in KeyShareEntryPQC to accommodate a large public key that is greater than 65,535 Bytes:</t>
      <artwork><![CDATA[

    struct {
       NamedGroup group;
       select (NameGroup.group) {
       case classicmceliece6688128 | classicmceliece6960119
       | classicmceliece8192128
       | rlcel5 :
             break;
       default :
             opaque key_exchange<1..2^16-1>;
       }
    } KeyShareEntry;

    struct {
       NamedGroup group;
       select (NamedGroup.group) {
       case classicmceliece6688128 | classicmceliece6960119
       | classicmceliece8192128
       | rlcel5 :
             opaque key_exchange<1..2^24-1>;
       default :
             break;
       }
    } KeyShareEntryPQC

]]></artwork>
      <t>Special Note: "classicmceliece6688128" above (and in this document) represents the choice of choosing either classicmceliece6688128 or classicmceliece6688128f, as a party can choose either of the two (as similarly stated in Section 4 of <xref target="SJ25"/>). The same applies to "classicmceliece6960119" in this document (classicmceliece6960119 or classicmceliece6960119f) and also to "classicmceliece8192128" (classicmceliece8192128 or classicmceliece8192128f).</t>
      <t>Another Note: An additional algorithm is included in the above case statements, "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(0x002A),
              classicmceliece6960119(0x002B),
              classicmceliece8192128(0x002C),

              /* RLCE Algorithm */
              rlcel5(0x002D),
          } 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). "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 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 NamedGroup.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>The new key share proposed in this document "key_share_pqc", along with its value of 63, needs to be updated in the registry specified for TLS ExtensionType Values. See <xref target="TLSE24"/>. The registry for TLS Supported Groups will need to have the proper values assigned to the Classic McEliece algorithms mentioned in this document with the entries of 42-44 (and also for the RLCE algorithm with 45; see Section 7). See <xref target="TLSP25"/>.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thank you to D. J. Bernstein, as his advice on Classic McEliece help improved the content of this document. Thank you also to Simon Josefsson since his feedback helped clarify and enhance understanding of Classic McEliece in this record.</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="SJ25" target="draft-josefsson-mceliece-02, (work in progress)">
          <front>
            <title>Classic McEliece</title>
            <author initials="S." surname="Josefsson" fullname="Simon Josefsson">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="TLSE24" 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="2024"/>
          </front>
        </reference>
        <reference anchor="TLSP25" 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="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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

-->

</rfc>
