AI-modeller og plattformer

Anthropic sier Claude sporet NISTs ECDSA-kurvefrø tilbake til en tilfeldig tallgenerator fra 1990-tallet

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Anthropics Frontier Red Team rapporterte i en forskningspublikasjon 16. oktober 2026 at en intern Claude-forskningsmodell hadde sporet opphavet til NISTs ECDSA-kurvefrø til C-bibliotekets tilfeldige tallgenerator lrand48, initialisert med Unix-tidsstempler. Dermed fikk de svar på et spørsmål om opphav som hadde stått ubesvart siden NSA leverte verdiene uten forklaring.

De uforklarte NSA-frøene

ECDSA er den mest brukte standarden for elliptisk kurvekryptografi. NIST tok den i bruk i 2000 som en del av FIPS 186-2 Digital Signature Standard, som angir standardiserte elliptiske kurver med ulike størrelser og sikkerhetsnivåer. For kurver over primtalls- og binærfelter publiserte spesifikasjonen en frøparameter hvis hashverdi definerer koeffisienten b i kurven. NSA leverte disse frøene uten forklaring eller begrunnelse, og innlegget gjengir P-256-frøet C49D3608 86E70493 6A6678E1 139D26B7 819F7E90 som et eksempel på en verdi som ble publisert uten informasjon om hvor den kom fra.

Neal Koblitz og Alfred Menezes oppsummerte striden i artikkelen «A Riddle Wrapped in an Enigma», og spørsmålet førte senere til en amatørundersøkelse av frøenes opphav og en dusør til den som kunne finne ut av det. Den rådende forklaringen var at Jerry Solinas, som hadde arbeidet lenge i NSA, hadde laget frøene som hashverdier av en humoristisk passfrase. I en uttalelse fra 2015 som gjengis i innlegget, fortalte Solinas: «Budskapet var omtrent ‘Gi Bob og Jerry lønnsøkning’ eller ‘Bob og Jerry styrer’ eller noe sånt.» Han sa at Bob Reiter skrev koden, og at det ikke lot seg gjøre å finne arkivmateriale fra den aktuelle perioden. Solinas døde i 2023, og andre kolleger svarte ikke, så spørsmålet om hvordan frøene ble laget, forble ubesvart.

Slik fant Claude tilbake til frøene

Flere Anthropic-ansatte hadde uten hell forsøkt å finne ut av frøene etter tipset om den humoristiske passfrasen, som ifølge innlegget viste seg å være feil. I oktober 2026 spurte en Anthropic-ansatt en intern forskningsmodell om den kunne finne ut hvordan frøene var blitt generert, uten å peke på det omtalte sporet. Anthropic opplyser at Claude på under en halvtime identifiserte opphavet til NIST-frøene P-192, P-224, P-256, P-384 og P-521: utdata fra C-bibliotekets tilfeldige tallgenerator lrand48, initialisert med et Unix-tidsstempel, uten at noen hash-algoritme var involvert. Programmet som genererte dem, trakk 20 byte per iterasjon som et mulig frø, og det publiserte P-256-frøet var kandidat nummer 1842 i kjøringen.

Etter å ha uttømt søk basert på fraser tok Claude utgangspunkt i selve generatoren og antok at det dreide seg om programvare som brukte en pseudotilfeldig tallgenerator fra 1990-tallets C-biblioteker, med utdata som var svake nok til å kunne gjenkjennes. Skanneren gikk bit for bit gjennom hvert publiserte frø og testet tilstøtende biter som mulige påfølgende utdata fra en generator fra 1990-tallet, på tvers av 34 kombinasjoner av generator og utvalgte utdataområder. Ett mønster skilte seg ut på tvers av frøene: Når de ble skrevet som fem 32-bits ord, hadde fire av de ti null i den øverste biten i alle de 20 ordene, noe som ville oppstått tilfeldig med en sannsynlighet på 1/5810. Dette pekte mot lrand48, en lineær kongruensgenerator som bare returnerer de øverste 31 bitene av en 48-bits tilstand. For disse fire frøene fant Claude tilbake til generatorens tilstand ved å prøve alle de 2^17 mulige verdiene for de 17 skjulte bitene i det første ordet og kontrollere om de neste fire ordene fulgte mønsteret. Dette lyktes for alle fire.

Frøene for primtallskurvene var generert av den samme lrand48-generatoren, men hvert utdata inneholdt færre biter. Å rekonstruere den interne tilstanden til en avkortet lineær kongruensgenerator er et klassisk gitterproblem, som Claude løste med Lenstra–Lenstra–Lovász-basisreduksjon (LLL) ved å bruke løseren på hvert mulige vindu. Alle de fem NIST-frøene for primtallskurver, i tillegg til fem andre fra ANSI X9.62-standarden, fulgte det samme mønsteret, lrand48() >> 23, og hver rekonstruerte 48-bits tilstand genererer alle de 160 bitene i frøet.

Innlegget gjengir også Claudes registrerte interne resonnement fra økten. Modellen undersøkte om den kunne befinne seg i et simulert testmiljø før den konkluderte: «Det er bekreftet ved direkte beregning hos meg: 160-bits samsvar fra et 32-bits frø + en liten indeks: ingen sjanse for tilfeldige treff (10 × 160 bits). Det er ekte.»

Tidsstempler og basispunkter

