NEXUS · MeToo Service

Sicurezza Claude scopre l'origine dei seed delle curve NIST

I «seed» delle curve ellittiche adottate dal NIST nel 2000 non erano l'hash di una frase scherzosa: uscivano da un vecchio generatore di numeri casuali del linguaggio C, avviato con l'ora del computer tra maggio 1997 e aprile 1998. La taglia da 36.864 dollari va all'ente di Let's Encrypt.

Domenica 18 ottobre 2026 · Categoria: Sicurezza · Lettura: 6 min
Il North Building del NIST a Gaithersburg, nel Maryland, edificio in mattoni a sei piani con parcheggio davanti
Foto d'archivio: dokaspar / Wikimedia Commons, CC BY-SA 3.0 (foto del 2003, ritagliata).

In breve

  • Secondo Anthropic, un suo modello interno ha scoperto in meno di mezz'ora che i seed delle curve NIST P-192, P-224, P-256, P-384 e P-521 sono l'output del generatore lrand48 della libreria C, inizializzato con un orario Unix.
  • Il crittografo Filippo Valsorda, che nel 2023 aveva lanciato una taglia sui seed, ha riprodotto il risultato e confermato che la storia della frase scherzosa era sbagliata.
  • Non è una falla e non c'è nulla da fare: per Anthropic e Valsorda la scoperta rende molto meno plausibile una backdoor nelle curve.

Il contesto

Quando un sito, un'app o un sistema di pagamento firma o protegge dati con la crittografia a curve ellittiche, molto spesso usa una delle curve standardizzate dal NIST, l'ente statunitense per gli standard. Le curve sono state pubblicate nel 2000 nello standard FIPS 186-2 insieme all'algoritmo di firma ECDSA, che Anthropic definisce lo standard di crittografia a curve ellittiche più usato al mondo.

Ogni curva è definita anche da un «seed», un numero di 160 bit: passandolo nella funzione di hash SHA-1 si ottiene uno dei coefficienti della curva. Il problema è che quei seed furono forniti dall'NSA, l'agenzia di intelligence americana, senza alcuna spiegazione. Per la curva P-256, per esempio, il documento riporta soltanto C49D3608 86E70493 6A6678E1 139D26B7 819F7E90.

Per 25 anni l'assenza di una spiegazione ha alimentato un sospetto: e se l'NSA avesse scelto seed particolari per ottenere curve deboli che solo lei sapeva attaccare? La versione più nota della storia veniva da Jerry Solinas, storico dipendente dell'NSA morto nel 2023: nel 2015 aveva raccontato che i seed erano l'hash di una frase scherzosa, qualcosa come «Give Bob and Jerry a raise», ma che nessuno ricordava i dettagli. Nel 2023 Valsorda ha messo in palio una taglia per chi avesse ricostruito l'origine dei seed.

I fatti, punto per punto

  • La scoperta. Secondo Anthropic, a ottobre 2026 un dipendente ha chiesto a un modello di ricerca interno se riuscisse a capire come erano stati generati i seed, senza indicargli la pista della frase. In meno di mezz'ora Claude ha trovato l'origine dei seed di P-192, P-224, P-256, P-384 e P-521.
  • Il generatore. Nessun seed è il risultato di una funzione di hash: sono l'output di lrand48, il generatore di numeri pseudocasuali della libreria standard del C, avviato con un orario Unix (Anthropic). Valsorda parla della stessa famiglia di funzioni POSIX, quella di srand48() e drand48.
  • Il metodo. Il programma prendeva 20 byte alla volta dal generatore e li provava come seed candidato, scartando quelli che non davano una curva valida. Per P-256 sono serviti 1.842 tentativi (Anthropic).
  • Come l'ha capito. Claude ha notato che in quattro seed su dieci il bit più alto di tutte le parole di 32 bit era zero, cosa che per caso succede con probabilità di 1 su 5.810: la firma di lrand48, che restituisce solo 31 bit. Per le curve sui numeri primi ha usato un classico algoritmo di riduzione dei reticoli (LLL) per ricostruire lo stato interno del generatore.
  • Le date. Risalendo all'inizializzazione, per tutti i dieci seed delle curve sui numeri primi (cinque NIST e cinque dello standard ANSI X9.62) si ottiene un orario compreso tra maggio 1997 e aprile 1998.
  • Anche alcuni punti base. Anthropic ha spiegato anche da dove vengono i punti base di sei curve generate a maggio 1997, tra cui P-192: dal generatore di FreeLIP, la libreria di Arjen Lenstra, con seed come 20000.
  • La verifica esterna. Valsorda ha reimplementato l'algoritmo in Go e confermato il risultato. Il team di Anthropic ha reclamato la taglia il 15 ottobre 2026 alle 01:07:51 UTC (le 03:07 ora di Roma).
  • La taglia. Anthropic l'ha donata all'ISRG, l'organizzazione no profit che gestisce Let's Encrypt; con la donazione il valore è stato triplicato a 36.864 dollari (Valsorda).

