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.
O que esta calculadora de hash Argon2 faz
Digite uma senha ou qualquer outra cadeia e esta ferramenta gera o hash usando uma das três variantes do Argon2: Argon2id, Argon2i ou Argon2d. O Argon2 venceu a Password Hashing Competition e resiste não só à força bruta simples, mas também aos ataques rápidos montados com hardware específico como GPUs e ASICs, razão pela qual é amplamente tratado como a primeira escolha para guardar senhas em sistemas novos.
A robustez do hash apoia-se em três parâmetros: custo de memória, iterações e paralelismo. Aumentá-los eleva o custo para o atacante, mas também o tempo e a memória que um login legítimo consome. Esta ferramenta oferece como predefinições as cinco combinações recomendadas na OWASP Password Storage Cheat Sheet; experimente primeiro uma delas e depois ajuste à capacidade do servidor em que vai realmente operar.
Como calcular um hash
- Informe a senha ou a cadeia Digite no campo de senha o texto que deseja resumir. O que você informar não é transmitido a lugar algum.
- Escolha a variante A menos que tenha um motivo específico, escolha o Argon2id, que combina resistência a ataques com GPU e a ataques de canal lateral.
- Aplique uma predefinição da OWASP Ao clicar num botão de predefinição, o custo de memória, as iterações e o paralelismo são fixados numa das combinações recomendadas pela OWASP.
- Ajuste os parâmetros se precisar O custo de memória em KiB, as iterações e o paralelismo podem ser editados separadamente. Quanto maiores os valores, mais demorado o cálculo.
- Clique em calcular e confira o resultado Aparece o hash codificado em formato PHC junto com o tempo que o cálculo realmente levou. O botão de copiar guarda o resultado.
Dicas para aproveitar melhor
- 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.
Quando é útil
Definir como guardar as senhas de um serviço novo
Ao projetar o armazenamento de senhas de um sistema novo, você vê na hora o comprimento real do hash e o tempo de cálculo de cada conjunto de parâmetros.
Guardar chaves de API e tokens com segurança
Além das senhas de acesso, serve quando você quer evitar que cadeias confidenciais, como chaves de API ou segredos compartilhados, fiquem em texto puro no banco de dados.
Preparar hashes fictícios para desenvolvimento e testes
Gere aqui os hashes das contas de teste que vai inserir diretamente num banco de dados, sem iniciar a aplicação.
Sentir a relação entre parâmetros e tempo
Calcule algumas vezes com valores diferentes e compare os tempos exibidos; é essa comparação que indica quais ajustes convêm ao seu servidor de produção.
Avaliar uma migração a partir do bcrypt
Gerar o hash da mesma cadeia com a calculadora de hash bcrypt e comparar o formato de saída e o tempo gasto dá base para decidir a migração.
Termos relacionados ao Argon2
- Argon2id
- Variante híbrida que combina as propriedades do Argon2d e do Argon2i. Oferece ao mesmo tempo resistência a ataques com GPU e a ataques de canal lateral, e a OWASP a aponta como primeira recomendação.
- Argon2i
- Variante cuja ordem de acesso à memória não depende da entrada, o que a torna forte contra ataques de canal lateral — os que extraem informação do tempo de execução ou do consumo elétrico —, embora um pouco mais fraca que o Argon2d diante das GPUs.
- Argon2d
- Variante cuja ordem de acesso à memória depende da entrada. Oferece a maior resistência a ataques paralelos com GPU ou ASIC, mas é frágil diante dos de canal lateral.
- Custo de memória
- Parâmetro que define quanta memória o cálculo do hash usa, expresso em KiB. Valores maiores encarecem os ataques paralelos com hardware específico.
- Iterações
- Também chamado custo de tempo, é o parâmetro que define quantas vezes o processamento interno se repete. Valores maiores alongam o cálculo e reforçam a resistência à força bruta.
- Paralelismo
- Parâmetro que define quantas vias são executadas em paralelo. Ajuda num servidor de vários núcleos, mas não surte efeito na implementação em WebAssembly que roda no navegador.
- Sal
- Valor aleatório acrescentado antes de calcular o hash. Esta ferramenta o gera a cada cálculo, de modo que a mesma cadeia com os mesmos parâmetros produz um hash diferente todas as vezes.
- Formato PHC
- Codificação estabelecida pela Password Hashing Competition, que reúne numa única cadeia o nome do algoritmo, a versão, os parâmetros, o sal e o próprio hash, com uma forma como $argon2id$v=19$m=…
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.