Pular para o conteúdo
ecdsa.com

HS256

O algoritmo JWS de HMAC com SHA-256 (RFC 7518 §3.2), em que o emissor e o verificador compartilham uma mesma chave secreta de pelo menos 256 bits, de modo que qualquer um que consiga verificar um token também consegue emitir um.
Também escrito comoHS256HMAC-SHA256 JWTHS512

É o único algoritmo JWS que a JWA marca como de implementação obrigatória (Required), além de ser o padrão de muitos tutoriais e frameworks. A tag de 32 bytes é calculada sobre header.payload com o segredo compartilhado; a verificação a recalcula e a compara em tempo constante.

Segredos fracos são o principal problema: a RFC 7518 exige chaves com pelo menos o tamanho do hash (256 bits), mas tokens assinados com segredos curtos ou de dicionário, como secret, podem ser quebrados offline a partir de um único token (modo 16500 do hashcat, jwt_tool), e depois o atacante emite os tokens que quiser. Use 32 bytes aleatórios ou mais, nunca uma senha, e confira com o verificador de segredos JWT.

O HS256 é adequado quando o mesmo serviço emite e verifica os tokens. Para verificadores de terceiros, microsserviços ou clientes públicos, use um algoritmo assimétrico, para que os verificadores tenham só uma chave pública, e fixe o algoritmo por chave para evitar confusão com o RS256.

Padrões e referências

Todos os termos