Skip to main content
CheckTown
Dev Tools

HMAC: como funciona a autenticacao baseada em hash

Publicado 6 min de leitura
Neste artigo

O que e HMAC?

HMAC (Hash-based Message Authentication Code) e um mecanismo criptografico que combina uma chave secreta com uma funcao hash para produzir um codigo de autenticacao de mensagem. Ao contrario de um hash simples, o HMAC prova tanto a integridade quanto a autenticidade de uma mensagem.

O HMAC e definido na RFC 2104 e e usado em TLS, IPsec, assinaturas JWT e verificacao de webhooks de API. O algoritmo e resistente a ataques de extensao de comprimento que afetam funcoes hash simples.

Como funciona o HMAC

O HMAC usa uma abordagem de hash em duas passagens com preenchimento interno e externo. A chave secreta e completada ao tamanho do bloco da funcao hash e combinada com duas constantes diferentes.

  • Hash interno — a chave e combinada com ipad (0x36), concatenada com a mensagem e hashada: H(K XOR ipad || mensagem)
  • Hash externo — a chave e combinada com opad (0x5C), concatenada com o resultado do hash interno: H(K XOR opad || inner_hash)
  • Resultado final — o resultado do hash externo e o valor HMAC, representado como uma string hexadecimal

Esta construcao de hash duplo previne ataques de extensao de comprimento. Mesmo que um atacante conheca H(mensagem), nao pode calcular HMAC(chave, mensagem || dados_extras) sem a chave secreta.

Algoritmos HMAC

A construcao HMAC funciona com qualquer funcao hash criptografica. As escolhas mais comuns sao SHA-256, SHA-384 e SHA-512.

  • HMAC-SHA256 — saida de 256 bits, a variante mais usada para autenticacao de API, assinaturas JWT HS256 e verificacao de webhooks. Tamanho de chave recomendado: 32 bytes
  • HMAC-SHA384 — saida de 384 bits, usado em suites de cifra TLS 1.3 e aplicacoes de alta seguranca. Tamanho de chave recomendado: 48 bytes
  • HMAC-SHA512 — saida de 512 bits, preferido quando a margem maxima de seguranca e necessaria. Tamanho de chave recomendado: 64 bytes

A chave deve ter pelo menos o mesmo comprimento que a saida do hash. Para a maioria das aplicacoes, HMAC-SHA256 com uma chave aleatoria de 32 bytes oferece excelente seguranca.

Experimente gratuitamente — sem cadastro

Gerar assinaturas HMAC →

Casos de uso comuns

O HMAC e a base de muitos protocolos de seguranca e esquemas de autenticacao de API.

  • Autenticacao de API — servicos como Stripe, GitHub e AWS usam assinaturas HMAC para verificar cargas de webhooks
  • Assinatura JWT — os algoritmos HS256, HS384 e HS512 usam HMAC para assinar a carga do token
  • Integridade de mensagens — o HMAC verifica que os dados nao foram alterados durante a transmissao
  • OAuth 1.0a — o metodo de assinatura HMAC-SHA1 assina os parametros de solicitacao OAuth para comprovar autorizacao

HMAC vs outros metodos de autenticacao

O HMAC e uma das varias abordagens para autenticacao de mensagens. Cada uma tem diferentes compromissos em seguranca, desempenho e gestao de chaves.

  • HMAC vs assinaturas digitais — HMAC usa uma chave secreta compartilhada (simetrica), assinaturas digitais usam pares de chaves (assimetrica). HMAC e mais rapido, mas exige compartilhar o segredo.
  • HMAC vs chaves de API — chaves de API sao tokens bearer simples. HMAC assina o conteudo da solicitacao, impedindo a falsificacao de novas solicitacoes.
  • HMAC vs hash simples — o hash prova integridade, mas nao autenticidade. HMAC requer a chave secreta.

Perguntas frequentes

Qual e o comprimento ideal da chave HMAC?

A chave deve ter pelo menos o mesmo comprimento que a saida do hash — 32 bytes para HMAC-SHA256, 48 para HMAC-SHA384, 64 para HMAC-SHA512. Chaves mais curtas enfraquecem a seguranca.

HMAC e o mesmo que criptografia?

Nao. HMAC fornece autenticacao e integridade, nao confidencialidade. A mensagem permanece legivel. Use criptografia (AES, ChaCha20) alem do HMAC para ocultar o conteudo.

Posso usar HMAC no navegador com a Web Crypto API?

Sim. A Web Crypto API suporta HMAC nativamente via crypto.subtle.importKey() e crypto.subtle.sign(). Voce pode gerar assinaturas HMAC inteiramente no lado do cliente.

Ferramentas relacionadas