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.