<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-pquip-pqc-engineers-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="PQC for Engineers">Post-Quantum Cryptography for Engineers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-02"/>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Dimitrios Schoinianakis">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Athens</city>
          <country>Greece</country>
        </postal>
        <email>dimitrios.schoinianakis@nokia-bell-labs.com</email>
      </address>
    </author>
    <author fullname="Timothy Hollebeek">
      <organization>DigiCert</organization>
      <address>
        <postal>
          <city>Pittsburgh</city>
          <country>USA</country>
        </postal>
        <email>tim.hollebeek@digicert.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="20"/>
    <area>Security</area>
    <workgroup>PQUIP</workgroup>
    <keyword>PQC</keyword>
    <abstract>
      <?line 181?>

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

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

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

]]></artwork>
      </figure>
      <t>These challenges are illustrated nicely by the so called Mosca model discussed in ​<xref target="Threat-Report"/>. In the <xref target="Mosca"/>, "x" denotes the time that our systems and data need to remain secure, "y" the number of years to fully migrate to a PQC infrastructure and "z" the time until a CRQC that can break current cryptography is available. The model assumes either that encrypted data can be intercepted and stored before the migration is completed in "y" years,  or that signatures will still be relied upon for "x" years after their creation. This data remains vulnerable for the complete "x" years of their lifetime, thus the sum "x+y" gives us an estimate of the full timeframe that data remain insecure​. The model essentially asks how are we preparing our IT systems during those "y" years (or in other words, how can one minimize those "y" years) to minimize the transition phase to a PQC infrastructure and hence minimize the risks of data being exposed in the future.</t>
      <t>Finally, other factors that could accelerate the introduction of a CRQC should not be under-estimated, like for example faster-than-expected advances in quantum computing and more efficient versions of Shor’s algorithm requiring fewer qubits. Innovation often comes in waves, so it is to the industry’s benefit to remain vigilant and prepare as early as possible. Bear in mind also that while we track advances from public research institutions such as universities and companies that publish their results, there is also a great deal of large-budget quantum research being conducted privately by various national interests. Therefore, the true state of quantum computer advancement is likely several years ahead of the publicly available research.</t>
    </section>
    <section anchor="post-quantum-cryptography-categories">
      <name>Post-quantum cryptography categories</name>
      <t>The current set of problems used in post-quantum cryptography can be currently grouped into three different categories: lattice-based, hash-based and code-based.</t>
      <section anchor="lattice-based">
        <name>Lattice-Based Public-Key Cryptography</name>
        <t>Lattice-based public-key cryptography leverages the simple construction of lattices (i.e., a regular collection of points in a Euclidean space that are evenly spaced) to create 'trapdoor' problems. These problems are efficient to compute if you possess the secret information but challenging to compute otherwise. Examples of such problems include the Shortest Vector, Closest Vector, Shortest Integer Solution, Learning with Errors, Module Learning with Errors, and Learning with Rounding problems. All of these problems feature strong proofs for worst-to-average case reduction, effectively relating the hardness of the average case to the worst case.</t>
        <t>The possibility to implement public-key schemes on lattices is tied to the characteristics of the vector basis used for the lattice. In particular, solving any of the mentioned problems can be easy when using "reduced" or "good" bases (i.e., as short as possible and as orthogonal as possible), while it becomes computationally infeasible when using "bad" bases (i.e., long vectors not orthogonal). Although the problem might seem trivial, it is computationally hard when considering many dimensions, or when the underlying field is not simple numbers, but high-order polynomials. Therefore, a typical approach is to use "bad" basis for public keys and "good" basis for private keys. The public keys ("bad" basis) let you easily verify signatures by checking, for example, that a vector is the closest or smallest, but do not let you solve the problem (i.e., finding the vector) that would yield the private key. Conversely, private keys (i.e., the "good" basis) can be used for generating the signatures (e.g., finding the specific vector).</t>
        <t>Lattice-based schemes usually have good performances and average size public keys and signatures (average within the PQC primitives at least, they are still several orders of magnitude larger than RSA or ECC signatures), making them the best available candidates for general-purpose use such as replacing the use of RSA in PKIX certificates.</t>
        <t>Examples of such class of algorithms include Kyber, Falcon and Dilithium.</t>
        <t>It is noteworthy that lattice-based encryption schemes require a rounding step during decryption which has a non-zero probability of "rounding the wrong way" and leading to a decryption failure, meaning that valid encryptions are decrypted incorrectly; as such, an attacker could significantly reduce the security of lattice-based schemes that have a relatively high failure rate. However, for most of the NIST Post-Quantum Proposals, the number of required oracle queries to force a decryption failure is above practical limits, as has been shown in <xref target="LattFail1"/>. More recent works have improved upon the results in <xref target="LattFail1"/>, showing that the cost of searching for additional failing ciphertexts after one or more have already been found, can be sped up dramatically <xref target="LattFail2"/>. Nevertheless, at this point in time (July 2023), the PQC candidates by NIST are considered secure under these attacks and we suggest constant monitoring as cryptanalysis research is ongoing.</t>
      </section>
      <section anchor="hash-based">
        <name>Hash-Based Public-Key Cryptography</name>
        <t>Hash based PKC has been around since the 70s, developed by Lamport and Merkle which creates a digital signature algorithm and its security is mathematically based on the security of the selected cryptographic hash function. Many variants of "hash-based signatures (HBS)" have been developed since the 70s including the recent XMSS <xref target="RFC8391"/>, HSS/LMS <xref target="RFC8554"/> or BPQS schemes. Unlike digital signature techniques, most hash-based signature schemes are stateful, which means that signing necessitates the update and careful tracking of the secret key; producing multiple signatures using the same secret key state results in loss of security and ultimately signature forgery attacks against that key.</t>
        <t>The SPHINCS algorithm on the other hand leverages the HORST (Hash to Obtain Random Subset with Trees) technique and remains the only hash based signature scheme that is stateless.</t>
        <t>SPHINCS+ is an advancement on SPHINCS which reduces the signature sizes in SPHINCS and makes it more compact. SPHINCS+ was recently standardized by NIST.</t>
      </section>
      <section anchor="code-based">
        <name>Code-Based Public-Key Cryptography</name>
        <t>This area of cryptography stemmed in the 1970s and 80s based on the seminal work of McEliece and Niederreiter which focuses on the study of cryptosystems based on error-correcting codes. Some popular error correcting codes include the Goppa codes (used in McEliece cryptosystems), encoding and decoding syndrome codes used in Hamming Quasi-Cyclic (HQC) or Quasi-cyclic Moderate density parity check (QC-MDPC) codes.</t>
        <t>Examples include all the NIST Round 4 (unbroken) finalists: Classic McEliece, HQC, BIKE.</t>
      </section>
    </section>
    <section anchor="KEMs">
      <name>KEMs</name>
      <section anchor="what-is-a-kem">
        <name>What is a KEM</name>
        <t>A Key Encapsulation Mechanism (KEM) is a cryptographic technique used for securely exchanging symmetric key material between two parties over an insecure channel. It is commonly used in hybrid encryption schemes, where a combination of asymmetric (public-key) and symmetric encryption is employed. The KEM encapsulation results in a fixed-length symmetric key that can be used in one of two ways: (1) Derive a Data Encryption Key (DEK) to encrypt the data (2) Derive a Key Encryption Key (KEK) used to wrap the DEK.  The term "encapsulation" is chosen intentionally to indicate that KEM algorithms behave differently at the API level than the Key Agreement or Key Encipherment / Key Transport mechanisms that we are accustomed to using today. Key Agreement schemes imply that both parties contribute a public / private keypair to the exchange, while Key Encipherment / Key Transport schemes imply that the symmetric key material is chosen by one party and "encrypted" or "wrapped" for the other party. KEMs, on the other hand, behave according to the following API:</t>
        <t>KEM relies on the following primitives <xref target="PQCAPI"/>:</t>
        <ul spacing="normal">
          <li>
            <t>def kemKeyGen() -&gt; (pk, sk)</t>
          </li>
          <li>
            <t>def kemEncaps(pk) -&gt; (ct, ss)</t>
          </li>
          <li>
            <t>def kemDecaps(ct, sk) -&gt; ss</t>
          </li>
        </ul>
        <t>where pk is public key, sk is secret key, ct is the ciphertext representing an encapsulated key, and ss is shared secret.  The following figure illustrates a sample flow of KEM based key exchange:</t>
        <figure anchor="tab-kem-ke">
          <name>KEM based Key Exchange</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="536" viewBox="0 0 536 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,272 L 8,304" fill="none" stroke="black"/>
                <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                <path d="M 224,72 L 224,320" fill="none" stroke="black"/>
                <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                <path d="M 320,72 L 320,320" fill="none" stroke="black"/>
                <path d="M 336,176 L 336,208" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 528,176 L 528,208" fill="none" stroke="black"/>
                <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                <path d="M 24,80 L 208,80" fill="none" stroke="black"/>
                <path d="M 24,112 L 208,112" fill="none" stroke="black"/>
                <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                <path d="M 336,176 L 528,176" fill="none" stroke="black"/>
                <path d="M 336,208 L 528,208" fill="none" stroke="black"/>
                <path d="M 232,256 L 312,256" fill="none" stroke="black"/>
                <path d="M 8,272 L 208,272" fill="none" stroke="black"/>
                <path d="M 8,304 L 208,304" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                <polygon class="arrowhead" points="240,256 228,250.4 228,261.6" fill="black" transform="rotate(180,232,256)"/>
                <g class="text">
                  <text x="220" y="52">Client</text>
                  <text x="316" y="52">Server</text>
                  <text x="48" y="100">sk,</text>
                  <text x="76" y="100">pk</text>
                  <text x="96" y="100">=</text>
                  <text x="152" y="100">kemKeyGen()</text>
                  <text x="236" 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="236" y="292">-|</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk, pk = kemKeyGen()   |-|         |
  +----------------------+ |           |
                           |           |
                           | pk        |
                           |---------->|
                           |           | +-----------------------+
                           |           |-| ss, ct = kemEncaps(pk)|
                           |           | +-----------------------+
                           |           |
                           |       ct  |
                           |<----------|
