Forging Rsa Signatures Without Factoring

Forging 1024-bit RSA Signatures Without Factoring: What the Research Actually Shows

Forging 1024-bit RSA Signatures Without Factoring: What the Research Actually Shows
TL;DR

This is not a break of RSA in general. Researchers implemented a 2007 algorithm to forge signatures after temporary, revoked access to a raw signing oracle — a much narrower problem than "crack RSA from the public key alone."

It requires an unpadded RSA signing oracle (a misconfigured HSM, or a blind-signature protocol by design). Standard PKCS#1v1.5 / RSA-PSS — the padding behind TLS, most OAuth, DNSSEC, and DKIM — is untouched.

Cost: 1,380 CPU core-years and ~4.1 billion oracle queries, versus 500,000–1,000,000 core-years to factor the same key directly. Extrapolated, even 4096-bit RSA falls short of 128-bit security in this specific model.

Why this made headlines

Media coverage ran with the framing: "new technique bypasses 1024-bit RSA without factoring it." That's technically true, but it invites a much bigger conclusion than the research supports — something closer to "RSA is broken." It isn't. The actual paper is careful and explicit about the boundaries of what was accomplished, and those boundaries matter more than the headline number.

The actual threat model

The standard RSA problem is: given only the public key (N, e) and a target value t, compute t1/e mod N — forge a signature with zero help. Nobody broke that here.

Instead, the paper defines and attacks what it calls delayed-target RSA (DT-RSA), modeled as a "lunchtime attack":

  • The attacker gets temporary, active access to a raw RSA signing/decryption oracle for a given key — they submit chosen inputs w and receive w1/e mod N back.
  • Access is then revoked.
  • The attacker is handed a brand-new random target t they never queried, and must produce t1/e mod N — entirely offline, with no further oracle access.

"RSA is as difficult to break as it is to factor large integers, at least so we thought." — reaction from the wider cryptography community on the paper's conceptual gap.

On the distinction between delayed-target RSA and standard RSA security

The algorithm: ∛NFS

The technique isn't new. It's from a 2007 paper by Joux, Naccache, and Thomé (JNT) that the community had largely filed away as a theoretical curiosity. The UCSD/Inria team built the first-ever implementation of it at meaningful scale, naming it ∛NFS ("eth-root NFS").

AlgorithmApplies toComplexity LN(1/3, c)
GNFS (general factoring)Any RSA modulusc ≈ 1.923
SNFS (special-form factoring)Moduli with special algebraic structurec ≈ 1.526
∛NFS (this paper)Delayed-target RSA, with oraclec ≈ 1.577

In plain terms: with oracle access, forging a signature is computationally closer to the easier special-modulus factoring case than to general factoring — exactly why the paper's title says "nearly SNFS time."

What they physically built

This wasn't purely theoretical — they ran the attack against real commercial hardware security modules (HSMs), the tamper-resistant devices used by certificate authorities, banks, and companies like WhatsApp specifically to make private keys physically unextractable.

Attack chain, end to end

Five months, two real HSMs, one forged signature

  1. Get oracle access Configure two Thales Luna HSMs (K6 local, S750 remote) with FIPS mode disabled to permit raw, unpadded RSA signing. CKM_RSA_X_509
  2. Query the oracle Submit billions of chosen inputs and record the raw signatures returned, via a three-piece distributed query pipeline. 4,067,419,331 queries
  3. Precompute Feed results into a modified CADO-NFS pipeline across a ~45-machine academic cluster — polynomial selection, sieving, linear algebra. ~1,200 core-years
  4. Lose access Oracle access is revoked. No further queries are possible from this point forward. access severed
  5. Forge offline Using only precomputation output, run descent, linear algebra, and eth-root extraction to produce a valid signature on a never-before-seen random target. ~180 core-years

The numbers

Total compute
1,380 core-yrs
vs. 500K–1M to factor directly
Duration
~5 months
March–August 2026
Oracle queries
4.07 billion
against two real HSMs
Per-forgery cost
180 core-yrs
offline, after access lost

Breakdown by phase

PhaseApprox. costNotes
Polynomial selection40 core-yearsOne-time, depends only on the modulus
Algebraic sieving150 core-yearsPrecomputation
Extension sieving~1,055 core-yearsDominant cost — 2.5 of the 5 months
Descent (3 stages)~160 core-yearsPer-target, fully offline
Linear algebra~17 core-yearsPer-target
eth root extraction~3 core-yearsFinal assembly step
The authors' own caveat

They call their result a likely upper bound. Concurrent GPU-optimized sieving (used to set a recent RSA-260 factoring record) suggests the same attack could plausibly run in 2–9 GPU-years instead of 1,380 CPU core-years. The uncertainty points toward the attack getting cheaper, not toward it being a fluke.

Scaling to 2048 and 4096 bits

Extrapolating the observed running times to larger keys:

Key sizeBit security (factoring)Bit security (with oracle)log₂(queries)
1024-bit806532
2048-bit1129043
3072-bit12810551
4096-bit144–15211957

The headline conclusion: even 4096-bit RSA doesn't reach the 128-bit security level once you're in this oracle-access threat model — a 15–30 bit shortfall across the board relative to the factoring-based numbers NIST, NSA, and EU agencies currently use to set key-size recommendations.

Where this actually applies

  • Misconfigured or legacy-mode HSMs — supporting non-standard padding like ISO 9796-2 (e-passports, digital tachographs), ANSI X9.31, or RSA-FDH (used in GNU Taler).
  • Blind RSA signature schemes (RFC 9474 / RSABSSA) — these inherently expose oracle-like access by design.
  • Privacy Pass (Apple Private Access Tokens, Cloudflare, Fastly, Persona) — an attacker would need roughly 238 CAPTCHA solves against 2048-bit keys to make this practical, currently far out of reach but a thinner margin than assumed.
  • GNU Taler e-cash — would require minting an estimated $88B in $0.01 coins against a 2048-bit key. Taler's newer clause-blind Schnorr signatures are not vulnerable at all.
  • Bleichenbacher-style padding oracles could theoretically be stacked to synthesize a raw oracle at much higher cost per query.

What it does NOT do

Explicitly out of scope

Does not factor RSA moduli faster — factoring-hardness assumptions are untouched.

Does not break standard PKCS#1v1.5 or RSA-PSS signatures — the padding behind nearly all real TLS certificates, most OAuth/JWT tokens, DNSSEC keys, and DKIM.

Does not work from passively collected signed documents "in the wild" — real signatures are padded hashes, not the exact smooth numbers the algorithm needs.

Does not resolve the 50-year-old open question of whether breaking RSA is equivalent to factoring.

Is not a zero-day — no vendor vulnerability, no disclosure process, no patch to ship.

Verdict

Is RSA "broken"?No — standard padded RSA deployments are untouched.
Is this a fluke?No — validated across four key sizes with a matching complexity curve, and the code is public.
Reproducible?Yes — released at github.com/ucsd-hacc/NSNFSSSFSFN.
Panic about TLS/HTTPS?No.
HSM / blind-signature operators?Yes — reassess raw-RSA-oracle exposure and rotation policy.
Changes PQ migration timeline?No new urgency mechanically, but another argument to retire RSA sooner.

In the authors' own words: this illustrates that classical cryptanalysis of RSA still has surprises left in it, decades after most of the field assumed it was settled — not that RSA is dead. The current transition to post-quantum algorithms remains, in their view, the right moment to move past RSA altogether rather than just inflate key sizes further.

Sources

  1. Shea, Haller, Suhl, Heninger, Thomé — "Forging 1024-bit RSA signatures in nearly SNFS time", IACR ePrint 2026/2131.