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
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.
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.