Cálculo de Hash Argon2 | Compatível com Argon2id, Argon2i e Argon2d

Calcula o hash Argon2 de uma senha ou outro texto. Compatível com os três métodos Argon2id, Argon2i e Argon2d, com predefinições de custo de memória e número de iterações recomendadas pela OWASP. Todo o cálculo é feito no navegador e o conteúdo digitado nunca é enviado ao servidor.


Dicas para o cálculo de hash Argon2

  • O Argon2 foi o algoritmo vencedor da Password Hashing Competition de 2015, e o Argon2id é atualmente a variante recomendada pela OWASP. Sem um motivo específico para escolher outra, prefira o Argon2id.
  • Os botões de predefinição correspondem às cinco combinações de custo de memória e número de iterações recomendadas pelo OWASP Password Storage Cheat Sheet. Quanto mais memória, maior a resistência a ataques paralelos com GPU.
  • Aumentar o "paralelismo (p)" não gera processamento paralelo real na implementação WebAssembly do navegador, então o tempo de cálculo praticamente não muda. O ganho de velocidade do paralelismo só é efetivo em servidores com múltiplos núcleos.
  • O salt é gerado automaticamente a cada cálculo, portanto o mesmo texto com os mesmos parâmetros sempre produz um hash codificado diferente.
  • Valores de custo de memória muito altos podem deixar a aba do navegador temporariamente sem resposta. Recomendamos começar testando com algumas dezenas de MB.

Perguntas frequentes

Para um sistema novo, o Argon2id é a primeira escolha. Atualmente, a própria OWASP o indica como a recomendação inicial. No entanto, se um sistema existente já usa BCrypt, tenha em mente que a migração exige recalcular os hashes (por exemplo, ao gerar um novo hash no próximo login).

O Argon2d tem a maior resistência a ataques com GPU, mas é vulnerável a ataques de canal lateral, enquanto o Argon2i tem a propriedade oposta. O Argon2id combina os dois designs em um método híbrido, e é recomendado escolher essa variante caso não haja um motivo específico para outra.

Os botões de predefinição desta ferramenta correspondem aos cinco padrões recomendados pelo OWASP Password Storage Cheat Sheet. Se for usar em produção, ajuste os valores considerando a memória disponível, buscando um tempo de cálculo entre 100 e 500 ms por hash.

Sim. Como utiliza o algoritmo Argon2 padrão, o hash pode ser verificado diretamente com a função password_verify() do PHP ou com bibliotecas de verificação de Argon2 de outras linguagens. Ainda assim, tenha cuidado com o tratamento do conteúdo digitado.

Não. Todo o cálculo do hash é feito no navegador via WebAssembly, e nenhum dado digitado é enviado para fora em nenhum momento.
ツールくん

Curiosidade — a competição de hashing de senhas e a origem do Argon2

O Argon2 foi escolhido como o melhor algoritmo entre 24 propostas na Password Hashing Competition (PHC), realizada entre 2013 e 2015. Ele foi projetado para superar a fraqueza de métodos anteriores, como o BCrypt (1999) e o PBKDF2 (2000), que eram vulneráveis a ataques de força bruta acelerados por hardware especializado, como GPUs e ASICs. Para isso, o Argon2 exige uma grande quantidade de memória durante o cálculo.

Existem três variantes do Argon2. O Argon2d maximiza a resistência a ataques com GPU, mas é vulnerável a ataques de canal lateral; o Argon2i é resistente a ataques de canal lateral, mas tem resistência um pouco menor a GPUs. O Argon2id combina as duas abordagens em um método híbrido, sendo recomendado pela OWASP e por diversas outras organizações de segurança como primeira escolha para armazenamento de senhas.

Desde o PHP 7.2, basta usar a função password_hash() com a constante PASSWORD_ARGON2ID para gerar um hash Argon2id. Node.js, Python, Ruby e outras linguagens principais também possuem bibliotecas oficiais ou semioficiais, e o Argon2id tem se tornado cada vez mais a primeira escolha em relação ao BCrypt para o armazenamento de senhas em sistemas novos.