Argon2 - Algoritmo moderno de hash de contraseñas
Lectura de 2 min aprox.
Argon2 es una función hash de contraseñas que ganó el Password Hashing Competition (PHC) de 2015. Diseñada como una función de uso intensivo de memoria (memory-hard), ofrece una alta resistencia frente a los ataques paralelos de GPU y ASIC. A fecha de 2025, es el algoritmo de hash de contraseñas más recomendado por OWASP y la primera opción para almacenar contraseñas en sistemas nuevos.
Antecedentes históricos
La historia del hash de contraseñas es una carrera contra la evolución del hardware de los atacantes. Comenzando con Unix crypt (1976), bcrypt (1999) introdujo el concepto de factor de coste. Sin embargo, bcrypt depende de la CPU y no podía contrarrestar adecuadamente el procesamiento paralelo masivo de las GPU. scrypt (2009) introdujo el concepto de uso intensivo de memoria, pero la dificultad del diseño de parámetros era un reto. En este contexto, en 2013 se celebró el PHC, y Argon2 fue elegido como el algoritmo ganador entre 24 candidatos.
Las tres variantes
Utiliza un patrón de acceso a memoria dependiente de los datos. Ofrece la mayor resistencia a los ataques de GPU, pero es vulnerable a los ataques de canal lateral. Adecuada para usos del lado del servidor, como la minería de criptomonedas.
Utiliza un patrón de acceso a memoria independiente de los datos. Es robusta frente a los ataques de canal lateral, pero su resistencia a la GPU es inferior a la de Argon2d. Adecuada para su uso en entornos compartidos.
Un híbrido de Argon2d y Argon2i. La primera mitad usa el enfoque de Argon2i para garantizar la resistencia a canales laterales, mientras que la segunda mitad usa el enfoque de Argon2d para ofrecer resistencia a la GPU. Es la opción estándar para el hash de contraseñas.
La importancia de las funciones de uso intensivo de memoria
Las funciones hash convencionales dependían únicamente de la velocidad de cálculo de la CPU, por lo que un ataque de fuerza bruta podía realizarse rápidamente mediante cálculo paralelo en una GPU con miles de núcleos. Las funciones de uso intensivo de memoria resuelven este problema al requerir una gran cantidad de memoria para el cálculo. Aunque las GPU tienen muchos núcleos de cómputo, la memoria por núcleo es limitada, lo que dificulta la ejecución paralela de algoritmos que consumen mucha memoria. Incluso frente a los ataques que usan ASIC (hardware dedicado), dotarlos de grandes cantidades de memoria resulta costoso y reduce la racionalidad económica del ataque.
Comparación con bcrypt y scrypt
| Característica | bcrypt | scrypt | Argon2id |
|---|---|---|---|
| Año de aparición | 1999 | 2009 | 2015 |
| Uso intensivo de memoria | ✗ | ✓ | ✓ |
| Resistencia a la GPU | Baja | Media | Alta |
| Ajuste de parámetros | Solo coste | CPU + memoria + paralelismo | CPU + memoria + paralelismo |
| Límite de longitud de entrada | 72 bytes | Ninguno | Ninguno |
| Rango de recomendación de OWASP | 2.º | 3.º | 1.º |
Diseño de parámetros
El rendimiento de Argon2id se controla mediante tres parámetros: la cantidad de memoria, el número de iteraciones (coste de tiempo) y el paralelismo. Los ajustes recomendados por OWASP a fecha de 2025 son los siguientes.
Aumentar la cantidad de memoria mejora la seguridad, pero también incrementa el consumo de recursos del servidor. El equilibrio práctico consiste en asignar la mayor cantidad de memoria posible manteniendo la latencia del proceso de inicio de sesión por debajo de un segundo. El panorama completo de cómo almacenar las contraseñas de forma segura se explica en la guía de gestión segura de contraseñas.libros de criptografía y seguridad (Amazon) permiten estudiar esto con mayor profundidad.
Conceptos erróneos comunes
Algunos dicen: «Argon2 es lento, así que no quiero usarlo», pero la lentitud es precisamente la intención del diseño. El hash de contraseñas se hace deliberadamente lento para limitar la velocidad a la que los atacantes pueden hacer intentos. Un usuario legítimo inicia sesión una sola vez, pero un atacante necesita cientos de millones de intentos, así que cuanto mayor sea el coste por intento, mayor será el efecto defensivo. También ofrece una defensa robusta frente a los ataques de tabla arcoíris mediante la combinación de sal y uso intensivo de memoria. Para conocimientos básicos de criptografía, consulta también el artículo los fundamentos del cifrado.
¿Te resultó útil este artículo?