Cyber Security Academy · Lección

Hashing de contraseñas: bcrypt, Argon2 y PBKDF2

Aprenda por qué almacenar contraseñas en texto plano es peligroso y cómo el hashing con salt protege las contraseñas.

Lección 2 de 413 pasos

Hashing de contraseñas: bcrypt, Argon2 y PBKDF2 es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 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 Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Por qué no se deben almacenar las contraseñas en texto plano?

Almacenar contraseñas en texto plano es catastrófico: una sola filtración de la base de datos expone todas las cuentas. Las contraseñas deben procesarse con una función unidireccional antes de almacenarlas, de modo que ni siquiera el acceso a la base de datos revele la contraseña original.

¿Qué es el hashing?

Una función hash convierte una entrada de cualquier longitud en una salida de longitud fija. La misma entrada siempre produce la misma salida, pero no es posible recuperar el original a partir del hash. Ejemplos: SHA-256, bcrypt, Argon2.

¿Por qué no se debe usar SHA-256 para las contraseñas?

Las funciones hash de propósito general como SHA-256 están diseñadas para ser rápidas. Un atacante puede calcular miles de millones de hashes SHA-256 por segundo con una GPU, lo que hace viable el descifrado por fuerza bruta.

Para las contraseñas se necesitan funciones lentas y costosas.

Salting

Un salt es un valor aleatorio que se añade a cada contraseña antes de aplicar el hash. Garantiza que dos usuarios con la misma contraseña tengan hashes diferentes, lo que evita ataques de tablas rainbow y de descifrado por lotes. El salt se almacena junto al hash (no es secreto).

# Conceptual salt example
hash = bcrypt("password" + random_salt)

bcrypt

bcrypt se diseñó en 1999 específicamente para aplicar hash a contraseñas. Tiene un factor de coste configurable que controla la lentitud del proceso de hash. A medida que mejora el hardware, aumente el factor de coste para mantener la seguridad.

Un factor de coste de 12 es habitual actualmente: tarda aproximadamente 250 ms en aplicar el hash en una CPU moderna.

PBKDF2

PBKDF2 (Password-Based Key Derivation Function 2) aplica una función hash (por ejemplo, HMAC-SHA256) muchas veces (iteraciones). Más iteraciones = más lento = más seguro. Recomendado por NIST y utilizado por WPA2 para las contraseñas de Wi-Fi.

Argon2

Argon2 ganó la competición de hashing de contraseñas en 2015. Es el estándar moderno. Se puede configurar mediante:

  • Coste temporal — número de iteraciones
  • Coste de memoria — RAM necesaria (limita la aceleración mediante GPU)
  • Paralelismo — número de hilos

Use Argon2id para la mayoría de las aplicaciones.

Tablas rainbow

Una tabla rainbow es una tabla de consulta precalculada de hash → texto plano. Sin salt, un atacante que tiene el hash puede buscarlo en la tabla al instante. El uso de salt inutiliza las tablas rainbow porque cada hash es único.

Técnicas de descifrado de contraseñas

Enfoques habituales para el descifrado sin conexión:

  • Ataque de diccionario — probar contraseñas comunes y variaciones
  • Fuerza bruta — probar todas las combinaciones de caracteres
  • Basado en reglas — aplicar reglas de mutación a un diccionario (añadir el año, poner en mayúscula, usar leetspeak)
  • Herramientas: Hashcat, John the Ripper

Elección del algoritmo adecuado

Orden de preferencia para aplicaciones nuevas:

  1. Argon2id — mayor resistencia al descifrado con GPU/ASIC
  2. bcrypt — ampliamente compatible y con una trayectoria probada
  3. PBKDF2 — aprobado por NIST y obligatorio en algunos contextos de cumplimiento

No utilice nunca: MD5, SHA-1 ni SHA-256 sin salt para las contraseñas.

Proceso de verificación

Cuando un usuario inicia sesión:

  1. Recupere el hash y el salt almacenados del usuario
  2. Calcule el hash de la contraseña enviada con el mismo salt y algoritmo
  3. Compare el hash resultante con el hash almacenado (comparación en tiempo constante)
  4. Nunca descifre: solo realice la comparación

Comprobación rápida: hashing de contraseñas

¿Qué algoritmo de hashing de contraseñas se considera la mejor práctica actual y fue el ganador de la Password Hashing Competition?

Resumen de la lección

Las contraseñas deben almacenarse como hashes, no como texto plano. Los algoritmos rápidos, como SHA-256, no son adecuados: utilice funciones lentas de hashing de contraseñas: Argon2id (preferido), bcrypt o PBKDF2. Utilice siempre un salt aleatorio por contraseña para evitar ataques mediante tablas rainbow. Nunca implemente su propia criptografía: utilice bibliotecas probadas.

Gratis para empezar

Aprende Cyber Security Academy con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
76
Lecciones
303

Preguntas frecuentes

¿La lección «Hashing de contraseñas: bcrypt, Argon2 y PBKDF2» es gratis?

Sí — el texto completo de «Hashing de contraseñas: bcrypt, Argon2 y PBKDF2» 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 Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Hashing de contraseñas: bcrypt, Argon2 y PBKDF2»?

Aprenda por qué almacenar contraseñas en texto plano es peligroso y cómo el hashing con salt protege las contraseñas. Practicas Cyber Security 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 Cyber Security Academy?

No se requiere experiencia previa. Cyber Security 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 2 de 4.

¿Cuánto tiempo toma la lección «Hashing de contraseñas: bcrypt, Argon2 y PBKDF2»?

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 Cyber Security Academy?

Sí. Cada lección de Cyber Security 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. Fortaleza y políticas de contraseñas
  2. Hashing de contraseñas: bcrypt, Argon2 y PBKDF2
  3. Autenticación multifactor
  4. Relleno de credenciales y password spraying
← Volver a Cyber Security Academy