Un esempio concreto

Chiunque oggi può rifare il calcolo in pochi secondi con il codice in Python che Anthropic ha pubblicato in pubblico dominio (CC0). Per la curva P-256 basta inizializzare il generatore con l'orario Unix 871696354, cioè il 16 agosto 1997 alle 01:52:34 UTC, e prendere il 1.842º gruppo di 20 byte: esce C49D360886E704936A6678E1139D26B7819F7E90, esattamente il seed pubblicato nello standard. Lo abbiamo verificato anche noi, eseguendo il codice di Anthropic.

Qui sta il punto: un numero che sembrava scelto da qualcuno in modo misterioso si rivela il prodotto di un orologio e di un generatore comune negli anni Novanta. Secondo Valsorda, anche concedendo all'NSA la libertà di scegliere qualunque orario del 1997-98 e uno qualsiasi dei primi 16 candidati validi, avrebbe avuto appena 30 bit di libertà: troppo pochi per puntare a una famiglia ipotetica di curve deboli, come nella tecnica descritta da Daniel Bernstein e Tanja Lange nel 2017, che ne richiedeva circa 70.

Quando sono nati i seed delle curve

CurvaOrario di avvio del generatore (UTC)Candidato pubblicato
prime239v1 (ANSI X9.62)15/05/1997 15:49:032.185º
P-19218/05/1997 14:45:34139º
P-52108/08/1997 01:12:041.136º
P-25616/08/1997 01:52:341.842º
P-38430/08/1997 14:50:082.688º
P-22403/04/1998 12:52:077.026º

Fonti: codice e risultati pubblicati da Anthropic; stessi orari ed elenco dei candidati nella verifica di Filippo Valsorda.

Perché ti riguarda

Non c'è nessuna azione da fare: lo scrive Anthropic stessa, che parla di un «capitolo finale divertente». Non è stata trovata una debolezza, un attacco o una falla nelle curve ECDSA. Al contrario, sapere che i seed vengono da un generatore comune e da un orologio, riproducibile da chiunque, lascia molto meno spazio all'idea di una manipolazione.

Per chi usa internet ogni giorno vuol dire che la crittografia che protegge molte connessioni sicure, firme digitali e pagamenti esce rafforzata da un dubbio durato un quarto di secolo. Per chi lavora nella sicurezza informatica c'è anche un segnale sul ruolo dell'AI: un modello ha risolto in mezz'ora un problema che aveva resistito a tentativi umani, partendo da un'intuizione su come funzionava il software degli anni Novanta. Valsorda ora dice di preferire le curve NIST a Curve25519, ma aggiunge con ironia che arriva tutto «giusto in tempo» per sostituirle con le firme post-quantistiche.

Cosa succede adesso

  • Restano domande aperte: alcuni candidati validi sono stati scartati senza un criterio noto (per P-256 anche il candidato 876 dava una curva adatta).
  • Non è spiegato il seed della curva binaria B-163, né l'origine dei punti base di P-224, P-256, P-384 e P-521.
  • Valsorda ha annunciato adesivi e magliette con i seed per il team di Anthropic e per chi aveva contribuito alla taglia.
  • Valsorda ricorda che le curve NIST sono comunque destinate a essere sostituite dalle firme post-quantistiche.

Fonti

  1. Anthropic – Claude reveals ECDSA curve origins (16/10/2026)
  2. Filippo Valsorda – The NIST Elliptic Curves Seeds Bounty Has Been Claimed (16/10/2026)