PQC

ML-KEM-768 vs RSA: por qué el futuro del cifrado ya no es RSA

21 de marzo de 2026 10 min de lectura PWR.es

RSA lleva protegiendo las comunicaciones de Internet desde 1977. Casi 50 años de servicio impecable basado en una premisa simple: factorizar el producto de dos números primos grandes es computacionalmente inviable. Y lo ha sido, para ordenadores clásicos. Pero el algoritmo de Shor, ejecutado en un ordenador cuántico con suficientes qubits estables, convierte esa factorización en un problema trivial. RSA no está roto hoy, pero tiene fecha de caducidad.

ML-KEM-768 (Module-Lattice Key Encapsulation Mechanism, FIPS 203) es el estándar del NIST que viene a reemplazarlo. Publicado como estándar final en agosto de 2024, ML-KEM se basa en problemas de retículos modulares (Module Learning With Errors) para los que no existe ningún algoritmo cuántico eficiente conocido. No es un parche temporal: es un cambio de paradigma criptográfico.

Comparativa técnica: números reales

Las diferencias entre RSA y ML-KEM no son solo teóricas. Los números cuentan, y los de ML-KEM son sorprendentemente buenos para un algoritmo diseñado para resistir computación cuántica:

  • Clave pública — RSA-2048: 256 bytes | ML-KEM-768: 1.184 bytes (4,6x mayor, pero aún manejable)
  • Clave privada — RSA-2048: 1.024+ bytes | ML-KEM-768: 2.400 bytes (tamaño similar en orden de magnitud)
  • Texto cifrado (ciphertext) — RSA-2048: 256 bytes | ML-KEM-768: 1.088 bytes
  • Generación de claves — RSA-2048: ~2-5 ms | ML-KEM-768: ~0,05 ms (40-100x más rápido)
  • Encapsulación (cifrar) — RSA-2048 OAEP: ~0,1 ms | ML-KEM-768: ~0,07 ms (similar o más rápido)
  • Desencapsulación (descifrar) — RSA-2048 OAEP: ~2-3 ms | ML-KEM-768: ~0,08 ms (25-37x más rápido)
  • Nivel de seguridad — RSA-2048: ~112 bits clásicos, 0 cuánticos | ML-KEM-768: ~192 bits clásicos + resistente a quantum

El dato más relevante: ML-KEM-768 es más rápido que RSA-2048 en todas las operaciones excepto en el tamaño de clave. La generación de claves es hasta 100 veces más rápida. La desencapsulación, 30 veces. El único coste es el tamaño de las claves públicas, que crece de 256 bytes a 1.184 bytes — un incremento irrelevante para las conexiones modernas.

Por qué RSA es vulnerable y ML-KEM no

La seguridad de RSA se basa en la dificultad de factorizar n = p × q, donde p y q son primos grandes. Un ordenador clásico necesita tiempo exponencial para esto (el mejor algoritmo conocido, GNFS, tiene complejidad subexponencial). Pero el algoritmo de Shor, en un ordenador cuántico, lo resuelve en tiempo polinómico: O((log n)³).

ML-KEM se basa en el problema Module-LWE (Learning With Errors): dado un sistema de ecuaciones lineales con errores pequeños sobre un retículo modular, recuperar la solución original. Para un ordenador clásico, la complejidad es exponencial. Para un ordenador cuántico, sigue siendo exponencial. No existe ningún equivalente cuántico del algoritmo de Shor para problemas de retículos.

TEXT
RSA simplificado:
  Clave pública:  n = p × q  (p, q primos grandes)
  Cifrar:         c = m^e mod n
  Descifrar:      m = c^d mod n
  Atacar:         factorizar n → trivial con Shor → O((log n)³)

ML-KEM simplificado:
  Clave pública:  (A, t = As + e)  donde A es matriz, s secreto, e error
  Encapsular:     c = (u, v) con ruido añadido
  Desencapsular:  recuperar secreto compartido usando s
  Atacar:         resolver LWE → exponencial incluso con quantum

La amenaza cuántica: timeline realista

