Know-how / Seguridad de contraseñas

Así funcionan los ataques de fuerza bruta

Por qué la longitud importa: ejemplos de cálculo y contramedidas.

En los ataques de fuerza bruta los atacantes intentan adivinar una contraseña mediante la prueba sistemática de todas las combinaciones posibles de caracteres. 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 (búsqueda exhaustiva).

En la práctica, este tipo de ataques suele tener éxito porque muchas contraseñas son demasiado cortas , se limitan a pocos grupos de caracteres (solo letras) o aparecen en listas de palabras . Esto reduce drásticamente el espacio de búsqueda y facilita adivinarlas. Más importante aún: se distingue entre ataques online (contra formularios de inicio de sesión; aquí ayudan la limitación de intentos y el bloqueo de cuentas) y ataques offline (contra hashes de contraseñas robados; aquí la función hash y la solidez de la contraseña determinan el tiempo del ataque).

Descifrar contraseñas (offline) ≠ «desencriptar»

Las contraseñas no se desencriptan, sino que se almacenan como valores hash y después se buscan mediante adivinar + aplicar hash (fuerza bruta, ataques de diccionario o por máscara). La velocidad de cálculo del hardware moderno se sitúa en el orden de miles de millones por segundo (para algoritmos hash rápidos), por lo que las contraseñas hash largas y con algoritmos lentos (p. ej., Argon2, scrypt, PBKDF2, bcrypt) son decisivas.

Referencia histórica y actual: El proyecto RC5 de distributed.net demuestra la fuerza bruta de la búsqueda exhaustiva en un espacio de claves: 56 bits se resolvieron en 1997 tras 250 días, y 64 bits en 2002 tras 1.757 días. Actualmente, el estado del proxy para RC5-72 aprox. 2,38 billones de claves por segundo (a fecha de consulta de hoy). Esto es fuerza bruta de claves y no hash de contraseñas, pero ilustra hasta qué punto escala 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. Para ilustrarlo, se calcula con 2 mil millones de intentos por segundo (equipo individual muy potente; los valores reales varían mucho según el hardware y, en caso de ataque offline, el procedimiento 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 obtiene de:

Mögliche Kombinationen = (Zeichenmenge)Passwortlänge

Importante: La tabla muestra el tiempo de búsqueda máximo. En promedio, el tiempo real se sitúa en torno a la mitad. Además, los ataques de diccionario, por reglas y por máscaras reducen considerablemente el espacio de búsqueda, mientras que los procedimientos lentos de hash de contraseñas reducen drásticamente la tasa efectiva.

Passwort besteht ausMögliche Kombinationen (Formel)Benötigte Zeit (bei 2 Mrd./s)
5 Zeichen
3 Kleinbuchstaben, 2 Zahlen
(53) × 263 × 10217.576.0000,009 Sekunden
7 Zeichen
1 Großbuchstabe, 6 Kleinbuchstaben
(71) × 261+656.222.671.232≈ 28 Sekunden
8 Zeichen
4 Kleinbuchstaben, 2 Sonderzeichen, 2 Zahlen
(84) × (42) × 264 × 322 × 10219.653.623.808.000≈ 2,73 Stunden
9 Zeichen
2 Groß-, 3 Kleinbuchstaben, 2 Zahlen, 2 Sonderzeichen
(92) × (73) × (42) × 262+3 × 102 × 3229.197.895.942.144.000≈ 53 Tage
12 Zeichen
3 Groß-, 4 Kleinbuchstaben, 3 Sonderzeichen, 2 Zahlen
(123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021≈ 115.591 Jahre
14 Zeichen
4 Groß-, 4 Kleinbuchstaben, 3 Zahlen, 3 Sonderzeichen
(144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025≈ 455.812.388 Jahre

Conclusión: Cada carácter adicional multiplica el espacio de búsqueda. La longitud supera a las reglas de complejidad, especialmente frente a Ataques offline – siempre que los servicios utilicen funciones hash lentas y adecuadas con Salt.

Protección frente a ataques de fuerza bruta

La medida de usuario más eficazBenutzer‑Maßnahme es una contraseña maestra larga y aleatoria o bien una frase de contraseña (p. ej., varias palabras aleatorias) – única para cada servicio. Password Depot ayuda a generarla y muestra un tiempo de ataque estimado que, además de la longitud y el conjunto de caracteres, también tiene en cuenta vulnerabilidades de diccionario.

  • Activar MFA/2FA (p. ej., aplicación TOTP o token de hardware) – cuando sea posible, los Passkeys son aún mejores. Véase las indicaciones del BSI.
  • No reutilice contraseñas. Cada cuenta necesita una contraseña propia y segura.
  • Priorizar la longitud frente a la complejidad obligatoria. Los servicios deberían permitir contraseñas/frases de contraseña largas (mín. 64 caracteres) y bloquear las contraseñas comprometidas (lista negra).
  • Funciones hash lentas del lado del servidor (p. ej., Argon2, scrypt, PBKDF2, bcrypt) con Salt y factores de trabajo adecuados; los hashes rápidos como MD5/SHA-1 no son apropiados para almacenar contraseñas.
  • Rate limiting/throttling y bloqueos: Los ataques online deben frenarse mediante un número limitado de intentos fallidos, tiempos de espera progresivos y, en caso necesario, CAPTCHA.

Además, Password Depot dificulta los intentos de acceso online por fuerza bruta bloqueando brevemente el campo de entrada de la contraseña maestra tras introducir datos incorrectos, con un tiempo de espera creciente en caso de intentos fallidos repetidos.

Indicaciones prácticas para proveedores de servicios (equipos técnicos)

  • Acepte todos los caracteres imprimibles, incluidos espacios/Unicode, y permita copiar y pegar.
  • Implemente listas de bloqueo (contraseñas comprometidas o habituales) y limitación de velocidad con indicaciones claras para los usuarios.
  • Guarde las contraseñas exclusivamente como valores con salt y hash con KDF lentas y revise periódicamente los factores de coste.

Fuentes adicionales

Crear contraseñas seguras

Descubra cómo crear contraseñas que resistan ataques de fuerza bruta.

Consejos para contraseñas seguras