← Back to Post-Quantum Cryptography

Attacks on PQC Schemes

18 min read

Overview

Post-quantum cryptographic algorithms are not immune to attack — they are simply resistant to attacks by quantum computers running Shor’s algorithm. Every PQC scheme faces a rich ecosystem of threats: mathematical cryptanalysis that targets the underlying hard problems, side-channel attacks that exploit physical implementation characteristics, fault injection attacks that corrupt computation to leak secrets, and protocol-level attacks that circumvent the cryptography entirely.

Understanding these attacks is essential for anyone deploying PQC in production. The NIST standardized algorithms — ML-KEM (FIPS 203), ML-DSA (FIPS 204), SLH-DSA (FIPS 205), and the forthcoming FN-DSA — were selected partly because they have survived extensive cryptanalysis. But “survived” does not mean “invulnerable.” Other schemes that appeared equally strong — SIKE and Rainbow — were catastrophically broken after years of scrutiny, reminding the community that confidence in any cryptographic scheme is provisional.

This page provides a comprehensive treatment of the attack landscape against PQC: the mathematical foundations of lattice reduction and code-based attacks, the spectacular breaks of SIKE and Rainbow, side-channel and implementation attacks against the NIST standards, protocol-level threats during the transition period, and the mitigations that practitioners must deploy to defend against each category. For background on the specific algorithms discussed, see Lattice-Based Cryptography, Hash-Based Signatures, and Code-Based Cryptography. For the broader context of the standardization process, see NIST PQC Standardization.


1. Attack Taxonomy

Before examining specific attacks, it helps to see how they relate to one another. The following taxonomy organizes attacks by the layer they target.

graph TD
    ROOT["Attacks on PQC Schemes"] --> MATH["Mathematical Cryptanalysis"]
    ROOT --> SC["Side-Channel Attacks"]
    ROOT --> IMPL["Implementation Attacks"]
    ROOT --> PROTO["Protocol-Level Attacks"]

    MATH --> LATTICE["Lattice Reduction"]
    MATH --> ISD["Information Set Decoding"]
    MATH --> ALG["Algebraic Attacks"]
    MATH --> ISO["Isogeny Attacks"]

    LATTICE --> BKZ["BKZ / BKZ 2.0"]
    LATTICE --> PRIMAL["Primal Attack"]
    LATTICE --> DUAL["Dual Attack"]
    LATTICE --> CORESVP["Core-SVP Methodology"]

    ISD --> PRANGE["Prange's Algorithm"]
    ISD --> STERN["Stern / Dumer"]
    ISD --> MMT["MMT / BJMM"]

    SC --> TIMING["Timing Attacks"]
    SC --> POWER["Power Analysis (SPA/DPA)"]
    SC --> EM["EM Emanation"]
    SC --> CACHE["Cache-Timing"]

    IMPL --> FAULT["Fault Injection"]
    IMPL --> KEYMIS["Key Mismatch"]
    IMPL --> COMP["Comparison Leaks"]

    PROTO --> DOWN["Downgrade Attacks"]
    PROTO --> STRIP["Hybrid Stripping"]
    PROTO --> CERT["Certificate Substitution"]
    PROTO --> ROLL["Version Rollback"]

    style ROOT fill:#1a1a2e,stroke:#e94560,color:#eee
    style MATH fill:#1a1a2e,stroke:#00d4aa,color:#eee
    style SC fill:#1a1a2e,stroke:#00d4aa,color:#eee
    style IMPL fill:#1a1a2e,stroke:#00d4aa,color:#eee
    style PROTO fill:#1a1a2e,stroke:#00d4aa,color:#eee
    style LATTICE fill:#1a1a2e,stroke:#0f3460,color:#eee
    style ISD fill:#1a1a2e,stroke:#0f3460,color:#eee
    style ALG fill:#1a1a2e,stroke:#0f3460,color:#eee
    style ISO fill:#1a1a2e,stroke:#0f3460,color:#eee
    style BKZ fill:#16213e,stroke:#0f3460,color:#aaa
    style PRIMAL fill:#16213e,stroke:#0f3460,color:#aaa
    style DUAL fill:#16213e,stroke:#0f3460,color:#aaa
    style CORESVP fill:#16213e,stroke:#0f3460,color:#aaa
    style PRANGE fill:#16213e,stroke:#0f3460,color:#aaa
    style STERN fill:#16213e,stroke:#0f3460,color:#aaa
    style MMT fill:#16213e,stroke:#0f3460,color:#aaa
    style TIMING fill:#16213e,stroke:#0f3460,color:#aaa
    style POWER fill:#16213e,stroke:#0f3460,color:#aaa
    style EM fill:#16213e,stroke:#0f3460,color:#aaa
    style CACHE fill:#16213e,stroke:#0f3460,color:#aaa
    style FAULT fill:#16213e,stroke:#0f3460,color:#aaa
    style KEYMIS fill:#16213e,stroke:#0f3460,color:#aaa
    style COMP fill:#16213e,stroke:#0f3460,color:#aaa
    style DOWN fill:#16213e,stroke:#0f3460,color:#aaa
    style STRIP fill:#16213e,stroke:#0f3460,color:#aaa
    style CERT fill:#16213e,stroke:#0f3460,color:#aaa
    style ROLL fill:#16213e,stroke:#0f3460,color:#aaa

Each category demands different mitigations. A mathematically secure algorithm can be broken by a timing side channel; a side-channel-hardened implementation can be defeated by a protocol downgrade. Defense in depth is not optional — it is the only viable strategy.


2. Mathematical Attacks on Lattice-Based Schemes

Lattice-based schemes (ML-KEM, ML-DSA, FN-DSA) derive their security from the hardness of lattice problems — specifically, the Learning With Errors (LWE) problem and its structured variants (Module-LWE, Ring-LWE, NTRU). The primary mathematical attack strategy against these schemes is lattice reduction: transforming a lattice basis into one with shorter vectors, ideally short enough to recover the secret key or decrypt a ciphertext.

2.1 The BKZ Algorithm and Its Variants

The Block Kravchuk-Zolotarev (BKZ) algorithm, introduced by Schnorr and Euchner in 1994, is the foundation of all practical lattice attacks. BKZ extends the classical LLL algorithm by processing the lattice in overlapping blocks of dimension beta (the block size), calling an exact Shortest Vector Problem (SVP) oracle within each block.

How BKZ works:

  1. Start with an LLL-reduced basis
  2. Select a block of beta consecutive basis vectors (a projected sublattice)
  3. Solve exact SVP in that block (using enumeration or sieving)
  4. Insert the short vector found back into the basis
  5. Move to the next block and repeat
  6. Continue cycling through the basis until no further improvement is made

The quality of the output basis depends critically on the block size beta. Larger blocks produce shorter vectors but at exponential cost — the SVP subroutine in dimension beta runs in time approximately 2^(0.292 * beta) using the best known sieving algorithms (or 2^(0.265 * beta) using quantum sieving via Grover speedups on classical sieving).

BKZ 2.0 (Chen and Nguyen, 2011) introduced several practical improvements:

  • Early termination heuristics — stop when the basis stops improving measurably
  • Recursive preprocessing — use BKZ with a smaller block size to preprocess each block before solving SVP, reducing the effective cost of the SVP call
  • Pruned enumeration — use extreme pruning strategies (Gama, Nguyen, Regev, 2010) to speed up the SVP oracle at the cost of making it probabilistic
  • Dimension-for-free optimization — exploit the fact that the first few vectors of a BKZ-reduced basis are typically shorter than the Gaussian heuristic predicts, effectively gaining several dimensions of reduction “for free”

Progressive BKZ further refines the approach by gradually increasing the block size during execution, starting with small (cheap) blocks and progressing to larger (expensive) ones. This avoids wasting computation on large-block-size SVP calls early in the reduction when the basis is still far from reduced.

In practice, the BKZ hierarchy looks like this:

LLL  →  BKZ (original)  →  BKZ 2.0  →  Progressive BKZ

                                    Current best classical
                                    lattice attack methodology

2.2 The Core-SVP Methodology

