0Pricing
Cryptology Academy · Lección

Construcción de HMAC y demostración de seguridad

Recorra la construcción ipad/opad y sus propiedades de seguridad.

Construcción de HMAC y demostración de seguridad es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 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.

Bienvenida

HMAC es la construcción estándar de un MAC con clave. Su diseño de doble hash evita los ataques de extensión de longitud y cuenta con una demostración formal que reduce la seguridad de HMAC a la de la función hash subyacente.

Construcción de HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Donde: - K' = K rellenada con ceros hasta alcanzar el tamaño de bloque B (o H(K) si |K|>B) - ipad = 0x36 repetido B veces - opad = 0x5C repetido B veces

¿Por qué ipad y opad?

ipad (0x36) y opad (0x5C) son constantes diferentes que garantizan que K' ⊕ ipad ≠ K' ⊕ opad. En la práctica, crean dos claves pseudoaleatorias diferentes a partir de K, que se utilizan para el hash interno y el externo.

HMAC paso a paso

Para K=secret, M=message, H=SHA256: 1. K' = K rellenada hasta 64 bytes 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC en Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Por qué falla la extensión de longitud en HMAC

Dado HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) El atacante conoce SHA256(inner_key || M) = inner_hash. Pero no puede extenderlo: el hash externo recibe (outer_key || inner_hash) como entrada, no solo inner_hash. No conoce outer_key.

Demostración de seguridad de HMAC (Bellare)

Bellare (1996) demostró que, si la función hash H es una función pseudoaleatoria (PRF), entonces HMAC también es una PRF. En la práctica: HMAC-SHA256 es tan seguro como SHA-256 para las propiedades de seguridad para las que está diseñado.

Longitud de la clave para HMAC

La clave de HMAC debe tener: - Como mínimo L bytes (la longitud de salida del hash) - Recomendación: exactamente L bytes de datos aleatorios - Si la clave > block_size: se aplica un hash a la clave hasta obtener block_size - Use os.urandom(32) para las claves de HMAC-SHA256

Truncamiento de HMAC

La salida de HMAC puede truncarse hasta la mitad de su longitud sin una pérdida significativa de seguridad. TOTP/HOTP truncan la salida a 4 bytes. Los MAC de TLS también se truncan. Nunca trunque por debajo de 80 bits (10 bytes).

HMAC en distintos contextos

HMAC-SHA256 se utiliza en: - TOTP: códigos de autenticación (truncados a 6 dígitos) - TLS 1.2: MAC de sesión (no son necesarios en TLS 1.3 con AEAD) - JWT: firma HS256 (simétrica) - Firma de solicitudes de API: webhooks de GitHub, AWS SigV4

HKDF: derivación de claves basada en HMAC

HKDF(IKM, salt, info, L) utiliza HMAC dos veces: 1. Extracción: PRK = HMAC-SHA256(salt, IKM) 2. Expansión: OKM = HMAC-SHA256(PRK, info || counter) Se utiliza en la programación de claves de TLS 1.3, Signal y WireGuard para derivar claves.

Comprobación rápida

¿Cuál es la finalidad de opad (0x5C repetido) en HMAC?

Resumen

Ya comprende la construcción y la demostración de HMAC. A continuación, aplicaremos HMAC a la firma de solicitudes de API y veremos cómo evitar los ataques de repetición.

Preguntas frecuentes

¿La lección «Construcción de HMAC y demostración de seguridad» es gratis?

Sí — el texto completo de «Construcción de HMAC y demostración de seguridad» 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 «Construcción de HMAC y demostración de seguridad»?

Recorra la construcción ipad/opad y sus propiedades de seguridad. 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 2 de 4.

¿Cuánto tiempo toma la lección «Construcción de HMAC y demostración de seguridad»?

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