La transición a la criptografía post-cuántica presenta un desafío fundamental para la Web PKI: el tamaño significativamente mayor de las firmas y claves públicas de los algoritmos post-cuánticos. Algoritmos como ML-DSA-44 producen firmas de ~2.4KB y claves públicas de ~1.3KB, en contraste con los 64-256 bytes de RSA y ECDSA actuales. Reemplazar directamente las firmas existentes en un handshake TLS típico (que incluye hasta cinco firmas y dos claves públicas) con sus equivalentes post-cuánticos incrementaría el tamaño del handshake a más de 10KB. Este aumento es inaceptable, ya que la investigación ha demostrado que handshakes de este tamaño provocan fallos de conexión y degradación del rendimiento en redes del mundo real, afectando negativamente la experiencia del usuario y la adopción de seguridad por defecto.
El problema se agrava por la urgencia de la migración post-cuántica. Aunque la autenticación se consideraba menos crítica que el cifrado (ya que un ataque requiere una computadora cuántica criptográficamente relevante - CRQC - en tiempo real), los plazos se han acelerado. Entidades como la NSA, NIST y la Unión Europea han establecido calendarios agresivos para la adopción de algoritmos post-cuánticos, con Google y Cloudflare comprometiéndose a migraciones para 2029. La necesidad de proteger claves de larga duración (CAs raíz, claves de firma de código) y el largo ciclo de adopción de nuevas tecnologías en la Web PKI hacen que la inacción ya no sea una opción. La tesis central de Let's Encrypt es que Merkle Tree Certificates (MTCs) ofrecen una solución viable para integrar la autenticación post-cuántica sin comprometer la eficiencia y fiabilidad de TLS, al tiempo que mejoran la transparencia de los certificados.
Arquitectura del Sistema
La arquitectura de Merkle Tree Certificates (MTCs) se basa en la emisión de certificados en lotes, donde una única firma post-cuántica cubre todo el lote. En lugar de que cada certificado sea firmado individualmente por la CA, los certificados se organizan en una estructura de datos de Merkle Tree. La CA firma la raíz (root hash) de este árbol, y esta firma única autentica todos los certificados dentro del lote. Los navegadores y clientes TLS se mantienen actualizados con estas firmas de lote, denominadas "landmarks", de forma asíncrona y separada del handshake TLS.
Durante un handshake TLS, el cliente recibe un certificado MTC que incluye una prueba de inclusión (inclusion proof) para demostrar que el certificado es parte de un Merkle Tree cuya raíz ha sido previamente autenticada por un landmark. En el caso común, la ruta de autenticación en el handshake TLS se reduce a una firma (la del servidor, que puede ser post-cuántica pero no la de la CA), una clave pública y una prueba de inclusión. Esta configuración resulta en un tamaño de handshake menor que el actual, incluso utilizando algoritmos post-cuánticos para la firma del servidor. En el caso de que el cliente tenga un landmark desactualizado, existe un mecanismo de fallback "standalone" que permite un handshake ligeramente más grande pero aún funcional.
Un beneficio arquitectónico adicional es la integración inherente de la Transparencia de Certificados (CT). Dado que cada certificado MTC es intrínsecamente parte de un Merkle Tree publicado, su existencia está ligada a la estructura del árbol. Esto contrasta con el modelo actual de CT, donde los certificados son emitidos y luego registrados por separado en logs de CT (que son, en sí mismos, Merkle Trees append-only). Con MTCs, la transparencia se convierte en una propiedad intrínseca de la emisión, eliminando la necesidad de firmas adicionales en el handshake TLS para atestiguar el registro en CT.
Flujo de Emisión de Certificados MTC
- 1 CA Recibe Solicitudes La CA recibe múltiples solicitudes de certificados (ACME).
- 2 Generar Lote de Certificados La CA agrupa los certificados solicitados en un lote.
- 3 Construir Merkle Tree Los certificados del lote se organizan como hojas de un Merkle Tree.
- 4 Firmar Merkle Root La CA firma el Merkle Root del árbol con una firma post-cuántica.
- 5 Publicar Landmark La firma del Merkle Root (landmark) se publica y distribuye a los clientes.
- 6 Emitir Certificados Los certificados individuales se emiten junto con su prueba de inclusión.
Flujo de Autenticación TLS con MTC
- 1 Cliente Inicia TLS Cliente envía ClientHello al servidor.
- 2 Servidor Envía Certificado MTC Servidor envía su certificado MTC y la prueba de inclusión.
- 3 Cliente Verifica Certificado Cliente verifica la prueba de inclusión contra un landmark conocido.
- 4 Cliente Verifica Firma Servidor Cliente verifica la firma post-cuántica del servidor.
- 5 Handshake Completo Si las verificaciones son exitosas, el handshake TLS continúa.
| Capa | Tecnología | Justificación |
|---|---|---|
| security | ML-DSA | Algoritmo de firma digital post-cuántica estandarizado por NIST, utilizado para la autenticación en MTCs. |
| security | Merkle Tree | Estructura de datos fundamental para agrupar y autenticar lotes de certificados de manera eficiente, reduciendo el tamaño de las firmas en el handshake TLS. |
| networking | TLS | Protocolo de seguridad que se adapta para integrar MTCs y firmas post-cuánticas, minimizando el impacto en el tamaño del handshake. |
| orchestration | ACME protocol | Protocolo utilizado por los suscriptores para obtener certificados, que requerirá modificaciones para soportar la emisión de MTCs. |
| observability | Certificate Transparency logs | Infraestructura existente basada en Merkle Trees que MTCs subsume y mejora, integrando la transparencia directamente en la emisión. |
Trade-offs
Ganancias
- ▲ Reducción del tamaño del handshake TLS
- ▲▲ Integración de autenticación post-cuántica
- ▲ Transparencia de certificados inherente
Costes
- ▲ Complejidad de la infraestructura de emisión de CA
- ▲ Requerimientos de actualización de clientes (navegadores, ACME clients)
- △ Necesidad de mantener landmarks actualizados en clientes
Fundamentos Teóricos
El concepto de Merkle Tree Certificates se basa directamente en la estructura de datos fundamental del Merkle Tree, propuesto por Ralph Merkle en 1979. Los Merkle Trees, también conocidos como hash trees, son árboles binarios donde cada nodo hoja contiene el hash de un bloque de datos, y cada nodo no hoja contiene el hash de la concatenación de los hashes de sus nodos hijos. La raíz del árbol, o Merkle Root, es un hash único que resume la integridad de todos los datos subyacentes.
Este principio se utiliza para verificar la integridad y autenticidad de grandes conjuntos de datos de manera eficiente. En el contexto de MTCs, permite que una única firma sobre el Merkle Root autentique un lote completo de certificados. La prueba de inclusión para un certificado específico dentro del árbol requiere solo un número logarítmico de hashes (respecto al número total de certificados en el lote) para ser verificada contra el Merkle Root. Esto es crucial para reducir el tamaño de los datos transmitidos durante el handshake TLS, ya que no es necesario enviar todas las firmas individuales de la CA, sino solo la prueba de que un certificado pertenece a un árbol cuya raíz ha sido firmada. La aplicación de Merkle Trees en este contexto es una extensión directa de su uso en sistemas como Certificate Transparency logs y blockchain, donde la verificación eficiente de la pertenencia y la integridad de los datos es primordial.