0Pricing
Cryptology Academy · Lección

Argon2: hash de contraseñas con uso intensivo de memoria

Explore Argon2i, Argon2d y Argon2id, y descubra por qué es importante el uso intensivo de memoria.

Argon2: hash de contraseñas con uso intensivo de memoria es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Bienvenida

Argon2 ganó la Password Hashing Competition (PHC) en 2015 y es la principal recomendación de OWASP. Su diseño intensivo en memoria neutraliza los ataques de GPU y ASIC que bcrypt no puede impedir.

Por qué es importante que sea intensivo en memoria

Las GPU tienen miles de núcleos, pero una cantidad limitada de RAM por núcleo (~1 KB). Argon2 requiere al menos 64 MB de RAM por hash. Un atacante que intente calcular 1000 hashes en paralelo necesitaría 64 GB de RAM, algo costoso y limitado.

Variantes de Argon2

Argon2d: acceso dependiente de los datos; es la variante más rápida, pero es vulnerable a ataques de canal lateral basados en el tiempo. Argon2i: acceso independiente de los datos; es segura frente a ataques basados en el tiempo. Argon2id: híbrida; recomendada para la mayoría de las aplicaciones.

Parámetros de Argon2

m: memoria en kilobytes (OWASP: 19456 KB = 19 MB como mínimo, 64 MB recomendado) t: coste temporal / iteraciones (3 recomendado) p: paralelismo / hilos (4 recomendado) salt: 16 bytes aleatorios output: 32 bytes

Argon2id en Python

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

Formato del hash de Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... Todos los parámetros se almacenan en la cadena del hash. La verificación es autónoma: no es necesario almacenar los parámetros por separado.

Recomendaciones de OWASP para Argon2id en 2024

Mínimo: m=19456 KB (19 MB), t=2, p=1 Recomendado: m=65536 KB (64 MB), t=3, p=4 Alta seguridad: m=262144 KB (256 MB), t=4, p=8 Ajuste estos valores según la memoria disponible en su servidor.

Argon2 frente a bcrypt y PBKDF2

Argon2id: intensivo en memoria, resistente a ASIC y recomendado para sistemas nuevos. bcrypt: ampliamente compatible, no es intensivo en memoria y ofrece buena compatibilidad con sistemas heredados. PBKDF2: cumple con FIPS, no es intensivo en memoria y debe utilizarse en entornos regulados.

Estrategia de actualización de hashes

Al actualizar de bcrypt a Argon2: 1. Añada una nueva columna para el nuevo hash 2. En el siguiente inicio de sesión: verifique con el bcrypt antiguo, vuelva a calcular el hash con Argon2 y almacene el nuevo hash 3. Después de X meses, fuerce el restablecimiento de contraseña de los usuarios que aún no se hayan actualizado

Argon2 en frameworks reales

Django: establezca PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: utilice el paquete argon2 (no argon2-ffi) PHP 7.2+: constante PASSWORD_ARGON2ID integrada en password_hash()

Pepper: secreto del servidor

Un pepper es un secreto del servidor que se mezcla con la contraseña antes de calcular el hash: hash(password + pepper). Aunque se filtre la base de datos, el atacante también necesitará el pepper. Rotar el pepper invalida todos los hashes.

Comprobación rápida

¿Por qué Argon2 es más resistente a los ataques de GPU que bcrypt?

Resumen

Argon2id es actualmente la mejor herramienta para calcular hashes de contraseñas. A continuación compararemos los tres algoritmos y aprenderemos a elegir el adecuado para cada contexto.

Preguntas frecuentes

¿La lección «Argon2: hash de contraseñas con uso intensivo de memoria» es gratis?

Sí — el texto completo de «Argon2: hash de contraseñas con uso intensivo de memoria» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Argon2: hash de contraseñas con uso intensivo de memoria»?

Explore Argon2i, Argon2d y Argon2id, y descubra por qué es importante el uso intensivo de memoria. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Argon2: hash de contraseñas con uso intensivo de memoria»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué SHA-256 sin más no sirve para las contraseñas
  2. bcrypt: algoritmo y factor de coste
  3. Argon2: hash de contraseñas con uso intensivo de memoria
  4. PBKDF2 y elección del algoritmo adecuado
← Volver a Cryptology Academy