Privacidad
¿Qué es el cifrado post-cuántico? Y qué protege en su buzón
Nisdos Mail ya protege la clave más valiosa de un buzón con custodia en el dispositivo con cifrado pensado para sobrevivir a los ordenadores cuánticos. Es una clave, no el buzón entero, y la distancia entre esas dos afirmaciones es el tema de esta página.
Los detalles, para quien los quiera: cuando un navegador activa un dispositivo, la clave que genera ya es un híbrido de ML-KEM-768 ⊕ X25519 y no un X25519 a secas. Sus mensajes guardados todavía no están cubiertos. Abajo está por qué ese orden fue el correcto y qué falta aún.
¿Contra qué protege el cifrado post-cuántico?
Contra una copia del cifrado de hoy, abierta dentro de veinte años. El ataque se llama “recolectar ahora, descifrar después” y no exige que el ordenador cuántico exista ya: solo que alguien guarde sus datos cifrados ahora y espere.
El algoritmo de Shor, ejecutado en una máquina cuántica suficientemente grande, recupera la clave privada a partir de una clave pública X25519 o RSA. Nadie tiene esa máquina. Cualquiera que pueda copiar cifrado hoy — el operador de una nube, una orden judicial, una copia de seguridad robada, un bucket mal configurado — puede guardarlo hasta que alguien la tenga. El cifrado simétrico está en otra posición: el algoritmo de Grover solo reduce a la mitad la longitud efectiva de la clave, y una clave de 256 bits absorbe eso de sobra.
El correo es casi el peor caso frente a esta amenaza, porque un buzón es un archivo y no una sesión. El tráfico web es pasajero; el correo se guarda a propósito. Un contrato, un diagnóstico, un hilo con un abogado, un enlace de recuperación que todavía funciona: lo que había que cifrar en 2026 es a menudo justo lo que merecerá leerse en 2045.
¿Qué parte de un buzón de Nisdos Mail es post-cuántica hoy?
La clave del dispositivo, es decir, la envoltura alrededor del llavero del buzón. Nada más.
Un buzón con custodia en el dispositivo tiene tres niveles de claves, y “envuelto” aquí abajo solo quiere decir encerrado dentro de otra clave. El cuerpo de cada mensaje se cifra con su propia clave aleatoria. Esa clave de mensaje se envuelve hacia la clave de generación vigente del buzón, la clave a la que se cifra todo lo que llega hoy. Y el llavero — todas las generaciones que el buzón ha tenido, más la semilla Ed25519 que autoriza dispositivos nuevos — se envuelve por separado hacia la clave de cada dispositivo activado.
| Qué | Algoritmo | Resistente al cuántico |
|---|---|---|
| Cuerpo del mensaje | ChaCha20-Poly1305 | Sí, es simétrico |
| Envoltura por mensaje, hacia la clave de generación | X25519 | No |
| Envoltura del llavero, hacia cada clave de dispositivo | ML-KEM-768 ⊕ X25519 | Sí |
Empezamos por la tercera fila por dos razones. El llavero envuelto es el cifrado de mayor valor del sistema: contiene todas las generaciones de claves que el buzón ha tenido y la semilla que autoriza dispositivos, y descansa en nuestra base de datos junto a la clave pública hacia la que fue envuelto, tanto tiempo como exista el buzón. Una sola rotura ahí es total: todo el correo, pasado y futuro, más la capacidad de activar un dispositivo nuevo y recibir el buzón con todas las bendiciones.
Es también la única envoltura cuyas dos mitades son trabajo del cliente. El navegador envuelve el llavero, el navegador lo abre y nuestro servidor traslada bytes que no puede leer. Cambiar el algoritmo ahí no necesitaba el acuerdo de nada más.
¿Por qué mi correo guardado aún no es post-cuántico?
Porque la parte de nuestro sistema que recibe su correo todavía no sabe hablar el algoritmo nuevo. Nuestra ruta de entrega está escrita en Rust, y la implementación de age en Rust no puede cifrar hacia un destinatario post-cuántico.
Cada mensaje entrante se cifra en nuestro host MX en el momento de la entrega, hacia la clave pública del buzón. Ese es el mecanismo que permite a un buzón con custodia en el dispositivo recibir correo que después no podemos leer, y funciona con la crate age, que solo admite X25519 como identidad en 0.11 y en 0.12. La versión 0.12 sí añadió destinatarios post-cuánticos, pero solo una forma etiquetada de ML-KEM-768 ⊕ P-256, únicamente para cifrar, y nada sabe descifrarla en ninguno de los dos lenguajes. La biblioteca del navegador trae la clase de destinatario correspondiente y ninguna clase de identidad que la acompañe.
Podríamos definir nosotros la mitad que falta. Tendríamos entonces una codificación de claves fuera de norma para los bytes más valiosos del producto, y archivos .age que las herramientas estándar age y rage no abrirían, que fue una de las razones para elegir age. Esperar un tipo de identidad mlkem768x25519 sin etiquetar en ambos lados es la respuesta correcta más barata, y la comprobación que impone X25519 a las generaciones del buzón lo dice en un comentario, para quien llegue primero.
Queda una brecha, y la decimos entera: quien copie hoy los objetos cifrados de su almacenamiento y tenga un ordenador cuántico en 2045 podrá leer esos mensajes. El encabezado de cada objeto lleva una clave X25519 efímera, y romperla entrega la clave de fichero de ese objeto. El llavero queda fuera de alcance, así que no podrá activar un dispositivo ni seguir el buzón hacia adelante, pero el archivo que copió se abre. Preferimos escribir esta frase antes que dejar que un titular insinúe lo contrario.
¿Por qué no usar juntos el cifrado antiguo y el nuevo?
Porque dos envolturas de la misma clave se rigen por el eslabón más débil y no suman seguridad. Si una clave de fichero está envuelta hacia un destinatario X25519 y hacia uno híbrido, quien ataca rompe la más fácil y obtiene el mismo texto claro. Dos firmas DKIM funcionan al contrario: el verificador acepta cualquiera de las dos, así que la segunda añade sin restar. El encapsulado de claves le da la peor de las dos.
Pasar las envolturas de mensajes a post-cuántico es por eso un cambio en firme y no una suma: una generación nueva a la que se cifra el correo nuevo, con las generaciones anteriores todavía legibles a través del llavero. Falta también una ceremonia que aún no tenemos. Hoy una generación nueva solo aparece cuando usted revoca un dispositivo, porque revocación y rotación son la misma operación; un cambio post-cuántico es esa operación sin la lápida.
¿Cuánto cuesta el cifrado post-cuántico?
Tamaño, no velocidad. ML-KEM es rápido; sus claves simplemente son grandes. La de encapsulado de ML-KEM-768 ocupa 1184 bytes, y el destinatario híbrido de age le añade un punto X25519 de 32 bytes: 1216 bytes, que se codifican en una cadena age1pq1… de unos 1.950 caracteres.
Eso es cerca de 60 veces un destinatario age clásico, y ha cambiado código real. Una consulta de dispositivo indexada por su propia clave pública ya no puede meter esa clave en una URL, así que esas peticiones la llevan en el cuerpo. Cuando se revoca un dispositivo, borramos su clave pública junto con su llavero envuelto, porque 1,9 KB por dispositivo retirado guardados para siempre son peso muerto y un identificador de dispositivo que nadie necesita.
Si las envolturas por mensaje pasan a híbridas más adelante, el coste cae por objeto: unos 1,5 KB más de encabezado en cada mensaje guardado, alrededor de 150 MB en un buzón de 100.000 mensajes. Merece la pena. Y merece la pena calcularlo antes.
¿Qué no cubre nada de esto?
El transporte y los metadatos, igual que antes. El correo viaja entre proveedores por SMTP con TLS salto a salto, y el intercambio de claves ahí es el que acuerden los dos servidores: los MTA van bastante por detrás de los navegadores en intercambio híbrido. Los datos del sobre — quién escribió a quién, cuándo y por qué relés — los ve cada salto, pase lo que pase en reposo. El correo entrante llega en claro, y por eso la custodia en el dispositivo es zero-access y no zero-knowledge: procesamos el mensaje al llegar y después no podemos volver a leerlo.
La custodia en el dispositivo está todavía en beta. Las claves nacen en su navegador, nuestra copia de la clave del buzón se borra al activarla y aún no hay sistema de recuperación: si hoy pierde todos los dispositivos activados, el correo se pierde. La recuperación con reparto de Shamir es el siguiente punto de esa lista, y hasta que llegue, ese trato es el nivel.
Nada de esto invalida las activaciones existentes. El cliente distingue los tipos de identidad, así que un dispositivo X25519 sigue funcionando y pasa a híbrido la próxima vez que se active.
La pregunta que conviene hacer a quien anuncie correo post-cuántico: ¿qué cifrado han hecho híbrido? Si la respuesta es el transporte, han renovado la única parte que nadie estaba archivando.
Preguntas frecuentes
¿Qué es el cifrado post-cuántico?
Es el cifrado diseñado para seguir siendo seguro frente a un ordenador cuántico capaz de ejecutar el algoritmo de Shor, que recupera una clave privada a partir de una clave pública X25519 o RSA. No sustituye al cifrado simétrico de los contenidos, que apenas se ve afectado: lo que reemplaza es el intercambio o encapsulado de claves que envuelve a esos contenidos, la parte que hoy sí caería.
¿El cifrado del correo electrónico resiste a un ordenador cuántico?
Por defecto no, y casi nunca de principio a fin. El cuerpo de los mensajes lo protege un cifrado simétrico que un ordenador cuántico apenas roza, pero la clave que lo envuelve suele ser X25519 o RSA, y ambas caen ante el algoritmo de Shor. En Nisdos Mail, dentro de la custodia en el dispositivo, la envoltura que protege el llavero del buzón ya es post-cuántica (ML-KEM-768 ⊕ X25519); la envoltura de cada mensaje sigue en X25519, así que el correo almacenado todavía no es resistente al cuántico.
¿Qué significa "recolectar ahora, descifrar después"?
Copiar datos cifrados hoy para descifrarlos cuando exista un ordenador cuántico. Quien ataca no necesita la máquina en el momento del robo, solo almacenamiento y paciencia, y por eso la amenaza es real antes que el hardware. El correo está especialmente expuesto porque un buzón es un archivo y no una sesión: un contrato, un diagnóstico o un asunto legal de 2026 suele seguir siendo delicado en 2045.
¿Qué algoritmo post-cuántico usa Nisdos Mail?
ML-KEM-768 combinado con X25519, en la forma del destinatario híbrido de age (`age1pq1…`, estrofa `mlkem768x25519`). ML-KEM es el mecanismo de encapsulado de claves que el NIST normalizó en FIPS 203 en agosto de 2024, antes llamado Kyber, y el juego de parámetros 768 es el que el sector ha adoptado para el uso general: el mismo que los navegadores negocian en TLS como X25519MLKEM768. Híbrido quiere decir que hay que romper las dos mitades, así que no se renuncia a la garantía clásica para adoptar la nueva.
¿Por qué las claves de cada mensaje siguen siendo X25519?
Porque nuestra ruta de entrega está escrita en Rust y la implementación de age en Rust no puede cifrar hacia un destinatario post-cuántico. Cada mensaje entrante se envuelve en la entrega hacia la clave pública del buzón con la crate `age`, que solo admite X25519 como identidad tanto en 0.11 como en 0.12. La versión 0.12 añadió destinatarios post-cuánticos, pero solo la forma *etiquetada* ML-KEM-768 ⊕ P-256 y únicamente para cifrar: nadie puede descifrarla en ninguno de los dos lenguajes. Preferimos esperar un tipo de identidad `mlkem768x25519` sin etiquetar antes que inventar uno fuera de norma.
¿Una clave post-cuántica hace el buzón más lento o más grande?
Más lento no: ML-KEM es rápido. Más grande sí: la clave de encapsulado de ML-KEM-768 ocupa 1184 bytes, con lo que el destinatario híbrido de age llega a 1216 bytes y se codifica en una cadena de unos 1.950 caracteres, cerca de 60 veces un destinatario age clásico. Hoy eso solo afecta al registro de dispositivos. Si más adelante las envolturas de los mensajes pasan a híbridas, cada mensaje guardado sumará unos 1,5 KB de encabezado: alrededor de 150 MB en un buzón de 100.000 mensajes.