Anthropic researchers prompted the internal model Claude to reverse‑engineer the NIST P‑192, P‑224, P‑256, P‑384 and P‑521 curve seeds (and the analogous ANSI X9.62 prime‑curve seeds) without any prior hints. Claude hypothesized that a 1990s‑era C library pseudorandom number generator had been used and built a scanner that slid over each published 20‑byte seed, testing whether adjacent chunks corresponded to consecutive outputs of a linear congruential generator. The scanner revealed a distinctive pattern of zero top bits, matching the behavior of lrand48, which returns only the top 31 bits of its 48‑bit state. By recovering the hidden 17‑bit portion of the state for each seed and applying the Lenstra–Lenstra–Lovász lattice reduction algorithm to reconstruct the full 48‑bit LCG state, Claude stepped the generator back to its srand48 initialization point (low 16 bits = 0x330E). The resulting timestamps fell between May 1997 and April 1998 for the prime curves; the binary‑curve seeds required halving the timestamp, yielding February 1984 values that map to April 1998 after doubling. For P‑256, the accepted seed appeared after 1 842 iterations of drawing 20‑byte candidates. Claude also traced the base points of P‑192 and five ANSI X9.62 curves to the FreeLIP random number generator with explicit seeds (20000, 20420, 20507‑20517). No evidence of intentional weakness was found; the simple timestamp‑seeded lrand48 explanation reduces concerns about backdoors in the widely deployed ECDSA parameters.
Read original
hackernews