Cálculo de Hash Argon2 | Compatible con Argon2id, Argon2i y Argon2d
Calcula el hash Argon2 de una contraseña u otro texto. Compatible con los tres métodos Argon2id, Argon2i y Argon2d, con perfiles de coste de memoria e iteraciones recomendados por OWASP. Todo el cálculo se realiza en el navegador; los datos introducidos nunca se envían al servidor.
Consejos para calcular hashes Argon2
- Argon2 fue el algoritmo ganador de la Password Hashing Competition de 2015, y Argon2id es actualmente la variante recomendada por OWASP. Si no tienes un motivo especial, elige Argon2id.
- Los botones de perfil corresponden a las cinco combinaciones de coste de memoria e iteraciones que recomienda la OWASP Password Storage Cheat Sheet. Cuanta más memoria se exige, mayor es la resistencia frente a ataques paralelos con GPU.
- Aumentar el "grado de paralelismo (p)" apenas afecta al tiempo de cálculo en esta implementación WebAssembly del navegador, ya que en la práctica no se ejecuta en paralelo. La aceleración por paralelismo solo es efectiva en servidores con varios núcleos.
- El salt se genera automáticamente en cada cálculo, por lo que el hash codificado resultante es distinto cada vez, incluso con el mismo texto y los mismos parámetros.
- Si el coste de memoria es demasiado alto, la pestaña del navegador puede quedar temporalmente sin responder. Es recomendable empezar probando con unas pocas decenas de MB.
Preguntas frecuentes
password_verify() de PHP o con las bibliotecas de verificación de Argon2 de otros lenguajes. Aun así, ten cuidado con el manejo de los datos introducidos.
A propósito — el origen de Argon2 y la competición de hashing de contraseñas
Argon2 fue elegido el mejor algoritmo entre 24 propuestas en la Password Hashing Competition (PHC), celebrada entre 2013 y 2015. Su diseño busca superar la debilidad de métodos anteriores como BCrypt (1999) y PBKDF2 (2000), que resultan vulnerables a ataques de fuerza bruta acelerados por hardware especializado como GPUs o ASICs, exigiendo para ello un uso intensivo de memoria durante el cálculo.
Argon2 tiene tres variantes. Argon2d maximiza la resistencia frente a ataques con GPU, pero es vulnerable a ataques de canal lateral; Argon2i resiste mejor los ataques de canal lateral, aunque su resistencia a GPU es algo menor. Argon2id combina ambas propiedades en un enfoque híbrido, por lo que OWASP y otras organizaciones de seguridad lo recomiendan como primera opción para el almacenamiento de contraseñas.
Desde PHP 7.2, basta con indicar la constante PASSWORD_ARGON2ID en la función password_hash() para generar un hash Argon2id. Node.js, Python, Ruby y otros lenguajes principales también cuentan con bibliotecas oficiales o semioficiales, y cada vez es más frecuente que Argon2id se convierta en la primera opción frente a BCrypt al diseñar el almacenamiento de contraseñas de un sistema nuevo.