HMAC-SHA256 Gerador de Hash

Ferramenta gratuita de HMAC-SHA256 Gerador de Hash online. Processamento 100% local — seus dados nunca saem do seu dispositivo.

General
Password Hashing / KDF
Specialized
Deprecated
Saída

O resultado será exibido aqui...

Entrada Calcular Hash

Usage Guide

Sobre HMAC-SHA256

HMAC-SHA256 (Hash-based Message Authentication Code with SHA-256) é um algoritmo de código de autenticação de mensagem baseado em hash com chave que combina a função hash SHA-256 com um mecanismo de chave. Padronizado pelo IETF no RFC 2104, é amplamente usado para assinatura de API, verificação de integridade de dados e autenticação. O HMAC-SHA256 não apenas verifica a integridade dos dados, mas também autentica a fonte dos dados, tornando-o uma tecnologia central na segurança web moderna.

Padrão da indústria: HMAC-SHA256 é o padrão de fato para assinatura de API, adotado por plataformas principais como AWS, GitHub, Stripe e PayPal. Combina a segurança do SHA-256 com o mecanismo de verificação de chave do HMAC, prevenindo efetivamente ataques man-in-the-middle, ataques de repetição e adulteração de dados. Recomendado para todas as comunicações API que requerem autenticação.

Passos de uso

HMAC-SHA256 requer duas entradas: uma chave e uma mensagem, gerando um código de autenticação de comprimento fixo:

1. Inserir chavePreencha a chave secreta compartilhada no campo de entrada de chave; ambas as partes devem usar a mesma chave
2. Inserir mensagemCole os dados a serem assinados no campo de entrada de mensagem (ex.: parâmetros de requisição API, conteúdo de arquivo)
3. Calcular HMACClique no botão 'Calcular Hash' para calcular localmente usando WebAssembly
4. Copiar resultadoClique no botão 'Copiar' à direita para obter o valor HMAC hexadecimal de 64 caracteres para verificação ou transmissão
Proteção de privacidade: Todos os cálculos são realizados localmente no seu navegador, os dados nunca são enviados para servidores, processamento completamente offline.

Características do algoritmo

HMAC-SHA256 é baseado no padrão RFC 2104 com as seguintes características técnicas:

Verificação de chaveRequer chave compartilhada para gerar e verificar HMAC, garantindo que a mensagem vem de uma parte autorizada
Resistência a colisõesHerda a segurança do SHA-256 com complexidade de colisão de 2^128, impossível forjar assinaturas válidas
Resistência a adulteraçãoQualquer mudança mínima na mensagem ou chave resulta em um valor HMAC completamente diferente
Comprimento fixoA saída é sempre 256 bits (64 caracteres) independentemente do comprimento da entrada, conveniente para armazenamento e transmissão
Hash duploUsa duas camadas de hash (ipad e opad) para melhorar a segurança e resistir a ataques de extensão de comprimento
Segurança da chave: A segurança do HMAC depende inteiramente da confidencialidade da chave. As chaves devem ser geradas usando geradores de números aleatórios seguros (pelo menos 256 bits), transmitidas e armazenadas por canais seguros (como HTTPS, arquivos de configuração criptografados), rotacionadas regularmente e o acesso deve ser estritamente limitado. Nunca codifique chaves no código do cliente ou repositórios públicos.

Casos de uso

HMAC-SHA256 é amplamente usado em cenários que requerem autenticação e garantia de integridade de dados:

Assinatura de APIAWS Signature V4, GitHub Webhooks, Stripe API usam HMAC-SHA256 para verificar a legitimidade das requisições
Tokens JWTJSON Web Token (HS256) usa assinatura HMAC-SHA256 para garantir que os tokens não sejam adulterados
Verificação de WebhookPlataformas como GitHub, Slack, Stripe usam HMAC-SHA256 para verificar fontes de requisições webhook
Assinatura de cookiesFrameworks web (como Express, Django) usam HMAC-SHA256 para assinar cookies, prevenindo adulteração
Derivação de chavesHKDF (HMAC-based Key Derivation Function) usa HMAC-SHA256 para derivar subchaves de chaves mestras
Filas de mensagensRabbitMQ, Kafka usam HMAC-SHA256 para verificar a integridade das mensagens

FAQ

Q: Qual é a diferença entre HMAC-SHA256 e SHA-256?

A: SHA-256 é uma função hash unidirecional; qualquer pessoa pode calcular o hash da mesma entrada. HMAC-SHA256 requer uma chave; apenas quem tem a chave pode gerar e verificar valores HMAC. Diferença principal: SHA-256 verifica apenas a integridade dos dados (se adulterados), HMAC-SHA256 verifica tanto a integridade quanto a autenticidade da fonte (se vem de uma parte autorizada). Casos de uso: Use SHA-256 para verificação de arquivos, HMAC-SHA256 para assinatura de API e autenticação.