Core-SVP (core Shortest Vector Problem) is the standard methodology used by NIST and the cryptographic community to estimate the concrete security of lattice-based schemes. The approach works as follows:

  1. Model the attack as BKZ. Determine the minimum BKZ block size beta required to recover the secret (either via the primal attack, dual attack, or a hybrid approach — see below).
  2. Estimate the cost of each SVP oracle call. The cost of solving exact SVP in dimension beta is modeled as 2^(c * beta + o(beta)) for a constant c that depends on the algorithm used:
    • Classical sieving: c = 0.292 (best known: list-decoding sieve, Becker-Ducas-Gama-Laarhoven 2016)
    • Quantum sieving: c = 0.265 (Grover-speedup on classical sieving — Laarhoven 2015)
    • Classical enumeration: c ≈ 0.187 × beta (superexponential — worse than sieving for large beta but competitive for small beta)
  3. The Core-SVP cost is 2^(c * beta). This deliberately ignores polynomial factors, the number of BKZ tours, memory costs for sieving, and other sub-exponential factors. It is a conservative lower bound on the attacker’s cost.

The Core-SVP cost serves as the security level claim. For example, ML-KEM-768 targets NIST Security Level 3, meaning the best known attack (classical or quantum) requires at least Core-SVP effort comparable to 2^192 classical operations or the equivalent quantum work.

Important caveats with Core-SVP:

  • It is deliberately optimistic for the attacker (conservative for the defender): it undercounts the actual work required
  • It ignores memory costs, which are enormous for sieving algorithms (exponential in beta)
  • It assumes the attacker can make a single SVP call, ignoring the iterative nature of BKZ
  • Improvements to sieving algorithms directly impact Core-SVP estimates

2.3 The Primal Attack

The primal attack is the most straightforward lattice attack strategy against LWE-based schemes. Given a public key that encodes an LWE instance (A, b = As + e), the attacker constructs a lattice from the public matrix A and attempts to find the short error vector e (or the short secret s) using BKZ lattice reduction.

Specifically, the attacker builds a lattice from the matrix:

    ┌         ┐
    │  A  | I  │
L = │  q  | 0  │
    └         ┘

The target vector (e, s) is a short vector in (a shifted version of) this lattice. If BKZ with block size beta can find vectors short enough to recover e or s, the scheme is broken.

The required block size beta depends on the lattice dimension d, the modulus q, and the size of the secret/error distribution. For ML-KEM-768, the estimated required block size is approximately beta ≈ 850–900, which translates to a Core-SVP cost of roughly 2^(0.292 × 870) ≈ 2^254 classical operations — well above the targeted 192-bit security level.

2.4 The Dual Attack and the MATZOV Controversy

The dual attack takes a different approach. Instead of finding a short vector in the lattice (which would directly reveal the secret), the attacker finds a short vector in the dual lattice — a vector v such that v · A ≡ 0 (mod q). Such a vector acts as a “distinguisher”: computing v · b yields a value that is either uniformly random (if b is random) or has a small, biased distribution (if b = As + e for short s, e). By collecting enough such dual vectors, the attacker can distinguish LWE samples from random, and with further refinement, recover the secret.

The MATZOV paper (2022): In April 2022, a team from the Belgian MATZOV group (part of the Belgian military intelligence service) published a report claiming that a refined dual attack — combining dual lattice reduction with a “modulus switching” and “secret enumeration” strategy — significantly reduced the security estimates for NIST’s lattice-based schemes. Their key claims:

  • ML-KEM-512 (then called Kyber-512): security reduced to approximately 118 bits (below the 128-bit NIST Level 1 target)
  • ML-KEM-768: security reduced to approximately 183 bits (still above the 192-bit Level 3 target, but with reduced margin)
  • The improvement came from combining a dual-lattice distinguisher with FFT-based exhaustive search over a portion of the secret

The community response was vigorous and ultimately skeptical:

  1. Ducas and Pulles (2023) showed that the MATZOV analysis relied on independence assumptions that do not hold in practice. Specifically, the dual attack’s distinguishing advantage is computed by assuming that certain quantities are independent, but Ducas and Pulles demonstrated that the actual advantage is significantly lower when correlations are properly accounted for.

  2. The “average vs. worst case” issue: The MATZOV estimates computed the expected advantage of the distinguisher averaged over secret choices. Ducas and Pulles argued that the correct quantity is the advantage for any specific secret — and this is substantially smaller.

  3. NIST’s response: NIST acknowledged the MATZOV work but ultimately did not change the security level claims for ML-KEM. In their final standard (FIPS 203), NIST stated that the primal attack remains the most relevant threat and that the dual attack advantage claimed by MATZOV was overstated due to the flawed independence assumption.

  4. The current consensus (as of 2025) is that the dual attack is not significantly better than the primal attack for the parameter sets chosen by NIST. The MATZOV controversy served as a valuable stress test but did not result in parameter changes.

This episode illustrates an important principle: security estimates for lattice-based cryptography are not settled science. They depend on modeling assumptions that are actively debated, and even small methodological differences can shift estimates by tens of bits. The community continues to refine these estimates, and cryptographic agility — the ability to update parameters or switch algorithms — remains essential. See Migration Strategies for practical guidance.

2.5 Algebraic Attacks on Structured Lattices

ML-KEM, ML-DSA, and FN-DSA do not use generic lattices. They use structured lattices — specifically, module lattices over polynomial rings like Z_q[X]/(X^n + 1). This algebraic structure enables efficient implementations (operations become polynomial multiplications, computable via NTT in O(n log n) time) but also raises a persistent concern: does the structure help the attacker?

The known algebraic attacks against structured lattices include:

  • Ideal lattice attacks: For Ring-LWE (used in FN-DSA’s NTRU structure), the algebraic structure of ideal lattices allows the use of the principal ideal SVP algorithm. For cyclotomic fields of conductor that is a prime power (which includes the rings used in NIST standards), the best known algebraic attacks (Cramer, Ducas, Peikert, Regev 2016; Cramer, Ducas, Wesolowski 2017) can find moderately short vectors in ideal lattices faster than in generic lattices — but only by a sub-exponential factor. Concretely, the speedup is approximately 2^(n^(1/2)) over generic lattice algorithms, which is vastly insufficient to threaten the NIST parameter choices (which have security margins of 2^50 or more above the relevant thresholds).

  • Module structure exploitation: ML-KEM and ML-DSA use Module-LWE, where the module rank k provides an additional security parameter. No known attack exploits the module structure beyond what is already captured by reducing Module-LWE to Ring-LWE (which adds a factor of k to the effective dimension).

  • Overstretched NTRU: For NTRU-based schemes (like FN-DSA), if the modulus q is too large relative to the dimension n (i.e., the parameters are “overstretched”), a subfield attack (Albrecht, Bai, Ducas 2016) can exploit the algebraic structure to find short vectors faster. The FN-DSA parameters are specifically chosen to avoid this regime.

Bottom line: As of 2025, no algebraic attack fundamentally breaks the security of the NIST lattice-based standards. The structured lattice concern has motivated a cautious approach — NIST chose conservative parameters with substantial security margins — and the inclusion of hash-based SLH-DSA as a standard provides a fallback if algebraic attacks improve.

2.6 Information Set Decoding (ISD) for Code-Based Schemes

Code-based cryptography (Classic McEliece, HQC) relies on the hardness of decoding a random linear code — a problem that has resisted efficient solutions for over 60 years. The primary classical attack family is Information Set Decoding (ISD).

How ISD works:

Given a syndrome decoding problem — find a word of weight t that maps to a given syndrome under a parity-check matrix H — ISD proceeds by:

  1. Guess a set of k positions (an “information set”) that contain no error positions
  2. Invert the corresponding submatrix of H to recover a candidate error vector
  3. Check whether the candidate has the correct weight

The probability that a random information set is error-free is approximately (1 - t/n)^k, which is exponentially small for interesting parameters. The art of ISD is in improving the success probability per iteration and reducing the cost per iteration.

Evolution of ISD algorithms:

