O que é HMAC?

HMAC (Hash-based Message Authentication Code) é uma técnica criptográfica que combina uma chave secreta com uma função de hash para produzir um código de autenticação único. Diferentemente da simples função de hash, o HMAC garante tanto a integridade dos dados quanto a autenticidade-verificando se uma mensagem não foi adulterada e confirmando a identidade do remetente.

O HMAC funciona processando a mensagem através de uma função de hash (como SHA-256) duas vezes, misturada com a chave secreta de uma maneira específica. Essa abordagem de hash duplo o torna resistente a ataques de extensão de comprimento que afetam funções de hash simples.

Como funciona o HMAC?

O algoritmo HMAC segue estas etapas:

  1. Preparação da chave: Se a chave secreta for mais longa que o tamanho do bloco de hash, ela é primeiro transformada em hash. Se for mais curta, é preenchida com zeros.
  2. Hash interno: A chave é combinada com XOR com uma constante de preenchimento interno (ipad), depois concatenada com a mensagem e transformada em hash.
  3. Hash externo: A chave é combinada com XOR com uma constante de preenchimento externo (opad), depois concatenada com o resultado do hash interno e transformada em hash novamente.

A fórmula é: HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))

Esta construção garante que, mesmo se um invasor conhecer o hash de uma mensagem, não poderá forjar um HMAC válido sem conhecer a chave secreta.

Por que usar HMAC em vez de hash comum?

Recurso Hash Comum HMAC
Integridade de dados ✓ ✓
Autenticação ✗ ✓
Requer chave secreta ✗ ✓
Proteção contra extensão de comprimento ✗ ✓
Adequado para autenticação de API ✗ ✓

Hashes comuns (MD5, SHA-256) apenas verificam se os dados não foram alterados. O HMAC, adicionalmente, comprova que a mensagem veio de alguém que conhece a chave secreta, tornando-o essencial para comunicações seguras.

Compreendendo algoritmos de hash

Algoritmo Tamanho de Saída Nível de Segurança Desempenho Recomendação
SHA-1 160 bits (40 caracteres hex) Fraco Mais rápido Apenas sistemas legados
SHA-256 256 bits (64 caracteres hex) Forte Rápido Padrão recomendado
SHA-384 384 bits (96 caracteres hex) Muito Forte Moderado Necessidades de alta segurança
SHA-512 512 bits (128 caracteres hex) Muito Forte Moderado Segurança máxima

SHA-256 oferece o melhor equilíbrio entre segurança e desempenho para a maioria das aplicações. SHA-1 é incluído para compatibilidade com sistemas legados, mas deve ser evitado em novas implementações devido a vulnerabilidades conhecidas.

Comparação de formato de saída

Hexadecimal: Usa caracteres 0-9 e a-f. Produz uma string mais longa, mas é mais fácil de ler e depurar. Comum em APIs e registros.

Base64: Usa caracteres A-Z, a-z, 0-9, +, e /. Produz uma string mais curta (aproximadamente 33% mais curta que hex). Comum em tokens JWT e transmissão compacta de dados.

Exemplo para o mesmo HMAC:

  • Hex: 5d5d139563c95b5967b9bd9a8c9b8c8d8e8f9a9b9c9d9e9f0a0b0c0d0e0f1011
  • Base64: XV0TlWPJW1lnub2ajJuMjY6Pmpm9nZ6fCgsMDQ4PEQ==

Descrição da ferramenta

Este Gerador de HMAC cria códigos de autenticação criptográfica usando a Web Crypto API para computação segura e local. Insira sua mensagem e chave secreta para gerar instantaneamente assinaturas HMAC com sua escolha de algoritmo de hash (SHA-1, SHA-256, SHA-384 ou SHA-512) e formato de saída (hexadecimal ou base64).

Todo o processamento acontece inteiramente no seu navegador-suas chaves secretas e mensagens nunca são transmitidas para qualquer servidor, garantindo total privacidade e segurança.

[Restante do documento segue o mesmo padrão de tradução]