+------------------------+ |           |
| ss = kemDecaps(ct, sk)   |-|         |
+------------------------+ |           |
                           |           |
]]></artwork>
          </artset>
        </figure>
        <section anchor="authenticated-key-exchange-ake">
          <name>Authenticated Key Exchange (AKE)</name>
          <t>Authenticated Key Exchange with KEMs where both parties contribute a KEM public key to the overall session key is interactive as described in <xref target="I-D.draft-ietf-lake-edhoc-22"/>. However, single-sided KEM, such as when one peer has a KEM key in a certificate and the other peer wants to encrypt for it (as in S/MIME or OpenPGP email), can be achieved using non-interactive HPKE <xref target="RFC9180"/>, explained in [hpke]. The following figure illustrates the Diffie-Hellman (DH) Key exchange:</t>
          <figure anchor="tab-dh-ake">
            <name>Diffie-Hellman based Authenticated Key Exchange</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="544" viewBox="0 0 544 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,288 L 8,320" fill="none" stroke="black"/>
                  <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
                  <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                  <path d="M 208,80 L 208,112" fill="none" stroke="black"/>
                  <path d="M 208,288 L 208,320" fill="none" stroke="black"/>
                  <path d="M 224,72 L 224,336" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                  <path d="M 320,72 L 320,336" fill="none" stroke="black"/>
                  <path d="M 336,176 L 336,224" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                  <path d="M 536,176 L 536,224" fill="none" stroke="black"/>
                  <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                  <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                  <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                  <path d="M 24,80 L 208,80" fill="none" stroke="black"/>
                  <path d="M 24,112 L 208,112" fill="none" stroke="black"/>
                  <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                  <path d="M 336,176 L 536,176" fill="none" stroke="black"/>
                  <path d="M 336,224 L 536,224" fill="none" stroke="black"/>
                  <path d="M 232,272 L 312,272" fill="none" stroke="black"/>
                  <path d="M 8,288 L 208,288" fill="none" stroke="black"/>
                  <path d="M 8,320 L 208,320" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                  <polygon class="arrowhead" points="240,272 228,266.4 228,277.6" fill="black" transform="rotate(180,232,272)"/>
                  <g class="text">
                    <text x="220" y="52">Client</text>
                    <text x="316" y="52">Server</text>
                    <text x="52" y="100">sk1,</text>
                    <text x="88" y="100">pk1</text>
                    <text x="112" y="100">=</text>
                    <text x="156" y="100">KeyGen()</text>
                    <text x="216" y="100">-</text>
                    <text x="248" y="148">pk1</text>
                    <text x="328" y="196">-</text>
                    <text x="364" y="196">sk2,</text>
                    <text x="400" y="196">pk2</text>
                    <text x="424" y="196">=</text>
                    <text x="468" y="196">KeyGen()</text>
                    <text x="356" y="212">ss</text>
                    <text x="376" y="212">=</text>
                    <text x="428" y="212">KeyEx(pk1,</text>
                    <text x="492" y="212">sk2)</text>
                    <text x="304" y="260">pk2</text>
                    <text x="28" y="308">ss</text>
                    <text x="48" y="308">=</text>
                    <text x="100" y="308">KeyEx(pk2,</text>
                    <text x="164" y="308">sk1)</text>
                    <text x="216" y="308">-</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk1, pk1 = KeyGen()  |-|           |
  +----------------------+ |           |
                           |           |
                           | pk1       |
                           |---------->|
                           |           | +------------------------+
                           |           |-| sk2, pk2 = KeyGen()    |
                           |           | | ss = KeyEx(pk1, sk2)   |
                           |           | +------------------------+
                           |           |
                           |        pk2|
                           |<----------|