AlgorithmYearKey InnovationAsymptotic Exponent
Prange1962Basic information set decoding0.1207
Lee-Brickell1988Add small weight to information set0.1164
Stern1989Birthday-based collision search0.1059
Dumer1991Generalized Stern splitting0.1048
MMT2011Multi-level collision matching0.0494 (for specific parameters)
BJMM2012Nearest neighbor search + representations0.0473 (for specific parameters)
May-Ozerov2015Nearest neighbor with locality-sensitive filteringImproved constant
Both-May2018Depth-2 nearest neighborBest known classical

(Asymptotic exponents are for specific parameter regimes and code rates; they are not directly comparable across all parameters.)

Quantum ISD: Applying Grover’s algorithm to ISD provides a quadratic speedup on the search component, but the overall speedup is less than quadratic because ISD also involves significant linear algebra. The best quantum ISD analyses (Kachigar-Tillich 2017, Perriello-Barenghi-Pelosi 2021) suggest that quantum speedups against code-based schemes are modest — roughly halving the security level in bits — which is already accounted for in the parameter choices for Classic McEliece and HQC.

For HQC specifically (NIST’s selected code-based KEM), the quasi-cyclic structure introduces the same type of concern as structured lattices: does the structure help? Current analysis suggests not, as the quasi-cyclic structure does not provide known shortcuts beyond generic ISD. See Code-Based Cryptography for the mathematical details of these schemes.

Classic McEliece’s exceptional security posture: The McEliece cryptosystem (1978) uses binary Goppa codes, and its security has been studied for over 45 years. Despite this extraordinary scrutiny, the best known attack remains generic ISD — no structural attack exploiting the Goppa code structure has improved on it. This gives Classic McEliece arguably the highest confidence of any PQC scheme, at the cost of very large public keys (ranging from 261 KB to 1.3 MB depending on the security level).

2.7 The Lattice Estimator: Practical Security Assessment

The Lattice Estimator (formerly lattice-estimator, maintained by Albrecht et al.) is an open-source tool that automates the process of estimating the concrete security of lattice-based schemes. It implements all major attack strategies — primal, dual, hybrid, and algebraic — against LWE, NTRU, and related problems.

The Lattice Estimator is the de facto standard tool used by:

  • NIST for evaluating candidate submissions
  • Scheme designers for parameter selection
  • Cryptanalysts for benchmarking new attack techniques

How to interpret Lattice Estimator output:

The tool reports the estimated cost of the best known attack for each strategy, in terms of:

  • rop (ring operations): the total number of arithmetic operations
  • mem (memory): the memory required in bits
  • beta (block size): the BKZ block size required
  • d (lattice dimension): the dimension of the lattice used in the attack

The minimum over all strategies gives the estimated security level. For ML-KEM-768, a typical Lattice Estimator run produces:

Primal attack:   rop = 2^189.5,  beta = 851,  d = 1536
Dual attack:     rop = 2^193.2,  beta = 867,  d = 1536

This confirms that the primal attack is slightly more efficient than the dual attack for these parameters, and the security level is approximately 189–193 bits (well above the 192-bit NIST Level 3 target when accounting for the Core-SVP convention).

Caution: The Lattice Estimator’s output depends on the modeling assumptions built into the tool. As the MATZOV controversy demonstrated, different modeling choices (especially for the dual attack) can produce significantly different estimates. The Estimator is a valuable benchmarking tool, not an oracle. Cross-referencing its output with independent analyses and recent publications is essential for high-stakes security decisions.


3. Case Studies of Broken Schemes

The history of PQC is punctuated by spectacular breaks that remind the community of the gap between theoretical security arguments and cryptanalytic reality. Two cases stand out for their impact and the lessons they offer.

3.1 SIKE/SIDH: From NIST Finalist to Total Break

SIKE (Supersingular Isogeny Key Encapsulation) was one of the most theoretically elegant post-quantum proposals. Built on the Supersingular Isogeny Diffie-Hellman (SIDH) protocol proposed by Jao and De Feo in 2011, SIKE offered the smallest key sizes and ciphertexts of any PQC candidate — just a few hundred bytes — making it extremely attractive for bandwidth-constrained applications.

SIKE advanced to the fourth round of NIST’s PQC standardization as one of four finalists under consideration for a second KEM standard alongside Kyber (now ML-KEM). It had been studied for over a decade. Multiple teams had analyzed its security. It appeared to rest on a genuinely hard problem.

The break (July-August 2022):

On July 30, 2022, Wouter Castryck and Thomas Decru posted a preprint titled “An efficient key recovery attack on SIDH.” The paper demonstrated a polynomial-time attack that completely broke SIDH (and therefore SIKE) for all standardized parameter sets.

How the attack works:

The fundamental vulnerability was that SIDH reveals too much auxiliary information. To enable the key exchange, SIDH publishes the images of certain torsion points under the secret isogeny. Castryck and Decru showed that this auxiliary information — combined with a deep result from arithmetic geometry known as Kani’s theorem (1997) — allows the attacker to reconstruct the secret isogeny.

Kani’s theorem relates isogenies between elliptic curves to isogenies between products of elliptic curves (abelian surfaces). The key insight was:

  1. The published torsion point images define a relationship between elliptic curves that can be “lifted” to a relationship between abelian surfaces
  2. This higher-dimensional relationship corresponds to an isogeny between products of elliptic curves
  3. The higher-dimensional isogeny can be efficiently computed using existing algorithms for abelian surfaces
  4. The secret isogeny can then be recovered from the higher-dimensional computation

Timeline:

DateEvent
2011SIDH proposed by Jao and De Feo
2017SIKE submitted to NIST PQC Round 1
2019SIKE advances to Round 2
2020SIKE advances to Round 3
2022 (Mar)SIKE advances to Round 4 as alternate KEM candidate
2022 (Jul 30)Castryck-Decru preprint posted
2022 (Aug 1)Maino-Martindale independent attack posted
2022 (Aug 5)Robert generalizes the attack
2022 (Aug 5)Working SageMath implementation breaks SIKEp434 in minutes on a laptop
2022 (Oct)NIST officially removes SIKE from consideration

The speed of the collapse was breathtaking. Within a week of the initial preprint, multiple independent teams had reproduced the attack, generalized it, and demonstrated practical implementations that broke SIKE parameters in minutes. A scheme that had survived a decade of analysis was completely destroyed in days.

Lessons from SIKE:

  1. Auxiliary information is dangerous. SIDH’s publication of torsion point images was known to be a potential concern, but the community underestimated how severely it could be exploited.
  2. Connections to other areas of mathematics matter. The attack came from arithmetic geometry (Kani’s theorem), not from the isogeny-walking or endomorphism ring computation techniques that the community had been analyzing. The “unknown unknown” — an attack from an unexpected mathematical direction — is a real threat.
  3. Young hard problems are risky. The supersingular isogeny problem had been studied for far less time than lattice problems, factoring, or coding theory. A decade of analysis is not enough to establish confidence comparable to problems studied for 40+ years.
  4. Small key sizes are not free. SIKE’s remarkably compact parameters were a consequence of the mathematical structure that also made the attack possible. When parameters look “too good to be true” compared to other PQC families, this should prompt additional scrutiny.

For more on isogeny-based cryptography and SIKE’s position in the broader PQC landscape, see Other PQC Families & Broken Schemes.

3.2 Rainbow: The Rectangular MinRank Attack

Rainbow was a multivariate polynomial signature scheme based on the Oil and Vinegar construction (see Other PQC Families & Broken Schemes for background). It was selected as one of NIST’s Round 3 finalists for digital signatures, alongside ML-DSA and SLH-DSA. Rainbow offered extremely fast signature verification and compact signatures.

The break (February 2022):

Ward Beullens published a preprint showing that Rainbow’s layered structure — the multi-layer Oil and Vinegar construction that gave it compact parameters — could be exploited via a rectangular MinRank attack.

How the attack works:

The MinRank problem asks: given a set of matrices M_1, …, M_k, find a non-trivial linear combination c_1 M_1 + … + c_k M_k that has rank at most r. For generic matrices, MinRank is NP-hard. But Rainbow’s layered structure produces matrices with highly constrained rank structure.

