<?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.13 (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-04" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="PQC for Engineers">Post-Quantum Cryptography for Engineers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-04"/>
    <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>
    <date year="2024" month="May" day="21"/>
    <area>Security</area>
    <workgroup>PQUIP</workgroup>
    <keyword>PQC</keyword>
    <abstract>
      <?line 189?>

<t>The presence of a Cryptographically Relevant Quantum Computer (CRQC) would render state-of-the-art, traditional public-key algorithms deployed today obsolete, since the assumptions about the intractability of the mathematical problems for these algorithms that offer confident levels of security today no longer apply in the presence of a CRQC. This means there is a requirement to update protocols and infrastructure to use post-quantum algorithms, which are public-key algorithms designed to be secure against CRQCs as well as classical computers.  These new public-key algorithms behave similarly to previous public key algorithms, however the intractable mathematical problems have been carefully chosen so they are hard for CRQCs as well as classical computers. This document explains why engineers need to be aware of and understand post-quantum cryptography. It emphasizes the potential impact of CRQCs on current cryptographic systems and the need to transition to post-quantum algorithms to ensure long-term security. The most important thing to understand is that this transition is not like previous transitions from DES to AES or from SHA-1 to SHA-2. While drop-in replacement may be possible in some cases, others will require protocol re-design to accommodate significant differences in behavior between the new post-quantum algorithms and the classical algorithms that they are replacing.</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 193?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Quantum computing is no longer perceived as a conjecture of computational sciences and theoretical physics. Considerable research efforts and enormous corporate and government funding for the development of practical quantum computing systems are being invested currently. At the time of writing the document, Cryptographically Relevant Quantum Computers (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. 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 we expect quantum computers 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 emergence of 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" (sometimes referred to as "quantum-safe" 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. This document aims to provide general guidance to engineers who utilize public-key cryptography in their software. It covers topics such as selecting appropriate PQC algorithms, understanding the differences between PQC Key Encapsulation Mechanisms (KEMs) and traditional Diffie-Hellman 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 Cryptographically Relevant Quantum Computers (CRQCs).  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. It might be worth mentioning that recently NSA released an article on Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems <xref target="CNSA2-0"/> based on the need to protect against deployments of CRQCs in the future. Germany's BSI has also released a PQC migration and recommendations document <xref target="BSI-PQC"/> which largely aligns with United States NIST and NSA guidance, but does differ on some of the guidance.</t>
      <t>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 algorithms from the Symmetric side based on stream, block ciphers, hash functions, MACs, etc. 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 or Quantum Key Generation, which use quantum hardware to exploit quantum effects to protect communications and generate keys, respectively.  Post-quantum cryptography is based on conventional (i.e., non-quantum) math and software and can be run on any general purpose computer.</t>
      <t>Please note: 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>While there is ongoing discussion about whether to use the term 'Post-Quantum' or 'Quantum Ready/Resistant' to describe algorithms that resist CRQCs, a consensus has not yet been reached. It's 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 used for algorithms which are synonymous with Post-Quantum termed algorithms but a final decision has not yet been reached as to the ambiguity of these terms.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="contributing-to-this-document">
      <name>Contributing to This Document</name>
      <t>The guide was inspired by a thread in September 2022 on the <eref target="mailto:pqc@ietf.org">pqc@ietf.org</eref> mailing list.
The document is being collaborated on through a <eref target="https://github.com/tireddy2/pqc-for-engineers">GitHub repository</eref>.</t>
      <t>The editors actively encourage contributions to this document. Please consider writing a section on a topic that you think is missing. Short of that, writing a paragraph or two on an issue you found when writing code that uses PQC would make this document more useful to other coders. Opening issues that suggest new material is fine too, but relying on others to write the first draft of such material is much less likely to happen than if you take a stab at it yourself.</t>
    </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 session 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>
      </ul>
    </section>
    <section anchor="invariants-of-post-quantum-cryptography">
      <name>Invariants of Post-Quantum Cryptography</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. CRQCs, in theory, do not offer substantial advantages in breaking symmetric-key algorithms compared to classical computers (see <xref target="symmetric"/> for more details).</t>
    </section>
    <section anchor="nist-pqc-algorithms">
      <name>NIST PQC Algorithms</name>
      <t>In 2016, the National Institute of Standards and Technology (NIST) started a process to solicit, evaluate, and standardize one or more quantum-resistant public-key cryptographic algorithms, as seen <eref target="https://csrc.nist.gov/projects/post-quantum-cryptography">here</eref>. The first set of algorithms for standardization (https://csrc.nist.gov/publications/detail/nistir/8413/final) were selected in July 2022.</t>
      <t>NIST announced as well that they will be <eref target="https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/round-4/guidelines-for-submitting-tweaks-fourth-round.pdf">opening a fourth round</eref> to standardize an alternative KEM, and a <eref target="https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/call-for-proposals-dig-sig-sept-2022.pdf">call</eref> for new candidates for a post-quantum signature algorithm.</t>
      <t>These algorithms are not a drop-in replacement for classical 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 classical algorithms with either a PQC KEM or a PQC signature method, depending on how the classical algorithm was previously being used. Additionally, KEMs, as described in Section 10, 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><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.ipd.pdf">ML-KEM</eref>: 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><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.ipd.pdf">ML-DSA</eref>: Module-Lattice-Based Digital Signature Standard (FIPS-204).</t>
            </li>
            <li>
              <t><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.205.ipd.pdf">SLH-DSA</eref>: Stateless Hash-Based Digital Signature (FIPS-205).
Standard (FIPS-205).</t>
            </li>
            <li>
              <t><eref target="https://falcon-sign.info/">FN-DSA</eref>: 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><eref target="https://classic.mceliece.org/">Classic McEliece</eref>: 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><eref target="https://bikesuite.org/">BIKE</eref>: 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><eref target="http://pqc-hqc.org/">HQC</eref> : 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><eref target="https://sike.org/">SIKE</eref> (Broken): Supersingular Isogeny Key Encapsulation (SIKE) is a specific realization of the SIDH (Supersingular Isogeny Diffie-Hellman) protocol. Recently, a <eref target="https://eprint.iacr.org/2022/975.pdf">mathematical attack</eref> 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 we may yet see more cryptographic primitives in the future from this research area.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="threat-of-crqcs-on-cryptography">
      <name>Threat of CRQCs on Cryptography</name>
      <t>Post-quantum cryptography or quantum-safe cryptography refers to cryptographic algorithms that are secure against cryptographic attacks from both CRQCs and classic computers.</t>
      <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>
      <section anchor="symmetric">
        <name>Symmetric cryptography</name>
        <t>Grover's algorithm is a quantum search algorithm that provides a theoretical quadratic speedup for searching an unstructured database, compared to classical algorithms. If we 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 achieve quantum resistance. 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. 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 that we should double the sizes of symmetric keys, the current consensus among experts is that the current key sizes remain secure in practice.</t>
        <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>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 classical 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 classical and quantum attacks. As a result, 128-bit algorithms can be considered quantum-safe for the foreseeable future.</t>
      </section>
      <section anchor="asymmetric-cryptography">
        <name>Asymmetric cryptography</name>
        <t>“Shor’s algorithm” on the other side, 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 needs a CRQC.</t>
        <t>For example, to provide some context, one would need 20 million noisy qubits to break RSA-2048 in 8 hours <xref target="RSAShor"/><xref target="RSA8HRS"/> or 4099 stable (or logical) qubits to break it in 10 seconds <xref target="RSA10SC"/>.</t>
        <t>For structured data such as public-key and signatures, instead, CRQCs can fully solve the underlying hard problems used in classic 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 classic 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>
    <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, we are 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 can be decrypted 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 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.</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 our 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 are we preparing our IT systems during those "y" years (or in other words, how can one 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 we track 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>
    </section>
    <section anchor="post-quantum-cryptography-categories">
      <name>Post-quantum cryptography categories</name>
      <t>The current set of problems used in post-quantum cryptography 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, Shortest 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 vector basis 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 vectors not orthogonal). 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" basis for public keys and "good" basis for private keys. The public keys ("bad" basis) 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" basis) 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 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 such 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 Post-Quantum 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 this point in time (July 2023), the PQC candidates by NIST are considered secure under these attacks and we suggest 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 ultimately signature forgery attacks against that key.</t>
        <t>The SPHINCS algorithm on the other hand leverages the HORST (Hash to Obtain Random Subset with Trees) technique and remains the only hash based signature scheme that is stateless.</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>
      <section anchor="what-is-a-kem">
        <name>What is a KEM</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 in one of two ways: (1) Derive a Data Encryption Key (DEK) to encrypt the data (2) Derive a Key Encryption Key (KEK) used to wrap the DEK.  The term "encapsulation" is chosen intentionally to indicate that KEM algorithms behave differently at the API level than the Key Agreement or Key Encipherment / Key Transport mechanisms that we are accustomed to using today. Key Agreement schemes imply that both parties contribute a public / private keypair 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; (ct, ss)</t>
          </li>
          <li>
            <t>def kemDecaps(ct, sk) -&gt; ss</t>
          </li>
        </ul>
        <t>where pk is public key, sk is secret key, ct is the ciphertext representing an encapsulated key, and ss 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">sk,</text>
                  <text x="76" y="100">pk</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  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk, pk = kemKeyGen() |-|           |
  +----------------------+ |           |
                           |           |
                           | pk        |
                           |---------->|
                           |           | +-----------------------+
                           |           |-| ss, ct = kemEncaps(pk)|
                           |           | +-----------------------+
                           |           |
                           |       ct  |
                           |<----------|
+------------------------+ |           |
| ss = kemDecaps(ct, sk) |-|           |
+------------------------+ |           |
                           |           |
]]></artwork>
          </artset>
        </figure>
        <section anchor="authenticated-key-exchange-ake">
          <name>Authenticated Key Exchange (AKE)</name>
          <t>Authenticated Key Exchange 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-22"/>. 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 Authenticated Key Exchange</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="544" viewBox="0 0 544 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,288 L 8,320" 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,288 L 208,320" fill="none" stroke="black"/>
                  <path d="M 224,72 L 224,336" 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,336" fill="none" stroke="black"/>
                  <path d="M 336,176 L 336,224" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                  <path d="M 536,176 L 536,224" 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 536,176" fill="none" stroke="black"/>
                  <path d="M 336,224 L 536,224" fill="none" stroke="black"/>
                  <path d="M 232,272 L 312,272" fill="none" stroke="black"/>
                  <path d="M 8,288 L 208,288" fill="none" stroke="black"/>
                  <path d="M 8,320 L 208,320" 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,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="52" y="100">sk1,</text>
                    <text x="88" y="100">pk1</text>
                    <text x="112" y="100">=</text>
                    <text x="156" y="100">KeyGen()</text>
                    <text x="216" y="100">-</text>
                    <text x="248" y="148">pk1</text>
                    <text x="328" y="196">-</text>
                    <text x="364" y="196">sk2,</text>
                    <text x="400" y="196">pk2</text>
                    <text x="424" y="196">=</text>
                    <text x="468" y="196">KeyGen()</text>
                    <text x="356" y="212">ss</text>
                    <text x="376" y="212">=</text>
                    <text x="428" y="212">KeyEx(pk1,</text>
                    <text x="492" y="212">sk2)</text>
                    <text x="304" y="260">pk2</text>
                    <text x="28" y="308">ss</text>
                    <text x="48" y="308">=</text>
                    <text x="100" y="308">KeyEx(pk2,</text>
                    <text x="164" y="308">sk1)</text>
                    <text x="216" y="308">-</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk1, pk1 = KeyGen()  |-|           |
  +----------------------+ |           |
                           |           |
                           | pk1       |
                           |---------->|
                           |           | +------------------------+
                           |           |-| sk2, pk2 = KeyGen()    |
                           |           | | ss = KeyEx(pk1, sk2)   |
                           |           | +------------------------+
                           |           |
                           |        pk2|
                           |<----------|