Q: Qual deve ser o comprimento da chave HMAC-SHA256?

A: RFC 2104 recomenda que o comprimento da chave seja pelo menos igual ao comprimento de saída da função hash. Para HMAC-SHA256, o comprimento de chave recomendado é ≥ 256 bits (32 bytes). Chaves mais curtas: Se a chave for menor que 256 bits, a segurança diminui mas permanece válida. Chaves mais longas: Se a chave exceder 512 bits (tamanho de bloco do SHA-256), ela é primeiro hasheada para 256 bits, sem segurança adicional. Melhor prática: Use chaves aleatórias de 256 bits (32 bytes), armazene em codificação Base64 ou Hex. Use o gerador de senhas para gerar chaves de alta segurança.

Q: Como usar HMAC-SHA256 na assinatura de API?

A: Fluxo típico de assinatura de API: 1) Construir string de assinatura: Concatenar parâmetros de requisição no formato acordado (como método HTTP, URL, timestamp, corpo da requisição). 2) Calcular HMAC: Calcular HMAC-SHA256 da string de assinatura usando a chave compartilhada. 3) Adicionar à requisição: Adicionar valor HMAC ao cabeçalho da requisição (como X-Signature) ou parâmetros de consulta. 4) Verificação do servidor: O servidor calcula HMAC usando o mesmo método e compara com o valor da requisição. Exemplos: AWS Signature V4, GitHub Webhooks (X-Hub-Signature-256), Stripe (Stripe-Signature). Nota: A ordem de construção da string de assinatura deve ser estritamente consistente, tipicamente parâmetros ordenados alfabeticamente.

Q: HMAC-SHA256 pode prevenir ataques de repetição?

A: HMAC-SHA256 por si só não pode prevenir ataques de repetição. Atacantes podem interceptar requisições legítimas (incluindo assinaturas HMAC) e reenviá-las. Métodos de defesa: 1) Timestamp: Incluir timestamp na string de assinatura, o servidor rejeita requisições expiradas (ex.: requisições com mais de 5 minutos). 2) Nonce (número aleatório): Cada requisição usa um número aleatório único, o servidor registra Nonces usados, rejeita duplicatas. 3) Contador de requisições: O cliente mantém um contador incremental, o servidor rejeita requisições com contadores decrementados. Melhor prática: Combinar timestamp e Nonce para prevenir ataques de repetição enquanto evita o armazenamento de grandes conjuntos de Nonces no servidor. AWS Signature V4 e OAuth 1.0 adotam essa abordagem.

Q: Qual é a relação entre HMAC-SHA256 e JWT?

A: JWT (JSON Web Token) suporta múltiplos algoritmos de assinatura, sendo HS256 o HMAC-SHA256. JWT consiste em três partes: Cabeçalho, Payload, Assinatura. A assinatura usa HMAC-SHA256 para assinar base64(header).base64(payload), garantindo que o token não seja adulterado. Vantagens: Criptografia simétrica, alto desempenho, adequado para sistemas internos. Desvantagens: A chave deve ser compartilhada entre todos os serviços, maior risco de vazamento de chave. Alternativas: RS256 (assinatura RSA) ou ES256 (assinatura ECDSA) usam criptografia assimétrica, mais seguro mas ligeiramente menor desempenho.

Q: Qual é melhor: HMAC-SHA256 ou HMAC-SHA512?

A: Ambos são seguros; a escolha depende de necessidades específicas. HMAC-SHA256: Saída de 256 bits (64 caracteres), melhor desempenho, maior compatibilidade, padrão da indústria (usado por AWS, GitHub, Stripe). HMAC-SHA512: Saída de 512 bits (128 caracteres), segurança teoricamente maior, ainda melhor desempenho em sistemas de 64 bits que HMAC-SHA256, mas saída mais longa consumindo mais largura de banda e armazenamento. Recomendação: Para a maioria das aplicações, HMAC-SHA256 é a melhor escolha. Se precisar de maior segurança (como dados governamentais classificados, assinaturas válidas a longo prazo) ou desempenho em servidores de 64 bits, escolha HMAC-SHA512.

Use Cases

Recomendado: Verificação de assinatura de API

HMAC-SHA256 é o padrão da indústria para assinatura de API, adotado por plataformas principais como AWS, GitHub, Stripe e PayPal. Garante que as requisições API venham de clientes autorizados e não sejam adulteradas, sendo tecnologia central para segurança de API RESTful. Fluxo típico: o cliente calcula HMAC dos parâmetros de requisição usando a chave compartilhada, o servidor verifica a assinatura antes de processar a requisição.

