passwords hashing argon2 bcrypt scrypt security

Estándares de Hashing de Contraseñas: Por qué Argon2, Bcrypt y Scrypt son importantes

Aprenda a almacenar contraseñas de forma segura. Compare Argon2, bcrypt, scrypt y PBKDF2, y entienda por qué MD5 ya no es suficiente.

2026-04-11

Estándares de Hash de Contraseñas: Por qué MD5 y SHA-256 no son suficientes

Si eres desarrollador, una de tus responsabilidades más sagradas es proteger las contraseñas de los usuarios. Almacenar contraseñas en texto plano es un desastre obvio, pero muchos desarrolladores todavía cometen el error de usar hashes criptográficos "rápidos" como MD5 o incluso SHA-256 para el almacenamiento de contraseñas.

Esta guía explica por qué esos métodos están obsoletos y cuáles son los estándares actuales de la industria para el hash seguro de contraseñas.


1. El problema de los hashes "rápidos"

Algoritmos como MD5, SHA-1 y SHA-256 fueron diseñados para ser rápidos. Están pensados para verificar la integridad de archivos grandes en milisegundos.

Si bien la velocidad es excelente para las comprobaciones de archivos, es una pesadilla para las contraseñas. Una GPU moderna puede computar miles de millones de hashes SHA-256 por segundo. Si un atacante roba tu base de datos de contraseñas con hash SHA-256, puede usar "fuerza bruta" para adivinar casi cualquier contraseña simple en cuestión de horas.


2. Algoritmos modernos de hash lento

Para derrotar los ataques de fuerza bruta, utilizamos algoritmos diseñados específicamente para ser computacionalmente costosos. Estos son hashes "adaptativos" que permiten aumentar el "factor de trabajo" a medida que el hardware se vuelve más rápido.

Argon2: El estándar de oro

Argon2 ganó la Password Hashing Competition en 2015 y es actualmente el estándar recomendado por OWASP y NIST.

  • Argon2id: Es la variante preferida. Es resistente tanto al craqueo basado en GPU como a los ataques de canal lateral.
  • Configurable: Puedes ajustar el uso de memoria, las iteraciones y el paralelismo para asegurar que el hash de una contraseña tome, por ejemplo, 500ms en tu servidor.

bcrypt: El clásico probado en batalla

Desarrollado en 1999, bcrypt es uno de los algoritmos más utilizados y confiables de la historia.

  • Factor de trabajo: Utiliza un parámetro de "costo". Cada vez que incrementas el costo en 1, el tiempo que toma hacer el hash de la contraseña se duplica.
  • Aún seguro: A pesar de su antigüedad, bcrypt sigue siendo altamente seguro contra ataques modernos.

scrypt: El pionero de la dureza de memoria

scrypt fue el primer algoritmo importante en introducir la "dureza de memoria". Requiere una cantidad significativa de RAM para computarse, lo que hace que sea extremadamente costoso para los atacantes construir hardware especializado (ASICs) para craquearlo.


3. Más allá del algoritmo: Sal y Pimienta

Incluso con un algoritmo fuerte, necesitas capas adicionales de protección.

La Sal (Salt): Derrotando las tablas arcoíris

Una Sal es una cadena aleatoria añadida a la contraseña antes del hash.

  • Por qué: Sin una sal, si dos usuarios tienen la misma contraseña ("password123"), tendrán el mismo hash. Un atacante puede usar "Tablas Arcoíris" (listas precomputadas de hashes) para craquearlas instantáneamente.
  • Regla: Cada usuario debe tener una sal única y aleatoria generada en el momento de la creación de la cuenta.

La Pimienta (Pepper): La capa secreta

Una Pimienta es similar a una sal, pero en lugar de guardarse en la base de datos, se almacena en un archivo de configuración seguro o en un Módulo de Seguridad de Hardware (HSM).

  • Por qué: Si un atacante roba tu base de datos pero no las claves secretas de tu aplicación, aún no podrá craquear los hashes porque no conoce la pimienta.

4. Mejores prácticas para desarrolladores

  1. Nunca uses MD5 o SHA-1: Están completamente rotos para la seguridad.
  2. Evita el SHA-256 simple: Es demasiado rápido y las GPUs lo craquean fácilmente.
  3. Elige Argon2id o bcrypt: Usa Argon2id para proyectos nuevos; bcrypt es una alternativa sólida con excelente soporte de librerías.
  4. Ajusta tu factor de trabajo: Apunta a un tiempo de hash entre 250ms y 500ms. Es lo suficientemente rápido para que un humano espere un inicio de sesión, pero lo suficientemente lento para detener a un atacante.
  5. Siempre usa Sal: La mayoría de las librerías modernas (como bcrypt en Node.js o Python) manejan la sal de forma automática.

Resumen Comparativo

Algoritmo Tipo Memoria-Dura Recomendado
MD5 Hash rápido No ❌ NUNCA
SHA-256 Hash rápido No ❌ NO (para pass)
PBKDF2 Hash lento No ⚠️ Solo legado
bcrypt Hash lento No ✅ SÍ
scrypt Hash lento ✅ SÍ
Argon2id Hash lento 🏆 EL MEJOR

Conclusión

Proteger contraseñas no se trata solo de elegir un algoritmo al azar; se trata de usar herramientas diseñadas para resistir el poder bruto del hardware moderno. Al usar Argon2id con una sal y un factor de trabajo adecuados, estás proporcionando a tus usuarios el nivel más alto de seguridad disponible hoy en día.

¿Necesitas probar un hash o generar una contraseña segura para tus propias cuentas? Echa un vistazo a nuestra Herramienta Generador de Contraseñas y Generador de Hash para mantener tus datos a salvo.