¿Cuándo habrá un ordenador cuántico capaz de romper RSA-2048? Las estimaciones varían, pero convergen en un rango:

  • 2024: Google Willow — 105 qubits con corrección de errores. Lejos de los ~4.000 qubits lógicos necesarios para Shor, pero progresando rápido
  • 2025-2026: IBM, Google y startups como PsiQuantum y QuEra apuntan a 1.000+ qubits lógicos con corrección de errores
  • 2028-2030: Ventana estimada por NIST y BSI (agencia alemana) para que RSA-2048 sea vulnerable. El Global Risk Institute sitúa un 50% de probabilidad para 2031
  • 2030-2035: Consenso académico para la disponibilidad de quantum computers criptográficamente relevantes (CRQC)
  • Ahora mismo: los ataques 'harvest now, decrypt later' ya están en marcha. El tráfico cifrado con RSA que se intercepta hoy será descifrable cuando exista un CRQC

La fecha exacta es irrelevante. Lo relevante es que los datos cifrados hoy con RSA tienen una vida útil que puede exceder la resistencia del algoritmo. Un historial médico, un contrato mercantil, un secreto industrial — si tienen valor en 2035, necesitan protección post-cuántica hoy.

ML-KEM-768 en la práctica con PHP

Implementar ML-KEM-768 directamente requiere una librería de criptografía post-cuántica. En C, la referencia es liboqs (Open Quantum Safe). En PHP, se puede acceder vía FFI (Foreign Function Interface) desde PHP 7.4+. Cuántica, el motor de cifrado de PWR.es, ya incluye liboqs precompilada y expone una interfaz PHP limpia:

PHP
<?php
require_once 'cuantica.php';

// ─── Cifrado híbrido: RSA + ML-KEM-768 ───
// Cuántica implementa las 6 capas automáticamente,
// pero puedes usar ML-KEM directamente si lo necesitas:

// 1. Generar par de claves ML-KEM-768
$claves = cuantica_pqc_generar_claves('ML-KEM-768');
// $claves['publica'] → 1.184 bytes (base64: ~1.580 chars)
// $claves['privada'] → 2.400 bytes

// 2. Encapsular: el emisor genera un secreto compartido
$encapsulado = cuantica_pqc_encapsular($claves['publica']);
// $encapsulado['ciphertext'] → 1.088 bytes
// $encapsulado['secreto_compartido'] → 32 bytes (256 bits)

// 3. Desencapsular: el receptor recupera el mismo secreto
$secreto = cuantica_pqc_desencapsular(
    $encapsulado['ciphertext'],
    $claves['privada']
);
// $secreto === $encapsulado['secreto_compartido'] → true

// 4. Usar el secreto compartido para cifrado simétrico
$cifrado = cuantica_cifrar_con_clave($datos, $secreto);

El flujo es idéntico al de RSA-OAEP: generas claves, el emisor encapsula con la clave pública para producir un secreto compartido y un ciphertext, el receptor desencapsula con la clave privada para obtener el mismo secreto. La diferencia es que ML-KEM resiste ataques cuánticos y RSA no.

Migración: de RSA a híbrido PQC

La migración a PQC no debería ser un salto abrupto. La recomendación de NIST, ENISA y el BSI es implementar criptografía híbrida: combinar un algoritmo clásico (RSA o ECDH) con uno post-cuántico (ML-KEM). Si alguno de los dos se rompe, el otro sigue protegiendo.

El enfoque híbrido funciona concatenando o combinando los secretos compartidos de ambos mecanismos. El secreto final es tan fuerte como el más fuerte de los dos componentes:

PHP
<?php
// ─── Cifrado híbrido RSA + ML-KEM-768 ───
require_once 'cuantica.php';

// Claves clásicas (RSA-4096)
$rsa = openssl_pkey_new(['private_key_bits' => 4096]);
openssl_pkey_export($rsa, $rsa_privada);
$rsa_publica = openssl_pkey_get_details($rsa)['key'];

// Claves post-cuánticas (ML-KEM-768)
$pqc = cuantica_pqc_generar_claves('ML-KEM-768');

// ─── Emisor: encapsular con ambos ───
// 1. RSA: cifrar un secreto aleatorio
$secreto_rsa = random_bytes(32);
openssl_public_encrypt($secreto_rsa, $cifrado_rsa, $rsa_publica,
    OPENSSL_PKCS1_OAEP_PADDING);