Recommended Configuration:
  • ✅ HMAC-SHA256 (padrão da indústria, recomendado)
  • ✅ HMAC-SHA512 (maior segurança)
  • EdDSA (Ed25519) (assinatura assimétrica, mais seguro)
  • ❌ Evitar HMAC-MD5 (inseguro)
Recomendado: Verificação de Webhook

Plataformas como GitHub, Slack e Stripe usam HMAC-SHA256 para verificar a autenticidade das requisições webhook. Ao enviar webhooks, as plataformas calculam HMAC do corpo da requisição usando a chave compartilhada e o adicionam ao cabeçalho da requisição (como X-Hub-Signature-256). Os receptores calculam HMAC usando o mesmo método e comparam, garantindo que a requisição vem da plataforma e não de atacantes.

Recommended Configuration:
  • ✅ HMAC-SHA256 (padrão webhook)
  • ✅ Combinar com timestamp para prevenir ataques de repetição
  • ✅ Usar HTTPS para transmitir chaves e dados
  • 💡 Rotacionar chaves webhook regularmente
Recomendado: Assinatura de token JWT (HS256)

O algoritmo HS256 do JWT usa assinatura HMAC-SHA256 para garantir que os tokens não sejam adulterados. Adequado para sistemas internos (como comunicação de microsserviços), alto desempenho e implementação simples. Mas a chave deve ser compartilhada entre todos os serviços, maior risco de vazamento de chave. Para APIs públicas ou cenários de alta segurança, recomenda-se usar assinatura assimétrica RS256 (RSA) ou ES256 (ECDSA).

Recommended Configuration:
  • ✅ HS256 (sistemas internos, prioridade de desempenho)
  • RS256 (APIs públicas, prioridade de segurança)
  • ✅ ES256 (padrão moderno, equilíbrio entre desempenho e segurança)
  • ❌ Evitar HS256 para APIs públicas
Recomendado: Derivação de chaves (HKDF)

HKDF (HMAC-based Key Derivation Function) usa HMAC-SHA256 para derivar múltiplas subchaves da chave mestra para diferentes propósitos (como criptografia, autenticação, assinatura). HKDF é o esquema padrão de derivação de chaves para TLS 1.3, também adotado por aplicativos de criptografia de ponta a ponta como Signal e WhatsApp.

Recommended Configuration:
  • ✅ HKDF-SHA256 (padrão TLS 1.3)
  • ✅ HKDF-SHA512 (maior segurança)
  • Argon2 (derivação de senha, resistente a força bruta)
  • 💡 Usar diferentes parâmetros info para diferentes propósitos
Recomendado: Assinatura de cookies e sessões

Frameworks web (como Express, Django, Flask) usam HMAC-SHA256 para assinar cookies e sessões, prevenindo adulteração pelo cliente. O formato de cookie assinado é tipicamente value.signature, o servidor confia no conteúdo do cookie apenas após verificar a assinatura. Esta é a base do gerenciamento de sessões sem estado, evitando a sobrecarga do armazenamento de sessões no lado do servidor.

Recommended Configuration:
  • ✅ HMAC-SHA256 (padrão de framework web)
  • ✅ Usar flags HttpOnly e Secure
  • ✅ Definir tempos de expiração razoáveis
  • 💡 Rotacionar chaves de assinatura regularmente
Recomendado: Verificação de integridade de fila de mensagens

Filas de mensagens como RabbitMQ, Kafka, Redis Streams podem usar HMAC-SHA256 para verificar a integridade das mensagens, garantindo que as mensagens não sejam adulteradas durante a transmissão. Os produtores calculam HMAC ao enviar mensagens e o anexam à mensagem, os consumidores verificam HMAC antes do processamento. Isso é especialmente importante para cenários de negócios críticos como transações financeiras e processamento de pedidos.

Recommended Configuration:
  • ✅ HMAC-SHA256 (escolha padrão)
  • ✅ Combinar com ID de mensagem para prevenir repetição
  • ✅ Usar TLS para criptografar o canal de transmissão
  • 💡 Considerar mecanismos de segurança integrados da fila de mensagens

Recomendações de melhores práticas

  • HMAC-SHA256 é o padrão da indústria para assinatura de API e autenticação, recomendado para todos os cenários que requerem verificação da fonte da requisição.
  • A segurança da chave é crucial: usar chaves aleatórias de pelo menos 256 bits, transmitir via HTTPS ou arquivos de configuração criptografados, rotacionar regularmente, limitar estritamente o acesso.
  • Combinar timestamp e Nonce para prevenir ataques de repetição, janela de timestamp recomendada de 5-15 minutos.
  • Para APIs públicas ou cenários de alta segurança, considerar usar algoritmos de assinatura assimétrica (como RS256, ES256) em vez de HMAC-SHA256.
  • HS256 do JWT é adequado para sistemas internos; APIs públicas devem usar RS256 ou ES256.

Discussão e Feedback

0 comentários
Eu