La tabla
Tiempo medio que tardaría un atacante en dar con una contraseña generada al azar, según su longitud y los caracteres que puede llevar. Cambia el escenario para ver cómo se mueve todo.
Los cuatro escenarios
En la web: 10 intentos por segundo
El atacante prueba contraseñas en la página de inicio de sesión. Es lento porque cada intento pasa por la red, y la mayoría de servicios bloquean o ralentizan tras unos cuantos fallos, así que en la realidad es aún más lento. Aquí solo caen las contraseñas muy comunes.
Hash lento: 100.000 intentos por segundo
Alguien ha robado la base de datos, pero el servicio guardaba las contraseñas con un algoritmo diseñado para ser lento, como bcrypt, scrypt o Argon2. Cada intento cuesta mucho cálculo. Es lo que debería hacer cualquier servicio bien hecho.
Hash rápido con una tarjeta gráfica: 10.000 millones por segundo
La base de datos robada usaba un hash rápido (SHA-1, SHA-256 sin más). Una sola tarjeta gráfica de gama alta prueba miles de millones por segundo. Es el escenario que usamos en nuestro generador y en el comprobador: realista y algo pesimista.
Hash rápido con 12 tarjetas: un billón por segundo
Un equipo dedicado con varias tarjetas gráficas atacando hashes muy rápidos como MD5 o NTLM (el de Windows). Sigue habiendo servicios antiguos que guardan así las contraseñas.
Cómo se calcula
Si una contraseña tiene L caracteres y cada uno se elige al azar entre N posibles, hay NL combinaciones. De media, el atacante acierta tras probar la mitad:
tiempo medio = NL ÷ 2 ÷ intentos por segundo
Por ejemplo, 12 caracteres con letras y números: 6212 ≈ 3,2 × 1021 combinaciones. A 10.000 millones por segundo, la mitad lleva 1,6 × 1011 segundos, unos 5.100 años.
En la tabla esa casilla dice 44 siglos, algo menos, porque cuando hay varios tipos de caracteres contamos solo las contraseñas que llevan al menos uno de cada tipo, como hace nuestro generador. Es un ajuste pequeño, pero preferimos no redondear a favor. El mismo cálculo, expresado en bits, está en la guía de entropía de una contraseña.
Lo que la tabla no cuenta
Solo vale para contraseñas aleatorias. Una contraseña elegida por una persona no se ataca probando todas las combinaciones, sino empezando por palabras, nombres, fechas y contraseñas filtradas. Valencia1985! tiene 13 caracteres de los cuatro tipos y, según la tabla, debería aguantar siglos; en la realidad cae en minutos. Para esas usa el comprobador, que busca esos patrones.
Una contraseña filtrada se descifra al instante, mida lo que mida, porque ya está en las listas que se prueban primero.
El hardware mejora. Las tarjetas gráficas ganan velocidad cada pocos años, así que conviene dejar margen. Con 16 caracteres al azar lo tienes de sobra.