Beullens’ key observations:

  1. Rainbow’s public key, viewed as a set of quadratic forms, corresponds to matrices where the layered Oil-Vinegar structure imposes strong rank constraints
  2. By considering “rectangular” submatrices (not the full square matrix representation), the rank deficiency becomes more pronounced and easier to exploit
  3. The rectangular MinRank instance derived from Rainbow’s public key can be solved in significantly less time than the security claims assumed — approximately 2^53 operations for Rainbow’s Level I parameters, which targeted 128-bit security

Impact and timeline:

DateEvent
2005Rainbow proposed by Ding and Schmidt
2017Rainbow submitted to NIST PQC Round 1
2020Rainbow advances to Round 3 as signature finalist
2022 (Feb 14)Beullens posts rectangular MinRank attack preprint
2022 (Feb 21)Multiple teams confirm and reproduce the attack
2022 (Mar)Beullens demonstrates key recovery for all parameter sets in hours
2022 (Oct)NIST officially removes Rainbow from standardization

Beullens demonstrated a practical key-recovery attack against all three Rainbow parameter sets. The attack recovered the secret key in approximately 53 hours for Rainbow Level I (targeting 128-bit security) on a standard laptop. NIST subsequently removed Rainbow from the standardization process.

Lessons from Rainbow:

  1. Layered structure introduced exploitable regularity. Plain UOV (Unbalanced Oil and Vinegar) has survived 25+ years of analysis. Rainbow’s multi-layer extension, which was introduced to improve parameters, also introduced the structure that enabled the attack. Optimization of parameters can reduce security margins in subtle ways.
  2. The MinRank problem is not as hard as believed for structured instances. The generic MinRank problem is NP-hard, but the specific instances arising from Rainbow had exploitable structure. This is a recurring theme in PQC: security reductions to NP-hard problems provide limited guarantees when specific instances have additional structure.
  3. Signature schemes face different attack surfaces than KEMs. The public key of a signature scheme is used directly and repeatedly; an attacker has unlimited access to it. This makes key-recovery attacks (like MinRank) particularly dangerous for signature schemes.

3.3 What Breaks Teach Us About Security Margins

Both SIKE and Rainbow were broken not by incremental improvements to known attack classes, but by qualitatively new attacks that exploited structural properties the community had not previously considered exploitable. This has important implications:

  • Conservative parameter choices matter. Schemes with large security margins (like ML-KEM, which has 50+ bits of margin above NIST thresholds) can absorb significant improvements in attack methodology. SIKE and Rainbow had tighter margins.
  • Diversity of hardness assumptions matters. This is why NIST standardized algorithms from multiple families: lattice-based (ML-KEM, ML-DSA, FN-DSA), hash-based (SLH-DSA), and code-based (HQC). If one family falls, others may survive.
  • Mathematical maturity of the underlying problem matters. Lattice problems have been studied since the 1980s (LLL algorithm, 1982). The decoding problem for linear codes dates to the 1960s. The specific isogeny problem exploited in SIKE was studied only since 2011. Time in the cryptanalytic spotlight is a meaningful, if imperfect, indicator of security.

4. Side-Channel Attacks

Side-channel attacks exploit physical characteristics of a cryptographic implementation — timing, power consumption, electromagnetic emanation, cache behavior — to extract secret information. PQC algorithms introduce new side-channel attack surfaces that do not exist in classical RSA or ECC implementations.

4.1 Side-Channel Attack Surfaces by Algorithm

graph LR
    subgraph "ML-KEM Side Channels"
        A1["NTT Butterfly<br/>Timing"] --> A2["Secret-Dependent<br/>Branching"]
        A3["Decapsulation<br/>Comparison"] --> A4["Power Trace<br/>Leakage"]
        A5["Noise Sampling<br/>CBD"] --> A6["Distribution<br/>Leakage"]
    end

    subgraph "ML-DSA Side Channels"
        B1["Rejection Sampling<br/>Loop Count"] --> B2["Nonce/Secret<br/>Correlation"]
        B3["NTT Operations"] --> B4["Timing<br/>Variation"]
        B5["Hint Vector<br/>Computation"] --> B6["Power<br/>Analysis"]
    end

    subgraph "FN-DSA Side Channels"
        C1["Floating-Point<br/>Arithmetic"] --> C2["FP Exception<br/>Timing"]
        C3["Gaussian Sampling<br/>CDT/Ziggurat"] --> C4["Branch<br/>Prediction"]
        C5["Tree-Based<br/>Sampling"] --> C6["Cache Access<br/>Pattern"]
    end

    subgraph "SLH-DSA Side Channels"
        D1["Hash Chain<br/>Length"] --> D2["Timing<br/>Variation"]
        D3["WOTS+ Chain<br/>Position"] --> D4["Power<br/>Correlation"]
        D5["FORS Tree<br/>Access"] --> D6["Cache<br/>Pattern"]
    end

    style A1 fill:#1a1a2e,stroke:#e94560,color:#eee
    style A3 fill:#1a1a2e,stroke:#e94560,color:#eee
    style A5 fill:#1a1a2e,stroke:#e94560,color:#eee
    style B1 fill:#1a1a2e,stroke:#e94560,color:#eee
    style B3 fill:#1a1a2e,stroke:#e94560,color:#eee
    style B5 fill:#1a1a2e,stroke:#e94560,color:#eee
    style C1 fill:#1a1a2e,stroke:#e94560,color:#eee
    style C3 fill:#1a1a2e,stroke:#e94560,color:#eee
    style C5 fill:#1a1a2e,stroke:#e94560,color:#eee
    style D1 fill:#1a1a2e,stroke:#e94560,color:#eee
    style D3 fill:#1a1a2e,stroke:#e94560,color:#eee
    style D5 fill:#1a1a2e,stroke:#e94560,color:#eee
    style A2 fill:#16213e,stroke:#0f3460,color:#aaa
    style A4 fill:#16213e,stroke:#0f3460,color:#aaa
    style A6 fill:#16213e,stroke:#0f3460,color:#aaa
    style B2 fill:#16213e,stroke:#0f3460,color:#aaa
    style B4 fill:#16213e,stroke:#0f3460,color:#aaa
    style B6 fill:#16213e,stroke:#0f3460,color:#aaa
    style C2 fill:#16213e,stroke:#0f3460,color:#aaa
    style C4 fill:#16213e,stroke:#0f3460,color:#aaa
    style C6 fill:#16213e,stroke:#0f3460,color:#aaa
    style D2 fill:#16213e,stroke:#0f3460,color:#aaa
    style D4 fill:#16213e,stroke:#0f3460,color:#aaa
    style D6 fill:#16213e,stroke:#0f3460,color:#aaa

4.2 Detailed Side-Channel Analysis

The following table summarizes the known side-channel attacks, their severity, and the required countermeasures for each NIST-standardized PQC algorithm.

AlgorithmAttack TypeSpecific VulnerabilitySeverityCountermeasure
ML-KEMTimingNTT butterfly operations with secret-dependent modular reductionsHighConstant-time NTT implementation; avoid conditional reduction
ML-KEMPower (SPA)Decapsulation re-encryption comparison leaks validity of ciphertextHighConstant-time comparison (Fujisaki-Okamoto implicit rejection)
ML-KEMPower (DPA)Centered Binomial Distribution (CBD) sampling correlates with secret coefficientsMediumMasked sampling; shuffled coefficient order
ML-KEMCacheNTT twiddle factor table lookupsMediumPreload tables into cache; bit-sliced implementation
ML-DSATimingRejection sampling loop iteration count depends on secret key and nonceCriticalConstant-time rejection loop (pad to max iterations); sample in constant number of steps
ML-DSANonce reuseReusing nonce with same key leaks secret key algebraically (not a side channel per se, but often caused by side-channel-induced nonce bias)CriticalRFC 6979-style deterministic nonce derivation with hedging; hardware RNG contribution
ML-DSAPower (DPA)Polynomial multiplication with secret polynomials during signingHighFirst-order masking of NTT; randomized execution order
SLH-DSATimingWOTS+ chain computation length depends on message hash valueMediumConstant-time chain computation (always compute full chain, discard extra)
SLH-DSACacheFORS tree leaf access pattern reveals selected leavesMediumOblivious memory access; all-leaf precomputation
SLH-DSAPowerHash function calls correlate with internal stateLowMasked hash implementation (expensive for SHA-256/SHAKE)
FN-DSAFloating-pointDiscrete Gaussian sampling uses floating-point arithmetic; FP operations have data-dependent timing on most CPUsCriticalInteger-only sampler (eliminates FP entirely); constant-time FP emulation
FN-DSABranch predictionTree-based sampling (CDT tables, lazy sampling) has secret-dependent branchesCriticalConstant-time table lookup; oblivious sampling
FN-DSACacheLookup tables for Gaussian sampling are accessed at secret-dependent indicesHighBit-sliced implementation; full table scan with conditional moves
FN-DSAPower (SPA)FFT operations during signature generation with secret keyHighMasked FFT; randomized butterfly order