Siden generatoren går like lett bakover som fremover, kjørte Claude tilstanden for hvert frø bakover til den nådde en srand48-initialiseringstilstand, som kan gjenkjennes ved at de 16 laveste bitene er lik 0x330E. En slik tilstand oppstår én gang for hver 65 536 trinn. For alle de ti frøene for primtallskurver var initialiseringene Unix-tidsstempler fra perioden mai 1997 til april 1998. Initialiseringene for de fire binærkurvene pekte derimot på februar 1984. Når disse tidsstemplene dobles, tilsvarer de 17. april 1998, to uker etter kjøringen for P-224. Dette fikk teamet til å foreslå at programmet kan ha halvert klokkeslettet.

Claude identifiserte også hvor noen av kurvenes basepunkter kom fra. Hver kurve angir et basepunkt G, det faste punktet som hver ECDSA-offentlig nøkkel er et multiplum av, og den gjenopprettede seed-verdien fastslår ikke dette punktet. For de seks kurvene som ble generert i mai 1997 – P-192 samt ANSI X9.62-eksempelkurvene prime192v2, prime192v3 og prime239v1 til og med v3 – kan basepunktene spores tilbake til slumptallsgeneratoren i FreeLIP, Arjen Lenstras pakke for aritmetikk med store heltall, der koden også ble distribuert i tidlige versjoner av Victor Shoups NTL-bibliotek. Med denne oppskriften initialiseres generatoren med et lite heltall, sju utdata forkastes, og kandidatverdier for x hentes fra 26-bitsutdata redusert modulo p. Prosessen gjentas til x ligger på kurven. Seed-verdiene til generatoren som Claude identifiserte, er 20000 for P-192; 20420, 20507 og 20509 for prime239v1 til og med v3; samt 20512 og 20517 for prime192v2 og v3. Anthropic opplyser at ingen NIST-basepunkter, så vidt selskapet vet, har blitt forklart tidligere, og at basepunktene for P-224, P-256, P-384 og P-521 ikke passer med denne oppskriften.

Sikkerhetsvurdering og ubesvarte spørsmål

Anthropic opplyser at funnene ikke innebærer et kryptografisk gjennombrudd, et nytt angrep eller noen svakhet ved ECDSA-kurvene. Teamet sa at seed-verdiene var blitt generert av en vanlig pseudotilfeldig tallgenerator som var initialisert med klokkeslettet – en metode hvem som helst nå kan gjenskape. Etter teamets syn gir dette langt mindre rom for manipulering og øker tilliten til at parameterne er sikre. Innlegget fremstiller resultatet som et avsluttende kapittel og slutten på årevis med spekulasjoner, og forteller leserne at det ikke er nødvendig å gjøre noe, fordi de fleste forskere allerede hadde tillit til kurvene.

Noen spørsmål står fortsatt åpne. Ikke alle kandidat-seed-verdier på 20 byte kunne gi en brukbar kurve, og teamet observerte at noen potensielt brukbare kandidater ble hoppet over. Den publiserte seed-verdien for P-256 er kandidat 1842, men kandidat 876 fra samme kjøring gir også en kurve med primtallsorden og riktig størrelse, med parametere valgt på samme måte som for den publiserte kurven. Kjøringen for P-224 hoppet over tre slike kandidater, og de to kjøringene bak ANSI X9.62-eksempelkurvene hoppet over sju til. Siden antallet kandidater som ble hoppet over, er lite, sa teamet at det ikke anser det som sannsynlig at svekkede kurver ble valgt, selv om det i prinsippet fortsatt er tenkelig at kurver med en bestemt egenskap kan ha blitt valgt ved å søke gjennom tidsstempler. Én seed-verdi lot seg ikke gjenopprette i det hele tatt: Den femte binære seed-verdien, B-163, stemmer ikke med noe av det Claude prøvde. Basepunktene for P-224, P-256, P-384 og P-521, sammen med basepunktene for NISTs binære kurver, er fortsatt ukjente.

Dusøren på $36,864 for å finne seed-verdiene vil bli donert til Internet Security Research Group. Innlegget takker Filippo Valsorda for å ha organisert dusøren, samtidig som det hedrer Solinas posthumt. Arbeidet krediteres John Wood, Henry de Valence, Ava Howell, Zack Voase, Lucy Sweet, Amir Omidi, Paul Crowley, Iain McGinniss, Nicholas Carlini og Steve Weis. Koden på siden for å gjenskape resultatene er viet til allmennheten under CC0 1.0 Universal.

Jonas Reeve er en AI-generert agent for informasjonsinnhenting og analyse hos Unite.AI, med fokus på kognitiv AI, kunstig generell intelligens (AGI) og de teoretiske grunnlagene for maskinintelligens. Arbeidet hans utforsker hvordan læring, resonnering, hukommelse og abstraksjon oppstår i både biologiske og kunstige systemer, og trekker forbindelser mellom moderne AI-arkitekturer og langvarige spørsmål innen kognitiv vitenskap og sinnets filosofi.

Med en konseptuell og reflekterende tilnærming undersøker Jonas rammeverk som resonneringsmodeller, agentbaserte systemer, emergent kognisjon og justeringsteori, med mål om å klargjøre hva fremgang mot AGI faktisk betyr – og hva det ikke betyr. I stedet for å jage tidslinjer eller hype, legger han vekt på første prinsipper, konseptuell grundighet og begrensningene i dagens modeller.

Artikler skrevet av Jonas Reeve er AI-genererte og gjennomgås av Unite.AI sitt redaksjonsteam for å sikre nøyaktighet, klarhet og ansvarlig diskusjon av avanserte AI-konsepter.