Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt
Comprenda el argumento criptográfico para combinar cifrado y autenticación en el orden correcto.
Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 1 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.
Tres órdenes de composición
Al combinar el cifrado y un MAC, existen tres órdenes posibles: Encrypt-then-MAC (EtM), MAC-then-Encrypt (MtE) y Encrypt-and-MAC (E&M). Cada uno tiene propiedades de seguridad fundamentalmente distintas, y solo uno es demostrablemente seguro en todos los contextos.
Definición de Encrypt-then-MAC
En Encrypt-then-MAC, el texto plano se cifra primero para producir el texto cifrado y, a continuación, se calcula el MAC sobre ese texto cifrado. El receptor puede verificar el MAC antes de intentar descifrar nada, por lo que un mensaje manipulado se rechaza de inmediato sin revelar información.
Definición de MAC-then-Encrypt
En MAC-then-Encrypt, el MAC se calcula sobre el texto plano y después se cifran juntos el texto plano y el MAC. El receptor debe descifrar el mensaje antes de poder verificar el MAC, lo que abre la puerta a ataques de oráculo de relleno y de oráculo de descifrado.
Fallo de SSL 3.0 y TLS 1.0
SSL 3.0 y TLS 1.0 utilizaban el orden MAC-then-Encrypt para cifradores de bloque en modo CBC. Este fallo de diseño fue aprovechado por el ataque BEAST en 2011 y el ataque POODLE en 2014, que se basaban en el oráculo existente cuando el descifrado se realiza antes de verificar el MAC.
Demostración de Bellare-Namprempre
En 2000, Bellare y Namprempre demostraron formalmente que, de los tres órdenes de composición, solo Encrypt-then-MAC alcanza seguridad IND-CCA2 (seguridad frente a textos cifrados elegidos) para todas las combinaciones de primitivas de cifrado y MAC seguras. MtE y E&M pueden fallar en determinadas composiciones.
Encrypt-and-MAC en SSH
SSH utiliza Encrypt-and-MAC: el MAC se calcula sobre el texto plano y se envía junto al texto cifrado en forma de texto plano. Aunque SSH no ha sufrido los mismos exploits que MtE en SSL/TLS, esta composición también presenta fallos teóricos, ya que puede filtrar información del texto plano mediante el MAC no cifrado.
AEAD como abstracción segura
Authenticated Encryption with Associated Data (AEAD) es la abstracción moderna que resuelve por diseño el problema de la composición. AEAD integra el cifrado y la autenticación en una sola primitiva, lo que garantiza que siempre se combinen correctamente sin exigir al desarrollador que elija un orden de composición.
AES-GCM: el estándar AEAD
AES-GCM (Galois/Counter Mode) es el conjunto de cifrado AEAD más utilizado. Proporciona cifrado autenticado mediante una combinación de cifrado en modo CTR y autenticación GHASH, y cuenta con aceleración por hardware mediante las instrucciones AES-NI y CLMUL en las CPU modernas.
TLS 1.3 impone exclusivamente AEAD
TLS 1.3 rompió decisivamente con el pasado al eliminar todos los conjuntos de cifrado que no fueran AEAD. Cada conjunto de cifrado de TLS 1.3 utiliza AEAD, lo que elimina clases enteras de vulnerabilidades causadas por una composición manual incorrecta de primitivas de cifrado y MAC, que afectaron a versiones anteriores de TLS.
No componga primitivas manualmente
La principal lección de décadas de ataques criptográficos es que componer manualmente primitivas de cifrado y MAC es propenso a errores, incluso para los expertos. Las bibliotecas criptográficas modernas ofrecen interfaces AEAD específicamente para evitar que los desarrolladores cometan errores de composición que provoquen vulnerabilidades reales.
Orientación práctica
Al crear sistemas hoy en día, utilice siempre una primitiva AEAD como AES-GCM o ChaCha20-Poly1305. Si debe interoperar con sistemas heredados que utilizan MAC y cifrado por separado, asegúrese de emplear el orden Encrypt-then-MAC y nunca MtE ni E&M.
Comprobación de EtM frente a MtE
¿Qué afirmación describe correctamente la diferencia de seguridad entre Encrypt-then-MAC y MAC-then-Encrypt?
Resumen de la lección: el orden de composición importa
EtM es el único orden de composición demostrablemente seguro para primitivas de cifrado y MAC independientes. TLS 1.3 elimina por completo el problema al exigir conjuntos de cifrado exclusivamente AEAD. En caso de duda, utilice una primitiva AEAD como AES-GCM o ChaCha20-Poly1305 y deje que la biblioteca gestione correctamente la composición.
Aprende Cryptology Academy con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 67
- Lecciones
- 261
Preguntas frecuentes
¿La lección «Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt» es gratis?
Sí — el texto completo de «Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt» 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 «Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt»?
Comprenda el argumento criptográfico para combinar cifrado y autenticación en el orden correcto. 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 1 de 4.
¿Cuánto tiempo toma la lección «Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt»?
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
- Por qué Encrypt-Then-MAC supera a MAC-Then-Encrypt
- Modo SIV: AEAD resistente al uso indebido de nonces
- AEGIS: cifrado autenticado de alta velocidad
- Selección de AEAD para sistemas en producción