HMAC
HMAC é um código de autenticação de mensagem com chave construído a partir de uma função hash criptográfica.
Definição
HMAC significa Hash-based Message Authentication Code. Ele combina uma chave secreta com uma função hash criptográfica para produzir uma etiqueta de autenticação de tamanho fixo para uma mensagem.
Um verificador com a mesma chave secreta recalcula a etiqueta sobre os bytes exatos da mensagem e a compara com a etiqueta recebida. Uma correspondência mostra que a mensagem não foi alterada e que a etiqueta foi criada por alguém que conhecia a chave compartilhada.
Como funciona
HMAC aplica hash à chave e à mensagem em duas etapas aninhadas com constantes de preenchimento diferentes. Essa construção é mais segura do que simplesmente calcular hash(key || message), que pode ser vulnerável com algumas funções hash.
A função hash escolhida determina o tamanho da etiqueta: HMAC-SHA256 produz 32 bytes, geralmente escritos como 64 caracteres hexadecimais. HMAC-SHA512 e HMAC-SHA384 produzem etiquetas maiores, enquanto HMAC-SHA1 permanece principalmente por compatibilidade.
Uso e limites
HMAC é usado em assinaturas de API, webhooks, dados de sessão, JWT HS256 e mensagens de protocolo quando os dois lados já compartilham um segredo. Ele fornece integridade e autenticação, não confidencialidade: a mensagem em si não é ocultada.
Use uma chave secreta aleatória, preserve os bytes exatos assinados e compare etiquetas com comparação em tempo constante no código da aplicação. Para verificação pública sem segredo compartilhado, use uma assinatura digital.
Não. HMAC autentica uma mensagem, mas não a oculta. Use criptografia separadamente quando a mensagem precisar ser confidencial.
Um hash comum não tem chave secreta, então qualquer pessoa pode alterar a mensagem e calcular um novo hash. HMAC exige o segredo compartilhado para criar uma etiqueta válida.
Não. A verificação recalcula a etiqueta a partir da mensagem original e da chave secreta; ela não recupera esses valores a partir da etiqueta.