4.3 ML-KEM: Timing and Power Analysis

ML-KEM’s primary side-channel concern is in the decapsulation operation. The Fujisaki-Okamoto (FO) transform used to convert the underlying CPA-secure public-key encryption scheme into a CCA-secure KEM requires:

  1. Decrypting the ciphertext to recover the plaintext message m’
  2. Re-encrypting m’ to obtain a reference ciphertext c’
  3. Comparing c with c’ in constant time
  4. If they match, deriving the shared secret from m’; if not, deriving a “dummy” shared secret from a secret rejection key

Steps 3 and 4 must be constant-time. If an attacker can distinguish the “accept” path from the “reject” path — through timing, power, or electromagnetic emanation — they can mount an adaptive chosen-ciphertext attack that recovers the secret key one coefficient at a time.

The NTT (Number Theoretic Transform) is the other major attack surface. ML-KEM uses NTT for polynomial multiplication, and the butterfly operations involve modular reductions that can be data-dependent on some architectures. Barrett or Montgomery reduction implementations must be carefully validated to ensure constant-time behavior across all possible inputs.

Countermeasures: The reference implementations of ML-KEM (as standardized in FIPS 203) are designed to be constant-time. However, constant-time behavior depends on the target architecture — compiler optimizations, CPU microarchitecture, and speculative execution can all reintroduce timing variability. Verification tools like ctgrind (based on Valgrind) and timecop can detect timing leaks but are not foolproof. For high-assurance deployments, formal verification of constant-time properties (e.g., using Jasmin/EasyCrypt) is recommended.

4.4 ML-DSA: Rejection Sampling Leakage

ML-DSA’s signing procedure uses rejection sampling: after computing a candidate signature, the algorithm checks whether the signature would leak information about the secret key (specifically, whether the masking vector y is sufficiently large relative to the secret key contribution). If the check fails, the algorithm rejects the candidate and tries again with a fresh random nonce.

The number of rejection iterations is secret-dependent. On average, ML-DSA-65 requires approximately 5.1 signing attempts per signature. An attacker who can observe the number of iterations (through timing, power traces, or electromagnetic emanation) gains partial information about the secret key. Over many signatures, this information accumulates and can enable key recovery.

The nonce reuse catastrophe: If an implementation is induced to sign the same message with the same nonce (for example, through a fault injection that resets the RNG state), ML-DSA’s algebraic structure allows immediate secret key recovery from two signatures with the same nonce — identical to the ECDSA nonce reuse vulnerability that compromised PlayStation 3’s code signing. This is not hypothetical; it motivates the use of deterministic nonce derivation (where the nonce is derived from the secret key and message hash) hedged with randomness from a hardware RNG.

4.5 FN-DSA: The Floating-Point Danger

FN-DSA (Falcon) is the most side-channel-dangerous of the NIST PQC standards. Its signing procedure requires sampling from a discrete Gaussian distribution over a lattice — and the standard way to do this involves floating-point arithmetic.

The problem: floating-point operations on essentially all modern CPUs are not constant-time. Subnormal numbers (numbers very close to zero) trigger different microarchitectural paths than normal numbers. Different exponent ranges may have different latencies. Floating-point exceptions (overflow, underflow, inexact) can introduce timing variations. On x86 processors, the transition between SSE and x87 floating-point modes has measurable timing differences.

In FN-DSA, the Gaussian sampling process involves computing values like exp(-x^2 / (2 * sigma^2)) where x depends on the secret key. If the floating-point computation of this exponential leaks timing information about x, the attacker can recover the secret key.

This is not a theoretical concern. Multiple research papers have demonstrated practical side-channel key recovery against Falcon implementations:

  • Guerreau et al. (2022) demonstrated electromagnetic side-channel key recovery against a Falcon implementation on an ARM Cortex-M4
  • Karmakar et al. (2023) showed power analysis attacks against the floating-point sampler

Countermeasures:

  1. Replace floating-point with integer arithmetic entirely. This is the recommended approach. Several constant-time integer-only Gaussian samplers have been developed for FN-DSA, including the sampler by Thomas Prest (2023) and the implementation in PQClean.
  2. Mask the sampling process. Split the secret values into shares and sample independently for each share, combining the results. This increases computational cost but prevents single-trace attacks.
  3. Avoid FN-DSA if possible. For applications where ML-DSA’s larger signatures are acceptable, ML-DSA is significantly easier to implement securely. FN-DSA’s advantages (smaller signatures) come with a substantial side-channel implementation burden.

5. Implementation Attacks

Implementation attacks go beyond passive observation of side channels. They actively manipulate the device or its environment to induce faulty behavior that leaks secrets.

5.1 Fault Injection Attacks

Fault injection attacks corrupt a computation at a precise moment to cause the device to output erroneous results that reveal information about the secret key.

Fault injection methods:

MethodMechanismPrecisionCostTypical Target
Voltage glitchingMomentarily drop or spike the supply voltageCycle-level$100–$1,000 (ChipWhisperer)Microcontrollers, embedded SoCs
Clock glitchingInsert extra clock edges or shorten clock periodsCycle-level$100–$1,000Synchronous digital circuits
Electromagnetic (EM) pulseFocused EM pulse induces transient currents~1mm spatial$10,000–$50,000Specific functional units on chip
Laser fault injection (LFI)Focused laser beam flips bits in SRAM or registers~1um spatial$50,000–$500,000Individual transistors, SRAM cells
RowhammerRepeated DRAM row access causes bit flips in adjacent rowsRow-level$0 (software only)DRAM-based systems (servers, desktops)

Fault attacks against ML-KEM:

The most dangerous fault attack against ML-KEM targets the decapsulation comparison. The FO transform’s security depends on the device correctly comparing the re-encrypted ciphertext with the received ciphertext. If a fault causes this comparison to always report “equal” (skipping the comparison), the attacker can submit malformed ciphertexts and use the resulting (incorrect) shared secrets to recover the secret key through an adaptive chosen-ciphertext attack.

Specifically:

  1. The attacker sends a deliberately malformed ciphertext c* to the decapsulation oracle
  2. A fault injection causes the FO comparison to be skipped — the device treats c* as valid
  3. The device returns a shared secret derived from the “decrypted” message, rather than the rejection secret
  4. By carefully constructing c* and observing the shared secret, the attacker learns information about the secret key
  5. After O(n) adaptive queries, the full secret key is recovered

Countermeasures:

  • Double computation: Perform the decapsulation and comparison twice, using different code paths or instruction sequences, and check that both results agree
  • Instruction counter verification: Use hardware performance counters or watchdog timers to verify that the expected number of instructions were executed
  • Error-detecting codes (EDCs): Protect intermediate values with redundancy codes; any fault that corrupts a protected value is detected
  • Physical countermeasures: Voltage and clock monitoring circuits, light sensors (for laser FI), EM shielding

Rowhammer against PQC in software: Rowhammer is particularly relevant for server-side PQC deployments. If ML-KEM decapsulation runs on a server with DRAM-based key storage, an attacker co-located on the same physical machine can use Rowhammer to flip bits in the stored secret key. Even a single bit flip in the secret polynomial can enable a key-recovery attack. Mitigation: store secret keys in ECC-protected memory, or use integrity checks on the secret key before each use.

5.2 Timing Leaks in Comparison Operations

Beyond the FO comparison, PQC implementations contain many comparison operations that must be constant-time:

  • Polynomial coefficient comparison in ML-DSA’s rejection sampling (checking whether ||z||_inf < gamma_1 - beta)
  • Checksum verification in hash-based signatures
  • Decoding validity checks in code-based schemes (HQC)

