<?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-01" 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-01"/>
    <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 signatures 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:</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 <tt>ML-DSA.KeyGen()</tt> and during <tt>ML-DSA.Sign()</tt> (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>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>Without mitigation, 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>ML-DSA.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 <tt>ML-DSA.KeyGen()</tt>,
containing (<tt>rho</tt>, <tt>K</tt>, <tt>tr</tt>, <tt>s1</tt>, <tt>s2</tt>, <tt>t0</tt>). 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 <tt>ML-DSA.KeyGen_internal()</tt> 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 <tt>mu</tt> 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 <tt>rho</tt> is expanded to
form the matrix <tt>A</tt>, and this involves rejection sampling of SHAKE256 output
to achieve coefficient values that are uniformly distributed. This means that
a rote implementation will perform a variable number of SHAKE256 calls, and
expansion is not constant time.</t>
            <t>However, the public seed <tt>rho</tt> 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
<tt>y</tt> and to check signature bounds. In the default 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:
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

-->

</rfc>
