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.
Referencia histórica y actual: El proyecto RC5 de distributed.net demuestra la potencia bruta de la búsqueda exhaustiva en un espacio de claves: en 1997 se encontraron 56 bits tras 250 días, y en 2002 se encontraron 64 bits tras 1757 días. Actualmente, el estado del proxy para RC5-72 muestra aproximadamente 2,38 billones de claves por segundo (a fecha de hoy). Se trata de fuerza bruta de claves y no de hash de contraseñas, pero ilustra claramente la escalabilidad de la potencia de cálculo distribuida.
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:
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 (3 letras minúsculas,, 2 números) |
(53) × 263 × 10217.576.000 | 0,009 segundos |
| 7 caracteres (1 mayúscula,, 6 minúsculas) |
(71) × 261+656.222.671.232 | ≈ 28 segundos |
| 8 caracteres (4 letras minúsculas,, 2 caracteres especiales,, 2 números) |
(84) × (42) × 264 × 322 × 10219.653.623.808.000 | ≈ 2,73 horas |
| 9 caracteres (2 mayúsculas,, 3 minúsculas,, 2 números,, 2 caracteres especiales) |
(92) × (73) × (42) × 262+3 × 102 × 3229.197.895.942.144.000 | ≈ 53 días |
| 12 caracteres (3 mayúsculas,, 4 minúsculas,, 3 caracteres especiales,, 2 números) |
(123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021 | ≈ 115.591 años |
| 14 caracteres (4 mayúsculas,, 4 minúsculas,, 3 números,, 3 caracteres especiales) |
(144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025 | ≈ 455.812.388 años |
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 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.
- Acepte todos los caracteres de impresión, incluidos los espacios en blanco/Unicode, y permita copiar y pegar.
- Implemente listas de bloqueo (contraseñas comprometidas/comunes) y limitación de velocidad con instrucciones claras para los usuarios.
- Almacene las contraseñas exclusivamente como valores salados y hash con KDF lentos y compruebe los factores de trabajo con regularidad.
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.
Crear contraseñas seguras
Aprenda a crear contraseñas que resistan ataques de fuerza bruta.
Consejos para contraseñas seguras