+------------------------+ |           |
| ss = KeyEx(pk2, sk1)   |-|           |
+------------------------+ |           |
                           |           |
]]></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 Authenticated Key Exchange (AKE). It's also worth noting that in an Ephemeral-Static Diffie-Hellman (DH) scenario, where <tt>sk2</tt> and <tt>pk2</tt> represent long-term keys. such as those contained in an email encryption certificate, the client can compute <tt>ss = KeyEx(pk2, sk1)</tt> without waiting for a response from the Server. This characteristic transforms it into a non-interactive and authenticated key exchange method. Many Internet protocols rely on this aspect of DH. When using Key Encapsulation Mechanisms (KEMs) as the underlying primitive, a flow may be non-interactive or authenticated, but not both. Consequently, certain Internet protocols will necessitate redesign to accommodate this distinction, either by introducing extra network round-trips or by making trade-offs in security properties.</t>
          <t>Post-Quantum KEMs are inherently interactive Key Exchange (KE) protocols because they involve back-and-forth communication to negotiate and establish a shared secret key. This is unlike Diffie-Hellman (DH) Key Exchange (KEX) or RSA Key Transport, which provide the non-interactive key exchange (NIKE) property. NIKE is a cryptographic primitive that enables two parties who know each other's public keys to agree on a symmetric shared key without requiring any real-time interaction. Consider encrypted email, where the content needs to be encrypted and sent even if the receiving device containing the decryption keys (e.g., a phone or laptop) is currently offline.</t>
          <t>Another important property of Diffie-Hellman is that in addition to being a NIKE, it is also an Authenticated Key Exchange (AKE), meaning that since both parties needed to involve their asymmetric keypair, both parties have proof-of-identity of the other party. In order to achieve an AKE with KEM primitives, two full KEM exchanges need to be performed, and their results combined to form a single shared secret.</t>
          <figure anchor="tab-kem-ake">
            <name>KEM based Authenticated Key Exchange</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,288 L 8,352" 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,88" fill="none" stroke="black"/>
                  <path d="M 208,104 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 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 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)"/>
                  <path class="jump" d="M 208,104 C 214,104 214,88 208,88" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="220" y="52">Client</text>
                    <text x="316" y="52">Server</text>
                    <text x="52" y="100">sk1,</text>
                    <text x="88" y="100">pk1</text>
                    <text x="112" y="100">=</text>
                    <text x="164" y="100">kemKeyGen(</text>
                    <text x="236" 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">sk2,</text>
                    <text x="400" y="212">pk2</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  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk1, pk1 = kemKeyGen() |-|         |
  +----------------------+ |           |
                           |           |
                           |pk1        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss1, ct1 = kemEncaps(pk1)|
                           |           | | sk2, pk2 = 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. Sometimes combiners require both the shared secrets and ciphertexts as input and can act on more than two KEMs; <tt>Combiner(ss1, ct1, ss2, ct2, ..)</tt>. For a more thorough discussion of KEM combiners, see <xref target="I-D.draft-ounsworth-cfrg-kem-combiners-04"/>.</t>
        </section>
      </section>
      <section anchor="security-property">
        <name>Security property</name>
        <ul spacing="normal">
          <li>
            <t>IND-CCA2 : IND-CCA2 (INDistinguishability under adaptive Chosen-Ciphertext Attack) is an advanced security notion for encryption schemes. It ensures the confidentiality of the plaintext, resistance against chosen-ciphertext attacks, and prevents the adversary from forging valid ciphertexts (given access to the public key). 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 provides IND-CCA2 security.</t>
          </li>
        </ul>
        <t>Understanding IND-CCA2 security is essential for individuals involved in designing or implementing cryptographic systems and protocols 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. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and not rely on implementers being deep experts in cryptographic theory.</t>
      </section>
      <section anchor="hpke">
        <name>HPKE</name>
        <t>HPKE (Hybrid Public Key Encryption) <xref target="RFC9180"/> deals with a variant of KEM which is essentially a PKE of arbitrary sized plaintexts for a recipient public key. It works with a combination of KEMs, KDFs and AEAD schemes (Authenticated Encryption with Additional Data). 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.westerbaan-cfrg-hpke-xyber768d00-02"/>. 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.2 of <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00-02"/>.</t>
      </section>
    </section>
    <section anchor="pqc-signatures-1">
      <name>PQC Signatures</name>
      <section anchor="what-is-a-post-quantum-signature">
        <name>What is a Post-quantum Signature</name>
        <t>Any digital signature scheme that provides a construction defining security under post-quantum setting falls under this category of PQ signatures.</t>
      </section>
      <section anchor="security-property-1">
        <name>Security property</name>
        <ul spacing="normal">
          <li>
            <t>EUF-CMA : 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>
          </li>
        </ul>
        <t>Understanding EUF-CMA security is essential for individual involved in designing or implementing cryptographic systems to ensure the security, reliability, and trustworthiness of digital signature schemes. It allows for informed decision-making, vulnerability analysis, compliance with standards, and designing systems that provide strong protection against forgery attacks. Understanding EUF-CMA security is generally not necessary for developers migrating to using an IETF-vetted post-quantum cryptography (PQC) signature scheme within a given protocol or flow. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and should not assume that implementers are deep 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 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 uniform distribution over small integers for computing coefficients in error vectors, which makes the scheme easier to implement.</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 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 [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 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. The advantages and disadvantages of SLH-DSA over other signature algorithms is discussed in Section 3.1 of <xref target="I-D.draft-ietf-cose-sphincs-plus"/>.</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-Tree 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 XMSS^MT 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 classical 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 succesfully applied.</t>
        <section anchor="lms-scheme-key-and-signature-sizes">
          <name>LMS scheme - key and signature sizes</name>
          <t>The LMS scheme is characterized by four distinct parameter sets - 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 parametrizations 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 tables 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 performance by reducing the size of signed messages, 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. 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>Protocols like TLS 1.3 and DNSSEC use the Hash-then-Sign paradigm. In TLS 1.3 <xref target="RFC8446"/> CertificateVerify message, 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.</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 case of SLH-DSA, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In case of FN-DSA, a hash function is used as part of the signature process, it uses the SHAKE-256 hash function to derive a digest of the message being signed. 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 strongly preferred where applications can tolerate it.</t>
      </section>
    </section>
    <section anchor="RecSecurity">
      <name>Recommendations for Security / Performance Tradeoffs</name>
      <t>The table below denotes the 5 security levels provided by NIST required for PQC algorithms. Users can leverage the appropriate algorithm based on the security level required for their use case. 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 {NIST} as of time of writing (July 2023).</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 fast (f) version or small (s) version for "y" bit AES security level. Refer to <xref target="I-D.ietf-lamps-cms-sphincs-plus-02"/> 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 parametrisation 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>In this section, we provide two tables for comparison of different KEMs and Signatures respectively, in the traditional and post-quantum scenarios. These tables will 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, 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 classical 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>
        <ol spacing="normal" type="1"><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>
        </ol>
        <t>Various instantiations of these two types of hybrid key agreement schemes have been explored and will be discussed further. One must be careful when selecting which hybrid scheme to use.  The chosen schemes at IETF are IND-CCA2 robust, 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. 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 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 <xref target="I-D.ounsworth-pq-composite-keys"/>; 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 in to determine whether and when to support the PQ/T Hybrid Authentication property.</t>
      </section>
      <section anchor="additional-considerations">
        <name>Additional Considerations</name>
        <t>It is also possible to use more than two algorithms together in a hybrid scheme, and there are multiple possible ways those algorithms can be combined.  For the purposes of a post-quantum transition, the simple combination of a post-quantum algorithm with a single classical algorithm is the most straightforward, but the use of multiple post-quantum algorithms with different hard math problems has also been considered.  When combining algorithms, it is possible to require that both algorithms be used together (the so-called "and" mode) or that only one does (the "or" mode), or even some more complicated scheme.  Schemes that do not require both algorithms to validate only have the strength of the weakest algorithm, and therefore offer little or no security benefit but may offer backwards compatibility, crypto agility, or ease-of-migration benefits.  Care should be taken when designing "or" mode hybrids to ensure that the larger PQ keys are not required to be transmitted to and processed by legacy clients that will not use them; this was the major drawback of the failed proposal <xref target="I-D.draft-truskovsky-lamps-pq-hybrid-x509"/>.  This combination of properties makes optionally including post-quantum keys without requiring their use to be generally unattractive in most use cases. On the other hand, including a classical key -- particularly an elliptic curve key -- alongside a lattice key is generally considered to be negligible in terms of the extra bandwidth usage.</t>
        <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.  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 time of writing (August 2023) 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 the pairs of algorithms that can be combined.  A recent trends in protocols is to only allow a small number of "known good" configurations that make sense, 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 (https://datatracker.ietf.org/doc/draft-bonnell-lamps-chameleon-certs/).</t>
        <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 standardised 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>
        <t>Many of these points are still being actively explored and discussed, and the consensus may change over time.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="cryptanalysis">
        <name>Cryptanalysis</name>
        <t>Classical 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.
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"/>. 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 relevant for both classical 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.
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 hardcoded 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 hardcoded 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 we rely 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 enables potential security against "Harvest Now, Decrypt Later" attack and 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 inherently linked to the shared secret it produces. In contrast, in some other cryptographic schemes like Diffie-Hellman, a change in the public key results in a change in the derived shared secret.</t>
      </section>
    </section>
    <section anchor="further-reading-resources">
      <name>Further Reading &amp; Resources</name>
      <section anchor="reading-list">
        <name>Reading List</name>
        <t>(A reading list. <eref target="https://nostarch.com/seriouscrypto">Serious Cryptography</eref>. Pointers to PQC sites with good explanations. List of reasonable Wikipedia pages.)</t>
      </section>
      <section anchor="developer-resources">
        <name>Developer Resources</name>
        <ul spacing="normal">
          <li>
            <t><eref target="https://openquantumsafe.org/">Open Quantum Safe</eref> and corresponding <eref target="https://github.com/open-quantum-safe">github</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/ietf-wg-pquip/state-of-protocols-and-pqc">PQUIP WG list of PQC-related protocol work within the IETF</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The authors would like to acknowledge that this content is assembled from countless hours of discussion and countless megabytes of email discussions. We have tried to reference as much source material as possible, and apologize to anyone whose work was inadvertently missed.</t>
      <t>In particular, the authors would like to acknowledge the contributions to this document by the following individuals:</t>
      <t>Kris Kwiatkowski</t>
      <t>PQShield, LTD</t>
      <t>United Kingdom.</t>
      <t>kris@amongbytes.com</t>
      <t>Mike Ounsworth</t>
      <t>Entrust</t>
      <t>Canada</t>
      <t>mike.ounsworth@entrust.com</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document leverages text from https://github.com/paulehoffman/post-quantum-for-engineers/blob/main/pqc-for-engineers.md. Thanks to Dan Wing, Florence D, Thom Wiggers, Sophia Grundner-Culemann, Panos Kampanakis, Ben S3, Sofia Celi, Melchior Aelmans, Falko Strenzke, Deirdre Connolly, and Daniel Van Geest for the discussion, review and comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <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="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>
      </references>
      <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.ipd.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.ipd.pdf">
          <front>
            <title>FIPS-204: Module-Lattice-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="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="I-D.draft-ietf-lake-edhoc-22">
          <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="25" month="August" year="2023"/>
            <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-22"/>
        </reference>
        <reference anchor="I-D.draft-ounsworth-cfrg-kem-combiners-04">
          <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="8" month="July" year="2023"/>
            <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-04"/>
        </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.westerbaan-cfrg-hpke-xyber768d00-02">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum KEM for HPKE</title>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="May" year="2023"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum KEM,
   for HPKE (RFC9180).  This KEM does not support the authenticated
   modes of HPKE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-westerbaan-cfrg-hpke-xyber768d00-02"/>
        </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="5" month="February" year="2024"/>
            <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 the Module-Lattice-Based Digital
   Signatures (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-03"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cose-sphincs-plus">
          <front>
            <title>SLH-DSA for JOSE and COSE</title>
            <author fullname="Michael Prorock" initials="M." surname="Prorock">
              <organization>mesur.io</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Rafael Misoczki" initials="R." surname="Misoczki">
              <organization>Google</organization>
            </author>
            <author fullname="Michael Osborne" initials="M." surname="Osborne">
              <organization>IBM</organization>
            </author>
            <author fullname="Christine Cloostermans" initials="C." surname="Cloostermans">
              <organization>NXP</organization>
            </author>
            <date day="12" month="January" year="2024"/>
            <abstract>
              <t>   This document describes JOSE and COSE serializations for SLH-DSA,
   which was derived from SPHINCS+, a Post-Quantum Cryptography (PQC)
   based digital signature scheme.

   This document does not define any new cryptography, only
   seralizations of existing cryptographic systems described in
   [FIPS-205].

   Note to RFC Editor: This document should not proceed to AUTH48 until
   NIST completes paramater tuning and selection as a part of the PQC
   (https://csrc.nist.gov/projects/post-quantum-cryptography)
   standardization process.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-sphincs-plus-02"/>
        </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="I-D.ietf-lamps-cms-sphincs-plus-02">
          <front>
            <title>Use of the SPHINCS+ 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="17" month="May" year="2023"/>
            <abstract>
              <t>   SPHINCS+ is a stateless hash-based signature scheme.  This document
   specifies the conventions for using the SPHINCS+ stateless hash-based
   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-02"/>
        </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>
            <date day="9" month="May" year="2024"/>
            <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-03"/>
        </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</organization>
            </author>
            <date day="5" month="April" year="2024"/>
            <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-10"/>
        </reference>
        <reference anchor="I-D.ounsworth-pq-composite-keys">
          <front>
            <title>Composite Public and Private Keys For Use In Internet PKI</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>D-Trust GmbH</organization>
            </author>
            <date day="29" month="May" year="2023"/>
            <abstract>
              <t>   The migration to post-quantum cryptography is unique in the history
   of modern digital cryptography in that neither the old outgoing nor
   the new incoming algorithms are fully trusted to protect data for the
   required data lifetimes.  The outgoing algorithms, such as RSA and
   elliptic curve, may fall to quantum cryptalanysis, while the incoming
   post-quantum algorithms face uncertainty about both the underlying
   mathematics as well as hardware and software implementations that
   have not had sufficient maturing time to rule out classical
   cryptanalytic attacks and implementation bugs.

   Cautious implementers may wish to layer cryptographic algorithms such
   that an attacker would need to break all of them in order to
   compromise the data being protected using either a Post-Quantum /
   Traditional Hybrid, Post-Quantum / Post-Quantum Hybrid, or
   combinations thereof.  This document, and its companions, defines a
   specific instantiation of hybrid paradigm called "composite" where
   multiple cryptographic algorithms are combined to form a single key,
   signature, or key encapsulation mechanism (KEM) such that they can be
   treated as a single atomic object at the protocol level.

   This document defines the structures CompositePublicKey and
   CompositePrivateKey, which are sequences of the respective structure
   for each component algorithm.  Explicit pairings of algorithms are
   defined which should meet most Internet needs.

   This document is intended to be coupled with corresponding documents
   that define the structure and semantics of composite signatures and
   encryption, such as [I-D.ounsworth-pq-composite-sigs] and
   [I-D.ounsworth-pq-composite-kem].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-pq-composite-keys-05"/>
        </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="29" month="April" 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-05"/>
        </reference>
        <reference anchor="I-D.draft-truskovsky-lamps-pq-hybrid-x509">
          <front>
            <title>Multiple Public-Key Algorithm X.509 Certificates</title>
            <author fullname="Alexander Truskovsky" initials="A." surname="Truskovsky">
              <organization>ISARA Corporation</organization>
            </author>
            <author fullname="Daniel Van Geest" initials="D." surname="Van Geest">
              <organization>ISARA Corporation</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Datacard, Ltd</organization>
            </author>
            <author fullname="Serge Mister" initials="S." surname="Mister">
              <organization>Entrust Datacard, Ltd</organization>
            </author>
            <date day="24" month="August" year="2023"/>
            <abstract>
              <t>   Tombstone notice:

   This draft is no longer being pursued at the IETF.  A variant of this
   proposal was adopted in [itu-t-x509-2019], which allows two keys to
   be placed in a certificate but only one used at a time.  The major
   downside of this proposal is that it requires the large PQC key to be
   sent even to legacy clients which will not use it.  Additionally,
   this proposal does not present a generic encoding for the multiple
   signatures produced by the multiple keys contained in a hybrid
   certificate, leaving the responsibility to dependent protocols and
   applications for how to carry multiple signatures and how to signal
   that multiple signatures should have been present in order to detect
   stripping attacks.  As such, this document represents only a partial
   solution to the dual-signature problem.  How, and whether, to
   implement dual-signatures is an active and ongoing discussion topic
   at the IETF and work continues in this area across several working
   groups.  The PQUIP WG serves as a central location for all PQC-
   related discussion.

   Original abstract:

   This document describes a method of embedding alternative sets of
   cryptographic materials into X.509v3 digital certificates, X.509v2
   Certificate Revocation Lists (CRLs), and PKCS #10 Certificate Signing
   Requests (CSRs).  The embedded alternative cryptographic materials
   allow a Public Key Infrastructure (PKI) to use multiple cryptographic
   algorithms in a single object, and allow it to transition to the new
   cryptographic algorithms while maintaining backwards compatibility
   with systems using the existing algorithms.  Three X.509 extensions
   and three PKCS #10 attributes are defined, and the signing and
   verification procedures for the alternative cryptographic material
   contained in the extensions and attributes are detailed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-truskovsky-lamps-pq-hybrid-x509-02"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA92923Ij2bE2ds+nKHPCHtJCgSRIdpOtrS2xSfY03YfhNHo0
e3tCnikARaDEQhVUVSAb4rRDl4747+wrR/yO8LP4UfQkzi8z16lQYHdL2tr2
3yENSaAO65Arz/llHMdbTdbk6bNo+7qsm/i7ZVI0y3l0Xq0WTTmtksVsFd2U
VXRZTLMiTat6eysZjar0Dnd8d97+bpw06bSsVs+irLgpt7Ym5bhI5vT4SZXc
NHGWNjfx4k/LbEH/HcepuTHeP9qql6N5VtdZWTSrBd1xdfn+xVaxnI/S6tnW
hJ77bGtcFnVa1Mv6WdRUy3SLBnG4lVRpQoMZpuNllTWr7a37srqdVuVywUP8
/up6e+s2XdGnk2dbURzRqLe2tu7SYklPjCJzJY9qmz6Qt2//QE/Jimn0Db7H
5/Mky/m68e8wjX5ZTfFxUo1n9PGsaRb1s709XIWPsru0by7bwwd7o6q8r9M9
un9vmwZQN0kx+SnJy4LetkrrrUX2LPqxKce9qC6rpkpvavptNddfmiobN71o
XM7nadHQJ7Sy82SxoCH+YWsrWTazssL0aERRdLPMc1n2M1qSKomeJ0Va/TFN
+VsaUVJkf04aWupn0dvyNkv48zGt3rPozbLIxjP5oFwWDfbym7SaJ8WKP0x1
HRJ+cn+kT/5dgef0aXzb66N4n1XLeZKn9X1SRe/SyWT1GQOhMU9peSoZdJVO
+apXSVUkTXKbhCO8KiZ6sxnfbVlMmqz63RR/bxjXRTanSWRlHQ3HszIrsqRI
brP6MwZ31syIEFurVKXpOA0GMTEv6Nf+C2Sx4lGa53GejOqNyzYvGzp/L8s8
T0dpetsxsItsmp2nVeON7Tprmnq0rKatXfx+eBYMrsnm/Zl59O8m9KAxPUjG
srVVlLTnDZHxs60tnGX3V4QzcZdWcZ0y8fNDI8NGzvvR/5zkt0kv+utf/qtc
+Ne//J919CflLHITTlaSE6fImtk8yuqoXNBwkrz317/8X9H1bFVn4yQnUrnL
0vvorBfdlXk/erLfixaLfjR4evQkHjw9PuhFB6enp/1tHUFSTdNGh8MMI7pJ
8ho78n5GTKKJ36ULOlqtARuWJ9dg0dOcuFIkF0eD/cF++ILInPVpXo6SvMpq
YhQ1PW7ZpHzcF8tRTuPHBtV7Ou+4kSE0+vi44sfHePxe15C/O48v3g43jPW8
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
3hpPgTsC6AR0l6mWI5j8UBP/Xy4+CHuoOwEA

-->

</rfc>