A common implementation error is using early-exit comparison functions (like C’s memcmp) that return as soon as a mismatch is found. This leaks the position of the first different byte, which can be exploited over many queries.

Constant-time comparison pattern (C):

int constant_time_compare(const uint8_t *a, const uint8_t *b, size_t len) {
    volatile uint8_t result = 0;
    for (size_t i = 0; i < len; i++) {
        result |= a[i] ^ b[i];
    }
    return (1 & ((result - 1) >> 8)) - 1;
    // Returns 0 if equal, -1 if not equal
}

Even this pattern can fail if the compiler “optimizes” it into an early-exit loop. Using volatile qualifiers, compiler barriers, or assembly implementations is essential.

5.3 Cache-Timing Attacks

Cache-timing attacks exploit the fact that memory accesses that hit in the CPU cache are faster than those that miss. If a cryptographic implementation accesses memory at secret-dependent addresses (e.g., table lookups indexed by secret values), an attacker who shares the cache (same physical core, or adjacent core sharing L2/L3) can determine which addresses were accessed.

PQC-specific cache-timing concerns:

  • NTT twiddle factor tables: ML-KEM and ML-DSA use precomputed twiddle factors for the NTT. If these tables are large enough to span multiple cache lines, the access pattern reveals which butterfly operations were performed with which factors — potentially leaking secret coefficients.
  • Gaussian sampling tables in FN-DSA: The CDT (cumulative distribution table) sampler accesses a table at positions determined by a random value compared against the secret. The access pattern directly reveals the sampled value.
  • FORS leaf selection in SLH-DSA: SLH-DSA’s FORS (Forest of Random Subsets) component selects leaves from multiple small Merkle trees. The selected leaf indices depend on the message hash and are part of the signature, but during computation, the access pattern to the tree data structure can leak information about the internal state.

Countermeasures:

  • Bit-sliced implementations: Represent table lookups as Boolean circuits operating on individual bits, eliminating secret-dependent memory access entirely. This is the gold standard for cache-timing resistance.
  • Full table scans with conditional moves: Always read every entry in the table, using conditional move instructions (CMOV on x86) to select the correct entry. This ensures every table entry is loaded into cache regardless of the secret.
  • Cache partitioning: On platforms that support it (e.g., Intel CAT — Cache Allocation Technology), dedicate cache partitions to cryptographic operations to prevent cross-process cache interference.

5.4 Key Mismatch Attacks on KEMs

A key mismatch attack exploits the situation where two parties perform a KEM key exchange but end up with different shared secrets (a “mismatch”). By observing whether a mismatch occurred — often possible through timing differences in subsequent protocol steps — an attacker can recover the secret key bit by bit.

How it works against ML-KEM (without FO transform):

  1. The attacker constructs a specially crafted ciphertext that, when decrypted, produces a result that depends on a single coefficient of the secret key
  2. The attacker sends this ciphertext and observes whether the resulting shared secret matches (indicating the guessed coefficient value was correct) or mismatches
  3. By repeating with different crafted ciphertexts, the attacker recovers the full secret key

The Fujisaki-Okamoto transform is specifically designed to prevent this attack: the re-encryption check ensures that any malformed ciphertext is rejected, and the “implicit rejection” mechanism ensures that the rejection path is indistinguishable from the acceptance path (from the attacker’s perspective). However, if the implementation has a side-channel leak in the FO comparison (Section 5.1), the key mismatch attack becomes viable again.

Key mismatch attacks have been demonstrated against:

  • Unprotected (CPA-secure) versions of Kyber/ML-KEM (Bauer et al., 2019)
  • NTRU implementations with imperfect FO transforms (Bindel et al., 2019)
  • HQC implementations where decoding failures are detectable (Guo et al., 2022)

6. Protocol-Level Attacks

Even a perfectly implemented, side-channel-hardened PQC algorithm can be defeated if the protocol that uses it has vulnerabilities. During the transition from classical to post-quantum cryptography, protocol-level attacks are among the most practical threats.

6.1 Downgrade Attacks

A downgrade attack forces a connection to use a weaker protocol version or cipher suite than both parties would otherwise negotiate. In the PQC transition context, this means forcing a connection to use classical (non-quantum-resistant) cryptography even when both parties support PQC.

How it works:

In TLS 1.3, the client sends a list of supported key exchange groups in the supported_groups extension, and the server selects one. If the client offers both PQC hybrid groups (e.g., X25519MLKEM768) and classical groups (e.g., X25519), a man-in-the-middle attacker can modify the ClientHello to remove the PQC options, forcing the server to select a classical group.

TLS 1.3’s design mitigates this through the Finished message, which includes a MAC over the entire handshake transcript. If the attacker modifies the ClientHello, the Finished messages will not match, and the handshake will fail. However:

  • TLS 1.2 and earlier versions do not have robust transcript binding and are vulnerable to downgrade attacks
  • Misconfigured implementations that fall back to TLS 1.2 when TLS 1.3 fails create a downgrade path
  • QUIC and other protocols may have different negotiation mechanisms with different downgrade resistance properties

Mitigation: Configure servers to reject non-PQC key exchange groups entirely once PQC deployment is confirmed. Use TLS 1.3 exclusively. Monitor for unexpected cipher suite selections in connection logs. See PQC in Protocols for detailed protocol configuration guidance.

6.2 Version Rollback

Version rollback is a specific type of downgrade attack that forces a connection to use an older protocol version. In the PQC context, this is dangerous because:

  • Older TLS versions (1.0, 1.1, 1.2) do not support PQC key exchange groups
  • Forcing a rollback to an older version automatically eliminates PQC protection
  • Many deployments maintain backward compatibility with older versions for legacy client support

TLS 1.3 includes a downgrade sentinel — the server inserts a specific value at the end of its Random field in the ServerHello when negotiating TLS 1.2 or below. A TLS 1.3-capable client that sees this sentinel knows that a downgrade has occurred. However, this only works if the client checks the sentinel — some implementations do not.

Mitigation: Disable TLS 1.0 and 1.1 entirely. Configure TLS 1.2 to only negotiate PQC-capable cipher suites where possible. Prefer TLS 1.3 exclusively for PQC-sensitive connections. Implement and verify downgrade sentinel checking.

6.3 Hybrid Mode Stripping

Hybrid cryptography combines classical and post-quantum algorithms so that the connection is secure as long as either algorithm is unbroken. Hybrid mode stripping attacks attempt to remove the post-quantum component, leaving only the classical algorithm.

Attack scenarios:

  1. ClientHello modification: Strip the post-quantum component from the hybrid key share, leaving only the classical component. If the server accepts a non-hybrid classical group that the client also supports, the connection proceeds without PQC protection.

  2. Key share truncation: In some hybrid implementations, the post-quantum and classical key shares are concatenated in a single extension. An attacker who understands the format can truncate the PQC portion while leaving the classical portion intact. If the implementation does not validate the key share length against the negotiated group, it may proceed with only the classical key exchange.

  3. Certificate chain manipulation: In a hybrid PKI deployment where certificates contain both classical and PQC public keys, an attacker can strip the PQC key from the certificate. If the relying party accepts a certificate with only a classical key, the PQC signature verification is bypassed.

Mitigation: Use combined hybrid key exchange groups (where the PQC and classical components are inseparable in the negotiation) rather than composite approaches. Validate key share lengths strictly. Require PQC signatures in certificate chains. See Hybrid Cryptography for implementation guidance.

6.4 Certificate Substitution

During the PQC transition, PKI deployments will contain a mix of classical and PQC certificates. A certificate substitution attack exploits this heterogeneity:

  1. A legitimate server has both a classical (RSA/ECDSA) certificate and a PQC (ML-DSA) certificate
  2. An attacker who has compromised the classical key (e.g., via a future quantum computer) intercepts a connection
  3. The attacker substitutes the PQC certificate with the classical certificate
  4. If the client accepts the classical certificate (because it is still within its validity period and chains to a trusted root), the connection proceeds with compromised authentication

