<?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.19 (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-05" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="PQC for Engineers">Post-Quantum Cryptography for Engineers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-05"/>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Dimitrios Schoinianakis">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Athens</city>
          <country>Greece</country>
        </postal>
        <email>dimitrios.schoinianakis@nokia-bell-labs.com</email>
      </address>
    </author>
    <author fullname="Timothy Hollebeek">
      <organization>DigiCert</organization>
      <address>
        <postal>
          <city>Pittsburgh</city>
          <country>USA</country>
        </postal>
        <email>tim.hollebeek@digicert.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <date year="2024" month="September" day="12"/>
    <area>Security</area>
    <workgroup>PQUIP</workgroup>
    <keyword>PQC</keyword>
    <abstract>
      <?line 211?>

<t>The presence of a Cryptographically Relevant Quantum Computer (CRQC) would render state-of-the-art, traditional public-key algorithms deployed today obsolete, since the assumptions about the intractability of the mathematical problems for these algorithms that offer confident levels of security today no longer apply in the presence of a CRQC. This means there is a requirement to update protocols and infrastructure to use post-quantum algorithms, which are public-key algorithms designed to be secure against CRQCs as well as classical computers.  These new public-key algorithms behave similarly to previous public key algorithms, however the intractable mathematical problems have been carefully chosen so they are hard for CRQCs as well as classical computers. This document explains why engineers need to be aware of and understand post-quantum cryptography. It emphasizes the potential impact of CRQCs on current cryptographic systems and the need to transition to post-quantum algorithms to ensure long-term security. The most important thing to understand is that this transition is not like previous transitions from DES to AES or from SHA-1 to SHA-2. While drop-in replacement may be possible in some cases, others will require protocol re-design to accommodate significant differences in behavior between the new post-quantum algorithms and the classical algorithms that they are replacing.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-pquip-pqc-engineers/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        pquip Working Group mailing list (<eref target="mailto:pqc@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/pqc/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/pqc/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 215?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Quantum computing is no longer perceived as a conjecture of computational sciences and theoretical physics. Considerable research efforts and enormous corporate and government funding for the development of practical quantum computing systems are being invested currently. At the time of writing the document, Cryptographically Relevant Quantum Computers (CRQCs) that can break widely used public-key cryptographic algorithms are not yet available. However, it is worth noting that there is ongoing research and development in the field of quantum computing, with the goal of building more powerful and scalable quantum computers. One common myth is that quantum computers are faster than conventional CPUs and GPUs in all areas. This is not the case; much as GPUs outperform general-purpose CPUs only on specific types of problems, so too will quantum computers have a niche set of problems on which they excel; unfortunately for cryptographers, integer factorization and discrete logarithms, the mathematical problems underpinning all of modern cryptography, happen to fall within the niche that we expect quantum computers to excel at. As such, as quantum technology advances, there is the potential for future quantum computers to have a significant impact on current cryptographic systems. Predicting the emergence of CRQC is a challenging task, and there is ongoing uncertainty regarding when they will become practically feasible.</t>
      <t>Extensive research has produced several "post-quantum cryptographic (PQC) algorithms" (sometimes referred to as "quantum-safe" algorithms) that offer the potential to ensure cryptography's survival in the quantum computing era. However, transitioning to a post-quantum infrastructure is not a straightforward task, and there are numerous challenges to overcome. It requires a combination of engineering efforts, proactive assessment and evaluation of available technologies, and a careful approach to product development. This document aims to provide general guidance to engineers who utilize public-key cryptography in their software. It covers topics such as selecting appropriate PQC algorithms, understanding the differences between PQC Key Encapsulation Mechanisms (KEMs) and traditional Diffie-Hellman and RSA style key exchange, and provides insights into expected key sizes and processing time differences between PQC algorithms and traditional ones. Additionally, it discusses the potential threat to symmetric cryptography from 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, which are far less vulnerable to quantum computers. This document does not cover such topics as when traditional algorithms might become vulnerable (for that, see documents such as <xref target="QC-DNS"/> and others).  It also does not cover unrelated technologies like Quantum Key Distribution or Quantum Key Generation, which use quantum hardware to exploit quantum effects to protect communications and generate keys, respectively.  Post-quantum cryptography is based on conventional (i.e., non-quantum) math and software and can be run on any general purpose computer.</t>
      <t>Please note: This document does not go into the deep mathematics or technical specification of the PQC algorithms, but rather provides an overview to engineers on the current threat landscape and the relevant algorithms designed to help prevent those threats.  Also, the cryptographic and algorithmic guidance given in this document should be taken as non-authoritative if it conflicts with emerging and evolving guidance from the IRTF's Cryptographic Forum Research Group (CFRG).</t>
      <t>While there is ongoing discussion about whether to use the term 'Post-Quantum' or 'Quantum Ready/Resistant' to describe algorithms that resist CRQCs, a consensus has not yet been reached. It's important to clarify that 'Post-Quantum' refers to algorithms designed to withstand attacks by CRQCs and classical computers alike. These algorithms are based on mathematically hard cryptographic problems that neither CRQCs nor classical computers are expected to break. The term "quantum resistant" or "quantum ready" are used for algorithms which are synonymous with Post-Quantum termed algorithms but a final decision has not yet been reached as to the ambiguity of these terms.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="contributing-to-this-document">
      <name>Contributing to This Document</name>
      <t>The guide was inspired by a thread in September 2022 on the <eref target="mailto:pqc@ietf.org">pqc@ietf.org</eref> mailing list.
The document is being collaborated on through a <eref target="https://github.com/tireddy2/pqc-for-engineers">GitHub repository</eref>.</t>
      <t>The editors actively encourage contributions to this document. Please consider writing a section on a topic that you think is missing. Short of that, writing a paragraph or two on an issue you found when writing code that uses PQC would make this document more useful to other coders. Opening issues that suggest new material is fine too, but relying on others to write the first draft of such material is much less likely to happen than if you take a stab at it yourself.</t>
    </section>
    <section anchor="traditional-cryptographic-primitives-that-could-be-replaced-by-pqc">
      <name>Traditional Cryptographic Primitives that Could Be Replaced by PQC</name>
      <t>Any asymmetric cryptographic algorithm based on integer factorization, finite field discrete logarithms or elliptic curve discrete logarithms will be vulnerable to attacks using Shor's Algorithm on a sufficiently large general-purpose quantum computer, known as a CRQC. This document focuses on the principal functions of asymmetric cryptography:</t>
      <ul spacing="normal">
        <li>
          <t>Key Agreement and Key Transport:  Key Agreement schemes, typically referred to as Diffie-Hellman (DH) or Elliptic Curve Diffie-Hellman (ECDH), as well as Key Transport, typically using RSA Encryption, are used to establish a shared cryptographic key for secure communication. They are one of the mechanisms that can be replaced by PQC, as this is based on public key cryptography and is therefore vulnerable to the Shor's algorithm. A CRQC can employ Shor's algorithm to efficiently find the prime factors of a large public key (in case of RSA), which in turn can be exploited to derive the private key. In the case of Diffie-Hellman, a CRQC has the potential to calculate the exponent or discrete logarithm of the (short or long-term) Diffie-Hellman public key. This, in turn, would reveal the precise secret required to derive the session key.</t>
        </li>
        <li>
          <t>Digital Signatures: Digital Signature schemes are used to authenticate the identity of a sender, detect unauthorized modifications to data and underpin trust in a system. Similar to Key Agreement, signatures also depend on a public-private key pair based on the same mathematics as for Key Agreement and Key Transport, and hence a break in public key cryptography will also affect traditional digital signatures, hence the importance of developing post-quantum digital signatures.</t>
        </li>
      </ul>
    </section>
    <section anchor="invariants-of-post-quantum-cryptography">
      <name>Invariants of Post-Quantum Cryptography</name>
      <t>In the context of PQC, symmetric-key cryptographic algorithms are generally not directly impacted by quantum computing advancements. Symmetric-key cryptography, which includes keyed primitives such as block ciphers (e.g., AES) and message authentication mechanisms (e.g., HMAC-SHA2), rely on secret keys shared between the sender and receiver. Symmetric cryptography also includes hash functions (e.g., SHA-256) that are used for secure message digesting without any shared key material. HMAC is a specific construction that utilizes a cryptographic hash function (such as SHA-2) and a secret key shared between the sender and receiver to produce a message authentication code.</t>
      <t>CRQCs, in theory, do not offer substantial advantages in breaking symmetric-key algorithms compared to classical computers, meaning that current symmetric algorithms can continue to be used with potentially straightforward increases to key size to stay ahead of quantum-boosted brute-forcing attacks (see <xref target="symmetric"/> for more details).</t>
    </section>
    <section anchor="nist-pqc-algorithms">
      <name>NIST PQC Algorithms</name>
      <t>In 2016, the National Institute of Standards and Technology (NIST) started a process to solicit, evaluate, and standardize one or more quantum-resistant public-key cryptographic algorithms, as seen <eref target="https://csrc.nist.gov/projects/post-quantum-cryptography">here</eref>. The first set of algorithms for standardization (https://csrc.nist.gov/publications/detail/nistir/8413/final) were selected in July 2022.</t>
      <t>NIST announced as well that they will be <eref target="https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/round-4/guidelines-for-submitting-tweaks-fourth-round.pdf">opening a fourth round</eref> to standardize an alternative KEM, and a <eref target="https://csrc.nist.gov/csrc/media/Projects/pqc-dig-sig/documents/call-for-proposals-dig-sig-sept-2022.pdf">call</eref> for new candidates for a post-quantum signature algorithm.</t>
      <t>These algorithms are not a drop-in replacement for classical asymmetric cryptographic algorithms. For instance, RSA <xref target="RSA"/> and ECC <xref target="RFC6090"/> can be used as both a key encapsulation method (KEM) and as a signature scheme, whereas there is currently no post-quantum algorithm that can perform both functions. When upgrading protocols, it is important to replace the existing use of classical algorithms with either a PQC KEM or a PQC signature method, depending on how the classical algorithm was previously being used. Additionally, KEMs, as described in Section 10, present a different API than either key agreement or key transport primitives. As a result, they may require protocol-level or application-level changes in order to be incorporated.</t>
      <section anchor="nist-candidates-selected-for-standardization">
        <name>NIST candidates selected for standardization</name>
        <section anchor="pqc-key-encapsulation-mechanisms-kems">
          <name>PQC Key Encapsulation Mechanisms (KEMs)</name>
          <ul spacing="normal">
            <li>
              <t><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.ipd.pdf">ML-KEM</eref>: Module-Lattice-based Key-Encapsulation Mechanism Standard (FIPS-203).</t>
            </li>
          </ul>
        </section>
        <section anchor="pqc-signatures">
          <name>PQC Signatures</name>
          <ul spacing="normal">
            <li>
              <t><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.ipd.pdf">ML-DSA</eref>: Module-Lattice-Based Digital Signature Standard (FIPS-204).</t>
            </li>
            <li>
              <t><eref target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.205.ipd.pdf">SLH-DSA</eref>: Stateless Hash-Based Digital Signature (FIPS-205).
Standard (FIPS-205).</t>
            </li>
            <li>
              <t><eref target="https://falcon-sign.info/">FN-DSA</eref>: FN-DSA is a lattice signature scheme (<xref target="lattice-based"/> and <xref target="sig-scheme"/>).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="candidates-advancing-to-the-fourth-round-for-standardization-at-nist">
        <name>Candidates advancing to the fourth-round for standardization at NIST</name>
        <t>The fourth-round of the NIST process focuses only on KEMs. The goal of that round is to select an alternative algorithm that is based on different hard problem than ML-KEM.
The candidates still advancing for standardization are:</t>
        <ul spacing="normal">
          <li>
            <t><eref target="https://classic.mceliece.org/">Classic McEliece</eref>: Based on the hardness of syndrome decoding of Goppa codes. Goppa codes are a class of error-correcting codes that can correct a certain number of errors in a transmitted message. The decoding problem involves recovering the original message from the received noisy codeword.</t>
          </li>
          <li>
            <t><eref target="https://bikesuite.org/">BIKE</eref>: Based on the the hardness of syndrome decoding of QC-MDPC codes. Quasi-Cyclic Moderate Density Parity Check (QC-MDPC) code are a class of error correcting codes that leverages bit flipping technique to efficiently correct errors.</t>
          </li>
          <li>
            <t><eref target="http://pqc-hqc.org/">HQC</eref> : Based on the hardness of syndrome decoding of Quasi-cyclic concatenated Reed Muller Reed Solomon (RMRS) codes in the Hamming metric. Reed Muller (RM) codes are a class of block error correcting codes used especially in wireless and deep space communications. Reed Solomon (RS) are a class of block error correcting codes that are used to detect and correct multiple bit errors.</t>
          </li>
          <li>
            <t><eref target="https://sike.org/">SIKE</eref> (Broken): Supersingular Isogeny Key Encapsulation (SIKE) is a specific realization of the SIDH (Supersingular Isogeny Diffie-Hellman) protocol. Recently, a <eref target="https://eprint.iacr.org/2022/975.pdf">mathematical attack</eref> based on the "glue-and-split" theorem from 1997 from Ernst Kani was found against the underlying chosen starting curve and torsion information. In practical terms, this attack allows for the efficient recovery of the private key. NIST announced that SIKE was no longer under consideration, but the authors of SIKE had asked for it to remain in the list so that people are aware that it is broken.  While SIKE is broken, Isogenies in general remain an active area of cryptographic research due to their very attractive bandwidth usage, and we may yet see more cryptographic primitives in the future from this research area.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="threat-of-crqcs-on-cryptography">
      <name>Threat of CRQCs on Cryptography</name>
      <t>Post-quantum cryptography or quantum-safe cryptography refers to cryptographic algorithms that are secure against cryptographic attacks from both CRQCs and classic computers.</t>
      <t>When considering the security risks associated with the ability of a quantum computer to attack traditional cryptography, it is important to distinguish between the impact on symmetric algorithms and public-key ones. Dr. Peter Shor and Dr. Lov Grover developed two algorithms that changed the way the world thinks of security under the presence of a CRQC.</t>
      <t>It is also worth some discussion of the term "quantum adversary". Quantum computers are, by their nature, hybrids of classical and quantum computational units. For example, Shor's algorithm consists of a combination of quantum and classical computational steps. Thus, the term "quantum adversary" should be thought of as 'quantum-enhanced adversary,' meaning they have access to both classical and quantum computational techniques.</t>
      <t>Despite the fact that large-scale quantum computers do not yet exist to experiment on, the theoretical properties of quantum computation are very well understood. This allows us to reason today about the upper limits of quantum-enhanced computation, and indeed to design cryptographic algorithms that are resistant to any conceivable for of quantum cryptanalysis.</t>
      <section anchor="symmetric">
        <name>Symmetric cryptography</name>
        <t>For unstructured data such as symmetric encrypted data or cryptographic hashes, although CRQCs can search for specific solutions across all possible input combinations (e.g., Grover's Algorithm), no quantum algorithm is known to break the underlying security properties of these classes of algorithms.</t>
        <t>Grover's algorithm is a quantum search algorithm that provides a theoretical quadratic speedup for searching an unstructured database, compared to classical search 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 counter the quadratic speedup and maintain current security level. This is because Grover’s algorithm reduces the amount of operations to break 128-bit symmetric cryptography to 2^{64} quantum operations, which might sound computationally feasible. However, 2^{64} operations performed in parallel are feasible for modern classical computers, but 2^{64} quantum operations performed serially in a quantum computer are not. Grover's algorithm is highly non-parallelizable and even if one deploys 2^c computational units in parallel to brute-force a key using Grover's algorithm, it will complete in time proportional to 2^{(128−c)/2}, or, put simply, using 256 quantum computers will only reduce runtime by a factor of 16, 1024 quantum computers will only reduce runtime by a factor of 32 and so forth ​(see <xref target="NIST"/> and <xref target="Cloudflare"/>​).  Therefore, while Grover's attack suggests that we should double the sizes of symmetric keys, the current consensus among experts is that the current key sizes remain secure in practice.</t>
        <t>How can someone be sure that an improved algorithm won’t outperform Grover's algorithm at some point in time? Christof Zalka has shown that Grover's algorithm (and in particular its non-parallel nature) achieves the best possible complexity for unstructured search <xref target="Grover-search"/>.</t>
        <t>Finally, in their evaluation criteria for PQC, NIST is assessing the security levels of proposed post-quantum algorithms by comparing them against the equivalent classical and quantum security of AES-128, 192, and 256. This indicates that NIST is confident in the stable security properties of AES, even in the presence of both classical and quantum attacks. As a result, 128-bit algorithms can be considered quantum-safe for the foreseeable future.</t>
      </section>
      <section anchor="asymmetric-cryptography">
        <name>Asymmetric cryptography</name>
        <t>“Shor’s algorithm” on the other side, efficiently solves the integer factorization problem (and the related discrete logarithm problem), which offer the foundations of the vast majority of public-key cryptography that the world uses today. This implies that, if a CRQC is developed, today’s public-key cryptography algorithms (e.g., RSA, Diffie-Hellman and Elliptic Curve Cryptography, as well as less commonly-used variants such as ElGamal and Schnorr signatures) and protocols would need to be replaced by algorithms and protocols that can offer cryptanalytic resistance against CRQCs. Note that Shor’s algorithm cannot run solely on a classic computer, it needs a CRQC.</t>
        <t>For example, to provide some context, one would need 20 million noisy qubits to break RSA-2048 in 8 hours <xref target="RSAShor"/><xref target="RSA8HRS"/> or 4099 stable (or logical) qubits to break it <xref target="RSA10SC"/>.</t>
        <t>For structured data such as public keys and signatures, instead, CRQCs can fully solve the underlying hard problems used in 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 anchor="quantum-side-channel-attacks">
        <name>Quantum side-channel attacks</name>
        <t>The field of cryptographic side-channel attacks potentially stands to gain a boost in attacker power once cryptanalytic techniques can be enhanced with quantum computation techniques. While a full discussion of quantum side-channel techniques is beyond the scope of this document, implementers of cryptographic hardware should be aware that current best-practices for side-channel resistance may not be sufficient against quantum adversaries.</t>
      </section>
    </section>
    <section anchor="timeline">
      <name>Timeline for transition</name>
      <t>The timeline, and driving motivation for transition differs slightly between data confidentiality (e.g., encryption) and data authentication (e.g., signature) use-cases.</t>
      <t>For data confidentiality, we are concerned with the so-called "Harvest Now, Decrypt Later" attack where a malicious actor with adequate resources can launch an attack to store sensitive encrypted data today that can be decrypted once a CRQC is available. This implies that, every day, sensitive encrypted data is susceptible to the attack by not implementing quantum-safe strategies, as it corresponds to data being deciphered in the future.</t>
      <t>For authentication, it is often the case that signatures have a very short lifetime between signing and verifying -- such as during a TLS handshake -- but some authentication use-cases do require long lifetimes, such as signing firmware or software that will be active for decades, signing legal documents, or signing certificates that will be embedded into hardware devices such as smartcards. And even for short-lived signatures use cases, the infrastructure often relies on long-lived root keys which can be difficult to update or replace on in-field devices.</t>
      <figure anchor="Mosca">
        <name>Mosca model</name>
        <artwork><![CDATA[
+------------------------+----------------------------+
|                        |                            |
|           y            |             x              |
+------------------------+----------+-----------------+
|                                   | <--------------->
|               z                   |   Security gap
+-----------------------------------+

]]></artwork>
      </figure>
      <t>These challenges are illustrated nicely by the so-called Mosca model discussed in ​<xref target="Threat-Report"/>. In the <xref target="Mosca"/>, "x" denotes the time that 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>
      <t>Organizations should also consider carefully and honestly what their migration timeline "y" actually is. If you think only of the time between receiving a patch from your technology vendor, and rolling that patch out, then "y" might seem as short as a few weeks. However, this represents the minority of migration cases; more often a PQC migration will involve at least some amount of hardware replacement. For example performance-sensitive applications will need CPUs with PQC hardware acceleration. Security-sensitive applications will need PQC TPMs, TEEs, Secure Enclaves, and other cryptographic co-processors. Smartcard applications will require replacement of the cards and also of the readers which can come in many form-factors: tap-for-entry door and turnstile readers, PIN pad machines, laptops with built-in smartcard readers, and many others. Included in "y" is not only the deployment time, but also preparation time: integration, testing, auditing and re-certification of cryptographic environments. Consider also upstream effects that contribute to "y", including lead-times for your vendors to produce PQC-ready products, which may itself include auditing and certification delays, time for regulating bodies to adopt PQC policies, time for auditors to become familiar with the new requirements, etc. If you measure the full migration time "y" from when your vendors begin implementing PQC functionality, to when you switch off your last non-PQC-capable device, then "y" can be quite long; likely measured in years or decades for most moderately-sized organizations.</t>
    </section>
    <section anchor="post-quantum-cryptography-categories">
      <name>Post-quantum cryptography categories</name>
      <t>The current set of problems used in post-quantum cryptography can be currently grouped into three different categories: lattice-based, hash-based and code-based.</t>
      <section anchor="lattice-based">
        <name>Lattice-Based Public-Key Cryptography</name>
        <t>Lattice-based public-key cryptography leverages the simple construction of lattices (i.e., a regular collection of points in a Euclidean space that are evenly spaced) to create 'trapdoor' problems. These problems are efficient to compute if you possess the secret information but challenging to compute otherwise. Examples of such problems include the Shortest Vector, Closest Vector, Shortest Integer Solution, Learning with Errors, Module Learning with Errors, and Learning with Rounding problems. All of these problems feature strong proofs for worst-to-average case reduction, effectively relating the hardness of the average case to the worst case.</t>
        <t>The possibility to implement public-key schemes on lattices is tied to the characteristics of the vector basis used for the lattice. In particular, solving any of the mentioned problems can be easy when using "reduced" or "good" bases (i.e., as short as possible and as orthogonal as possible), while it becomes computationally infeasible when using "bad" bases (i.e., long vectors not orthogonal). Although the problem might seem trivial, it is computationally hard when considering many dimensions, or when the underlying field is not simple numbers, but high-order polynomials. Therefore, a typical approach is to use "bad" basis for public keys and "good" basis for private keys. The public keys ("bad" basis) let you easily verify signatures by checking, for example, that a vector is the closest or smallest, but do not let you solve the problem (i.e., finding the vector) that would yield the private key. Conversely, private keys (i.e., the "good" basis) can be used for generating the signatures (e.g., finding the specific vector).</t>
        <t>Lattice-based schemes usually have good performances and average size public keys and signatures (average within the PQC primitives at least, they are still several orders of magnitude larger than RSA or ECC signatures), making them the best available candidates for general-purpose use such as replacing the use of RSA in PKIX certificates.</t>
        <t>Examples of such class of algorithms include ML-KEM, FN-DSA and ML-DSA.</t>
        <t>It is noteworthy that lattice-based encryption schemes require a rounding step during decryption which has a non-zero probability of "rounding the wrong way" and leading to a decryption failure, meaning that valid encryptions are decrypted incorrectly; as such, an attacker could significantly reduce the security of lattice-based schemes that have a relatively high failure rate. However, for most of the NIST Post-Quantum Proposals, the number of required oracle queries to force a decryption failure is above practical limits, as has been shown in <xref target="LattFail1"/>. More recent works have improved upon the results in <xref target="LattFail1"/>, showing that the cost of searching for additional failing ciphertexts after one or more have already been found, can be sped up dramatically <xref target="LattFail2"/>. Nevertheless, at this point in time (July 2023), the PQC candidates by NIST are considered secure under these attacks and we suggest constant monitoring as cryptanalysis research is ongoing.</t>
      </section>
      <section anchor="hash-based">
        <name>Hash-Based Public-Key Cryptography</name>
        <t>Hash based PKC has been around since the 1970s, when it was developed by Lamport and Merkle. It is used to create digital signature algorithms and its security is mathematically based on the security of the selected cryptographic hash function. Many variants of hash-based signatures (HBS) have been developed since the 70s including the recent XMSS <xref target="RFC8391"/>, HSS/LMS <xref target="RFC8554"/> or BPQS schemes. Unlike digital signature techniques, most hash-based signature schemes are stateful, which means that signing necessitates the update and careful tracking of the secret key. Producing multiple signatures using the same secret key state results in loss of security and ultimately signature forgery attacks against that key.</t>
        <t>Stateful hash-based signatures with long service lifetimes require additional operational complexity compared with other signature types. For example, consider a 20-year root key; there is an expectation that 20 years is longer than the expected lifetime of the hardware that key is stored on, and therefore the key will need to be migrated to new hardware at some point. Disaster-recovery scenarios where the primary node fail without warning can be similarly tricky. This requires careful operational and compliance consideration to ensure that no private key state can be re-used across the migration or disaster recovery event. One approach for avoiding these issues is to only use stateful HBS for short-term use cases that do not require horizontal scaling, for example signing a batch of firmware images and then retiring the signing key.</t>
        <t>The SLH-DSA algorithm 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, thus avoiding all the complexities with state management.</t>
        <t>SLH-DSA is an advancement on SPHINCS which reduces the signature sizes in SPHINCS and makes it more compact. SLH-DSA was recently standardized by NIST.</t>
      </section>
      <section anchor="code-based">
        <name>Code-Based Public-Key Cryptography</name>
        <t>This area of cryptography started in the 1970s and 80s based on the seminal work of McEliece and Niederreiter which focuses on the study of cryptosystems based on error-correcting codes. Some popular error correcting codes include the Goppa codes (used in McEliece cryptosystems), encoding and decoding syndrome codes used in Hamming Quasi-Cyclic (HQC) or Quasi-cyclic Moderate density parity check (QC-MDPC) codes.</t>
        <t>Examples include all the NIST Round 4 (unbroken) finalists: Classic McEliece, HQC, BIKE.</t>
      </section>
    </section>
    <section anchor="KEMs">
      <name>KEMs</name>
      <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 with a symmetric algorithm, typically a block cipher, 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 a DEK. These techniques are often referred to as "hybrid public key encryption (HPKE)" <xref target="RFC9180"/> mechanism.</t>
        <t>The term "encapsulation" is chosen intentionally to indicate that KEM algorithms behave differently at the API level than the Key Agreement or Key Encipherment / Key Transport mechanisms that we are accustomed to using today. Key Agreement schemes imply that both parties contribute a public / private keypair to the exchange, while Key Encipherment / Key Transport schemes imply that the symmetric key material is chosen by one party and "encrypted" or "wrapped" for the other party. KEMs, on the other hand, behave according to the following API:</t>
        <t>KEM relies on the following primitives <xref target="PQCAPI"/>:</t>
        <ul spacing="normal">
          <li>
            <t>def kemKeyGen() -&gt; (pk, sk)</t>
          </li>
          <li>
            <t>def kemEncaps(pk) -&gt; (ss, ct)</t>
          </li>
          <li>
            <t>def kemDecaps(ct, sk) -&gt; ss</t>
          </li>
        </ul>
        <t>where pk is public key, sk is secret key, ct is the ciphertext representing an encapsulated key, and ss is shared secret.  The following figure illustrates a sample flow of KEM based key exchange:</t>
        <figure anchor="tab-kem-ke">
          <name>KEM based Key Exchange</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="536" viewBox="0 0 536 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,272 L 8,304" fill="none" stroke="black"/>
                <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 208,80 L 208,112" fill="none" stroke="black"/>
                <path d="M 208,272 L 208,304" fill="none" stroke="black"/>
                <path d="M 224,72 L 224,320" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                <path d="M 320,72 L 320,320" fill="none" stroke="black"/>
                <path d="M 336,176 L 336,208" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 528,176 L 528,208" fill="none" stroke="black"/>
                <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                <path d="M 24,80 L 208,80" fill="none" stroke="black"/>
                <path d="M 24,112 L 208,112" fill="none" stroke="black"/>
                <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                <path d="M 336,176 L 528,176" fill="none" stroke="black"/>
                <path d="M 336,208 L 528,208" fill="none" stroke="black"/>
                <path d="M 232,256 L 312,256" fill="none" stroke="black"/>
                <path d="M 8,272 L 208,272" fill="none" stroke="black"/>
                <path d="M 8,304 L 208,304" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                <polygon class="arrowhead" points="240,256 228,250.4 228,261.6" fill="black" transform="rotate(180,232,256)"/>
                <g class="text">
                  <text x="220" y="52">Client</text>
                  <text x="316" y="52">Server</text>
                  <text x="48" y="100">pk,</text>
                  <text x="76" y="100">sk</text>
                  <text x="96" y="100">=</text>
                  <text x="152" y="100">kemKeyGen()</text>
                  <text x="216" y="100">-</text>
                  <text x="244" y="148">pk</text>
                  <text x="328" y="196">-</text>
                  <text x="360" y="196">ss,</text>
                  <text x="388" y="196">ct</text>
                  <text x="408" y="196">=</text>
                  <text x="472" y="196">kemEncaps(pk)</text>
                  <text x="292" y="244">ct</text>
                  <text x="28" y="292">ss</text>
                  <text x="48" y="292">=</text>
                  <text x="112" y="292">kemDecaps(ct,</text>
                  <text x="184" y="292">sk)</text>
                  <text x="216" y="292">-</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | pk, sk = kemKeyGen() |-|           |
  +----------------------+ |           |
                           |           |
                           | pk        |
                           |---------->|
                           |           | +-----------------------+
                           |           |-| ss, ct = kemEncaps(pk)|
                           |           | +-----------------------+
                           |           |
                           |       ct  |
                           |<----------|
+------------------------+ |           |
| ss = kemDecaps(ct, sk) |-|           |
+------------------------+ |           |
                           |           |
]]></artwork>
          </artset>
        </figure>
        <section anchor="authenticated-key-exchange-ake">
          <name>Authenticated Key Exchange (AKE)</name>
          <t>Authenticated Key Exchange with KEMs where both parties contribute a KEM public key to the overall session key is interactive as described in <xref target="I-D.draft-ietf-lake-edhoc-22"/>. However, single-sided KEM, such as when one peer has a KEM key in a certificate and the other peer wants to encrypt for it (as in S/MIME or OpenPGP email), can be achieved using non-interactive HPKE <xref target="RFC9180"/>. The following figure illustrates the Diffie-Hellman (DH) Key exchange:</t>
          <figure anchor="tab-dh-ake">
            <name>Diffie-Hellman based Authenticated Key Exchange</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="552" viewBox="0 0 552 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,320 L 8,368" fill="none" stroke="black"/>
                  <path d="M 24,80 L 24,128" fill="none" stroke="black"/>
                  <path d="M 136,336 L 136,344" fill="none" stroke="black"/>
                  <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                  <path d="M 216,80 L 216,128" fill="none" stroke="black"/>
                  <path d="M 216,320 L 216,368" fill="none" stroke="black"/>
                  <path d="M 232,72 L 232,464" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                  <path d="M 328,72 L 328,464" fill="none" stroke="black"/>
                  <path d="M 344,192 L 344,256" fill="none" stroke="black"/>
                  <path d="M 344,432 L 344,464" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                  <path d="M 544,192 L 544,256" fill="none" stroke="black"/>
                  <path d="M 544,432 L 544,464" fill="none" stroke="black"/>
                  <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                  <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                  <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                  <path d="M 24,80 L 216,80" fill="none" stroke="black"/>
                  <path d="M 24,128 L 216,128" fill="none" stroke="black"/>
                  <path d="M 240,176 L 320,176" fill="none" stroke="black"/>
                  <path d="M 344,192 L 544,192" fill="none" stroke="black"/>
                  <path d="M 344,256 L 544,256" fill="none" stroke="black"/>
                  <path d="M 240,304 L 320,304" fill="none" stroke="black"/>
                  <path d="M 8,320 L 216,320" fill="none" stroke="black"/>
                  <path d="M 8,368 L 216,368" fill="none" stroke="black"/>
                  <path d="M 240,416 L 320,416" fill="none" stroke="black"/>
                  <path d="M 344,432 L 544,432" fill="none" stroke="black"/>
                  <path d="M 344,464 L 544,464" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="328,416 316,410.4 316,421.6" fill="black" transform="rotate(0,320,416)"/>
                  <polygon class="arrowhead" points="328,176 316,170.4 316,181.6" fill="black" transform="rotate(0,320,176)"/>
                  <polygon class="arrowhead" points="248,304 236,298.4 236,309.6" fill="black" transform="rotate(180,240,304)"/>
                  <g class="text">
                    <text x="220" y="52">Client</text>
                    <text x="316" y="52">Server</text>
                    <text x="72" y="100">Long-term</text>
                    <text x="140" y="100">client</text>
                    <text x="188" y="100">key:</text>
                    <text x="116" y="116">sk1,</text>
                    <text x="152" y="116">pk1</text>
                    <text x="224" y="116">-</text>
                    <text x="256" y="164">pk1</text>
                    <text x="336" y="212">-</text>
                    <text x="392" y="212">Long-term</text>
                    <text x="460" y="212">server</text>
                    <text x="508" y="212">key:</text>
                    <text x="436" y="228">sk2,</text>
                    <text x="472" y="228">pk2</text>
                    <text x="364" y="244">ss</text>
                    <text x="384" y="244">=</text>
                    <text x="436" y="244">KeyEx(pk1,</text>
                    <text x="500" y="244">sk2)</text>
                    <text x="312" y="292">pk2</text>
                    <text x="28" y="340">ss</text>
                    <text x="48" y="340">=</text>
                    <text x="96" y="340">KeyEx(pk2</text>
                    <text x="164" y="340">sk1)</text>
                    <text x="92" y="356">encryptContent(ss)</text>
                    <text x="224" y="356">-</text>
                    <text x="280" y="388">encrypted</text>
                    <text x="288" y="404">content</text>
                    <text x="428" y="452">decryptContent(ss)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +-----------------------+ |           |
  | Long-term client key: | |           |
  |         sk1, pk1      |-|           |
  +-----------------------+ |           |
                            |           |
                            | pk1       |
                            |---------->|
                            |           | +------------------------+
                            |           |-| Long-term server key:  |
                            |           | |         sk2, pk2       |
                            |           | | ss = KeyEx(pk1, sk2)   |
                            |           | +------------------------+
                            |           |
                            |        pk2|
                            |<----------|
+-------------------------+ |           |
| ss = KeyEx(pk2, sk1)    | |           |
| encryptContent(ss)      |-|           |
+-------------------------+ |           |
                            | encrypted |
                            |   content |
                            |---------->|
                            |           | +------------------------+
                            |           | | decryptContent(ss)     |
                            |           | +------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>What's important to note about the sample flow above is that the shared secret <tt>ss</tt> is derived using key material from both the Client and the Server, which classifies it as an Authenticated Key Exchange (AKE). There is another property of a key exchange, called Non-Interactive Key Exchange (NIKE) which refers to whether the sender can compute the shared secret <tt>ss</tt> and encrypting content without requiring active interaction -- ie an exchange of network messages -- with the recipient. <xref target="tab-dh-ake"/> shows a Diffie-Hellman key exchange which is an AKE, since both parties are using long-term keys which can have established trust for example via certificates, but it is not a NIKE since the client needs to wait for the network interaction to receive the receiver's public key <tt>pk2</tt> before it can compute the shared secret <tt>ss</tt> and begin content encryption. However, a DH key exchange can be an AKE and a NIKE at the same time if the receiver's public key is known to the sender in advance, and many Internet Protocols rely on this property of DH-based key exchanges.</t>
          <figure anchor="tab-dh-ake-nike">
            <name>Diffie-Hellman based Authenticated Key Exchange and Non-Interactive Key Exchange simultaneously</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="536" viewBox="0 0 536 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,80 L 8,192" fill="none" stroke="black"/>
                  <path d="M 136,160 L 136,168" fill="none" stroke="black"/>
                  <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
                  <path d="M 200,80 L 200,192" fill="none" stroke="black"/>
                  <path d="M 216,72 L 216,368" fill="none" stroke="black"/>
                  <path d="M 248,32 L 248,64" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 312,72 L 312,368" fill="none" stroke="black"/>
                  <path d="M 328,288 L 328,368" fill="none" stroke="black"/>
                  <path d="M 344,32 L 344,64" fill="none" stroke="black"/>
                  <path d="M 456,336 L 456,344" fill="none" stroke="black"/>
                  <path d="M 528,288 L 528,368" fill="none" stroke="black"/>
                  <path d="M 168,32 L 248,32" fill="none" stroke="black"/>
                  <path d="M 264,32 L 344,32" fill="none" stroke="black"/>
                  <path d="M 168,64 L 248,64" fill="none" stroke="black"/>
                  <path d="M 264,64 L 344,64" fill="none" stroke="black"/>
                  <path d="M 8,80 L 200,80" fill="none" stroke="black"/>
                  <path d="M 8,192 L 200,192" fill="none" stroke="black"/>
                  <path d="M 224,272 L 304,272" fill="none" stroke="black"/>
                  <path d="M 328,288 L 528,288" fill="none" stroke="black"/>
                  <path d="M 328,368 L 528,368" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="312,272 300,266.4 300,277.6" fill="black" transform="rotate(0,304,272)"/>
                  <g class="text">
                    <text x="204" y="52">Client</text>
                    <text x="300" y="52">Server</text>
                    <text x="56" y="100">Long-term</text>
                    <text x="124" y="100">client</text>
                    <text x="172" y="100">key:</text>
                    <text x="100" y="116">sk1,</text>
                    <text x="136" y="116">pk1</text>
                    <text x="208" y="116">-</text>
                    <text x="56" y="132">Long-term</text>
                    <text x="124" y="132">server</text>
                    <text x="172" y="132">key:</text>
                    <text x="96" y="148">pk2</text>
                    <text x="28" y="164">ss</text>
                    <text x="48" y="164">=</text>
                    <text x="96" y="164">KeyEx(pk2</text>
                    <text x="164" y="164">sk1)</text>
                    <text x="92" y="180">encryptContent(ss)</text>
                    <text x="208" y="180">-</text>
                    <text x="244" y="228">pk1,</text>
                    <text x="264" y="244">encrypted</text>
                    <text x="272" y="260">content</text>
                    <text x="320" y="308">-</text>
                    <text x="376" y="308">Long-term</text>
                    <text x="444" y="308">server</text>
                    <text x="492" y="308">key:</text>
                    <text x="420" y="324">sk2,</text>
                    <text x="456" y="324">pk2</text>
                    <text x="348" y="340">ss</text>
                    <text x="368" y="340">=</text>
                    <text x="416" y="340">KeyEx(pk1</text>
                    <text x="484" y="340">sk2)</text>
                    <text x="412" y="356">decryptContent(ss)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +-----------------------+ |           |
  | Long-term client key: | |           |
  |         sk1, pk1      |-|           |
  | Long-term server key: | |           |
  |         pk2           | |           |
  | ss = KeyEx(pk2, sk1)  | |           |
  | encryptContent(ss)    |-|           |
  +-----------------------+ |           |
                            |           |
                            | pk1,      |
                            | encrypted |
                            |   content |
                            |---------->|
                            |           | +------------------------+
                            |           |-| Long-term server key:  |
                            |           | |         sk2, pk2       |
                            |           | | ss = KeyEx(pk1, sk2)   |
                            |           | | decryptContent(ss)     |
                            |           | +------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>The complication with KEMs is that a KEM <tt>Encaps()</tt> is non-deterministic; it involves randomness chosen by the sender of that KEM. Therefore, in order to perform an AKE, the client must wait for the server to generate the needed randomness and perform <tt>Encaps()</tt> against the client key, which necessarily requires a network round-trip. Therefore a KEM-based protocol can either be an AKE or a NIKE, but cannot be both at the same time. Consequently, certain Internet protocols will necessitate redesign to accommodate this distinction, either by introducing extra network round-trips or by making trade-offs in security properties.</t>
          <figure anchor="tab-kem-ake">
            <name>KEM based Authenticated Key Exchange</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
                  <path d="M 8,288 L 8,352" fill="none" stroke="black"/>
                  <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                  <path d="M 208,80 L 208,112" fill="none" stroke="black"/>
                  <path d="M 208,336 L 208,352" fill="none" stroke="black"/>
                  <path d="M 224,72 L 224,464" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                  <path d="M 320,72 L 320,464" fill="none" stroke="black"/>
                  <path d="M 336,176 L 336,224" fill="none" stroke="black"/>
                  <path d="M 336,416 L 336,464" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                  <path d="M 552,176 L 552,224" fill="none" stroke="black"/>
                  <path d="M 552,416 L 552,464" fill="none" stroke="black"/>
                  <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                  <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                  <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                  <path d="M 8,80 L 208,80" fill="none" stroke="black"/>
                  <path d="M 8,112 L 208,112" fill="none" stroke="black"/>
                  <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                  <path d="M 336,176 L 552,176" fill="none" stroke="black"/>
                  <path d="M 336,224 L 552,224" fill="none" stroke="black"/>
                  <path d="M 232,272 L 312,272" fill="none" stroke="black"/>
                  <path d="M 8,288 L 200,288" fill="none" stroke="black"/>
                  <path d="M 8,352 L 208,352" fill="none" stroke="black"/>
                  <path d="M 232,400 L 312,400" fill="none" stroke="black"/>
                  <path d="M 336,416 L 552,416" fill="none" stroke="black"/>
                  <path d="M 336,464 L 552,464" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="320,400 308,394.4 308,405.6" fill="black" transform="rotate(0,312,400)"/>
                  <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                  <polygon class="arrowhead" points="240,272 228,266.4 228,277.6" fill="black" transform="rotate(180,232,272)"/>
                  <g class="text">
                    <text x="220" y="52">Client</text>
                    <text x="316" y="52">Server</text>
                    <text x="36" y="100">pk1,</text>
                    <text x="72" y="100">sk1</text>
                    <text x="96" y="100">=</text>
                    <text x="152" y="100">kemKeyGen()</text>
                    <text x="216" y="100">-</text>
                    <text x="240" y="148">pk1</text>
                    <text x="328" y="196">-</text>
                    <text x="364" y="196">ss1,</text>
                    <text x="400" y="196">ct1</text>
                    <text x="424" y="196">=</text>
                    <text x="492" y="196">kemEncaps(pk1)</text>
                    <text x="364" y="212">pk2,</text>
                    <text x="400" y="212">sk2</text>
                    <text x="424" y="212">=</text>
                    <text x="480" y="212">kemKeyGen()</text>
                    <text x="288" y="260">ct1,pk2</text>
                    <text x="32" y="308">ss1</text>
                    <text x="56" y="308">=</text>
                    <text x="124" y="308">kemDecaps(ct1,</text>
                    <text x="204" y="308">sk1)</text>
                    <text x="236" y="308">-|</text>
                    <text x="36" y="324">ss2,</text>
                    <text x="72" y="324">ct2</text>
                    <text x="96" y="324">=</text>
                    <text x="164" y="324">kemEncaps(pk2)</text>
                    <text x="28" y="340">ss</text>
                    <text x="48" y="340">=</text>
                    <text x="112" y="340">Combiner(ss1,</text>
                    <text x="188" y="340">ss2)</text>
                    <text x="240" y="388">ct2</text>
                    <text x="328" y="436">-</text>
                    <text x="360" y="436">ss2</text>
                    <text x="384" y="436">=</text>
                    <text x="452" y="436">kemDecaps(ct2,</text>
                    <text x="532" y="436">sk2)</text>
                    <text x="356" y="452">ss</text>
                    <text x="376" y="452">=</text>
                    <text x="440" y="452">Combiner(ss1,</text>
                    <text x="516" y="452">ss2)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
+------------------------+ |           |
| pk1, sk1 = kemKeyGen() |-|           |
+------------------------+ |           |
                           |           |
                           |pk1        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss1, ct1 = kemEncaps(pk1)|
                           |           | | pk2, sk2 = kemKeyGen()   |
                           |           | +--------------------------+
                           |           |
                           |    ct1,pk2|
                           |<----------|
+------------------------+ |           |
| ss1 = kemDecaps(ct1, sk1)|-|         |
| ss2, ct2 = kemEncaps(pk2)|           |
| ss = Combiner(ss1, ss2)| |           |
+------------------------+ |           |
                           |           |
                           |ct2        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss2 = kemDecaps(ct2, sk2)|
                           |           | | ss = Combiner(ss1, ss2)  |
                           |           | +--------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>Here, <tt>Combiner(ss1, ss2)</tt>, often referred to as a KEM Combiner is a cryptographic construction that takes in two shared secrets and returns a single combined shared secret. The simplest combiner is concatenation <tt>ss1 || ss2</tt>, but combiners can vary in complexity depending on the cryptographic properties required. For example if the combination should preserve IND-CCA2 of either input even if the other is chosen maliciously, then a more complex construct is required. Another consideration for combiner design is so-called "binding properties" introduced in <xref target="KEEPINGUP"/> which may require the ciphertexts and recipient public keys to be included in the combiner.  KEM combiner security analysis becomes more complicated in hybrid settings where the two KEMs represent different algorithms, for example one is ML-KEM and the other is ECDHE. For a more thorough discussion of KEM combiners, see <xref target="KEEPINGUP"/>, <xref target="I-D.draft-ounsworth-cfrg-kem-combiners-04"/>, and <xref target="I-D.draft-connolly-cfrg-xwing-kem-02"/>.</t>
        </section>
      </section>
      <section anchor="security-properties">
        <name>Security properties</name>
        <section anchor="ind-cca2">
          <name>IND-CCA2</name>
          <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 and resistance against chosen-ciphertext attacks. An appropriate definition of IND-CCA2 security for KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>. ML-KEM <xref target="ML-KEM"/> and Classic McEliece provide IND-CCA2 security.</t>
          <t>Understanding IND-CCA2 security is essential for individuals involved in designing or implementing cryptographic systems and protocols in order to evaluate the strength of the algorithm, assess its suitability for specific use cases, and ensure that data confidentiality and security requirements are met. Understanding IND-CCA2 security is generally not necessary for developers migrating to using an IETF-vetted key establishment method (KEM) within a given protocol or flow. IND-CCA2 is considered the highest bar that a public key encryption mechanism can meet, and therefore is suitable for all uses. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and not rely on implementers being deep experts in cryptographic theory.</t>
        </section>
        <section anchor="binding">
          <name>Binding</name>
          <t>KEMs also have an orthogonal set of properties to consider when designing protocols around them: binding <xref target="KEEPINGUP"/>. This can be "ciphertext binding", "public key binding", "context binding", or any other property that is important to not be substituted between KEM invocations. In general, a KEM is considered to bind a certain value if substitution of that value by an attacker will necessarily result in a different shared secret being derived. As an example, if an attacker can construct two different ciphertexts which will decapsulate to the same shared secret; or can construct a ciphertext which will decapsulate to the same shared secret under two different public keys, or can substitute whole KEM exchanges from one session into another, then the construction is not ciphertext binding, public key binding, or context binding respectively. Similarly, protocol designers may wish to bind protocol state information such as a transaction ID or nonce so that attempts to replay ciphertexts from one session inside a different session will be blocked at the cryptographic level because the server derives a different shared secret and is thus is unable to decrypt the content.</t>
          <t>The solution to binding is generally achieved at the protocol design level: do not use the KEM output shared secret directly. Even though modern KEMs such as ML-KEM produce full-entropy shared secrets, it is still advisable for binding reasons to pass it through a key derivation function (KDF) and also include all values that you wish to bind; then finally you will have a shared secret that is safe to use at the protocol level.</t>
        </section>
      </section>
      <section anchor="hpke">
        <name>HPKE</name>
        <t>Modern cryptography has long used the notion of "hybrid encryption" where an asymmetric algorithm is used to establish a key, and then a symmetric algorithm is used for bulk content encryption.</t>
        <t>HPKE (Hybrid Public Key Encryption) <xref target="RFC9180"/> is a specific instantiation of this which works with a combination of KEMs, KDFs and AEAD schemes (Authenticated Encryption with Additional Data). HPKE includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE can be extended to support hybrid post-quantum KEM <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00-02"/>. ML-KEM does not support the static-ephemeral key exchange that allows HPKE based on DH based KEMs and its optional authenticated modes as discussed in Section 1.2 of <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00-02"/> and section 1.5 of <xref target="I-D.draft-connolly-cfrg-xwing-kem-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-properties-1">
        <name>Security properties</name>
        <section anchor="euf-cma">
          <name>EUF-CMA</name>
          <t>EUF-CMA (Existential Unforgeability under Chosen Message Attack) <xref target="GMR88"/> is a security notion for digital signature schemes. It guarantees that an adversary, even with access to a signing oracle, cannot forge a valid signature for an arbitrary message. EUF-CMA provides strong protection against forgery attacks, ensuring the integrity and authenticity of digital signatures by preventing unauthorized modifications or fraudulent signatures. ML-DSA, FN-DSA and SLH-DSA provide EUF-CMA security.</t>
          <t>Understanding EUF-CMA security is essential for individuals involved in designing or implementing cryptographic systems in order 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. EUF-CMA is considered the highest bar that a public key signature algorithm can meet, and therefore is suitable for all uses. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and should not assume that implementers are deep experts in cryptographic theory</t>
        </section>
      </section>
      <section anchor="sig-scheme">
        <name>Details of FN-DSA, ML-DSA, and SLH-DSA</name>
        <t>ML-DSA <xref target="ML-DSA"/> is a digital signature algorithm (part of the CRYSTALS suite) based on the hardness of lattice problems over module lattices (i.e., the Module Learning with Errors problem (MLWE)). The design of the algorithm is based on the "Fiat-Shamir with Aborts" <xref target="Lyu09"/> framework introduced by Lyubashevsky, that leverages rejection sampling to render lattice based FS schemes compact and secure. ML-DSA uses uniformly-distributed random number sampling over small integers for computing coefficients in error vectors, which makes the scheme easier to implement compared with FN-DSA <xref target="FN-DSA"/> which uses Guassian-distributed numbers.</t>
        <t>ML-DSA offers both deterministic and randomized signing and is instantiated with 3 parameter sets providing different security levels. Security properties of ML-DSA are discussed in Section 9 of <xref target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
        <t>FN-DSA <xref target="FN-DSA"/> is based on the GPV hash-and-sign lattice-based signature framework introduced by Gentry, Peikert and Vaikuntanathan, which is a framework that requires a certain class of lattices and a trapdoor sampler technique.</t>
        <t>The main design principle of FN-DSA is compactness, i.e. it was designed in a way that achieves minimal total memory bandwidth requirement (the sum of the signature size plus the public key size). This is possible due to the compactness of NTRU lattices.  FN-DSA also offers very efficient signing and verification procedures. The main potential downsides of FN-DSA refer to the non-triviality of its algorithms and the need for floating point arithmetic support in order to support Gaussian-distributed random number sampling where the other lattice schemes use the less efficient but easier to support uniformly-distributed random number sampling.</t>
        <t>Implementers of FN-DSA need to be aware that FN-DSA signing is highly susceptible to side-channel attacks, unless constant-time 64-bit floating-point operations are used. This requirement is extremely platform-dependent, as noted in NIST's report.</t>
        <t>The performance characteristics of ML-DSA and FN-DSA may differ based on the specific implementation and hardware platform. Generally, ML-DSA is known for its relatively fast signature generation, while FN-DSA can provide more efficient signature verification. The choice may depend on whether the application requires more frequent signature generation or signature verification (See <xref target="LIBOQS"/>). For further clarity on the sizes and security levels, please refer to the tables in sections <xref target="RecSecurity"/> and <xref target="Comparisons"/>.</t>
        <t>SLH-DSA <xref target="SLH-DSA"/> utilizes the concept of stateless hash-based signatures, where each signature is unique and unrelated to any previous signature (as discussed in <xref target="hash-based"/>). This property eliminates the need for maintaining state information during the signing process. SLH-DSA was designed to sign up to 2^64 messages and it offers three security levels. The parameters for each of the security levels were chosen to provide 128 bits of security, 192 bits of security, and 256 bits of security. SLH-DSA offers smaller public key sizes, larger signature sizes, slower signature generation, and slower verification when compared to ML-DSA and FN-DSA. SLH-DSA does not introduce a new hardness assumption beyond those inherent to the underlying hash functions. It builds upon established foundations in cryptography, making it a reliable and robust digital signature scheme for a post-quantum world. The advantages and disadvantages of SLH-DSA over other signature algorithms is discussed in Section 3.1 of <xref target="I-D.draft-ietf-cose-sphincs-plus"/>.</t>
      </section>
      <section anchor="details-of-xmss-and-lms">
        <name>Details of XMSS and LMS</name>
        <t>The eXtended Merkle Signature Scheme (XMSS) <xref target="RFC8391"/> and Hierarchical Signature Scheme (HSS) / Leighton-Micali Signature (LMS) <xref target="RFC8554"/> are stateful hash-based signature schemes, where the secret key changes over time. In both schemes, reusing a secret key state compromises cryptographic security guarantees.</t>
        <t>Multi-Tree XMSS and LMS can be used for signing a potentially large but fixed number of messages and the number of signing operations depends upon the size of the tree. XMSS and LMS provide cryptographic digital signatures without relying on the conjectured hardness of mathematical problems, instead leveraging the properties of cryptographic hash functions. XMSS and Hierarchical Signature System (HSS) use a hierarchical approach with a Merkle tree at each level of the hierarchy. <xref target="RFC8391"/> describes both single-tree and multi-tree variants of XMSS, while <xref target="RFC8554"/> describes the Leighton-Micali One-Time Signature (LM-OTS) system as well as the LMS and HSS N-time signature systems. Comparison of XMSS and LMS is discussed in Section 10 of <xref target="RFC8554"/>.</t>
        <t>The number of tree layers in XMSS^MT provides a trade-off between signature size on the one side and key generation and signing speed on the other side. Increasing the number of layers reduces key generation time exponentially and signing time linearly at the cost of increasing the signature size linearly.</t>
        <t>Due to the complexities described above, the XMSS and LMS are not a suitable replacement for classical signature schemes like RSA or ECDSA. Applications that expect a long lifetime of a signature, like firmware update or secure boot, are typical use cases where those schemes can be successfully applied.</t>
        <section anchor="lms-scheme-key-and-signature-sizes">
          <name>LMS scheme - key and signature sizes</name>
          <t>The LMS scheme is characterized by four distinct parameter sets - underlying hash function (SHA2-256 or SHAKE-256), the length of the digest (24 or 32 bytes), LMS tree height - parameter that controls a maximal number of signatures that the private key can produce (possible values are 5,10,15,20,25) and the width of the Winternitz coefficients (see <xref target="RFC8554"/>, section 4.1) that can be used to trade-off signing time for signature size (possible values are 1,2,4,8). Parameters can be mixed, providing 80 possible parametrizations of the scheme.</t>
          <t>The public (PK) and private (SK) key size depends on the length of the digest (M). The signature size depends on the Winternitz parameter (W), the LMS tree height (H), and the length of the digest. The tables below provides key and signature sizes for parameterization with the digest size M=32 of the scheme.</t>
          <table>
            <thead>
              <tr>
                <th align="left">PK</th>
                <th align="left">SK</th>
                <th align="left">W</th>
                <th align="left">H=5</th>
                <th align="left">H=10</th>
                <th align="left">H=15</th>
                <th align="left">H=20</th>
                <th align="left">H=25</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">1</td>
                <td align="left">8684</td>
                <td align="left">8844</td>
                <td align="left">9004</td>
                <td align="left">9164</td>
                <td align="left">9324</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">2</td>
                <td align="left">4460</td>
                <td align="left">4620</td>
                <td align="left">4780</td>
                <td align="left">4940</td>
                <td align="left">5100</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">4</td>
                <td align="left">2348</td>
                <td align="left">2508</td>
                <td align="left">2668</td>
                <td align="left">2828</td>
                <td align="left">2988</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">8</td>
                <td align="left">1292</td>
                <td align="left">1452</td>
                <td align="left">1612</td>
                <td align="left">1772</td>
                <td align="left">1932</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="hash-then-sign">
        <name>Hash-then-Sign</name>
        <t>Within the hash-then-sign paradigm, the message is hashed before signing it. By pre-hashing, the onus of resistance to existential forgeries becomes heavily reliant on the collision-resistance of the hash function in use. The hash-then-sign paradigm has the ability to improve application performance by reducing the size of signed messages that need to be transmitted between application and cryptographic module, and making the signature size predictable and manageable. As a corollary, hashing remains mandatory even for short messages and assigns a further computational requirement onto the verifier.  This makes the performance of hash-then-sign schemes more consistent, but not necessarily more efficient. Using a hash function to produce a fixed-size digest of a message ensures that the signature is compatible with a wide range of systems and protocols, regardless of the specific message size or format. Crucially for hardware security modules, Hash-then-Sign also significantly reduces the amount of data that needs to be transmitted and processed by a hardware security module. Consider scenarios such as a networked HSM located in a different data center from the calling application or a smart card connected over a USB interface. In these cases, streaming a message that is megabytes or gigabytes long can result in notable network latency, on-device signing delays, or even depletion of available on-device memory.</t>
        <t>Note that the vast majority of Internet protocols that sign large messages already perform some level form of content hashing at the protocol level, so this tends to be more of a concern with proprietary cryptographic protocols, and protocols from non-IETF standards bodies. Protocols like TLS 1.3 and DNSSEC use the Hash-then-Sign paradigm. In TLS 1.3 <xref target="RFC8446"/> CertificateVerify 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. Similarly, the Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> includes a mandatory message digest step before invoking the signature algorithm.</t>
        <t>In the case of ML-DSA, it internally incorporates the necessary hash operations as part of its signing algorithm. ML-DSA directly takes the original message, applies a hash function internally, and then uses the resulting hash value for the signature generation process. In case of SLH-DSA, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In case of FN-DSA, a hash function is used as part of the signature process, it uses the SHAKE-256 hash function to derive a digest of the message being signed. Therefore, ML-DSA, FN-DSA, and SLH-DSA offer enhanced security over the traditional Hash-then-Sign paradigm because by incorporating dynamic key material into the message digest, a pre-computed hash collision on the message to be signed no longer yields a signature forgery. Applications requiring the performance and bandwidth benefits of Hash-then-Sign may still pre-hash at the protocol level prior to invoking ML-DSA, FN-DSA, or SLH-DSA, but protocol designers should be aware that doing so re-introduces the weakness that hash collisions directly yield signature forgeries. Signing the full un-digested message is strongly preferred where applications can tolerate it.</t>
      </section>
    </section>
    <section anchor="RecSecurity">
      <name>Recommendations for Security / Performance Tradeoffs</name>
      <t>The table below denotes the 5 security levels provided by NIST required for PQC algorithms. Neither NIST nor the IETF make any specific recommendations about which security level to use. In general, protocols will include algorithm choices at multiple levels so that users can choose the level appropriate to their policies and data classification, similar to how organizations today choose which size of RSA key to use. The security levels are defined as requiring computational resources comparable to or greater than an attack on AES (128, 192 and 256) and SHA2/SHA3 algorithms, i.e., exhaustive key recovery for AES and optimal collision search for SHA2/SHA3. This information is a re-print of information provided in the NIST PQC project {NIST} as of time of writing (July 2023).</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">AES/SHA(2/3) hardness</th>
            <th align="left">PQC Algorithm</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">AES-128 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-512, FN-DSA-512, SLH-DSA-SHA2/SHAKE-128f/s</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">SHA-256/SHA3-256 (collision search)</td>
            <td align="left">ML-DSA-44</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">AES-192 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-768, ML-DSA-65, SLH-DSA-SHA2/SHAKE-192f/s</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">SHA-384/SHA3-384 (collision search)</td>
            <td align="left">No algorithm tested at this level</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">AES-256 (exhaustive key recovery)</td>
            <td align="left">ML-KEM-1024, FN-DSA-1024, ML-DSA-87, SLH-DSA-SHA2/SHAKE-256f/s</td>
          </tr>
        </tbody>
      </table>
      <t>Please note the SLH-DSA-x-yf/s "f/s" in the above table denotes whether its the SLH-DSA uses SHAKE or SHA-2 as an underlying hash function "x" and whether it is fast (f) version or small (s) version for "y" bit AES security level. Refer to <xref target="I-D.ietf-lamps-cms-sphincs-plus-02"/> for further details on SLH-DSA algorithms.</t>
      <t>The following table discusses the signature size differences for similar SLH-DSA algorithm security levels with the "simple" version but for different categories i.e., (f) for fast verification and (s) for compactness/smaller. Both SHA-256 and SHAKE-256 parameterization output the same signature sizes, so both have been included.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-128f</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">17088</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-128s</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">7856</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-192f</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">35664</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-192s</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">16224</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-256f</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">49856</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SLH-DSA-{SHA2,SHAKE}-256s</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">29792</td>
          </tr>
        </tbody>
      </table>
      <t>The following table discusses the impact of performance on different security levels in terms of private key sizes, public key sizes and ciphertext/signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext/Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">2420</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3309</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">2592</td>
            <td align="left">4864</td>
            <td align="left">4627</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Comparisons">
      <name>Comparing PQC KEMs/Signatures vs Traditional KEMs (KEXs)/Signatures</name>
      <t>In this section, we provide two tables for comparison of different KEMs and Signatures respectively, in the traditional and post-quantum scenarios. These tables will focus on the secret key sizes, public key sizes, and ciphertext/signature sizes for the PQC algorithms and their traditional counterparts of similar security levels.</t>
      <t>The first table compares traditional vs. PQC KEMs in terms of security, public, private key sizes, and ciphertext sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256_HKDF_SHA-256</td>
            <td align="left">65</td>
            <td align="left">32</td>
            <td align="left">65</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P521_HKDF_SHA-512</td>
            <td align="left">133</td>
            <td align="left">66</td>
            <td align="left">133</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">X25519_HKDF_SHA-256</td>
            <td align="left">32</td>
            <td align="left">32</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1568</td>
          </tr>
        </tbody>
      </table>
      <t>The next table compares traditional vs. PQC Signature schemes in terms of security, public, private key sizes, and signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">RSA2048</td>
            <td align="left">256</td>
            <td align="left">256</td>
            <td align="left">256</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256</td>
            <td align="left">64</td>
            <td align="left">32</td>
            <td align="left">64</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3293</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">2592</td>
            <td align="left">4864</td>
            <td align="left">4627</td>
          </tr>
        </tbody>
      </table>
      <t>As one can clearly observe from the above tables, leveraging a PQC KEM/Signature significantly increases the key sizes and the ciphertext/signature sizes compared to traditional KEM(KEX)/Signatures. But the PQC algorithms do provide the additional security level in case there is an attack from a CRQC, whereas schemes based on prime factorization or discrete logarithm problems (finite field or elliptic curves) would provide no level of security at all against such attacks.</t>
      <t>These increased key and signatures sizes could introduce problems in protocols. As an example, IKEv2 uses UDP as the transport for its messages. One challenge with integrating PQC key exchange into the initial IKEv2 exchange is that IKE fragmentation cannot be utilized. To address this issue, <xref target="RFC9242"/> introduces a solution by defining a new exchange called the 'Intermediate Exchange' which can be fragmented using the IKE fragmentation mechanism. <xref target="RFC9370"/> then uses this Intermediate Exchange to carry out the PQC key exchange after the initial IKEv2 exchange and before the IKE_AUTH exchange. Another example from <xref target="SP-1800-38C"/> section 6.3.3 shows that increased key and signature sizes cause protocol key exchange messages to span more network packets, therefore it results in a higher total loss probability per packet. In lossy network conditions this may increase the latency of the key exchange.</t>
    </section>
    <section anchor="post-quantum-and-traditional-hybrid-schemes">
      <name>Post-Quantum and Traditional Hybrid Schemes</name>
      <t>The migration to PQC is unique in the history of modern digital cryptography in that neither the traditional algorithms nor the post-quantum algorithms are fully trusted to protect data for the required lifetimes. The traditional algorithms, such as RSA and elliptic curve, will fall to quantum cryptanalysis, while the post-quantum algorithms face uncertainty about the underlying mathematics, compliance issues, unknown vulnerabilities, and hardware and software implementations that have not had sufficient maturing time to rule out classical cryptanalytic attacks and implementation bugs.</t>
      <t>During the transition from traditional to post-quantum algorithms, there may be a desire or a requirement for protocols that use both algorithm types. <xref target="I-D.ietf-pquip-pqt-hybrid-terminology"/> defines the terminology for the Post-Quantum and Traditional Hybrid Schemes.</t>
      <section anchor="pqt-hybrid-confidentiality">
        <name>PQ/T Hybrid Confidentiality</name>
        <t>The PQ/T Hybrid Confidentiality property can be used to protect from a "Harvest Now, Decrypt Later" attack described in <xref target="timeline"/>, which refers to an attacker collecting encrypted data now and waiting for quantum computers to become powerful enough to break the encryption later. Two types of hybrid key agreement schemes are discussed below:</t>
        <ol spacing="normal" type="1"><li>
            <t>Concatenate hybrid key agreement scheme: The final shared secret that will be used as an input of the key derivation function is the result of the concatenation of the secrets established with each key agreement scheme. For example, in <xref target="I-D.ietf-tls-hybrid-design"/>, the client uses the TLS supported groups extension to advertise support for a PQ/T hybrid scheme, and the server can select this group if it supports the scheme. The hybrid-aware client and server establish a hybrid secret by concatenating the two shared secrets, which is used as the shared secret in the existing TLS 1.3 key schedule.</t>
          </li>
          <li>
            <t>Cascade hybrid key agreement scheme: The final shared secret is computed by applying as many iterations of the key derivation function as the number of key agreement schemes composing the hybrid key agreement scheme. For example, <xref target="RFC9370"/> extends the Internet Key Exchange Protocol Version 2 (IKEv2) to allow one or more PQC algorithms in addition to the traditional algorithm to derive the final IKE SA keys using the cascade method as explained in Section 2.2.2 of <xref target="RFC9370"/>.</t>
          </li>
        </ol>
        <t>Various instantiations of these two types of hybrid key agreement schemes have been explored. One must be careful when selecting which hybrid scheme to use.  The chosen schemes at IETF are IND-CCA2 robust, that is IND-CCA2 security is guaranteed for the scheme as long as at least one of the component algorithms is IND-CCA2 secure.</t>
      </section>
      <section anchor="pqt-hybrid-authentication">
        <name>PQ/T Hybrid Authentication</name>
        <t>The PQ/T Hybrid Authentication property can be utilized in scenarios where an on-path attacker possesses network devices equipped with CRQCs, capable of breaking traditional authentication protocols, or where an attacker can attack long-lived authenticated data such as CA certificates or signed software images. This property ensures authentication through a PQ/T hybrid scheme or a PQ/T hybrid protocol, as long as at least one component algorithm remains secure to provide the intended security level. For instance, a PQ/T hybrid certificate 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, with various methods for combining them. For post-quantum transition purposes, the combination of a post-quantum algorithm with a classical algorithm is the most straightforward. The use of multiple post-quantum algorithms with different mathematical bases has also been considered. Combining algorithms in a way that requires both to be used together ensures stronger security, while combinations that do not require both will sacrifice security but offer other benefits like backwards compatibility and crypto agility. Including a traditional key alongside a post-quantum key often has minimal bandwidth impact.</t>
        <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, 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, often referred to in cryptography as a "ciphersuite", instead of allowing arbitrary combinations of individual configuration choices that may interact in dangerous ways.  The current consensus is that the same approach should be followed for combining cryptographic algorithms, and that "known good" pairs should be explicitly listed ("explicit composite"), instead of just allowing arbitrary combinations of any two crypto algorithms ("generic composite").</t>
        <t>The same considerations apply when using multiple certificates to transport a pair of related keys for the same subject.  Exactly how two certificates should be managed in order to avoid some of the pitfalls mentioned above is still an active area of investigation.  Using two certificates keeps the certificate tooling simple and straightforward, but in the end simply moves the problems with requiring that both certs are intended to be used as a pair, must produce two signatures which must be carried separately, and both must validate, to the certificate management layer, where addressing these concerns in a robust way can be difficult.</t>
        <t>An important security note when using particularly hybrid signature keys, but also to a lesser extent hybrid KEM keys, is key re-use. In traditional cryptography, problems can occur with so-called "cross-protocol attacks" when the same key can be used for multiple protocols; for example signing TLS handshakes and signing S/MIME emails. While it is not best-practice to re-use keys within the same protocol, for example using the same key for multiple S/MIME certificates for the same user, it is not generally catastrophic for security. However, key re-use becomes a large security problem within hybrids. Consider an {RSA, ML-DSA} hybrid key where the RSA key also appears within a single-algorithm certificate. In this case, an attacker could perform a "stripping attack" where they take some piece of data signed with the {RSA, ML-DSA} key, remove the ML-DSA signature and present the data as if it was intended for the RSA only certificate. This leads to a set of security definitions called "non-separability properties", which refers to how well the signature scheme resists various complexities of downgrade / stripping attacks <xref target="I-D.draft-ietf-pquip-hybrid-signature-spectrums"/>. Therefore, implementers must either reuse the entire hybrid key as a whole, or perform fresh keygens of all component keys per usage, and must not take an existing key and reuse it as a component of a hybrid.</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 standardized for the reasons mentioned above, then one could imagine leveraging them to create "ciphersuites" in which a single cryptographic operation simultaneously satisfies the cryptographic requirements of both endpoints.</t>
        <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.</t>
        <t>Recent attacks on the side-channel implementations using deep learning based power analysis have also shown that one needs to be cautious while implementing the required PQC algorithms in hardware. Two of the most recent works include: one attack on ML-KEM <xref target="KyberSide"/> and one attack on Saber <xref target="SaberSide"/>. 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.</t>
        <t>Several PQC schemes are available that need to be tested; cryptography experts around the world are pushing for the best possible solutions, and the first standards that will ease the introduction of PQC are being prepared. It is of paramount importance and a call for imminent action for organizations, bodies, and enterprises to start evaluating their cryptographic agility, assess the complexity of implementing PQC into their products, processes, and systems, and develop a migration plan that achieves their security goals to the best possible extent.</t>
        <t>An important and often overlooked step in achieving cryptographic agility is maintaining a cryptographic inventory. Modern software stacks incorporate cryptography in numerous places, making it challenging to identify all instances. Therefore, cryptographic agility and inventory management take two major forms: First, application developers responsible for software maintenance should actively search for instances of hard-coded cryptographic algorithms within applications. When possible, they should design the choice of algorithm to be dynamic, based on application configuration. Second, administrators, policy officers, and compliance teams should take note of any instances where an application exposes cryptographic configurations. These instances should be managed either through organization-wide written cryptographic policies or automated cryptographic policy systems.</t>
        <t>Numerous commercial solutions are available for both detecting hard-coded cryptographic algorithms in source code and compiled binaries, as well as providing cryptographic policy management control planes for enterprise and production environments.</t>
      </section>
      <section anchor="hybrid-key-exchange-and-signatures-bridging-the-gap-between-post-quantum-and-traditional-cryptography">
        <name>Hybrid Key Exchange and Signatures: Bridging the Gap Between Post-Quantum and Traditional Cryptography</name>
        <t>Post-quantum algorithms selected for standardization are relatively new and they they have not been subject to the same depth of study as traditional algorithms. PQC implementations will also be new and therefore more likely to contain implementation bugs than the battle-tested crypto implementations that we rely on today. In addition, certain deployments may need to retain traditional algorithms due to regulatory constraints, for example FIPS <xref target="SP-800-56C"/> or PCI compliance. Hybrid key exchange enables potential security against "Harvest Now, Decrypt Later" attack and hybrid signatures provide for time to react in the case of the announcement of a devastating attack against any one algorithm, while not fully abandoning traditional cryptosystems.</t>
      </section>
      <section anchor="caution-ciphertext-commitment-in-kem-vs-dh">
        <name>Caution: Ciphertext commitment in KEM vs DH</name>
        <t>The ciphertext generated by a KEM is not necessarily inherently linked to the shared secret it produces. In contrast, in some other cryptographic schemes like Diffie-Hellman, a change in the public key results in a change in the derived shared secret.</t>
      </section>
    </section>
    <section anchor="further-reading-resources">
      <name>Further Reading &amp; Resources</name>
      <section anchor="reading-list">
        <name>Reading List</name>
        <t>(A reading list. <eref target="https://nostarch.com/seriouscrypto">Serious Cryptography</eref>. Pointers to PQC sites with good explanations. List of reasonable Wikipedia pages.)</t>
      </section>
      <section anchor="developer-resources">
        <name>Developer Resources</name>
        <ul spacing="normal">
          <li>
            <t><eref target="https://openquantumsafe.org/">Open Quantum Safe</eref> and corresponding <eref target="https://github.com/open-quantum-safe">github</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/ietf-wg-pquip/state-of-protocols-and-pqc">PQUIP WG list of PQC-related protocol work within the IETF</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The authors would like to acknowledge that this content is assembled from countless hours of discussion and countless megabytes of email discussions. We have tried to reference as much source material as possible, and apologize to anyone whose work was inadvertently missed.</t>
      <t>In particular, the authors would like to acknowledge the contributions to this document by the following individuals:</t>
      <t>Kris Kwiatkowski</t>
      <t>PQShield, LTD</t>
      <t>United Kingdom.</t>
      <t>kris@amongbytes.com</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document leverages text from https://github.com/paulehoffman/post-quantum-for-engineers/blob/main/pqc-for-engineers.md. Thanks to Dan Wing, Florence D, Thom Wiggers, Sophia Grundner-Culemann, Panos Kampanakis, Ben S3, Sofia Celi, Melchior Aelmans, Falko Strenzke, Deirdre Connolly, and Daniel Van Geest for the discussion, review and comments.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8391">
          <front>
            <title>XMSS: eXtended Merkle Signature Scheme</title>
            <author fullname="A. Huelsing" initials="A." surname="Huelsing"/>
            <author fullname="D. Butin" initials="D." surname="Butin"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="J. Rijneveld" initials="J." surname="Rijneveld"/>
            <author fullname="A. Mohaisen" initials="A." surname="Mohaisen"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This note describes the eXtended Merkle Signature Scheme (XMSS), a hash-based digital signature system that is based on existing descriptions in scientific literature. This note specifies Winternitz One-Time Signature Plus (WOTS+), a one-time signature scheme; XMSS, a single-tree scheme; and XMSS^MT, a multi-tree variant of XMSS. Both XMSS and XMSS^MT use WOTS+ as a main building block. XMSS provides cryptographic digital signatures without relying on the conjectured hardness of mathematical problems. Instead, it is proven that it only relies on the properties of cryptographic hash functions. XMSS provides strong security guarantees and is even secure when the collision resistance of the underlying hash function is broken. It is suitable for compact implementations, is relatively simple to implement, and naturally resists side-channel attacks. Unlike most other signature systems, hash-based signatures can so far withstand known attacks using quantum computers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8391"/>
          <seriesInfo name="DOI" value="10.17487/RFC8391"/>
        </reference>
        <reference anchor="RFC8554">
          <front>
            <title>Leighton-Micali Hash-Based Signatures</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Curcio" initials="M." surname="Curcio"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This note describes a digital-signature system based on cryptographic hash functions, following the seminal work in this area of Lamport, Diffie, Winternitz, and Merkle, as adapted by Leighton and Micali in 1995. It specifies a one-time signature scheme and a general signature scheme. These systems provide asymmetric authentication without using large integer mathematics and can achieve a high security level. They are suitable for compact implementations, are relatively simple to implement, and are naturally resistant to side-channel attacks. Unlike many other signature systems, hash-based signatures would still be secure even if it proves feasible for an attacker to build a quantum computer.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF. This has been reviewed by many researchers, both in the research group and outside of it. The Acknowledgements section lists many of them.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8554"/>
          <seriesInfo name="DOI" value="10.17487/RFC8554"/>
        </reference>
        <reference anchor="RFC9242">
          <front>
            <title>Intermediate Exchange in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>This document defines a new exchange, called "Intermediate Exchange", for the Internet Key Exchange Protocol Version 2 (IKEv2). This exchange can be used for transferring large amounts of data in the process of IKEv2 Security Association (SA) establishment. An example of the need to do this is using key exchange methods resistant to Quantum Computers (QCs) for IKE SA establishment. The Intermediate Exchange makes it possible to use the existing IKE fragmentation mechanism (which cannot be used in the initial IKEv2 exchange), helping to avoid IP fragmentation of large IKE messages if they need to be sent before IKEv2 SA is established.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9242"/>
          <seriesInfo name="DOI" value="10.17487/RFC9242"/>
        </reference>
        <reference anchor="RFC9370">
          <front>
            <title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="CJ. Tjhai" initials="CJ." surname="Tjhai"/>
            <author fullname="M. Tomlinson" initials="M." surname="Tomlinson"/>
            <author fullname="G. Bartlett" initials="G." surname="Bartlett"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document describes how to extend the Internet Key Exchange Protocol Version 2 (IKEv2) to allow multiple key exchanges to take place while computing a shared secret during a Security Association (SA) setup.</t>
              <t>This document utilizes the IKE_INTERMEDIATE exchange, where multiple key exchanges are performed when an IKE SA is being established. It also introduces a new IKEv2 exchange, IKE_FOLLOWUP_KE, which is used for the same purpose when the IKE SA is being rekeyed or is creating additional Child SAs.</t>
              <t>This document updates RFC 7296 by renaming a Transform Type 4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and renaming a field in the Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange Method". It also renames an IANA registry for this Transform Type from "Transform Type 4 - Diffie- Hellman Group Transform IDs" to "Transform Type 4 - Key Exchange Method Transform IDs". These changes generalize key exchange algorithms that can be used in IKEv2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9370"/>
          <seriesInfo name="DOI" value="10.17487/RFC9370"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="Grover-search">
          <front>
            <title>C. Zalka, “Grover’s quantum searching algorithm is optimal,” Physical Review A, vol. 60, pp. 2746-2751, 1999.</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Threat-Report" target="https://globalriskinstitute.org/publications/quantum-threat-timeline-report-2020/">
          <front>
            <title>Quantum Threat Timeline Report 2020</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="QC-DNS" target="https://www.icann.org/octo-031-en.pdf">
          <front>
            <title>Quantum Computing and the DNS</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="NIST" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization">
          <front>
            <title>Post-Quantum Cryptography Standardization</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Cloudflare" target="https://blog.cloudflare.com/nist-post-quantum-surprise/">
          <front>
            <title>NIST’s pleasant post-quantum surprise</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ML-KEM" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.ipd.pdf">
          <front>
            <title>FIPS-203: Module-Lattice-based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ML-DSA" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.ipd.pdf">
          <front>
            <title>FIPS-204: Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SLH-DSA" target="https://doi.org/10.6028/NIST.FIPS.205">
          <front>
            <title>FIPS-205: Stateless Hash-Based Digital Signature Standard</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="FN-DSA" target="https://falcon-sign.info/">
          <front>
            <title>Fast Fourier lattice-based compact signatures over NTRU</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA" target="https://dl.acm.org/doi/pdf/10.1145/359340.359342">
          <front>
            <title>A Method for Obtaining Digital Signatures and Public-Key Cryptosystems+</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CS01" target="https://eprint.iacr.org/2001/108">
          <front>
            <title>Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="BHK09" target="https://eprint.iacr.org/2009/418">
          <front>
            <title>Subtleties in the Definition of IND-CCA: When and How Should Challenge-Decryption be Disallowed?</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="GMR88" target="https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Digital%20Signatures/A_Digital_Signature_Scheme_Secure_Against_Adaptive_Chosen-Message_Attack.pdf">
          <front>
            <title>A digital signature scheme secure against adaptive chosen-message attacks.</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="PQCAPI" target="https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/example-files/api-notes.pdf">
          <front>
            <title>PQC - API notes</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA8HRS" target="https://arxiv.org/abs/1905.09749">
          <front>
            <title>How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA10SC" target="https://www.quintessencelabs.com/blog/breaking-rsa-encryption-update-state-art">
          <front>
            <title>Breaking RSA Encryption - an Update on the State-of-the-Art</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSAShor" target="https://arxiv.org/pdf/quant-ph/0205095.pdf">
          <front>
            <title>Circuit for Shor’s algorithm using 2n+3 qubits</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="LIBOQS" target="https://github.com/open-quantum-safe/liboqs">
          <front>
            <title>LibOQS - Open Quantum Safe</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="KyberSide" target="https://eprint.iacr.org/2022/1452">
          <front>
            <title>A Side-Channel Attack on a Hardware Implementation of CRYSTALS-Kyber</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SaberSide" target="https://link.springer.com/article/10.1007/s13389-023-00315-3">
          <front>
            <title>A side-channel attack on a masked and shuffled software implementation of Saber</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SideCh" target="https://eprint.iacr.org/2022/919">
          <front>
            <title>Side-Channel Attacks on Lattice-Based KEMs Are Not Prevented by Higher-Order Masking</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="LatticeSide" target="https://eprint.iacr.org/2019/948">
          <front>
            <title>Generic Side-channel attacks on CCA-secure lattice-based PKE and KEM schemes</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Mitigate1" target="https://eprint.iacr.org/2022/873">
          <front>
            <title>POLKA: Towards Leakage-Resistant Post-Quantum CCA-Secure Public Key Encryption</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Mitigate2" target="https://ieeexplore.ieee.org/document/9855226">
          <front>
            <title>Leakage-Resilient Certificate-Based Authenticated Key Exchange Protocol</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Mitigate3" target="https://eprint.iacr.org/2022/916">
          <front>
            <title>Post-Quantum Authenticated Encryption against Chosen-Ciphertext Side-Channel Attacks</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CNSA2-0" target="https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF">
          <front>
            <title>Announcing the Commercial National Security Algorithm Suite 2.0</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="LattFail1" target="https://link.springer.com/chapter/10.1007/978-3-030-17259-6_19#chapter-info">
          <front>
            <title>Decryption Failure Attacks on IND-CCA Secure Lattice-Based Schemes</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="LattFail2" target="https://link.springer.com/chapter/10.1007/978-3-030-45727-3_1">
          <front>
            <title>(One) Failure Is Not an Option: Bootstrapping the Search for Failures in Lattice-Based Encryption Schemes.</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="BSI-PQC" target="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.html?nn=916626">
          <front>
            <title>Quantum-safe cryptography – fundamentals, current developments and recommendations</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="May"/>
          </front>
        </reference>
        <reference anchor="PQRSA" target="https://cr.yp.to/papers/pqrsa-20170419.pdf">
          <front>
            <title>Post-quantum RSA</title>
            <author>
              <organization/>
            </author>
            <date year="2017" month="April"/>
          </front>
        </reference>
        <reference anchor="SP-800-56C" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Lyu09" target="https://www.iacr.org/archive/asiacrypt2009/59120596/59120596.pdf">
          <front>
            <title>V. Lyubashevsky, “Fiat-Shamir With Aborts: Applications to Lattice and Factoring-Based Signatures“, ASIACRYPT 2009</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SP-1800-38C" target="https://www.nccoe.nist.gov/sites/default/files/2023-12/pqc-migration-nist-sp-1800-38c-preliminary-draft.pdf">
          <front>
            <title>Migration to Post-Quantum Cryptography Quantum Readiness: Quantum-Resistant Cryptography Technology Interoperability and Performance Report</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="KYBER2018" target="https://ieeexplore.ieee.org/document/8406610">
          <front>
            <title>CRYSTALS - Kyber: A CCA-Secure Module-Lattice-Based KEM</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="KEEPINGUP" target="https://eprint.iacr.org/2023/1933">
          <front>
            <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="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="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="I-D.draft-ietf-lake-edhoc-22">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="August" year="2023"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-xwing-kem-02"/>
        </reference>
        <reference anchor="I-D.westerbaan-cfrg-hpke-xyber768d00-02">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum KEM for HPKE</title>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="May" year="2023"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum KEM,
   for HPKE (RFC9180).  This KEM does not support the authenticated
   modes of HPKE.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-dilithium-certificates-04"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cose-sphincs-plus">
          <front>
            <title>SLH-DSA for JOSE and COSE</title>
            <author fullname="Michael Prorock" initials="M." surname="Prorock">
              <organization>mesur.io</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Rafael Misoczki" initials="R." surname="Misoczki">
              <organization>Google</organization>
            </author>
            <author fullname="Michael Osborne" initials="M." surname="Osborne">
              <organization>IBM</organization>
            </author>
            <author fullname="Christine Cloostermans" initials="C." surname="Cloostermans">
              <organization>NXP</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document describes JOSE and COSE serializations for SLH-DSA,
   which was derived from SPHINCS+, a Post-Quantum Cryptography (PQC)
   based digital signature scheme.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-02"/>
        </reference>
        <reference anchor="I-D.ietf-pquip-pqt-hybrid-terminology">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="Florence D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Michael P" initials="M." surname="P">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <date day="10" month="September" year="2024"/>
            <abstract>
              <t>   One aspect of the transition to post-quantum algorithms in
   cryptographic protocols is the development of hybrid schemes that
   incorporate both post-quantum and traditional asymmetric algorithms.
   This document defines terminology for such schemes.  It is intended
   to be used as a reference and, hopefully, to ensure consistency and
   clarity across different protocols, standards, and organisations.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-10"/>
        </reference>
        <reference anchor="I-D.ounsworth-pq-composite-keys">
          <front>
            <title>Composite Public and Private Keys For Use In Internet PKI</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>D-Trust GmbH</organization>
            </author>
            <date day="29" month="May" year="2023"/>
            <abstract>
              <t>   The migration to post-quantum cryptography is unique in the history
   of modern digital cryptography in that neither the old outgoing nor
   the new incoming algorithms are fully trusted to protect data for the
   required data lifetimes.  The outgoing algorithms, such as RSA and
   elliptic curve, may fall to quantum cryptalanysis, while the incoming
   post-quantum algorithms face uncertainty about both the underlying
   mathematics as well as hardware and software implementations that
   have not had sufficient maturing time to rule out classical
   cryptanalytic attacks and implementation bugs.

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

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

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-00"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y923Ib6ZUueM+nyM2KmSLHAHiWSFW73RRFlTg6sQSVq3tq
1y4ngCSZFpAJZyZIwbImfDkR+27maiL2RMyzzKP4SWZ96/AfEglKKrvd3Tu2
ul0kgTz8h/Wv8/pWv9/faPJmmj1KNi/Luul/t0iLZjFLzqrlvCmvq3R+s0yu
yio5L67zIsuqenMjHY2q7BZ3fHfW/m6cNtl1WS0fJXlxVW5sTMpxkc7o8ZMq
vWr6edZc9ed/WORz+u+4n9mN/SndVzcb9WI0y+s6L4tmOae7Ls7fPt0oFrNR
Vj3amNA1jzbGZVFnRb2oHyVNtcg2aCAHG2mVpTSgYTZeVHmz3Ny4K6t311W5
mPMwv7+43Nx4ly3p08mjjaSf0Mg3NjZus2JBT0wSu5JHtkkfyNs3f6Cn5MV1
8i2+x+ezNJ/ydeN/wlQGZXWNj9NqfEMf3zTNvH60s4Or8FF+mw3ssh18sDOq
yrs626H7dzZpAHWTFpOf02lZ0NuWWb0xzx8lPzbluJfUZdVU2VVNvy1n+ktT
5eOml4zL2SwrGvqEVneWzuc0xJ82NtJFc1NWmB6NKEmuFtOpLP0pLUmVJo/T
Iqt+n2X8LY0oLfI/pg0t9aPkVfkuT/nzMa3eo+TlosjHN/JBuSga7Oe3WTVL
iyV/mOk6pPzkwUif/E8FnjOg8W2ujuJtXi1m6TSr79IqeZNNJsvPGAiN+ZqW
p5JBV9k1X/U8rYq0Sd+l8QgvionebON7VxaTJq/+6Rp/rxnXk3xGk8jLOhmO
b8q8yNMifZfXnzG40+aGCLG1SlWWjbNoEBN7waAOXyCL1R9l0ylR/6heu2yz
sqEz+KycTrNRlr3rGNiT/Do/y6omGNtl3jT1aFFdt3bx++FpNLgmnw1u7NH/
NKEHjelB0Vjygo7ay0HyelHUdIAaeaKM7mX+Lmt9QUN7RByBzmbdJC8w92zC
Xxjb0O/4MyLpLGseJftHu7vJsJzScWiSN2U6Sf7y5/8rGS7o5mRvdzeY2Oum
Se/SXvK6aIj6ynh2Z7S0E6OKCY3v+f7z5ODbo3DKMxryoLQh/1Mmo8GM6UAW
JRF5Q+f20cYGGJj/KwETuM2qfp3xaedHJsY7zwbJ/5ZO39G4/vLn/yYX/uXP
/3ed/EHZqdwEVpJOiT3mzc0syeuknNP6p9PeX/78/ySXN8s6H6dTOhu3eXaX
nPaS23I6SB7s9pL5fJDsPzx80N9/eLTXS/ZOTk4GmzqCtLqmFZQ/mEMmV+m0
Bgm+vSGu2PTfZHOaaWvAxuflGlBZNiVWnMjFyf7u/m78gsSY2/W0HKXTKq+J
M9b0uEWTMX+bL0ZTGj8ost7RefcbGUKjj+9X/Pg+Hr/TNeTvzvpPXg3XjPWs
nM0XDS9iMUno8CV07ZpR3t3dDWg0RcFjK8dN2d892COBM5hPrrre/Opi+Lb1
3vUCcQi+nVYTPYFrxjCuq/GgyIm4rsvbnXlV/j4bN/XOHI+1BRoHj13/Tb+O
X9g1gbNpuZhckdzJWtPAzJgY59MsrenhSfiepF5Uc9rNbM0kRtPyejB2z8Y5
2cGc+tFg7SGdm/ryRf/5+cvWqJ5eXA6JDg6Ih5STxTTrv0ibhphPf5TW2SR5
ni3758U4ndeLKU85eZmNb4jn1TO3+mtGXNxOiRZrv/L4BZ/s4J07WI4BfhvQ
2wf5fLKOImjYT4an3cM+XBn2Yx42OHFDZ3iYX5OEWlTZ33Cwh/cNdvji2frR
Hj3CMJqMhG+dPEvrm1862kmZ83na2x082N0/joZ31DWsp6+6RpWSZHhakqaW
Vck02nairnk6bpLaRkQ8knhp8urtm+/XjIleRSphH3cMwLI7SfDNyiBOiaBI
X5qwAvt61KQkmImzrCxJzczmkplbn6hSGUG9rJtsVv9q3UJNB+l4xmtFa7ZD
m4Y129s7PNo5ODo5ONwd8I/9zoM83N1rDfZJhunxSE6LdEqCgtblKrmsaK1Y
ZgTjo1ODEeLIkEKTzWgGrBZnSXqdgmUnp5N0DqmWnN2UpEonZ/n8hoR+9p6+
Iuk6frdmUhkd8aIZ5Om44pnt7+7u0bSOuybx+Nnz3ZPWLIaLEf3S5DSivBD+
nV3RsvNYaToXr570z85OHyU/kF7Fk31W3iXDm3IxndBYU9JSiuus/yRzExzR
I/KavijvsslvPn/YJzuHe53D/vblm+PjFUqZKFE4qkxqXlkS69HCprawY17Y
Pq19nV7T97yq9WDNAOdZSax5MK6hpJK+NMgmi506n97m5c6QDu2YNKj/aX93
OM5JWcmv8jH9cZnOyWzaUXLFt45gd05/1o9/dh/+LKTws1DCz6cy4J+NEn4W
Sui/lAH/LGSwjteQ8XR6edEWlmQL9hP6PClKMuU+SySeDd+c7cwy0tp3Lk06
hkK3HwpdOkjjBds9O9n7dEYr1r/KiaPtpPO8z+9cN146/MfP3rS1CtBWU9JF
pBtUpPAcHiejvMHFRJ1kxNLygkyPE6I/+nVRgz3s75L+OJ2C9ooyr5ek4NFN
62abVu/zWzH+iKHvneweDXZPHh6erBnk3u7wrDXIx6Q+sQWKYQUnu0/HI/l+
jkckpZwl5vD98op0rqx/WjX3KEZk5dIMa9rxcWamBwt6sk/lff2qTklZsvf1
F/wqqCH031QtjdUZDMUADWdwlldjUuOZzeJr1kS8EqzLWvzq4HOXEryU1Y7+
/GaH9Mij3ZOjdTv/4uLx6+/aG/8iH9GHtISv58RmTL8bplfrVCA6SzeLES9S
Sbd4pYdu2Znmo/IPddfLny9HWTXMJ2197DTBh31iaEWRTZXlYhdTks3VhMzj
LLkAfYPYU2OOZ2/+Zfj29MWwz4/9bFa3v79DQqdTzgzTdeOrMb6xji8NxjdL
63ckpcGa65vF1dWU/qjLq4bHnK+Mmd+wZqhkDrwb1BgvnTReWyKrfDzNWFDu
7j7cqfcODo5P+rv7B/1d0t2P+geds6CxnrXNsY4FrjGDWFkjpbROTmnkr8qG
ZGl2S2Onj0dkbOfXJBH7r6sJ6R4vU5g611+y5Cd7nWdcX9+x5t9mRVblY6GM
eOV54CQW+ypsYoXp8vk5bwfNRYXSuhO0OtC9k52Tw04x+JJk8jV90tZDLl+/
eE7y+W1JGz6pkxfELEhckIVJCkkDyyI2mWjQqnqIfpLE+smXrOjxw87dt4Hu
t894MLIpxGYC/whkJxiYbP/pAv6bhj+ayNDeY+lJYJM0aspxOV0zwjzLsvdz
uKUG+FXVPJFOOyfHR0f7+w/uG+3BfYZmPKyA55uWobI60Nq6yP3LyLVzuGev
hqf7/d02eyiKclGMwbYhds7gjKzGOalHr/jgQ3lWN2xy6vi8uHL2B+u8CqwF
DCbZVVbUGSsHPLJhNt8hVkAq28Huw73jg8Od/h7+f5d0h9OfMcCf6Zk/n774
9vWbi7fPXg5/Hlw+ebru7D0lBWtVtXYLjK9BrAHDUJXUNOiYfwzvPW+rDI6I
a95klWNwJw+P+8TbDnb7ew/3j076D37eO/lKL+qz+/yeebQpfut1kW27KVzU
zNRISXg9Fx/h47Js6qYSb7EoDOyTYsGst7HCE89x1ZpYp8V+yXwPjx7uP+wf
/LzXaToML/qkTXY7gVjoJqFvhD2FVwsyW1n2TOteQntV4cxPiKVPyzkrjcwl
q0x85xNxU92jIo3qfDCihxJJ7gxvSLxNnpRj0rfLu2JappN65/zVDg105zL0
ej2uyvENreNOqCFEjpzBTTOb/qYofk1H7kHMJPaOB6QfgupZxV61WC9Drw19
vU7FrgbL+aApd+ZiIsz/AF2OuP3D3cO9k7amhM8Hu4cDFljDy/7x7m7/6EF7
8d9E68YkAwfNE5JZt+adgTHNBMSuGxIHtDD1Ddb+EwdlvQtkOM/AWKI1ZpfD
8HKgA6321+p+y4WzQN1EfjvA5yQ6b7Lb+t2S3bVP87Tp0x7P8ir5gZhVcjoq
q6Z+lJzO5+69MBX0ZDAlPWWzAZqy8gJnftETe8np8OKUNLbLtwmszU0bRZeT
0jixBox20hofEcmwnXp0skcq7skD94ufblsRuuzvYVEOjs/as36ZE/XxNtEs
1ns17cM3WTrJC7IPHtlHgYSP7nibjW+KkgyHZXJBulNF6nGVjkjiEu9nt0lW
sQ+d7Az1LN+3FMV4XGaeDGqSGPUOiYR0MW12xNbbhza4t48AWn9ms+qzP7Ke
2/zH/XmVTfNZXqTVss+Bx7Wr9vxfHp+/oUPQNvpN3SYzgRVuooZQn+l0/pEO
9ksUhuPD3QcP9hDjeH5+fnnx6tvvL2UwNpbnWcZM+/t5cgf6BPOG7gqvXlWC
3XqJS1yfyZWPKPRbbEO6aMoZqxNp4D2ir1WJnKu6oyf0M3SGA7JmDw426F+/
T7boCJJl3GxsvKWh0eKzZYl3pCG9wFM1XRIhTLNbkFLs16dZbJ29+e5sO7lj
hw9xcGjfdWjWkonQS+hVk1w1DQk69N+R8uZsypr4Pq31kibWlJN0mZSjupxm
TdYjwwbjwvqldb2YzWWt0lG5aPhTmibmYSRME8CntHTEv1LxtNFajcjMkRWm
z+ssfHNzkzZ02xUNfFwWV6SX0TynEEO85LVtkwysKJOp7B+JZVoZ9Yq1FpDW
ZJC8vaFNm2UpOBGpfRmiRymtEZnyFRtdONpipfvt5M0nRaJKaX8WY/Zc4TIa
cxQC8BPoJXe0TTcJ7Ll1awsvGK8t3G8tDxgGS6+tk7tsOsXP8ZRWmhdurLtc
DxCZwroV2d2al4yym/SWHk5neJpWU6wXVuU2Lxe13pLEt/SSm/Iug6s42sfp
ut3j54+yrEjGNFeEW5fqtSODFs9Y8hqQ5BcP8edNjHfJDnaCI49loTVdJi7V
gabtVi9lwxnbTBu1AL1zoCfenUh/SC7oubP5DUmJP2a1kEvZwF6gkeTiPGdv
AYZLDN9UoXF4DBP1Xrs4mg2JVq2oc5MUa2gEXyEBA7YoUW+fpj5zlI01oDWn
OzEaYvg46A1HPkF5foq5HpYGSxa8l/4qSHOdIrDsttx/T+euKmfJk/MhnndK
P2hz+KPhs9P+Hj7EL/uD5IcbkhjJhGQS6dJ0UmgvxnJSZnT0RnwE6hwUkmPP
Z6RVEjMkQipxwGjTctpoPWDuSNEHfTkBeFM6hlpU8qHDZ2xfQu/MwQFwhFkh
YmrOaZyjrLkDycmS361dYNsWT2NtFuMIVOZFyzsQVjzLJ5NptrHxFQRyRVJq
zPHCDeO1YxdD5YU2/kNye5yR9jEBaafgXfDGLoQ45R4z7mq4oceZGyUJNT1b
HMCmU3BG20Scr+LjB17GdkZ2dQW1im/LEGfHxo7LiogE64ePrxHrKXiPoNBj
lMplQ1UeQ5q7yMcfVibmiLvCCeepFrdZDfGnp2FKZHoqHB+RaTzwjlbXDCM7
wL0vEV61SK96WzaI6CBhZyrR0SSjGxcsaD23iw9kuPk0bJyAZUb22y0yiWgZ
BwiFgL31krzB1nHyAq6TQQtJiFigHS3xqVt5LG24fipmrvKMxCzNfWUJe17P
uC5pjema0SKf8obMShwHGkxFTFM8gbQyvNXxc5ghklHK6Up0sGdLeqSd+pVL
edpXJKeYg9PiEQnCHyc0d3b5vRDOt/iFxp+CCdPyGs9VrsGHhk7xN8lsgYnX
cgOJ97loosk1HG3ptD9fEOGRDOInlwVtEA2xhr1BZ5jTv2qhM5EXPZYKZSlc
YXX0LE7SBFlTkIlNeC+eLFKVT232fpxNvyFWiOOwKBCWlQy7gCLokT2LQmiE
QiP/spl5PaZTB/57nZr8W6+pMNclDbKQ/BPeT+JadNQi2UIilNSQrJCoCF0G
IlBakYnx1t1lEGzEHTqWAZIB00vShk5YndS0Cz1sg13aeIMhndzCLpCRC+XG
0gxrcrVgJtT5Jl3zkPGaAPyE3BvA2zvJx+7Ek1wglVdVLhxjUa/GGnPky9L6
Xc94XnzQFgVypkjSk2JXZddI06BP726E0y+FZkYwoTPPuLDpRL8QQMS6z9/T
rGuEDt2pJRGPLSQODic7zj6tyeY6zYAmt3UJ5dlzks1kC2INHK6mx5JEqkTK
04M3Qw/FZnDTdqjCxvvhxX5INV9jl6vb/Bb6hxDLKkumsQcczEtzVQvSWBK2
NFY92ymSxdL8+qYhwoD/eWVLmHMS565Ysli8mGkFggXrz/qTCnURdLMRmYkW
sDAljccs8qqHTcCe3bLRQFYx81CWYjTnhbvX8WpP5Dmomw0w0zKh6ONxN6LR
snwOeXNbhUxz0bfo0luSI8a+kutFPmGrmjfFNMu7G1KxGrJd/pitETVmY+SV
i9vwkoyxQHjTnCQ4H1tQSc3BZ+YaGDaZgZDUiPSGirdX6pwADfQf03lwl7r/
u5J6SHzCXN2W7QwsvCf0rDzrPyO1e5YK+0MstG6WtNLvhJ+y015WWhcKQqIG
reAX5kpzDqPzHaI669U0Rg5BsiKwbuBt3SwYX1lkxE9OJ/bBdMkiGix6AXJp
HyLJt6Mh1csZHU4EfaL9YV32l+gdZFZdsGoQ6N1lAuMQ2dNyrFP/0mBKW+mU
pNu7orwrsOud9tU2n64pPAOmzIA/q/kHEY+UYfWV2dKFWao1FHUy6efEMhvV
AmZsAzfCyU3ZZzuYJpZiv1juxjw+nSHbU/TSEqw21VSQjncKTagcw692FTFj
UxNh+9RqjzXpO/qSKQa6/QIHMhniNIQWCFaCDQbzD8DaAbObatBG+SD4AP0+
WRDjWupIApuCjsw1XezcWKzYiKKwmNNnE2jj1+y7NvtsXPaz93kt7Mcveib6
WsGB+vjOlBkn0RAsDpjHo+wKGhwfWp4un/8ZzgpWQPTKmWheTressjGrzckr
OnpVhjxCdiYlGrOFxH0qonrVY7j13ZvtIBL0xvssxImyGjYa6tZ8+KAhqI8f
E/FUlWY8yXrALIMmYu4HcfzIo50VbOouj29geewktx4PL1jKMvn7WfGJd7vS
FTfw/PlHDVb8pBtnBySdEsXWsi3fF0iBlvyMmvNM+ZlYSmPjPdKvafQlfS8s
iLXRgMTsQlIV5JCPSTqakoQLiKvAWxbb2KKvqR6CrZ1wns5mwr4k3mJPrd7q
IfYlnqZTzy4it+8WvfTSc4nwO2HgLK+LyKXDfI3DTu6ZMBL9viIVPJ3RSkzL
8btknKsWTBt0A2twrAf65ekZ/TdrxqGr6iqtEk5uvF1MCzU8aSk6DJJYvPKK
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
lyRbpyRkSdlbfwWrI6wsCu9aL3MwikCWK0MuOaQyDTt6MF6WNi2WRuEx2jCJ
/Iv+kwG3Ueqjq1Z/ShZSP5vclOP+Pntknacc8nKa9WHNTwSK20Io7I9k2ZOx
1FDNVgZQKDqnhlBciZ4KH9xxxy7AQDlShLmtVAy4nZcXL88hwtBN6vLbywRm
6XTbOZa1xn+iMh2xjnDSUG9Qemq6zeDTDBoD7OoD9Pw/NHfuZM8vrNdMMpZ3
06494ve3r7R/9bu9HnHQPf3uczn5lxzIL7rSDeVTV/qh3M/NP5OR3s9JVxi6
X+haNpYX+kvWIdqDfezBvn31RQ9hzkqkfP6eRMoe2CrZIF/2kL/FmnzelTTJ
T1z5eQJmnYSxddjHOuxty7vbVypjQntDOiKkgm7rd58rjL6Q+H2Ry6dXaSyD
+ndM/PR/GghtL+DfaCSxxJ7c9FMvsVtsXIT3eikMUQ7/TLvpLeL0AUReqL9L
ODfE24kMguR3df07wdCoci+lIivOY2/idhUCJilFDlj8SCrrr3LxYwq22KfU
Dk3tEWeqCl5Ba1E4ztDqgFjl+rRXJEcvAjkaP/cVw/2aB9awSF0H4xvX00ez
szkNcM3iMESVOiSkgoIp2qISvmxFR+KkO2k5/X6SZxKv0aHRjIqsYTeponXX
uMql+KIt2jznWMGHD55gPn7kyDiUlxbNhKtjDadk3Z+f9zQOGSlrgsbMWdKO
6bfKQdmmdn3+4JLg/mZh4OA2jzQnTd7KLW2Exok9COKgKsAFJASbkeaNM/Zt
ScK144odhi93UdNcwJYC7fJ3xBt/Z5V0efO5+yn5zraV3t0UaJS00M/ixTWF
jpdWW73wJFN37LRcJL+6Z8ghPGJAibkLJAT5+kzhtDiIoirKi8FeSO5BcFCe
POuvWumuSPd/KIL3PDPUee57ptdpZB1Wr+yW2l1XdkvtfxcKa+/zrvzvSw/4
700J/rdQa/pF/ot1G4kU3ifV6xwZJGmRcfMirW7XcP7YStrMS2Eajxj7v1Mn
1fbvRD4VffQhqFCIizzyb1hwue4aHIDmDHfvvQ44tXVJQSeTMC05bDxkQIMm
hwMJyOBFkfRTagMMj6TVZioUgY4UDocrVvXJwZRCpD3PHk0nkwSetMpDoNbU
iVxpiNZU+TyYjCyb1Y+o7JG2uFLt7uUgt6WCGBQNQAHDRqp0tEWj1HbRKLRh
grVGcYIuAEGTNBOXfYRQuuA3I2405njfRNYK+itjrVvpgg5y6Qqgpaq6qbrm
zaVGo6VL263SSdYvr64E3WoVQfDfrUj9Av+lcpW9T3i+//b+y/su9L6Sv6vn
+1NyYtX5vQfv917L/b33Jf5v7ACrB/utHfiSxfzbzOiTF9JUe59ydPwVjvS9
liddCHM7JEW5cB+rvt9a9f3tTsfJGUf2s2qLN4vu3W7rYH9f0sbAP+vCf2vS
3m/thhDpl5H2mh3425H2ahAk7YqC3O9IeZZBaP9udZy/63UnKogqYdd3Zb2s
diVuJKdLUlkiY7TWJDau9ObWlYhgaEoKrorjtm9diWZt+PwyBt9nCi/9Hc7T
n3gjf6cCWa+VYrZbpFbmRZilGjWPZBWi1VfGIedaTUFc/6/GbphLozgNHKQG
xOHFqyf9s7PTfe7mJbJZGg0Y9LePufiUAQfwBj2BExBTnxlHY/erneTh2E7V
iRQnd3LfUls21SMQHffYc6PclVTqhDed+iABqR+fn59fXrz69vvLn4IycUu1
jGP0tr3qzYlKlVxjSleD7xcQ/beZztxgg3xnze63+kC/GkriPuupzriZbZhY
Cwpk1dhlDwQ1ymEf4tDNg8AZvVFKhVrhMfr8/OzJs3MhB90c9GXi4sIY0jGc
ESBbsixczV4c6yPNrOayo/74qrrm8+3u7e8eMsgoQ5sH99BuF+V0upRb3iN2
xjfu7jOcK5pyrGpyEhc16tzYcHT6yJPsFv3m+/hYdZIUaqSTdM52yhmTbP/M
p2iccu75dpwiOvGbSURqZLmaocY5bZKLrLkfLbxGw05x7RyE2FYgfuUo9YPU
EQ9hXUgi8rzKJRWRcUx1u9zs3XgxUKYe9YJJnzEcirPh7p408/3x8bPnuyc/
DYxcrBcqf9lORHTwsyvvou36XjrDpHIiV0eDxDtDg5KALF1JT1uk09oMOR6d
nHRmblWMb9CCSg3wyLwJElp01vpb81UrSeJro9r2FEpdalQWZLgowUQ9WALs
PvEu+6zzTnhOzuZxTawCAAiB5IV8+IwV00LDqeBJmlm4VKxDqVwhMaGJ7JJL
JY5i2vKL87dP+7dZ05iD0bzDnCYWdWPWisuUAcAKbz7SaxCSGPjRifiyGiiu
SMivbyDhRmll9nt3XqBLo2OCnGVZ0y5XyG0DFMsM2QfIOR7wXNxmaGMibSin
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
FonDre3YYwbHkQMoZNOyBCQ8A0JDd+K3dDjY/TkM2y6mrcvgyy1QUjBAN28U
FLhkploYSYASvVJkUCxmEjTg1kV12IbPqn9yabEtidRXHEdxqUV15BboHr8E
jHSQoReVrXd4bBnanZWn+lHyFBTdi6xO3SVpFlXPobxaq3k3V14i4jkM8i0u
dKc6B+CcbuDSgaGa9MflJGs3oGjlcORRwwr2MYIh6573xGmlL9U+zM2Na4ca
BrEsWCqWfs9XpYXTjYI+3DO7LKDoT6RZd5VKF3FGbsU5QFKGReaCyoeGdTgd
Fq81u5U1VuIXwifWBWNA463VvntxdMygRfyjVmMXrnxFMuVCFtHnFhIIfeJg
tFDyDZUWeQCLppxxTKXjmqVrpLax8cpomUF4K9beHMtssWon0BCRHSsm+aep
AXmRjESb4EK34jlUaYSjKuF4vg+c74rUOfjgNGi/KWY/qhZ4rmm9AoyNZ8Vt
TkKSbUsR7ZraFeUOxygyj5LHdIXr+PdtOk8eazuWe8swAu2AdIXLNblOkl9r
HRad9a74hlUWtiHmlA4RYEv5j6uqYVVHI2XOSIALfZLNpe1S3Swm7EzsrkoS
VIO29swSUROtwtdrzRmrgN5Xga1AM/COqhzNcQPfJz0N3QYFaFTDjp0lQ3c8
eelCDLhkNvMsK7vn+r+jO0a5FHcBTHhTJKqMv15T/aWt0qvsejGVvgPcFRsO
Igi/MIzx9OJyKGV/qPo7eoCqPwBen10EbGNglBRV8Zky572CPklGDajPqZrh
VI1W+MrhcYvSY9VTmYa1NePchTtRLIpisJlz55J0SNEw1Hu43ZjYwVJkYZaR
GDwgNe1sh3yxsminIst+et4C5ZltpuJRiNIDTpM30kK84PjabZ08eSbB5QBY
SFsaWDsZXJjXK119rMsuB8iLd1pRvVpQ4eKd2oYAnCOF0GT2NLP2i62eqWHn
wba7Mk1cGa94RjwSR1SMGV8lBQOTeHjsaXqq0K1vspSZ3/9MvymEN6+lff6C
5NnGFjI45G/kBQySH4eZhDVC1vOT83EXJfTH8c2AVn+nlktlruhPV+aFlUqx
pp432juVsxL+/8auprdNIIje/StWuVky5dBbpEhtYyWK3KqOaOtDTmAvZAUG
y8S12v75vvdmMUTKIUdglx2G3fl6szu2V6EdFBjHN9SekUVphk2ow4HbdGEH
MxV8Hmv2RhNk+iGJe/p+gLwaJGeWl34kE63bKCh7PFAkfh5VxtHsGH3zUwXi
TsXY0a71dXzHIG0TvmXOQdePPx/WbnMvdkWTfgitjyk5ysefAJzcxPDmIEKA
zpWBQKlq7yZdeYFz+wQ04+F2bqemYbKF4kQbxKY5E6E7goTS/Zpe9PK2TAWB
XhyKDBkyGEvJyEvs/b6g4lQOmI4Fs0roYK+BWBbkHA7IHVtMihWVhvtO2tI8
8zHQLbhf0iSe96vtQAywRS1+KUlBVX2x5+TrHLhTUSlsqqreKcdap9yLr/LC
bT+Xrdh9YDzWKreMeL0lJb+HRVZnR6wdPGWxbNdtTxIwxZ+YTTckw4zAUH89
mznnVjAV3Ooc8pe6O/d10M31Y/bMcwsW7uuPpe5EOGKFd+w61prBvRpdP8Hr
aysxlvNC5Rk+jzRKM83+XVvmlN/dXJUY2V+p/sKU0Bh2p99E2aff+8a0O+Sn
xj/DfIUESqeJvUqyl+PhsZDToumKlOZ9ijn4+tmHvUFJbS1+LaGaN4Ki7hgq
5/9eLvAc429CVclIzgi15+7+COcbMjm5BREgADJwnUOwuBV0JeRDzb3JX7C2
s4/sU6LLrW/Cwn3zDfw11gLwFJ1odZc3decyZp/9rT1VXzjuYE9gpbTdpRIO
aMNfcL9yojpUk4OLP85cYte/QzROrJAErbv/hp0rX6pjAQA=

-->

</rfc>
