AI-modeller och plattformar
Anthropic uppger att Claude spårade NIST:s ECDSA-kurvfrön till en slumptalsgenerator från 1990-talet

Anthropics Frontier Red Team rapporterade i en forskningspublikation den 16 oktober 2026 att en intern Claude-forskningsmodell hade spårat ursprunget till NIST:s ECDSA-kurvfrön till C-bibliotekets slumptalsgenerator lrand48, som initierats med Unix-tidsstämplar. Därmed besvarades en fråga om värdenas ursprung som hade varit obesvarad sedan NSA lämnade uppgifterna utan förklaring.
De oförklarade NSA-fröna
ECDSA är den mest använda standarden för elliptisk kurvkryptografi. NIST antog den 2000 som en del av FIPS 186-2 Digital Signature Standard, som listar standardiserade elliptiska kurvor med olika storlekar och säkerhetsnivåer. För kurvor över primtalskroppar och binära kroppar publicerade specifikationen en seedparameter vars hashvärde bestämmer kurvans koefficient b. NSA lämnade dessa seedvärden utan förklaring eller motivering, och i inlägget återges P-256-seedvärdet C49D3608 86E70493 6A6678E1 139D26B7 819F7E90 som exempel på ett värde som publicerats utan någon information om varifrån det kom.
Neal Koblitz och Alfred Menezes sammanfattade kontroversen i artikeln ”A Riddle Wrapped in an Enigma”, och frågan ledde senare till en amatörutredning om seedvärdenas ursprung och en belöning till den som kunde hitta svaret. Den vanligaste förklaringen var att NSA-veteranen Jerry Solinas hade genererat seedvärdena genom att hasha en humoristisk lösenfras. I ett uttalande från 2015 som återges i inlägget mindes Solinas: ”Meddelandet var ungefär ’Ge Bob och Jerry löneförhöjning’ eller ’Bob och Jerry regerar’ eller något i den stilen.” Han sade att Bob Reiter hade skrivit koden och att det inte gick att hitta några arkiv från den tiden. Solinas dog 2023, och andra kollegor svarade inte, vilket lämnade frågan om hur värdena hade tagits fram obesvarad.
Så återskapade Claude seedvärdena
Flera Anthropic-anställda hade utan framgång försökt hitta seedvärdena efter tipset om den humoristiska lösenfrasen, som enligt inlägget visade sig vara felaktigt. I oktober 2026 frågade en Anthropic-anställd en intern forskningsmodell om den kunde ta reda på hur seedvärdena hade genererats utan att hänvisa till det omtalade spåret. På mindre än en halvtimme identifierade Claude, enligt Anthropic, ursprunget till seedvärdena för NIST P-192, P-224, P-256, P-384 och P-521: utdata från C-bibliotekets slumptalsgenerator lrand48, initierad med en Unix-tidsstämpel, utan inblandning av någon hashfunktion. Programmet som genererade värdena drog 20 byte vid varje iteration som ett möjligt seedvärde, och det publicerade P-256-seedvärdet var det 1842:a försöket i körningen.
När sökningar efter fraser inte gav resultat tog Claude sig an problemet utifrån själva generatorn. Modellen antog att det rörde sig om programvara byggd på en pseudoslumptalsgenerator som följde med C-bibliotek på 1990-talet och vars utdata var tillräckligt svaga för att gå att känna igen. Claudes skanner gick igenom varje publicerat seedvärde bit för bit och testade intilliggande segment som möjliga på varandra följande utdata från en generator av 1990-talstyp, med 34 kombinationer av generatorer och utdataset. Ett mönster stack ut bland seedvärdena: skrivna som fem 32-bitarsord har fyra av de tio en nolla i den mest signifikanta biten i samtliga 20 ord, en ordning som skulle uppstå av en slump med sannolikheten 1/5810. Det pekade på lrand48, en linjär kongruensgenerator som bara returnerar de 31 mest signifikanta bitarna av ett 48-bitars tillstånd. För dessa fyra seedvärden återskapade Claude generatorns tillstånd genom att prova vart och ett av de 2^17 möjliga värdena för det första ordets 17 dolda bitar och kontrollera att de följande fyra orden stämde. Det lyckades för alla fyra.
Seedvärdena för primtalskurvorna hade genererats med samma lrand48-generator, men varje utdata innehöll färre bitar. Att återskapa det interna tillståndet hos en trunkerad linjär kongruensgenerator är ett klassiskt gitterproblem, som Claude löste med basreduktion enligt Lenstra–Lenstra–Lovász (LLL) och genom att tillämpa lösaren på varje möjligt fönster. Samtliga fem seedvärden för NIST:s primtalskurvor, plus fem till från standarden ANSI X9.62, följde samma mönster, lrand48() >> 23, och vart och ett av de återskapade 48-bitars tillstånden genererar alla 160 bitar i sitt seedvärde på nytt.
Inlägget återger också Claudes dokumenterade interna resonemang från sessionen, där modellen kontrollerade om den kunde befinna sig i en simulerad testmiljö innan den drog slutsatsen: ”Det är verifierat genom direkt beräkning på min sida: en matchning på 160 bitar från ett seedvärde på 32 bitar plus ett litet index: inga slumpmässiga träffar (10 × 160 bitar). Det är på riktigt.”
Tidsstämplar och baspunkter
Eftersom generatorn är lika lätt att köra baklänges som framlänges gick Claude bakåt från varje seedvärdes tillstånd tills modellen nådde ett initieringstillstånd för srand48, som känns igen på att de 16 minst signifikanta bitarna är lika med 0x330E. Ett sådant tillstånd uppstår en gång vart 65 536:e steg. För alla tio seedvärden för primtalskurvorna var initieringarna Unix-tidsstämplar från maj 1997 till april 1998. Initieringarna för de fyra binära kurvorna pekade i stället på februari 1984; om man fördubblar dessa tidsstämplar hamnar man den 17 april 1998, två veckor efter körningen för P-224. Det fick gruppen att föreslå att programmet kan ha halverat klocktiden.
Claude identifierade också varifrån vissa kurvors baspunkter kom. Varje kurva anger en baspunkt G, som är den fasta punkt som varje offentlig ECDSA-nyckel är en multipel av, och det återfunna fröet avgör inte baspunkten. För de sex kurvor som genererades i maj 1997 – P-192 samt ANSI X9.62:s exemp elkurvor prime192v2, prime192v3 och prime239v1 till v3 – kan baspunkterna spåras till slumptalsgeneratorn i FreeLIP, Arjen Lenstras paket för aritmetik med långa heltal, vars kod också ingick i tidiga versioner av Victor Shoups NTL-bibliotek. Enligt den metoden initieras generatorn med ett litet heltal, sju utdata kastas bort och kandidater till x-koordinater hämtas från 26-bitars utdata som reducerats modulo p. Man upprepar sedan dragningen tills x ligger på kurvan. De generatorfrön som Claude identifierade är 20000 för P-192; 20420, 20507 och 20509 för prime239v1 till v3; samt 20512 och 20517 för prime192v2 och v3. Anthropic uppger att ingen NIST-baspunkt, såvitt företaget känner till, tidigare har fått sin bakgrund förklarad, och att baspunkterna för P-224, P-256, P-384 och P-521 inte följer den här metoden.
Säkerhetsbedömning och obesvarade frågor
Anthropic uppger att resultaten inte innebär att kryptografin har knäckts, att ett nytt angrepp har upptäckts eller att det finns någon svaghet i ECDSA-kurvorna. Teamet sade att fröna hade skapats av en vanlig pseudoslumptalsgenerator som initierats med klockan, en metod som vem som helst nu kan återskapa. Enligt teamet lämnar detta betydligt mindre utrymme för manipulation och stärker tilltron till att parametrarna är säkra. Inlägget framställer resultatet som ett avslutande kapitel och slutet på åratal av spekulationer, och säger till läsarna att de inte behöver göra något eftersom de flesta forskare redan litade på kurvorna.
Vissa frågor är fortfarande obesvarade. Alla kandidatfrön på 20 byte kunde inte ge upphov till en användbar kurva, och teamet noterade att vissa kandidater som potentiellt hade kunnat fungera hoppades över. Det publicerade fröet för P-256 är kandidat 1842, men även kandidat 876 från samma körning ger en kurva med primtalsordning av rätt storlek, vars parametrar har valts på samma sätt som den publicerade kurvans. I körningen för P-224 hoppades tre sådana kandidater över, och i de två körningarna bakom exemp elkurvorna i ANSI X9.62 hoppades ytterligare sju över. Eftersom antalet överhoppade kandidater är litet sade teamet att det inte anser det plausibelt att försvagade kurvor valdes ut, även om det i princip är tänkbart att kurvor med en viss egenskap skulle kunna ha valts genom att söka bland tidsstämplar. Ett frö gick inte att återskapa alls: det femte binära fröet, B-163, gav ingen träff bland det Claude prövade. Baspunkterna för P-224, P-256, P-384 och P-521, liksom baspunkterna för NIST:s binära kurvor, är fortfarande okända.
Belöningen på $36,864 för att hitta fröna kommer att doneras till Internet Security Research Group. Inlägget tackar Filippo Valsorda för att ha organiserat belöningen och uppmärksammar samtidigt Solinas postumt. Arbetet tillskrivs John Wood, Henry de Valence, Ava Howell, Zack Voase, Lucy Sweet, Amir Omidi, Paul Crowley, Iain McGinniss, Nicholas Carlini och Steve Weis. Koden för att återskapa resultaten på sidan har överlämnats till allmän egendom enligt CC0 1.0 Universal.












