Saltar al contenido
uencoder

HMAC

HMAC (código de autenticación de mensajes basado en hash) es un MAC que combina una función hash con una clave secreta, proporcionando integridad y autenticidad.

Propósito

Construye un MAC seguro a partir de una función hash existente, sin necesidad de diseño dedicado.

Mecanismo

HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m)), donde ipad/opad son rellenos fijos. Las claves más largas que el bloque del hash se hashean primero. Debe usarse con un hash seguro (SHA-256); aunque MD5/SHA-1 están rotos como hashes, HMAC-MD5/SHA1 siguen siendo comparativamente seguros.

Casos de uso

  • Firmado de peticiones API (p. ej. AWS SigV4)
  • Firmado JWT HS256
  • MAC de registros TLS
  • Protección de cookies contra manipulación

Ejemplos

  • entrada
    key + message
    Output
    HMAC-SHA256 tag

    32-byte authentication tag

Errores comunes

Using the bare hash H(key||msg) as a MAC (vulnerable to length-extension attacks)
Always use the HMAC construction

Términos relacionados

Herramientas relacionadas

References