<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jhpark-cfrg-ntruplus-security-considerations-00" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="NTRU+ Security Considerations">NTRU+ Security Considerations</title>
    <seriesInfo name="Internet-Draft" value="draft-jhpark-cfrg-ntruplus-security-considerations-00"/>
    <author fullname="Jong Hwan Park">
      <organization>Sangmyung University</organization>
      <address>
        <email>jhpark@smu.ac.kr</email>
      </address>
    </author>
    <author fullname="Jonghyun Kim">
      <organization>Korea University</organization>
      <address>
        <email>yoswuk@korea.ac.kr</email>
      </address>
    </author>
    <author fullname="MinKyu Shin">
      <organization>ITCEN PNS</organization>
      <address>
        <email>mkshin@itcen.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="21"/>
    <area>IRTF</area>
    <workgroup>Crypto Forum</workgroup>
    <keyword>NTRU+</keyword>
    <keyword>post-quantum cryptography</keyword>
    <keyword>key encapsulation mechanism</keyword>
    <abstract>
      <?line 202?>

<t>This document describes security considerations for the use of NTRU+ in
Internet protocols.  NTRU+ is a lattice-based key encapsulation mechanism
(KEM) based on the NTRU framework and designed to provide IND-CCA2 security.
The document summarizes the scheme structure and parameter sets, and discusses
implementation and protocol considerations including key-generation rejection
sampling, input validation, pairwise consistency testing, explicit rejection
behavior, randomness requirements, and side-channel leakage during
decapsulation.  It is intended to help protocol designers and implementers use
NTRU+ safely in settings such as authenticated key exchange, public key
encryption, and KEM-based authentication.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://jhpark-prof.github.io/ntruplus-security-considerations/draft-jhpark-cfrg-ntruplus-security-considerations.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jhpark-cfrg-ntruplus-security-considerations/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Crypto Forum Research Group mailing list (<eref target="mailto:cfrg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cfrg"/>.
        Subscribe at <eref target="https://mailman.irtf.org/mailman/listinfo/cfrg"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jhpark-prof/ntruplus-security-considerations"/>.</t>
    </note>
  </front>
  <middle>
    <?line 216?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The transition to post-quantum cryptography (PQC) is driving the deployment of post-quantum key encapsulation mechanisms (KEMs) in Internet protocols. KEMs are expected to replace or complement traditional Diffie-Hellman key establishment mechanisms in protocols such as TLS, IKE, and other secure communication systems.</t>
      <t>This document provides security considerations for NTRU+, a lattice-based KEM derived from the NTRU lattice framework. NTRU+ <xref target="KP26"/> was selected as one of the final KEM algorithms in the Korean post-quantum cryptography competition in January 2025 <xref target="KpqC2025"/>, following a two-year public evaluation process that included open cryptanalysis and security review <xref target="CHH23"/> <xref target="BCG24"/>. NTRU+ is designed to achieve IND-CCA2 security and supports multiple parameter sets targeting different security levels.</t>
      <t>NTRU+ can be used in a variety of protocol settings. As a KEM, it can replace or complement ephemeral Diffie-Hellman in authenticated key exchange protocols, including TLS <xref target="RFC8446"/>, SSH <xref target="RFC4253"/>, and IKE <xref target="RFC7296"/>. It can also be used in public key encryption frameworks such as HPKE <xref target="RFC9180"/>, where a KEM is used to establish shared secret material between communicating parties.</t>
      <t>The purpose of this document is to provide guidance for the safe use of NTRU+ in IETF protocols. The document summarizes security properties, implementation requirements, validation procedures, side-channel considerations, and protocol-relevant caveats that protocol designers and implementers should consider when deploying NTRU+ in practice.</t>
    </section>
    <section anchor="ntru-overview">
      <name>NTRU+ Overview</name>
      <section anchor="scheme-description">
        <name>Scheme Description</name>
        <t>Following Lyubashevsky and Seiler <xref target="LS19"/>, NTRU+ operates over the polynomial ring <tt>R_q = Z_q[x]/&lt;Phi_{3n}(x)&gt;</tt>, where <tt>Phi_{3n}(x) = x^n - x^{n/2} + 1</tt> is a cyclotomic trinomial and q denotes the coefficient modulus. For all three NTRU+ parameter sets specified in this document, the coefficient modulus is q = 3457. The use of a cyclotomic trinomial enables efficient polynomial multiplication through the Number Theoretic Transform (NTT). Secret polynomials are sampled according to a centered binomial distribution (CBD), where each coefficient is generated by subtracting one uniformly random bit from another, resulting in values in {-1, 0, 1}.</t>
        <t>NTRU+ uses three hash functions, denoted by F, G, and H, which are instantiated with SHAKE-256 in <xref target="KP26"/>.</t>
        <t>Throughout this document, equations are written in simplified polynomial notation. The corresponding NTT-domain computations and byte encodings are specified in <xref target="KP26"/>.</t>
        <section anchor="key-generation">
          <name>Key Generation</name>
          <t>The key generation algorithm (see Section 6.3.1 of <xref target="KP26"/>) internally samples independent 32-byte random seeds, which should be generated by an approved random bit generator (RBG), and produces a public key pk and a private key sk. The seeds are used to generate short polynomials f' and g', respectively, whose coefficients are sampled according to the CBD.</t>
          <t>Key generation employs rejection sampling to ensure that both polynomials f = 3f' + 1 and g = 3g' are invertible in the ring R_q. If a generated polynomial f is not invertible, a new 32-byte seed is used to generate a replacement polynomial. The same procedure is applied to g.</t>
          <t>The public key consists of the polynomial h represented in NTT form. The private key consists of (f, h^{-1}, F(pk)), where both f and h^{-1} are stored in NTT form and F(pk) denotes a hash of the public key. After key generation is completed, the random seeds used to generate f and g should be securely erased.</t>
        </section>
        <section anchor="encapsulation">
          <name>Encapsulation</name>
          <t>The encapsulation algorithm (see Section 6.3.1 of <xref target="KP26"/>) internally samples an n-bit random message m. The message should be generated using an approved RBG. The algorithm outputs a ciphertext c and a 32-byte shared secret K.</t>
          <t>The shared secret K and an intermediate randomness \rho are derived as (K, \rho) = H(m, F(pk)). The inclusion of F(pk) in this derivation is intended to provide resistance against multi-target attacks.</t>
          <t>A short polynomial r is generated from \rho by the CBD sampling procedure, written as r = CBD(\rho). The encoded message polynomial is computed as M = Encode(m, G(r)) using the semi-generalized one-time pad (SOTP) operation, which is designed so that the coefficients of M follow the same CBD distribution. The ciphertext is then computed as c = hr + M. The resulting ciphertext polynomial is represented in NTT form.</t>
          <t>After encapsulation is completed, the n-bit random message should be securely erased.</t>
        </section>
        <section anchor="decapsulation">
          <name>Decapsulation</name>
          <t>The decapsulation algorithm (see Section 6.3.1 of <xref target="KP26"/>) takes as input a ciphertext c and the private key sk = (f, h^{-1}, F(pk)). The algorithm outputs either a 32-byte shared secret K for a valid ciphertext or a decapsulation error for an invalid ciphertext. Thus, NTRU+ employs explicit rejection for invalid ciphertexts rather than deriving and returning a pseudorandom key.</t>
          <t>The algorithm should first verify that the ciphertext c is properly formed. In particular, each coefficient of the ciphertext polynomial must be checked to ensure that it lies within the valid range defined by the modulus q. If this validation fails, the algorithm must return a decapsulation error.</t>
          <t>Otherwise, a candidate encoded message polynomial M' is first recovered as M' = (c f mod q) mod 3. A candidate randomness polynomial r' is then recovered as r' = (c - M') h^{-1}. The SOTP decoding operation computes m' = Decode(M', G(r')), where m' is either an n-bit message or the failure symbol `error'.</t>
          <t>When an n-bit candidate message m' is obtained, it is used together with the stored hash of the public key F(pk) to derive both a candidate shared secret K and an intermediate randomness \rho' as (K, \rho') = H(m', F(pk)). A regenerated polynomial r'' is then computed as r'' = CBD(\rho').</t>
          <t>Subsequently, two validation checks are performed. The first verifies that the SOTP decoding completed without error. The second verifies that the recovered randomness polynomial r' matches the regenerated polynomial r''. Only if both checks succeed is the shared secret K accepted; otherwise, the decapsulation algorithm returns a decapsulation error.</t>
          <t>To avoid creating an error oracle, implementations should perform both validation checks in constant time, avoid data-dependent branches on intermediate validation results, and combine the results before making a single acceptance or rejection decision. Implementations should not reveal which validation check failed.</t>
          <t>Upon completion of decapsulation, all intermediate values, including recovered polynomials, messages, randomness values, and candidate shared secrets, should be securely erased.</t>
        </section>
      </section>
      <section anchor="parameter-sets">
        <name>Parameter Sets</name>
        <t>NTRU+ provides three parameter sets: NTRU+768, NTRU+864, and NTRU+1152. Table 1 summarizes the ring parameters and the sizes of the cryptographic material associated with each parameter set, together with the estimated classical security levels obtained using the Lattice Estimator <xref target="APS15"/>.</t>
        <table>
          <name>Parameter-set ring parameters, sizes, and estimated classical security levels</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="right">n</th>
              <th align="right">q</th>
              <th align="right">pk</th>
              <th align="right">sk</th>
              <th align="right">ct</th>
              <th align="right">ss</th>
              <th align="right">security</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">NTRU+768</td>
              <td align="right">768</td>
              <td align="right">3457</td>
              <td align="right">1152</td>
              <td align="right">2336</td>
              <td align="right">1152</td>
              <td align="right">32</td>
              <td align="right">156</td>
            </tr>
            <tr>
              <td align="left">NTRU+864</td>
              <td align="right">864</td>
              <td align="right">3457</td>
              <td align="right">1296</td>
              <td align="right">2624</td>
              <td align="right">1296</td>
              <td align="right">32</td>
              <td align="right">179</td>
            </tr>
            <tr>
              <td align="left">NTRU+1152</td>
              <td align="right">1152</td>
              <td align="right">3457</td>
              <td align="right">1728</td>
              <td align="right">3488</td>
              <td align="right">1728</td>
              <td align="right">32</td>
              <td align="right">248</td>
            </tr>
          </tbody>
        </table>
        <t>In Table 1, n is the polynomial degree, q is the coefficient modulus, pk = public key, sk = private key, ct = ciphertext, and ss = shared secret. Key, ciphertext, and shared-secret sizes are given in bytes. Security levels are given in bits.</t>
        <t>Table 2 summarizes end-to-end single-core performance measurements of the NTRU+ KEM API. Measurements were taken on an Intel Core i7-8700K CPU @ 3.70GHz on Linux/x86_64 using clang 18.1.3 with -O3. Each benchmark was pinned to a single CPU core and measured for 10 seconds per operation. Values are rounded to the nearest operation per second.</t>
        <table>
          <name>Single-core end-to-end KEM API performance</name>
          <thead>
            <tr>
              <th align="left">Impl.</th>
              <th align="left">Parameter</th>
              <th align="right">KeyGen</th>
              <th align="right">Encap</th>
              <th align="right">Decap</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Optimized C</td>
              <td align="left">NTRU+768</td>
              <td align="right">41,225</td>
              <td align="right">53,641</td>
              <td align="right">47,787</td>
            </tr>
            <tr>
              <td align="left">Optimized C</td>
              <td align="left">NTRU+864</td>
              <td align="right">37,519</td>
              <td align="right">46,834</td>
              <td align="right">41,458</td>
            </tr>
            <tr>
              <td align="left">Optimized C</td>
              <td align="left">NTRU+1152</td>
              <td align="right">24,858</td>
              <td align="right">36,333</td>
              <td align="right">31,108</td>
            </tr>
            <tr>
              <td align="left">AVX2</td>
              <td align="left">NTRU+768</td>
              <td align="right">138,191</td>
              <td align="right">120,052</td>
              <td align="right">196,101</td>
            </tr>
            <tr>
              <td align="left">AVX2</td>
              <td align="left">NTRU+864</td>
              <td align="right">125,406</td>
              <td align="right">102,974</td>
              <td align="right">154,965</td>
            </tr>
            <tr>
              <td align="left">AVX2</td>
              <td align="left">NTRU+1152</td>
              <td align="right">84,452</td>
              <td align="right">81,498</td>
              <td align="right">123,876</td>
            </tr>
          </tbody>
        </table>
        <t>Key generation and encapsulation include randomness generation performed by the implementation.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="correctness-and-security-properties">
        <name>Correctness and Security Properties</name>
        <t>Historically, achieving negligible worst-case correctness error has been a significant challenge in NTRU-based public key encryption schemes. In classical NTRU encryption, an adversary may construct ciphertexts of the form c = hr + M by choosing r or M maliciously, making it difficult to achieve negligible worst-case correctness errors for all possible ciphertexts.</t>
        <t>To address this issue, NTRU+ employs two techniques. First, the polynomial r is deterministically derived through the Fujisaki-Okamoto (FO) transform. Second, the encoded message polynomial M is generated through the SOTP encoding procedure. As a result, an adversary no longer has direct control over the values of r and M appearing in honestly generated ciphertexts.</t>
        <t>This result builds upon <xref target="DHK23"/> and extends the analysis to the CBD sampling used in NTRU+, where r is generated by the CBD sampling procedure and the SOTP encoding makes the coefficients of M follow the same CBD distribution. Consequently, the worst-case correctness error of NTRU+ is effectively identical to the average-case correctness error over honestly generated ciphertexts.</t>
        <t>As with other lattice-based KEMs, decapsulation failures may potentially leak information about the private key. However, NTRU+ is designed so that the probability of a decapsulation failure for an honestly generated ciphertext is negligible, rendering such failures irrelevant in practice.</t>
        <t>The IND-CCA2 security of NTRU+ is based on the hardness of the NTRU and Ring-LWE problems and, in particular, admits a tight security reduction in the random oracle model. The security proof begins with the construction of an underlying NTRU encryption scheme (denoted as GenNTRU in <xref target="KP26"/>), which is OW-CPA secure under the NTRU and Ring-LWE assumptions.</t>
        <t>The explicit rejection of invalid ciphertexts follows from the \gamma-spreadness property of GenNTRU, while the re-encryption-free FO transform relies on the rigidity properties of both GenNTRU and SOTP.</t>
      </section>
      <section anchor="rejection-sampling-in-key-generation">
        <name>Rejection Sampling in Key Generation</name>
        <t>As described in Section 2.1, key generation repeats the sampling of f and g until both polynomials are invertible in the ring R_q.</t>
        <t>The probability that a randomly generated small polynomial is invertible in R_q can be heuristically estimated from the full factorization of R_q over F_q. For NTRU+768, NTRU+864, and NTRU+1152, the relevant factor degrees are 2, 3, and 1, respectively, giving approximate per-polynomial invertibility probabilities of about 1.00 for (1 - 3457^{-2})^{768/2}, about 1.00 for (1 - 3457^{-3})^{864/3}, and about 0.72 for (1 - 3457^{-1})^{1152}. Consequently, the probability that both f and g are invertible is approximately 1.00 for NTRU+768 and NTRU+864, and approximately 0.51 for NTRU+1152.</t>
        <t>As shown in Table 2, key generation in NTRU+ remains computationally efficient in both the optimized C and AVX2 implementations. Even for NTRU+1152, where rejection sampling is more frequent, the expected number of samples for each of f and g remains below 1.5, and the resulting overhead remains small in the measured implementations.</t>
        <t>The use of rejection sampling implies that the execution time of key generation is not strictly constant and exhibits some variance. However, this timing variation depends only on the randomness used during key generation and does not affect the security of the generated key pair.</t>
        <t>Polynomial inversion in NTT representation can be efficiently implemented using the hierarchical batch inversion technique of <xref target="KCP26"/>, which applies Montgomery's trick to reduce the number of field inversions.</t>
      </section>
      <section anchor="pairwise-consistency-testing-considerations">
        <name>Pairwise Consistency Testing Considerations</name>
        <t>The NTRU+ key-generation procedure described above does not include a Pairwise Consistency Test (PCT). Implementations seeking FIPS 140-3 validation may perform a PCT following CMVP guidance by executing an encapsulation and a subsequent decapsulation using a newly generated key pair and verifying that both operations derive the same shared secret. While such a test can reliably detect non-functional key pairs, it provides only limited assurance against malformed or fault-induced keys that continue to operate correctly on honestly generated ciphertexts.</t>
        <t>We note that NTRU+ may admit a more direct form of Pairwise Consistency Test (PCT) than the encapsulation-decapsulation test described above. In particular, it may be possible to verify certain mathematical consistency relations between the public key pk = h and the private key sk = (f, h^{-1}, F(pk)) by exploiting properties of the SOTP encoding and the CBD-based construction used in NTRU+. Exploring such an approach is beyond the scope of this document. Moreover, incorporating such a PCT would likely require modest modifications to the current key-generation algorithm.</t>
      </section>
      <section anchor="input-entropy-of-keying-material">
        <name>Input Entropy of Keying Material</name>
        <t>The encapsulation algorithm internally samples an n-bit random message, from which a 32-byte shared secret is derived. This contrasts with ML-KEM, where the encapsulation process always starts from a fixed 32-byte random value. As a result, NTRU+ uses a larger amount of internal encapsulation randomness.</t>
        <t>While a 32-byte randomness source is sufficient for currently targeted security levels, the NTRU+ design retains the flexibility to accommodate larger amounts of input entropy should future cryptographic requirements evolve.</t>
      </section>
      <section anchor="input-validation-checks-in-encapsulation-and-decapsulation">
        <name>Input Validation Checks in Encapsulation and Decapsulation</name>
        <t>During encapsulation, an implementation should perform a type check on the public key pk before processing. If this validation fails, encapsulation must not continue. NTRU+ does not require an explicit modulus check on each coefficient of pk during encapsulation. Any modification of the public key results in a mismatch between the value F(pk) stored in the private key and the hash value derived from the modified public key during encapsulation, causing the decapsulation procedure to reject the resulting ciphertext.</t>
        <t>During decapsulation, an implementation should perform both a ciphertext type check and an explicit modulus check on the received ciphertext. If either validation fails, decapsulation must not continue. In particular, the explicit modulus check is essential because the decapsulation procedure of NTRU+ does not perform a re-encryption and ciphertext equality check as part of the FO transform.</t>
        <t>The modulus check is particularly important in NTRU+, where the modulus is q = 3457 and each ciphertext coefficient is represented as a 12-bit integer. The gap between the modulus q and the 12-bit representation permits multiple encodings of the same element in the ring R_q. Without an explicit modulus check, this ambiguity can potentially lead to IND-CCA2 attacks.</t>
        <t>For example, if a ciphertext coefficient is equal to 1, an adversary may replace it with 3458. Both values can be represented as valid 12-bit integers and satisfy 3458 = 1 (mod 3457). As a result, an adversary can construct a ciphertext that is distinct from a target ciphertext at the bit-string level while remaining equivalent modulo q, thereby violating the uniqueness of ciphertext encodings assumed by the security proof.</t>
        <t>In addition, an implementation should verify that the private key has the expected length and corresponds to the intended parameter set before performing decapsulation. If this validation fails, decapsulation must not continue. Unlike the ciphertext modulus check described above, this private-key validation is primarily intended to detect malformed inputs and implementation errors rather than to enforce a security property of the NTRU+ construction itself.</t>
      </section>
      <section anchor="explicit-rejection-in-decapsulation">
        <name>Explicit Rejection in Decapsulation</name>
        <t>Unlike ML-KEM, which returns a pseudorandom shared secret for an invalid ciphertext, NTRU+ provides explicit rejection and returns a decapsulation error. Protocol designers should understand both the benefits and limitations of this design choice.</t>
        <t>In many authenticated key-exchange protocols, explicit rejection is not strictly necessary. Even if a KEM returns a pseudorandom shared secret for an invalid ciphertext, the resulting key material is typically used to derive symmetric-key encryption keys and MAC keys. Subsequent protocol steps, such as MAC verification or key confirmation, will fail if the two parties derive different shared secrets. As a result, protocols such as TLS, SSH, and IKE can safely operate with either implicit rejection or explicit rejection.</t>
        <t>However, explicit rejection becomes more useful when a KEM is employed in a public key encryption setting. In such applications, the derived shared secret is often used directly to decrypt a protected payload. If implicit rejection is used, the recipient must first determine whether the derived key is valid before attempting decryption. This typically requires an additional integrity check, such as an authenticated-encryption tag or a MAC. By contrast, explicit rejection allows the recipient to terminate processing immediately upon detection of an invalid ciphertext.</t>
        <t>A similar consideration arises when a KEM is used as an authentication mechanism. In a typical KEM-based authentication protocol, the verifier sends a ciphertext and the prover responds with an additional protocol message, such as a MAC, to demonstrate possession of the correct shared secret. When implicit rejection is used, decapsulation always produces a candidate shared secret, and therefore the verifier must rely on the subsequent protocol message to determine whether decapsulation succeeded. In contrast, with explicit rejection, invalid ciphertexts are detected and rejected during decapsulation itself, allowing the protocol to terminate immediately upon failure and simplifying the protocol logic.</t>
        <t>Therefore, explicit rejection does not generally provide a significant advantage in authenticated key-exchange protocols that already incorporate key confirmation, authenticated encryption, or equivalent integrity checks. Nevertheless, it can simplify protocol design in public key encryption and KEM-based authentication settings by allowing invalid ciphertexts to be detected directly during decapsulation, rather than requiring validation through subsequent use of the derived key.</t>
      </section>
      <section anchor="side-channel-leakage-in-hash-computation">
        <name>Side-Channel Leakage in Hash Computation</name>
        <t>The following discussion is intended to illustrate a potential attack strategy and does not constitute a complete attack analysis. For a target ciphertext c = hr + M, let r and M denote the randomness polynomial and encoded message polynomial recovered during decapsulation. Leakage from the computation of G(r) may reveal information about M. This observation is similar in spirit to the side-channel attack of <xref target="UXT21"/>, which exploits leakage during the hash computation performed as part of KEM decapsulation.</t>
        <t>One possible attack proceeds as follows. Let c be a target ciphertext and let c_i denote one of its coefficients. The adversary guesses that the corresponding encoded-message coefficient M_i is zero and constructs a modified ciphertext c' by adding 1 to c_i. The modified ciphertext is then submitted to a decapsulation device holding the unknown private key sk, while the adversary observes side-channel information associated with the computation of G(r).</t>
        <t>If the adversary can determine that the same polynomial r is hashed during the decapsulation of both c and c', then information about M_i is obtained. In particular, when M_i=0, the modification causes the recovered encoded message polynomial to change from M to M', while the relation c' - M' = c - M continues to hold with high probability. Consequently, (c' - M') h^{-1} = r, and the same polynomial r is supplied to the hash function. Detecting this event through side-channel observations allows the adversary to distinguish whether M_i=0, thereby revealing information about the decrypted message.</t>
        <t>Implementations should ensure that the computation of G(r) is performed in constant time and does not reveal information about its input through timing, power consumption, cache access, or other side channels.</t>
        <t>One important distinction between the side-channel attack of <xref target="UXT21"/> and the attack described above is that the former may lead to recovery of private-key information, whereas the latter is limited to leakage of information about the decrypted message. As a result, the latter does not directly threaten the long-term secrecy of the private key. Nevertheless, both attacks demonstrate the need for side-channel-resistant implementations of the hash computation performed during decapsulation.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="KpqC2025" target="https://www.kpqc.or.kr/contents/03_exhibit/board.html?board_id=board_competition&amp;mode=view&amp;no=9">
        <front>
          <title>KpqC Competition Second-Round Final Results Announcement</title>
          <author>
            <organization>KpqC</organization>
          </author>
          <date year="2025"/>
        </front>
      </reference>
      <reference anchor="KP26" target="https://www.kpqc.or.kr/images/pdf2/NTRU%2B.pdf">
        <front>
          <title>NTRU+: Compact Construction of NTRU Using Simple Encoding Method</title>
          <author initials="J." surname="Kim" fullname="Jonghyun Kim">
            <organization/>
          </author>
          <author initials="J. H." surname="Park" fullname="Jong Hwan Park">
            <organization/>
          </author>
          <date year="2026"/>
        </front>
      </reference>
      <reference anchor="CHH23" target="https://eprint.iacr.org/2023/1853">
        <front>
          <title>Report on evaluation of KpqC candidates</title>
          <author initials="J." surname="Cottaar" fullname="Jolijn Cottaar">
            <organization/>
          </author>
          <author initials="K." surname="Hövelmanns" fullname="Kathrin Hövelmanns">
            <organization/>
          </author>
          <author initials="A." surname="Hülsing" fullname="Andreas Hülsing">
            <organization/>
          </author>
          <author initials="T." surname="Lange" fullname="Tanja Lange">
            <organization/>
          </author>
          <author initials="M." surname="Mahzoun" fullname="Mohammad Mahzoun">
            <organization/>
          </author>
          <author initials="A." surname="Pellegrini" fullname="Alex Pellegrini">
            <organization/>
          </author>
          <author initials="A." surname="Ravagnani" fullname="Alberto Ravagnani">
            <organization/>
          </author>
          <author initials="S." surname="Schäge" fullname="Sven Schäge">
            <organization/>
          </author>
          <author initials="M." surname="Trimoska" fullname="Monika Trimoska">
            <organization/>
          </author>
          <author initials="B. de" surname="Weger" fullname="Benne de Weger">
            <organization/>
          </author>
          <date year="2023"/>
        </front>
      </reference>
      <reference anchor="BCG24" target="https://eprint.iacr.org/2024/2077">
        <front>
          <title>Report on evaluation of KpqC Round-2 candidates</title>
          <author initials="D. J." surname="Bernstein" fullname="Daniel J. Bernstein">
            <organization/>
          </author>
          <author initials="J." surname="Cottaar" fullname="Jolijn Cottaar">
            <organization/>
          </author>
          <author initials="E. D." surname="Giandomenico" fullname="Emanuele Di Giandomenico">
            <organization/>
          </author>
          <author initials="K." surname="Hövelmanns" fullname="Kathrin Hövelmanns">
            <organization/>
          </author>
          <author initials="A." surname="Hülsing" fullname="Andreas Hülsing">
            <organization/>
          </author>
          <author initials="M." surname="Kudinov" fullname="Mikhail Kudinov">
            <organization/>
          </author>
          <author initials="T." surname="Lange" fullname="Tanja Lange">
            <organization/>
          </author>
          <author initials="M." surname="Mahzoun" fullname="Mairon Mahzoun">
            <organization/>
          </author>
          <author initials="M." surname="Meijers" fullname="Matthias Meijers">
            <organization/>
          </author>
          <author initials="A." surname="Pellegrini" fullname="Alex Pellegrini">
            <organization/>
          </author>
          <author initials="A." surname="Ravagnani" fullname="Alberto Ravagnani">
            <organization/>
          </author>
          <author initials="S." surname="Ritsch" fullname="Silvia Ritsch">
            <organization/>
          </author>
          <author initials="S." surname="Schäge" fullname="Sven Schäge">
            <organization/>
          </author>
          <author initials="T." surname="Tang" fullname="Tianxin Tang">
            <organization/>
          </author>
          <author initials="M." surname="Trimoska" fullname="Monika Trimoska">
            <organization/>
          </author>
          <author initials="M." surname="Vorstermans" fullname="Marc Vorstermans">
            <organization/>
          </author>
          <author initials="F. J." surname="Weber" fullname="Fiona Johanna Weber">
            <organization/>
          </author>
          <date year="2024"/>
        </front>
      </reference>
      <reference anchor="LS19" target="https://tches.iacr.org/index.php/TCHES/article/view/8293">
        <front>
          <title>NTTRU: Truly Fast NTRU Using NTT</title>
          <author initials="V." surname="Lyubashevsky" fullname="Vadim Lyubashevsky">
            <organization/>
          </author>
          <author initials="G." surname="Seiler" fullname="Gregor Seiler">
            <organization/>
          </author>
          <date year="2019"/>
        </front>
      </reference>
      <reference anchor="APS15" target="https://eprint.iacr.org/2015/046">
        <front>
          <title>On the concrete hardness of Learning with Errors</title>
          <author initials="M. R." surname="Albrecht" fullname="Martin R. Albrecht">
            <organization/>
          </author>
          <author initials="R." surname="Player" fullname="Rachel Player">
            <organization/>
          </author>
          <author initials="S." surname="Scott" fullname="Sam Scott">
            <organization/>
          </author>
          <date year="2015"/>
        </front>
      </reference>
      <reference anchor="DHK23" target="https://link.springer.com/chapter/10.1007/978-3-031-31368-4_3">
        <front>
          <title>A Thorough Treatment of Highly-Efficient NTRU Instantiations</title>
          <author initials="J." surname="Duman" fullname="Julien Duman">
            <organization/>
          </author>
          <author initials="K." surname="Hövelmanns" fullname="Kathrin Hövelmanns">
            <organization/>
          </author>
          <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
            <organization/>
          </author>
          <author initials="V." surname="Lyubashevsky" fullname="Vadim Lyubashevsky">
            <organization/>
          </author>
          <author initials="G." surname="Seiler" fullname="Gregor Seiler">
            <organization/>
          </author>
          <author initials="D." surname="Unruh" fullname="Dominique Unruh">
            <organization/>
          </author>
          <date year="2023"/>
        </front>
      </reference>
      <reference anchor="KCP26" target="https://eprint.iacr.org/2026/1191">
        <front>
          <title>Accelerating NTRU+ Key Generation via Hierarchical Batch Inversion</title>
          <author initials="J." surname="Kim" fullname="Jonghyun Kim">
            <organization/>
          </author>
          <author initials="H." surname="Cho" fullname="Haehyun Cho">
            <organization/>
          </author>
          <author initials="J. H." surname="Park" fullname="Jong Hwan Park">
            <organization/>
          </author>
          <date year="2026"/>
        </front>
      </reference>
      <reference anchor="UXT21" target="https://tches.iacr.org/index.php/TCHES/article/view/9298">
        <front>
          <title>Curse of Re-encryption: A Generic Power/EM Analysis on Post-Quantum KEMs</title>
          <author initials="R." surname="Ueno" fullname="Rei Ueno">
            <organization/>
          </author>
          <author initials="K." surname="Xagawa" fullname="Keita Xagawa">
            <organization/>
          </author>
          <author initials="Y." surname="Tanaka" fullname="Yutaro Tanaka">
            <organization/>
          </author>
          <author initials="A." surname="Ito" fullname="Akira Ito">
            <organization/>
          </author>
          <author initials="J." surname="Takahashi" fullname="Junko Takahashi">
            <organization/>
          </author>
          <author initials="N." surname="Homma" fullname="Naofumi Homma">
            <organization/>
          </author>
          <date year="2021"/>
        </front>
      </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="RFC4253">
        <front>
          <title>The Secure Shell (SSH) Transport Layer Protocol</title>
          <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
          <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
          <date month="January" year="2006"/>
          <abstract>
            <t>The Secure Shell (SSH) is a protocol for secure remote login and other secure network services over an insecure network.</t>
            <t>This document describes the SSH transport layer protocol, which typically runs on top of TCP/IP. The protocol can be used as a basis for a number of secure network services. It provides strong encryption, server authentication, and integrity protection. It may also provide compression.</t>
            <t>Key exchange method, public key algorithm, symmetric encryption algorithm, message authentication algorithm, and hash algorithm are all negotiated.</t>
            <t>This document also describes the Diffie-Hellman key exchange method and the minimal set of algorithms that are needed to implement the SSH transport layer protocol. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4253"/>
        <seriesInfo name="DOI" value="10.17487/RFC4253"/>
      </reference>
      <reference anchor="RFC7296">
        <front>
          <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
          <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
          <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
          <author fullname="Y. Nir" initials="Y." surname="Nir"/>
          <author fullname="P. Eronen" initials="P." surname="Eronen"/>
          <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
          <date month="October" year="2014"/>
          <abstract>
            <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="79"/>
        <seriesInfo name="RFC" value="7296"/>
        <seriesInfo name="DOI" value="10.17487/RFC7296"/>
      </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>
    </references>
    <?line 389?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <!-- TODO acknowledge. -->

</section>
  </back>
  <!-- ##markdown-source:
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
YxU/HFiPon/q/B+Or8HhzWYAAA==

-->

</rfc>
