Autenticación y contraseñas

Ataque de fuerza bruta

Lectura de aproximadamente 4 minutos

Qué es un ataque de fuerza bruta

Un ataque de fuerza bruta (ataque por fuerza bruta) es una técnica de ataque que prueba una por una todas las combinaciones posibles de contraseñas o claves de cifrado para encontrar la correcta. Como su nombre indica ("fuerza bruta"), es un método primitivo pero seguro que se basa en la potencia de cálculo en lugar de la deducción inteligente.

En teoría, con suficiente tiempo y recursos de cálculo, cualquier contraseña puede ser descifrada, pero el tiempo necesario aumenta exponencialmente con la longitud y complejidad de la contraseña. Con las GPU modernas, una contraseña alfanumérica de 8 caracteres puede descifrarse en unas pocas horas, pero una contraseña aleatoria de 12 caracteres o más es difícil de descifrar en un tiempo realista.

Tiempo estimado de descifrado según la longitud de la contraseña

Se muestran los tiempos estimados de descifrado según el tipo de caracteres y la longitud de la contraseña (valores estimados utilizando clústeres de GPU modernos).

  • 6 caracteres (solo letras minúsculas): Menos de unos segundos
  • 8 caracteres (mayúsculas + minúsculas + números): Aproximadamente 1 hora
  • 8 caracteres (mayúsculas + minúsculas + números + símbolos): Aproximadamente 8 horas
  • 10 caracteres (mayúsculas + minúsculas + números + símbolos): Aproximadamente 5 años
  • 12 caracteres (mayúsculas + minúsculas + números + símbolos): Aproximadamente 34.000 años
  • 16 caracteres (mayúsculas + minúsculas + números + símbolos): Prácticamente imposible de descifrar

Estos valores son para fuerza bruta pura. Al combinar con ataques de diccionario o ataques basados en reglas, las palabras del diccionario y los patrones comunes (añadir números al final, poner la primera letra en mayúscula, etc.) se descifran mucho más rápido. Usar cadenas aleatorias generadas por un gestor de contraseñas es la mejor medida.

Variantes del ataque de fuerza bruta

Además de la fuerza bruta pura, existen variantes que mejoran la eficiencia.

  • Ataque de diccionario: Prueba prioritariamente palabras del diccionario y contraseñas de uso frecuente. Contraseñas frecuentes como "password", "123456" o "qwerty" se descifran instantáneamente
  • Ataque basado en reglas: Aplica reglas de transformación a las palabras del diccionario (primera letra en mayúscula, añadir números al final, sustituir l por 1, etc.). Efectivo contra patrones como "Password1" o "p@ssw0rd"
  • Ataque de tabla arcoíris: Utiliza una tabla de valores hash precalculados para buscar contraseñas a partir de valores hash de forma inversa. No es efectivo contra hashes que utilizan sal (datos aleatorios adicionales)
  • Fuerza bruta inversa: Prueba una sola contraseña (por ejemplo, "123456") contra una gran cantidad de cuentas. Similar al credential stuffing, pero se diferencia en que utiliza contraseñas adivinadas en lugar de datos filtrados

Medidas de defensa efectivas

La defensa contra ataques de fuerza bruta requiere medidas tanto del lado del usuario como del sistema.

Lado del usuario

  • Contraseñas aleatorias de 12 caracteres o más: Utilice cadenas aleatorias que incluyan mayúsculas, minúsculas, números y símbolos generadas por un gestor de contraseñas
  • Habilitar la autenticación de dos factores: Incluso si la contraseña es descifrada, el segundo factor de autenticación puede bloquear el inicio de sesión no autorizado
  • Uso de frases de contraseña: Una frase de contraseña que combina 4-5 palabras aleatorias (ejemplo: "correct horse battery staple") es fácil de recordar y garantiza una longitud suficiente

Lado del sistema

  • Bloqueo de cuenta: Bloquear temporalmente la cuenta después de un cierto número de intentos fallidos. Como puede ser explotado para ataques DoS, es deseable un diseño que extienda gradualmente el tiempo de bloqueo
  • Limitación de tasa: Limitar el número de intentos de inicio de sesión por dirección IP o sesión
  • CAPTCHA: Mostrar CAPTCHA después de múltiples fallos para suprimir los intentos con herramientas automatizadas
  • Algoritmos de hash adecuados: Utilizar funciones hash con coste computacional intencionalmente alto como bcrypt, scrypt o Argon2 para reducir la velocidad de descifrado sin conexión
  • Implementación de WAF: Detectar y bloquear patrones de inicio de sesión anómalos con un firewall de aplicaciones web

Conceptos erróneos comunes

Una contraseña compleja es segura aunque sea corta
Incluso una contraseña de 8 caracteres con símbolos puede descifrarse en unas pocas horas con clústeres de GPU modernos. La longitud es el factor más importante en la fortaleza de una contraseña, y se recomiendan 12 caracteres o más. Una contraseña larga y aleatoria es más segura que una corta y compleja.
Los ataques de fuerza bruta están obsoletos y no son una amenaza real
Con la mejora del rendimiento de las GPU, la velocidad de ejecución de la fuerza bruta aumenta cada año. Además, la fuerza bruta sin conexión contra hashes de contraseñas filtrados no se ve afectada por la limitación de tasa ni el bloqueo de cuentas, por lo que sigue siendo una amenaza grave.

Términos relacionados

Artículos relacionados