0Pricing
Cryptology Academy · Lección

ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber

Profundice en el mecanismo de encapsulación de claves de ML-KEM, sus conjuntos de parámetros y las consideraciones de implementación.

ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 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.

Qué estandariza ML-KEM

ML-KEM (mecanismo de encapsulación de claves basado en módulos y retículos), estandarizado como FIPS 203 en agosto de 2024, es el sustituto poscuántico del intercambio de claves Diffie-Hellman y RSA. Encapsula una clave simétrica mediante una clave pública y produce un secreto compartido que ambas partes pueden utilizar para el cifrado simétrico. ML-KEM deriva de CRYSTALS-Kyber, con modificaciones menores para lograr una especificación más clara.

Conjuntos de parámetros de ML-KEM

ML-KEM define tres conjuntos de parámetros. ML-KEM-512 ofrece aproximadamente 128 bits de seguridad clásica y 100 bits de seguridad poscuántica, con una clave pública de 800 bytes y un texto cifrado de 768 bytes. ML-KEM-768 ofrece 192 bits de seguridad clásica, con una clave pública de 1184 bytes y un texto cifrado de 1088 bytes. ML-KEM-1024 ofrece 256 bits de seguridad clásica, con una clave pública de 1568 bytes y un texto cifrado de 1568 bytes. NIST recomienda ML-KEM-768 para la mayoría de las aplicaciones.

Generación de claves en ML-KEM

La generación de claves de ML-KEM funciona de la siguiente manera: se muestrea una matriz aleatoria A a partir de una semilla mediante SHAKE-128, se muestrean un vector secreto pequeño s y un vector de error e, y se calcula t = As + e mod q. La clave pública es (seed, t) y la clave privada es s junto con el hash de la clave pública. Utilizar una semilla en lugar de almacenar A permite ahorrar una cantidad considerable de memoria y ancho de banda.

Proceso de encapsulación

Para encapsular, el emisor genera un mensaje aleatorio m y deriva una clave simétrica K y la aleatoriedad r mediante SHA-3. El texto cifrado consta de dos partes: u = Ar + e1 mod q y v = t^T r + e2 + encode(m) mod q. El secreto compartido K se deriva del hash de m. La aleatoriedad se deriva determinísticamente de m, lo que vincula el texto cifrado a la clave.

Desencapsulación y transformación FO

La desencapsulación recupera m calculando v - s^T u y decodificándolo; después, vuelve a derivar K a partir de m. La transformación de Fujisaki-Okamoto añade un paso crucial: volver a cifrar utilizando el m recuperado y comprobar que el texto cifrado coincide. Si no coincide, se devuelve un valor seudorrandómico derivado del hash de la clave privada y del texto cifrado. Esto evita los ataques de texto cifrado elegido al hacer que la desencapsulación sea determinista y verificable.

Prueba de seguridad CCA2

ML-KEM alcanza seguridad IND-CCA2 en el modelo de oráculo aleatorio cuántico (QROM), demostrada bajo el supuesto de Module-LWE. El QROM es importante porque los adversarios poscuánticos pueden consultar funciones hash en superposición. La prueba de seguridad de Hofheinz, Hovelmanns y Kiltz (el marco HHK) proporciona reducciones ajustadas de Module-LWE a la seguridad de ML-KEM en el QROM.

Rendimiento frente a RSA y ECDH

ML-KEM supera ampliamente a RSA para el intercambio de claves con niveles de seguridad equivalentes. En una CPU moderna, la generación de claves de ML-KEM-768 tarda aproximadamente 16 microsegundos, la encapsulación 20 microsegundos y la desencapsulación 18 microsegundos. La generación de claves de RSA-2048 tarda segundos. Las claves públicas de ML-KEM (1184 bytes) son más grandes que las de ECDH (32-64 bytes), pero mucho más pequeñas que las de RSA-2048 (256 bytes solo para la clave, aunque en la práctica son más largas).

Implementaciones híbridas

Durante el periodo de transición, el intercambio de claves híbrido combina ML-KEM con un algoritmo clásico, normalmente X25519 o P-256 ECDH. El secreto compartido es el hash de las salidas de ambos KEM: K = Hash(K_classical || K_pqc). Esto garantiza que la seguridad no pueda ser inferior a la de ninguno de los dos componentes. TLS híbrido se especifica en IETF draft-ietf-tls-hybrid-design y es compatible con BoringSSL, OpenSSL 3.x y Rustls.

ML-KEM en TLS 1.3

La IETF ha definido X25519ML-KEM-768 como el intercambio de claves híbrido para TLS 1.3 (draft-ietf-tls-hybrid-design). Chrome añadió compatibilidad en la versión 124 (abril de 2024) y Firefox en la versión 132 (2024). Cloudflare implementó ML-KEM en su infraestructura de terminación TLS. Esta rápida adopción significa que cientos de millones de conexiones TLS al día ya incluyen un intercambio de claves poscuántico.

Tasa de fallos de descifrado

Debido a los términos de error de LWE, existe una probabilidad mínima de que la desencapsulación falle incluso sin la presencia de un adversario. Para ML-KEM-512, la probabilidad de fallo es aproximadamente 2^{-139}; para ML-KEM-768, es 2^{-164}. Estas tasas están muy por debajo de cualquier preocupación práctica, ya que, por comparación, los errores de hardware son mucho más frecuentes, y no afectan a la seguridad, pero deben tenerse en cuenta en la especificación.

Implementaciones de código abierto

ML-KEM está implementado en numerosas bibliotecas de código abierto. La implementación de referencia del equipo de Kyber es de dominio público. PQClean proporciona una implementación en C depurada y portable. liboqs (proyecto Open Quantum Safe) integra ML-KEM en una capa de biblioteca. AWS-LC (la bifurcación de BoringSSL de Amazon) incluye ML-KEM para los extremos TLS de AWS. La norma FIPS 203 de NIST incluye pseudocódigo detallado para todas las operaciones.

Cuestionario sobre los parámetros de ML-KEM

¿Qué conjunto de parámetros de ML-KEM recomienda NIST para la mayoría de las aplicaciones?

Resumen de ML-KEM

ML-KEM (FIPS 203) es el KEM poscuántico estandarizado por NIST y basado en Module-LWE. Sus tres conjuntos de parámetros (512/768/1024) proporcionan 128/192/256 bits de seguridad clásica. La generación de claves produce una clave pública compacta a partir de una semilla aleatoria; la encapsulación deriva un secreto compartido; y la desencapsulación utiliza la transformación FO para proporcionar seguridad CCA2. ML-KEM es considerablemente más rápido que RSA y ya está implementado en Chrome, Firefox y TLS de Cloudflare.

Preguntas frecuentes

¿La lección «ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber» es gratis?

Sí — el texto completo de «ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber» 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-KEM (FIPS 203): estandarización de CRYSTALS-Kyber»?

Profundice en el mecanismo de encapsulación de claves de ML-KEM, sus conjuntos de parámetros y las consideraciones de implementación. 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 2 de 4.

¿Cuánto tiempo toma la lección «ML-KEM (FIPS 203): estandarización de CRYSTALS-Kyber»?

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