O que é HMAC?
HMAC (Hash-Based Message Authentication Code) é um mecanismo criptográfico que combina uma função hash criptográfica com uma chave secreta para produzir um código de autenticação de tamanho fixo, permitindo que o destinatário verifique tanto a integridade quanto a autenticidade de uma mensagem.
Também conhecido como: Hash-Based Message Authentication Code, HMAC-SHA256
Uma função hash simples como o SHA-256 pode verificar a integridade dos dados: se o hash coincide, os dados não foram alterados. Mas um hash por si só não consegue verificar a autenticidade, porque qualquer pessoa pode calcular um hash. O HMAC resolve isso incorporando uma chave secreta ao processo de hashing. Apenas as partes que possuem a chave conseguem gerar ou verificar o valor HMAC correto, fornecendo integridade e autenticação em uma única operação.
A construção HMAC, definida no RFC 2104, aplica a função hash duas vezes com a chave misturada em etapas específicas. Essa estrutura de duplo passe protege contra os ataques de extensão de comprimento e outras vulnerabilidades que surgiriam de concatenar ingenuamente uma chave com a mensagem antes do hashing. O HMAC-SHA256 (HMAC usando o SHA-256 como hash subjacente) é a variante mais comum e produz um código de autenticação de 256 bits.
O HMAC é usado de forma extensiva nos protocolos de segurança: as assinaturas JWT, a autenticação de API, a verificação de webhooks, a proteção de registros TLS e o OAuth dependem todos do HMAC. Sua eficiência o torna prático para autenticar dados de alto volume como pacotes de rede ou requisições de API, em que os esquemas de assinatura assimétrica introduziriam uma latência inaceitável.
Sign a message with HMAC-SHA256
Edit either the key or the message and watch the signature change completely — the avalanche effect that makes HMAC forgery-resistant.
computing…
A verifier with the same key recomputes the HMAC over the received message; if it matches, the message was authored by someone who knows the key andwasn't modified in transit. Vaulted uses this exact construction to issue tamper-proof status-page tokens.
Como o Vaulted usa HMAC
A Vaulted usa HMAC-SHA256 para gerar tokens seguros para as páginas de status dos segredos. Quando um segredo é criado, um HMAC é calculado sobre o ID do segredo usando uma chave do lado do servidor. Esse token HMAC é incluído na URL da página de status, permitindo que o criador do segredo verifique se seu segredo foi visto ou expirou, sem dar ao endpoint de status nenhuma forma de consumir visualizações ou acessar o conteúdo criptografado. O HMAC também é usado internamente pelo PBKDF2 como sua função pseudoaleatória ao derivar chaves a partir de frases-senha.