Claude ontrafelt herkomst van omstreden NIST-curves
3 mins read

Claude ontrafelt herkomst van omstreden NIST-curves

Bijna dertig jaar lang wist niemand buiten de NSA hoe de ‘seeds’ achter de bekende NIST-curves tot stand waren gekomen. Dat raadsel is nu opgelost. Het Frontier Red Team van Anthropic publiceerde op 16 oktober hoe een intern onderzoeksmodel van Claude de herkomst in minder dan een half uur reconstrueerde. Het antwoord is verrassend banaal: een standaard C-randomgenerator, gestart met de klok van een computer in 1997.

Een oude verdenking rond P-256

De curves P-192, P-224, P-256, P-384 en P-521 werden in 2000 door NIST opgenomen in de standaard FIPS 186-2 voor ECDSA-handtekeningen. P-256 zit vandaag in vrijwel elke TLS-verbinding. Elke curve is afgeleid van een seed van 160 bits die door een hashfunctie gaat. De NSA leverde die seeds aan, zonder uitleg.

Dat voedde jarenlang wantrouwen: met vrije keuze kon de dienst in theorie zoeken tot er een curve met een verborgen zwakte uitrolde. NSA-cryptograaf Jerry Solinas, die in 2023 overleed, vertelde collega’s dat de seeds de hash waren van een grappige zin. Die zin is nooit gevonden. Cryptograaf Filippo Valsorda, oud-hoofd cryptografie van Go bij Google, loofde in 2023 een beloning uit voor wie de oorsprong kon achterhalen.

Hoe Claude de klok terugdraaide

Een medewerker van Anthropic vroeg het model om de seeds te verklaren zonder de hint over de zin. Claude vermoedde een zwakke randomgenerator uit de jaren negentig en schreef een scanner die 34 combinaties van generatoren en uitvoerformaten afliep. Bij vier binaire seeds bleek het hoogste bit in alle twintig woorden nul te zijn. Toeval heeft daar een kans van 1 op 5.810, en het past precies bij lrand48, dat maar 31 van zijn 48 interne bits teruggeeft.

Archieftafel met oude technische documenten en diskettes in ochtendlicht

Voor de seeds van de priemcurves gebruikte het model het LLL-algoritme voor roosterreductie om de interne toestand terug te rekenen. Door die toestand achteruit te laten lopen, kwam Claude uit bij een Unix-tijdstempel. Volgens Anthropic is P-256 de 1.842e kandidaat uit een run die startte op 16 augustus 1997 om 01:52:34 UTC. De overige tijdstempels liggen tussen mei 1997 en april 1998. De code staat onder een CC0-licentie online.

Eerder hielp Claude wiskundigen aan een record voor elliptische krommen, en Claude Mythos 5 ontwierp quantumcircuits met flink minder gates.

Valsorda controleerde het zelf

Valsorda bevestigde dezelfde dag op zijn blog dat de beloning is opgeëist. Hij bouwde de methode na in Go en kwam op dezelfde seeds uit. Hij beschrijft de generator als drand48, dat dezelfde 48-bits toestand gebruikt als lrand48. Over Solinas schrijft hij: “Turns out memory can play tricks on everyone.” Het team van tien Anthropic-medewerkers schenkt het verdrievoudigde bedrag van 36.864 dollar aan de Internet Security Research Group, de organisatie achter Let’s Encrypt.

Er blijven losse eindjes. Bij P-256 sloeg de generator kandidaat 876 over, die ook een geldige curve had opgeleverd. Waarom is onbekend. De seed van B-163 is nog niet verklaard, en de herkomst van de basispunten van P-224 tot en met P-521 evenmin.

Wat betekent dit

Voor wie P-256 gebruikt, verandert er technisch niets. Anthropic benadrukt zelf dat dit geen aanval of zwakte is. Het effect is eerder geruststellend: volgens Valsorda had de NSA met deze methode hooguit zo’n 30 bits speelruimte, te weinig om bewust een zwakke curve te kiezen. Daarmee valt een eerder geopperd scenario van Daniel Bernstein en Tanja Lange af, dat uitging van ongeveer 70 bits vrijheid.

Interessanter is wat het zegt over AI in onderzoek. Een vraag waar cryptografen zich decennia op stukbeten, loste een model in een half uur op door zelf hypotheses te bedenken, code te schrijven en die te toetsen. Dat dezelfde vaardigheid ook kwetsbaarheden blootlegt, merkte Bank of America al met de lekken die Mythos vond.