// 2. ML-KEM: encapsular otro secreto
$pqc_enc = cuantica_pqc_encapsular($pqc['publica']);

// 3. Combinar ambos secretos (KDF con HKDF-SHA256)
$secreto_hibrido = hash_hkdf('sha256',
    $secreto_rsa . $pqc_enc['secreto_compartido'],
    32, 'hybrid-rsa-mlkem', random_bytes(32)
);

// 4. Cifrar datos con el secreto híbrido
$datos_cifrados = cuantica_cifrar_con_clave($datos, $secreto_hibrido);

Este enfoque es el que implementa Cuántica internamente. Las capas 1-5 usan criptografía simétrica clásica (AES-256-GCM, ChaCha20-Poly1305), y la capa 6 añade ML-KEM-768. Si RSA cae, las capas PQC protegen. Si ML-KEM tuviera una vulnerabilidad desconocida, las capas clásicas siguen intactas.

Rendimiento real: benchmarks en PHP

La objeción habitual contra PQC es el rendimiento. Los números reales desmienten esa preocupación. En un servidor con PHP 8.3 y un procesador Xeon E-2236 (hardware modesto), estos son los tiempos medidos con Cuántica:

  • Generar claves ML-KEM-768: 0,048 ms (vs RSA-2048: 3,2 ms — 66x más rápido)
  • Encapsular (cifrar secreto): 0,065 ms (vs RSA-OAEP: 0,11 ms — 1,7x más rápido)
  • Desencapsular (descifrar secreto): 0,071 ms (vs RSA-OAEP: 2,8 ms — 39x más rápido)
  • Cifrado completo 6 capas (1 KB de datos): 1,2 ms
  • Cifrado completo 6 capas (100 KB de datos): 8,4 ms
  • Cifrado completo 6 capas (1 MB de datos): 62 ms

El cifrado de 6 capas con PQC incluido tarda 1,2 milisegundos para un dato típico de formulario. En una petición web que tarda 50-200 ms en total, el cifrado post-cuántico añade menos del 1% de latencia. No hay excusa técnica para no implementarlo.

¿Y ECDSA? ¿Y Curve25519?

La criptografía de curva elíptica (ECC) es más eficiente que RSA y usa claves más pequeñas. ECDSA-256 tiene claves de 32 bytes frente a los 256 de RSA-2048. Pero ante un ordenador cuántico, ECC es igual de vulnerable que RSA. El algoritmo de Shor resuelve el problema del logaritmo discreto en curvas elípticas con la misma eficiencia que la factorización.

Curve25519, X25519, Ed25519 — todos usan curvas elípticas y todos caerán con Shor. De hecho, ECC caerá antes que RSA: se estima que romper ECDSA-256 requiere unos 2.330 qubits lógicos, mientras que RSA-2048 necesita ~4.098. La curva elíptica que elegiste por eficiencia es, irónicamente, la más vulnerable a la amenaza cuántica.

Recomendaciones concretas

  • Para datos nuevos: implementa cifrado híbrido (clásico + ML-KEM) desde hoy. No esperes a que RSA esté roto
  • Para datos existentes: prioriza la re-cifración de datos con valor a largo plazo (contratos, historiales médicos, secretos industriales)
  • Para TLS: Chrome, Firefox y los principales navegadores ya soportan X25519Kyber768 en TLS 1.3. Actívalo en tu servidor
  • Para firma digital: migra a ML-DSA (FIPS 204) cuando tu marco legal lo permita. eIDAS 2.0 lo contempla
  • Para almacenamiento: usa cifrado multicapa que combine AES-256-GCM con ML-KEM. Cuántica lo implementa con una sola función

RSA ha servido bien durante medio siglo. Pero su base matemática tiene una debilidad estructural frente a la computación cuántica que no se puede parchear. ML-KEM-768 no es solo el sucesor: es un algoritmo más rápido, con un fundamento matemático más robusto, estandarizado por el NIST, y disponible hoy. La transición no es una cuestión de si, sino de cuándo. Y cuanto antes empieces, menos datos vulnerables acumulas.