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

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>Quantum computing is no longer perceived as a consequence of computational sciences and theoretical physics. Considerable research efforts and enormous corporate and government funding for the development of practical quantum computing systems are currently being invested. At the time 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 precise date of emergence of a CRQC is a challenging task, and there is ongoing uncertainty regarding when they will become practically feasible.</t>
      <t>Extensive research has produced several "post-quantum cryptographic (PQC) algorithms" (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. As the possibility of Cryptographically Relevant Quantum Computers (CRQCs) draws nearer, engineers responsible for designing, maintaining, and securing cryptographic systems must prepare for the significant changes that CRQCs will bring. Engineers need to understand how to implement post-quantum algorithms in applications, how to evaluate the trade-offs between security and performance, and how to ensure backward compatibility with current systems where needed. This is not merely a one-for-one replacement of algorithms; in many cases, the shift to PQC will involve redesigning protocols and infrastructure to accommodate the significant differences in resource utilization and key sizes between traditional and PQC algorithms. This document aims to provide general guidance to engineers working on cryptographic libraries, network security, and infrastructure development, where long-term security planning is crucial. 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 National Security Agency (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. German Federal Office for Information Security (BSI) has also released a PQC migration and recommendations document <xref target="BSI-PQC"/> which largely aligns with United States National Institute of Standards and Technology (NIST) and NSA guidance, but does differ on some of the guidance.</t>
      <t>It is important to note that CRQCs pose a threat to both symmetric and asymmetric cryptographic schemes. However, the threat to asymmetric cryptography is significantly greater due to Shor's algorithm, which can break widely-used public key schemes like RSA and ECC. Symmetric cryptography and hash functions also face some risk from Grover's algorithm, although the impact is less severe and can typically be mitigated by doubling key lengths. It is crucial for the reader to understand that when the word "PQC" is mentioned in the document, it means Asymmetric Cryptography (or Public key Cryptography) and not any algorithms from the Symmetric side based on stream, block ciphers, hash functions, MACs, etc, which are less vulnerable to quantum computers. This document does not cover such topics as when traditional algorithms might become vulnerable (for that, see documents such as <xref target="QC-DNS"/> and others).  It also does not cover unrelated technologies like Quantum Key Distribution 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?>

<t>Post-Quantum Cryptography (PQC) sometimes referred to as quantum-proof, quantum-safe, or quantum-resistant, is the development of cryptographic algorithms designed to secure communication and data in a world where quantum computers are powerful enough to break traditional cryptographic systems, such as RSA and ECC. These algorithms are intended to be resistant to attacks by quantum computers, which use quantum-mechanical phenomena to solve mathematical problems that are infeasible for classical computers.</t>
    </section>
    <section anchor="threat-of-crqcs-on-cryptography">
      <name>Threat of CRQCs on Cryptography</name>
      <t>When considering the security risks associated with the ability of a quantum computer to attack traditional cryptography, it is important to distinguish between the impact on symmetric algorithms and public-key ones. Dr. Peter Shor and Dr. Lov Grover developed two algorithms that changed the way the world thinks of security under the presence of a CRQC.</t>
      <t>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 traditional 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. The National Agency for the Security of Information Systems (ANSSI), on the other hand, advocates for a more cautious approach and recommends the use of AES-256 <xref target="ANSSI"/>.</t>
      </section>
      <section anchor="asymmetric-cryptography">
        <name>Asymmetric cryptography</name>
        <t>“Shor’s algorithm” 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 traditional cryptography (see Shor's Algorithm). Because an increase of the size of the key-pair would not provide a secure solution short of RSA keys that are many gigabytes in size <xref target="PQRSA"/>, a complete replacement of the algorithm is needed. Therefore, post-quantum public-key cryptography must rely on problems that are different from the ones used in traditional public-key cryptography (i.e., the integer factorization problem, the finite-field discrete logarithm problem, and the elliptic-curve discrete logarithm problem).</t>
      </section>
      <section anchor="quantum-side-channel-attacks">
        <name>Quantum side-channel attacks</name>
        <t>The field of cryptographic side-channel attacks potentially stands to gain a boost in attacker power once cryptanalytic techniques can be enhanced with quantum computation techniques. While a full discussion of quantum side-channel techniques is beyond the scope of this document, implementers of cryptographic hardware should be aware that current best-practices for side-channel resistance may not be sufficient against quantum adversaries.</t>
      </section>
    </section>
    <section anchor="traditional-cryptographic-primitives-that-could-be-replaced-by-pqc">
      <name>Traditional Cryptographic Primitives that Could Be Replaced by PQC</name>
      <t>Any asymmetric cryptographic algorithm based on integer factorization, finite field discrete logarithms or elliptic curve discrete logarithms will be vulnerable to attacks using Shor's Algorithm on a sufficiently large general-purpose quantum computer, known as a CRQC. This document focuses on the principal functions of asymmetric cryptography:</t>
      <ul spacing="normal">
        <li>
          <t>Key Agreement and Key Transport:  Key Agreement schemes, typically referred to as Diffie-Hellman (DH) or Elliptic Curve Diffie-Hellman (ECDH), as well as Key Transport, typically using RSA Encryption, are used to establish a shared cryptographic key for secure communication. They are one of the mechanisms that can be replaced by PQC, as this is based on public key cryptography and is therefore vulnerable to the Shor's algorithm. A CRQC can employ Shor's algorithm to efficiently find the prime factors of a large public key (in case of RSA), which in turn can be exploited to derive the private key. In the case of Diffie-Hellman, a CRQC has the potential to calculate the exponent or discrete logarithm of the (short or long-term) Diffie-Hellman public key. This, in turn, would reveal the precise secret required to derive the symmetric encryption key.</t>
        </li>
        <li>
          <t>Digital Signatures: Digital Signature schemes are used to authenticate the identity of a sender, detect unauthorized modifications to data and underpin trust in a system. Similar to Key Agreement, signatures also depend on a public-private key pair based on the same mathematics as for Key Agreement and Key Transport, and hence a break in public key cryptography will also affect traditional digital signatures, hence the importance of developing post-quantum digital signatures.</t>
        </li>
        <li>
          <t>BBS Signatures: BBS (Boneh-Boyen-Shacham) signatures are a privacy-preserving signature scheme that offers zero-knowledge proof-like properties by allowing selective disclosure of specific signed attributes without revealing the entire set of signed data. BBS signatures rely on the discrete logarithm problem, making them vulnerable to quantum attacks. A CRQC can break the data authenticity security property of BBS but not the data confidentiality (Section 6.9 of <xref target="I-D.irtf-cfrg-bbs-signatures"/>).</t>
        </li>
        <li>
          <t>Content Encryption: Content encryption typically refers to the encryption of the data using symmetric key algorithms, such as AES, to ensure confidentiality. The threat to symmetric cryptography is discussed in <xref target="symmetric"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="invariants-of-post-quantum-cryptography-necessitating-compliance-adjustments">
      <name>Invariants of Post-Quantum Cryptography: Necessitating Compliance Adjustments</name>
      <t>In the context of PQC, symmetric-key cryptographic algorithms are generally not directly impacted by quantum computing advancements. Symmetric-key cryptography, which includes keyed primitives such as block ciphers (e.g., AES) and message authentication mechanisms (e.g., HMAC-SHA2), rely on secret keys shared between the sender and receiver. Symmetric cryptography also includes hash functions (e.g., SHA-256) that are used for secure message digesting without any shared key material. HMAC is a specific construction that utilizes a cryptographic hash function (such as SHA-2) and a secret key shared between the sender and receiver to produce a message authentication code.</t>
      <t>CRQCs, in theory, do not offer substantial advantages in breaking symmetric-key algorithms compared to classical computers, meaning that current symmetric algorithms can continue to be used with potentially straightforward increases to key size to stay ahead of quantum-boosted brute-forcing attacks (see <xref target="symmetric"/> for more details). Furthermore, for compliance purposes, such as meeting the standards of CNSA 2.0 (Commercial National Security Algorithm Suite 2.0) <xref target="CNSA2-0"/>, AES-256 must be used to ensure the highest level of security against both classical and quantum threats.</t>
    </section>
    <section anchor="nist-pqc-algorithms">
      <name>NIST PQC Algorithms</name>
      <t>The first three final NIST PQC algorithms (<xref target="NISTFINAL"/>) are not a drop-in replacement for traditional asymmetric cryptographic algorithms. For instance, RSA <xref target="RSA"/> and ECC <xref target="RFC6090"/> can be used as both a key encapsulation method (KEM) and as a signature scheme, whereas there is currently no post-quantum algorithm that can perform both functions. When upgrading protocols, it is important to replace the existing use of traditional algorithms with either a PQC KEM or a PQC signature method, depending on how the traditional algorithm was previously being used. Additionally, KEMs, as described in 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="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 they hope to decrypt once a CRQC is available. This implies that, every day, sensitive encrypted data is susceptible to the attack by not implementing quantum-safe strategies, as it corresponds to data possibly being deciphered in the future.</t>
      <t>For authentication, it is often the case that signatures have a very short lifetime between signing and verifying -- such as during a TLS handshake -- but some authentication use-cases do require long lifetimes, such as signing firmware or software that will be active for decades, signing legal documents, or signing certificates that will be embedded into hardware devices such as smartcards. Even for short-lived signatures use cases, the infrastructure often relies on long-lived root keys which can be difficult to update or replace on in-field devices.</t>
      <figure anchor="Mosca">
        <name>Mosca model</name>
        <artwork><![CDATA[
+------------------------+----------------------------+
|                        |                            |
|           y            |             x              |
+------------------------+----------+-----------------+
|                                   | <--------------->
|               z                   |   Security gap
+-----------------------------------+

]]></artwork>
      </figure>
      <t>These challenges are illustrated nicely by the so-called Mosca model discussed in ​<xref target="Threat-Report"/>. In the <xref target="Mosca"/>, "x" denotes the time that 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 we are preparing our IT systems during those "y" years (in other words, how one can minimize those "y" years) to minimize the transition phase to a PQC infrastructure and hence minimize the risks of data being exposed in the future.</t>
      <t>Finally, other factors that could accelerate the introduction of a CRQC should not be under-estimated, like for example faster-than-expected advances in quantum computing and more efficient versions of Shor’s algorithm requiring fewer qubits. Innovation often comes in waves, so it is to the industry’s benefit to remain vigilant and prepare as early as possible. Bear in mind also that while 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 as well as of the readers which can come in many form-factors: tap-for-entry door and turnstile readers, PIN pad machines, laptops with built-in smartcard readers, and many others. Included in "y" is not only the deployment time, but also preparation time: integration, testing, auditing, and re-certification of cryptographic environments. Consider also upstream effects that contribute to "y", including lead-times for your vendors to produce PQC-ready products, which may itself include auditing and certification delays, time for regulating bodies to adopt PQC policies, time for auditors to become familiar with the new requirements, etc. If you measure the full migration time "y" from when your vendors begin implementing PQC functionality, to when you switch off your last non-PQC-capable device, then "y" can be quite long; likely measured in years or decades for even most moderately-sized organizations.</t>
    </section>
    <section anchor="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, non-orthogonal vectors). Although the problem might seem trivial, it is computationally hard when considering many dimensions, or when the underlying field is not simple numbers, but high-order polynomials. Therefore, a typical approach is to use "bad" bases for public keys and "good" bases for private keys. The public keys ("bad" bases) let you easily verify signatures by checking, for example, that a vector is the closest or smallest, but do not let you solve the problem (i.e., finding the vector) that would yield the private key. Conversely, private keys (i.e., the "good" bases) can be used for generating the signatures (e.g., finding the specific vector).</t>
        <t>Lattice-based schemes usually have good performances and average size public keys and signatures (average within the PQC primitives at least; they are still several orders of magnitude larger than e.g., RSA or ECC signatures), making them the best available candidates for general-purpose use such as replacing the use of RSA in PKIX certificates.</t>
        <t>Examples of this class of algorithms include ML-KEM, FN-DSA and ML-DSA.</t>
        <t>It is noteworthy that lattice-based encryption schemes require a rounding step during decryption which has a non-zero probability of "rounding the wrong way" and leading to a decryption failure, meaning that valid encryptions are decrypted incorrectly; as such, an attacker could significantly reduce the security of lattice-based schemes that have a relatively high failure rate. However, for most of the NIST 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 may ultimately enable signature forgery attacks against that key.</t>
        <t>Stateful hash-based signatures with long service lifetimes require additional operational complexity compared with other signature types. For example, consider a 20-year root key; there is an expectation that 20 years is longer than the expected lifetime of the hardware that key is stored on, and therefore the key will need to be migrated to new hardware at some point. Disaster-recovery scenarios where the primary node fails without warning can be similarly tricky. This requires careful operational and compliance consideration to ensure that no private key state can be re-used across the migration or disaster recovery event. One approach for avoiding these issues is to only use stateful HBS for short-term use cases that do not require horizontal scaling, for example signing a batch of firmware images and then retiring the signing key.</t>
        <t>The SLH-DSA algorithm 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, or (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 from 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 a redesign to accommodate this distinction, either by introducing extra network round-trips or by making trade-offs in security properties.</t>
          <figure anchor="tab-kem-ake">
            <name>KEM based 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, where one is ML-KEM and the other is ECDHE. For a more thorough discussion of KEM combiners, see <xref target="KEEPINGUP"/>, <xref target="I-D.draft-ounsworth-cfrg-kem-combiners-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 (INDistinguishability under adaptive Chosen-Ciphertext Attack) is an advanced security notion for encryption schemes. It ensures the confidentiality of the plaintext and resistance against chosen-ciphertext attacks. An appropriate definition of IND-CCA2 security for KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>. ML-KEM <xref target="ML-KEM"/> and Classic McEliece provide IND-CCA2 security.</t>
          <t>Understanding IND-CCA2 security is essential for individuals involved in designing or implementing cryptographic systems and protocols in order to evaluate the strength of the algorithm, assess its suitability for specific use cases, and ensure that data confidentiality and security requirements are met. Understanding IND-CCA2 security is generally not necessary for developers migrating to using an IETF-vetted key establishment method (KEM) within a given protocol or flow. IND-CCA2 is considered the highest bar that a public key encryption mechanism can meet, and therefore is suitable for all uses. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and not rely on implementers being experts in cryptographic theory.</t>
        </section>
        <section anchor="binding">
          <name>Binding</name>
          <t>KEMs also have an orthogonal set of properties to consider when designing protocols around them: binding <xref target="KEEPINGUP"/>. This can be "ciphertext binding", "public key binding", "context binding", or any other property that is important to not be substituted between KEM invocations. In general, a KEM is considered to bind a certain value if substitution of that value by an attacker will necessarily result in a different shared secret being derived. As an example, if an attacker can construct two different ciphertexts which will decapsulate to the same shared secret; or can construct a ciphertext which will decapsulate to the same shared secret under two different public keys, or can substitute whole KEM exchanges from one session into another, then the construction is not ciphertext binding, public key binding, or context binding respectively. Similarly, protocol designers may wish to bind protocol state information such as a transaction ID or nonce so that attempts to replay ciphertexts from one session inside a different session will be blocked at the cryptographic level because the server derives a different shared secret and is thus is unable to decrypt the content.</t>
          <t>The solution to binding is generally achieved at the protocol design level: it is recommended not to use the KEM output shared secret directly. Even though modern KEMs such as ML-KEM produce full-entropy shared secrets, it is still advisable for binding reasons to pass it through a key derivation function (KDF) and also include all values that you wish to bind; then finally you will have a shared secret that is safe to use at the protocol level.</t>
        </section>
      </section>
      <section anchor="hpke">
        <name>HPKE</name>
        <t>Modern cryptography has long used the notion of "hybrid encryption" where an asymmetric algorithm is used to establish a key, and then a symmetric algorithm is used for bulk content encryption.</t>
        <t>HPKE (Hybrid Public Key Encryption) <xref target="RFC9180"/> is a specific instantiation of this which works with a combination of KEMs, KDFs and AEAD 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 a 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 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 traditional signature schemes like RSA or ECDSA. Applications that expect a long lifetime of a signature, like firmware update or secure boot, are typical use cases where those schemes can be successfully applied.</t>
        <section anchor="lms-scheme-key-and-signature-sizes">
          <name>LMS scheme - key and signature sizes</name>
          <t>The LMS scheme is characterized by four distinct parameter sets - the underlying hash function (SHA2-256 or SHAKE-256), the length of the digest (24 or 32 bytes), LMS tree height - parameter that controls a maximal number of signatures that the private key can produce (possible values are 5,10,15,20,25), and the width of the Winternitz coefficients (see <xref target="RFC8554"/>, section 4.1) that can be used to trade-off signing time for signature size (possible values are 1,2,4,8). Parameters can be mixed, providing 80 possible 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 table below provides key and signature sizes for parameterization with the digest size M=32 of the scheme.</t>
          <table>
            <thead>
              <tr>
                <th align="left">PK</th>
                <th align="left">SK</th>
                <th align="left">W</th>
                <th align="left">H=5</th>
                <th align="left">H=10</th>
                <th align="left">H=15</th>
                <th align="left">H=20</th>
                <th align="left">H=25</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">1</td>
                <td align="left">8684</td>
                <td align="left">8844</td>
                <td align="left">9004</td>
                <td align="left">9164</td>
                <td align="left">9324</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">2</td>
                <td align="left">4460</td>
                <td align="left">4620</td>
                <td align="left">4780</td>
                <td align="left">4940</td>
                <td align="left">5100</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">4</td>
                <td align="left">2348</td>
                <td align="left">2508</td>
                <td align="left">2668</td>
                <td align="left">2828</td>
                <td align="left">2988</td>
              </tr>
              <tr>
                <td align="left">56</td>
                <td align="left">52</td>
                <td align="left">8</td>
                <td align="left">1292</td>
                <td align="left">1452</td>
                <td align="left">1612</td>
                <td align="left">1772</td>
                <td align="left">1932</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="hash-then-sign">
        <name>Hash-then-Sign</name>
        <t>Within the hash-then-sign paradigm, the message is hashed before signing it. By pre-hashing, the onus of resistance to existential forgeries becomes heavily reliant on the collision-resistance of the hash function in use. The hash-then-sign paradigm has the ability to improve application performance by reducing the size of signed messages that need to be transmitted between application and cryptographic module, and making the signature size predictable and manageable. As a corollary, hashing remains mandatory even for short messages and assigns a further computational requirement onto the verifier.  This makes the performance of hash-then-sign schemes more consistent, but not necessarily more efficient. Using a hash function to produce a fixed-size digest of a message ensures that the signature is compatible with a wide range of systems and protocols, regardless of the specific message size or format. Crucially for hardware security modules, Hash-then-Sign also significantly reduces the amount of data that needs to be transmitted and processed by a hardware security module. Consider scenarios such as a networked HSM located in a different data center from the calling application or a smart card connected over a USB interface. In these cases, streaming a message that is megabytes or gigabytes long can result in notable network latency, on-device signing delays, or even depletion of available on-device memory.</t>
        <t>Note that the vast majority of Internet protocols that sign large messages already perform some form of content hashing at the protocol level, so this tends to be more of a concern with proprietary cryptographic protocols, and protocols from non-IETF standards bodies. Protocols like TLS 1.3 and DNSSEC use the Hash-then-Sign paradigm. In TLS 1.3 <xref target="RFC8446"/> CertificateVerify messages, the content that is covered under the signature includes the transcript hash output (Section 4.4.1 of <xref target="RFC8446"/>), while DNSSEC <xref target="RFC4033"/> uses it to provide origin authentication and integrity assurance services for DNS data. Similarly, the Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> includes a mandatory message digest step before invoking the signature algorithm.</t>
        <t>In the case of ML-DSA, it internally incorporates the necessary hash operations as part of its signing algorithm. ML-DSA directly takes the original message, applies a hash function internally, and then uses the resulting hash value for the signature generation process. In the case of SLH-DSA, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In the case of FN-DSA, the SHAKE-256 hash function is used as part of the signature process to derive a digest of the message being signed. Therefore, ML-DSA, FN-DSA, and SLH-DSA offer enhanced security over the traditional Hash-then-Sign paradigm because by incorporating dynamic key material into the message digest, a pre-computed hash collision on the message to be signed no longer yields a signature forgery. Applications requiring the performance and bandwidth benefits of Hash-then-Sign may still pre-hash at the protocol level prior to invoking ML-DSA, FN-DSA, or SLH-DSA, but protocol designers should be aware that doing so re-introduces the weakness that hash collisions directly yield signature forgeries. Signing the full un-digested message is recommended where applications can tolerate it.</t>
      </section>
    </section>
    <section anchor="RecSecurity">
      <name>Recommendations for Security / Performance Tradeoffs</name>
      <t>The table below denotes the 5 security levels provided by NIST for PQC algorithms. Neither NIST nor the IETF make any specific recommendations about which security level to use. In general, protocols will include algorithm choices at multiple levels so that users can choose the level appropriate to their policies and data classification, similar to how organizations today choose which size of RSA key to use. The security levels are defined as requiring computational resources comparable to or greater than an attack on AES (128, 192 and 256) and SHA2/SHA3 algorithms, i.e., exhaustive key recovery for AES and optimal collision search for SHA2/SHA3. This information is a re-print of information provided in the NIST PQC project <xref target="NIST"/> as of time 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 the fast (f) 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 and private key sizes, and ciphertext sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256_HKDF_SHA-256</td>
            <td align="left">65</td>
            <td align="left">32</td>
            <td align="left">65</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P521_HKDF_SHA-512</td>
            <td align="left">133</td>
            <td align="left">66</td>
            <td align="left">133</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">X25519_HKDF_SHA-256</td>
            <td align="left">32</td>
            <td align="left">32</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1568</td>
          </tr>
        </tbody>
      </table>
      <t>The next table compares traditional vs. PQC Signature schemes in terms of security, public, private key sizes, and signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">RSA2048</td>
            <td align="left">256</td>
            <td align="left">256</td>
            <td align="left">256</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256</td>
            <td align="left">64</td>
            <td align="left">32</td>
            <td align="left">64</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">ML-DSA-44</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-DSA-65</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3293</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-DSA-87</td>
            <td align="left">2592</td>
            <td align="left">4864</td>
            <td align="left">4627</td>
          </tr>
        </tbody>
      </table>
      <t>As one can clearly observe from the above tables, leveraging a PQC KEM/Signature significantly increases the key sizes and the ciphertext/signature sizes compared to traditional KEM(KEX)/Signatures. But the PQC algorithms do provide the additional security level in case there is an attack from a CRQC, whereas schemes based on prime factorization or discrete logarithm problems (finite field or elliptic curves) would provide no level of security at all against such attacks.</t>
      <t>These increased key and signatures sizes could introduce problems in protocols. As an example, IKEv2 uses UDP as the transport for its messages. One challenge with integrating PQC key exchange into the initial IKEv2 exchange is that IKE fragmentation cannot be utilized. To address this issue, <xref target="RFC9242"/> introduces a solution by defining a new exchange called the 'Intermediate Exchange' which can be fragmented using the IKE fragmentation mechanism. <xref target="RFC9370"/> then uses this Intermediate Exchange to carry out the PQC key exchange after the initial IKEv2 exchange and before the IKE_AUTH exchange. Another example from <xref target="SP-1800-38C"/> section 6.3.3 shows that increased key and signature sizes cause protocol key exchange messages to span more network packets, therefore it results in a higher total loss probability per packet. In lossy network conditions this may increase the latency of the key exchange.</t>
    </section>
    <section anchor="post-quantum-and-traditional-hybrid-schemes">
      <name>Post-Quantum and Traditional Hybrid Schemes</name>
      <t>The migration to PQC is unique in the history of modern digital cryptography in that neither the traditional algorithms nor the post-quantum algorithms are fully trusted to protect data for the required lifetimes. The traditional algorithms, such as RSA and elliptic curve, will fall to quantum cryptanalysis, while the post-quantum algorithms face uncertainty about the underlying mathematics, compliance issues, unknown vulnerabilities, and hardware and software implementations that have not had sufficient maturing time to rule out 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 scheme for protocols like TLS 1.3 <xref target="I-D.ietf-tls-hybrid-design"/> is IND-CCA2 robustness, that is IND-CCA2 security is guaranteed for the scheme as long as at least one of the component algorithms is IND-CCA2 secure.</t>
      </section>
      <section anchor="pqt-hybrid-authentication">
        <name>PQ/T Hybrid Authentication</name>
        <t>The PQ/T Hybrid Authentication property can be utilized in scenarios where an on-path attacker possesses network devices equipped with CRQCs, capable of breaking traditional authentication protocols, or where an attacker can attack long-lived authenticated data such as CA certificates or signed software images. This property ensures authentication through a PQ/T hybrid scheme or a PQ/T hybrid protocol, as long as at least one component algorithm remains secure to provide the intended security level. For instance, a PQ/T hybrid certificate 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 to determine whether and when to support the PQ/T Hybrid Authentication property.</t>
      </section>
      <section anchor="hybrid-cryptographic-algorithm-combinations-considerations-and-approaches">
        <name>Hybrid Cryptographic Algorithm Combinations: Considerations and Approaches</name>
        <section anchor="hybrid-cryptographic-combinations">
          <name>Hybrid Cryptographic Combinations</name>
          <t>It is also possible to use more than two algorithms together in a hybrid scheme, with various methods for combining them. For post-quantum transition purposes, the combination of a post-quantum algorithm with a traditional algorithm is the most straightforward and recommended. The use of multiple post-quantum algorithms with different mathematical bases has also been considered. Combining algorithms in a way that requires both to be used together ensures stronger security, while combinations that do not require both will sacrifice security but offer other benefits like backwards compatibility and crypto agility. Including a traditional key alongside a post-quantum key often has minimal bandwidth impact.</t>
        </section>
        <section anchor="composite-keys-in-hybrid-schemes">
          <name>Composite Keys in Hybrid Schemes</name>
          <t>When combining keys in an "and" mode, it may make more sense to consider them to be a single composite key, instead of two keys.  This generally requires fewer changes to various components of PKI ecosystems, many of which are not prepared to deal with two keys or dual signatures.  To those protocol- or application-layer parsers, a "composite" algorithm composed of two "component" algorithms is simply a new algorithm, and support for adding new algorithms generally already exists.  Treating multiple "component" keys as a single "composite" key also has security advantages such as preventing cross-protocol reuse of the individual component keys and guarantees about revoking or retiring all component keys together at the same time, especially if the composite is treated as a single object all the way down into the cryptographic module.  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 trend in protocols is to only allow a small number of "known good" configurations that make sense, often referred to in cryptography as a "ciphersuite", instead of allowing arbitrary combinations of individual configuration choices that may interact in dangerous ways.  The current consensus is that the same approach should be followed for combining cryptographic algorithms, and that "known good" pairs should be explicitly listed ("explicit composite"), instead of just allowing arbitrary combinations of any two crypto algorithms ("generic composite").</t>
          <t>The same considerations apply when using multiple certificates to transport a pair of related keys for the same subject.  Exactly how two certificates should be managed in order to avoid some of the pitfalls mentioned above is still an active area of investigation.  Using two certificates keeps the certificate tooling simple and straightforward, but in the end simply moves the problems with requiring that both certs are intended to be used as a pair, must produce two signatures which must be carried separately, and both must validate, to the certificate management layer, where addressing these concerns in a robust way can be difficult.</t>
          <t>At least one scheme has been proposed that allows the pair of certificates to exist as a single certificate when being issued and managed, but dynamically split into individual certificates when needed (<xref target="I-D.draft-bonnell-lamps-chameleon-certs"/>.</t>
        </section>
        <section anchor="key-reuse-in-hybrid-schemes">
          <name>Key Reuse in Hybrid Schemes</name>
          <t>An important security note when using particularly hybrid signature keys, but also to a lesser extent hybrid KEM keys, is key re-use. In traditional cryptography, problems can occur with so-called "cross-protocol attacks" when the same key can be used for multiple protocols; for example signing TLS handshakes and signing S/MIME emails. While it is not best-practice to re-use keys within the same protocol, for example using the same key for multiple S/MIME certificates for the same user, it is not generally catastrophic for security. However, key re-use becomes a large security problem within hybrids. Consider an {RSA, ML-DSA} hybrid key where the RSA key also appears within a single-algorithm certificate. In this case, an attacker could perform a "stripping attack" where they take some piece of data signed with the {RSA, ML-DSA} key, remove the ML-DSA signature and present the data as if it was intended for the RSA only certificate. This leads to a set of security definitions called "non-separability properties", which refers to how well the signature scheme resists various complexities of downgrade / stripping attacks <xref target="I-D.draft-ietf-pquip-hybrid-signature-spectrums"/>. Therefore, it is recommended that implementers either reuse the entire hybrid key as a whole, or perform fresh keygens of all component keys per usage, and must not take an existing key and reuse it as a component of a hybrid.</t>
        </section>
        <section anchor="jurisdictional-fragmentation">
          <name>Jurisdictional Fragmentation</name>
          <t>Another potential application of hybrids bears mentioning, even though it is not directly PQC-related. That is using hybrids to navigate inter-jurisdictional cryptographic connections. Traditional cryptography is already fragmented by jurisdiction: consider that while most jurisdictions support Elliptic Curve Diffie-Hellman, those in the United States will prefer the NIST curves while those in Germany will prefer the brainpool curves. China, Russia, and other jurisdictions have their own national cryptography standards. This situation of fragmented global cryptography standards is unlikely to improve with PQC. If "and" mode hybrids become standardized for the reasons mentioned above, then one could imagine leveraging them to create "ciphersuites" in which a single cryptographic operation simultaneously satisfies the cryptographic requirements of both endpoints.</t>
        </section>
        <section anchor="future-directions-and-ongoing-research">
          <name>Future Directions and Ongoing Research</name>
          <t>Many aspects of hybrid cryptography are still under investigation. LAMPS WG at IETF is actively exploring the security properties of these combinations, and future standards will reflect the evolving consensus on these issues.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="cryptanalysis">
        <name>Cryptanalysis</name>
        <t>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"/>. An evolving threat landscape points to the fact that lattice based cryptography is indeed more vulnerable to side-channel attacks as in <xref target="SideCh"/>, <xref target="LatticeSide"/>. Consequently, there were some mitigation techniques for side channel attacks that have been proposed as in <xref target="Mitigate1"/>, <xref target="Mitigate2"/>, and <xref target="Mitigate3"/>.</t>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>Cryptographic agility is recommended for both 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 is recommended to enhance security against the "Harvest Now, Decrypt Later" attack. Additionally, hybrid signatures provide for time to react in the case of the announcement of a devastating attack against any one algorithm, while not fully abandoning traditional cryptosystems.</t>
      </section>
      <section anchor="caution-ciphertext-commitment-in-kem-vs-dh">
        <name>Caution: Ciphertext commitment in KEM vs DH</name>
        <t>The ciphertext generated by a KEM is not necessarily directly linked to the shared secret it produces. KEMs allow for multiple ciphertexts to encapsulate the same shared secret, which enables flexibility in key management without enforcing a strict one-to-one correspondence between ciphertexts and shared secrets. This can be useful in scenarios where reusing the same shared secret is necessary for operational reasons. In contrast, cryptographic schemes like Diffie-Hellman inherently link the public key to the derived shared secret, meaning any change in the public key results in a different shared secret.</t>
      </section>
    </section>
    <section anchor="further-reading-resources">
      <name>Further Reading &amp; Resources</name>
      <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="KEEPINGUP" target="https://eprint.iacr.org/2023/1933">
          <front>
            <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NISTFINAL" target="https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards">
          <front>
            <title>NIST Releases First 3 Finalized Post-Quantum Encryption Standards</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ANSSI" target="https://cyber.gouv.fr/sites/default/files/document/follow_up_position_paper_on_post_quantum_cryptography.pdf">
          <front>
            <title>ANSSI views on the Post-Quantum Cryptography transition</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.irtf-cfrg-bbs-signatures">
          <front>
            <title>The BBS Signature Scheme</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Vasilis Kalos" initials="V." surname="Kalos">
              <organization>MATTR</organization>
            </author>
            <author fullname="Andrew Whitehead" initials="A." surname="Whitehead">
              <organization>Portage</organization>
            </author>
            <author fullname="Mike Lodder" initials="M." surname="Lodder">
              <organization>CryptID</organization>
            </author>
            <date day="23" month="September" year="2024"/>
            <abstract>
              <t>   This document describes the BBS Signature scheme, a secure, multi-
   message digital signature protocol, supporting proving knowledge of a
   signature while selectively disclosing any subset of the signed
   messages.  Concretely, the scheme allows for signing multiple
   messages whilst producing a single, constant size, digital signature.
   Additionally, the possessor of a BBS signatures is able to create
   zero-knowledge, proofs-of-knowledge of a signature, while selectively
   disclosing subsets of the signed messages.  Being zero-knowledge, the
   BBS proofs do not reveal any information about the undisclosed
   messages or the signature it self, while at the same time,
   guarantying the authenticity and integrity of the disclosed messages.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-bbs-signatures-07"/>
        </reference>
        <reference anchor="RFC6090">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="K. Igoe" initials="K." surname="Igoe"/>
            <author fullname="M. Salter" initials="M." surname="Salter"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier. These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years. Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="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="20" month="October" 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-05"/>
        </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="7" month="October" 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-11"/>
        </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-bonnell-lamps-chameleon-certs">
          <front>
            <title>A Mechanism for Encoding Differences in Paired Certificates</title>
            <author fullname="Corey Bonnell" initials="C." surname="Bonnell">
              <organization>DigiCert</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="D. Hook" initials="D." surname="Hook">
              <organization>KeyFactor</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document specifies a method to efficiently convey the
   differences between two certificates in an X.509 version 3 extension.
   This method allows a relying party to extract information sufficient
   to construct the paired certificate and perform certification path
   validation using the constructed certificate.  In particular, this
   method is especially useful as part of a key or signature algorithm
   migration, where subjects may be issued multiple certificates
   containing different public keys or signed with different CA private
   keys or signature algorithms.  This method does not require any
   changes to the certification path validation algorithm as described
   in RFC 5280.  Additionally, this method does not violate the
   constraints of serial number uniqueness for certificates issued by a
   single certification authority.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bonnell-lamps-chameleon-certs-05"/>
        </reference>
        <reference anchor="I-D.draft-ietf-pquip-hybrid-signature-spectrums">
          <front>
            <title>Hybrid signature spectrums</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Florence D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="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+y92XIbaZYmeM+n8GbYWJCdcHDVQkVtFEWF1NoYoiKjarKz
Ix2Ag/QU4I5wd5CBVGosL8es72auxqzHbJ5lHiWfZM53ln9xOCgpMiurqm1U
lUES8OVfzn/28500Tbfaop3lj5Lti6pp0++WWdku58lZvVq01VWdLa5XybSq
k/PyqijzvG62t7LRqM5vcMd3Z93vxlmbX1X16lFSlNNqa2tSjctsTo+f1Nm0
TYu8naaLn5bFgv47TnO7Md2/v9UsR/OiaYqqbFcLuuP5+bunW+VyPsrrR1sT
eu6jrXFVNnnZLJtHSVsv8y0axNFWVucZDeYyHy/rol1tb91W9furuloueIjf
P7/Y3nqfr+jTyaOtJE1o1FtbWzd5uaQnJoldyaPapg/k7ds/0FOK8ir5Ft/j
83lWzPi68T9hGsOqvsLHWT2+po+v23bRPNrbw1X4qLjJh3bZHj7YG9XVbZPv
0f172zSAps3KyY/ZrCrpbau82VoUj5LftNV4kDRV3db5tKHfVnP9pa2LcTtI
xtV8npctfUIrO88WCxrib7e2smV7XdWYHo0oSabL2UyW/ZSWpM6Sx1mZ17/P
c/6WRpSVxR+ylpb6UfK6el9k/PmYVu9R8mpZFuNr+aBali328tu8nmflij/M
dR0yfvJwpE/+pxLPGdL4ttdH8a6ol/Nslje3WZ28zSeT1WcMhMZ8RctTy6Dr
/IqvepHVZdZm77N4hM/Lid5s43tflZO2qP/pCn9vGNeTYk6TKKomuRxfV0VZ
ZGX2vmg+Y3Cn7TURYmeV6jwf59EgJvaCYRO+QBYrHeWzWTrLRs3GZZtXLZ2/
Z9Vslo/y/H3PwJ4UV8VZXrfB2C6Ktm1Gy/qqs4vfX55Gg2uL+fDaHv1PE3rQ
mB4UjaUo6ai9GiZvlmVDB6iVJ8roXhXv884XNLRHxA3obDZt8hJzzyf8hbEM
/Y4/I5LO8/ZRcnhvfz+5rGZ0HNrkbZVNkj//6f9MLpd0c3Kwvx9M7E3bZrfZ
IHlTtkR9VTy7M1raiVHFhMb34vBFcvTtvXDKcxrysLIh/1Muo8GM6UCWFRF5
S+f20dYWmJf/KwETuMnrtMn5tPMjE+ObZ8Pkf81m72lcf/7T/5AL//yn/6tJ
flJWKjeBlWQzYo1Fez1PiiapFrT+2Wzw5z/938nF9aopxtmMzsZNkd8mp4Pk
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
T/MJM+o3xHDGIvefW9o2fJs2lp3Hl893WZHlc+Mnz6zCbWdfkMhLid9oZOq3
uuN2srIZkXoj+/l9iXx3ScZp/KI8t1RpToswpye/LvCh78CHK+yUVsxJnwFZ
wbQqFT1QmB3bjAEx24WkvvewE+RGhVoP259ZwNXYexZwGaiJvZwO6pYGAQMd
mg00e1b/jSsMKmAItGhXuIOmon4npAZ9HSQGmcOv689IA3+GCAbNcWTPGKQM
hn9+djYk+usdCStUWXMNV89YmQNogsxdZRHIbReeLpn88biyWXtdLa+uQx8f
zY5za9k4Ep8SBk7mvIoCOqVzDf5zgsmkwgzoqGIKMA7a62aoskBlvFNiafbw
/MYaqZjEatiBA0w4BW8bD1BO4JmadywVUPyIK5Jy71YncqLv0Esv/OqG3wlh
sgFURv5lXiqOKLtnwg/nDzuqPDJautGsGr9PxoU6GuJdGCSvTs/ov3k7Dr29
vK43y1mpfj1ahh5/T6zO8VHBQFlFEtVI1aSs0VUL9UM/FeOpbCEHb92Rzcho
CZvcL6hXu34jlQu/5TWqYAWadGfi6oxoWRIHYloILTShYVMWoHg9KVDzRaef
Lbs6+o5Thpi/2HLR0XBrc22ZZKJIzarC+03InkSqZch6O8oAO0Xl+ayw0bbA
VMvZ+JytaGIXm7zgIEC38ZEzbacY5sMBSzy9cZcdR2LdWRaZnR06MfWy5LQz
ojZTyM19ZltPHO+CWTlzuUeb6OCqEgVBPLr5InBYsY7Du8DOK3PFOWOaY04d
7RnsuMYTaq+70pCxtVy6E1kLKuzMMlNWiUonEvGL3IUAatMWo8iND3Vc57MF
K1zyFKyCPIvInwRzUwkr7vh3wcvtefS3M2iuaCNL4Q/hijWSbO3Uqqzh/ZLS
wqLlYqikmIKP0N5OiU20KvjYdWW1OTnMQPzh3ud4xPO3754SQ4205eRpVXPc
WR1OXG5JOvLTt9/u0g7/cF3M8nVnl6rrLLZH1ZLZIe8JOGWjpjYsqa/DmOHX
2O+vw1D3as9pOV/jXlr0MR26PNwIZrcabGIpOrBwBSpRWbEw3/kIuirtC8ml
CVj61x1xPCa1oZiu5JGdobFvjA/mBiLAUosAsORAEiYi1vnguBBY4OAGVwGH
zJu86+93BzV04JK4umb3QrRFzqvL4y7zgpdaXl3Ci9z36jr3VhwUDQhyHops
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
9wmfHtc/H967d3DSXTD7tm85vmy9+p8QjYuH33fzv71a5/WBnnH9G6opyZoi
EozrX0nsblowNbtKMJHPYJ2B/WG9kO/go4NNTPTzjKq/BQ/dbFAl/1F5qPx7
e3l6uH/80K2W/FOOuplW+i6ILYTeJ9hqfXJYzOHXnryunXXe+2nOvtGd/WlO
tWbp/a3tvGSNRfK/rp331zPz/hL+uWZO/RWtqcM+u2dtWL3sc82c+lsbUxuG
1TVa/kY2y2nDxTYc251JXUs1Ehh6lxEYRAhQSeqLuDJTkyN/U5gIqUUx6pZz
3N2ltN9hAYT1pW1sNsFoCm2mYfJY3dMdc2HiM7Z4Ih4SsBM5R2VoJoFta7Jo
UV9ehiw5e/vdmZYcZo2Taq6MngQYkvsy4K04tzmXmcAUypNZdSXQCx4pZ4dR
xGGPIDcCmYqzWbEAMgMN7Qai5Vb7AsgMkH5iFWoe5J7hrByKlCSAKoQUi2wu
pJVNmKyXBDRusQUVyUp03SALj+7UrKHvPn9xfnMoQaHvn1xYCRon4DGYg6EB
+NylNyVDFcyQ1KQJvZIwJ5k82L4IP9Bl8TDgOu2bvNJ/r4knaC44Jar02AW+
u5LWwSNbqQIJ1JKuwvAfzTIHiv5/Am7l4bFk1bn8lswDsY5WHoFPypeDZofc
EAGD/JqzQ+f5hNMhrH/G10HPyFHuhunaiHLux9r4Hezj0MZ39AC4mmFyG02h
942MW53VQPsLzkW0sNm01dSrDSsrzR+nlVbY0rc/nn7/7pm7wHeOUHKQg/Lh
w+VFekCae3r08Az9ODXr8v7waHik3TklpXMzURpNcraXy1GKhu9T/qukWQAg
DAO1xOAF0KBbSSStXcdLSQRsJAmaYchqhZiZVY2AT1lNwgI19PwQTqbB9yv3
9HFVChvRLUCCls1GMmMkL9ky58KBC3QkvCrfqVcFMw8VIYVYlRLqRtF2BMFN
8uqxlR6MwWpIiqZVdEcF6bVi3gjOrSgt/1zyj9Z8Pp51WlZS5AIKPTG1pGut
BH9P+LTi2knOj7lwrNeIKyVUDIX+F/ue9G8VUSBmiwP1N4Hr0Rsj1DqP0ifJ
vHeNH4nqtIiKhARO6joDB7FsX9AcQ/8x52BQGME9CdECC7NeXOo+U3c1bfmP
GGPFJc7dSGnndUaXLh3yyRwHwpXMAXYM4GkYqGRUjW2HeeqMqiXMX3KRYziX
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
yaumPRTs/7tMG5OyE+cQmndEzTaLH6+kQEaBwaGCoYAe+wXalKb+Yd0nqAbB
R6kEq2HVi5yuI7+8CEGjojXbej5tfpAo84ylSeon8WkgeO2BxN7w4f/Q81St
fm/Wh0qUH1iYHF4sbH5xLGJ6M8+Elwla5tt3oGWiJvn1TbRsjPxMOqXfnrls
a1/DP8oFCtbUSyhOBOo7Ejbw8nloqiugLljIs96MRvOVKdBFeUHyBYlv2zlm
adPIIeUavNddEzk5zJk4t0qMIcxAVRxELl3tzrPBZZjDkgNYzfaUG8fVldBT
thVxd8exs8cmmXyRmHpUEEq1JrzED060zTOlpc7er6wrlQf/nAbTBXnpE5BM
Hs7nOIk2hUeLhe/IgGowb0wUho9v610IHsyvAL40BkFvJkIL3RLmRWIN6o4v
VVi33dslW6HDth6KI3Evu3hhWNNL16C4bYzTTqhA6i8NMUAwLy4wAryi7+XX
4d7tREoYs3r3IxeCZx8of568GucAImfiv7GA5qlnutOp1pESP1OoOaPDJjSY
4ryftyYXeOe8dLGf5tEtTpjLUQnT+Fbs7ptqfePvJufN5zX8nVLlniet//+W
8ETvCglC8ht5J6PkITMSG4qX/t9Xm7bdNeM0dTXw+3IzommeNnKq9BK0GWvr
PJeQLSXbqnwwZ70Imcd5AIHnS1YIup535ntb2h147GSHgPbQV9lqhYDxiwyT
h287mjp+58rylQnNpLOdblQNHRgR9kj7umX7GYh3flhT4w6LcKH85rfDPfxu
N8Rd+njo/O7nzRz+3kqbH8VfQsYXc0+iKDE8wxcfwmG041oiaSnLTw/rVRcT
b4bUZjq47EtlQZqYdnEABpT1BEn/NSKtjL14YsLKXiLViHCJV9iS8KqKKbGV
3pjtAsCFUwy5dB7LpNEnLJllStP0VaTDGZFS10qC59G5gMdGoyGcTsLLthbF
Zr4cvJyKojqVFkClDk+zrbkDlZczJMFxfaqZUsBCENyv7AgRwqN8clsLRqlo
F4WkB8mVf0kXidIUd633VHCXFfXywKvb4kmTNX2yVcj6aMa9XpIkM4Jqyexo
87asj01p+c/5XbZBYY9Bcvtjwv9ozGpG9yhqqC3RfyVd+oGsbrfmjsW8YOGS
j6GNjAx6f8eSmWeK969W9GTzipVJ4oZqbAZ2KzYZHt4L026XHyqzIfOB1q40
zi5nQgkbfoY+5HRR1YsU5lVKc/D02Ggr8UZXcn9NaBG853jlFHw5jPdkQMfp
+fd2vWYjJUO+Qp583h9cQZvf8JoaQQ0gHDTPaWFJZoRVaH0oQd7/RN929gbX
rOiSa1PZQfLVVGQvQy7DYNGls6Z5VdZJhuTGP6UB3LD7grYC+lJc3WlBUdto
FJJfOUJ/gCbexRJmLhIAHq2CQwE7QNf/AAb6UB70agEA

-->

</rfc>
