Hay muchas debilidades criptográficas conocidas en MD5 que lo hacen inutilizable como algoritmo de compendio de mensajes, pero no todos estos también se aplican en el contexto del hashing de contraseñas. Pero incluso cuando asumimos que no existen, MD5 sigue siendo un mal algoritmo de hashing de contraseñas por una simple razón: Es demasiado rápido .
En cualquier escenario en el que un atacante haya obtenido las contraseñas con hash, debe asumir que también obtuvo la sal de cada contraseña y la pimienta.
La única razón para usar un pimiento es que no puedes usar una tabla de arco iris precomputada antes del ataque, porque necesitas una diferente para cada base de datos. La única razón para usar un salt es que no puede usar la misma tabla de arco iris para toda la base de datos de contraseñas, porque la misma contraseña para dos cuentas diferentes tendrá un hash diferente.
La longitud de la pimienta y la sal no importan mucho. Su único propósito es asegurarse de que cada valor sea único. Una mayor duración no hace que el ataque sea mucho más difícil (hay más datos para el hash, pero eso es un aumento lineal a lo sumo).
La conclusión es que solo se necesita un poco de sal para asegurarse de que el atacante debe forzar con la fuerza bruta todas las contraseñas posibles para encontrar el hash correcto para cada cuenta.
Y ahí es donde entra en juego la debilidad del MD5: es un algoritmo rápido y que conserva la memoria. Eso significa que un atacante puede calcular el hash de un gran número de contraseñas por segundo. Mediante el uso de hardware especializado (como matrices FPGA o ASIC) con un valor de unos pocos miles de dólares, puede calcular los hashes de todas las posibles contraseñas de 8 caracteres para una sal determinada en pocas horas.
Para una mejor seguridad, use un algoritmo lento como bcrypt. Significa que su sistema necesita más ciclos de CPU para autenticar a los usuarios, pero la recompensa suele valer la pena porque un atacante también necesitará mucha más capacidad de procesamiento para forzar la base de datos de contraseñas en caso de que la obtengan.