<?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.34 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-connolly-cfrg-ml-dsa-security-considerations-00" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="ML-DSA Security Considerations">Security Considerations for ML-DSA</title>
    <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-ml-dsa-security-considerations-00"/>
    <author fullname="Deirdre Connolly">
      <organization>Oracle</organization>
      <address>
        <email>durumcrustulum@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="18"/>
    <area>IRTF</area>
    <workgroup>Crypto Forum</workgroup>
    <keyword>ML-DSA</keyword>
    <abstract>
      <?line 132?>

<t>NIST standardized ML-DSA as FIPS 204 in August 2024. This document discusses
how to use ML-DSA within protocols - that is, what problem it solves,
and what you need to do to use it securely.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dconnolly.github.io/draft-connolly-cfrg-ml-dsa-security-considerations/draft-connolly-cfrg-ml-dsa-security-considerations.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-connolly-cfrg-ml-dsa-security-considerations/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Crypto Forum Research Group mailing list (<eref target="mailto:cfrg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cfrg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cfrg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dconnolly/draft-connolly-cfrg-ml-dsa-security-considerations"/>.</t>
    </note>
  </front>
  <middle>
    <?line 138?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Digital signature schemes are a standardized class of cryptographic scheme
that can be used in protocols to detect unauthorized modifications to data
and to authenticate the identity of the signer.</t>
      <t>Post-quantum (PQ) cryptographic algorithms are based on problems that are
considered to be resistant to attacks that are efficient on a
cryptographically-relevant quantum computer (CRQC), a quantum computer
powerful (QC) enough to break schemes based on traditional cryptographic
assumptions such as factoring, finite field or elliptic curve Diffie-Hellman
(DH). While it is not believed that a CRQC exists at the time of this
writing, there remains the possibility that an adversary could forge
signatures on critical messages, or that long-lived public verifying keys
will need to remain trustworthy well into the era when CRQCs may exist.</t>
      <t>Unlike the case for key agreement and encryption, where an adversary can
record ciphertexts now and decrypt them later when a CRQC becomes available
("harvest now, decrypt later"), the threat model for digital signatures is
different. An adversary with a CRQC could forge signatures to impersonate a
signer whose public verifying key is still trusted. This is a particular
concern for:</t>
      <ul spacing="normal">
        <li>
          <t>Long-lived code signing keys</t>
        </li>
        <li>
          <t>Certificate authority root keys</t>
        </li>
        <li>
          <t>Firmware signing keys</t>
        </li>
        <li>
          <t>Any public verifying key that will be in use while an active CRQC is a
threat</t>
        </li>
      </ul>
      <t>Because of this threat, NIST has published FIPS 204 <xref target="FIPS204"/>, which
standardizes ML-DSA (Module-Lattice-Based Digital Signature Algorithm), a
digital signature scheme that is considered resistant to quantum
attacks. ML-DSA is based on structured lattices, specifically reducing to the
Module Learning with Errors problem, and is derived from the
CRYSTALS-Dilithium scheme.</t>
      <t>ML-DSA is a digital signature scheme, where a signer generates a key pair
consisting of a private signing key and a public verifying key. The signer
uses the signing key to produce a signature on a message, and anyone with the
verifying key can verify that the signature is valid for that message. An
adversary without the signing key cannot produce a valid signature, even if
they have access to a CRQC (see <xref target="security-considerations"/>).</t>
    </section>
    <section anchor="using-ml-dsa">
      <name>Using ML-DSA</name>
      <t>As a digital signature scheme, ML-DSA is comprised of three algorithms to be
executed:</t>
      <section anchor="keygen">
        <name>Key Generation</name>
        <t>The first step for the signer is to generate a key pair.</t>
        <t>In FIPS 204, the key generation function is <tt>ML-DSA.KeyGen()</tt> (see section
6.1 of <xref target="FIPS204"/>). It internally calls the random number generator for a
32-byte seed (<tt>xi</tt>) and produces both a public verifying key <tt>pk</tt>and a private
signing key <tt>sk</tt>.</t>
        <t>FIPS 204 supports two signing key formats: the 32-byte seed used as input to
key generation serves as a compact signing key format with significant
security advantages; the full expanded signing key can be deterministically
regenerated from this seed at any time. Using the seed as the signing key
format makes it impossible to create a malformed key: the key generation
algorithm enforces the correct mathematical distributions for all derived key
components <xref target="SCHMIEG25"/>. Further, the whole value of the seed contributes
equally to the derived key material; changing a single bit of the seed
changes the values of the expanded keypair in its entirety, making it
impossible to independently choose parts of the signing key.</t>
        <t>The expanded signing key components (<tt>rho</tt>, <tt>K</tt>, <tt>tr</tt>, <tt>s1</tt>, <tt>s2</tt>, <tt>t0</tt>), may
be cached in memory for the duration of signing operations to avoid
re-running key generation on each signature. This cached expanded key
material requires the same protections as the seed signing key and benefits
from being securely deleted when no longer needed.</t>
        <t>The public verifying key can be freely published; verifiers will need it to
verify signatures. However, the signing key material needs to be kept secret
and protected from modification.</t>
        <t>ML-DSA key generation is very fast, as it does not require rejection
sampling. The signing key components are sampled from a uniform distribution,
making key generation straightforward and not a significant computational
burden.</t>
      </section>
      <section anchor="signing">
        <name>Signing</name>
        <t>The second step is for the signer to produce a signature on a message.</t>
        <t>To do this, the signer would perform what FIPS 204 calls <tt>ML-DSA.Sign(sk, M,
ctx)</tt> (see section 6.2 of <xref target="FIPS204"/>). This takes as input the signing key
<tt>sk</tt>, a message <tt>M</tt>, and an optional context string <tt>ctx</tt> (up to 255 bytes),
and produces a signature <tt>sigma</tt>.</t>
        <t>Internally, the signing process uses rejection sampling: the raw signing
procedure is not always successful on the first attempt, and is repeated
until a valid signature is produced. This is normal behavior and not an
indication of error, resulting from the construction of ML-DSA from
Fiat-Shamir with Aborts <xref target="Lyubashevsky09"/>. On average, signing requires a
small number of iterations. However, this does mean that signing time has
some variance.</t>
        <section anchor="hedged-vs-deterministic">
          <name>Hedged vs. Deterministic Signing</name>
          <t>ML-DSA supports two modes of signing:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Hedged (randomized) signing</strong> (the default): Fresh randomness is
incorporated into the signing process alongside the signing key material
and the message. This is the mode specified by <tt>ML-DSA.Sign()</tt>.</t>
            </li>
            <li>
              <t><strong>Deterministic signing</strong>: The randomness input (<tt>rnd</tt>) is set to all
zeros, making the signature a deterministic function of the signing key and
message. This is specified by <tt>ML-DSA.Sign_internal()</tt> with <tt>rnd</tt> set to 32
zero bytes.</t>
            </li>
          </ul>
          <t>There is no reason to prefer deterministic signing over hedged signing;
hedged signing is the safer default in all environments, and is essential
where fault injection or side-channel attacks are a concern. See
<xref target="fault-injection"/> for details.</t>
          <t>The hedged variant degrades gracefully: if the random number generator
provides no entropy (all zeros), the hedged variant produces the same output
as the deterministic variant.</t>
        </section>
        <section anchor="context-strings">
          <name>Context Strings</name>
          <t>ML-DSA supports an optional context string (<tt>ctx</tt>) of up to 255 bytes. The
context string is incorporated into the signed message and provides domain
separation between different applications or uses of the same key pair.</t>
          <t>If a context string is used during signing, the same context string is
required during verification. Defining a fixed context string for a given
protocol's use case prevents cross-protocol attacks.</t>
        </section>
      </section>
      <section anchor="verification">
        <name>Verification</name>
        <t>The third step is for the verifier to check a signature against a message and
public verifying key.</t>
        <t>To perform this step, the verifier would perform what FIPS 204 calls
<tt>ML-DSA.Verify(pk, M, sigma, ctx)</tt> (see section 6.3 of <xref target="FIPS204"/>). This
takes the verifying key <tt>pk</tt>, the message <tt>M</tt>, the signature <tt>sigma</tt>, and the
optional context string <tt>ctx</tt>, and returns whether the signature is valid as
a boolean value.</t>
        <t>Verification is deterministic and does not require access to any secret key
material. It is also computationally straightforward and does not involve
rejection sampling unlike signing.</t>
        <t>The verifier needs to ensure that the public verifying key <tt>pk</tt> being used is
authentic— that is, it genuinely belongs to the claimed signer. ML-DSA like
all signature schemes provides no authentication of the verifying key itself;
this is the responsibility of the protocol (e.g., via a certificate or other
trust mechanism) or is out of band/scope.</t>
      </section>
      <section anchor="params">
        <name>Parameter Sets</name>
        <t>FIPS 204 specifies three parameter sets: ML-DSA-44, ML-DSA-65, and
ML-DSA-87. The names refer to the module ranks (<tt>k</tt>, <tt>l</tt>) used in each
parameter set. It is assumed that the signer and verifier both know which
parameter set is in use (either by negotiation or by having one selection
fixed in a protocol).</t>
        <t><xref target="par-sets"/> shows the sizes of the cryptographic material of ML-DSA for
each parameter set, as well as their relative cryptographic strength:</t>
        <table anchor="par-sets">
          <name>vk = public verifying key, sk = signing key (seed form), expanded sk = signing key components cached for signing, sig = signature, all lengths in bytes</name>
          <thead>
            <tr>
              <th align="left"> </th>
              <th align="right">vk size</th>
              <th align="right">sk size</th>
              <th align="right">expanded sk size</th>
              <th align="right">sig size</th>
              <th align="center">NIST Level (~as strong as)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ML-DSA-44</td>
              <td align="right">1312</td>
              <td align="right">32</td>
              <td align="right">2560</td>
              <td align="right">2420</td>
              <td align="center">2 (~AES-128)</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-65</td>
              <td align="right">1952</td>
              <td align="right">32</td>
              <td align="right">4032</td>
              <td align="right">3309</td>
              <td align="center">3 (~AES-192)</td>
            </tr>
            <tr>
              <td align="left">ML-DSA-87</td>
              <td align="right">2592</td>
              <td align="right">32</td>
              <td align="right">4896</td>
              <td align="right">4627</td>
              <td align="center">5 (~AES-256)</td>
            </tr>
          </tbody>
        </table>
        <t>All three parameter sets store the signing key as a 32-byte seed. The
expanded signing key components can be deterministically regenerated
from this seed and cached in memory as needed for signing
operations.</t>
        <!-- As can be seen from {{par-sets}}, ML-DSA has significantly larger -->
<!-- verifying keys and signatures than ECDSA or EdDSA, but comparable or -->
<!-- better computational performance as shown in {{par-perf}}. -->

</section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-considerations-sigs">
        <name>Digital Signature Security Considerations</name>
        <t>This section pertains to digital signature schemes in general, including
ML-DSA.</t>
        <t>A digital signature scheme requires a high-quality source of entropy during
key pair generation. If an adversary can recover the random bits used during
key generation, they can recover the signing key. ML-DSA additionally
requires randomness during signing (in hedged mode); if an adversary can
recover these random bits, they may be able to recover the signing key. The
random bytes need to be generated securely <xref target="RFC4086"/>.</t>
        <t>Standard cryptographic analysis assumes that the adversary has access only to
the public verifying key, messages, and signatures. Depending on the
deployment scenario, the adversary may have access to various side channels,
such as the amount of time taken during the signing process, or possibly the
power consumption or electromagnetic emissions of the signing device. The
implementor will need to assess this possibility and possibly use an
implementation that is resistant to such leakage.</t>
        <t>The signer needs to keep the signing key secret and protected from
modification. Zeroizing the signing key when the signer has no further need
of it prevents later compromise.</t>
        <t>A digital signature scheme (including ML-DSA) does not authenticate the
verifying key. The verifier needs some means of trusting that the public
verifying key belongs to the claimed signer. This is typically accomplished
through a Public Key Infrastructure (PKI) such as X.509 certificates, or
through other trust mechanisms.</t>
      </section>
      <section anchor="security-considerations-mldsa">
        <name>ML-DSA Security Considerations</name>
        <t>This section pertains specifically to ML-DSA, and may not be true of digital
signature schemes in general.</t>
        <t>The fundamental security property of ML-DSA is that someone with the public
verifying key and access to signatures cannot forge a signature on a new
message, and this is true even if the adversary has access to a CRQC. ML-DSA
is EUF-CMA (Existentially Unforgeable under Chosen Message Attack) secure;
that is, it remains secure (infeasible to forge verifibale signatures under
the public verifying key) even if an adversary can request signatures on
arbitrary messages of their choosing. The adversary still cannot produce a
valid signature on any message that was not previously signed.</t>
        <t>ML-DSA requires that a source of randomness with security strength greater
than or equal to the security strength of the ML-DSA parameter set be used
during ML-DSA.KeyGen() and during ML-DSA.Sign() (in the default hedged
mode). The cryptographic library that implements ML-DSA may access this
source of randomness internally. A fresh string of random bytes is needed for
every invocation of key generation and signing.</t>
        <t>The signer needs to keep their signing key both secret and protected from
modification. Modification of the signing key could result in signatures that
leak information about the key material.</t>
        <t>It is secure to use a single key pair for signing many messages. That is, the
signer may generate a key pair once and use it to sign many messages over the
lifetime of the key pair. ML-DSA does not degrade in security with the number
of signatures produced, under the standard security model.</t>
        <section anchor="fault-injection">
          <name>Hedged Signing and Fault Resistance</name>
          <t>ML-DSA's signing process involves computing a nonce-like commitment value
(<tt>y</tt>) as part of each signing attempt. In deterministic mode, this value is a
deterministic function of the signing key and the message.</t>
          <t>This creates a vulnerability to fault injection attacks: if an attacker can
cause a fault during the signing process and obtain both a correct and a
faulted signature on the same message, they can potentially recover the
signing key. This is because the deterministic mode will produce the same
intermediate value <tt>y</tt> when signing the same message twice, and comparing
correct and faulted outputs can reveal the signing key <xref target="KPLG24"/>.</t>
          <t>The default hedged (randomized) signing mode mitigates this by incorporating
fresh randomness into the computation of <tt>y</tt>, so that repeated signing of the
same message produces different intermediate values. This prevents the
nonce-reuse scenario that fault attacks exploit.</t>
          <t>Fault injection attacks against ML-DSA are an active area of research
<xref target="KosXag25"/>. Notably, the fault attack surface extends to operations such as
public parameter generation that are not sensitive to side-channel attacks
and therefore might be left unprotected in some implementations.</t>
          <t>The deterministic variant of ML-DSA is vulnerable to fault injection attacks,
making it unsuitable for platforms where such attacks are a concern. Even in
environments where fault injection is not considered a practical threat,
hedged signing provides an additional layer of protection.</t>
          <t>Section 3.6.1 of <xref target="FIPS204"/> notes that while the signing randomness <tt>rnd</tt>
should ideally be generated by an approved RBG, other methods for generating
fresh random values may be used. Because the primary purpose of <tt>rnd</tt> is to
mitigate side-channel and fault attacks on deterministic signatures, even a
weak or non-NIST-approved source of randomness is preferable to the fully
deterministic variant. Implementations on constrained platforms that lack
access to a full-strength RBG should still use whatever randomness source
is available for <tt>rnd</tt> rather than falling back to deterministic signing.</t>
        </section>
        <section anchor="rejection-sampling">
          <name>Rejection Sampling and Signing Time</name>
          <t>ML-DSA's signing algorithm uses rejection sampling: candidate signatures are
generated and checked against bounds, and the process repeats until a valid
signature is found. This means:</t>
          <ul spacing="normal">
            <li>
              <t>Signing time is variable. On average, only a small number of iterations
are needed, but in the worst case, more iterations may be required.</t>
            </li>
            <li>
              <t>The number of iterations is not secret-dependent in the default hedged mode
(it depends on the random commitment value). Care is warranted to avoid
introducing timing side channels in other parts of the signing process.</t>
            </li>
            <li>
              <t>Imposing a fixed upper bound on the number of iterations that causes
signing to fail is unnecessary and harmful. The probability of requiring
a very large number of iterations is negligible. <!-- TODO: cite -->
              </t>
            </li>
          </ul>
        </section>
        <section anchor="key-format">
          <name>Signing Key Format</name>
          <t>FIPS 204 permits two representations of the ML-DSA signing key:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Seed signing key format (32 bytes)</strong>: The random seed used as input to
<tt>ML-DSA.KeyGen_internal()</tt>. The full expanded signing key can be
deterministically regenerated from this seed at any time. NIST considers a
<tt>KeyGen_internal()</tt> seed to be an acceptable alternative format for a
signing key, including for generation in one cryptographic module and
import/export to another <xref target="NIST-PQC-FAQ"/>. The seed signing key format
inherently prevents malformed keys, since the key generation algorithm
ensures that all derived values satisfy the required mathematical
properties. Every bit of the seed contributes equally to the derived key
material, making it impossible to independently choose parts of the signing
key <xref target="SCHMIEG25"/>.</t>
            </li>
            <li>
              <t><strong>Expanded signing key components</strong>: The full output of ML-DSA.KeyGen(),
containing (rho, K, tr, s1, s2, t0). This format avoids the need to re-run
key generation before each signing operation. The expanded form is useful
as an in-memory cache for performance during signing operations, while the
seed signing key format serves as the canonical stored representation. The
expanded format admits the possibility of malformed keys if the components
are modified or constructed outside of the key generation algorithm.</t>
            </li>
          </ul>
          <t>Implementations that store only the seed and regenerate (or cache) the
expanded key as needed are inherently protected against malformed key
attacks. Implementations that accept or store expanded signing keys benefit
from validating that the key components are well-formed before use.</t>
          <t>When both formats are present, the expanded key needs to be the output of
running ML-DSA.KeyGen() with the corresponding seed. Inconsistencies
between the two representations could lead to undefined behavior
<xref target="SCHMIEG25"/>.</t>
        </section>
        <section anchor="external-mu">
          <name>External Mu</name>
          <t>ML-DSA's signing algorithm (Algorithm 7 of <xref target="FIPS204"/>) computes a fixed-size
(64-byte) message representative <tt>mu</tt> as the first step, derived from the
hash of the public verifiying key <tt>tr</tt> and the message <tt>M</tt>, before any
private signing key material is involved. All subsequent signing operations
use only <tt>mu</tt>, not the original message. This structure means that <tt>mu</tt> can
be pre-computed in a separate cryptographic module from the one that holds
the signing key, and NIST has explicitly confirmed this is permitted by FIPS
204 <xref target="NIST-PQC-ExtMu"/>.</t>
          <t>This "external mu" approach solves the use cases that HashML-DSA
(<xref target="hashmldsa"/>) was intended to address:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Large messages</strong>: The module computing <tt>mu</tt> can stream arbitrarily
large messages through SHAKE256. The signing module only ever receives
the fixed-size 64-byte <tt>mu</tt>, regardless of message size.</t>
            </li>
            <li>
              <t><strong>HSM and remote signing</strong>: An application computes <tt>mu</tt> from the
public verifying key and the message, then sends only <tt>mu</tt> to a
signing module such as an HSM. The signing module generates its own
<tt>rnd</tt> internally and produces the signature.</t>
            </li>
            <li>
              <t><strong>No verification ambiguity</strong>: The resulting signatures are standard
ML-DSA signatures. Verifiers do not need to know whether <tt>mu</tt> was
computed locally or externally.</t>
            </li>
          </ul>
          <t>The module computing <tt>mu</tt> needs a validated implementation of SHAKE256 to be
FIPS-compliant. The signing module needs to implement the ML-DSA signing
algorithm from <tt>mu</tt> onward, including its own random number generation for
<tt>rnd</tt> <xref target="NIST-PQC-ExtMu"/>.</t>
        </section>
        <section anchor="hashmldsa">
          <name>HashML-DSA</name>
          <t>FIPS 204 defines HashML-DSA, a variant that signs a hash of the message
rather than the message directly, intended for cases where the full
message cannot be transmitted to the signer. However, HashML-DSA
conflates a protocol-level decision with the cryptographic primitive,
introducing several problems <xref target="SCHMIEG24"/>:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Verification ambiguity</strong>: A HashML-DSA signature differs from an
ML-DSA signature on the same message. The verifier needs to know which
variant was used, which requires protocol-level resolution anyway,
defeating the purpose of building this into the primitive.</t>
            </li>
            <li>
              <t><strong>Algorithm confusion risk</strong>: HashML-DSA requires hash algorithm
identifiers and parameters to be transmitted alongside the signature.
If these are carried through untrusted channels, this introduces
algorithm confusion risks similar to those seen with JSON Web Tokens.</t>
            </li>
          </ul>
          <t>The external mu approach described in <xref target="external-mu"/> solves the same
use cases without these drawbacks, and NIST has explicitly blessed it
for use with FIPS-validated modules <xref target="NIST-PQC-ExtMu"/>.</t>
        </section>
        <section anchor="non-issues">
          <name>Issues that are likely not a concern</name>
          <t>This section contains issues that you may have heard of, but are quite
unlikely to be a concern in your use case. This section is here to discuss
them, and show why they are not practical issues. If you have not heard of
them, you may ignore this.</t>
          <section anchor="constant-time">
            <name>ML-DSA operations not being constant time</name>
            <t>During key generation and verification, the public seed rho is expanded to
form the matrix A, and this involves rejection sampling of XOF
(extendable-output function) output to achieve coefficient values that are
uniformly distributed. This means that a straightforward implementation will
perform a variable number of XOF calls, and expansion is not constant time.</t>
            <t>However, the public seed rho is part of the public verifying key and is
therefore publicly known. The timing variation during matrix expansion does
not leak any information about the signing key.</t>
            <t>Signing also involves rejection sampling to generate the commitment vector y
and to check signature bounds. In hedged mode, these values depend on fresh
randomness and do not leak signing key information through timing. In
deterministic mode, the timing could in theory leak information about the
deterministic nonce, though this is a much less practical concern than the
fault injection attacks described in <xref target="fault-injection"/>.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST" value="FIPS 204"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="KPLG24" target="https://eprint.iacr.org/2024/138">
          <front>
            <title>Correction Fault Attacks on Randomized CRYSTALS-Dilithium</title>
            <author initials="E." surname="Krahmer" fullname="Elisabeth Krahmer">
              <organization/>
            </author>
            <author initials="P." surname="Pessl" fullname="Peter Pessl">
              <organization/>
            </author>
            <author initials="G." surname="Land" fullname="Georg Land">
              <organization/>
            </author>
            <author initials="T." surname="Guneysu" fullname="Tim Güneysu">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="KosXag25" target="https://eprint.iacr.org/2025/904">
          <front>
            <title>The Security of ML-DSA against Fault-Injection Attacks</title>
            <author initials="H." surname="Kosuge" fullname="Haruhisa Kosuge">
              <organization/>
            </author>
            <author initials="K." surname="Xagawa" fullname="Keita Xagawa">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="Lyubashevsky09" target="https://doi.org/10.1007/978-3-642-10366-7_35">
          <front>
            <title>Fiat-Shamir with Aborts: Applications to Lattice and Factoring-Based Signatures</title>
            <author initials="V." surname="Lyubashevsky" fullname="Vadim Lyubashevsky">
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="DOI" value="10.1007/978-3-642-10366-7_35"/>
        </reference>
        <reference anchor="NIST-PQC-FAQ" target="https://csrc.nist.gov/Projects/post-quantum-cryptography/faqs#Rdc7">
          <front>
            <title>Post-Quantum Cryptography FAQs</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="NIST-PQC-ExtMu" target="https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/faq/fips204-sec6-03192025.pdf">
          <front>
            <title>FAQ - FIPS 204 - Computing mu</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="SCHMIEG24" target="https://keymaterial.net/2024/11/05/hashml-dsa-considered-harmful/">
          <front>
            <title>HashML-DSA considered harmful</title>
            <author initials="S." surname="Schmieg" fullname="Sophie Schmieg">
              <organization/>
            </author>
            <date year="2024" month="November"/>
          </front>
        </reference>
        <reference anchor="EBATS" target="https://bench.cr.yp.to/results-sign/amd64-hertz.html">
          <front>
            <title>eBATS: ECRYPT Benchmarking of Asymmetric Systems</title>
            <author initials="D. J." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <author initials="T." surname="Lange" fullname="Tanja Lange">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SCHMIEG25" target="https://keymaterial.net/2025/02/19/how-not-to-format-a-private-key/">
          <front>
            <title>How not to format a private key</title>
            <author initials="S." surname="Schmieg" fullname="Sophie Schmieg">
              <organization/>
            </author>
            <date year="2025" month="February"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 556?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V83XbbRpbufT1FjX0xUi+CkuWf2MrJrFFsKfbYThxLSfc5
N60iWSQxAgE2CpDMqD1rHmIe59ydN5knmW/vXVUogKTj9FrHK7FJAqjatWv/
fPunkGWZavKmsKf6waWdtnXebPTLqnT5zNamyfFJz6tav3+Xvbo8e6DMZFLb
W9wsP+g9zzxQU9PYRVVvTnVeziulZtW0NCtMM6vNvMmmVVlWRbHJpvN6ka2K
bOZM5vxgdDUZLDs+Vq6drHLn8LXZrDHKm49XF4pus6Vr3alu6taqGeY8VaDu
sTK1NaCSbnug7qr6ZlFX7Rq/vKw366bSF1Xdrh4o15hy9ldTVKX1Y+Trmj+5
5uT4+MXxibqxGzw/O1U681zAvLO8XJzqX64usufq1pYtptV69xRaC8UPPlpn
TT1d6h/oPrqwMnmBC8SCf83rZj6u6gX9Tnfh92XTrN3p0RHdRj/lt3acW7nt
iH44mtTVnbNHNMARPbjIm2U7waOzwN+jP85uGqgAJ12T0BAHHMsc47z6B4b+
Bx4ZL5tV8UAp0zbLqj5VmZ63RSGi9Mrm9ay2JHs8HggHa0yZ/8bPnuqfajMt
LH62wupZiy2Z0ua2Rbv61wX9Op5WK6XKql7hoVtsJG6/ePPh8uT4CW0qts/U
CwteRFZUOe/Ao+Pxs+OT50c/vrm8GtMTYzwiT4hCva9mbWGzd6Zp8qnNvjfO
zvSrHAw0hb7MF6VpWlB/STJo6hk/6mydW0cqI5Nr/YDGf4CtoCk0pnjAF1jW
9Vm7wGLw68kTpeipdBVvP7z74SQswuv4y6qu7ZS4oy9MWzT6rGnM9MZp/PAR
dFSr/DdQ+fLj/768Ont3mb3KC+x3LoK8zQu7rvOyGedmWjNPiJCjR4+fJyQy
bfQ17KAsK/P/atgH6O/5WL+tzXJl6/i77PF5kTszsc1ycH3w/Iex/mCdKwZP
f7CNrXtXBs/9MNbvsOzBYz9YLCa9MHjqaqx/aEu7ce3gwat8pX/4f/9XLtEW
VO4vZnHytL8JV0vbGc5q7s2KNguD0RvZmOxN+e9+o/wWffUOPD164QUx7sDT
39+B12Oitl3YwZJem7pdYg/6VwcPvx1rrNPcmcHDby2EPVzCtXebdmLc0t66
m83xiz5XLnLTZJdLs8prfQeh02eTqm4w+Nl6XeRT74xgWL1C6W57Lsy0qcCH
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

-->

</rfc>
