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

Para un sistema de nueva creación, Argon2id es la primera opción recomendada; de hecho, OWASP lo señala actualmente como su recomendación principal. Sin embargo, si un sistema existente ya usa BCrypt, ten en cuenta que migrar requiere recalcular los hashes (por ejemplo, volviendo a aplicarlos en el siguiente inicio de sesión).

Argon2d ofrece la mayor resistencia frente a ataques con GPU, pero es más vulnerable a ataques de canal lateral, mientras que Argon2i presenta la característica contraria. Argon2id combina ambos diseños en un enfoque híbrido, y se recomienda elegir esta variante salvo que exista un motivo concreto para no hacerlo.

Los botones de perfil de esta herramienta corresponden a los cinco patrones recomendados por la OWASP Password Storage Cheat Sheet. Si vas a usarlo en un servidor real, ajusta los valores teniendo en cuenta la memoria disponible, buscando que cada cálculo de hash tarde entre 100 y 500 ms aproximadamente.

Sí. Al usar el algoritmo Argon2 estándar, el hash resultante puede verificarse directamente con 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.

No. El cálculo del hash se realiza íntegramente mediante WebAssembly en el navegador, y el contenido introducido nunca se envía al exterior.
ツールくん

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.