This is particularly dangerous in the “harvest now, decrypt later” threat model: an adversary who records today’s handshakes may later obtain a quantum computer capable of breaking the classical key, then use the recorded classical certificate to mount a man-in-the-middle attack against recorded sessions.

Mitigation: Implement certificate transparency (CT) logging for PQC certificates. Configure clients to prefer PQC certificates when available. Use certificate binding mechanisms that tie the certificate choice to the key exchange (e.g., the selected key exchange group determines which certificate type is acceptable). Revoke classical certificates proactively as PQC certificates are deployed.

6.5 Replay and Oracle Attacks During Migration

The transition period introduces a unique window where systems may accept both classical and PQC credentials, creating oracle opportunities:

  • Cross-protocol replay: If a system accepts both classical TLS 1.2 sessions and PQC-enabled TLS 1.3 sessions, session tickets or resumption tokens from one protocol version may be replayed against the other if session management does not properly bind tokens to the negotiated parameters.
  • Algorithm confusion: If a system supports multiple PQC algorithms (e.g., both ML-KEM and HQC for key exchange), an attacker could attempt to present a ciphertext formatted for one algorithm as a ciphertext for another, exploiting differences in validation or error handling to create a distinguishing oracle.
  • Fallback oracle: If a server falls back from PQC to classical cryptography when PQC negotiation fails, an attacker can force fallback by injecting errors during the PQC key exchange, then exploit the classical key exchange. The attacker effectively uses the PQC negotiation failure as a trigger for downgrade.

Mitigation: Bind session tokens to the full set of negotiated parameters (protocol version, key exchange group, signature algorithm). Implement strict algorithm negotiation that does not fall back silently. Log and alert on negotiation failures that result in algorithm downgrades.


7. Comprehensive Attack Reference Table

The following table provides a consolidated reference of attacks across all categories, organized by algorithm.

AlgorithmAttack CategorySpecific AttackImpactDifficultyMitigation
ML-KEMMathematicalPrimal lattice attack (BKZ)Key recoveryInfeasible at current parameters (>2^192)Conservative parameter selection
ML-KEMMathematicalDual attack (MATZOV variant)Key recoveryDebated; likely no better than primalMonitor research; cryptographic agility
ML-KEMSide-channelTiming in NTTPartial key leakModerate (requires local access)Constant-time NTT
ML-KEMSide-channelPower analysis on FO comparisonKey recoveryHigh (requires physical access)Constant-time comparison; masking
ML-KEMImplementationFO fault injectionKey recoveryHigh (requires physical access + equipment)Double computation; integrity checks
ML-KEMImplementationKey mismatch oracleKey recoveryModerate (requires CCA oracle leak)Correct FO implementation; implicit rejection
ML-KEMImplementationRowhammer on secret keyKey recoveryModerate (co-located attacker)ECC memory; key integrity checks
ML-KEMProtocolDowngrade to classical KEMLoss of PQ protectionLow (network MITM)TLS 1.3 only; strict group policy
ML-DSAMathematicalPrimal lattice attack (BKZ)Key recoveryInfeasible at current parametersConservative parameter selection
ML-DSASide-channelRejection sampling timingKey recovery over many signaturesModerateConstant-time rejection loop
ML-DSASide-channelNonce reuse / nonce biasImmediate key recoveryCritical if exploitedDeterministic nonce with hedging
ML-DSASide-channelDPA on NTT with secret keyKey recoveryHigh (physical access)Masked NTT
ML-DSAImplementationFault during signingSignature forgery; key leakHigh (physical access)Signature verification before output
SLH-DSAMathematicalPreimage/collision on hashForgeryInfeasible (hash security)Use SHA-256 or SHAKE-256 at appropriate security level
SLH-DSASide-channelWOTS+ chain timingPartial state leakLow (minimal exploitable info)Constant-time chain computation
SLH-DSASide-channelFORS cache access patternLeaf index leakMediumOblivious memory access
SLH-DSAImplementationFault in hash computationSignature forgeryHigh (requires precise fault)Redundant hash computation
FN-DSAMathematicalPrimal attack on NTRU latticeKey recoveryInfeasible at current parametersConservative parameters; avoid overstretched regime
FN-DSASide-channelFloating-point timingKey recoveryCritical (demonstrated practical attacks)Integer-only sampler; avoid FP entirely
FN-DSASide-channelGaussian sampling cache timingKey recoveryHighBit-sliced sampler; constant-time table access
FN-DSASide-channelEM emanation during FFTKey recoveryHigh (demonstrated on ARM Cortex-M4)Masked FFT; EM shielding
FN-DSAImplementationFault in samplingBiased signatures; key leakHighVerify signature before output
HQCMathematicalISD (BJMM variant)Key recoveryInfeasible at current parameters (>2^128)Conservative code parameters
HQCMathematicalQuantum ISDKey recoveryInfeasible (halves security bits)Parameters account for quantum speedup
HQCSide-channelDecoding timingPartial key leakMediumConstant-time decoder
HQCImplementationDecoding failure oracleKey recoveryModerate (requires many queries)Failure rate below 2^(-128)
All PQCProtocolHybrid mode strippingLoss of PQ protectionLow (network MITM)Combined hybrid groups; strict validation
All PQCProtocolCertificate substitutionAuthentication bypassModerate (requires compromised classical key)CT logging; PQC certificate preference

8. Mitigations Summary

8.1 Against Mathematical Attacks

  1. Use conservative parameters. The NIST-standardized parameter sets were chosen with substantial security margins. Do not use non-standard or reduced parameters in production.
  2. Maintain cryptographic agility. If lattice reduction algorithms improve significantly, you need the ability to update parameters or switch algorithms without redesigning your system. See Migration Strategies.
  3. Deploy algorithmic diversity. Use algorithms from different mathematical families for different purposes (e.g., ML-KEM for key exchange, SLH-DSA for long-term signatures). A breakthrough against lattices would not affect hash-based signatures.
  4. Monitor the research community. Follow NIST’s post-standardization cryptanalysis efforts, the IACR ePrint archive, and major cryptography conferences (CRYPTO, EUROCRYPT, ASIACRYPT) for advances in lattice reduction, ISD, and algebraic attacks.

8.2 Against Side-Channel Attacks

  1. Use audited, constant-time implementations. Prefer implementations that have been formally verified for constant-time behavior (e.g., those produced using Jasmin or verified with tools like ct-verif).
  2. Apply masking for high-value targets. First-order (and potentially higher-order) masking prevents single-trace power/EM attacks. The performance overhead is significant (2-5x for first-order masking) but necessary for smart cards and embedded devices.
  3. Avoid FN-DSA floating-point in production. Use integer-only Gaussian samplers, or prefer ML-DSA if signature size constraints allow.
  4. Test with side-channel evaluation tools. Use Test Vector Leakage Assessment (TVLA) methodology, power analysis platforms (ChipWhisperer, Riscure Inspector), and timing analysis tools to evaluate implementations before deployment.

8.3 Against Implementation Attacks

  1. Implement redundancy. Double-check critical computations (FO comparison, signature generation). Verify outputs before releasing them.
  2. Protect key storage. Use ECC-protected memory, hardware security modules (HSMs), or trusted execution environments (TEEs) for secret key storage.
  3. Validate all inputs. Check ciphertext lengths, public key formats, signature sizes, and all protocol fields before processing. Reject malformed inputs immediately.
  4. Deploy fault countermeasures on embedded platforms. Voltage monitors, clock monitors, light sensors, and instruction flow integrity checks are essential for devices exposed to physical attackers.

8.4 Against Protocol-Level Attacks

  1. Use TLS 1.3 exclusively for PQC-sensitive connections. Disable fallback to older versions.
  2. Configure strict cipher suite policies. Once PQC key exchange is deployed, remove non-PQC groups from the server’s offered list.
  3. Use combined hybrid modes where the classical and PQC components cannot be separated in negotiation.
  4. Implement certificate transparency for PQC certificates and monitor for unauthorized issuance.
  5. Plan for certificate lifecycle management. Proactively rotate from classical to PQC certificates and revoke classical certificates on a defined timeline. See PQC in Protocols for protocol-specific guidance.

9. The Evolving Threat Landscape

