<?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.1 (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-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="PQC for Engineers">Post-Quantum Cryptography for Engineers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-01"/>
    <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="2023" month="October" day="11"/>
    <area>Security</area>
    <workgroup>PQUIP</workgroup>
    <keyword>PQC</keyword>
    <abstract>
      <?line 173?>

<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/"/>.
      </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 177?>

<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 refered 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. An 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 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.  RSA <xref target="RSA"/> and ECC <xref target="RFC6090"/> can be used for both key encapsulation and signatures, while for post-quantum algorithms, a different algorithm is needed for each.  When upgrading protocols, it is important to replace the existing use of classical algorithms with either a PQC key encapsulation method or a PQC signature method, depending on how RSA and/or ECC was previously being used. Additionally, Key Encapsulation Methods (KEMs), as described in <xref target="KEMs"/>, present a different API than either key agreement or key transport primitives. As a result, they may require protocol-level or application-level changes in order to be incorporated.</t>
      <section anchor="nist-candidates-selected-for-standardization">
        <name>NIST candidates selected for standardization</name>
        <section anchor="pqc-key-encapsulation-mechanisms-kems">
          <name>PQC Key Encapsulation Mechanisms (KEMs)</name>
          <ul spacing="normal">
            <li>
              <t><eref target="https://pq-crystals.org/kyber/">CRYSTALS-Kyber</eref>: Kyber is a module learning with errors (MLWE)-based key encapsulation mechanism (<xref target="lattice-based"/>).</t>
            </li>
          </ul>
        </section>
        <section anchor="pqc-signatures">
          <name>PQC Signatures</name>
          <ul spacing="normal">
            <li>
              <t><eref target="https://pq-crystals.org/dilithium/">CRYSTALS-Dilithium</eref>: CRYSTALS-Dilithium is a lattice signature scheme (<xref target="lattice-based"/> and <xref target="sig-scheme"/>).</t>
            </li>
            <li>
              <t><eref target="https://falcon-sign.info/">Falcon</eref>: Falcon is a lattice signature scheme (<xref target="lattice-based"/> and <xref target="sig-scheme"/>).</t>
            </li>
            <li>
              <t><eref target="https://sphincs.org/">SPHINCS+</eref>: SPHINCS+ is a stateless hash-based signature scheme (<xref target="hash-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 althernative algorithm that is based on different hard problem than Kyber.
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 1/16, 1024 quantum computers will only reduce runtime by 1/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="RSA8HRS"/> or 4099 stable 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 slighly 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 Kyber, Falcon and Dilithium.</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 70s, developed by Lamport and Merkle which creates a digital signature algorithm 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>SPHINCS+ is an advancement on SPHINCS which reduces the signature sizes in SPHINCS and makes it more compact. SPHINCS+ was recently standardized by NIST.</t>
      </section>
      <section anchor="code-based">
        <name>Code-Based Public-Key Cryptography</name>
        <t>This area of cryptography stemmed 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 schumes 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:</t>
        <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,280 L 8,304" fill="none" stroke="black"/>
              <path d="M 24,88 L 24,112" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
              <path d="M 208,288 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,184 L 336,208" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
              <path d="M 536,192 L 536,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 200,80" fill="none" stroke="black"/>
              <path d="M 32,112 L 200,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 344,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 200,272" fill="none" stroke="black"/>
              <path d="M 16,304 L 200,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="208" y="84">\</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="236" y="100">-|</text>
                <text x="208" y="116">|</text>
                <text x="244" y="148">pk</text>
                <text x="536" y="180">\</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="300" y="244">ct</text>
                <text x="208" y="276">\</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>
        <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"/>, explained in [hpke]. The following figure illustrates the Diffie-Hellman (DH) Key exchange:</t>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="544" viewBox="0 0 544 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,296 L 8,320" fill="none" stroke="black"/>
                <path d="M 24,88 L 24,112" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 208,96 L 208,112" fill="none" stroke="black"/>
                <path d="M 208,304 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,184 L 336,224" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 536,192 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 200,80" fill="none" stroke="black"/>
                <path d="M 32,112 L 200,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 344,224 L 528,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 16,320 L 200,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="208" y="84">\</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="536" y="180">\</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="208" y="292">\</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>
          <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 Authenticated Key Exchange (AKE) 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>
        </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 new ciphertexts. An appropriate definition of IND-CCA2 security for KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>. Kyber and Classic McEliece provide 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"/>. Kyber, which is a 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. Dilithium, Falcon and SPHINCS+ 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 FALCON, Dilithium, and SPHINCS+</name>
        <t>Dilithium <xref target="Dilithium"/> 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" method that leverages rejection sampling to render lattice based FS schemes compact and secure. Additionally, Dilithium offers both deterministic and randomized signing. Security properties of Dilithium are discussed in Section 9 of <xref target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
        <t>Falcon <xref target="Falcon"/> 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 Falcon 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.  Falcon also offers very efficient signing and verification procedures. The main potential downsides of Falcon 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>Access to a robust floating-point stack in Falcon is essential for accurate, efficient, and secure execution of the mathematical computations involved in the scheme. It helps maintain precision, supports error correction techniques, and contributes to the overall reliability and performance of Falcon's cryptographic operations as well makes it more resistant to side-channel attacks.</t>
        <t>Falcon's signing operations require constant-time, 64-bit floating point operations to avoid catastrophic side channel vulnerabilities. Doing this correctly is very difficult and is also platform-dependent to an extreme degree, as NIST's report noted. Providing a masked implementation of Falcon also seems impossible, per the authors at the RWPQC 2023 symposium.</t>
        <t>The performance characteristics of Dilithium and Falcon may differ based on the specific implementation and hardware platform. Generally, Dilithium is known for its relatively fast signature generation, while Falcon can provide more efficient signature verification. The choice may depend on whether the application requires more frequent signature generation or signature verification. For further clarity, please refer to the tables in sections <xref target="RecSecurity"/> and <xref target="Comparisons"/>.</t>
        <t>SPHINCS+ <xref target="SPHINCS"/> 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. SPHINCS+ 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. SPHINCS+ offers smaller key sizes, larger signature sizes, slower signature generation, and slower verification when compared to Dilithium and Falcon. SPHINCS+ 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 SPHINCS+ over other signature algorithms is disussed 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>XMSS and HSS/LMS can be applied in various scenarios where digital signatures are required, such as software updates.</t>
      </section>
      <section anchor="hash-then-sign-versus-sign-then-hash">
        <name>Hash-then-Sign Versus Sign-then-Hash</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 Dilithium, it internally incorporates the necessary hash operations as part of its signing algorithm. Dilithium 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 SPHINCS+, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In case of Falcon, 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, Dilithium, Falcon, and SIHPNCS+ 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 Dilithium, Falcon, or SPHINCS+, 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 is defined as a function of resources required to break AES 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">Atleast as hard as to break AES-128 (exhaustive key recovery)</td>
            <td align="left">Kyber512, Falcon512, Sphincs+SHA-256 128f/s</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">Atleast as hard as to break SHA-256/SHA3-256 (collision search)</td>
            <td align="left">Dilithium2</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Atleast as hard as to break AES-192 (exhaustive key recovery)</td>
            <td align="left">Kyber768, Dilithium3, Sphincs+SHA-256 192f/s</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">Atleast as hard as to break 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">Atleast as hard as to break AES-256 (exhaustive key recovery)</td>
            <td align="left">Kyber1024, Falcon1024, Dilithium5, Sphincs+SHA-256 256f/s</td>
          </tr>
        </tbody>
      </table>
      <t>Please note the Sphincs+SHA-256 x"f/s" in the above table denotes whether its the Sphincs+ fast (f) version or small (s) version for "x" bit AES security level. Refer to <xref target="I-D.ietf-lamps-cms-sphincs-plus-02"/> for further details on Sphincs+ algorithms.</t>
      <t>The following table discusses the signature size differences for similar SPHINCS+ 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">SPHINCS+-{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">SPHINCS+-{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">SPHINCS+-{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">SPHINCS+-{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">SPHINCS+-{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">SPHINCS+-{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">Kyber512</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">Falcon512</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">Dilithium2</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">Kyber768</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">Falcon1024</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">Kyber1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</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 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">Kyber512</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">Kyber768</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">Kyber1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</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">Falcon512</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">Dilithium2</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">Dilithium3</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">Falcon1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</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 as well as 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. 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. This Intermediate Exchange can carry out the PQC key exchange after the initial IKEv2 exchange and before the IKE_AUTH 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 cryptalanysis, 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>
      </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 negligeable 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 adressing 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 Kyber <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 agaist any one algorithm, while not fully abandoning traditional cryptosystems.</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>It 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, Sofia Celi, Melchior Aelmans, and Falko Strenzke 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>
      </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="Falcon" target="https://falcon-sign.info/">
          <front>
            <title>Fast Fourier lattice-based compact signatures over NTRU</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Dilithium" target="https://pq-crystals.org/dilithium/index.shtml">
          <front>
            <title>Cryptographic Suite for Algebraic Lattices (CRYSTALS) - Dilithium</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SPHINCS" target="https://sphincs.org/index.html">
          <front>
            <title>SPHINCS+</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="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="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="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 Dilithium</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="7" month="August" year="2023"/>
            <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 Dilithium quantum-resistant
   signatures in Internet X.509 certificates and certificate revocation
   lists.  The conventions for the associated post-quantum signatures,
   subject public keys, and private key are also described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-dilithium-certificates-02"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cose-sphincs-plus">
          <front>
            <title>JOSE and COSE Encoding for SPHINCS+</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="9" month="July" year="2023"/>
            <abstract>
              <t>   This document describes JSON and CBOR serializations for SPHINCS+, a
   Post-Quantum Cryptography (PQC) signature suite.

   This document does not define any new cryptography, only
   seralizations of existing cryptographic systems.

   This document registers key types for JOSE and COSE, specifically
   HASH.

   Key types in this document are specified by the cryptographic
   algorithm family in use by a particular algorithm as discussed in
   RFC7517.

   This document registers signature algorithms types for JOSE and COSE,
   specifically SPHINCS+256s and others as required for use of various
   parameterizations of the SPHINCS+ post-quantum signature scheme.

   Note to RFC Editor: SPHINCS+ is described and noted as a part of the
   2022 PQC Selected Digital Signature Algorithims
   (https://csrc.nist.gov/Projects/post-quantum-cryptography/selected-
   algorithms-2022) As a result, this document should not be proceed to
   AUTH48 until NIST completes paramter 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-01"/>
        </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>
            <date day="4" month="May" year="2023"/>
            <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.

About This Document

   This note is to be removed before publishing as an RFC.

   Status information for this document may be found at
   https://datatracker.ietf.org/doc/draft-ietf-pquip-pqt-hybrid/.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqt-hybrid-terminology-00"/>
        </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="7" month="September" year="2023"/>
            <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-09"/>
        </reference>
        <reference anchor="RFC9370">
          <front>
            <title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="CJ. Tjhai" initials="CJ." surname="Tjhai"/>
            <author fullname="M. Tomlinson" initials="M." surname="Tomlinson"/>
            <author fullname="G. Bartlett" initials="G." surname="Bartlett"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document describes how to extend the Internet Key Exchange Protocol Version 2 (IKEv2) to allow multiple key exchanges to take place while computing a shared secret during a Security Association (SA) setup.</t>
              <t>This document utilizes the IKE_INTERMEDIATE exchange, where multiple key exchanges are performed when an IKE SA is being established. It also introduces a new IKEv2 exchange, IKE_FOLLOWUP_KE, which is used for the same purpose when the IKE SA is being rekeyed or is creating additional Child SAs.</t>
              <t>This document updates RFC 7296 by renaming a Transform Type 4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and renaming a field in the Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange Method". It also renames an IANA registry for this Transform Type from "Transform Type 4 - Diffie- Hellman Group Transform IDs" to "Transform Type 4 - Key Exchange Method Transform IDs". These changes generalize key exchange algorithms that can be used in IKEv2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9370"/>
          <seriesInfo name="DOI" value="10.17487/RFC9370"/>
        </reference>
        <reference anchor="I-D.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="26" month="June" year="2023"/>
            <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-01"/>
        </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:
H4sIAAAAAAAAA929a3Mb2dUu9h2/osOpZMgYAC+6y1eKokaKRhqOKHn8ZjJn
3ACaYJuNbri7QQrWTMofU3W+JZ9SdVJ1fsv5Kf4lWc+67EujQUm2X583Ydka
EujL3mvvve7rWaPRaNDmbZE9TnbOqqYdfbtKy3a1SE7q9bKt5nW6vFwnF1Wd
nJbzvMyyutkZpJNJnV3jjm9Put9N0zabV/X6cZKXF9VgMKumZbqgx8/q9KId
5Vl7MVr+eZUv6d/pKLMbB81qssibJq/Kdr2ky1+cvn02KFeLSVY/HszooY8H
06pssrJZNY+Ttl5lAxrBnUFaZymN5Dybruq8Xe8Mbqr6al5XqyWP792Ls53B
VbamT2ePB8kooSEPksHgOitX9MgksUt5TDv0gbx+5zt6TF7Ok6/wPT5fpHnB
101/h0mMq3qOj9N6ekkfX7btsnm8v4+r8FF+nY3tsn18sD+pq5sm26f793Hf
YNC0aTn7MS2qkt63zprBMn+cfN9W02HSVHVbZxcN/bZe6C9tnU/bYTKtFous
bOkTouwiXS5pkD8MBumqvaxqzJCenSQXq6IQsh8TVeo0eZKWWf2nLONvaUxp
mf8lbYnaj5PX1VWe8udTIuDj5NWqzKeX8kG1Klus5VdZvUjLNX+YKSVSfvJ4
ok/+XYnnjGl8O5ujeJvXq0VaZM1NWidvstls/QkDoTHPiTy1DLrO5nzVy7Qu
0za9SuMRvihnerON76oqZ21e/26Ov7eM62m+oEnkVZOcTy+rvMzTMr3Km22D
S4LRHbeXtBk7ZKqzbJpFo5jZG8ZN+Aah1miSFcWoSCfNVrotqpYO4POqKLJJ
ll31jOxpPs9PsroNxnaWt20zWdXzzjK+Oz+OBtfmi/GlPfp3M3rQlB4kYxkM
yooWvaWd/HgwwGH2fyU4FtdZPWoy3v/80MT4yMk4+V/T4iodJn/763+RC//2
1/+7Sf6srEVuwuFKC2IVeXu5SPImqZY0nLQY/u2v/09ydrlu8mla0F65zrOb
5HiYXFfFOLl/MEyWy3Fy9ODu/dHRg3uHw+Tw0aNH4x0dQVrPs/axLFPCXCO5
SIsGS/L2kjhFO3qTLelwdUZsTE+uAdWzgvhSIhcnRwdHB5032HmfF9UkLeq8
IWbR0ONWbcZHfrmaFDQBrFCzrxMftTKEVh8/qvnxIzx+v2/I356Mnr4+3zLW
k2qxXLVMxXKW0GZM6Noto7y5uRnTaMqSx1ZN22p0cOeQuO94ObvYeDPI9/rF
+dvOi7eLh3NwsrSe6ZbcMohpU0/HZd6043l1vb+sqz9l07bZX+KxRqFp8Njt
34ya+IV9tDspqtXsgnhx1pkGZsbbcVlkaUMPT8L3JM2qXtJyZlsmMSmq+Xjq
no2jso85jaLB2kM2VzUBcZ+lBcmyzriepU2bPKtIimV1UqRtS2dxNEmbbAae
v0ynbdLkc2J9qzqjw0KHKnn99s27LeO84FeMcMcYZ7d3fz3NCzp8+WrRPcCe
1vk0OV/lbcZi/riYZ5M6pc++lvE1ye7Jm387f3v89fkeyVb3vC2DWv4Zy0iL
VzS8EWd2/X5ezrL34+ayXRR9Az0/e/7i9Un3JOinv9jytoZGX07lTfL8bY9/
c37cefRx8iojgTrjaX8zaVNi3HTSwGpp9Mm5XwgcvjM+7KOX2VrPRUOTzBbN
tpHNinE6XQgJqnyfzuD+4cH48PDuvf079x7duXsw5v8c9fKxk/ODw85on2ZY
Zx7KcZkWxDppg1wkZzVtGuaiwQBPSz5JdGog8rIFTYF1pyxJ5yl4WHI8S5fg
88nJZUX6VnKSLy9JKmTv6au2TadXW2aV0ZYv23GeTmue2tHBwSHN62HvLJ48
f3nwqLueqwn90uY0pLwUjpZdEOF5sDSfF6+fjk5Ojh8n35Hk5dk+r26S88tq
VcxosCnJsXKejZ5mboYTekTe0BfVTTb77aeP+9H+3cP+cX/16s3DhxubZab7
wh3QpGHakqiLSJsaaadM2hFRv0nn9D3TtemKMXdusoqY1XjaQJEhdWKczVb7
TV5c59X+eVYQG81m/+PRwfk0J80wv8in9MdZuiS1el93LL51e3b/+Ef9+Ef3
4Y+yGX6UvfDjsQz4R9sLP8peGL2SAf8oGwHSo5dKpGQfn73oyg8yFkYJfZ6U
VZs1nyQlTs7fnOwvMlLt9s9MYIRyaBTKITpM0xUrx/vZ+3RBJBtd5KRz7qfL
fMTv7BV3wgAePn/T5S/YXW1FF5G8rEkJuPswmeQtLqb9SVYO0Rcb9WFCO5B+
XTVgEUcHySIvCuy+ssqbNWk9dNO22ab1+/xabIRJs3/46ODe+ODRg7uPtgzy
8OD8pDPIJ6RSsKGCYQWHe0QHJHm3xCOSSk4Tiek2G1UXpIdko+O6vUVZIGOI
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

-->

</rfc>
