0Pricing
Cryptology Academy · Lección

ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)

Compare las firmas basadas en retículos CRYSTALS-Dilithium con las firmas basadas en hashes SPHINCS+ y sus ventajas e inconvenientes.

ML-DSA (FIPS 204) y SLH-DSA (FIPS 205) es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Orígenes de ML-DSA

ML-DSA (algoritmo de firma digital basado en módulos y retículos), estandarizado como FIPS 204, deriva de CRYSTALS-Dilithium. Dilithium fue diseñado por Ducas, Kiltz, Lepoint, Lyubashevsky, Schwabe, Seiler y Stehle, y se presentó a NIST en 2017. Utiliza el marco Fiat-Shamir con abortos aplicado a Module-LWE, lo que produce un esquema de firma práctico con pruebas de seguridad sólidas.

Fiat-Shamir con abortos

Las transformaciones clásicas de Fiat-Shamir convierten protocolos interactivos de identificación en firmas. En los esquemas basados en retículos, una aplicación directa filtra información sobre la clave privada a través del vector de respuesta. La técnica de Lyubashevsky con abortos añade un muestreo de rechazo: el firmante comprueba si la respuesta revelaría información y, en ese caso, aborta y vuelve a intentarlo. Esto añade un pequeño coste a la firma, pero es esencial para la seguridad.

Proceso de firma de ML-DSA

Para firmar, ML-DSA muestrea un vector de enmascaramiento y a partir de una distribución uniforme, calcula un compromiso w = Ay, aplica un hash a (message, w) para obtener un polinomio de desafío c y calcula la respuesta z = y + cs. El muestreo de rechazo comprueba si z revela información sobre s. Si la comprobación es correcta, la firma es (c, z), junto con una indicación para permitir una verificación eficiente. De lo contrario, el proceso se repite.

Conjuntos de parámetros de ML-DSA

ML-DSA define tres conjuntos de parámetros: ML-DSA-44 (nivel de seguridad 2 de NIST, aproximadamente 128 bits), ML-DSA-65 (nivel 3, aproximadamente 192 bits) y ML-DSA-87 (nivel 5, aproximadamente 256 bits). Los números hacen referencia a los rangos de los módulos del esquema. Los tamaños de las claves públicas son, respectivamente, 1312, 1952 y 2592 bytes. El tamaño de la firma de ML-DSA-65 es de 3293 bytes, frente a los 64 bytes de Ed25519 con 128 bits de seguridad.

Compensación del tamaño de las firmas de ML-DSA

La desventaja más importante de ML-DSA frente a ECDSA o EdDSA es el tamaño de las firmas. Las firmas de ML-DSA-65 ocupan 3293 bytes, frente a los 64 bytes de Ed25519. En los protocolos que transmiten muchas firmas, como las cadenas de certificados TLS y la firma de código, esto aumenta el ancho de banda. Sin embargo, la firma y la verificación de ML-DSA son muy rápidas, comparables a las de ECDSA o incluso más rápidas, por lo que la compensación se produce principalmente en el coste de comunicación.

Orígenes y diseño de SLH-DSA

SLH-DSA (algoritmo de firma digital basado en hashes y sin estado), estandarizado como FIPS 205, deriva de SPHINCS+. A diferencia de los esquemas basados en retículos, la seguridad de SLH-DSA depende únicamente de la resistencia a colisiones y a segundas preimágenes de la función hash subyacente (SHA-256 o SHAKE-256). Esto hace que SLH-DSA sea extremadamente conservador: sigue siendo seguro incluso si se rompen los supuestos sobre retículos.

Firmas de un solo uso WOTS+

SLH-DSA se basa en WOTS+ (firma de un solo uso de Winternitz), un esquema basado en hashes en el que la clave privada es un conjunto de cadenas aleatorias y la clave pública se obtiene aplicando hashes repetidamente a cada una. La firma consiste en aplicar hashes parcialmente según los bits del mensaje. WOTS+ solo puede utilizarse una vez por par de claves de forma segura; utilizarlo dos veces filtra información. SLH-DSA construye la posibilidad de firmar muchas veces sobre WOTS+ mediante árboles.

Árboles de Merkle para firmar muchas veces

SLH-DSA utiliza un hiperárbol: un árbol de árboles de Merkle. Cada hoja es la clave pública de una instancia de WOTS+. La raíz es la clave pública de SLH-DSA. Una firma consta de la firma WOTS+ del mensaje y de la ruta de autenticación desde la hoja hasta la raíz. La estructura de hiperárbol permite generar muchas firmas a partir de un solo par de claves utilizando distintas hojas WOTS+.

Conjuntos de parámetros de SLH-DSA

SLH-DSA tiene 12 conjuntos de parámetros que combinan la función hash (SHA-256 o SHAKE-256), el nivel de seguridad (128s/128f, 192s/192f, 256s/256f) y la optimización (s = firmas pequeñas, f = firma rápida). La variante 128f tiene firmas de 7856 bytes y permite firmar rápidamente; 128s también tiene 7856 bytes, pero la firma es más lenta. Todas son mucho más grandes que las de ML-DSA, pero se basan en el supuesto de seguridad más sólido posible.

Cuándo elegir SLH-DSA frente a ML-DSA

ML-DSA es la opción preferida cuando el rendimiento y el ancho de banda son importantes y se confía en los supuestos sobre retículos. SLH-DSA es la opción preferida para implementaciones extremadamente conservadoras en las que solo se confía en la seguridad de las funciones hash, o para prepararse frente a posibles ataques futuros contra los retículos. Las autoridades certificadoras y los sistemas gubernamentales que firman con poca frecuencia pero necesitan la máxima garantía podrían preferir SLH-DSA, mientras que los servidores TLS que firman con frecuencia preferirían ML-DSA.

FN-DSA (FALCON): otra firma basada en retículos

FN-DSA (FIPS 206, basado en FALCON) ofrece firmas más pequeñas que ML-DSA (897 bytes para FALCON-512 con 128 bits de seguridad) mediante el uso de retículos NTRU y muestreo gaussiano. Sin embargo, FALCON requiere una implementación cuidadosa en tiempo constante para evitar ataques de canal lateral dirigidos al muestreador gaussiano. Se espera que FIPS 206 se estandarice después de FIPS 203-205 y que proporcione una opción de alto rendimiento para entornos con recursos limitados.

Cuestionario sobre ML-DSA y SLH-DSA

¿Cuál es la principal ventaja de seguridad de SLH-DSA frente a ML-DSA?

Resumen de ML-DSA y SLH-DSA

ML-DSA (FIPS 204) utiliza Fiat-Shamir con abortos sobre Module-LWE y ofrece firmas rápidas de 3 KB con 192 bits de seguridad. SLH-DSA (FIPS 205) utiliza árboles de Merkle basados en hashes (WOTS+) y depende únicamente de la seguridad de las funciones hash, con firmas de 7-50 KB. ML-DSA es la opción preferida para aplicaciones sensibles al rendimiento; SLH-DSA, para obtener el máximo conservadurismo. FN-DSA (FALCON, FIPS 206) añadirá una opción basada en retículos con firmas más pequeñas.

Preguntas frecuentes

¿La lección «ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)» es gratis?

Sí — el texto completo de «ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)»?

Compare las firmas basadas en retículos CRYSTALS-Dilithium con las firmas basadas en hashes SPHINCS+ y sus ventajas e inconvenientes. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. La competición de NIST sobre PQC: proceso y criterios
  2. ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber
  3. ML-DSA (FIPS 204) y SLH-DSA (FIPS 205)
  4. Planificación de la migración a estándares poscuánticos
← Volver a Cryptology Academy