0Pricing
Cryptology Academy · Lección

Conceptos de MAC y ataques de extensión de longitud

Explique por qué añadir un prefijo secreto no es seguro frente a la extensión de longitud.

Conceptos de MAC y ataques de extensión de longitud 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.

Introducción

Los códigos de autenticación de mensajes (MAC) proporcionan integridad y autenticidad mediante una clave secreta compartida. En esta lección comprenderemos los MAC, sus propiedades y una vulnerabilidad crítica de los hashes con clave ingenuos.

¿Qué es un MAC?

Un MAC es un código de autenticación corto calculado a partir de un mensaje y una clave secreta. El receptor, que tiene la misma clave, vuelve a calcular el MAC y lo verifica. Esto evita la falsificación sin conocer la clave.

MAC frente a hash y firma

Hash: sin clave, público, proporciona únicamente integridad. MAC: secreto compartido, simétrico, proporciona integridad y autenticidad. Firma digital: clave privada, asimétrica, añade no repudio. Solo las firmas proporcionan no repudio.

Imposibilidad de falsificación

Un MAC seguro debe ser existencialmente imposible de falsificar bajo un ataque de mensajes elegidos (EUF-CMA): un atacante que puede consultar el MAC para cualquier mensaje no puede falsificar un MAC válido para un mensaje nuevo que no se haya consultado anteriormente.

Hash con clave ingenuo: MAC de prefijo

Intento ingenuo: MAC(K, M) = H(K || M). Parece seguro, pero es vulnerable a ataques de extensión de longitud en funciones hash Merkle-Damgård (SHA-256, SHA-512, MD5).

Ataque de extensión de longitud

El estado de SHA-256 después de aplicar el hash a M es simplemente H(M). Dado H(K || M), un atacante puede calcular H(K || M || padding || extra) para cualquier valor de «extra» sin conocer K. Así puede ampliar el mensaje para añadir nuevos datos.

Impacto práctico del ataque

Flickr (2009): la API utilizaba H(K || params). Los atacantes añadían &api_sig=forgery a las solicitudes autenticadas. Como resultado, llamadas no autorizadas a la API parecían válidas. Fue un ataque de extensión de longitud puro.

El MAC de sufijo también falla

MAC(K, M) = H(M || K): vulnerable a ataques fuera de línea. El atacante calcula H(message) sin K y después utiliza un ataque de cumpleaños para encontrar M' con el mismo hash. La clave se añade después de la colisión.

Por qué HMAC soluciona este problema

HMAC aplica dos veces el hash con diferentes bloques de relleno de clave: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) El hash interno produce H(ipad_key || M). El hash externo lo envuelve con opad_key. La extensión de longitud falla porque el atacante no puede establecer el estado inicial del hash externo.

SHA-3 y la extensión de longitud

SHA-3 utiliza la construcción esponja, que es inherentemente inmune a los ataques de extensión de longitud. H_SHA3(K || M) es una construcción MAC simple válida. SHA-2 no lo es: utilice siempre HMAC con SHA-2.

Ataques de temporización en la verificación de MAC

La comparación de MAC con salida anticipada (==) filtra información temporal. El primer byte «correcto» tarda ligeramente más que el primer byte «incorrecto». Después de 256 consultas se encuentra el byte 1. Tras otras 256, el byte 2. El MAC completo se recupera en 16×256 consultas.

Comprobación rápida

¿Por qué es inseguro MAC(K, M) = SHA256(K || M)?

Resumen

Los ataques de extensión de longitud muestran por qué fallan los hashes con clave ingenuos. A continuación estudiaremos la construcción de HMAC y su demostración de seguridad.

Preguntas frecuentes

¿La lección «Conceptos de MAC y ataques de extensión de longitud» es gratis?

Sí — el texto completo de «Conceptos de MAC y ataques de extensión de longitud» 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 «Conceptos de MAC y ataques de extensión de longitud»?

Explique por qué añadir un prefijo secreto no es seguro frente a la extensión de longitud. 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 «Conceptos de MAC y ataques de extensión de longitud»?

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. Conceptos de MAC y ataques de extensión de longitud
  2. Construcción de HMAC y demostración de seguridad
  3. HMAC en API: firma de solicitudes
  4. CMAC y Poly1305: MAC basados en cifradores de bloque
← Volver a Cryptology Academy