+------------------------+ |           |
| ss = KeyEx(pk2, sk1)   |-|           |
+------------------------+ |           |
                           |           |
]]></artwork>
            </artset>
          </figure>
          <t>What's important to note about the sample flow above is that the shared secret <tt>ss</tt> is derived using key material from both the Client and the Server, which classifies it as an Authenticated Key Exchange (AKE). It's also worth noting that in an Ephemeral-Static Diffie-Hellman (DH) scenario, where <tt>sk2</tt> and <tt>pk2</tt> represent long-term keys. such as those contained in an email encryption certificate, the client can compute <tt>ss = KeyEx(pk2, sk1)</tt> without waiting for a response from the Server. This characteristic transforms it into a non-interactive and authenticated key exchange method. Many Internet protocols rely on this aspect of DH. When using Key Encapsulation Mechanisms (KEMs) as the underlying primitive, a flow may be non-interactive or authenticated, but not both. Consequently, certain Internet protocols will necessitate redesign to accommodate this distinction, either by introducing extra network round-trips or by making trade-offs in security properties.</t>
          <t>Post-Quantum KEMs are inherently interactive Key Exchange (KE) protocols because they involve back-and-forth communication to negotiate and establish a shared secret key. This is unlike Diffie-Hellman (DH) Key Exchange (KEX) or RSA Key Transport, which provide the non-interactive key exchange (NIKE) property. NIKE is a cryptographic primitive that enables two parties who know each other's public keys to agree on a symmetric shared key without requiring any real-time interaction. Consider encrypted email, where the content needs to be encrypted and sent even if the receiving device containing the decryption keys (e.g., a phone or laptop) is currently offline.</t>
          <t>Another important property of Diffie-Hellman is that in addition to being a NIKE, it is also an Authenticated Key Exchange (AKE), meaning that since both parties needed to involve their asymmetric keypair, both parties have proof-of-identity of the other party. In order to achieve an AKE with KEM primitives, two full KEM exchanges need to be performed, and their results combined to form a single shared secret.</t>
          <figure anchor="tab-kem-ake">
            <name>KEM based Authenticated Key Exchange</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,288 L 8,352" fill="none" stroke="black"/>
                  <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
                  <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
                  <path d="M 208,80 L 208,88" fill="none" stroke="black"/>
                  <path d="M 208,104 L 208,112" fill="none" stroke="black"/>
                  <path d="M 208,336 L 208,352" fill="none" stroke="black"/>
                  <path d="M 224,72 L 224,464" fill="none" stroke="black"/>
                  <path d="M 264,32 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
                  <path d="M 320,72 L 320,464" fill="none" stroke="black"/>
                  <path d="M 336,176 L 336,224" fill="none" stroke="black"/>
                  <path d="M 336,416 L 336,464" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                  <path d="M 552,176 L 552,224" fill="none" stroke="black"/>
                  <path d="M 552,416 L 552,464" fill="none" stroke="black"/>
                  <path d="M 184,32 L 264,32" fill="none" stroke="black"/>
                  <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                  <path d="M 184,64 L 264,64" fill="none" stroke="black"/>
                  <path d="M 280,64 L 360,64" fill="none" stroke="black"/>
                  <path d="M 24,80 L 208,80" fill="none" stroke="black"/>
                  <path d="M 24,112 L 208,112" fill="none" stroke="black"/>
                  <path d="M 232,160 L 312,160" fill="none" stroke="black"/>
                  <path d="M 336,176 L 552,176" fill="none" stroke="black"/>
                  <path d="M 336,224 L 552,224" fill="none" stroke="black"/>
                  <path d="M 232,272 L 312,272" fill="none" stroke="black"/>
                  <path d="M 8,288 L 200,288" fill="none" stroke="black"/>
                  <path d="M 8,352 L 208,352" fill="none" stroke="black"/>
                  <path d="M 232,400 L 312,400" fill="none" stroke="black"/>
                  <path d="M 336,416 L 552,416" fill="none" stroke="black"/>
                  <path d="M 336,464 L 552,464" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="320,400 308,394.4 308,405.6" fill="black" transform="rotate(0,312,400)"/>
                  <polygon class="arrowhead" points="320,160 308,154.4 308,165.6" fill="black" transform="rotate(0,312,160)"/>
                  <polygon class="arrowhead" points="240,272 228,266.4 228,277.6" fill="black" transform="rotate(180,232,272)"/>
                  <path class="jump" d="M 208,104 C 214,104 214,88 208,88" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="220" y="52">Client</text>
                    <text x="316" y="52">Server</text>
                    <text x="52" y="100">sk1,</text>
                    <text x="88" y="100">pk1</text>
                    <text x="112" y="100">=</text>
                    <text x="164" y="100">kemKeyGen(</text>
                    <text x="236" y="100">-|</text>
                    <text x="240" y="148">pk1</text>
                    <text x="328" y="196">-</text>
                    <text x="364" y="196">ss1,</text>
                    <text x="400" y="196">ct1</text>
                    <text x="424" y="196">=</text>
                    <text x="492" y="196">kemEncaps(pk1)</text>
                    <text x="364" y="212">sk2,</text>
                    <text x="400" y="212">pk2</text>
                    <text x="424" y="212">=</text>
                    <text x="480" y="212">kemKeyGen()</text>
                    <text x="288" y="260">ct1,pk2</text>
                    <text x="32" y="308">ss1</text>
                    <text x="56" y="308">=</text>
                    <text x="124" y="308">kemDecaps(ct1,</text>
                    <text x="204" y="308">sk1)</text>
                    <text x="236" y="308">-|</text>
                    <text x="36" y="324">ss2,</text>
                    <text x="72" y="324">ct2</text>
                    <text x="96" y="324">=</text>
                    <text x="164" y="324">kemEncaps(pk2)</text>
                    <text x="28" y="340">ss</text>
                    <text x="48" y="340">=</text>
                    <text x="112" y="340">Combiner(ss1,</text>
                    <text x="188" y="340">ss2)</text>
                    <text x="240" y="388">ct2</text>
                    <text x="328" y="436">-</text>
                    <text x="360" y="436">ss2</text>
                    <text x="384" y="436">=</text>
                    <text x="452" y="436">kemDecaps(ct2,</text>
                    <text x="532" y="436">sk2)</text>
                    <text x="356" y="452">ss</text>
                    <text x="376" y="452">=</text>
                    <text x="440" y="452">Combiner(ss1,</text>
                    <text x="516" y="452">ss2)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                      +---------+ +---------+
                      | Client  | | Server  |
                      +---------+ +---------+
  +----------------------+ |           |
  | sk1, pk1 = kemKeyGen() |-|         |
  +----------------------+ |           |
                           |           |
                           |pk1        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss1, ct1 = kemEncaps(pk1)|
                           |           | | sk2, pk2 = kemKeyGen()   |
                           |           | +--------------------------+
                           |           |
                           |    ct1,pk2|
                           |<----------|
+------------------------+ |           |
| ss1 = kemDecaps(ct1, sk1)|-|         |
| ss2, ct2 = kemEncaps(pk2)|           |
| ss = Combiner(ss1, ss2)| |           |
+------------------------+ |           |
                           |           |
                           |ct2        |
                           |---------->|
                           |           | +--------------------------+
                           |           |-| ss2 = kemDecaps(ct2, sk2)|
                           |           | | ss = Combiner(ss1, ss2)  |
                           |           | +--------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>Here, <tt>Combiner(ss1, ss2)</tt>, often referred to as a KEM Combiner is a cryptographic construction that takes in two shared secrets and returns a single combined shared secret. The simplest combiner is concatenation <tt>ss1 || ss2</tt>, but combiners can vary in complexity depending on the cryptographic properties required; for example if the combination should preserve IND-CCA2 of either input even if the other is chosen maliciously, then a more complex construct is required. Sometimes combiners require both the shared secrets and ciphertexts as input and can act on more than two KEMs; <tt>Combiner(ss1, ct1, ss2, ct2, ..)</tt>. For a more thorough discussion of KEM combiners, see <xref target="I-D.draft-ounsworth-cfrg-kem-combiners-04"/>.</t>
        </section>
      </section>
      <section anchor="security-property">
        <name>Security property</name>
        <ul spacing="normal">
          <li>
            <t>IND-CCA2 : IND-CCA2 (INDistinguishability under adaptive Chosen-Ciphertext Attack) is an advanced security notion for encryption schemes. It ensures the confidentiality of the plaintext, resistance against chosen-ciphertext attacks, and prevents the adversary from forging valid ciphertexts (given access to the public key). An appropriate definition of IND-CCA2 security for KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>. Kyber and Classic McEliece provides IND-CCA2 security.</t>
          </li>
        </ul>
        <t>Understanding IND-CCA2 security is essential for individuals involved in designing or implementing cryptographic systems and protocols to evaluate the strength of the algorithm, assess its suitability for specific use cases, and ensure that data confidentiality and security requirements are met. Understanding IND-CCA2 security is generally not necessary for developers migrating to using an IETF-vetted key establishment method (KEM) within a given protocol or flow. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and not rely on implementers being deep experts in cryptographic theory.</t>
      </section>
      <section anchor="hpke">
        <name>HPKE</name>
        <t>HPKE (Hybrid Public Key Encryption) <xref target="RFC9180"/> deals with a variant of KEM which is essentially a PKE of arbitrary sized plaintexts for a recipient public key. It works with a combination of KEMs, KDFs and AEAD schemes (Authenticated Encryption with Additional Data). HPKE includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE can be extended to support hybrid post-quantum KEM <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00-02"/>. Kyber, which is a KEM does not support the static-ephemeral key exchange that allows HPKE based on DH based KEMs and its optional authenticated modes as discussed in Section 1.2 of <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00-02"/>.</t>
      </section>
    </section>
    <section anchor="pqc-signatures-1">
      <name>PQC Signatures</name>
      <section anchor="what-is-a-post-quantum-signature">
        <name>What is a Post-quantum Signature</name>
        <t>Any digital signature scheme that provides a construction defining security under post quantum setting falls under this category of PQ signatures.</t>
      </section>
      <section anchor="security-property-1">
        <name>Security property</name>
        <ul spacing="normal">
          <li>
            <t>EUF-CMA : EUF-CMA (Existential Unforgeability under Chosen Message Attack) <xref target="GMR88"/> is a security notion for digital signature schemes. It guarantees that an adversary, even with access to a signing oracle, cannot forge a valid signature for an arbitrary message. EUF-CMA provides strong protection against forgery attacks, ensuring the integrity and authenticity of digital signatures by preventing unauthorized modifications or fraudulent signatures. Dilithium, Falcon and SPHINCS+ provide EUF-CMA security.</t>
          </li>
        </ul>
        <t>Understanding EUF-CMA security is essential for individual involved in designing or implementing cryptographic systems to ensure the security, reliability, and trustworthiness of digital signature schemes. It allows for informed decision-making, vulnerability analysis, compliance with standards, and designing systems that provide strong protection against forgery attacks. Understanding EUF-CMA security is generally not necessary for developers migrating to using an IETF-vetted post-quantum cryptography (PQC) signature scheme within a given protocol or flow. IETF specification authors should include all security concerns in the 'Security Considerations' section of the relevant RFC and should not assume that implementers are deep experts in cryptographic theory</t>
      </section>
      <section anchor="sig-scheme">
        <name>Details of FALCON, Dilithium, and SPHINCS+</name>
        <t>Dilithium <xref target="Dilithium"/> is a digital signature algorithm (part of the CRYSTALS suite) based on the hardness lattice problems over module lattices (i.e., the Module Learning with Errors problem (MLWE)). The design of the algorithm is based on the "Fiat Shamir with Aborts" method that leverages rejection sampling to render lattice based FS schemes compact and secure. Additionally, Dilithium offers both deterministic and randomized signing. Security properties of Dilithium are discussed in Section 9 of <xref target="I-D.ietf-lamps-dilithium-certificates"/>.</t>
        <t>Falcon <xref target="Falcon"/> is based on the GPV hash-and-sign lattice-based signature framework introduced by Gentry, Peikert and Vaikuntanathan, which is a framework that requires a class of lattices and a trapdoor sampler technique.</t>
        <t>The main design principle of Falcon is compactness, i.e. it was designed in a way that achieves minimal total memory bandwidth requirement (the sum of the signature size plus the public key size). This is possible due to the compactness of NTRU lattices.  Falcon also offers very efficient signing and verification procedures. The main potential downsides of Falcon refer to the non-triviality of its algorithms and the need for floating point arithmetic support in order to support Gaussian-distributed random number sampling where the other lattice schemes use the less efficient but easier to support uniformly-distributed random number sampling.</t>
        <t>Implementers of Falcon need to be aware that Falcon 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 Dilithium and Falcon may differ based on the specific implementation and hardware platform. Generally, Dilithium is known for its relatively fast signature generation, while Falcon can provide more efficient signature verification. The choice may depend on whether the application requires more frequent signature generation or signature verification (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>SPHINCS+ <xref target="SPHINCS"/> utilizes the concept of stateless hash-based signatures, where each signature is unique and unrelated to any previous signature (as discussed in <xref target="hash-based"/>). This property eliminates the need for maintaining state information during the signing process. SPHINCS+ was designed to sign up to 2^64 messages and it offers three security levels. The parameters for each of the security levels were chosen to provide 128 bits of security, 192 bits of security, and 256 bits of security. SPHINCS+ offers smaller key sizes, larger signature sizes, slower signature generation, and slower verification when compared to Dilithium and Falcon. SPHINCS+ does not introduce a new hardness assumption beyond those inherent to the underlying hash functions. It builds upon established foundations in cryptography, making it a reliable and robust digital signature scheme for a post-quantum world. The advantages and disadvantages of SPHINCS+ over other signature algorithms is 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>XMSS and HSS/LMS can be applied in various scenarios where digital signatures are required, such as software updates.</t>
      </section>
      <section anchor="hash-then-sign">
        <name>Hash-then-Sign</name>
        <t>Within the hash-then-sign paradigm, the message is hashed before signing it. By pre-hashing, the onus of resistance to existential forgeries becomes heavily reliant on the collision-resistance of the hash function in use. The hash-then-sign paradigm has the ability to improve performance by reducing the size of signed messages, making the signature size predictable and manageable. As a corollary, hashing remains mandatory even for short messages and assigns a further computational requirement onto the verifier.  This makes the performance of hash-then-sign schemes more consistent, but not necessarily more efficient. Using a hash function to produce a fixed-size digest of a message ensures that the signature is compatible with a wide range of systems and protocols, regardless of the specific message size or format. Crucially for hardware security modules, Hash-then-Sign also significantly reduces the amount of data that needs to be transmitted and processed by a hardware security module. Consider scenarios such as a networked HSM located in a different data center from the calling application or a smart card connected over a USB interface. In these cases, streaming a message that is megabytes or gigabytes long can result in notable network latency, on-device signing delays, or even depletion of available on-device memory.</t>
        <t>Protocols like TLS 1.3 and DNSSEC use the Hash-then-Sign paradigm. In TLS 1.3 <xref target="RFC8446"/> CertificateVerify message, the content that is covered under the signature includes the transcript hash output (Section 4.4.1 of <xref target="RFC8446"/>), while DNSSEC <xref target="RFC4033"/> uses it to provide origin authentication and integrity assurance services for DNS data.</t>
        <t>In the case of Dilithium, it internally incorporates the necessary hash operations as part of its signing algorithm. Dilithium directly takes the original message, applies a hash function internally, and then uses the resulting hash value for the signature generation process. In case of SPHINCS+, it internally performs randomized message compression using a keyed hash function that can process arbitrary length messages. In case of Falcon, a hash function is used as part of the signature process, it uses the SHAKE-256 hash function to derive a digest of the message being signed. Therefore, Dilithium, Falcon, and SPHINCS+ offer enhanced security over the traditional Hash-then-Sign paradigm because by incorporating dynamic key material into the message digest, a pre-computed hash collision on the message to be signed no longer yields a signature forgery. Applications requiring the performance and bandwidth benefits of Hash-then-Sign may still pre-hash at the protocol level prior to invoking Dilithium, Falcon, or SPHINCS+, but protocol designers should be aware that doing so re-introduces the weakness that hash collisions directly yield signature forgeries. Signing the full un-digested message is strongly preferred where applications can tolerate it.</t>
      </section>
    </section>
    <section anchor="RecSecurity">
      <name>Recommendations for Security / Performance Tradeoffs</name>
      <t>The table below denotes the 5 security levels provided by NIST required for PQC algorithms. Users can leverage the appropriate algorithm based on the security level required for their use case. The security is defined as a function of resources required to break AES and SHA2/SHA3 algorithms, i.e., exhaustive key recovery for AES and optimal collision search for SHA2/SHA3. This information is a re-print of information provided in the NIST PQC project {NIST} as of time of writing (July 2023).</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">AES/SHA(2/3) hardness</th>
            <th align="left">PQC Algorithm</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">Atleast as hard as to break AES-128 (exhaustive key recovery)</td>
            <td align="left">Kyber512, Falcon512, Sphincs+SHA-256 128f/s</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">Atleast as hard as to break SHA-256/SHA3-256 (collision search)</td>
            <td align="left">Dilithium2</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Atleast as hard as to break AES-192 (exhaustive key recovery)</td>
            <td align="left">Kyber768, Dilithium3, Sphincs+SHA-256 192f/s</td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">Atleast as hard as to break SHA-384/SHA3-384 (collision search)</td>
            <td align="left">No algorithm tested at this level</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Atleast as hard as to break AES-256 (exhaustive key recovery)</td>
            <td align="left">Kyber1024, Falcon1024, Dilithium5, Sphincs+SHA-256 256f/s</td>
          </tr>
        </tbody>
      </table>
      <t>Please note the Sphincs+SHA-256 x"f/s" in the above table denotes whether its the Sphincs+ fast (f) version or small (s) version for "x" bit AES security level. Refer to <xref target="I-D.ietf-lamps-cms-sphincs-plus-02"/> for further details on Sphincs+ algorithms.</t>
      <t>The following table discusses the signature size differences for similar SPHINCS+ algorithm security levels with the "simple" version but for different categories i.e., (f) for fast verification and (s) for compactness/smaller. Both SHA-256 and SHAKE-256 parametrisation output the same signature sizes, so both have been included.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-128f</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">17088</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-128s</td>
            <td align="left">32</td>
            <td align="left">64</td>
            <td align="left">7856</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-192f</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">35664</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-192s</td>
            <td align="left">48</td>
            <td align="left">96</td>
            <td align="left">16224</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-256f</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">49856</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">SPHINCS+-{SHA2,SHAKE}-256s</td>
            <td align="left">64</td>
            <td align="left">128</td>
            <td align="left">29792</td>
          </tr>
        </tbody>
      </table>
      <t>The following table discusses the impact of performance on different security levels in terms of private key sizes, public key sizes and ciphertext/signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext/Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">Kyber512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">Falcon512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">Dilithium2</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">2420</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Kyber768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Falcon1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Kyber1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Comparisons">
      <name>Comparing PQC KEMs/Signatures vs Traditional KEMs (KEXs)/Signatures</name>
      <t>In this section, we provide two tables for comparison of different KEMs and Signatures respectively, in the traditional and Post scenarios. These tables will focus on the secret key sizes, public key sizes, and ciphertext/signature sizes for the PQC algorithms and their traditional counterparts of similar security levels.</t>
      <t>The first table compares traditional vs. PQC KEMs in terms of security, public, private key sizes, and ciphertext sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Ciphertext size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256_HKDF_SHA-256</td>
            <td align="left">65</td>
            <td align="left">32</td>
            <td align="left">65</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P521_HKDF_SHA-512</td>
            <td align="left">133</td>
            <td align="left">66</td>
            <td align="left">133</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">X25519_HKDF_SHA-256</td>
            <td align="left">32</td>
            <td align="left">32</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">Kyber512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Kyber768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1088</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Kyber1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">1588</td>
          </tr>
        </tbody>
      </table>
      <t>The next table compares traditional vs. PQC Signature schemes in terms of security, public, private key sizes, and signature sizes.</t>
      <table>
        <thead>
          <tr>
            <th align="left">PQ Security Level</th>
            <th align="left">Algorithm</th>
            <th align="left">Public key size (in bytes)</th>
            <th align="left">Private key size (in bytes)</th>
            <th align="left">Signature size (in bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">RSA2048</td>
            <td align="left">256</td>
            <td align="left">256</td>
            <td align="left">256</td>
          </tr>
          <tr>
            <td align="left">Traditional</td>
            <td align="left">P256</td>
            <td align="left">64</td>
            <td align="left">32</td>
            <td align="left">64</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">Falcon512</td>
            <td align="left">897</td>
            <td align="left">1281</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">Dilithium2</td>
            <td align="left">1312</td>
            <td align="left">2528</td>
            <td align="left">768</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">Dilithium3</td>
            <td align="left">1952</td>
            <td align="left">4000</td>
            <td align="left">3293</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">Falcon1024</td>
            <td align="left">1793</td>
            <td align="left">2305</td>
            <td align="left">1280</td>
          </tr>
        </tbody>
      </table>
      <t>As one can clearly observe from the above tables, leveraging a PQC KEM/Signature significantly increases the key sizes and the ciphertext/signature sizes as well as compared to traditional KEM(KEX)/Signatures. But the PQC algorithms do provide the additional security level in case there is an attack from a CRQC, whereas schemes based on prime factorization or discrete logarithm problems (finite field or elliptic curves) would provide no level of security at all against such attacks. As an example, IKEv2 uses UDP as the transport for its messages. One challenge with integrating PQC key exchange into the initial IKEv2 exchange is that IKE fragmentation cannot be utilized. To address this issue, <xref target="RFC9242"/> introduces a solution by defining a new exchange called the 'Intermediate Exchange' which can be fragmented using the IKE fragmentation mechanism. This Intermediate Exchange can carry out the PQC key exchange after the initial IKEv2 exchange and before the IKE_AUTH exchange.</t>
    </section>
    <section anchor="post-quantum-and-traditional-hybrid-schemes">
      <name>Post-Quantum and Traditional Hybrid Schemes</name>
      <t>The migration to PQC is unique in the history of modern digital cryptography in that neither the traditional algorithms nor the post-quantum algorithms are fully trusted to protect data for the required lifetimes. The traditional algorithms, such as RSA and elliptic curve, will fall to quantum 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>
      </section>
      <section anchor="pqt-hybrid-authentication">
        <name>PQ/T Hybrid Authentication </name>
        <t>The PQ/T Hybrid Authentication property can be utilized in scenarios where an on-path attacker possesses network devices equipped with CRQCs, capable of breaking traditional authentication protocols. This property ensures authentication through a PQ/T hybrid scheme or a PQ/T hybrid protocol, as long as at least one component algorithm remains secure to provide the intended security level. For instance, a PQ/T hybrid certificate can be employed to facilitate a PQ/T hybrid authentication protocol. However, a PQ/T hybrid authentication protocol does not need to use a PQ/T hybrid certificate <xref target="I-D.ounsworth-pq-composite-keys"/>; separate certificates could be used for individual component algorithms <xref target="I-D.ietf-lamps-cert-binding-for-multi-auth"/>.</t>
        <t>The frequency and duration of system upgrades and the time when CRQCs will become widely available need to be weighed in to determine whether and when to support the PQ/T Hybrid Authentication property.</t>
      </section>
      <section anchor="additional-considerations">
        <name>Additional Considerations</name>
        <t>It is also possible to use more than two algorithms together in a hybrid scheme, and there are multiple possible ways those algorithms can be combined.  For the purposes of a post-quantum transition, the simple combination of a post-quantum algorithm with a single classical algorithm is the most straightforward, but the use of multiple post-quantum algorithms with different hard math problems has also been considered.  When combining algorithms, it is possible to require that both algorithms be used together (the so-called "and" mode) or that only one does (the "or" mode), or even some more complicated scheme.  Schemes that do not require both algorithms to validate only have the strength of the weakest algorithm, and therefore offer little or no security benefit but may offer backwards compatibility, crypto agility, or ease-of-migration benefits.  Care should be taken when designing "or" mode hybrids to ensure that the larger PQ keys are not required to be transmitted to and processed by legacy clients that will not use them; this was the major drawback of the failed proposal <xref target="I-D.draft-truskovsky-lamps-pq-hybrid-x509"/>.  This combination of properties makes optionally including post-quantum keys without requiring their use to be generally unattractive in most use cases. On the other hand, including a classical key -- particularly an elliptic curve key -- alongside a lattice key is generally considered to be negligible in terms of the extra bandwidth usage.</t>
        <t>When combining keys in an "and" mode, it may make more sense to consider them to be a single composite key, instead of two keys.  This generally requires fewer changes to various components of PKI ecosystems, many of which are not prepared to deal with two keys or dual signatures.  To those protocol- or application-layer parsers, a "composite" algorithm composed of two "component" algorithms is simply a new algorithm, and support for adding new algorithms generally already exists.  Treating multiple "component" keys as a single "composite" key also has security advantages such as preventing cross-protocol reuse of the individual component keys and guarantees about revoking or retiring all component keys together at the same time, especially if the composite is treated as a single object all the way down into the cryptographic module.  All that needs to be done is to standardize the formats of how the two keys from the two algorithms are combined into a single data structure, and how the two resulting signatures or KEMs are combined into a single signature or KEM.  The answer can be as simple as concatenation, if the lengths are fixed or easily determined. At time of writing (August 2023) security research is ongoing as to the security properties of concatenation-based composite signatures and KEMs vs more sophisticated signature and KEM combiners, and in which protocol contexts those simpler combiners are sufficient.</t>
        <t>One last consideration is the pairs of algorithms that can be combined.  A recent trends in protocols is to only allow a small number of "known good" configurations that make sense, instead of allowing arbitrary combinations of individual configuration choices that may interact in dangerous ways.  The current consensus is that the same approach should be followed for combining cryptographic algorithms, and that "known good" pairs should be explicitly listed ("explicit composite"), instead of just allowing arbitrary combinations of any two crypto algorithms ("generic composite").</t>
        <t>The same considerations apply when using multiple certificates to transport a pair of related keys for the same subject.  Exactly how two certificates should be managed in order to avoid some of the pitfalls mentioned above is still an active area of investigation.  Using two certificates keeps the certificate tooling simple and straightforward, but in the end simply moves the problems with requiring that both certs are intended to be used as a pair, must produce two signatures which must be carried separately, and both must validate, to the certificate management layer, where addressing these concerns in a robust way can be difficult.</t>
        <t>At least one scheme has been proposed that allows the pair of certificates to exist as a single certificate when being issued and managed, but dynamically split into individual certificates when needed (https://datatracker.ietf.org/doc/draft-bonnell-lamps-chameleon-certs/).</t>
        <t>Another potential application of hybrids bears mentioning, even though it is not directly PQC-related. That is using hybrids to navigate inter-jurisdictional cryptographic connections. Traditional cryptography is already fragmented by jurisdiction, consider that while most jurisdictions support Elliptic Curve Diffie-Hellman, those in the United States will prefer the NIST curves while those in Germany will prefer the brainpool curves. China, Russia, and other jurisdictions have their own national cryptography standards. This situation of fragmented global cryptography standards is unlikely to improve with PQC. If "and" mode hybrids become standardised for the reasons mentioned above, then one could imagine leveraging them to create "ciphersuites" in which a single cryptographic operation simultaneously satisfies the cryptographic requirements of both endpoints.</t>
        <t>Many of these points are still being actively explored and discussed, and the consensus may change over time.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="cryptanalysis">
        <name>Cryptanalysis</name>
        <t>Classical cryptanalysis exploits weaknesses in algorithm design, mathematical vulnerabilities, or implementation flaws, that are exploitable with classical (i.e., non-quantum) hardware whereas quantum cryptanalysis harnesses the power of CRQCs to solve specific mathematical problems more efficiently. Another form of quantum cryptanalysis is 'quantum side-channel' attacks. In such attacks, a device under threat is directly connected to a quantum computer, which then injects entangled or superimposed data streams to exploit hardware that lacks protection against quantum side-channels. Both pose threats to the security of cryptographic algorithms, including those used in PQC. Developing and adopting new cryptographic algorithms resilient against these threats is crucial for ensuring long-term security in the face of advancing cryptanalysis techniques.
Recent attacks on the side-channel implementations using deep learning based power analysis have also shown that one needs to be cautious while implementing the required PQC algorithms in hardware. Two of the most recent works include: one attack on Kyber <xref target="KyberSide"/> and one attack on Saber <xref target="SaberSide"/>. Evolving threat landscape points to the fact that lattice based cryptography is indeed more vulnerable to side-channel attacks as in <xref target="SideCh"/>, <xref target="LatticeSide"/>. Consequently, there were some mitigation techniques for side channel attacks that have been proposed as in <xref target="Mitigate1"/>, <xref target="Mitigate2"/>, and <xref target="Mitigate3"/>.</t>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>Cryptographic agility is relevant for both classical and quantum cryptanalysis as it enables organizations to adapt to emerging threats, adopt stronger algorithms, comply with standards, and plan for long-term security in the face of evolving cryptanalytic techniques and the advent of CRQCs.
Several PQC schemes are available that need to be tested; cryptography experts around the world are pushing for the best possible solutions, and the first standards that will ease the introduction of PQC are being prepared. It is of paramount importance and a call for imminent action for organizations, bodies, and enterprises to start evaluating their cryptographic agility, assess the complexity of implementing PQC into their products, processes, and systems, and develop a migration plan that achieves their security goals to the best possible extent.</t>
        <t>An important and often overlooked step in achieving cryptographic agility is maintaining a cryptographic inventory. Modern software stacks incorporate cryptography in numerous places, making it challenging to identify all instances. Therefore, cryptographic agility and inventory management take two major forms: First, application developers responsible for software maintenance should actively search for instances of hardcoded cryptographic algorithms within applications. When possible, they should design the choice of algorithm to be dynamic, based on application configuration. Second, administrators, policy officers, and compliance teams should take note of any instances where an application exposes cryptographic configurations. These instances should be managed either through organization-wide written cryptographic policies or automated cryptographic policy systems.</t>
        <t>Numerous commercial solutions are available for both detecting hardcoded cryptographic algorithms in source code and compiled binaries, as well as providing cryptographic policy management control planes for enterprise and production environments.</t>
      </section>
      <section anchor="hybrid-key-exchange-and-signatures-bridging-the-gap-between-post-quantum-and-traditional-cryptography">
        <name>Hybrid Key Exchange and Signatures: Bridging the Gap Between Post-Quantum and Traditional Cryptography</name>
        <t>Post-quantum algorithms selected for standardization are relatively new and they they have not been subject to the same depth of study as traditional algorithms. PQC implementations will also be new and therefore more likely to contain implementation bugs than the battle-tested crypto implementations that we rely on today. In addition, certain deployments may need to retain traditional algorithms due to regulatory constraints, for example FIPS
<xref target="SP-800-56C"/> or PCI compliance. Hybrid key exchange enables potential security against "Harvest Now, Decrypt Later" attack and hybrid signatures provide for time to react in the case of the announcement of a devastating attack against any one algorithm, while not fully abandoning traditional cryptosystems.</t>
      </section>
    </section>
    <section anchor="further-reading-resources">
      <name>Further Reading &amp; Resources</name>
      <section anchor="reading-list">
        <name>Reading List</name>
        <t>(A reading list. <eref target="https://nostarch.com/seriouscrypto">Serious Cryptography</eref>. Pointers to PQC sites with good explanations. List of reasonable Wikipedia pages.)</t>
      </section>
      <section anchor="developer-resources">
        <name>Developer Resources</name>
        <ul spacing="normal">
          <li>
            <t><eref target="https://openquantumsafe.org/">Open Quantum Safe</eref> and corresponding <eref target="https://github.com/open-quantum-safe">github</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/ietf-wg-pquip/state-of-protocols-and-pqc">PQUIP WG list of PQC-related protocol work within the IETF</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The authors would like to acknowledge that this content is assembled from countless hours of discussion and countless megabytes of email discussions. We have tried to reference as much source material as possible, and apologize to anyone whose work was inadvertently missed.</t>
      <t>In particular, the authors would like to acknowledge the contributions to this document by the following individuals:</t>
      <t>Kris Kwiatkowski</t>
      <t>PQShield, LTD</t>
      <t>United Kingdom.</t>
      <t>kris@amongbytes.com</t>
      <t>Mike Ounsworth</t>
      <t>Entrust</t>
      <t>Canada</t>
      <t>mike.ounsworth@entrust.com</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>It leverages text from https://github.com/paulehoffman/post-quantum-for-engineers/blob/main/pqc-for-engineers.md. Thanks to Dan Wing, Florence D, Thom Wiggers, Sophia Grundner-Culemann, Panos Kampanakis, Ben S3, Sofia Celi, Melchior Aelmans, and Falko Strenzke for the discussion, review and comments.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8391">
          <front>
            <title>XMSS: eXtended Merkle Signature Scheme</title>
            <author fullname="A. Huelsing" initials="A." surname="Huelsing"/>
            <author fullname="D. Butin" initials="D." surname="Butin"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="J. Rijneveld" initials="J." surname="Rijneveld"/>
            <author fullname="A. Mohaisen" initials="A." surname="Mohaisen"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This note describes the eXtended Merkle Signature Scheme (XMSS), a hash-based digital signature system that is based on existing descriptions in scientific literature. This note specifies Winternitz One-Time Signature Plus (WOTS+), a one-time signature scheme; XMSS, a single-tree scheme; and XMSS^MT, a multi-tree variant of XMSS. Both XMSS and XMSS^MT use WOTS+ as a main building block. XMSS provides cryptographic digital signatures without relying on the conjectured hardness of mathematical problems. Instead, it is proven that it only relies on the properties of cryptographic hash functions. XMSS provides strong security guarantees and is even secure when the collision resistance of the underlying hash function is broken. It is suitable for compact implementations, is relatively simple to implement, and naturally resists side-channel attacks. Unlike most other signature systems, hash-based signatures can so far withstand known attacks using quantum computers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8391"/>
          <seriesInfo name="DOI" value="10.17487/RFC8391"/>
        </reference>
        <reference anchor="RFC8554">
          <front>
            <title>Leighton-Micali Hash-Based Signatures</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Curcio" initials="M." surname="Curcio"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This note describes a digital-signature system based on cryptographic hash functions, following the seminal work in this area of Lamport, Diffie, Winternitz, and Merkle, as adapted by Leighton and Micali in 1995. It specifies a one-time signature scheme and a general signature scheme. These systems provide asymmetric authentication without using large integer mathematics and can achieve a high security level. They are suitable for compact implementations, are relatively simple to implement, and are naturally resistant to side-channel attacks. Unlike many other signature systems, hash-based signatures would still be secure even if it proves feasible for an attacker to build a quantum computer.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF. This has been reviewed by many researchers, both in the research group and outside of it. The Acknowledgements section lists many of them.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8554"/>
          <seriesInfo name="DOI" value="10.17487/RFC8554"/>
        </reference>
        <reference anchor="RFC9242">
          <front>
            <title>Intermediate Exchange in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>This document defines a new exchange, called "Intermediate Exchange", for the Internet Key Exchange Protocol Version 2 (IKEv2). This exchange can be used for transferring large amounts of data in the process of IKEv2 Security Association (SA) establishment. An example of the need to do this is using key exchange methods resistant to Quantum Computers (QCs) for IKE SA establishment. The Intermediate Exchange makes it possible to use the existing IKE fragmentation mechanism (which cannot be used in the initial IKEv2 exchange), helping to avoid IP fragmentation of large IKE messages if they need to be sent before IKEv2 SA is established.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9242"/>
          <seriesInfo name="DOI" value="10.17487/RFC9242"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="Grover-search">
          <front>
            <title>C. Zalka, “Grover’s quantum searching algorithm is optimal,” Physical Review A, vol. 60, pp. 2746-2751, 1999.</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Threat-Report" target="https://globalriskinstitute.org/publications/quantum-threat-timeline-report-2020/">
          <front>
            <title>Quantum Threat Timeline Report 2020</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="QC-DNS" target="https://www.icann.org/octo-031-en.pdf">
          <front>
            <title>Quantum Computing and the DNS</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="NIST" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization">
          <front>
            <title>Post-Quantum Cryptography Standardization</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Cloudflare" target="https://blog.cloudflare.com/nist-post-quantum-surprise/">
          <front>
            <title>NIST’s pleasant post-quantum surprise</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Falcon" target="https://falcon-sign.info/">
          <front>
            <title>Fast Fourier lattice-based compact signatures over NTRU</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Dilithium" target="https://pq-crystals.org/dilithium/index.shtml">
          <front>
            <title>Cryptographic Suite for Algebraic Lattices (CRYSTALS) - Dilithium</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="SPHINCS" target="https://sphincs.org/index.html">
          <front>
            <title>SPHINCS+</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA" target="https://dl.acm.org/doi/pdf/10.1145/359340.359342">
          <front>
            <title>A Method for Obtaining Digital Signatures and Public-Key Cryptosystems+</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CS01" target="https://eprint.iacr.org/2001/108">
          <front>
            <title>Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="BHK09" target="https://eprint.iacr.org/2009/418">
          <front>
            <title>Subtleties in the Definition of IND-CCA: When and How Should Challenge-Decryption be Disallowed?</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="GMR88" target="https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Digital%20Signatures/A_Digital_Signature_Scheme_Secure_Against_Adaptive_Chosen-Message_Attack.pdf">
          <front>
            <title>A digital signature scheme secure against adaptive chosen-message attacks.</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="PQCAPI" target="https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/example-files/api-notes.pdf">
          <front>
            <title>PQC - API notes</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA8HRS" target="https://arxiv.org/abs/1905.09749">
          <front>
            <title>How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RSA10SC" target="https://www.quintessencelabs.com/blog/breaking-rsa-encryption-update-state-art">
          <front>
            <title>Breaking RSA Encryption - an Update on the State-of-the-Art</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="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="RFC6090">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="K. Igoe" initials="K." surname="Igoe"/>
            <author fullname="M. Salter" initials="M." surname="Salter"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier. These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years. Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="I-D.draft-ietf-lake-edhoc-22">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="25" month="August" year="2023"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-cfrg-kem-combiners-04"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="I-D.westerbaan-cfrg-hpke-xyber768d00-02">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum KEM for HPKE</title>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="May" year="2023"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum KEM,
   for HPKE (RFC9180).  This KEM does not support the authenticated
   modes of HPKE.

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

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

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

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

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

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

   Note to RFC Editor: SPHINCS+ is described and noted as a part of the
   2022 PQC Selected Digital Signature Algorithims
   (https://csrc.nist.gov/Projects/post-quantum-cryptography/selected-
   algorithms-2022) As a result, this document should not be proceed to
   AUTH48 until NIST completes paramter tuning and selection as a part
   of the PQC (https://csrc.nist.gov/projects/post-quantum-cryptography)
   standardization process.

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-09"/>
        </reference>
        <reference anchor="RFC9370">
          <front>
            <title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="CJ. Tjhai" initials="CJ." surname="Tjhai"/>
            <author fullname="M. Tomlinson" initials="M." surname="Tomlinson"/>
            <author fullname="G. Bartlett" initials="G." surname="Bartlett"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document describes how to extend the Internet Key Exchange Protocol Version 2 (IKEv2) to allow multiple key exchanges to take place while computing a shared secret during a Security Association (SA) setup.</t>
              <t>This document utilizes the IKE_INTERMEDIATE exchange, where multiple key exchanges are performed when an IKE SA is being established. It also introduces a new IKEv2 exchange, IKE_FOLLOWUP_KE, which is used for the same purpose when the IKE SA is being rekeyed or is creating additional Child SAs.</t>
              <t>This document updates RFC 7296 by renaming a Transform Type 4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and renaming a field in the Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange Method". It also renames an IANA registry for this Transform Type from "Transform Type 4 - Diffie- Hellman Group Transform IDs" to "Transform Type 4 - Key Exchange Method Transform IDs". These changes generalize key exchange algorithms that can be used in IKEv2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9370"/>
          <seriesInfo name="DOI" value="10.17487/RFC9370"/>
        </reference>
        <reference anchor="I-D.ounsworth-pq-composite-keys">
          <front>
            <title>Composite Public and Private Keys For Use In Internet PKI</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>CableLabs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>D-Trust GmbH</organization>
            </author>
            <date day="29" month="May" year="2023"/>
            <abstract>
              <t>   The migration to post-quantum cryptography is unique in the history
   of modern digital cryptography in that neither the old outgoing nor
   the new incoming algorithms are fully trusted to protect data for the
   required data lifetimes.  The outgoing algorithms, such as RSA and
   elliptic curve, may fall to quantum cryptalanysis, while the incoming
   post-quantum algorithms face uncertainty about both the underlying
   mathematics as well as hardware and software implementations that
   have not had sufficient maturing time to rule out classical
   cryptanalytic attacks and implementation bugs.

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

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

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

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

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

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

   Original abstract:

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-truskovsky-lamps-pq-hybrid-x509-02"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9296XIbWbIm+J9PEcO0mSS7EOCilapbC0VRKY42pihV1p20
7MwAcAhEMRCBjAiQQinVVj/HrP/N/BqzHrN+ln6UepLxz93PFghQUlXdunea
VqUkgVjO4sd3/zxN0602bwvzKNk+r5o2/XaZle1ynpzUq0VbTetsMVsll1Wd
nJbTvDSmbra3stGoNte449uT7nfjrDXTql49SvLystramlTjMpvT4yd1dtmm
uWkv08XPy3xB/45TY29MC7qvabea5WieN01ele1qQXednb59ulUu5yNTP9qa
0DWPtsZV2ZiyWTaPkrZemi0ayJ2trDYZDejCjJd13q62t26q+mpaV8sFD/Pd
2fn21pVZ0aeTR1tJmtDIt7a2rk25pCcmib2SR7ZNH8jbt7+jp+TlNPkG3+Pz
eZYXfN3495jKsKqn+DirxzP6eNa2i+bR3h6uwkf5tRnay/bwwd6orm4as0f3
723TAJo2Kyc/ZkVV0ttWptla5I+S79tqPEiaqm5rc9nQb6u5/tLW+bgdJONq
PjdlS5/Q6s6zxYKG+MPWVrZsZ1WN6dGIkuRyWRSy9Me0JHWWPM5KU//JGP6W
RpSV+Z+zlpb6UfKqusoz/nxMq/coebks8/FMPqiWZYv9/MbU86xc8YdG1yHj
Jw9H+uTfl3jOkMa3vT6Kt3m9nGeFaW6yOnljJpPVZwyExjyl5all0LWZ8lXP
s7rM2uwqi0d4Vk70Zju+q6qctHn9+yn+3jCuJ/mcJpFXTXIxnlV5mWdldpU3
nzG443ZGhNhZpdqYsYkGMbEvGDbhC2Sx0pEpCqL+UbNx2eZVS2fwWVUUZmTM
Vc/AnuTT/MTUbTC287xtm9GynnZ28d3FcTS4Np8PZ/bRv5/Qg8b0IBnL1lZZ
0Z63RMaPtrZwnv1fCc7EtanTxjDx80MTy0pOhsn/kRVX2SD561/+m1z417/8
P03ys3IXuQknKyuIW+TtbJ7kTVItaDhZMfjrX/7f5Hy2avJxVhCpXOfmJjke
JNdVMUzu7w+SxWKYHD64ez89fHDvYJAcHB0dDbd1BFk9Na0OhxlGcpkVDXbk
7YyYRJu+MQs6Wp0BW7Yn12DRTUGcKZGLk8P9w/34BYk969OiGmVFnTfEKBp6
3LI1fNwXy1FB48cGNXs677SVIbT6+LTmx6d4/F7fkL89SZ+8utgw1pNqvli2
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
y4u8jDx7n7bDSN48reDgaVoJZkFP/57+kcDI6ckJHfffvXl6cn//CKE8VSeZ
B0POVAgHSCw/SgqYS8E4EgKUJTYaCw71KQg0gxQw7yx26X3IbOxPrvQavc0I
42E40TGUomgJp7KSYJOpbeZdJ8zOy6eKay4iZCkqcG/2prjPxZ8qEUdUlFX2
Dz9JWYSBamNq3c9QS9ufGMpuoiCWLv4crHU3SwF5FsyRIk/fhXpQDoAJwgno
TCaaGNFyxTF7A3TwzPydelfJB63V7gK9ghPBkKpO+9uKa5ATALqptSmnyfNS
LBaWN+mHkunBcqiqNd7JnkuXPzqB5FDRERwVx7p6WCNu+Opz81Kg7X8f14Z6
LtBFY7jC13u7j6Q0VZQF0tqXZOsVJqtLq2ckZEvDOtt5+eK7012tNOw7DzqY
ZOfDh6gs8eNHlpg6DW+FxKN1YBKbR+zxI2jU6zfKFPTV6+X568PiY0uyHvyM
r+GR0qAEsMMPZA1dg94v1/zj3mnRLfxbQ0ALeqG9QNU6BOzZHQZlTXel7/3+
600vB0meeGoUXV39veyZCwRRr/QmXgWSFs9pdLXawUzwVp3xLiJRt0G5ojHY
NF4JbfEDclF/+IB0BV6HXYYODs8ROG6kkSJhDUzu4loOz2DLtpube+88AS3D
RCucLXk5Pi1yUm8DUSvfDOdjw9/YzXscGqMYU4mlgJ9zVZKUQ3aXId2XOehl
8k21WGSsC9PKBH+waMyEsXImIE5mSuyl1gw4ucpJD/0Gt0juZyLIau5eSVMW
jgj1wzjTSXbEDcquYF4ijsqpmpw3YJPpaCOmHLyyer2Lrqr6P1GIBIwQISem
+cdnz0/92o3yK2K/edu/aJ+1cN+epC+fnJ/YpSMjuMnTk9UY1vpLeLDhIXiC
JNZ2lZxnnM9zMjNkSe7orbviKu9b6KR/oQvOegXjB2LEZZFrUSUH8H9emq7z
y26KbACvw7NvT2QZmOmN09nPY1mD5EspR2Y8lhkTf4LnpuQ4yRtkJb1cFoWp
5fcLMjuQ8r7z5uWbi12dkabbPMvmc86jZ9VqGN1M1+/2k6PY5BvWihUqztjI
2XuAdLK8FhYmuf9mQcYq9JQ49WPYHe7F7he9ODar2VUmaVmcpSZ7MSepny9I
8mELg425iAi0Qdha9mXncV1dmRJseYnCSnrdEo6rs6aaGjLK14X1Dp6127HJ
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
ghkSKV76RNHk6dn5xRYpr+fpw/399N79E9K7AU15chZwjaGlpKj4xWpy3iHo
I69qO31OjjvH/zTbyvuIbe4gqzy21sFoUEXzQ52zHeVIKN2Yq2rGtnHGPZMh
GvU9Oib2rZRRK3cxdrjtLVewZMhBqMpuEqbsp2ctXyVPFd7sjcn4PP9v9JuC
ZvIBtJ+/IA69tYPglvyNQMsw+f7CSLZAeJp+cB7bsoJCNJ4NaSP2GrlUhrBL
BF3lpc3VZ9Uzb7WtCId5JFm2tCwZ75cwCPxkzOu+y6/yBUqeSLFD+diutrNR
mRpOJE2+f72gI2iZwUV2afww6epSz35DX7BfeVe5YC2Cmef8/ZQGtxz5G+Vv
nh2eYRlIiqfs4qXn3747O0+++4aXS3VU6yj20UpOrr3xDRfQXLX3JZwpeTOV
YpI9bkuDHCcXX+TukYufx7sCwVJKszySqhKUsh1apc6PcclhtYwRWyNWP3WJ
TZwDJCjibPU0Zj6CLOBYOWONSJMwWl5tx8suOwsh568IQNnJRCFVpgiuhcJh
1G3L8RM+IAqJx/nocBepYHKYyFkTaCisvC9QKsOhfm44VnGGJnwpsq5sVUpB
AZuvpBHDuygo4j5PSFIVP2eJBGKdl9Zafrxkk2q85PM7WmnWgY0u+jBH82hr
K0mS5yT9kuc3edZeVTfNVc4fnn97MUNt5iB58fYJf6LO9ef0jEk1H/JnV3Tr
78mMKae8sKCLLf7iJQb72mbu8kenJVey8e8ndJYmGf86pyt9ju/vjVwlT/oq
OfaTZa699eGRRKfN5DfblzQFs/2R81N9d1cGV2Hi6CHaRbYszIzUOdIK9sIs
MU7wZT3cEBvYGxXVaA/a7h5RcPzdcC5hlfKKV/sJyarvOCzzFG5jUMuTAX1P
7/8un05ZabxACkGWfFOTLVqaOj2hQdAASDCdZ8SWkuckPGhFrlBa95g4wwUg
QqtLuuXEFPkgeWkKMl+A82sQ9VA19GlWXFXJBUL7f77yuOyeptEx4jpXSSxg
zVBl/j8C+mLqAy0BAA==

-->

</rfc>
