⏱️ Lectura: 11 min
Un misterio criptográfico de 26 años quedó resuelto en menos de 30 minutos: las semillas de curvas NIST que usa ECDSA no salieron de un hash secreto de la NSA, sino de un generador de números aleatorios de los años 90 sembrado con la hora del sistema. Así lo reveló Anthropic el 16 de octubre de 2026, después de pedirle a un modelo de investigación interno de Claude que rastreara el origen de esos parámetros.
📑 En este artículo
- TL;DR
- Qué es ECDSA
- Qué pasó con las semillas de curvas NIST
- Contexto e historia
- Detalles técnicos
- Impacto y análisis
- Qué sigue
- Preguntas frecuentes
- ¿Qué encontró Claude sobre las semillas de curvas NIST?
- ¿Por qué importaban los parámetros de ECDSA antes de este hallazgo?
- ¿Qué es lrand48() y por qué importa para la curva P-256?
- ¿Este hallazgo significa que ECDSA tiene una puerta trasera?
- ¿Qué pasó con la pista de Jerry Solinas sobre el estándar FIPS 186-2?
- Referencias
El resultado no es una falla ni un parche urgente. Es la confirmación, casi tres décadas después, de que esos parámetros se generaron sin manipulación oculta.
TL;DR
- Claude resolvió en menos de 30 minutos el misterio de 26 años sobre las semillas de ECDSA.
- Las semillas de P-192, P-224, P-256, P-384 y P-521 vienen de lrand48(), no de un hash secreto.
- El cálculo de la semilla de P-256 necesitó 1.842 iteraciones de un generador sembrado con un timestamp Unix.
- Anthropic descarta puertas traseras: el método usado ahora es reproducible por cualquiera.
- Jerry Solinas, ingeniero de la NSA fallecido en 2023, dejó en 2015 una pista que resultó errónea.
Qué es ECDSA
ECDSA es el algoritmo de firma digital basado en curvas elípticas que adoptó el NIST en el año 2000 dentro del estándar FIPS 186-2, y que depende de un conjunto de curvas estandarizadas cuyas semillas de curvas NIST permanecieron sin explicación pública durante 26 años.
Hoy, ECDSA firma certificados TLS, protege transacciones de Bitcoin y autentica llaves SSH en millones de servidores. Su seguridad depende de que la curva elíptica subyacente, uno de los cinco pares que define el estándar FIPS 186-2 (P-192, P-224, P-256, P-384 y P-521), no tenga ninguna debilidad matemática escondida a propósito.
Esa curva se define con una ecuación y una constante, llamada b, que a su vez se calcula aplicando una función hash a un número de 160 bits: la semilla. El NIST publicó las semillas junto con las curvas en el año 2000, pero nunca explicó de dónde salieron esos números.
Las curvas elípticas se volvieron populares frente a RSA porque logran niveles de seguridad comparables con claves mucho más cortas, lo que las hizo más eficientes para dispositivos móviles y conexiones de alto volumen. Esa eficiencia explica en parte por qué ECDSA domina hoy buena parte de las conexiones TLS modernas y las firmas de varias criptomonedas basadas en curvas elípticas.
Qué pasó con las semillas de curvas NIST
El 16 de octubre de 2026, Anthropic publicó un informe de investigación donde cuenta que un empleado le pidió a un modelo interno de Claude que averiguara, sin pistas previas, cómo se generaron esas semillas. El modelo tardó menos de media hora en encontrar el origen de los parámetros de P-192, P-224, P-256, P-384 y P-521.
La respuesta, según el informe de Anthropic, es que cada semilla salió de lrand48(), el generador de números pseudoaleatorios de las librerías C de Unix, inicializado con una marca de tiempo del sistema. El programa original tomaba 20 bytes por cada vuelta del generador como candidato a semilla; para producir la semilla publicada de P-256 hicieron falta 1.842 iteraciones.
Anthropic lo resume sin dramatismo: “no hay ninguna acción que tomar ni nada que hacer de forma distinta”, dice el informe, que presenta el hallazgo como el capítulo final de una especulación que ya duraba más de dos décadas.
Contexto e historia
La sospecha empezó en el propio texto del estándar. El NIST publicó la semilla de P-256 como esta cadena hexadecimal, sin ninguna nota al pie:
SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90
Los matemáticos Neal Koblitz y Alfred Menezes documentaron la controversia en el ensayo “A Riddle Wrapped in an Enigma”, y durante años circuló una recompensa informal para quien lograra reconstruir el origen de esos números.
La pista más citada venía de Jerry Solinas, el ingeniero de la NSA que trabajó en el diseño original. En 2015 dijo recordar que las semillas salieron de un hash aplicado a una frase en broma, algo como “Give Bob and Jerry a raise”, aunque admitió que ni él ni su colega Bob Reiter guardaban el código ni los detalles. Solinas murió en 2023 sin resolver la duda, y la pista de la frase resultó, según el hallazgo de Claude, completamente falsa.
Detalles técnicos
Claude no intentó repetir la búsqueda de la frase en broma. En cambio, según el informe de Anthropic, planteó una hipótesis distinta: que el software usado en los 90 para generar las semillas se apoyaba en un generador pseudoaleatorio típico de esa época, y que el patrón de ese generador todavía podía reconocerse en los bytes publicados.
Para probarlo, escribió un escáner que deslizaba una ventana de bits sobre cada semilla y comparaba bloques contiguos contra 34 combinaciones de generador y porción de salida. Ahí apareció la señal: en cuatro de diez semillas analizadas, las 20 palabras de 32 bits tenían el bit más alto en cero. Esa coincidencia, por azar, tiene una probabilidad de apenas 1 en 5.810.
Ese patrón es la firma de lrand48(), un generador congruencial lineal que solo devuelve los 31 bits superiores de un estado interno de 48 bits. Con esa pista, Claude probó por fuerza bruta los 2^17 valores posibles de los 17 bits ocultos y confirmó que las siguientes cuatro palabras de cada semilla encajaban exactamente.
Las semillas de las cinco curvas primas del NIST (P-192, P-224, P-256, P-384 y P-521) y cinco más del estándar ANSI X9.62 conservaban aún menos bits por salida, así que la fuerza bruta ya no alcanzaba. Para esas diez, Claude resolvió un problema clásico de retículas con el algoritmo Lenstra-Lenstra-Lovász (LLL), probando cada posible ventana de bits hasta confirmar el mismo patrón en las diez: lrand48() >> 23.
| Técnica usada por Claude | Dónde se aplicó | Qué resolvió |
|---|---|---|
| Escaneo bit a bit (34 combinaciones) | Las 10 semillas publicadas | Identificar qué generador de los 90 produjo cada semilla |
| Fuerza bruta de 2^17 valores | 4 semillas con bit superior en cero | Recuperar los bits ocultos del estado de lrand48() |
| Reducción de retícula LLL | 10 semillas (5 NIST primas + 5 ANSI X9.62) | Recuperar el estado truncado de lrand48() >> 23 |
flowchart TD
A["Semilla publicada (ej. P-256)"] --> B["Escaneo bit a bit: 34 combinaciones de PRNG"]
B --> C{"¿Bit superior en cero en las 20 palabras?"}
C -->|"Sí"| D["Fuerza bruta de 2^17 valores ocultos"]
C -->|"No"| E["Reducción de retícula LLL"]
D --> F["Estado interno de lrand48 recuperado"]
E --> F
F --> G["Iteraciones desde un timestamp Unix (1.842 para P-256)"]
💭 Clave: una probabilidad de 1 en 5.810 no es una demostración matemática, es una señal estadística. Lo que convierte el hallazgo en evidencia sólida es que, además de detectar el patrón, Claude reconstruyó bit por bit cada semilla publicada y las 10 coincidieron exactamente.
Impacto y análisis
El resultado no corrige ninguna vulnerabilidad activa. ECDSA sigue siendo tan seguro o inseguro como lo era antes del 16 de octubre de 2026; lo que cambia es la certeza sobre cómo se eligieron sus parámetros.
Durante 26 años, la falta de explicación alimentó la hipótesis de que la NSA pudo haber probado miles de semillas hasta encontrar una que escondiera una debilidad conocida solo por ella. Que el proceso completo dependa de un reloj y un generador público, reproducible por cualquiera con una terminal, reduce drásticamente el espacio para esa manipulación.
La comparación con RSA es útil. El algoritmo RSA no depende de parámetros elegidos por un tercero: cualquiera puede generar su propio par de claves desde cero. ECDSA, en cambio, necesita una curva estándar compartida, y esa dependencia es precisamente lo que mantuvo viva la sospecha sobre el origen de sus parámetros durante más de dos décadas.
Queda una duda honesta. El método muestra cómo se generó cada semilla, pero no cuántos intentos, es decir, cuántas marcas de tiempo distintas, probó la NSA antes de quedarse con el resultado publicado. Si alguien hubiera podido repetir el proceso con miles de timestamps y elegir la curva más conveniente, el reloj por sí solo no lo habría impedido. Anthropic no aborda ese escenario en su informe, y es la pieza que todavía depende de la confianza en el proceso original, no solo en las matemáticas.
Qué sigue
Anthropic no promete ninguna acción de seguimiento: el informe lo llama explícitamente un “capítulo de cierre divertido”. No hay parche, no hay nueva versión de ECDSA ni recomendación de migrar a otra curva por este motivo.
Lo que sí abre es un precedente. Usar un modelo de lenguaje para reconstruir decisiones técnicas de hace 30 años, a partir solo de los bytes publicados, es un método que podría aplicarse a otros estándares con parámetros nunca explicados. La criptografía tiene varios más esperando ese mismo tipo de arqueología.
📖 Resumen en Telegram: Ver resumen
Probalo vos: tomá el seed de P-256 (C49D3608 86E70493 6A6678E1 139D26B7 819F7E90) y seguí el razonamiento completo en el informe original de Anthropic antes de decidir cuánto confiar en una curva de 26 años.
Preguntas frecuentes
¿Qué encontró Claude sobre las semillas de curvas NIST?
Encontró que cada semilla, incluida la de P-256, es el resultado directo del generador lrand48() inicializado con una marca de tiempo Unix, y no de un hash de una frase secreta como se rumoraba desde 2015.
¿Por qué importaban los parámetros de ECDSA antes de este hallazgo?
Porque la NSA entregó esas semillas al NIST en el año 2000 sin explicar su origen, y una curva elíptica con un parámetro elegido a propósito podría, en teoría, esconder una debilidad conocida solo por quien la eligió.
¿Qué es lrand48() y por qué importa para la curva P-256?
Es un generador de números pseudoaleatorios incluido en las librerías C desde los años 90. La semilla de P-256 salió de 1.842 iteraciones de ese generador arrancado con un timestamp del sistema, y el mismo patrón apareció en otras nueve semillas de curvas distintas.
¿Este hallazgo significa que ECDSA tiene una puerta trasera?
No. Es lo contrario: al mostrar que el proceso de generación fue simple, público y reproducible, el hallazgo reduce la probabilidad de que exista una puerta trasera deliberada en las curvas NIST, aunque no descarta por completo que se hayan probado muchas marcas de tiempo antes de elegir la publicada.
¿Qué pasó con la pista de Jerry Solinas sobre el estándar FIPS 186-2?
Solinas, ingeniero de la NSA que ayudó a diseñar el estándar, dijo en 2015 recordar un hash de una frase en broma como origen de las semillas. Murió en 2023, y el hallazgo de Claude en 2026 confirmó que esa pista, repetida durante once años, era incorrecta.
Referencias
- Anthropic Research: el informe original donde Claude reconstruye el origen de las semillas de las curvas NIST.
- Wikipedia: historia y especificación técnica de ECDSA.
- Wikipedia: cómo funciona un generador congruencial lineal como lrand48().
- NIST Computer Security Resource Center: fuente oficial del estándar FIPS 186-2 y sus curvas elípticas.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Imagen destacada: Foto de Patrick Martin en Unsplash
¿Te sirvió? ¿Te dio otro error? Contalo abajo: las preguntas se responden y le sirven al siguiente que llegue.
Dejar un comentario
0 Comentarios