The Case of the Mystery Seeds · Chapter 10
Nib's open cases
The big mystery is solved, but a few loose threads are still hanging. While writing this explainer, Nib (with Claude doing the heavy lifting) went poking at them. Here's what we tried, what we found, and one idea that looked brilliant for about an hour.
Nib says: A word about honesty before we start. In research, "we looked and found nothing" is a real result, and "our exciting idea failed a fair test" is an even better one. You'll see both below. Every computation here can be rerun; the scripts are in the site's repository.
The case board
1. Why were some good curves skipped?
Several runs produced more acceptable curves than were published. In P-256's run, candidate 876 passed every known rule and was passed over for candidate 1,842. Valsorda found about twice as many acceptable seeds as were used, with irregular gaps. Below: our own recount, which confirms Valsorda's results exactly, and one hypothesis that failed.
2. Where did B-163's seed come from?
Four binary-curve seeds are lrand48 output (Chapter 6). The fifth, B-163, fits none of the patterns Anthropic tested, nor the extra ones we tried.
3. Where did the base points of P-224, P-256, P-384 and P-521 come from?
The base points of P-192 and five ANSI curves came from FreeLIP's random number generator with small seeds like 20000 (Chapter 8). The four bigger NIST curves don't fit that recipe.
4. Why was the binary run's clock halved?
The binary seeds decode to 1984 unless the clock value is doubled, which lands them on April 17, 1998. A program that divided the time by two is the leading guess. Nobody knows why it would.
Case 1: the skipped curves
We started by redoing the counting. For every 20-byte candidate in the four runs that produced more than one acceptable curve, about 18,000 of them, we built the curve with the X9.62 recipe and counted its points with PARI/GP, free mathematics software that does in seconds what was a research-grade computation in 1997.
Which square root. The recipe in Chapter 3 needs a b with b² × c = −27, and there are always two: b and its negative. For clocks whose size p leaves remainder 3 when divided by 4, those give twin curves with different numbers of points. The standard lets you pick either, but its own square-root algorithm returns one particular root, (−27/c)(p+1)/4, and all nine published curves of that kind use it. Valsorda had already noted this in the code he wrote to check the solve; our recount confirms it independently. It matters because several candidates make prime-order curves only with the other root (in P-256's run: candidates 81, 276, 1049 and 1383), and the program would never have seen them.
With that rule plus Valsorda's bit-length rule, our recount reproduces his lists of acceptable candidates exactly, for all four runs that produced more than one acceptable curve (prime239, P-192, P-256 and P-224). That gives us a solid footing, and it leaves the real puzzle untouched: why were some acceptable curves still skipped?
A hypothesis that died
In 1997, counting the points on a curve was hard, and the leading method (called SEA, after Schoof, Elkies and Atkin) works prime by prime. Small primes come in two flavors for each curve, "Elkies" and "Atkin", and Elkies primes make the job much easier. A tempting idea: maybe the 1997 software gave up on curves where a key step failed, so the skipped curves were simply the ones it couldn't finish.
We checked which small primes are Elkies primes for each acceptable curve. On the first two runs we finished (P-192 and P-256, seven curves), one prime split them perfectly: every published curve had 5 as an Elkies prime, and every skipped curve didn't. Seven for seven.
That looked thrilling. But we had looked at sixteen primes to find it, and with that many tries, a perfect split of seven curves turns up by luck more often than you'd think. So before the other runs finished, we wrote the hypothesis down, committed it to the site's repository with a timestamp, and set a pass mark: it had to classify at least 13 of the 14 remaining curves correctly. Then the prime239 run came in, and it got 4 of 8. Dead. (The P-224 run, which finished later, added 2 of 4: P-224 itself fails the rule. A coin flip, in other words.)
Try it yourself below. Pick any prime, and see how well "Elkies at this prime means published" does on the first two runs (where we went looking) versus the rest (which we held back).
The hypothesis graveyard
Rule: "a curve is published if this prime is an Elkies prime for it, skipped if not" (or the reverse, whichever fits the first two runs better). Tap a prime, or let Nib pick the one that looks best in-sample.
That's overfitting, in miniature. Search enough rules and one will fit a small sample perfectly; the only cure is data the rule hasn't seen. If you work in a field that validates models (finance, medicine, AI), you'll recognize the drill: hold-out sample, decision rule fixed in advance, accept the answer. We also checked a few other properties (whether the count is above or below p, how the "twin" curve's count factors), and none separated published from skipped. The skips remain unexplained. Valsorda's two guesses still stand: the generator may have been consumed by some other step in irregular ways, or a bug in a 1997 calculation may have rejected good curves at random.
Case 2: B-163
Anthropic's scanner tried 34 combinations of generator and output slice on B-163 and found nothing. We tried a few more: whole 32-bit outputs (the mrand48 slice, which a top bit of 1 would fit), the bytes of each word reversed, the words in reverse order, and the one-byte slice from Chapter 7 run through the lattice. None fit. B-163 looks like it was made some other way, perhaps by a different program, perhaps earlier, perhaps by hand. Status: open.
Case 3: the four base points
Anthropic published the FreeLIP recipe that reproduces six base points. We rewrote it as a search: for every FreeLIP seed from 0 up to about a million, draw 64 random pieces and test every window of them, in both orders, against the published x and y of P-224, P-256, P-384 and P-521. That covers any number of discarded draws and tries. The search does find P-192's base point at seed 20000, as it should. For the four unexplained curves: no match. Whatever made those base points, it wasn't this recipe with a small seed. Status: open.
What we're leaving for you
Every open case here is a real research question with checkable answers. If you crack one, the proof will look like everything else in this case file: a recipe anyone can rerun that produces the published numbers bit for bit. Filippo Valsorda and the Anthropic team are the people to tell.
And if the past is any guide, the next clue will come from asking a different question than everyone before you. Twenty-five years of people looked for a forgotten sentence. The answer was a clock.
Nib says: That's the case. We went from "how can a lock be public?" to running a 1997 program in your browser, and then out to the edge of what's known. Thank you for reading all ten chapters. Now go poke something.
Words in this chapter
Tap any word with a dotted gold underline to see what it means. Here they all are in one place.
Three things to keep
- 1
An independent recount matches Valsorda exactly. Using the standard's own square root and his bit-length rule, about 18,000 candidates reproduce his lists of acceptable curves, including the skipped ones.
- 2
A pattern found by searching many rules needs a fresh test. Our "Elkies at 5" rule was perfect on 7 curves and a coin flip on the next 12.
- 3
Four threads are still loose. The skipped curves, B-163, four base points and the halved clock are open questions anyone can work on.
Check yourself
Why did we commit the hypothesis to the repository before the remaining results arrived?
So nobody, including us, could quietly adjust the rule or the pass mark after seeing the answer. The timestamp proves the prediction came first.
If you test 16 rules on 7 curves, why isn't a perfect 7-for-7 strong evidence?
Each rule has roughly a 2-in-128 chance of splitting 7 curves perfectly by luck (it can fit either way round). With 16 rules, the chance that at least one does is around 1 in 4.
What would a convincing explanation of the skipped curves look like?
A rule fixed in advance that predicts exactly which acceptable candidates were published in all six runs, ideally plus a reason a 1997 program would behave that way. Anyone could then check it against Valsorda's lists.
Go deeper
- Filippo Valsorda · Oct 16, 2026
The bounty has been claimed
The extra selection rule, the unexplained skips, and his guesses about them.
Read it ↗ - Anthropic · Oct 16, 2026
The research write-up
The open questions as the solvers left them, and the FreeLIP base-point recipe.
Read it ↗ - Paper · 2015 · Koblitz and Menezes
A Riddle Wrapped in an Enigma
Where the case looked before the solve.
Read on IACR ePrint ↗ - Case file
All ten chapters
From public-key locks to the open cases.
Back to the case file