Todos os artigos

Argon2: por que esse algoritmo venceu a competição de hashing de senhas

O Open Finance Brasil e o crescimento do PIX elevaram a régua de segurança para qualquer backend que armazene senhas de usuários no país — auditorias de segurança e certificações do Banco Central passaram a cobrar mecanismos de hashing modernos, não apenas "alguma forma de criptografia". Nesse contexto, o Argon2, vencedor do Password Hashing Competition de 2015, tornou-se a escolha natural: é o algoritmo recomendado pela OWASP à frente do bcrypt e já vem pronto no password_hash() do PHP e no Hash facade do Laravel, framework amplamente usado no mercado brasileiro.

Por que memória importa tanto quanto tempo

Bcrypt e PBKDF2 apenas tornam o cálculo mais lento. O Argon2 obriga cada tentativa de hash a reservar uma quantidade configurável de memória RAM — é o que se chama de função memory-hard. Uma fazenda de GPUs alugada na nuvem paraleliza cálculos simples a baixo custo, mas paralelizar o acesso simultâneo a muita memória é uma conta bem mais cara: memória, ao contrário de núcleos de processamento, é fisicamente limitada por placa.

Três variantes: d, i, id

  • Argon2d — o acesso à memória depende da própria senha, dando resistência máxima contra GPU, mas com exposição teórica a ataques de canal lateral.
  • Argon2i — o acesso à memória independe da senha, o que fecha esse canal lateral ao custo de um pouco menos de resistência a GPU.
  • Argon2id — combina as duas estratégias em fases diferentes do cálculo. É a variante recomendada pela RFC 9106 e usada por padrão na maioria dos frameworks.

Três parâmetros independentes

Diferente do "cost factor" único do bcrypt, o Argon2 permite ajustar memória, iterações e paralelismo separadamente. Isso é útil na prática: uma função serverless com memória limitada pode compensar aumentando as iterações, enquanto um servidor de autenticação dedicado com RAM sobrando pode fazer o inverso.

Para que serve

  • Escolher um algoritmo moderno para um novo sistema de autenticação em vez de MD5 ou SHA-256 puro.
  • Entender por que o Argon2 encarece especificamente ataques com hardware de mineração de criptomoedas alugado.
  • Planejar uma migração do bcrypt ou PBKDF2 como parte de uma auditoria de segurança.

A armadilha do paralelismo

O paralelismo parece um ganho gratuito — mais threads, hashing mais rápido num servidor multi-core. Mas um invasor com o mesmo hardware multi-core ganha o mesmo acréscimo de velocidade em cada tentativa. Ajustar o paralelismo ao número real de núcleos do servidor é seguro; aumentá-lo "por precaução" só dá ao invasor um desconto proporcional.

Experimentar a ferramenta