HMAC é uma técnica que combina uma função de hash, como SHA-256, com uma chave secreta para gerar um código que prova a autenticidade e a integridade de uma mensagem. Só quem conhece a chave consegue produzir ou conferir esse código, então ele indica que a mensagem veio de quem deveria e não foi adulterada.
Por que um hash simples não basta
Um hash comum verifica integridade, mas qualquer um pode recalculá-lo, então não prova quem gerou a mensagem. Se um atacante altera o conteúdo, ele também refaz o hash e ninguém percebe. O HMAC resolve isso misturando uma chave secreta ao cálculo do hash. Sem a chave, é inviável produzir o código correto para um conteúdo modificado. Assim o HMAC junta as duas garantias: a mensagem chegou íntegra e foi assinada por quem tem a chave, algo que o hash puro não oferece.
Onde o HMAC é usado
O HMAC aparece em APIs que assinam requisições, em webhooks que precisam provar a origem, em tokens e em cookies de sessão. É a base da assinatura de um JWT no modo HS256, por exemplo. Como usa uma chave compartilhada entre as duas pontas, é chamado de criptografia simétrica de autenticação. Não confunda com sigilo: o HMAC não esconde o conteúdo da mensagem, apenas garante que ela é autêntica. Para proteger o conteúdo, é preciso cifrar os dados à parte.