The attack landscape against PQC is not static. Several active research directions may change the balance:

Lattice reduction improvements: The sieving algorithms at the core of BKZ have seen incremental improvements over the past decade — from the GaussSieve (2010) to the HashSieve (2015) to the G6K framework (2019). Each improvement reduces the constant in the exponential running time. A hypothetical reduction of the classical sieving constant from 0.292 to 0.265 (the current quantum sieving constant) would reduce ML-KEM-768’s security estimate by approximately 25 bits — still above the NIST threshold, but significantly eroding the margin.

Key areas of active lattice reduction research include:

  • Memory-efficient sieving: Current sieving algorithms require exponential memory (approximately 2^(0.2075 * beta) vectors must be stored). Research into memory-efficient variants could make larger block sizes practical, but so far, memory-time tradeoffs have not produced asymptotic improvements.
  • Quantum sieving refinements: Combining Grover search with classical sieving databases is the basis of the 2^(0.265 * beta) quantum sieving estimate. More sophisticated quantum-classical hybrid sieving strategies could potentially improve this constant, though no concrete improvements have been demonstrated.
  • The G6K kernel: The General Sieve Kernel (G6K), developed by Albrecht et al. (2019), provides a unified framework for lattice sieving that subsumes previous algorithms. G6K-based implementations have set records for lattice challenges and provide the best practical attack implementations. Monitoring G6K improvements is essential for tracking the practical state of lattice attacks.

Quantum algorithms beyond Shor and Grover: The assumption that quantum computers only help through Shor’s algorithm (for factoring/discrete log) and Grover’s algorithm (for generic search) may prove too optimistic. New quantum algorithms that exploit the algebraic structure of lattice or code-based problems could shift the landscape. No such algorithms are known, but the field of quantum algorithms is young.

Several speculative directions deserve monitoring:

  • Quantum walks on lattice graphs: Quantum random walk algorithms could potentially speed up lattice enumeration, though no concrete advantage has been demonstrated for cryptographic dimensions.
  • Variational quantum algorithms: Near-term quantum devices running variational algorithms (VQE, QAOA) have been proposed for combinatorial optimization problems related to lattice SVP, but current hardware is far too noisy and small to be relevant.
  • Quantum speedups for algebraic attacks: If quantum computers can speed up Gröbner basis computation or other algebraic techniques, this could affect the security of structured lattice schemes. The relationship between quantum computation and algebraic geometry is an active research area.

AI-assisted cryptanalysis: Machine learning techniques have been applied to cryptanalysis with mixed results. Neural networks have been trained to distinguish LWE samples from random (Wenger et al., 2022), though so far only for parameters far smaller than those used in practice. As AI capabilities advance, AI-assisted attack strategies could potentially discover new attack patterns that human researchers have missed.

Specific AI-cryptanalysis results to date:

  • LWE distinguishing: Neural networks can distinguish LWE from uniform random for small parameters (n < 64, small modulus) but fail completely for cryptographic parameters. The gap between “toy” and “real” parameters remains vast.
  • Side-channel trace classification: Deep learning (CNNs, transformers) has proven highly effective at extracting keys from power and EM traces, often outperforming classical template attacks. This is the most immediately practical AI-assisted attack vector.
  • Automated vulnerability discovery: Fuzzing and symbolic execution augmented with ML have found implementation bugs in cryptographic libraries, though not fundamental algorithmic breaks.

Side-channel attack automation: Profiled side-channel attacks increasingly use deep learning to automatically extract secrets from power or EM traces without requiring manual leakage modeling. As these tools become more sophisticated and accessible, the bar for mounting side-channel attacks drops. Commercial tools like Riscure Inspector and Langer EMV-TechnoPartner now incorporate ML-based trace analysis as standard features, lowering the expertise required to mount sophisticated attacks.

Multi-target attacks and batch cryptanalysis: As PQC deployments scale to millions of users, multi-target attacks become relevant. An attacker targeting any one of N users benefits from a factor-of-N speedup in brute-force attacks. For lattice-based schemes, multi-target attacks are less straightforward than for symmetric primitives, but hybrid approaches combining lattice reduction with multi-target enumeration could reduce effective security margins for large-scale deployments. The NIST security level definitions explicitly account for multi-target scenarios, but implementations should be aware of this additional attack surface.


10. Practical Recommendations

For organizations deploying PQC today, the attack landscape informs several practical priorities:

  1. Do not delay deployment waiting for “perfect” security. The NIST standards have survived extensive analysis. The risk of harvest-now-decrypt-later attacks (see Classical Cryptography at Risk) outweighs the residual risk from potential future cryptanalytic improvements.

  2. Prioritize ML-KEM for key exchange. It has the strongest security margin among lattice-based schemes, the most extensive analysis, and the most mature constant-time implementations.

  3. Choose ML-DSA over FN-DSA unless signature size is critical. FN-DSA’s smaller signatures come at the cost of significantly harder side-channel protection. ML-DSA is easier to implement securely.

  4. Deploy SLH-DSA for long-term signatures (code signing, root certificates, firmware updates) where signature size is less important than confidence in long-term security. SLH-DSA’s security depends only on the hash function, providing maximum diversity against lattice-specific attacks.

  5. Use hybrid cryptography during the transition. Combining classical and post-quantum algorithms ensures that a break of either component alone does not compromise security. See Hybrid Cryptography.

  6. Invest in implementation quality. Use well-audited libraries (see Implementations and Libraries), run side-channel tests, and validate constant-time behavior on your specific target platform.

  7. Build cryptographic agility into your architecture. The lessons from SIKE and Rainbow are clear: any scheme can be broken. Systems that can swap algorithms without architectural changes are resilient to future surprises. See Migration Strategies.

  8. Conduct regular threat modeling. Map your deployment against the attack categories in this page. For each category, ask: (a) is this attack relevant to my threat model? (b) are mitigations in place? (c) how would I detect an active attack? Document the results and revisit them as the threat landscape evolves.

  9. Establish a cryptanalytic monitoring process. Assign a team member or subscribe to a threat intelligence feed that tracks PQC cryptanalysis developments. Key sources include:

    • The IACR ePrint archive (eprint.iacr.org) — preprints appear here first
    • NIST’s PQC mailing list and status updates
    • Major conference proceedings: CRYPTO, EUROCRYPT, ASIACRYPT, Real World Crypto
    • The PQC Forum community discussions
    • Vendor advisories from your PQC library providers
  10. Plan incident response for cryptographic breaks. If a NIST-standardized PQC algorithm is broken (as SIKE and Rainbow were), your organization needs a response plan. This plan should include: identifying all systems using the affected algorithm, activating cryptographic agility mechanisms to switch algorithms, rotating affected keys, and communicating with stakeholders. The response timeline should be measured in days, not months — SIKE went from “secure” to “totally broken” in under a week.


11. Key Takeaways

The attack landscape against PQC is broad, multi-layered, and actively evolving. The core points for practitioners:

  • No PQC algorithm is unconditionally secure. Security is always conditional on hardness assumptions and correct implementation. The NIST standards represent the best available confidence, not certainty.
  • Mathematical attacks are well-understood but not settled. The MATZOV dual attack controversy shows that even the methodology for estimating security is debated. Conservative parameters provide essential buffer.
  • Side-channel attacks are the most immediate practical threat. Mathematical attacks against the NIST standards are currently infeasible. Side-channel attacks against careless implementations are very much feasible — and have been demonstrated against FN-DSA and ML-KEM on real hardware.
  • Protocol-level attacks bypass cryptography entirely. A perfect PQC implementation behind a downgradeable protocol is not quantum-resistant. Protocol configuration is as important as algorithm selection.
  • The breaks of SIKE and Rainbow are cautionary tales, not anomalies. They demonstrate that even years of analysis by expert cryptanalysts can miss fundamental vulnerabilities. Cryptographic agility is not optional.
  • Defense in depth is the only viable strategy. Combine conservative parameter choices, audited constant-time implementations, side-channel countermeasures, strict protocol configuration, and cryptographic agility to build resilient systems.

Previous: Implementations and Libraries — practical guidance on PQC libraries, reference implementations, and deployment considerations.