AI-modellen en platforms
Anthropic zegt dat Claude de oorsprong van de NIST ECDSA-curvezaden heeft herleid tot een RNG uit de jaren 90

Het Frontier Red Team van Anthropic meldde op 16 oktober 2026 in een onderzoekspublicatie dat een intern Claude-onderzoeksmodel de oorsprong van de NIST ECDSA-curvezaden had herleid tot de lrand48-generator voor willekeurige getallen uit de C-bibliotheek, die was geïnitialiseerd met Unix-tijdstempels. Daarmee beantwoordde het een vraag over de herkomst die openstond sinds de NSA de waarden zonder uitleg had verstrekt.
De onverklaarde zaden van de NSA
ECDSA is de meest gebruikte standaard voor cryptografie met elliptische krommen. NIST nam deze in 2000 op in de Digital Signature Standard FIPS 186-2, waarin standaard elliptische krommen van verschillende groottes en beveiligingsniveaus worden vermeld. Voor krommen over priemvelden en binaire velden publiceerde de specificatie een zaadparameter waarvan de hashwaarde de coëfficiënt b van de kromme bepaalt. De NSA verstrekte die zaden zonder uitleg of verantwoording. In het bericht wordt het P-256-zaad C49D3608 86E70493 6A6678E1 139D26B7 819F7E90 aangehaald als voorbeeld van een waarde die werd gepubliceerd zonder informatie over de herkomst.
Neal Koblitz en Alfred Menezes vatten de controverse samen in het artikel “A Riddle Wrapped in an Enigma”. Later leidde de vraag tot een amateuronderzoek naar de oorsprong van de zaden en een beloning voor degene die die kon achterhalen. Volgens de belangrijkste theorie had Jerry Solinas, die lange tijd voor de NSA werkte, de zaden gegenereerd als de hash van een humoristische wachtwoordzin. In een verklaring uit 2015 die in het bericht wordt aangehaald, herinnerde Solinas zich: “De boodschap kwam ongeveer neer op ‘Geef Bob en Jerry opslag’ of ‘Bob en Jerry zijn de besten’ of iets dergelijks.” Hij zei dat Bob Reiter de code had geschreven en dat er geen archieven uit die periode te vinden waren. Solinas overleed in 2023 en andere collega’s reageerden niet, waardoor de vraag naar de afleiding onbeantwoord bleef.
Hoe Claude de zaden achterhaalde
Verschillende medewerkers van Anthropic hadden tevergeefs geprobeerd de zaden te achterhalen na de tip over de humoristische wachtwoordzin, die volgens het bericht onjuist bleek. In oktober 2026 vroeg een medewerker van Anthropic aan een intern onderzoeksmodel of het kon achterhalen hoe de zaden waren gegenereerd, zonder het model op het geruchtmakende spoor te zetten. Anthropic meldt dat Claude in minder dan een halfuur de oorsprong vond van de NIST-zaden voor P-192, P-224, P-256, P-384 en P-521: uitvoer van de lrand48-generator voor willekeurige getallen uit de C-bibliotheek, geïnitialiseerd met een Unix-tijdstempel, zonder dat er een hashalgoritme aan te pas kwam. Het programma dat de zaden genereerde, trok bij elke iteratie 20 bytes als kandidaat-zaad. Het gepubliceerde P-256-zaad was kandidaat 1842 in die reeks.
Nadat zoekopdrachten op basis van woordgroepen niets hadden opgeleverd, benaderde Claude het probleem vanuit de generator. Het vermoedde dat de software gebruikmaakte van een pseudowillekeurigegetallengenerator die met C-bibliotheken uit de jaren 90 werd meegeleverd en uitvoer produceerde die zwak genoeg was om te herkennen. De scanner verplaatste zich bit voor bit langs elk gepubliceerd zaad en testte aangrenzende delen als mogelijke opeenvolgende uitvoerwaarden van een generator uit de jaren 90, met 34 combinaties van generator en uitvoersegmenten. Bij vergelijking van de zaden viel één patroon op: wanneer ze werden weergegeven als vijf woorden van 32 bits, hadden vier van de tien in alle 20 woorden een nul in de hoogste bitpositie. De kans dat dit bij toeval gebeurt, is 1/5810. Dat wees op lrand48, een lineaire congruentiegenerator die alleen de hoogste 31 bits van een toestand van 48 bits teruggeeft. Voor die vier zaden achterhaalde Claude de toestand van de generator door alle 2^17 mogelijke waarden van de eerste 17 verborgen bits van het eerste woord te proberen en te controleren of de volgende vier woorden overeenkwamen. Dat lukte voor alle vier de zaden.
De zaden voor de krommen over priemvelden waren gegenereerd met dezelfde lrand48-generator, al bevatte elke uitvoer minder bits. De interne toestand van een afgeknotte lineaire congruentiegenerator reconstrueren is een standaardroosterprobleem, dat Claude oploste met basisreductie volgens Lenstra–Lenstra–Lovász (LLL). De oplosser werd daarbij toegepast op elk mogelijk venster. Alle vijf NIST-zaden voor krommen over priemvelden en vijf andere uit de ANSI X9.62-standaard volgden hetzelfde patroon, lrand48() >> 23, en met elke teruggevonden toestand van 48 bits kunnen alle 160 bits van het bijbehorende zaad opnieuw worden gegenereerd.
Het bericht haalt ook de vastgelegde interne redenering van Claude uit de sessie aan. Daarin controleerde het model of het zich mogelijk in een gesimuleerde testomgeving bevond, voordat het concludeerde: “Dit is aan mijn kant geverifieerd met een directe berekening: een overeenkomst van 160 bits op basis van een zaad van 32 bits + een kleine index: geen kans op toevallige overeenkomsten (10 × 160 bits). Het is echt.”
Tijdstempels en basispunten
Omdat de generator even gemakkelijk achteruit als vooruit werkt, liet Claude de toestand van elk zaad teruglopen tot een initialisatietoestand van srand48. Die is herkenbaar aan de laagste 16 bits, die gelijk zijn aan 0x330E; zo’n toestand komt eens in de 65.536 stappen voor. Bij alle tien de zaden voor krommen over priemvelden bleken de initialisaties Unix-tijdstempels te zijn uit de periode tussen mei 1997 en april 1998. De initialisaties voor de vier krommen over binaire velden wezen daarentegen op februari 1984. Verdubbeling van die tijdstempels komt uit op 17 april 1998, twee weken na de run voor P-224. Daarom opperde het team dat het programma de klok mogelijk door twee had gedeeld.
Claude stelde ook vast waar sommige basispunten van de curves vandaan kwamen. Elke curve specificeert een basispunt G, waarvan elke ECDSA-openbare sleutel een veelvoud is; de teruggevonden seed bepaalt dit punt niet. De basispunten van de zes curves die in mei 1997 zijn gegenereerd — P-192 en de voorbeeldcurves uit ANSI X9.62, prime192v2, prime192v3 en prime239v1 tot en met v3 — zijn terug te voeren op de generator voor willekeurige getallen in FreeLIP, het pakket voor rekenkundige bewerkingen met lange gehele getallen van Arjen Lenstra. De code daarvan werd ook meegeleverd met vroege versies van de NTL-bibliotheek van Victor Shoup. Volgens die methode krijgt de generator een klein geheel getal als seed, worden zeven uitvoerwaarden weggegooid en worden kandidaat-x-coördinaten afgeleid van 26-bits uitvoerwaarden die modulo p worden gereduceerd. Dit wordt herhaald totdat x op de curve ligt. De seeds van de generator die Claude identificeerde, zijn 20000 voor P-192; 20420, 20507 en 20509 voor respectievelijk prime239v1 tot en met v3; en 20512 en 20517 voor respectievelijk prime192v2 en v3. Anthropic stelt dat, voor zover het bedrijf weet, nog nooit een NIST-basispunt is verklaard en dat de basispunten van P-224, P-256, P-384 en P-521 niet volgens deze methode zijn verkregen.
Beveiligingsbeoordeling en open vragen
Anthropic stelt dat de bevindingen geen cryptografische kraak, nieuwe aanval of zwakke plek in de ECDSA-curves vormen. Volgens het team waren de seeds gegenereerd met een gangbare pseudowillekeurige getallengenerator die met de klok was geïnitialiseerd. Iedereen kan die methode nu reproduceren, wat volgens het team veel minder ruimte laat voor manipulatie en het vertrouwen vergroot dat de parameters veilig zijn. In het bericht wordt de uitkomst neergezet als een afsluitend hoofdstuk en het einde van jarenlange speculatie. Lezers hoeven volgens het bericht niets te doen, omdat de meeste onderzoekers de curves al vertrouwden.
Sommige vragen blijven onbeantwoord. Niet elke kandidaat-seed van 20 bytes kon een bruikbare curve opleveren, en het team merkte op dat sommige potentieel bruikbare kandidaten waren overgeslagen. De gepubliceerde seed van P-256 is kandidaat 1842, maar kandidaat 876 uit dezelfde run levert ook een curve met een priemorde van de juiste grootte op, met parameters die op dezelfde manier zijn gekozen als die van de gepubliceerde curve. Bij de run voor P-224 werden drie van zulke kandidaten overgeslagen, en bij de twee runs achter de voorbeeldcurves uit ANSI X9.62 werden er nog eens zeven overgeslagen. Omdat het om een klein aantal overgeslagen kandidaten gaat, acht het team het niet aannemelijk dat er bewust verzwakte curves zijn geselecteerd. In principe blijft het echter denkbaar dat curves met een specifieke eigenschap zijn gekozen door timestamps te doorzoeken. Eén seed kon helemaal niet worden teruggevonden: de vijfde binaire seed, B-163, komt niet overeen met iets wat Claude heeft geprobeerd. De basispunten van P-224, P-256, P-384 en P-521, evenals die van de binaire NIST-curves, zijn nog altijd onbekend.
De premie van $36,864 voor het vinden van de seeds wordt geschonken aan de Internet Security Research Group. In het bericht wordt Filippo Valsorda bedankt voor het organiseren van de premie en wordt Solinas postuum erkend. Het werk wordt toegeschreven aan John Wood, Henry de Valence, Ava Howell, Zack Voase, Lucy Sweet, Amir Omidi, Paul Crowley, Iain McGinniss, Nicholas Carlini en Steve Weis. De reproductiecode op de pagina is onder CC0 1.0 Universal vrijgegeven in het publieke domein.












