<?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.21 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-pquip-pqc-engineers-07" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="PQC for Engineers">Post-Quantum Cryptography for Engineers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-07"/>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Dimitrios Schoinianakis">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Athens</city>
          <country>Greece</country>
        </postal>
        <email>dimitrios.schoinianakis@nokia-bell-labs.com</email>
      </address>
    </author>
    <author fullname="Timothy Hollebeek">
      <organization>DigiCert</organization>
      <address>
        <postal>
          <city>Pittsburgh</city>
          <country>USA</country>
        </postal>
        <email>tim.hollebeek@digicert.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="24"/>
    <area>Security</area>
    <workgroup>PQUIP</workgroup>
    <keyword>PQC</keyword>
    <abstract>
      <?line 233?>

<t>The advent of a cryptographically relevant quantum computer (CRQC) would render state-of-the-art, traditional public-key algorithms deployed today obsolete, as the mathematical assumptions underpinning their security would no longer hold. To address this, protocols and infrastructure must transition to post-quantum algorithms, which are designed to resist both traditional and quantum attacks. This document explains why engineers need to be aware of and understand post-quantum cryptography (PQC), detailing the impact of CRQCs on existing systems and the challenges involved in transitioning to post-quantum algorithms. Unlike previous cryptographic updates, this shift may require significant protocol redesign due to the unique properties of post-quantum algorithms.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-pquip-pqc-engineers/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        pquip Working Group mailing list (<eref target="mailto:pqc@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/pqc/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/pqc/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 237?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Quantum computing is no longer perceived as a consequence of computational sciences and theoretical physics. Considerable research efforts and enormous corporate and government funding for the development of practical quantum computing systems are currently being invested. At the time this document is published, cryptographically relevant quantum computer (CRQCs) that can break widely used public-key cryptographic algorithms are not yet available. However, it is worth noting that there is ongoing research and development in the field of quantum computing, with the goal of building more powerful and scalable quantum computers.</t>
      <t>One common myth is that quantum computers are faster than conventional CPUs and GPUs in all areas. This is not the case; much as GPUs outperform general-purpose CPUs only on specific types of problems, so too will quantum computers have a niche set of problems on which they excel. Unfortunately for cryptographers, integer factorization and discrete logarithms, the mathematical problems underpinning all of modern cryptography, happen to fall within the niche that quantum computers are expected to excel at. As such, as quantum technology advances, there is the potential for future quantum computers to have a significant impact on current cryptographic systems. Predicting the date of emergence of a CRQC is a challenging task, and there is ongoing uncertainty regarding when they will become practically feasible.</t>
      <t>Extensive research has produced several post-quantum cryptographic (PQC) algorithms that offer the potential to ensure cryptography's survival in the quantum computing era. However, transitioning to a post-quantum infrastructure is not a straightforward task, and there are numerous challenges to overcome. It requires a combination of engineering efforts, proactive assessment and evaluation of available technologies, and a careful approach to product development.</t>
      <t>PQC is sometimes referred to as "quantum-proof", "quantum-safe", or "quantum-resistant". It is the development of cryptographic algorithms designed to secure communication and data in a world where quantum computers are powerful enough to break traditional cryptographic systems, such as RSA and ECC. PQC algorithms are intended to be resistant to attacks by quantum computers, which use quantum-mechanical phenomena to solve mathematical problems that are infeasible for classical computers.</t>
      <t>As the possibility of CRQCs draws nearer, engineers responsible for designing, maintaining, and securing cryptographic systems must prepare for the significant changes that CRQCs will bring. Engineers need to understand how to implement post-quantum algorithms in applications, how to evaluate the trade-offs between security and performance, and how to ensure backward compatibility with current systems where needed. This is not merely a one-for-one replacement of algorithms; in many cases, the shift to PQC will involve redesigning protocols and infrastructure to accommodate the significant differences in resource utilization and key sizes between traditional and PQC algorithms.</t>
      <t>This document aims to provide general guidance to engineers working on cryptographic libraries, network security, and infrastructure development, where long-term security planning is crucial. The document covers topics such as selecting appropriate PQC algorithms, understanding the differences between PQC key encapsulation mechanisms (KEMs) and traditional Diffie-Hellman and RSA style key exchange, and provides insights into expected key sizes and processing time differences between PQC algorithms and traditional ones. Additionally, it discusses the potential threat to symmetric cryptography from CRQCs.</t>
      <t>It is important to remember that asymmetric algorithms (also known as public key algorithms) are largely used for secure communications between organizations or endpoints that may not have previously interacted, so a significant amount of coordination between organizations, and within and between ecosystems needs to be taken into account. Such transitions are some of the most complicated in the tech industry and will require staged migrations in which upgraded agents need to co-exist and communicate with non-upgraded agents at a scale never before undertaken.</t>
      <t>The National Security Agency (NSA) of the United States released an article on future PQC algorithm requirements for US national security systems <xref target="CNSA2-0"/> based on the need to protect against deployments of CRQCs in the future. German Federal Office for Information Security (BSI) has also released a PQC migration and recommendations document <xref target="BSI-PQC"/> which largely aligns with United States National Institute of Standards and Technology (NIST) and NSA guidance, but differs on some of the guidance.</t>
      <t>CRQCs pose a threat to both symmetric and asymmetric cryptographic schemes. However, the threat to asymmetric cryptography is significantly greater due to Shor's algorithm, which can break widely-used public key schemes like RSA and ECC. Symmetric cryptography and hash functions also face some risk from Grover's algorithm, although the impact is less severe and can typically be mitigated by doubling key lengths. It is crucial for the reader to understand that when the word "PQC" is mentioned in the document, it means asymmetric cryptography (or public key cryptography), and not any symmetric algorithms based on stream, block ciphers, hash functions, MACs, etc., which are less vulnerable to quantum computers. This document does not cover such topics as when traditional algorithms might become vulnerable (for that, see documents such as <xref target="QC-DNS"/> and others). It also does not cover unrelated technologies like quantum key distribution (QKD) or quantum key generation, which use quantum hardware to exploit quantum effects to protect communications and generate keys, respectively. PQC is based on conventional (that is, not quantum) math and software and can be run on any general purpose computer.</t>
      <t>This document does not go into the deep mathematics or technical specification of the PQC algorithms, but rather provides an overview to engineers on the current threat landscape and the relevant algorithms designed to help prevent those threats. Also, the cryptographic and algorithmic guidance given in this document should be taken as non-authoritative if it conflicts with emerging and evolving guidance from the IRTF's Cryptographic Forum Research Group (CFRG).</t>
      <t>There is ongoing discussion about whether to use the term "post-quantum". "quantum ready". or "quantum resistant" to describe algorithms that resist CRQCs, and a consensus has not yet been reached. It is important to clarify that "post-quantum" refers to algorithms designed to withstand attacks by CRQCs and classical computers alike. These algorithms are based on mathematically hard cryptographic problems that neither CRQCs nor classical computers are expected to break. The term "quantum resistant" or "quantum ready" are generally used for algorithms which are synonymous with "post-quantum" algorithms.</t>
    </section>
    <section anchor="threat-of-crqcs-on-cryptography">
      <name>Threat of CRQCs on Cryptography</name>
      <t>When considering the security risks associated with the ability of a quantum computer to attack traditional cryptography, it is important to distinguish between the impact on symmetric algorithms and public-key ones. Dr. Peter Shor and Dr. Lov Grover developed two algorithms that changed the way the world thinks of security under the presence of a CRQC.</t>
      <t>Quantum computers are, by their nature, hybrids of classical and quantum computational units. For example, Shor's algorithm consists of a combination of quantum and classical computational steps. Thus, the term "quantum adversary" should be thought of as "quantum-enhanced adversary", meaning they have access to both classical and quantum computational techniques.</t>
      <t>Despite the fact that large-scale quantum computers do not yet exist to experiment on, the theoretical properties of quantum computation are very well understood. This allows us to reason today about the upper limits of quantum-enhanced computation, and indeed to design cryptographic algorithms that are resistant to any conceivable for of quantum cryptanalysis.</t>
      <section anchor="symmetric">
        <name>Symmetric Cryptography</name>
        <t>For unstructured data such as symmetric encrypted data or cryptographic hashes, although CRQCs can search for specific solutions across all possible input combinations (e.g., Grover's algorithm), no quantum algorithm is known to break the underlying security properties of these classes of algorithms.</t>
        <t>Grover's algorithm is a quantum search algorithm that provides a theoretical quadratic speedup for searching an unstructured database, compared to traditional search algorithms. When you consider the mapping of hash values to their corresponding hash inputs (also known as pre-image), or of ciphertext blocks to the corresponding plaintext blocks, as an unstructured database, then Grover’s algorithm theoretically requires doubling the key sizes of the symmetric algorithms that are currently deployed today to counter the quadratic speedup and maintain current security level. This is because Grover’s algorithm reduces the amount of operations to break 128-bit symmetric cryptography to 2^{64} quantum operations, which might sound computationally feasible. However, 2^{64} operations performed in parallel are feasible for modern classical computers, but 2^{64} quantum operations performed serially in a quantum computer are not.</t>
        <t>Grover's algorithm is highly non-parallelizable and even if one deploys 2^c computational units in parallel to brute-force a key using Grover's algorithm, it will complete in time proportional to 2^{(128−c)/2}, or, put simply, using 256 quantum computers will only reduce runtime by a factor of 16, 1024 quantum computers will only reduce runtime by a factor of 32 and so forth (see <xref target="NIST"/> and <xref target="Cloudflare"/>). Therefore, while Grover's attack suggests the doubling of the sizes of symmetric keys, the current consensus among experts is that the current key sizes remain secure in practice.</t>
        <t>How can someone be sure that an improved algorithm won’t outperform Grover's algorithm at some point in time? Christof Zalka has shown that Grover's algorithm (and in particular its non-parallel nature) achieves the best possible complexity for unstructured search <xref target="Grover-search"/>.</t>
        <t>Finally, in their evaluation criteria for PQC, NIST is assessing the security levels of proposed post-quantum algorithms by comparing them against the equivalent traditional and quantum security of AES-128, 192, and 256. This indicates that NIST is confident in the stable security properties of AES, even in the presence of both traditional and quantum attacks. As a result, 128-bit algorithms can be considered quantum-safe for the foreseeable future. The National Agency for the Security of Information Systems (ANSSI), on the other hand, advocates for a more cautious approach and recommends the use of AES-256 <xref target="ANSSI"/>.</t>
      </section>
      <section anchor="asymmetric-cryptography">
        <name>Asymmetric Cryptography</name>
        <t>“Shor’s algorithm” efficiently solves the integer factorization problem (and the related discrete logarithm problem), which offer the foundations of the vast majority of public-key cryptography that the world uses today. This implies that, if a CRQC is developed, today’s public-key cryptography algorithms (e.g., RSA, Diffie-Hellman and elliptic curve cryptography, as well as less commonly-used variants such as ElGamal and Schnorr signatures) and protocols would need to be replaced by algorithms and protocols that can offer cryptanalytic resistance against CRQCs. Note that Shor’s algorithm cannot run solely on a classic computer, it requires a CRQC.</t>
        <t>For example, to provide some context, one would need around 20 million noisy qubits to break RSA-2048 in 8 hours <xref target="RSAShor"/> and <xref target="RSA8HRS"/> or 4099 stable (or logical) qubits to break it <xref target="RSA10SC"/>.</t>
        <t>For structured data such as public keys and signatures, instead, CRQCs can fully solve the underlying hard problems used in traditional cryptography (see Shor's algorithm). Because an increase of the size of the key-pair would not provide a secure solution short of RSA keys that are many gigabytes in size <xref target="PQRSA"/>, a complete replacement of the algorithm is needed. Therefore, post-quantum public-key cryptography must rely on problems that are different from the ones used in traditional public-key cryptography (i.e., the integer factorization problem, the finite-field discrete logarithm problem, and the elliptic-curve discrete logarithm problem).</t>
      </section>
      <section anchor="quantum-side-channel-attacks">
        <name>Quantum Side-channel Attacks</name>
        <t>The field of cryptographic side-channel attacks potentially stands to gain a boost in attacker power once cryptanalytic techniques can be enhanced with quantum computation techniques. While a full discussion of quantum side-channel techniques is beyond the scope of this document, implementers of cryptographic hardware should be aware that current best-practices for side-channel resistance may not be sufficient against quantum adversaries.</t>
      </section>
    </section>
    <section anchor="traditional-cryptographic-primitives-that-could-be-replaced-by-pqc">
      <name>Traditional Cryptographic Primitives that Could Be Replaced by PQC</name>
      <t>Any asymmetric cryptographic algorithm based on integer factorization, finite field discrete logarithms or elliptic curve discrete logarithms will be vulnerable to attacks using Shor's algorithm on a sufficiently large general-purpose quantum computer, known as a CRQC. This document focuses on the principal functions of asymmetric cryptography:</t>
      <ul spacing="normal">
        <li>
          <t>Key agreement and key transport: Key agreement schemes, typically referred to as Diffie-Hellman (DH) or Elliptic Curve Diffie-Hellman (ECDH), as well as key transport, typically using RSA Encryption, are used to establish a shared cryptographic key for secure communication. They are one of the mechanisms that can be replaced by PQC, as this is based on public key cryptography and is therefore vulnerable to the Shor's algorithm. A CRQC can employ Shor's algorithm to efficiently find the prime factors of a large public key (in case of RSA), which in turn can be exploited to derive the private key. In the case of Diffie-Hellman, a CRQC has the potential to calculate the exponent or discrete logarithm of the (short or long-term) Diffie-Hellman public key. This, in turn, would reveal the precise secret required to derive the symmetric encryption key.</t>
        </li>
        <li>
          <t>Digital signatures: Digital signature schemes are used to authenticate the identity of a sender, detect unauthorized modifications to data and underpin trust in a system. Similar to key agreement, signatures also depend on a public-private key pair based on the same mathematics as for key agreement and key transport, and hence a break in public key cryptography will also affect traditional digital signatures, hence the importance of developing post-quantum digital signatures.</t>
        </li>
        <li>
          <t>BBS signatures: BBS (Boneh-Boyen-Shacham) signatures are a privacy-preserving signature scheme that offers zero-knowledge proof-like properties by allowing selective disclosure of specific signed attributes without revealing the entire set of signed data. BBS signatures rely on the discrete logarithm problem, making them vulnerable to quantum attacks. A CRQC can break the data authenticity security property of BBS but not the data confidentiality (Section 6.9 of <xref target="I-D.irtf-cfrg-bbs-signatures"/>).</t>
        </li>
        <li>
          <t>Content encryption: Content encryption typically refers to the encryption of the data using symmetric key algorithms, such as AES, to ensure confidentiality. The threat to symmetric cryptography is discussed in <xref target="symmetric"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="invariants-of-pqc-necessitating-compliance-adjustments">
      <name>Invariants of PQC: Necessitating Compliance Adjustments</name>
      <t>In the context of PQC, symmetric-key cryptographic algorithms are generally not directly impacted by quantum computing advancements. Symmetric-key cryptography, which includes keyed primitives such as block ciphers (e.g., AES) and message authentication mechanisms (e.g., HMAC-SHA2), rely on secret keys shared between the sender and receiver. Symmetric cryptography also includes hash functions (e.g., SHA-256) that are used for secure message digesting without any shared key material. HMAC is a specific construction that utilizes a cryptographic hash function (such as SHA-2) and a secret key shared between the sender and receiver to produce a message authentication code.</t>
      <t>CRQCs, in theory, do not offer substantial advantages in breaking symmetric-key algorithms compared to classical computers, meaning that current symmetric algorithms can continue to be used with potentially straightforward increases to key size to stay ahead of quantum-boosted brute-forcing attacks (see <xref target="symmetric"/> for more details). Furthermore, for compliance purposes, such as meeting the standards of CNSA 2.0 (Commercial National Security Algorithm Suite 2.0) <xref target="CNSA2-0"/>, AES-256 must be used to ensure the highest level of security against both traditional and quantum threats.</t>
    </section>
    <section anchor="nist-pqc-algorithms">
      <name>NIST PQC Algorithms</name>
      <t>The first three final NIST PQC algorithms (<xref target="NISTFINAL"/>) are not a drop-in replacement for traditional asymmetric cryptographic algorithms. For instance, RSA <xref target="RSA"/> and ECC <xref target="RFC6090"/> can be used as both a key encapsulation method (KEM) and as a signature scheme, whereas there is currently no post-quantum algorithm that can perform both functions. When upgrading protocols, it is important to replace the existing use of traditional algorithms with either a PQC KEM or a PQC signature method, depending on how the traditional algorithm was previously being used. Additionally, KEMs, as described in <xref target="KEMs"/>, present a different API than either key agreement or key transport primitives. As a result, they may require protocol-level or application-level changes in order to be incorporated.</t>
      <section anchor="nist-candidates-selected-for-standardization">
        <name>NIST Candidates Selected for Standardization</name>
        <section anchor="pqc-key-encapsulation-mechanisms-kems">
          <name>PQC Key Encapsulation Mechanisms (KEMs)</name>
          <ul spacing="normal">
            <li>
              <t><xref target="ML-KEM"/>: Module-Lattice-based Key-Encapsulation Mechanism Standard (FIPS-203).</t>
            </li>
          </ul>
        </section>
        <section anchor="pqc-signatures">
          <name>PQC Signatures</name>
          <ul spacing="normal">
            <li>
              <t><xref target="ML-DSA"/>: Module-Lattice-Based Digital Signature Standard (FIPS-204).</t>
            </li>
            <li>
              <t><xref target="SLH-DSA"/>: Stateless Hash-Based Digital Signature (FIPS-205).</t>
            </li>
            <li>
              <t><xref target="FN-DSA"/>: FN-DSA is a lattice signature scheme (<xref target="lattice-based"/> and <xref target="sig-scheme"/>).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="candidates-advancing-to-the-fourth-round-for-standardization-at-nist">
        <name>Candidates Advancing to the Fourth Round for Standardization at NIST</name>
        <t>The fourth-round of the NIST process focuses only on KEMs. The goal of that round is to select an alternative algorithm that is based on different hard problem than ML-KEM.
The candidates still advancing for standardization are:</t>
        <ul spacing="normal">
          <li>
            <t><xref target="ClassicMcEliece"/>: Based on the hardness of syndrome decoding of Goppa codes. Goppa codes are a class of error-correcting codes that can correct a certain number of errors in a transmitted message. The decoding problem involves recovering the original message from the received noisy codeword.</t>
          </li>
          <li>
            <t><xref target="BIKE"/>: Based on the the hardness of syndrome decoding of QC-MDPC codes. Quasi-Cyclic Moderate Density Parity Check (QC-MDPC) code are a class of error correcting codes that leverages bit flipping technique to efficiently correct errors.</t>
          </li>
          <li>
            <t><xref target="HQC"/>: Based on the hardness of syndrome decoding of Quasi-cyclic concatenated Reed Muller Reed Solomon (RMRS) codes in the Hamming metric. Reed Muller (RM) codes are a class of block error correcting codes used especially in wireless and deep space communications. Reed Solomon (RS) are a class of block error correcting codes that are used to detect and correct multiple bit errors.</t>
          </li>
          <li>
            <t><xref target="SIKE"/> (Broken): Supersingular Isogeny Key Encapsulation (SIKE) is a specific realization of the SIDH (Supersingular Isogeny Diffie-Hellman) protocol. Recently, a mathematical attack <xref target="SIDH-Attack"/> based on the "glue-and-split" theorem from 1997 from Ernst Kani was found against the underlying chosen starting curve and torsion information. In practical terms, this attack allows for the efficient recovery of the private key. NIST announced that SIKE was no longer under consideration, but the authors of SIKE had asked for it to remain in the list so that people are aware that it is broken. While SIKE is broken, isogenies in general remain an active area of cryptographic research due to their very attractive bandwidth usage, and yet more cryptographic primitives in the future may appear from this research area.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="timeline">
      <name>Timeline for Transition</name>
      <t>The timeline, and driving motivation for transition differs slightly between data confidentiality (e.g., encryption) and data authentication (e.g., signature) use-cases.</t>
      <t>For data confidentiality, one is concerned with the so-called "harvest now, decrypt later" attack where a malicious actor with adequate resources can launch an attack to store sensitive encrypted data today that they hope to decrypt once a CRQC is available. This implies that, every day, sensitive encrypted data is susceptible to the attack by not implementing quantum-safe strategies, as it corresponds to data possibly being deciphered in the future.</t>
      <t>For authentication, it is often the case that signatures have a very short lifetime between signing and verifying (such as during a TLS handshake) but some authentication use-cases do require long lifetimes, such as signing firmware or software that will be active for decades, signing legal documents, or signing certificates that will be embedded into hardware devices such as smartcards. Even for short-lived signatures use cases, the infrastructure often relies on long-lived root keys which can be difficult to update or replace on in-field devices.</t>
      <figure anchor="Mosca">
        <name>Mosca model</name>
        <artwork><![CDATA[
+------------------------+----------------------------+
|                        |                            |
|           y            |             x              |
+------------------------+----------+-----------------+
|                                   | <--------------->
|               z                   |   Security gap
+-----------------------------------+

]]></artwork>
      </figure>
      <t>These challenges are illustrated nicely by the so-called Mosca model discussed in <xref target="Threat-Report"/>. In the <xref target="Mosca"/>, "x" denotes the time that systems and data need to remain secure, "y" the number of years to fully migrate to a PQC infrastructure and "z" the time until a CRQC that can break current cryptography is available. The model assumes either that encrypted data can be intercepted and stored before the migration is completed in "y" years, or that signatures will still be relied upon for "x" years after their creation. This data remains vulnerable for the complete "x" years of their lifetime, thus the sum "x+y" gives us an estimate of the full timeframe that data remain insecure. The model essentially asks how one is preparing IT systems during those "y" years (in other words, how one can minimize those "y" years) to minimize the transition phase to a PQC infrastructure and hence minimize the risks of data being exposed in the future.</t>
      <t>Finally, other factors that could accelerate the introduction of a CRQC should not be under-estimated, like for example faster-than-expected advances in quantum computing and more efficient versions of Shor’s algorithm requiring fewer qubits. Innovation often comes in waves, so it is to the industry’s benefit to remain vigilant and prepare as early as possible. Bear in mind also that while the industry tracks advances from public research institutions such as universities and companies that publish their results, there is also a great deal of large-budget quantum research being conducted privately by various national interests. Therefore, the true state of quantum computer advancement is likely several years ahead of the publicly available research.</t>
      <t>Organizations should also consider carefully and honestly what their migration timeline "y" actually is. If you think only of the time between receiving a patch from your technology vendor, and rolling that patch out, then "y" might seem as short as a few weeks. However, this represents the minority of migration cases; more often, a PQC migration will involve at least some amount of hardware replacement. For example, performance-sensitive applications will need CPUs with PQC hardware acceleration. Security-sensitive applications will need PQC TPMs, TEEs, Secure Enclaves, and other cryptographic co-processors. Smartcard applications will require replacement of the cards as well as of the readers which can come in many form-factors: tap-for-entry door and turnstile readers, PIN pad machines, laptops with built-in smartcard readers, and many others.</t>
      <t>Included in "y" is not only the deployment time, but also preparation time: integration, testing, auditing, and re-certification of cryptographic environments. Consider also upstream effects that contribute to "y", including lead-times for your vendors to produce PQC-ready products, which may itself include auditing and certification delays, time for regulating bodies to adopt PQC policies, time for auditors to become familiar with the new requirements, etc. If you measure the full migration time "y" from when your vendors begin implementing PQC functionality, to when you switch off your last non-PQC-capable device, then "y" can be quite long; likely measured in years or decades for even most moderately-sized organizations.</t>
    </section>
    <section anchor="pqc-categories">
      <name>PQC Categories</name>
      <t>The current set of problems used in PQC can be currently grouped into three different categories: lattice-based, hash-based and code-based.</t>
      <section anchor="lattice-based">
        <name>Lattice-Based Public-Key Cryptography</name>
        <t>Lattice-based public-key cryptography leverages the simple construction of lattices (i.e., a regular collection of points in a Euclidean space that are evenly spaced) to create "trapdoor" problems. These problems are efficient to compute if you possess the secret information but challenging to compute otherwise. Examples of such problems include the shortest vector, closest vector, short integer solution, learning with errors, module learning with errors, and learning with rounding problems. All of these problems feature strong proofs for worst-to-average case reduction, effectively relating the hardness of the average case to the worst case.</t>
        <t>The possibility to implement public-key schemes on lattices is tied to the characteristics of the basis vectors used for the lattice. In particular, solving any of the mentioned problems can be easy when using "reduced" or "good" bases (i.e., as short as possible and as orthogonal as possible), while it becomes computationally infeasible when using "bad" bases (i.e., long, non-orthogonal vectors). Although the problem might seem trivial, it is computationally hard when considering many dimensions, or when the underlying field is not simple numbers, but high-order polynomials. Therefore, a typical approach is to use "bad" bases for public keys and "good" bases for private keys. The public keys ("bad" bases) let you easily verify signatures by checking, for example, that a vector is the closest or smallest, but do not let you solve the problem (i.e., finding the vector) that would yield the private key. Conversely, private keys (i.e., the "good" bases) can be used for generating the signatures (e.g., finding the specific vector).</t>
        <t>Lattice-based schemes usually have good performances and average size public keys and signatures (average within the PQC primitives at least; they are still several orders of magnitude larger than e.g., RSA or ECC signatures), making them the best available candidates for general-purpose use such as replacing the use of RSA in PKIX certificates.</t>
        <t>Examples of this class of algorithms include ML-KEM, FN-DSA and ML-DSA.</t>
        <t>It is noteworthy that lattice-based encryption schemes require a rounding step during decryption which has a non-zero probability of "rounding the wrong way" and leading to a decryption failure, meaning that valid encryptions are decrypted incorrectly; as such, an attacker could significantly reduce the security of lattice-based schemes that have a relatively high failure rate. However, for most of the NIST PQC proposals, the number of required oracle queries to force a decryption failure is above practical limits, as has been shown in <xref target="LattFail1"/>. More recent works have improved upon the results in <xref target="LattFail1"/>, showing that the cost of searching for additional failing ciphertexts after one or more have already been found, can be sped up dramatically <xref target="LattFail2"/>. Nevertheless, at the time this document is published, the PQC candidates by NIST are considered secure under these attacks and constant monitoring as cryptanalysis research is ongoing.</t>
      </section>
      <section anchor="hash-based">
        <name>Hash-Based Public-Key Cryptography</name>
        <t>Hash based PKC has been around since the 1970s, when it was developed by Lamport and Merkle. It is used to create digital signature algorithms and its security is mathematically based on the security of the selected cryptographic hash function. Many variants of hash-based signatures (HBS) have been developed since the 70s including the recent XMSS <xref target="RFC8391"/>, HSS/LMS <xref target="RFC8554"/> or BPQS schemes. Unlike digital signature techniques, most hash-based signature schemes are stateful, which means that signing necessitates the update and careful tracking of the secret key. Producing multiple signatures using the same secret key state results in loss of security and may ultimately enable signature forgery attacks against that key.</t>
        <t>Stateful hash-based signatures with long service lifetimes require additional operational complexity compared with other signature types. For example, consider a 20-year root key; there is an expectation that 20 years is longer than the expected lifetime of the hardware that key is stored on, and therefore the key will need to be migrated to new hardware at some point. Disaster-recovery scenarios where the primary node fails without warning can be similarly tricky. This requires careful operational and compliance consideration to ensure that no private key state can be re-used across the migration or disaster recovery event. One approach for avoiding these issues is to only use stateful HBS for short-term use cases that do not require horizontal scaling, for example signing a batch of firmware images and then retiring the signing key.</t>
        <t>The SLH-DSA algorithm leverages the HORST (hash to obtain random subset with trees) technique and remains the only hash based signature scheme that is stateless, thus avoiding all the complexities with state management.</t>
        <t>SLH-DSA is an advancement on SPHINCS which reduces the signature sizes in SPHINCS and makes it more compact. SLH-DSA was recently standardized by NIST.</t>
      </section>
      <section anchor="code-based">
        <name>Code-Based Public-Key Cryptography</name>
        <t>This area of cryptography started in the 1970s and 80s based on the seminal work of McEliece and Niederreiter which focuses on the study of cryptosystems based on error-correcting codes. Some popular error correcting codes include the Goppa codes (used in McEliece cryptosystems), encoding and decoding syndrome codes used in Hamming quasi-cyclic (HQC) or quasi-cyclic moderate density parity check (QC-MDPC) codes.</t>
        <t>Examples include all the NIST Round 4 (unbroken) finalists: Classic McEliece, HQC, BIKE.</t>
      </section>
    </section>
    <section anchor="KEMs">
      <name>KEMs</name>
      <t>A Key Encapsulation Mechanism (KEM) is a cryptographic technique used for securely exchanging symmetric key material between two parties over an insecure channel. It is commonly used in hybrid encryption schemes, where a combination of asymmetric (public key) and symmetric encryption is employed. The KEM encapsulation results in a fixed-length symmetric key that can be used with a symmetric algorithm, typically a block cipher, in one of two different ways:</t>
      <ul spacing="normal">
        <li>
          <t>Derive a data encryption key (DEK) to encrypt the data</t>
        </li>
        <li>
          <t>Derive a key encryption key (KEK) used to wrap a DEK</t>
        </li>
      </ul>
      <t>These techniques are often referred to as "hybrid public key encryption (HPKE)" <xref target="RFC9180"/> mechanism.</t>
      <t>The term "encapsulation" is chosen intentionally to indicate that KEM algorithms behave differently at the API level from the key agreement or key encipherment / key transport mechanisms that in use today. Key agreement schemes imply that both parties contribute a public / private key pair to the exchange, while key encipherment / key transport schemes imply that the symmetric key material is chosen by one party and "encrypted" or "wrapped" for the other party. KEMs, on the other hand, behave according to the following API:</t>
      <t>KEM relies on the following primitives <xref target="PQCAPI"/>:</t>
      <ul spacing="normal">
        <li>
          <t>def kemKeyGen() -&gt; (pk, sk)</t>
        </li>
        <li>
          <t>def kemEncaps(pk) -&gt; (ss, ct)</t>
        </li>
        <li>
          <t>def kemDecaps(ct, sk) -&gt; ss</t>
        </li>
      </ul>
      <t>where <tt>pk</tt> is public key, <tt>sk</tt> is secret key, <tt>ct</tt> is the ciphertext representing an encapsulated key, and <tt>ss</tt> is shared secret. The following figure illustrates a sample flow of KEM based key exchange:</t>
      <figure anchor="tab-kem-ke">
        <name>KEM based key exchange</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="536" viewBox="0 0 536 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,272 L 8,304" fill="none" stroke="black"/>
              <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
              <path d="M 208,80 L 208,112" fill="none" stroke="black"/>
              <path d="M 208,272 L 208,304" fill="none" stroke="black"/>
              <path d="M 224,72 L 224,320" fill="none" stroke="black"/>
              <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
              <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
              <path d="M 320,72 L 320,320" fill="none" stroke="black"/>
              <path d="M 336,176 L 336,208" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
              <path d="M 528,176 L 528,208" fill="none" stroke="black"/>
              <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
              <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
              <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
              <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
              <path d="M 24,80 L 208,80" fill="none" stroke="black"/>
              <path d="M 24,112 L 208,112" fill="none" stroke="black"/>
              <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
              <path d="M 336,176 L 528,176" fill="none" stroke="black"/>
              <path d="M 336,208 L 528,208" fill="none" stroke="black"/>
              <path d="M 232,256 L 312,256" fill="none" stroke="black"/>
              <path d="M 8,272 L 208,272" fill="none" stroke="black"/>
              <path d="M 8,304 L 208,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
              <polygon class="arrowhead" points="240,256 228,250.4 228,261.6" fill="black" transform="rotate(180,232,256)"/>
              <g class="text">
                <text x="220" y="52">Client</text>
                <text x="316" y="52">Server</text>
                <text x="48" y="100">pk,</text>
                <text x="76" y="100">sk</text>
                <text x="96" y="100">=</text>
                <text x="152" y="100">kemKeyGen()</text>
                <text x="216" y="100">-</text>
                <text x="244" y="148">pk</text>
                <text x="328" y="196">-</text>
                <text x="360" y="196">ss,</text>
                <text x="388" y="196">ct</text>
                <text x="408" y="196">=</text>
                <text x="472" y="196">kemEncaps(pk)</text>
                <text x="292" y="244">ct</text>
                <text x="28" y="292">ss</text>
                <text x="48" y="292">=</text>
                <text x="112" y="292">kemDecaps(ct,</text>
                <text x="184" y="292">sk)</text>
                <text x="216" y="292">-</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | pk, sk = kemKeyGen() |-|           |
  +----------------------+ |           |
                           |           |
                           | pk        |
                           |---------->|
                           |           | +-----------------------+
                           |           |-| ss, ct = kemEncaps(pk)|
                           |           | +-----------------------+
                           |           |
                           |       ct  |
                           |<----------|
+------------------------+ |           |
| ss = kemDecaps(ct, sk) |-|           |
+------------------------+ |           |
                           |           |
]]></artwork>
        </artset>
      </figure>
      <section anchor="authenticated-key-exchange">
        <name>Authenticated Key Exchange</name>
        <t>Authenticated key exchange (AKE) with KEMs where both parties contribute a KEM public key to the overall session key is interactive as described in <xref target="I-D.draft-ietf-lake-edhoc"/>. However, single-sided KEM, such as when one peer has a KEM key in a certificate and the other peer wants to encrypt for it (as in S/MIME or OpenPGP email), can be achieved using non-interactive HPKE <xref target="RFC9180"/>. The following figure illustrates the Diffie-Hellman (DH) Key exchange:</t>
        <figure anchor="tab-dh-ake">
          <name>Diffie-Hellman based AKE</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="552" viewBox="0 0 552 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,320 L 8,368" fill="none" stroke="black"/>
                <path d="M 24,80 L 24,128" fill="none" stroke="black"/>
                <path d="M 136,336 L 136,344" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 216,80 L 216,128" fill="none" stroke="black"/>
                <path d="M 216,320 L 216,368" fill="none" stroke="black"/>
                <path d="M 232,72 L 232,464" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                <path d="M 328,72 L 328,464" fill="none" stroke="black"/>
                <path d="M 344,192 L 344,256" fill="none" stroke="black"/>
                <path d="M 344,432 L 344,464" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 544,192 L 544,256" fill="none" stroke="black"/>
                <path d="M 544,432 L 544,464" fill="none" stroke="black"/>
                <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                <path d="M 24,80 L 216,80" fill="none" stroke="black"/>
                <path d="M 24,128 L 216,128" fill="none" stroke="black"/>
                <path d="M 240,176 L 320,176" fill="none" stroke="black"/>
                <path d="M 344,192 L 544,192" fill="none" stroke="black"/>
                <path d="M 344,256 L 544,256" fill="none" stroke="black"/>
                <path d="M 240,304 L 320,304" fill="none" stroke="black"/>
                <path d="M 8,320 L 216,320" fill="none" stroke="black"/>
                <path d="M 8,368 L 216,368" fill="none" stroke="black"/>
                <path d="M 240,416 L 320,416" fill="none" stroke="black"/>
                <path d="M 344,432 L 544,432" fill="none" stroke="black"/>
                <path d="M 344,464 L 544,464" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="328,416 316,410.4 316,421.6" fill="black" transform="rotate(0,320,416)"/>
                <polygon class="arrowhead" points="328,176 316,170.4 316,181.6" fill="black" transform="rotate(0,320,176)"/>
                <polygon class="arrowhead" points="248,304 236,298.4 236,309.6" fill="black" transform="rotate(180,240,304)"/>
                <g class="text">
                  <text x="220" y="52">Client</text>
                  <text x="316" y="52">Server</text>
                  <text x="72" y="100">Long-term</text>
                  <text x="140" y="100">client</text>
                  <text x="188" y="100">key:</text>
                  <text x="116" y="116">sk1,</text>
                  <text x="152" y="116">pk1</text>
                  <text x="224" y="116">-</text>
                  <text x="256" y="164">pk1</text>
                  <text x="336" y="212">-</text>
                  <text x="392" y="212">Long-term</text>
                  <text x="460" y="212">server</text>
                  <text x="508" y="212">key:</text>
                  <text x="436" y="228">sk2,</text>
                  <text x="472" y="228">pk2</text>
                  <text x="364" y="244">ss</text>
                  <text x="384" y="244">=</text>
                  <text x="436" y="244">KeyEx(pk1,</text>
                  <text x="500" y="244">sk2)</text>
                  <text x="312" y="292">pk2</text>
                  <text x="28" y="340">ss</text>
                  <text x="48" y="340">=</text>
                  <text x="96" y="340">KeyEx(pk2</text>
                  <text x="164" y="340">sk1)</text>
                  <text x="92" y="356">encryptContent(ss)</text>
                  <text x="224" y="356">-</text>
                  <text x="280" y="388">encrypted</text>
                  <text x="288" y="404">content</text>
                  <text x="428" y="452">decryptContent(ss)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +-----------------------+ |           |
  | Long-term client key: | |           |
  |         sk1, pk1      |-|           |
  +-----------------------+ |           |
                            |           |
                            | pk1       |
                            |---------->|
                            |           | +------------------------+
                            |           |-| Long-term server key:  |
                            |           | |         sk2, pk2       |
                            |           | | ss = KeyEx(pk1, sk2)   |
                            |           | +------------------------+
                            |           |
                            |        pk2|
                            |<----------|
+-------------------------+ |           |
| ss = KeyEx(pk2, sk1)    | |           |
| encryptContent(ss)      |-|           |
+-------------------------+ |           |
                            | encrypted |
                            |   content |
                            |---------->|
                            |           | +------------------------+
                            |           | | decryptContent(ss)     |
                            |           | +------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>What's important to note about the sample flow above is that the shared secret <tt>ss</tt> is derived using key material from both the Client and the Server, which classifies it as an AKE. There is another property of a key exchange, called non-interactive key exchange (NIKE) which refers to whether the sender can compute the shared secret <tt>ss</tt> and encrypting content without requiring active interaction (an exchange of network messages) with the recipient. <xref target="tab-dh-ake"/> shows a Diffie-Hellman key exchange which is an AKE, since both parties are using long-term keys which can have established trust (for example, via certificates), but it is not a NIKE, since the client needs to wait for the network interaction to receive the receiver's public key <tt>pk2</tt> before it can compute the shared secret <tt>ss</tt> and begin content encryption. However, a DH key exchange can be an AKE and a NIKE at the same time if the receiver's public key is known to the sender in advance, and many Internet protocols rely on this property of DH-based key exchanges.</t>
        <figure anchor="tab-dh-ake-nike">
          <name>Diffie-Hellman based AKE and NIKE simultaneously</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="536" viewBox="0 0 536 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,80 L 8,192" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,168" fill="none" stroke="black"/>
                <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
                <path d="M 200,80 L 200,192" fill="none" stroke="black"/>
                <path d="M 216,72 L 216,368" fill="none" stroke="black"/>
                <path d="M 248,32 L 248,64" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 312,72 L 312,368" fill="none" stroke="black"/>
                <path d="M 328,288 L 328,368" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,64" fill="none" stroke="black"/>
                <path d="M 456,336 L 456,344" fill="none" stroke="black"/>
                <path d="M 528,288 L 528,368" fill="none" stroke="black"/>
                <path d="M 168,32 L 248,32" fill="none" stroke="black"/>
                <path d="M 264,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 168,64 L 248,64" fill="none" stroke="black"/>
                <path d="M 264,64 L 344,64" fill="none" stroke="black"/>
                <path d="M 8,80 L 200,80" fill="none" stroke="black"/>
                <path d="M 8,192 L 200,192" fill="none" stroke="black"/>
                <path d="M 224,272 L 304,272" fill="none" stroke="black"/>
                <path d="M 328,288 L 528,288" fill="none" stroke="black"/>
                <path d="M 328,368 L 528,368" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="312,272 300,266.4 300,277.6" fill="black" transform="rotate(0,304,272)"/>
                <g class="text">
                  <text x="204" y="52">Client</text>
                  <text x="300" y="52">Server</text>
                  <text x="56" y="100">Long-term</text>
                  <text x="124" y="100">client</text>
                  <text x="172" y="100">key:</text>
                  <text x="100" y="116">sk1,</text>
                  <text x="136" y="116">pk1</text>
                  <text x="208" y="116">-</text>
                  <text x="56" y="132">Long-term</text>
                  <text x="124" y="132">server</text>
                  <text x="172" y="132">key:</text>
                  <text x="96" y="148">pk2</text>
                  <text x="28" y="164">ss</text>
                  <text x="48" y="164">=</text>
                  <text x="96" y="164">KeyEx(pk2</text>
                  <text x="164" y="164">sk1)</text>
                  <text x="92" y="180">encryptContent(ss)</text>
                  <text x="208" y="180">-</text>
                  <text x="244" y="228">pk1,</text>
                  <text x="264" y="244">encrypted</text>
                  <text x="272" y="260">content</text>
                  <text x="320" y="308">-</text>
                  <text x="376" y="308">Long-term</text>
                  <text x="444" y="308">server</text>
                  <text x="492" y="308">key:</text>
                  <text x="420" y="324">sk2,</text>
                  <text x="456" y="324">pk2</text>
                  <text x="348" y="340">ss</text>
                  <text x="368" y="340">=</text>
                  <text x="416" y="340">KeyEx(pk1</text>
                  <text x="484" y="340">sk2)</text>
                  <text x="412" y="356">decryptContent(ss)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +-----------------------+ |           |
  | Long-term client key: | |           |
  |         sk1, pk1      |-|           |
  | Long-term server key: | |           |
  |         pk2           | |           |
  | ss = KeyEx(pk2, sk1)  | |           |
  | encryptContent(ss)    |-|           |
  +-----------------------+ |           |
                            |           |
                            | pk1,      |
                            | encrypted |
                            |   content |
                            |---------->|
                            |           | +------------------------+
                            |           |-| Long-term server key:  |
                            |           | |         sk2, pk2       |
                            |           | | ss = KeyEx(pk1, sk2)   |
                            |           | | decryptContent(ss)     |
                            |           | +------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>The complication with KEMs is that a KEM <tt>Encaps()</tt> is non-deterministic; it involves randomness chosen by the sender of that KEM. Therefore, in order to perform an AKE, the client must wait for the server to generate the needed randomness and perform <tt>Encaps()</tt> against the client key, which necessarily requires a network round-trip. Therefore, a KEM-based protocol can either be an AKE or a NIKE, but cannot be both at the same time. Consequently, certain Internet protocols will necessitate a redesign to accommodate this distinction, either by introducing extra network round-trips or by making trade-offs in security properties.</t>
        <figure anchor="tab-kem-ake">
          <name>KEM based AKE</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
                <path d="M 8,288 L 8,352" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 208,80 L 208,112" fill="none" stroke="black"/>
                <path d="M 208,336 L 208,352" fill="none" stroke="black"/>
                <path d="M 224,72 L 224,464" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                <path d="M 320,72 L 320,464" fill="none" stroke="black"/>
                <path d="M 336,176 L 336,224" fill="none" stroke="black"/>
                <path d="M 336,416 L 336,464" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 552,176 L 552,224" fill="none" stroke="black"/>
                <path d="M 552,416 L 552,464" fill="none" stroke="black"/>
                <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                <path d="M 8,80 L 208,80" fill="none" stroke="black"/>
                <path d="M 8,112 L 208,112" fill="none" stroke="black"/>
                <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                <path d="M 336,176 L 552,176" fill="none" stroke="black"/>
                <path d="M 336,224 L 552,224" fill="none" stroke="black"/>
                <path d="M 232,272 L 312,272" fill="none" stroke="black"/>
                <path d="M 8,288 L 200,288" fill="none" stroke="black"/>
                <path d="M 8,352 L 208,352" fill="none" stroke="black"/>
                <path d="M 232,400 L 312,400" fill="none" stroke="black"/>
                <path d="M 336,416 L 552,416" fill="none" stroke="black"/>
                <path d="M 336,464 L 552,464" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="320,400 308,394.4 308,405.6" fill="black" transform="rotate(0,312,400)"/>
                <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                <polygon class="arrowhead" points="240,272 228,266.4 228,277.6" fill="black" transform="rotate(180,232,272)"/>
                <g class="text">
                  <text x="220" y="52">Client</text>
                  <text x="316" y="52">Server</text>
                  <text x="36" y="100">pk1,</text>
                  <text x="72" y="100">sk1</text>
                  <text x="96" y="100">=</text>
                  <text x="152" y="100">kemKeyGen()</text>
                  <text x="216" y="100">-</text>
                  <text x="240" y="148">pk1</text>
                  <text x="328" y="196">-</text>
                  <text x="364" y="196">ss1,</text>
                  <text x="400" y="196">ct1</text>
                  <text x="424" y="196">=</text>
                  <text x="492" y="196">kemEncaps(pk1)</text>
                  <text x="364" y="212">pk2,</text>
                  <text x="400" y="212">sk2</text>
                  <text x="424" y="212">=</text>
                  <text x="480" y="212">kemKeyGen()</text>
                  <text x="288" y="260">ct1,pk2</text>
                  <text x="32" y="308">ss1</text>
                  <text x="56" y="308">=</text>
                  <text x="124" y="308">kemDecaps(ct1,</text>
                  <text x="204" y="308">sk1)</text>
                  <text x="236" y="308">-|</text>
                  <text x="36" y="324">ss2,</text>
                  <text x="72" y="324">ct2</text>
                  <text x="96" y="324">=</text>
                  <text x="164" y="324">kemEncaps(pk2)</text>
                  <text x="28" y="340">ss</text>
                  <text x="48" y="340">=</text>
                  <text x="112" y="340">Combiner(ss1,</text>
                  <text x="188" y="340">ss2)</text>
                  <text x="240" y="388">ct2</text>
                  <text x="328" y="436">-</text>
                  <text x="360" y="436">ss2</text>
                  <text x="384" y="436">=</text>
                  <text x="452" y="436">kemDecaps(ct2,</text>
                  <text x="532" y="436">sk2)</text>
                  <text x="356" y="452">ss</text>
                  <text x="376" y="452">=</text>
                  <text x="440" y="452">Combiner(ss1,</text>
                  <text x="516" y="452">ss2)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
+------------------------+ |           |
| pk1, sk1 = kemKeyGen() |-|           |
+------------------------+ |           |
                           |           |
                           |pk1        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss1, ct1 = kemEncaps(pk1)|
                           |           | | pk2, sk2 = kemKeyGen()   |
                           |           | +--------------------------+
                           |           |
                           |    ct1,pk2|
                           |<----------|
+------------------------+ |           |
| ss1 = kemDecaps(ct1, sk1)|-|         |
| ss2, ct2 = kemEncaps(pk2)|           |
| ss = Combiner(ss1, ss2)| |           |
+------------------------+ |           |
                           |           |
                           |ct2        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss2 = kemDecaps(ct2, sk2)|
                           |           | | ss = Combiner(ss1, ss2)  |
                           |           | +--------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>Here, <tt>Combiner(ss1, ss2)</tt>, often referred to as a KEM Combiner, is a cryptographic construction that takes in two shared secrets and returns a single combined shared secret. The simplest combiner is concatenation <tt>ss1 || ss2</tt>, but combiners can vary in complexity depending on the cryptographic properties required. For example, if the combination should preserve IND-CCA2 of either input even if the other is chosen maliciously, then a more complex construct is required. Another consideration for combiner design is so-called "binding properties" introduced in <xref target="KEEPINGUP"/>, which may require the ciphertexts and recipient public keys to be included in the combiner. KEM combiner security analysis becomes more complicated in hybrid settings where the two KEMs represent different algorithms, for example, where one is ML-KEM and the other is ECDHE. For a more thorough discussion of KEM combiners, see <xref target="KEEPINGUP"/>, <xref target="I-D.draft-ounsworth-cfrg-kem-combiners"/>, and <xref target="I-D.draft-connolly-cfrg-xwing-kem"/>.</t>
      </section>
      <section anchor="security-properties-of-kems">
        <name>Security Properties of KEMs</name>
        <section anchor="ind-cca2">
          <name>IND-CCA2</name>
          <t>IND-CCA2 (INDistinguishability under adaptive Chosen-Ciphertext Attack) is an advanced security notion for encryption schemes. It ensures the confidentiality of the plaintext and resistance against chosen-ciphertext attacks. An appropriate definition of IND-CCA2 security for KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>. ML-KEM <xref target="ML-KEM"/> and Classic McEliece provide IND-CCA2 security.</t>
          <t>Understanding IND-CCA2 security is essential for individuals involved in designing or implementing cryptographic systems and protocols in order to evaluate the strength of the algorithm, assess its suitability for specific use cases, and ensure that data confidentiality and security requirements are met. Understanding IND-CCA2 security is generally not necessary for developers migrating to using an IETF-vetted key establishment method (KEM) within a given protocol or flow. IND-CCA2 is considered the highest bar that a public key encryption mechanism can meet, and therefore is suitable for all uses. IETF specification authors should include all security concerns in the "Security Considerations" section of the relevant RFC and not rely on implementers being experts in cryptographic theory.</t>
        </section>
        <section anchor="binding">
          <name>Binding</name>
          <t>KEMs also have an orthogonal set of properties to consider when designing protocols around them: binding <xref target="KEEPINGUP"/>. This can be "ciphertext binding", "public key binding", "context binding", or any other property that is important to not be substituted between KEM invocations. In general, a KEM is considered to bind a certain value if substitution of that value by an attacker will necessarily result in a different shared secret being derived. As an example, if an attacker can construct two different ciphertexts which will decapsulate to the same shared secret; or can construct a ciphertext which will decapsulate to the same shared secret under two different public keys, or can substitute whole KEM exchanges from one session into another, then the construction is not ciphertext binding, public key binding, or context binding respectively. Similarly, protocol designers may wish to bind protocol state information such as a transaction ID or nonce so that attempts to replay ciphertexts from one session inside a different session will be blocked at the cryptographic level because the server derives a different shared secret and is thus is unable to decrypt the content.</t>
          <t>The solution to binding is generally achieved at the protocol design level: it is recommended not to use the KEM output shared secret directly. Even though modern KEMs such as ML-KEM produce full-entropy shared secrets, it is still advisable for binding reasons to pass it through a key derivation function (KDF) and also include all values that you wish to bind; then finally you will have a shared secret that is safe to use at the protocol level.</t>
        </section>
      </section>
      <section anchor="hpke">
        <name>HPKE</name>
        <t>Modern cryptography has long used the notion of "hybrid encryption" where an asymmetric algorithm is used to establish a key, and then a symmetric algorithm is used for bulk content encryption.</t>
        <t>HPKE (hybrid public key encryption) <xref target="RFC9180"/> is a specific instantiation of this which works with a combination of KEMs, KDFs and AEAD (authenticated encryption with additional data) schemes. HPKE includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE can be extended to support hybrid post-quantum KEM <xref target="I-D.draft-connolly-cfrg-xwing-kem"/>. ML-KEM does not support the static-ephemeral key exchange that allows HPKE based on DH based KEMs and its optional authenticated modes as discussed in section 1.5 of <xref target="I-D.draft-connolly-cfrg-xwing-kem"/>.</t>
      </section>
    </section>
    <section anchor="pqc-signatures-1">
      <name>PQC Signatures</name>
      <t>Any digital signature scheme that provides a construction defining security under a post-quantum setting falls under this category of PQ signatures.</t>
      <section anchor="security-properties-of-pqc-signatures">
        <name>Security Properties of PQC Signatures</name>
      </section>
      <section anchor="euf-cma-and-suf-cma">
        <name>EUF-CMA and SUF-CMA</name>
        <t>EUF-CMA (existential unforgeability under chosen message attack) <xref target="GMR88"/> is a security notion for digital signature schemes. It guarantees that an adversary, even with access to a signing oracle, cannot forge a valid signature for an arbitrary message. EUF-CMA provides strong protection against forgery attacks, ensuring the integrity and authenticity of digital signatures by preventing unauthorized modifications or fraudulent signatures. ML-DSA, FN-DSA, and SLH-DSA provide EUF-CMA security.</t>
        <t>SUF-CMA (strong unforgeability under chosen message attack) builds upon EUF-CMA by requiring that an adversary cannot produce a different valid signature for a message that has already been signed by the signing oracle. Like EUF-CMA, SUF-CMA provides robust assurances for digital signature schemes, further enhancing their security posture. ML-DSA, FN-DSA, and SLH-DSA also achieve SUF-CMA security.</t>
        <t>Understanding EUF-CMA and SUF-CMA security is essential for designing or implementing cryptographic systems in order to ensure the security, reliability, and robustness of digital signature schemes. These notions allow for informed decision-making, vulnerability analysis, compliance with standards, and designing systems that provide strong protection against forgery attacks. For developers migrating to using an IETF-vetted PQC signature scheme within a given protocol or flow, a deep understanding of EUF-CMA and SUF-CMA security may not be necessary, as the schemes vetted by IETF adhere to these stringent security standards.</t>
        <t>EUF-CMA and SUF-CMA are considered the highest bars that a public key signature algorithm can meet, making them suitable for all uses. IETF specification authors should include all security concerns in the "Security Considerations" section of the relevant RFC and should not assume that implementers are experts in cryptographic theory.</t>
      </section>
      <section anchor="sig-scheme">
        <name>Details of FN-DSA, ML-DSA, and SLH-DSA</name>
        <t>ML-DSA <xref target="ML-DSA"/> is a digital signature algorithm (part of the CRYSTALS suite) based on the hardness of lattice problems over module lattices (i.e., the Module Learning with Errors problem (MLWE)). The design of the algorithm is based on the "Fiat-Shamir with Aborts" <xref target="Lyu09"/> framework introduced by Lyubashevsky, that leverages rejection sampling to render lattice based FS schemes compact and secure. ML-DSA uses uniformly-distributed random number sampling over small integers for computing coefficients in error vectors, which makes the scheme easier to implement compared with FN-DSA <xref target="FN-DSA"/> which uses Gaussian-distributed numbers.</t>
        <t>ML-DSA offers both deterministic and randomized signing and is instantiated with 3 parameter sets providing different security levels. Security properties of ML-DSA are discussed in Section 9 of <xref target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
        <t>FN-DSA <xref target="FN-DSA"/> is based on the GPV hash-and-sign lattice-based signature framework introduced by Gentry, Peikert, and Vaikuntanathan, which is a framework that requires a certain class of lattices and a trapdoor sampler technique.</t>
        <t>The main design principle of FN-DSA is compactness, i.e., it was designed in a way that achieves minimal total memory bandwidth requirement (the sum of the signature size plus the public key size). This is possible due to the compactness of NTRU lattices. FN-DSA also offers very efficient signing and verification procedures. The main potential downsides of FN-DSA refer to the non-triviality of its algorithms and the need for floating point arithmetic support in order to support Gaussian-distributed random number sampling where the other lattice schemes use the less efficient but easier to support uniformly-distributed random number sampling.</t>
        <t>Implementers of FN-DSA need to be aware that FN-DSA signing is highly susceptible to side-channel attacks, unless constant-time 64-bit floating-point operations are used. This requirement is extremely platform-dependent, as noted in NIST's report.</t>
        <t>The performance characteristics of ML-DSA and FN-DSA may differ based on the specific implementation and hardware platform. Generally, ML-DSA is known for its relatively fast signature generation, while FN-DSA can provide more efficient signature verification. The choice may depend on whether the application requires more frequent signature generation or signature verification (See <xref target="LIBOQS"/>). For further clarity on the sizes and security levels, please refer to the tables in sections <xref target="RecSecurity"/> and <xref target="Comparisons"/>.</t>
        <t>SLH-DSA <xref target="SLH-DSA"/> utilizes the concept of stateless hash-based signatures, where each signature is unique and unrelated to any previous signature (as discussed in <xref target="hash-based"/>). This property eliminates the need for maintaining state information during the signing process. SLH-DSA was designed to sign up to 2^64 messages and it offers three security levels. The parameters for each of the security levels were chosen to provide 128 bits of security, 192 bits of security, and 256 bits of security. SLH-DSA offers smaller public key sizes, larger signature sizes, slower signature generation, and slower verification when compared to ML-DSA and FN-DSA. SLH-DSA does not introduce a new hardness assumption beyond those inherent to the underlying hash functions. It builds upon established foundations in cryptography, making it a reliable and robust digital signature scheme for a post-quantum world.</t>
        <t>All of these algorithms, ML-DSA, FN-DSA, and SLH-DSA include two signature modes, pure mode, where the entire content is signed directly, and pre-hash mode, where a digest of the content is signed.</t>
      </section>
      <section anchor="details-of-xmss-and-lms">
        <name>Details of XMSS and LMS</name>
        <t>The eXtended Merkle signature scheme (XMSS) <xref target="RFC8391"/> and hierarchical signature scheme (HSS) / Leighton-Micali signature (LMS) <xref target="RFC8554"/> are stateful hash-based signature schemes, where the secret key changes over time. In both schemes, reusing a secret key state compromises cryptographic security guarantees.</t>
        <t>Multi-ree XMSS and LMS can be used for signing a potentially large but fixed number of messages and the number of signing operations depends upon the size of the tree. XMSS and LMS provide cryptographic digital signatures without relying on the conjectured hardness of mathematical problems, instead leveraging the properties of cryptographic hash functions. XMSS and hierarchical signature system (HSS) use a hierarchical approach with a Merkle tree at each level of the hierarchy. <xref target="RFC8391"/> describes both single-tree and multi-tree variants of XMSS, while <xref target="RFC8554"/> describes the Leighton-Micali one-time signature (LM-OTS) system as well as the LMS and HSS N-time signature systems. Comparison of XMSS and LMS is discussed in Section 10 of <xref target="RFC8554"/>.</t>
        <t>The number of tree layers in multi-tree XMSS provides a trade-off between signature size on the one side and key generation and signing speed on the other side. Increasing the number of layers reduces key generation time exponentially and signing time linearly at the cost of increasing the signature size linearly.</t>
        <t>Due to the complexities described above, the XMSS and LMS are not a suitable replacement for traditional signature schemes like RSA or ECDSA. Applications that expect a long lifetime of a signature, like firmware update or secure boot, are typical use cases where those schemes can be successfully applied.</t>
        <section anchor="lms-key-and-signature-sizes">
          <name>LMS Key and Signature Sizes</name>
          <t>The LMS scheme is characterized by four distinct parameter sets: the underlying hash function (SHA2-256 or SHAKE-256), the length of the digest (24 or 32 bytes), LMS tree height parameter that controls a maximal number of signatures that the private key can produce (possible values are 5,10,15,20,25), and the width of the Winternitz coefficients (see <xref target="RFC8554"/>, section 4.1) that can be used to trade-off signing time for signature size (possible values are 1,2,4,8). Parameters can be mixed, providing 80 possible parameterizations of the scheme.</t>
          <t>The public (PK) and private (SK) key size depends on the length of the digest (M). The signature size depends on the Winternitz parameter (W), the LMS tree height (H), and the length of the digest. The table below provides key and signature sizes for parameterization with the digest size M=32 of the scheme.</t>
          <table>
            <thead>
              <tr>
                <th align="left">PK</th>
                <th align="left">SK</th>
                <th align="left">W</th>
                <th align="left">H=5</th>
                <th align="left">H=10</th>
                <th align="left">H=15</th>
                <th align="left">H=20</th>
                <th align="left">H=25</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">1</td>
                <td align="left">8684</td>
                <td align="left">8844</td>
                <td align="left">9004</td>
                <td align="left">9164</td>
                <td align="left">9324</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">2</td>
                <td align="left">4460</td>
                <td align="left">4620</td>
                <td align="left">4780</td>
                <td align="left">4940</td>
                <td align="left">5100</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">4</td>
                <td align="left">2348</td>
                <td align="left">2508</td>
                <td align="left">2668</td>
                <td align="left">2828</td>
                <td align="left">2988</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">8</td>
                <td align="left">1292</td>
                <td align="left">1452</td>
                <td align="left">1612</td>
                <td align="left">1772</td>
                <td align="left">1932</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="hash-then-sign">
        <name>Hash-then-Sign</name>
        <t>Within the hash-then-sign paradigm, the message is hashed before signing it. By pre-hashing, the onus of resistance to existential forgeries becomes heavily reliant on the collision-resistance of the hash function in use. The hash-then-sign paradigm has the ability to improve application performance by reducing the size of signed messages that need to be transmitted between application and cryptographic module, and making the signature size predictable and manageable. As a corollary, hashing remains mandatory even for short messages and assigns a further computational requirement onto the verifier. This makes the performance of hash-then-sign schemes more consistent, but not necessarily more efficient.</t>
        <t>Using a hash function to produce a fixed-size digest of a message ensures that the signature is compatible with a wide range of systems and protocols, regardless of the specific message size or format. Crucially for hardware security modules, Hash-then-Sign also significantly reduces the amount of data that needs to be transmitted and processed by a hardware security module. Consider scenarios such as a networked HSM located in a different data center from the calling application or a smart card connected over a USB interface. In these cases, streaming a message that is megabytes or gigabytes long can result in notable network latency, on-device signing delays, or even depletion of available on-device memory.</t>
        <t>Note that the vast majority of Internet protocols that sign large messages already perform some form of content hashing at the protocol level, so this tends to be more of a concern with proprietary cryptographic protocols, and protocols from non-IETF standards bodies. Protocols like TLS 1.3 and DNSSEC use the Hash-then-Sign paradigm. In TLS 1.3 <xref target="RFC8446"/> CertificateVerify messages, the content that is covered under the signature includes the transcript hash output (Section 4.4.1 of <xref target="RFC8446"/>), while DNSSEC <xref target="RFC4033"/> uses it to provide origin authentication and integrity assurance services for DNS data. Similarly, the Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> includes a mandatory message digest step before invoking the signature algorithm.</t>
        <t>In the case of ML-DSA, it internally incorporates the necessary hash operations as part of its signing algorithm. ML-DSA directly takes the original message, applies a hash function internally, and then uses the resulting hash value for the signature generation process. In the case of SLH-DSA, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In the case of FN-DSA, the SHAKE-256 hash function is used as part of the signature process to derive a digest of the message being signed.</t>
        <t>Therefore, ML-DSA, FN-DSA, and SLH-DSA offer enhanced security over the traditional Hash-then-Sign paradigm because by incorporating dynamic key material into the message digest, a pre-computed hash collision on the message to be signed no longer yields a signature forgery. Applications requiring the performance and bandwidth benefits of Hash-then-Sign may still pre-hash at the protocol level prior to invoking ML-DSA, FN-DSA, or SLH-DSA, but protocol designers should be aware that doing so re-introduces the weakness that hash collisions directly yield signature forgeries. Signing the full un-digested message is recommended where applications can tolerate it.</t>
      </section>
    </section>
    <section anchor="RecSecurity">
      <name>Recommendations for Security / Performance Tradeoffs</name>
      <t>The table below denotes the five security levels provided by NIST for PQC algorithms. Neither NIST nor the IETF make any specific recommendations about which security level to use. In general, protocols will include algorithm choices at multiple levels so that users can choose the level appropriate to their policies and data classification, similar to how organizations today choose which size of RSA key to use. The security levels are defined as requiring computational resources comparable to or greater than an attack on AES (128, 192 and 256) and SHA2/SHA3 algorithms, i.e., exhaustive key recovery for AES and optimal collision search for SHA2/SHA3. This information is a re-print of information provided in the NIST PQC project <xref target="NIST"/> as of time this document is published.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">AES/SHA(2/3) hardness</th>
            <th align="left">PQC Algorithm</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">AES-128 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-512, FN-DSA-512, SLH-DSA-SHA2/SHAKE-128f/s</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">SHA-256/SHA3-256 (collision search)</td>
            <td align="left">ML-DSA-44</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">AES-192 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-768, ML-DSA-65, SLH-DSA-SHA2/SHAKE-192f/s</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">SHA-384/SHA3-384 (collision search)</td>
            <td align="left">No algorithm tested at this level</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">AES-256 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-1024, FN-DSA-1024, ML-DSA-87, SLH-DSA-SHA2/SHAKE-256f/s</td>
          </tr>
        </tbody>
      </table>
      <t>Please note the SLH-DSA-x-yf/s "f/s" in the above table denotes whether its the SLH-DSA uses SHAKE or SHA-2 as an underlying hash function "x" and whether it is the fast (f) or small (s) version for "y" bit AES security level. Refer to <xref target="I-D.ietf-lamps-cms-sphincs-plus"/> for further details on SLH-DSA algorithms.</t>
      <t>The following table discusses the signature size differences for similar SLH-DSA algorithm security levels with the "simple" version but for different categories i.e., (f) for fast verification and (s) for compactness/smaller. Both SHA-256 and SHAKE-256 parameterization output the same signature sizes, so both have been included.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-128f</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">17088</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-128s</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">7856</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-192f</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">35664</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-192s</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">16224</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-256f</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">49856</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-256s</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">29792</td>
          </tr>
        </tbody>
      </table>
      <t>The following table discusses the impact of performance on different security levels in terms of private key sizes, public key sizes, and ciphertext/signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext/signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">2420</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3309</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">2592</td>
            <td align="left">4864</td>
            <td align="left">4627</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Comparisons">
      <name>Comparing PQC KEMs/Signatures vs Traditional KEMs (KEXs)/Signatures</name>
      <t>This section provides two tables for comparison of different KEMs and signatures respectively, in the traditional and post-quantum scenarios. These tables focus on the secret key sizes, public key sizes, and ciphertext/signature sizes for the PQC algorithms and their traditional counterparts of similar security levels.</t>
      <t>The first table compares traditional vs. PQC KEMs in terms of security, public and private key sizes, and ciphertext sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256_HKDF_SHA-256</td>
            <td align="left">65</td>
            <td align="left">32</td>
            <td align="left">65</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P521_HKDF_SHA-512</td>
            <td align="left">133</td>
            <td align="left">66</td>
            <td align="left">133</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">X25519_HKDF_SHA-256</td>
            <td align="left">32</td>
            <td align="left">32</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1568</td>
          </tr>
        </tbody>
      </table>
      <t>The next table compares traditional vs. PQC signature schemes in terms of security, public, private key sizes, and signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">RSA2048</td>
            <td align="left">256</td>
            <td align="left">256</td>
            <td align="left">256</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256</td>
            <td align="left">64</td>
            <td align="left">32</td>
            <td align="left">64</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3293</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">2592</td>
            <td align="left">4864</td>
            <td align="left">4627</td>
          </tr>
        </tbody>
      </table>
      <t>As one can clearly observe from the above tables, leveraging a PQC KEM/signature significantly increases the key sizes and the ciphertext/signature sizes compared to traditional KEM(KEX)/signatures. But the PQC algorithms do provide the additional security level in case there is an attack from a CRQC, whereas schemes based on prime factorization or discrete logarithm problems (finite field or elliptic curves) would provide no level of security at all against such attacks.</t>
      <t>These increased key and signatures sizes could introduce problems in protocols. As an example, IKEv2 uses UDP as the transport for its messages. One challenge with integrating PQC key exchange into the initial IKEv2 exchange is that IKE fragmentation cannot be utilized. To address this issue, <xref target="RFC9242"/> introduces a solution by defining a new exchange called the "Intermediate Exchange" which can be fragmented using the IKE fragmentation mechanism. <xref target="RFC9370"/> then uses this Intermediate Exchange to carry out the PQC key exchange after the initial IKEv2 exchange and before the IKE_AUTH exchange. Another example from <xref target="SP-1800-38C"/> section 6.3.3 shows that increased key and signature sizes cause protocol key exchange messages to span more network packets, therefore it results in a higher total loss probability per packet. In lossy network conditions, this may increase the latency of the key exchange.</t>
    </section>
    <section anchor="post-quantum-and-traditional-hybrid-schemes">
      <name>Post-Quantum and Traditional Hybrid Schemes</name>
      <t>The migration to PQC is unique in the history of modern digital cryptography in that neither the traditional algorithms nor the post-quantum algorithms are fully trusted to protect data for the required lifetimes. The traditional algorithms, such as RSA and elliptic curve, will fall to quantum cryptanalysis, while the post-quantum algorithms face uncertainty about the underlying mathematics, compliance issues, unknown vulnerabilities, and hardware and software implementations that have not had sufficient maturing time to rule out traditional cryptanalytic attacks and implementation bugs.</t>
      <t>During the transition from traditional to post-quantum algorithms, there may be a desire or a requirement for protocols that use both algorithm types. <xref target="I-D.ietf-pquip-pqt-hybrid-terminology"/> defines the terminology for the post-quantum and traditional hybrid schemes.</t>
      <section anchor="pqt-hybrid-confidentiality">
        <name>PQ/T Hybrid Confidentiality</name>
        <t>The PQ/T Hybrid Confidentiality property can be used to protect from a "harvest now, decrypt later" attack described in <xref target="timeline"/>, which refers to an attacker collecting encrypted data now and waiting for quantum computers to become powerful enough to break the encryption later. Two types of hybrid key agreement schemes are discussed below:</t>
        <ul spacing="normal">
          <li>
            <t>Concatenate hybrid key agreement scheme: The final shared secret that will be used as an input of the key derivation function is the result of the concatenation of the secrets established with each key agreement scheme. For example, in <xref target="I-D.ietf-tls-hybrid-design"/>, the client uses the TLS supported groups extension to advertise support for a PQ/T hybrid scheme, and the server can select this group if it supports the scheme. The hybrid-aware client and server establish a hybrid secret by concatenating the two shared secrets, which is used as the shared secret in the existing TLS 1.3 key schedule.</t>
          </li>
          <li>
            <t>Cascade hybrid key agreement scheme: The final shared secret is computed by applying as many iterations of the key derivation function as the number of key agreement schemes composing the hybrid key agreement scheme. For example, <xref target="RFC9370"/> extends the Internet Key Exchange Protocol Version 2 (IKEv2) to allow one or more PQC algorithms in addition to the traditional algorithm to derive the final IKE SA keys using the cascade method as explained in Section 2.2.2 of <xref target="RFC9370"/>.</t>
          </li>
        </ul>
        <t>Various instantiations of these two types of hybrid key agreement schemes have been explored. One must be careful when selecting which hybrid scheme to use. The chosen scheme for protocols like TLS 1.3 <xref target="I-D.ietf-tls-hybrid-design"/> is IND-CCA2 robustness, that is IND-CCA2 security is guaranteed for the scheme as long as at least one of the component algorithms is IND-CCA2 secure.</t>
      </section>
      <section anchor="pqt-hybrid-authentication">
        <name>PQ/T Hybrid Authentication</name>
        <t>The PQ/T hybrid authentication property can be utilized in scenarios where an on-path attacker possesses network devices equipped with CRQCs, capable of breaking traditional authentication protocols, or where an attacker can attack long-lived authenticated data such as CA certificates or signed software images. This property ensures authentication through a PQ/T hybrid scheme or a PQ/T hybrid protocol, as long as at least one component algorithm remains secure to provide the intended security level. For instance, a PQ/T hybrid certificate <xref target="I-D.ietf-pq-composite-keys"/> can be employed to facilitate a PQ/T hybrid authentication protocol. However, a PQ/T hybrid authentication protocol does not need to use a PQ/T hybrid certificate; separate certificates could be used for individual component algorithms <xref target="I-D.ietf-lamps-cert-binding-for-multi-auth"/>.</t>
        <t>The frequency and duration of system upgrades and the time when CRQCs will become widely available need to be weighed to determine whether and when to support the PQ/T Hybrid Authentication property.</t>
      </section>
      <section anchor="hybrid-cryptographic-algorithm-combinations-considerations-and-approaches">
        <name>Hybrid Cryptographic Algorithm Combinations: Considerations and Approaches</name>
        <section anchor="hybrid-cryptographic-combinations">
          <name>Hybrid Cryptographic Combinations</name>
          <t>It is also possible to use more than two algorithms together in a hybrid scheme, with various methods for combining them. For post-quantum transition purposes, the combination of a post-quantum algorithm with a traditional algorithm is the most straightforward and recommended. The use of multiple post-quantum algorithms with different mathematical bases has also been considered. Combining algorithms in a way that requires both to be used together ensures stronger security, while combinations that do not require both will sacrifice security but offer other benefits like backwards compatibility and crypto agility. Including a traditional key alongside a post-quantum key often has minimal bandwidth impact.</t>
        </section>
        <section anchor="composite-keys-in-hybrid-schemes">
          <name>Composite Keys in Hybrid Schemes</name>
          <t>When combining keys in an "and" mode, it may make more sense to consider them to be a single composite key, instead of two keys. This generally requires fewer changes to various components of PKI ecosystems, many of which are not prepared to deal with two keys or dual signatures. To those protocol- or application-layer parsers, a "composite" algorithm composed of two "component" algorithms is simply a new algorithm, and support for adding new algorithms generally already exists. Treating multiple "component" keys as a single "composite" key also has security advantages such as preventing cross-protocol reuse of the individual component keys and guarantees about revoking or retiring all component keys together at the same time, especially if the composite is treated as a single object all the way down into the cryptographic module.</t>
          <t>All that needs to be done is to standardize the formats of how the two keys from the two algorithms are combined into a single data structure, and how the two resulting signatures or KEMs are combined into a single signature or KEM. The answer can be as simple as concatenation, if the lengths are fixed or easily determined. At the time this document is published, security research is ongoing as to the security properties of concatenation-based composite signatures and KEMs vs more sophisticated signature and KEM combiners, and in which protocol contexts those simpler combiners are sufficient.</t>
          <t>One last consideration is that the pairs of algorithms that can be combined. A recent trend in protocols is to only allow a small number of "known good" configurations that make sense, often referred to in cryptography as a "ciphersuite", instead of allowing arbitrary combinations of individual configuration choices that may interact in dangerous ways. The current consensus is that the same approach should be followed for combining cryptographic algorithms, and that "known good" pairs should be explicitly listed ("explicit composite"), instead of just allowing arbitrary combinations of any two crypto algorithms ("generic composite").</t>
          <t>The same considerations apply when using multiple certificates to transport a pair of related keys for the same subject. Exactly how two certificates should be managed in order to avoid some of the pitfalls mentioned above is still an active area of investigation. Using two certificates keeps the certificate tooling simple and straightforward, but in the end simply moves the problems with requiring that both certs are intended to be used as a pair, must produce two signatures which must be carried separately, and both must validate, to the certificate management layer, where addressing these concerns in a robust way can be difficult.</t>
          <t>At least one scheme has been proposed that allows the pair of certificates to exist as a single certificate when being issued and managed, but dynamically split into individual certificates when needed (<xref target="I-D.draft-bonnell-lamps-chameleon-certs"/>.</t>
        </section>
        <section anchor="key-reuse-in-hybrid-schemes">
          <name>Key Reuse in Hybrid Schemes</name>
          <t>An important security note when using particularly hybrid signature keys, but also to a lesser extent hybrid KEM keys, is key re-use. In traditional cryptography, problems can occur with so-called "cross-protocol attacks" when the same key can be used for multiple protocols; for example signing TLS handshakes and signing S/MIME emails. While it is not best-practice to re-use keys within the same protocol, for example using the same key for multiple S/MIME certificates for the same user, it is not generally catastrophic for security. However, key re-use becomes a large security problem within hybrids.</t>
          <t>Consider an {RSA, ML-DSA} hybrid key where the RSA key also appears within a single-algorithm certificate. In this case, an attacker could perform a "stripping attack" where they take some piece of data signed with the {RSA, ML-DSA} key, remove the ML-DSA signature and present the data as if it was intended for the RSA only certificate. This leads to a set of security definitions called "non-separability properties", which refers to how well the signature scheme resists various complexities of downgrade / stripping attacks <xref target="I-D.draft-ietf-pquip-hybrid-signature-spectrums"/>. Therefore, it is recommended that implementers either reuse the entire hybrid key as a whole, or perform fresh key generation of all component keys per usage, and must not take an existing key and reuse it as a component of a hybrid.</t>
        </section>
        <section anchor="jurisdictional-fragmentation">
          <name>Jurisdictional Fragmentation</name>
          <t>Another potential application of hybrids bears mentioning, even though it is not directly PQC-related. That is using hybrids to navigate inter-jurisdictional cryptographic connections. Traditional cryptography is already fragmented by jurisdiction: consider that while most jurisdictions support Elliptic Curve Diffie-Hellman, those in the United States will prefer the NIST curves while those in Germany will prefer the brainpool curves. China, Russia, and other jurisdictions have their own national cryptography standards. This situation of fragmented global cryptography standards is unlikely to improve with PQC. If "and" mode hybrids become standardized for the reasons mentioned above, then one could imagine leveraging them to create "ciphersuites" in which a single cryptographic operation simultaneously satisfies the cryptographic requirements of both endpoints.</t>
        </section>
        <section anchor="future-directions-and-ongoing-research">
          <name>Future Directions and Ongoing Research</name>
          <t>Many aspects of hybrid cryptography are still under investigation. LAMPS WG at IETF is actively exploring the security properties of these combinations, and future standards will reflect the evolving consensus on these issues.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="cryptanalysis">
        <name>Cryptanalysis</name>
        <t>Traditional cryptanalysis exploits weaknesses in algorithm design, mathematical vulnerabilities, or implementation flaws, that are exploitable with classical (i.e., non-quantum) hardware whereas quantum cryptanalysis harnesses the power of CRQCs to solve specific mathematical problems more efficiently. Another form of quantum cryptanalysis is "quantum side-channel" attacks. In such attacks, a device under threat is directly connected to a quantum computer, which then injects entangled or superimposed data streams to exploit hardware that lacks protection against quantum side-channels. Both pose threats to the security of cryptographic algorithms, including those used in PQC. Developing and adopting new cryptographic algorithms resilient against these threats is crucial for ensuring long-term security in the face of advancing cryptanalysis techniques.</t>
        <t>Recent attacks on the side-channel implementations using deep learning based power analysis have also shown that one needs to be cautious while implementing the required PQC algorithms in hardware. Two of the most recent works include one attack on ML-KEM <xref target="KyberSide"/> and one attack on Saber <xref target="SaberSide"/>. An evolving threat landscape points to the fact that lattice based cryptography is indeed more vulnerable to side-channel attacks as in <xref target="SideCh"/>, <xref target="LatticeSide"/>. Consequently, there were some mitigation techniques for side channel attacks that have been proposed as in <xref target="Mitigate1"/>, <xref target="Mitigate2"/>, and <xref target="Mitigate3"/>.</t>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>Cryptographic agility is recommended for both traditional and quantum cryptanalysis as it enables organizations to adapt to emerging threats, adopt stronger algorithms, comply with standards, and plan for long-term security in the face of evolving cryptanalytic techniques and the advent of CRQCs.</t>
        <t>Several PQC schemes are available that need to be tested; cryptography experts around the world are pushing for the best possible solutions, and the first standards that will ease the introduction of PQC are being prepared. It is of paramount importance and a call for imminent action for organizations, bodies, and enterprises to start evaluating their cryptographic agility, assess the complexity of implementing PQC into their products, processes, and systems, and develop a migration plan that achieves their security goals to the best possible extent.</t>
        <t>An important and often overlooked step in achieving cryptographic agility is maintaining a cryptographic inventory. Modern software stacks incorporate cryptography in numerous places, making it challenging to identify all instances. Therefore, cryptographic agility and inventory management take two major forms: First, application developers responsible for software maintenance should actively search for instances of hard-coded cryptographic algorithms within applications. When possible, they should design the choice of algorithm to be dynamic, based on application configuration. Second, administrators, policy officers, and compliance teams should take note of any instances where an application exposes cryptographic configurations. These instances should be managed either through organization-wide written cryptographic policies or automated cryptographic policy systems.</t>
        <t>Numerous commercial solutions are available for both detecting hard-coded cryptographic algorithms in source code and compiled binaries, as well as providing cryptographic policy management control planes for enterprise and production environments.</t>
      </section>
      <section anchor="hybrid-key-exchange-and-signatures-bridging-the-gap-between-post-quantum-and-traditional-cryptography">
        <name>Hybrid Key Exchange and Signatures: Bridging the Gap Between Post-Quantum and Traditional Cryptography</name>
        <t>Post-quantum algorithms selected for standardization are relatively new and they they have not been subject to the same depth of study as traditional algorithms. PQC implementations will also be new and therefore more likely to contain implementation bugs than the battle-tested crypto implementations that are relied on today. In addition, certain deployments may need to retain traditional algorithms due to regulatory constraints, for example FIPS <xref target="SP-800-56C"/> or PCI compliance. Hybrid key exchange is recommended to enhance security against the "harvest now, decrypt later" attack. Additionally, hybrid signatures provide for time to react in the case of the announcement of a devastating attack against any one algorithm, while not fully abandoning traditional cryptosystems.</t>
      </section>
      <section anchor="caution-ciphertext-commitment-in-kem-vs-dh">
        <name>Caution: Ciphertext commitment in KEM vs DH</name>
        <t>The ciphertext generated by a KEM is not necessarily directly linked to the shared secret it produces. KEMs allow for multiple ciphertexts to encapsulate the same shared secret, which enables flexibility in key management without enforcing a strict one-to-one correspondence between ciphertexts and shared secrets. This can be useful in scenarios where reusing the same shared secret is necessary for operational reasons. In contrast, cryptographic schemes like Diffie-Hellman inherently link the public key to the derived shared secret, meaning any change in the public key results in a different shared secret.</t>
      </section>
    </section>
    <section anchor="further-reading-resources">
      <name>Further Reading &amp; Resources</name>
      <t>A good book on modern cryptography is Serious Cryptography, 2nd Edition, by Jean-Philippe Aumasson, ISBN 9781718503847.</t>
      <t>The Open Quantum Safe (OQS) Project <xref target="OQS"/> is an open-source project that aims to support the transition to quantum-resistant cryptography.</t>
      <t>The IETF's PQUIP Working Group <xref target="PQUIP-WG"/> maintains a list of PQC-related protocol work within the IETF.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="Grover-search">
        <front>
          <title>C. Zalka, “Grover’s quantum searching algorithm is optimal,” Physical Review A, vol. 60, pp. 2746-2751, 1999.</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Threat-Report" target="https://globalriskinstitute.org/publications/quantum-threat-timeline-report-2020/">
        <front>
          <title>Quantum Threat Timeline Report 2020</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="QC-DNS" target="https://www.icann.org/octo-031-en.pdf">
        <front>
          <title>Quantum Computing and the DNS</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="NIST" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization">
        <front>
          <title>Post-Quantum Cryptography Standardization</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Cloudflare" target="https://blog.cloudflare.com/nist-post-quantum-surprise/">
        <front>
          <title>NIST’s pleasant post-quantum surprise</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="ML-KEM" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.pdf">
        <front>
          <title>FIPS-203: Module-Lattice-based Key-Encapsulation Mechanism Standard</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="ML-DSA" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf">
        <front>
          <title>FIPS-204: Module-Lattice-Based Digital Signature Standard</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="SLH-DSA" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.205.pdf">
        <front>
          <title>FIPS-205: Stateless Hash-Based Digital Signature Standard</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="FN-DSA" target="https://falcon-sign.info/">
        <front>
          <title>Fast Fourier lattice-based compact signatures over NTRU</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RSA" target="https://dl.acm.org/doi/pdf/10.1145/359340.359342">
        <front>
          <title>A Method for Obtaining Digital Signatures and Public-Key Cryptosystems+</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="CS01" target="https://eprint.iacr.org/2001/108">
        <front>
          <title>Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="BHK09" target="https://eprint.iacr.org/2009/418">
        <front>
          <title>Subtleties in the Definition of IND-CCA: When and How Should Challenge-Decryption be Disallowed?</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="GMR88" target="https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Digital%20Signatures/A_Digital_Signature_Scheme_Secure_Against_Adaptive_Chosen-Message_Attack.pdf">
        <front>
          <title>A digital signature scheme secure against adaptive chosen-message attacks.</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="PQCAPI" target="https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/example-files/api-notes.pdf">
        <front>
          <title>PQC - API notes</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RSA8HRS" target="https://arxiv.org/abs/1905.09749">
        <front>
          <title>How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RSA10SC" target="https://www.quintessencelabs.com/blog/breaking-rsa-encryption-update-state-art">
        <front>
          <title>Breaking RSA Encryption - an Update on the State-of-the-Art</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RSAShor" target="https://arxiv.org/pdf/quant-ph/0205095.pdf">
        <front>
          <title>Circuit for Shor’s algorithm using 2n+3 qubits</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="LIBOQS" target="https://github.com/open-quantum-safe/liboqs">
        <front>
          <title>LibOQS - Open Quantum Safe</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="KyberSide" target="https://eprint.iacr.org/2022/1452">
        <front>
          <title>A Side-Channel Attack on a Hardware Implementation of CRYSTALS-Kyber</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="SaberSide" target="https://link.springer.com/article/10.1007/s13389-023-00315-3">
        <front>
          <title>A side-channel attack on a masked and shuffled software implementation of Saber</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="SideCh" target="https://eprint.iacr.org/2022/919">
        <front>
          <title>Side-Channel Attacks on Lattice-Based KEMs Are Not Prevented by Higher-Order Masking</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="LatticeSide" target="https://eprint.iacr.org/2019/948">
        <front>
          <title>Generic Side-channel attacks on CCA-secure lattice-based PKE and KEM schemes</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Mitigate1" target="https://eprint.iacr.org/2022/873">
        <front>
          <title>POLKA: Towards Leakage-Resistant Post-Quantum CCA-Secure Public Key Encryption</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Mitigate2" target="https://ieeexplore.ieee.org/document/9855226">
        <front>
          <title>Leakage-Resilient Certificate-Based Authenticated Key Exchange Protocol</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Mitigate3" target="https://eprint.iacr.org/2022/916">
        <front>
          <title>Post-Quantum Authenticated Encryption against Chosen-Ciphertext Side-Channel Attacks</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="CNSA2-0" target="https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF">
        <front>
          <title>Announcing the Commercial National Security Algorithm Suite 2.0</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="LattFail1" target="https://link.springer.com/chapter/10.1007/978-3-030-17259-6_19#chapter-info">
        <front>
          <title>Decryption Failure Attacks on IND-CCA Secure Lattice-Based Schemes</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="LattFail2" target="https://link.springer.com/chapter/10.1007/978-3-030-45727-3_1">
        <front>
          <title>(One) Failure Is Not an Option: Bootstrapping the Search for Failures in Lattice-Based Encryption Schemes.</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="BSI-PQC" target="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.html?nn=916626">
        <front>
          <title>Quantum-safe cryptography – fundamentals, current developments and recommendations</title>
          <author>
            <organization/>
          </author>
          <date year="2022" month="May"/>
        </front>
      </reference>
      <reference anchor="PQRSA" target="https://cr.yp.to/papers/pqrsa-20170419.pdf">
        <front>
          <title>Post-quantum RSA</title>
          <author>
            <organization/>
          </author>
          <date year="2017" month="April"/>
        </front>
      </reference>
      <reference anchor="SP-800-56C" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf">
        <front>
          <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="Lyu09" target="https://www.iacr.org/archive/asiacrypt2009/59120596/59120596.pdf">
        <front>
          <title>V. Lyubashevsky, “Fiat-Shamir With Aborts: Applications to Lattice and Factoring-Based Signatures“, ASIACRYPT 2009</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="SP-1800-38C" target="https://www.nccoe.nist.gov/sites/default/files/2023-12/pqc-migration-nist-sp-1800-38c-preliminary-draft.pdf">
        <front>
          <title>Migration to Post-Quantum Cryptography Quantum Readiness: Quantum-Resistant Cryptography Technology Interoperability and Performance Report</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="KEEPINGUP" target="https://eprint.iacr.org/2023/1933">
        <front>
          <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="NISTFINAL" target="https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards">
        <front>
          <title>NIST Releases First 3 Finalized Post-Quantum Encryption Standards</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="ANSSI" target="https://cyber.gouv.fr/sites/default/files/document/follow_up_position_paper_on_post_quantum_cryptography.pdf">
        <front>
          <title>ANSSI views on the Post-Quantum Cryptography transition</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="HQC" target="http://pqc-hqc.org/">
        <front>
          <title>HQC</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="BIKE" target="http://pqc-hqc.org/">
        <front>
          <title>BIKE</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="ClassicMcEliece" target="https://classic.mceliece.org/">
        <front>
          <title>Classic McEliece</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="SIKE" target="https://sike.org/">
        <front>
          <title>SIKE – Supersingular Isogeny Key Encapsulation</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="SIDH-Attack" target="https://eprint.iacr.org/2022/975.pdf">
        <front>
          <title>An efficient key recovery attack on SIDH</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="PQUIP-WG" target="https://datatracker.ietf.org/group/pquip/documents/">
        <front>
          <title>Post-Quantum Use In Protocols (pquip) Working Group</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="OQS" target="https://openquantumsafe.org/">
        <front>
          <title>Open Quantum Safe Project</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="I-D.irtf-cfrg-bbs-signatures">
        <front>
          <title>The BBS Signature Scheme</title>
          <author fullname="Tobias Looker" initials="T." surname="Looker">
            <organization>MATTR</organization>
          </author>
          <author fullname="Vasilis Kalos" initials="V." surname="Kalos">
            <organization>MATTR</organization>
          </author>
          <author fullname="Andrew Whitehead" initials="A." surname="Whitehead">
            <organization>Portage</organization>
          </author>
          <author fullname="Mike Lodder" initials="M." surname="Lodder">
            <organization>CryptID</organization>
          </author>
          <date day="23" month="September" year="2024"/>
          <abstract>
            <t>   This document describes the BBS Signature scheme, a secure, multi-
   message digital signature protocol, supporting proving knowledge of a
   signature while selectively disclosing any subset of the signed
   messages.  Concretely, the scheme allows for signing multiple
   messages whilst producing a single, constant size, digital signature.
   Additionally, the possessor of a BBS signatures is able to create
   zero-knowledge, proofs-of-knowledge of a signature, while selectively
   disclosing subsets of the signed messages.  Being zero-knowledge, the
   BBS proofs do not reveal any information about the undisclosed
   messages or the signature it self, while at the same time,
   guarantying the authenticity and integrity of the disclosed messages.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-bbs-signatures-07"/>
      </reference>
      <reference anchor="RFC6090">
        <front>
          <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
          <author fullname="D. McGrew" initials="D." surname="McGrew"/>
          <author fullname="K. Igoe" initials="K." surname="Igoe"/>
          <author fullname="M. Salter" initials="M." surname="Salter"/>
          <date month="February" year="2011"/>
          <abstract>
            <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier. These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years. Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6090"/>
        <seriesInfo name="DOI" value="10.17487/RFC6090"/>
      </reference>
      <reference anchor="RFC8391">
        <front>
          <title>XMSS: eXtended Merkle Signature Scheme</title>
          <author fullname="A. Huelsing" initials="A." surname="Huelsing"/>
          <author fullname="D. Butin" initials="D." surname="Butin"/>
          <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
          <author fullname="J. Rijneveld" initials="J." surname="Rijneveld"/>
          <author fullname="A. Mohaisen" initials="A." surname="Mohaisen"/>
          <date month="May" year="2018"/>
          <abstract>
            <t>This note describes the eXtended Merkle Signature Scheme (XMSS), a hash-based digital signature system that is based on existing descriptions in scientific literature. This note specifies Winternitz One-Time Signature Plus (WOTS+), a one-time signature scheme; XMSS, a single-tree scheme; and XMSS^MT, a multi-tree variant of XMSS. Both XMSS and XMSS^MT use WOTS+ as a main building block. XMSS provides cryptographic digital signatures without relying on the conjectured hardness of mathematical problems. Instead, it is proven that it only relies on the properties of cryptographic hash functions. XMSS provides strong security guarantees and is even secure when the collision resistance of the underlying hash function is broken. It is suitable for compact implementations, is relatively simple to implement, and naturally resists side-channel attacks. Unlike most other signature systems, hash-based signatures can so far withstand known attacks using quantum computers.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8391"/>
        <seriesInfo name="DOI" value="10.17487/RFC8391"/>
      </reference>
      <reference anchor="RFC8554">
        <front>
          <title>Leighton-Micali Hash-Based Signatures</title>
          <author fullname="D. McGrew" initials="D." surname="McGrew"/>
          <author fullname="M. Curcio" initials="M." surname="Curcio"/>
          <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
          <date month="April" year="2019"/>
          <abstract>
            <t>This note describes a digital-signature system based on cryptographic hash functions, following the seminal work in this area of Lamport, Diffie, Winternitz, and Merkle, as adapted by Leighton and Micali in 1995. It specifies a one-time signature scheme and a general signature scheme. These systems provide asymmetric authentication without using large integer mathematics and can achieve a high security level. They are suitable for compact implementations, are relatively simple to implement, and are naturally resistant to side-channel attacks. Unlike many other signature systems, hash-based signatures would still be secure even if it proves feasible for an attacker to build a quantum computer.</t>
            <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF. This has been reviewed by many researchers, both in the research group and outside of it. The Acknowledgements section lists many of them.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8554"/>
        <seriesInfo name="DOI" value="10.17487/RFC8554"/>
      </reference>
      <reference anchor="RFC9180">
        <front>
          <title>Hybrid Public Key Encryption</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
          <author fullname="B. Lipp" initials="B." surname="Lipp"/>
          <author fullname="C. Wood" initials="C." surname="Wood"/>
          <date month="February" year="2022"/>
          <abstract>
            <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
            <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9180"/>
        <seriesInfo name="DOI" value="10.17487/RFC9180"/>
      </reference>
      <reference anchor="I-D.draft-ietf-lake-edhoc">
        <front>
          <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
          <author fullname="Göran Selander" initials="G." surname="Selander">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Francesca Palombini" initials="F." surname="Palombini">
            <organization>Ericsson AB</organization>
          </author>
          <date day="22" month="January" year="2024"/>
          <abstract>
            <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
      </reference>
      <reference anchor="I-D.draft-ounsworth-cfrg-kem-combiners">
        <front>
          <title>Combiner function for hybrid key encapsulation mechanisms (Hybrid KEMs)</title>
          <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
            <organization>Entrust Limited</organization>
          </author>
          <author fullname="Aron Wussler" initials="A." surname="Wussler">
            <organization>Proton AG</organization>
          </author>
          <author fullname="Stavros Kousidis" initials="S." surname="Kousidis">
            <organization>BSI</organization>
          </author>
          <date day="31" month="January" year="2024"/>
          <abstract>
            <t>   The migration to post-quantum cryptography often calls for performing
   multiple key encapsulations in parallel and then combining their
   outputs to derive a single shared secret.

   This document defines a comprehensible and easy to implement Keccak-
   based KEM combiner to join an arbitrary number of key shares, that is
   compatible with NIST SP 800-56Cr2 [SP800-56C] when viewed as a key
   derivation function.  The combiners defined here are practical split-
   key PRFs and are CCA-secure as long as at least one of the ingredient
   KEMs is.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ounsworth-cfrg-kem-combiners-05"/>
      </reference>
      <reference anchor="I-D.draft-connolly-cfrg-xwing-kem">
        <front>
          <title>X-Wing: general-purpose hybrid post-quantum KEM</title>
          <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
            <organization>SandboxAQ</organization>
          </author>
          <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
            <organization>MPI-SP &amp; Radboud University</organization>
          </author>
          <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
            <organization>Cloudflare</organization>
          </author>
          <date day="21" month="October" year="2024"/>
          <abstract>
            <t>   This memo defines X-Wing, a general-purpose post-quantum/traditional
   hybrid key encapsulation mechanism (PQ/T KEM) built on X25519 and ML-
   KEM-768.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-xwing-kem-06"/>
      </reference>
      <reference anchor="I-D.ietf-lamps-dilithium-certificates">
        <front>
          <title>Internet X.509 Public Key Infrastructure: Algorithm Identifiers for ML-DSA</title>
          <author fullname="Jake Massimo" initials="J." surname="Massimo">
            <organization>AWS</organization>
          </author>
          <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
            <organization>AWS</organization>
          </author>
          <author fullname="Sean Turner" initials="S." surname="Turner">
            <organization>sn3rd</organization>
          </author>
          <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
            <organization>Cloudflare</organization>
          </author>
          <date day="14" month="January" year="2025"/>
          <abstract>
            <t>   Digital signatures are used within X.509 certificates, Certificate
   Revocation Lists (CRLs), and to sign messages.  This document
   describes the conventions for using FIPS 204, the Module-Lattice-
   Based Digital Signature Algorithm (ML-DSA) in Internet X.509
   certificates and certificate revocation lists.  The conventions for
   the associated signatures, subject public keys, and private key are
   also described.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-dilithium-certificates-06"/>
      </reference>
      <reference anchor="RFC8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
      <reference anchor="RFC4033">
        <front>
          <title>DNS Security Introduction and Requirements</title>
          <author fullname="R. Arends" initials="R." surname="Arends"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <author fullname="M. Larson" initials="M." surname="Larson"/>
          <author fullname="D. Massey" initials="D." surname="Massey"/>
          <author fullname="S. Rose" initials="S." surname="Rose"/>
          <date month="March" year="2005"/>
          <abstract>
            <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4033"/>
        <seriesInfo name="DOI" value="10.17487/RFC4033"/>
      </reference>
      <reference anchor="RFC5652">
        <front>
          <title>Cryptographic Message Syntax (CMS)</title>
          <author fullname="R. Housley" initials="R." surname="Housley"/>
          <date month="September" year="2009"/>
          <abstract>
            <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="70"/>
        <seriesInfo name="RFC" value="5652"/>
        <seriesInfo name="DOI" value="10.17487/RFC5652"/>
      </reference>
      <reference anchor="I-D.ietf-lamps-cms-sphincs-plus">
        <front>
          <title>Use of the SLH-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
          <author fullname="Russ Housley" initials="R." surname="Housley">
            <organization>Vigil Security, LLC</organization>
          </author>
          <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
            <organization>Amazon Web Services</organization>
          </author>
          <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
            <organization>Cloudflare</organization>
          </author>
          <date day="13" month="January" year="2025"/>
          <abstract>
            <t>   SLH-DSA is a stateless hash-based signature scheme.  This document
   specifies the conventions for using the SLH-DSA signature algorithm
   with the Cryptographic Message Syntax (CMS).  In addition, the
   algorithm identifier and public key syntax are provided.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-19"/>
      </reference>
      <reference anchor="RFC9242">
        <front>
          <title>Intermediate Exchange in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
          <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
          <date month="May" year="2022"/>
          <abstract>
            <t>This document defines a new exchange, called "Intermediate Exchange", for the Internet Key Exchange Protocol Version 2 (IKEv2). This exchange can be used for transferring large amounts of data in the process of IKEv2 Security Association (SA) establishment. An example of the need to do this is using key exchange methods resistant to Quantum Computers (QCs) for IKE SA establishment. The Intermediate Exchange makes it possible to use the existing IKE fragmentation mechanism (which cannot be used in the initial IKEv2 exchange), helping to avoid IP fragmentation of large IKE messages if they need to be sent before IKEv2 SA is established.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9242"/>
        <seriesInfo name="DOI" value="10.17487/RFC9242"/>
      </reference>
      <reference anchor="RFC9370">
        <front>
          <title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
          <author fullname="CJ. Tjhai" initials="CJ." surname="Tjhai"/>
          <author fullname="M. Tomlinson" initials="M." surname="Tomlinson"/>
          <author fullname="G. Bartlett" initials="G." surname="Bartlett"/>
          <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
          <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
          <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
          <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
          <date month="May" year="2023"/>
          <abstract>
            <t>This document describes how to extend the Internet Key Exchange Protocol Version 2 (IKEv2) to allow multiple key exchanges to take place while computing a shared secret during a Security Association (SA) setup.</t>
            <t>This document utilizes the IKE_INTERMEDIATE exchange, where multiple key exchanges are performed when an IKE SA is being established. It also introduces a new IKEv2 exchange, IKE_FOLLOWUP_KE, which is used for the same purpose when the IKE SA is being rekeyed or is creating additional Child SAs.</t>
            <t>This document updates RFC 7296 by renaming a Transform Type 4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and renaming a field in the Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange Method". It also renames an IANA registry for this Transform Type from "Transform Type 4 - Diffie- Hellman Group Transform IDs" to "Transform Type 4 - Key Exchange Method Transform IDs". These changes generalize key exchange algorithms that can be used in IKEv2.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9370"/>
        <seriesInfo name="DOI" value="10.17487/RFC9370"/>
      </reference>
      <reference anchor="I-D.ietf-pquip-pqt-hybrid-terminology">
        <front>
          <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
          <author fullname="Florence D" initials="F." surname="D">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <author fullname="Michael P" initials="M." surname="P">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <author fullname="Britta Hale" initials="B." surname="Hale">
            <organization>Naval Postgraduate School</organization>
          </author>
          <date day="10" month="January" year="2025"/>
          <abstract>
            <t>   One aspect of the transition to post-quantum algorithms in
   cryptographic protocols is the development of hybrid schemes that
   incorporate both post-quantum and traditional asymmetric algorithms.
   This document defines terminology for such schemes.  It is intended
   to be used as a reference and, hopefully, to ensure consistency and
   clarity across different protocols, standards, and organisations.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqt-hybrid-terminology-06"/>
      </reference>
      <reference anchor="I-D.ietf-tls-hybrid-design">
        <front>
          <title>Hybrid key exchange in TLS 1.3</title>
          <author fullname="Douglas Stebila" initials="D." surname="Stebila">
            <organization>University of Waterloo</organization>
          </author>
          <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
            <organization>Cisco Systems</organization>
          </author>
          <author fullname="Shay Gueron" initials="S." surname="Gueron">
            <organization>University of Haifa and Meta</organization>
          </author>
          <date day="14" month="January" year="2025"/>
          <abstract>
            <t>   Hybrid key exchange refers to using multiple key exchange algorithms
   simultaneously and combining the result with the goal of providing
   security even if all but one of the component algorithms is broken.
   It is motivated by transition to post-quantum cryptography.  This
   document provides a construction for hybrid key exchange in the
   Transport Layer Security (TLS) protocol version 1.3.

   Discussion of this work is encouraged to happen on the TLS IETF
   mailing list tls@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dstebila/draft-ietf-tls-hybrid-design.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-12"/>
      </reference>
      <reference anchor="I-D.ietf-pq-composite-keys">
        <front>
          <title>*** BROKEN REFERENCE ***</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="I-D.ietf-lamps-cert-binding-for-multi-auth">
        <front>
          <title>Related Certificates for Use in Multiple Authentications within a Protocol</title>
          <author fullname="Alison Becker" initials="A." surname="Becker">
            <organization>National Security Agency</organization>
          </author>
          <author fullname="Rebecca Guthrie" initials="R." surname="Guthrie">
            <organization>National Security Agency</organization>
          </author>
          <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
            <organization>National Security Agency</organization>
          </author>
          <date day="10" month="December" year="2024"/>
          <abstract>
            <t>   This document defines a new CSR attribute, relatedCertRequest, and a
   new X.509 certificate extension, RelatedCertificate.  The use of the
   relatedCertRequest attribute in a CSR and the inclusion of the
   RelatedCertificate extension in the resulting certificate together
   provide additional assurance that two certificates each belong to the
   same end entity.  This mechanism is particularly useful in the
   context of non-composite hybrid authentication, which enables users
   to employ the same certificates in hybrid authentication as in
   authentication done with only traditional or post-quantum algorithms.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cert-binding-for-multi-auth-06"/>
      </reference>
      <reference anchor="I-D.draft-bonnell-lamps-chameleon-certs">
        <front>
          <title>A Mechanism for Encoding Differences in Paired Certificates</title>
          <author fullname="Corey Bonnell" initials="C." surname="Bonnell">
            <organization>DigiCert</organization>
          </author>
          <author fullname="John Gray" initials="J." surname="Gray">
            <organization>Entrust</organization>
          </author>
          <author fullname="D. Hook" initials="D." surname="Hook">
            <organization>KeyFactor</organization>
          </author>
          <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
            <organization>DigiCert</organization>
          </author>
          <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
            <organization>Entrust</organization>
          </author>
          <date day="21" month="October" year="2024"/>
          <abstract>
            <t>   This document specifies a method to efficiently convey the
   differences between two certificates in an X.509 version 3 extension.
   This method allows a relying party to extract information sufficient
   to construct the paired certificate and perform certification path
   validation using the constructed certificate.  In particular, this
   method is especially useful as part of a key or signature algorithm
   migration, where subjects may be issued multiple certificates
   containing different public keys or signed with different CA private
   keys or signature algorithms.  This method does not require any
   changes to the certification path validation algorithm as described
   in RFC 5280.  Additionally, this method does not violate the
   constraints of serial number uniqueness for certificates issued by a
   single certification authority.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-bonnell-lamps-chameleon-certs-05"/>
      </reference>
      <reference anchor="I-D.draft-ietf-pquip-hybrid-signature-spectrums">
        <front>
          <title>Hybrid signature spectrums</title>
          <author fullname="Nina Bindel" initials="N." surname="Bindel">
            <organization>SandboxAQ</organization>
          </author>
          <author fullname="Britta Hale" initials="B." surname="Hale">
            <organization>Naval Postgraduate School</organization>
          </author>
          <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
            <organization>SandboxAQ</organization>
          </author>
          <author fullname="Florence D" initials="F." surname="D">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <date day="9" month="January" year="2025"/>
          <abstract>
            <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatibility, hybrid
   generality, and simultaneous verification.

   Discussion of this work is encouraged to happen on the IETF PQUIP
   mailing list pqc@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dconnolly/draft-ietf-pquip-hybrid-
   signature-spectrums

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-06"/>
      </reference>
    </references>
    <?line 790?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document leverages text from an earlier draft by Paul Hoffman. Thanks to Dan Wing, Florence D, Thom Wiggers, Sophia Grundner-Culemann, Panos Kampanakis, Ben S3, Sofia Celi, Melchior Aelmans, Falko Strenzke, Deirdre Connolly, Hani Ezzadeen, and Daniel Van Geest for the discussion, review and comments.</t>
      <t>In particular, the authors would like to acknowledge the contributions to this document by Kris Kwiatkowski.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y923Yb6ZUmeM+niMVcPUW2AfAsicpxV1GUlFLrkExR6aye
6WllAAiQYQYi4IgAmbCcs+qyr2euZq2el/OTzP724T8EAhRlu13VvUZ2SiQQ
h/+w/33e3x4Oh1tt3hbZ02T7omra4Q/LtGyX8+S8Xi3a6qpOF9erZFbVyYvy
Ki+zrG62t9LxuM5ucccP593vJmmbXVX16mmSl7Nqa2taTcp0To+f1umsHeZZ
Oxsu/rDMF/T3ZJjZjcOC7mvarWY5nudNk1dlu1rQXa9ffHy5VS7n46x+ujWl
a55uTaqyycpm2TxN2nqZbdFAjrbSOktpQJfZZFnn7Wp7666qb67qarngYf74
+mJ76yZb0afTp1vJMKGRb21t3Wblkp6YJHYlj2ybPpC3b/9ET8nLq+Q7fI/P
52le8HWTf8JURlV9hY/TenJNH1+37aJ5ureHq/BRfpuN7LI9fLA3rqu7Jtuj
+/e2aQBNm5bTT2lRlfS2VdZsLfKnyf/eVpNB0lR1W2ezhn5azfWHts4n7SCZ
VPN5Vrb0Ca3uPF0saIj/x9ZWumyvqxrToxElyWxZFLL0Z7QkdZo8S8us/n2W
8bc0orTM/5i2tNRPk/fVTZ7y5xNavafJu2WZT67lg2pZttjP77J6npYr/jDT
dUj5yaOxPvmfSjxnROPbXh/Fx7xeztMia+7SOvmQTaerBwyExnxFy1PLoOvs
iq96k9Zl2qY3aTzC1+VUb7bx3VTltM3rf7rC7xvG9Tyf0yTyqkkuJ9dVXuZp
md7kzQMGd9ZeEyF2VqnOskkWDWJqLxg14QtksYbjrCiI+sfNxmWbVy2dwVdV
UWTjLLvpGdjz/Co/z+o2GNtF3rbNeFlfdXbxx8uzaHBtPh9d26P/aUoPmtCD
orHkJR21d6Pk+2XZ0AFq5Ykyunf5Tdb5gob2lDgCnc2mTd5i7tmUvzC2od/x
Z0TSWdY+TQ5P9veTy6qg49AmH6p0mvz5X/7v5HJJNycH+/vBxL5v2/QuHSTf
ly1RXxXP7pyWdmpUMaXxvTl8kxx9dxJOeU5DHlU25H/KZDSYMR3IsiIib+nc
Pt3aAgPzvyVgArdZPWwyPu38yMR45/ko+d/S4obG9ed/+W9y4Z//5f9pkj8o
O5WbwErSgthj3l7Pk7xJqgWtf1oM/vwv/29ycb1q8kla0Nm4zbO75GyQ3FbF
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
FyFqoW2uhAFbgGjopba4sfjYjrsHmbcJhr+J4tjlpxTH4dX4Soe4qZFCJfSW
o3it8HwJ0xsyqt69GsVUbzgmaggrQIk8B1WhTA78awgkjOGbkhRRu38cXto9
KFWZiXIanZjh9x9pkjrjoLMUP+GdLBOtQ/K+e6/6RVERZBpHlx8kedNvRh/s
qx3txq6qqydMnnWRriC80MfKLwW/IQiFuXKfqOdvYOwZLhiSMDj1opTAaKDU
GeA/axKLzKvABrM75ZMPdGmHNuzHqsM0tM7Os3nd0G6x9D0lg9fx1+gSJ70B
Y6zyPH5lZ2J2Fy3e89hIdSCkHimHa//F3RbtEVikFHE712nYeUw7fbtA9joI
NCNJu8YFLOLPwqZm0q2UQYPpJVGvZAk0u0daW0hDjPU9gRXHcVxVsH8E7piP
ooerNf4NBcH52xTad8mBPW3bh7GpIPuGV+CNBsldMJN++qN1cMIFKoE43d3M
KYVOnaEPlZWudTxRT+9VTshceHV2OIT2RhOkn9+8wC+7AzWKw1RVFco7h8e4
9og0wZXU4WN0fCiu+bAHA/D9yjg1kLjpL+w7iVm/cmYHBxECAarhxYrZjvOG
aBoL9uBkcLA/ODgZHO4PDk92XXZHIt4YHfpPXOVf5u0fY3fkjmSTew4wcC70
49GBNh4JBR+o25306PDMqq762j/eg8Hh4HjwhMyLC6+k6yvmEJmDwHf4ZN97
gNyqutaQptEzYZjZLar1zsWbXVWwZC13LukDU7iddFX+0r/P73atiiSaVefe
YGn9vu/8pBTUJY2dV8EW9b1WXikcYJwhsuaYrKWRdDGIueVNZ3E8woXOhof+
7rdHh2ur9qfk4g2qJfHXTygfevXbE/rn1W9JPvA/8tuh/HZ4guowrk+zv7TY
6t5/6C10xOivQ/rrgP578ujJMf55cox/Tvf3+Z+DR/zPER2x+Bb8d3z8CGM4
fsRDOX78hP85PcY/Jwf7+51b8KTDo+Mn+Odkn/959Ij/eXLI/5w+edK5BR8f
HJ7yGI9lqI8O+J/Hj/kfGhnd4vovIPg/BMPa2vrJN6W5dl+JAzYF476aC0FY
0DsX8z5zXaGd44tI4NnKGQYcPhXBuWykE4irWEBkN8jmkKAn5I0Vu1xn6a3k
1SLI2npdrygkPhs8zMHHh9xRQE6FJjdMiyP37MqJuoGhQ0jk3Qn9YWNtseIl
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
p4nuefwEwQq65WjjLcRAEfxAKOMUgY2jk0ePjr94TxPdc/Do0CIwm+4BU3Iz
4XjK8akN7r6bmvimw9PHpxxS+fLpzKVqA5Asofu73FxgwKwwgyXPOC4xyTWD
njQ8DiA43Ii9zpnYQPcdVamj7dx7Er5wFABoumk0f+Wx+KvOw9ccCPtzEIpC
98frSN0vn+zv94jt4NaDR0eH93ydJKRu9DyBL/viuLy+tjau08dfGNfhk4N7
vk6SR48ePWBcwdzCu9fUN/vy4OhgbTmiWw9PDtfWIxrX4fFh35Inm7TBnn0M
ltyN6+BJj6oZjut4faejcR2AT/6F4/Lq5tq4Tk/uXy8a1v3jOjraP/3yuE6C
j/2PgfrXHdfj02AqPbceHu2f3PM1E+AD9rF/XIGO2h3XSd9xCm49Oli/IB7X
yUP2sX9cXkXufnl4cvqFfXzyaI0Ao3EdPzrsO9I8LjidNLWOxBKsWYBU7HnE
heS2YVeT+ToZw2LnzYt/bnbDqz5/E5YEaMNmS7VxGR5IL9YaA6fjuZw+L+Yc
TkaQPBRCMA3MBgidsBwoioAoLMpoBd3uzZOl7+ocJNP+ZULTueZjh5k59vM4
sW2C2GpWw6ktqfSqc3ez/FVhyGtAtrOyoPnuTfS4W8S8dNMibcAn7+t8wlyh
jXO7Vw3476kF2J/zeCjRVX+BC+XvqwSEx8TP6YKUwk+v3jx/+ckMl+B8Plrj
dJ3Tu64CdIVt7xOSJPniuE4OD/y4VBHwwraHR4cv7hPxMTPsfcKXx/XPhycn
B6fdBbNv+5bj69ar/wnRuHj4fTf/6ytzXgvoGde/onKSrKkfwbj+OwnbTQum
xlYJJvIA1rmeanwfHx1sYqIPM6X+Hjx0s3ch+R+Vh8qfD5dnh/vHT9xqyR/l
qJtppe+C2C7ofYKt1heHxRx+7cnrOlnnvV/m7Bs92F/mVGv23d/bukvWWCT/
6Vp3fzvj7q/hn2tG1N/Qhjrss3bWhtXLPteMqL+3CbVhWF1T5e9kqZw1XFzD
Id1C6liqsXQTcLmAQVAARae+eCs1NTlS38MUSC2CUWec4+4umf0eCyAsRW1j
WwmW0q6/gWTOM3VKd8yFqc/V4ol4UMdOwBxFpKnEs629pQV7eRnS5PzDD+da
aZg2Tqq5mnsSYEjrS4HP4pzlXF4CUyhLiupKcBo8ss4O48DDHkFSBHIUiyJf
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
ue/8A32KJ9mEZwEA

-->

</rfc>
