Así funcionan los ataques de fuerza bruta
Por qué importa la longitud: ejemplos de cálculo y contramedidas.
En los ataques de fuerza bruta, los atacantes intentan adivinar una contraseña probando sistemáticamente todas las combinaciones de caracteres posibles. La idea subyacente es sencilla: probar el mayor número posible de combinaciones por segundo, idealmente en GPU o en sistemas distribuidos. También se habla de una búsqueda exhaustiva (exhaustive search).
En la práctica, lamentablemente, estos ataques suelen tener éxito porque muchas contraseñas son demasiado cortas, se limitan a unos pocos grupos de caracteres (solo letras) o aparecen en listas de palabras. Esto reduce drásticamente el espacio de búsqueda y hace que sea más fácil adivinarla. Aún más importante: se distingue entre ataques en línea (contra formularios de inicio de sesión, donde ayudan la limitación de intentos y el bloqueo de cuentas) y ataques fuera de línea (contra hash de contraseñas robadas, donde la función hash y la fuerza de la contraseña determinan el tiempo de ataque).
Descifrar contraseñas (offline) ≠ «descifrar»
Las contraseñas no se descifran, sino que se almacenan como valores hash y luego se buscan con tentativas + hash</ em> (fuerza bruta, ataques de diccionario/máscara). La velocidad de cálculo del hardware moderno se encuentra en el rango de miles de millones por segundo (para procesos hash rápidos), por lo que las contraseñas hash largas y con lentos (por ejemplo, Argon2, scrypt, PBKDF2, bcrypt) son decisivas.
Combinación y longitud de la contraseña
Los siguientes ejemplos muestran la influencia de la longitud y la selección de caracteres. A modo ilustrativo, se calculan 2000 millones de intentos por segundo (ordenador individual muy potente; los valores reales varían mucho en función del hardware y, en el caso offline, del método de hash).
Grupos de caracteres típicos:
- Números (10: 0-9)
- Letras (52: A-Z y a-z)
- Caracteres especiales (≈ 32; depende del conjunto de caracteres permitido por el servicio)
El número de combinaciones posibles se calcula de la siguiente manera:
Combinaciones posibles = (conjunto de caracteres)longitud de la contraseña
Importante: la tabla muestra el tiempo de búsqueda máximo. Por promedio, el tiempo real es aproximadamente la mitad. Además, los ataques de diccionario, de reglas y de máscara reducen considerablemente el espacio de búsqueda, mientras que los métodos de hash de contraseñas lentos reducen drásticamente la tasa efectiva.
| La contraseña consta de | Posibles combinaciones (fórmula) | Tiempo necesario (a 2 mil millones/s) |
|---|---|---|
|
5 caracteres |
( 53) ×
263 × 102 = |
17 576 000 / 2 000 000 000 = |
|
7 caracteres |
( 71) ×
261+6 = |
56 222 671 232 / 2 000 000 000 = |
|
8 caracteres |
( 84) × ( 42 ) × 264
× 322 × 102 = |
19 653 623 808 000 / 2 000 000 000 = |
|
9 caracteres |
( 92 ) × ( 73) × ( 42 ) ×
262+3 × 102 × 322 = |
9.197.895.942.144.000 / 2.000.000.000 = |
|
12 caracteres |
( 123) × ( 94 ) × ( 53) ×
263+4 × 323 × 102 = |
7.295.525.784.083.496.960.000 / 2.000.000.000 = |
|
14 caracteres |
( 144 ) × (
104) × ( 63 ) ×
264+4 × 103 × 323 = |
28 768 690 008 569 256 345 600 000 / 2 000 000 000 = |
Conclusión: Cada carácter adicional multiplica el espacio de búsqueda. La longitud prevalece sobre las reglas de complejidad, especialmente contra ataques offline, siempre que los servicios utilicen algoritmos hash adecuados y lentos con sal.
Protección contra ataques de fuerza bruta
La medida de usuario más eficaz es una contraseña maestra larga y aleatoria o una frase de contraseña (por ejemplo, varias palabras aleatorias), única para cada servicio. Password Depot ayuda a generarla y muestra un tiempo de ataque estimado, que tiene en cuenta, además de la longitud y el conjunto de caracteres, las vulnerabilidades del diccionario.
- Activar MFA/2FA (por ejemplo, aplicación TOTP o token de hardware); cuando sea posible, las claves de acceso son aún mejores. Véase las indicaciones de la BSI.
- No reciclar contraseñas. Cada cuenta necesita una contraseña propia y segura.
- Longitud en lugar de complejidad obligatoria. Los servicios deben permitir contraseñas/frases de contraseña largas (mínimo 64 caracteres) y bloquear las contraseñas comprometidas (lista negra).
- Procedimientos de hash lentos en el lado del servidor (por ejemplo, Argon2, scrypt, PBKDF2, bcrypt) con salt y factores de trabajo adecuados; los hash rápidos como MD5/SHA-1 no son no son adecuados para el almacenamiento de contraseñas.
- Limitación de velocidad/restricción y bloqueos: los ataques en línea deben frenarse mediante un número limitado de intentos fallidos, tiempos de espera progresivos y, si es necesario, CAPTCHA.
Además, Password Depot dificulta los intentos de tasa en línea bloqueando brevemente la máscara de entrada de la contraseña maestra después de entradas incorrectas, con un tiempo de espera cada vez mayor en caso de intentos fallidos repetidos.
Fuentes adicionales
- NIST SP 800‑63B (Rev. 4), Apéndice: Fortaleza de las contraseñas : longitud, frases de contraseña, ataques fuera de línea (miles de millones de hash/seg.) y concepto de limitación de velocidad.
- NIST SP 800‑63B (Rev. 3) – Entre otras cosas, longitud mínima, permitir contraseñas largas (≥ 64), listas negras, permitir pegar; limitación de velocidad/restricción con un límite máximo de 100 intentos fallidos consecutivos.
- OWASP Password Storage Cheat Sheet – Procedimientos adecuados (Argon2, scrypt, PBKDF2, bcrypt), factores salt/work.
- OWASP Authentication Cheat Sheet : directrices sobre la introducción de contraseñas, la longitud, las listas negras y los mecanismos de bloqueo.
- BSI: Crear contraseñas seguras : contraseñas y frases de contraseña largas y complejas, entre otras cosas; consejos prácticos.
- BSI‑Presse 31.01.2025 : no se imponen cambios periódicos de contraseña; se prefiere la autenticación de dos factores (2FA) o las claves de acceso.
- distributed.net RC5 / estado actual del proxy – ejemplo ilustrativo de búsqueda exhaustiva y potencia de cálculo distribuida.