Cryptology Academy · Lección

CMAC y Poly1305: MAC basados en cifradores de bloque

Compare CMAC y Poly1305 como alternativas a los MAC basados en hash.

Lección 4 de 413 pasos

CMAC y Poly1305: MAC basados en cifradores de bloque es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 4 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.

¿Qué es un MAC?

Un código de autenticación de mensajes (MAC) recibe una clave y un mensaje, y produce una etiqueta. La etiqueta demuestra que el mensaje no ha sido manipulado y que lo produjo alguien que posee la clave.

HMAC frente a los MAC basados en cifradores de bloque

HMAC utiliza una función hash como primitiva. CMAC y Poly1305, en cambio, utilizan cifradores de bloque o aritmética polinómica. Los MAC basados en cifradores de bloque evitan depender de una función hash y se integran de forma natural con el hardware AES.

Construcción de CMAC

CMAC (MAC basado en cifrado) está definido en NIST SP 800-38B. Rellena el mensaje hasta el límite de un bloque, deriva dos subclaves K1/K2 a partir del cifrador, les aplica XOR en el bloque final y, después, ejecuta el modo CBC sin almacenar el texto cifrado intermedio.

Derivación de subclaves de CMAC

K1 = AES_K(0^128 desplazado a la izquierda 1 bit, con XOR de una constante si el MSB era 1. K2 = K1 desplazada de forma similar. Estas subclaves vinculan el último bloque parcial de forma segura para evitar la extensión de longitud.

Descripción general de Poly1305

Poly1305 es un autenticador de un solo uso diseñado por Daniel Bernstein. Evalúa un polinomio sobre el primo 2^130-5, tratando el mensaje como coeficientes del polinomio y utilizando un par de claves de un solo uso (r, s).

Matemáticas de Poly1305

Tag = (suma de (m_i * r^i) mod 2^130-5) + s mod 2^128. La clave r se limita a 22 bits específicos para evitar ataques de temporización. s es una máscara de suma de un solo uso de 16 bytes.

ChaCha20-Poly1305

Poly1305 casi siempre se combina con ChaCha20. ChaCha20 genera el par de un solo uso (r, s) a partir del flujo de claves del cifrador de flujo, lo que hace que el esquema AEAD combinado sea demostrablemente seguro y extremadamente rápido en CPU ARM para dispositivos móviles.

AES-GCM frente a AES-CMAC

AES-GCM autentica mediante GHASH, un MAC polinómico sobre GF(2^128). AES-CMAC es más sencillo y se utiliza en IEEE 802.11i (WPA2) y en las suites de cifrado de TLS 1.2. GCM proporciona cifrado y autenticación en una sola pasada.

Comparación de rendimiento

Poly1305 en ARM Cortex-A alcanza aproximadamente 1 ciclo por byte mediante intrínsecos NEON. AES-CMAC requiere una operación de bloque AES por cada bloque de 16 bytes. Para datos masivos, Poly1305 supera a CMAC en hardware sin AES-NI.

Propiedades de seguridad

CMAC es imposible de falsificar existencialmente bajo un ataque de mensajes elegidos, suponiendo que AES sea una permutación pseudoaleatoria. Poly1305 es seguro desde el punto de vista teórico de la información si se utiliza una clave de un solo uso verdaderamente aleatoria; la probabilidad de falsificación es como máximo 8*ceil(L/16)/2^106.

Casos de uso

CMAC: WPA2, S/MIME e integridad de sistemas de archivos. Poly1305: TLS 1.3 mediante ChaCha20-Poly1305, VPN WireGuard, Signal Protocol y Noise Protocol Framework. Ambos están ampliamente implementados en sistemas modernos de alta seguridad.

Comprobación rápida

¿Qué MAC se utiliza en el AEAD ChaCha20-Poly1305?

Resumen

Ha aprendido la construcción de CMAC basada en CBC y la aritmética polinómica de Poly1305. Ambos son MAC seguros y de tiempo constante que se utilizan en protocolos reales. A continuación: TLS/HTTPS y la forma en que se combinan todas estas primitivas.

Gratis para empezar

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 «CMAC y Poly1305: MAC basados en cifradores de bloque» es gratis?

Sí — el texto completo de «CMAC y Poly1305: MAC basados en cifradores de bloque» 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 «CMAC y Poly1305: MAC basados en cifradores de bloque»?

Compare CMAC y Poly1305 como alternativas a los MAC basados en hash. 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 4 de 4.

¿Cuánto tiempo toma la lección «CMAC y Poly1305: MAC basados en cifradores de bloque»?

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