Descubre cuánto tarda realmente una búsqueda exhaustiva contra MD5, bcrypt, PBKDF2 o scrypt con tasas medidas en GPU, y qué longitud exige.
hashcat v6.2.6, núcleos optimizados, una GPU, según lo publicado por Chick3nman. Aquí el número de GPU escala de forma lineal; la única prueba publicada con 14 GPU alcanzó entre el 87 y el 97 por ciento de lo lineal, así que esto favorece ligeramente al atacante.
| Algoritmo | hashcat -m | RTX 4090 | RTX 5090 |
|---|---|---|---|
| NTLM (Windows) | 1000 | 288.500.000.000 | 340.100.000.000 |
| MD5 | 0 | 164.100.000.000 | 220.600.000.000 |
| SHA-1 | 100 | 50.638.700.000 | 70.245.100.000 |
| SHA-256 | 1400 | 21.975.500.000 | 28.353.300.000 |
| SHA-512 | 1700 | 7.483.400.000 | 10.048.600.000 |
| md5crypt (Unix MD5) | 500 | 61.283.800 | 87.367.800 |
| sha512crypt (Unix SHA-512) | 1800 | 1.179.600 | 1.479.800 |
| PBKDF2-HMAC-SHA256 | 10900 | 8.865.700 | 11.157.200 |
| PBKDF2-HMAC-SHA512 | 12100 | 3.120.900 | 4.245.400 |
| bcrypt | 3200 | 184.000 | 304.800 |
| scrypt | 8900 | 7126 | 7760 |
| Argon2id | — | Sin prueba publicada | Sin prueba publicada |
Guía de almacenamiento de contraseñas de OWASP, en su propio orden de preferencia. El NIST SP 800-63B no nombra ningún algoritmo: exige una sal de al menos 32 bits y un factor de coste que se eleve con el tiempo.
| N.º | Algoritmo | Ajuste de OWASP | Por qué ocupa ese puesto |
|---|---|---|---|
| 1 | Argon2id | m=19456 (19 MiB), t=2, p=1 | Exigente en memoria: una GPU no puede ejecutar miles de copias en paralelo, y eso es lo que frena a un equipo de descifrado. |
| 2 | scrypt | N=2^17 (128 MiB), r=8, p=1 | También exigente en memoria, y la alternativa cuando no hay una implementación de Argon2id disponible. |
| 3 | bcrypt | Coste 10 o superior; límite de entrada de 72 bytes | Solo para sistemas antiguos. Su coste es tiempo de CPU, no memoria, y trunca en silencio a partir de 72 bytes. |
| 4 | PBKDF2-HMAC-SHA256 | 600.000 iteraciones | Elígelo solo si necesitas cumplir FIPS-140; es el más fácil de acelerar de todos estos. |
| 5 | PBKDF2-HMAC-SHA512 | 220.000 iteraciones | El mismo caso de FIPS-140, con un hash interno más ancho y un mínimo de iteraciones proporcionalmente menor. |
Las estimaciones cubren solo la búsqueda exhaustiva, con pruebas de rendimiento publicadas de hashcat para una GPU. Un ataque real prueba primero contraseñas filtradas y diccionarios, así que una contraseña predecible cae mucho antes que cualquier cifra de aquí.
También podrías encontrar útiles estas calculadoras
Entropía, resistencia a intentos y tiempo de descifrado
Genera hashes MD5, SHA-1, SHA-256, SHA-384 y SHA-512 a partir de texto
Qué claves AES, RSA, ECC y hash tienen la misma fuerza.
Genera contraseñas aleatorias fuertes y frases de contraseña memorables
La respuesta sincera depende mucho menos de tu contraseña que de cómo la haya cifrado el sitio que la guarda. Los mismos doce caracteres que caen en menos de un día detrás de MD5 aguantan más de lo que lleva existiendo el universo detrás de bcrypt con coste 12. Esta calculadora parte de tasas de GPU medidas, no de números redondos, para que puedas poner una cifra real a cada caso y ver la longitud mínima que impone una configuración concreta.
Una búsqueda exhaustiva tiene que recorrer un espacio de claves de N^L, donde N es el tamaño del conjunto de caracteres y L la longitud. De media la contraseña aparece a mitad de camino, así que el trabajo esperado es la mitad del espacio de claves, y al dividirlo entre la velocidad del atacante se obtiene el tiempo. Todo lo interesante está en esa velocidad. Un resumen simple como MD5 o SHA-256 alcanza decenas de miles de millones de intentos por segundo en una sola GPU moderna, porque se diseñó para ser rápido. Un hash de contraseñas se diseña para ser lento y expone un parámetro de coste que divide la velocidad directamente: el coste de bcrypt es un exponente en base 2, así que el coste 12 hace 4.096 iteraciones donde el coste 5 de la prueba de referencia hace 32, y el rendimiento del atacante cae en ese mismo factor de 128. Ese único parámetro mueve la respuesta más que cualquier regla de composición.
Fórmula del tiempo de descifrado
Un administrador lee la longitud más corta que aguanta un siglo frente al hash que ya usa su aplicación, y escribe ese número en la política
Un ingeniero muestra qué le hace al rendimiento del atacante subir bcrypt del coste 10 al 12 antes de pedir el margen de latencia en el inicio de sesión
Quien responde a una fuga de la tabla de contraseñas calcula cuánto aguantan los hashes almacenados frente a un equipo multi-GPU alquilado
Un formador pone en pantalla la tabla por longitud y conjunto de caracteres y deja que la exponencial discuta sola
Pasar de SHA-256 a bcrypt con coste 12 frena al atacante en más de siete órdenes de magnitud. Ninguna cantidad de signos de puntuación se acerca a eso.
Cada cifra lleva su número de modo de hashcat, así que puedes ejecutar hashcat -b -m 3200 y comparar. Ninguna es una estimación.
OWASP fija mínimos (coste 10 en bcrypt, 600.000 iteraciones en PBKDF2-HMAC-SHA256) y aquí se ve exactamente qué le regala al atacante quedarse corto.
En vez de adivinar una longitud mínima, lee la más corta que aún aguanta un siglo frente al hardware que estés dispuesto a suponer.
Contra un resumen simple, un tiempo que no merece medirse. Ocho caracteres ASCII imprimibles aleatorios son un espacio de claves de unos 6.600 billones y una sola RTX 4090 ejecuta SHA-256 a unos 22.000 millones de intentos por segundo, así que la búsqueda media termina en un día y medio. Con MD5 es cuestión de horas. Detrás de bcrypt con coste 12 esos mismos ocho caracteres aguantan decenas de miles de años. La contraseña no cambió; cambió el almacenamiento.
No existe una cifra única honesta, y por eso esta calculadora te pide un número de GPU en lugar de ofrecer un nivel de superordenador. El equipo de descifrado más grande con pruebas publicadas son 14 RTX 4090 que alcanzan unos 2 billones de intentos MD5 por segundo. Pon el número que quieras modelar y la aritmética sale sola; una página que esconda eso tras la palabra superordenador se está inventando el número.
El NIST SP 800-63B revisión 4 exige que los verificadores permitan al menos 15 caracteres cuando la contraseña es el único factor, y al menos 8 cuando acompaña a otro factor. Son mínimos para el verificador, no objetivos para ti. La cifra que aparece arriba en esta página es la longitud que de verdad aguanta un siglo frente a la configuración que hayas elegido, que suele ser el número más útil.
Porque es un exponente, no un multiplicador. El coste c significa 2^c iteraciones, así que cada paso duplica el trabajo del atacante. hashcat mide bcrypt con coste 5, que son 32 iteraciones; un sistema en producción debería ir a 10 o más, y el coste 12 son 4.096 iteraciones. Pasar del ajuste de la prueba al coste 12 divide el rendimiento del atacante entre 128 por un coste de inicio de sesión medido en milisegundos.
De pruebas de rendimiento publicadas de hashcat v6.2.6 con núcleos optimizados, sobre una RTX 4090 a frecuencias de fábrica y una RTX 5090, difundidas por Chick3nman. Cada algoritmo indica su número de modo de hashcat para que la cifra pueda reproducirse con hashcat -b -m y compararse. Argon2 aparece sin tasa a propósito: hashcat no añadió soporte para Argon2 hasta la versión 7, así que no hay ninguna prueba comparable que citar.
No, y la diferencia importa. Esta página modela la búsqueda exhaustiva, que es el techo: supone que el atacante no aprende nada del hecho de que la gente elige palabras, nombres y fechas. Un comprobador de fortaleza pone precio a esos patrones, así que te dirá que una frase de 15 caracteres hecha con cuatro palabras comunes cae en segundos aunque su espacio de claves parezca enorme. Usa esta página para dimensionar una configuración de almacenamiento y un comprobador de fortaleza para juzgar una contraseña concreta.