1. O Que E HMAC
HMAC (Hash-based Message Authentication Code) e um mecanismo criptografico que combina uma funcao hash com uma chave secreta para produzir um codigo de autenticacao de mensagem. Padronizado pela RFC 2104 e amplamente adotado em protocolos de seguranca como TLS, SSH, JWT e OAuth, o HMAC e hoje a solucao padrao para garantir integridade e autenticidade em comunicacoes digitais.
Diferente de um simples hash MD5 ou SHA256, que qualquer pessoa pode calcular a partir da mensagem original, o HMAC exige posse da chave secreta para ser gerado ou verificado. Isso transforma o hash em uma assinatura que prova tanto a integridade do conteudo quanto a identidade do remetente.
2. Como o HMAC Funciona
O algoritmo HMAC opera em duas rodadas de hash. Primeiro, a chave secreta e combinada com um valor de padding interno (ipad) e concatenada com a mensagem; essa concatenacao passa pela funcao hash escolhida. Em seguida, a chave combinada com um padding externo (opad) e concatenada com o hash da primeira rodada e submetida a hash novamente. O resultado final e o HMAC.
Essa estrutura de dupla rodada protege contra ataques de extensao de comprimento (length-extension attacks), que afetam hashes simples como SHA256 usado diretamente. A seguranca do HMAC depende da forca da funcao hash subjacente e do sigilo da chave — desde que a chave permaneca secreta, o HMAC e seguro mesmo que a mensagem seja publica.
"HMAC-SHA256 e o algoritmo recomendado para a maioria dos casos modernos: equilibra seguranca, performance e compatibilidade universal."
3. Comparativo de Algoritmos
A escolha do algoritmo hash subjacente afeta diretamente o nivel de seguranca e o tamanho da saida do HMAC:
- HMAC-SHA256: 256 bits de saida, padrao moderno recomendado para APIs, webhooks e JWT HS256.
- HMAC-SHA512: 512 bits, maxima seguranca para ambientes de alta criticidade e JWT HS512.
- HMAC-SHA384: 384 bits, alternativa intermediaria para JWT HS384.
- HMAC-SHA1: 160 bits, considerado legado — ainda em uso por compatibilidade, mas evite em novas implementacoes.
- HMAC-MD5: 128 bits, inseguro — use apenas para checksums nao criticos, nunca para autenticacao.
4. Casos de Uso Reais
HMAC esta presente em praticamente todo sistema web moderno que precisa autenticar comunicacoes entre partes:
- GitHub Webhooks: o header
X-Hub-Signature-256contem HMAC-SHA256 do payload, permitindo que seu servidor verifique que o evento veio do GitHub. - Stripe: usa HMAC-SHA256 para assinar eventos de webhook, garantindo que pagamentos e eventos nao sejam forjados.
- AWS Signature v4: requisicoes para a AWS sao assinadas com HMAC-SHA256 para autenticacao de chamadas de API.
- JWT: tokens com algoritmos HS256, HS384 e HS512 usam HMAC para assinar o payload, garantindo que nao foram adulterados.
Esta ferramenta permite gerar e verificar HMACs diretamente no navegador, sem enviar sua chave secreta ou mensagem a qualquer servidor — seguro para uso em desenvolvimento, testes e depuracao.