Saltar al contenido
ecdsa.com

HMAC

El código de autenticación de mensajes basado en hash con clave del RFC 2104 y FIPS 198-1, calculado como H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)), que demuestra la integridad y el origen ante cualquiera que comparta la clave secreta.
También se escribeHMAC-SHA256keyed-hash message authentication codeHMAC-SHA1

HMAC funciona con cualquier hash (HMAC-SHA256 da una etiqueta de 32 bytes) y sigue siendo seguro incluso con hashes cuya resistencia a colisiones está rota, y por eso HMAC-SHA1 todavía aparece en TOTP. Las claves más largas que el tamaño de bloque del hash (64 bytes para SHA-256) primero pasan por el hash, y las más cortas se rellenan con ceros; una clave debería tener al menos tantos bits de entropía como el nivel de seguridad buscado. El RFC 7518 §3.2 exige claves HS256 de al menos 256 bits.

Usos: HS256/HS384/HS512 de JWT, firmas de webhooks (por ejemplo, X-Hub-Signature-256 de GitHub y Stripe-Signature de Stripe), la firma de solicitudes de AWS Signature Version 4, el funcionamiento interno de HKDF y PBKDF2, los MAC de registro de TLS 1.2 y los códigos TOTP/HOTP. Compara las etiquetas con una función de tiempo constante.

Un HMAC no es una firma: todos los verificadores tienen la misma clave y podrían haber generado la etiqueta, así que no aporta no repudio y no sirve cuando los verificadores no deben poder emitir tokens. La calculadora de HMAC calcula y comprueba etiquetas localmente.

Estándares y referencias

Todos los términos