🍋
Menu
Security

HMAC

HMAC (Código de Autenticação de Mensagem Baseado em Hash)

Um código de autenticação de mensagem que combina uma função hash criptográfica com uma chave secreta, verificando tanto a integridade dos dados quanto a autenticidade do remetente em uma única operação.

Detalhe técnico

HMAC é definido no RFC 2104 como HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)), onde H é uma função hash (SHA-256, SHA-384), K' é a chave com padding, opad é 0x5c repetido e ipad é 0x36 repetido. A construção de hash duplo previne ataques de extensão de comprimento que afetam H(K || m) simples. HMAC-SHA256 é usado em JWTs (JSON Web Tokens), webhooks de API (Stripe, GitHub), assinaturas AWS v4 e TLS PRF. A resistência à falsificação depende do segredo da chave — comprometimento da chave invalida toda verificação. A comparação de tempo constante (timing-safe) do HMAC é essencial para prevenir ataques de temporização.

Exemplo

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

Ferramentas relacionadas

Termos relacionados