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.
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:
- Argon2id — mayor resistencia al descifrado con GPU/ASIC
- bcrypt — ampliamente compatible y con una trayectoria probada
- 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:
- Recupere el hash y el salt almacenados del usuario
- Calcule el hash de la contraseña enviada con el mismo salt y algoritmo
- Compare el hash resultante con el hash almacenado (comparación en tiempo constante)
- 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.
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
- Fortaleza y políticas de contraseñas
- Hashing de contraseñas: bcrypt, Argon2 y PBKDF2
- Autenticación multifactor
- Relleno de credenciales y password spraying