Descubre en qué consiste un ataque por fuerza bruta, cómo funciona y por qué es una de las amenazas más comunes para tus contraseñas. Aprende las mejores prácticas para proteger tus cuentas y conoce tecnologías como la autenticación en dos factores y las passkeys.
Brute Force es uno de los métodos más sencillos para descifrar contraseñas: un programa prueba automáticamente numerosas combinaciones hasta encontrar la correcta. Este enfoque, conocido como ataque por fuerza bruta, no requiere vulnerabilidades complejas: basta con poder intentar varias combinaciones repetidas veces para acceder.
Un ataque Brute Force consiste en buscar la información correcta mediante la comprobación sistemática de un gran número de posibles combinaciones. Al tratarse de contraseñas, el programa genera una combinación, la prueba y, si no es correcta, pasa a la siguiente.
La principal ventaja para los atacantes es la simplicidad: no es necesario conocer la estructura de la contraseña ni explotar vulnerabilidades. Si el número de combinaciones es finito y se dispone de suficiente tiempo, teóricamente se encontrará la correcta.
Pero el término "teóricamente" es clave: el número de posibles contraseñas puede crecer tan rápido que intentar todas las opciones se vuelve inviable incluso con hardware potente.
Imagina una contraseña de cuatro dígitos. Puedes elegir entre diez números (0-9) para cada dígito, lo que da 10 000 combinaciones posibles, de 0000 a 9999. Un ordenador puede probarlas una por una.
Si aumentamos la longitud a ocho dígitos, ya hablamos de 100 millones de combinaciones. Y si además usamos letras mayúsculas, minúsculas y símbolos, el espacio de búsqueda crece exponencialmente.
Por eso, la longitud de la contraseña es tan importante: cada nuevo carácter multiplica el número de combinaciones posibles según el conjunto de símbolos disponible.
Por ejemplo, si hay 62 símbolos (letras latinas en mayúscula y minúscula más números), una contraseña de 8 caracteres tiene más de 218 billones de combinaciones posibles.
La velocidad de comprobación depende del escenario. No se pueden lanzar millones de intentos por segundo en un formulario de inicio de sesión web: el servidor puede imponer retrasos, bloquear direcciones o limitar intentos. Pero si el atacante tiene acceso a una base de hashes, puede probar combinaciones localmente mucho más rápido.
El ataque por fuerza bruta comprueba todas las combinaciones posibles, pero en la práctica rara vez se empieza así. Las personas suelen elegir contraseñas predecibles, por lo que los atacantes primero prueban las más probables.
El ataque de diccionario usa listas de palabras y contraseñas comunes (como password, qwerty, secuencias numéricas) y sus variantes (sustituciones de letras por números, años, símbolos al final o cambios en mayúsculas).
Una contraseña que parece compleja por una mayúscula y un símbolo puede seguir un patrón común. Así, el Brute Force en sentido amplio a menudo comienza por variantes probables antes de ampliar el rango de búsqueda solo si es necesario.
El descifrado de contraseñas puede ocurrir en dos escenarios clave: a través del propio servicio (online) o localmente tras obtener una base de datos de hashes (offline). Esto afecta directamente a la velocidad y la efectividad del ataque.
En el método online, el ataque ocurre directamente en la página de inicio de sesión de un sitio o app. Para cada intento, el sistema recibe un usuario y una contraseña, los compara y da una respuesta.
La velocidad aquí está limitada por el servidor: aunque el ordenador genere millones de contraseñas, no puede enviarlas todas a la vez. Los servicios pueden limitar los intentos, añadir retrasos o bloquear temporalmente tras varios fallos, haciendo que probar millones de combinaciones tome años.
Además, los sistemas modernos analizan las fuentes de los intentos: si desde un IP o para un usuario llegan contraseñas incorrectas de manera reiterada, esa actividad se detecta fácilmente.
Por ello, el Brute Force clásico a través de formularios rara vez es efectivo en servicios bien configurados. El mayor riesgo es en sistemas sin límites de intentos o con contraseñas débiles.
La situación cambia si se filtra una base de datos. Un servicio seguro no debería almacenar contraseñas en texto claro, sino un hash (resultado de una función especial). Cuando el usuario introduce su contraseña, el sistema calcula su hash y lo compara con el almacenado.
Si se filtra la base, el atacante puede calcular localmente los hashes de las contraseñas que prueba y compararlos con los robados, sin restricciones de servidor ni bloqueos.
Aquí, la velocidad depende del algoritmo de hash y del hardware. Por eso, el almacenamiento seguro de contraseñas es tan importante como la seguridad del login. Los sistemas modernos usan algoritmos pensados para que cada intento consuma recursos significativos.
Si quieres saber más sobre por qué los sitios almacenan hashes y cómo se protegen en caso de fuga, te recomendamos leer esta guía sobre hash de contraseñas.
Aun así, el hash no hace imposible el ataque por fuerza bruta: si el usuario elige una contraseña corta o común, se puede encontrar rápidamente. Por eso, la protección debe ser de varios niveles: contraseñas fuertes, almacenamiento seguro y límites de intentos.
La velocidad del ataque depende de varios factores: longitud de la contraseña, tamaño del conjunto de símbolos, método de almacenamiento y ubicación de la comprobación (servidor o local).
Un mismo ordenador puede probar miles de combinaciones en un escenario y casi nada en otro. Cuanto mayor sea el espacio de búsqueda y más costoso el cálculo de cada intento, más difícil será el ataque.
El factor principal es la longitud. Si puedes usar N símbolos diferentes y la contraseña tiene L caracteres, el número total de combinaciones es N^L.
Por ejemplo, con solo dígitos decimales, cada posición tiene 10 opciones. Un código de 4 cifras da 10 000 combinaciones; de 6 cifras, un millón; de 8 cifras, 100 millones.
Si se usan letras y números (62 símbolos), para 8 posiciones hay más de 218 billones de combinaciones.
Por eso, aumentar la longitud suele ser más efectivo que añadir un símbolo especial. Una contraseña de 14-16 caracteres impredecibles es mucho más resistente que una corta llena de símbolos.
Ampliar el conjunto de símbolos también aumenta las combinaciones. Solo con letras minúsculas latinas hay 26 opciones por posición; añadiendo mayúsculas, 52; y con números, 62.
Los símbolos especiales amplían aún más el espacio, pero no garantizan seguridad por sí solos. Una combinación como una palabra común seguida de un 1 y un ! parece compleja, pero sigue patrones predecibles para los programas de ataque.
Los programas modernos tienen en cuenta patrones comunes: sustituciones (a por @, o por 0), años, mayúscula inicial, símbolo final, etc. Por eso, la imprevisibilidad es igual de importante que la complejidad formal.
En ataques offline, la velocidad depende de lo rápido que se pueda probar cada contraseña. Si el algoritmo de hash es rápido, el hardware puede probar muchas más combinaciones en menos tiempo.
Por ello, los sistemas utilizan algoritmos diseñados para ser intencionadamente lentos y consumir recursos, de modo que cada intento sea más costoso y el Brute Force se vuelva poco práctico.
Además, se añade una sal: un valor aleatorio que se combina con la contraseña antes de calcular el hash. Así, la misma contraseña no da el mismo hash en distintos usuarios, lo que impide preparar tablas universales para atacar múltiples cuentas a la vez.
La resistencia al Brute Force depende de dos factores: el usuario elige una contraseña larga e impredecible, y el sistema hace que cada intento sea costoso. Mientras más fuertes sean ambos, menos viable será el ataque.
La protección moderna contra ataques por fuerza bruta se basa en varios mecanismos. Incluso si el usuario tiene una contraseña débil, el servicio puede complicar mucho el ataque gracias a límites de velocidad, verificaciones adicionales y autenticación de dos factores (2FA).
La clave es bloquear la principal ventaja del Brute Force: la posibilidad de probar millones de combinaciones rápidamente.
El método más evidente es limitar el número de intentos de acceso. Si tras algunos fallos el servicio impone una pausa, la velocidad del ataque se reduce drásticamente.
Por ejemplo, si la comprobación es instantánea, un programa podría lanzar miles de intentos seguidos. Pero si tras varios errores hay que esperar segundos o minutos, incluso pocos intentos se vuelven inviables.
Algunos servicios aumentan la demora gradualmente: tras los primeros errores casi no se nota, pero si la actividad sospechosa continúa, las pausas crecen.
Otra opción es bloquear temporalmente la cuenta, IP o fuente de los intentos. Sin embargo, los bloqueos estrictos se usan con cautela: un atacante podría bloquear cuentas ajenas introduciendo contraseñas erróneas a propósito.
Por ello, se suelen combinar varios indicadores: número de intentos, frecuencia, IP, tipo de dispositivo e historial de acceso.
Si se detectan muchos intentos de acceso, el sistema puede requerir una prueba adicional para verificar que es una persona la que accede, como un CAPTCHA u otros desafíos que dificultan el ataque automatizado.
Los sistemas avanzados pueden analizar el comportamiento: frecuencia de intentos, navegación entre páginas, parámetros del navegador o dispositivo, etc. Un usuario normal se equivoca unas veces y luego accede o restaura la contraseña, mientras que un bot lanza cientos de peticiones similares.
Incluso si se acierta la contraseña, no siempre se consigue entrar. Si la cuenta tiene autenticación de dos factores, tras la contraseña se exige una verificación adicional: un código de una app, una llave de seguridad o confirmación en otro dispositivo.
Así, la contraseña es solo el primer nivel de protección. Aunque se descifre o filtre, no basta para acceder.
Para saber más sobre métodos de autenticación y su seguridad, consulta nuestra guía sobre autenticación en dos factores.
La combinación de límites de intentos, análisis de comportamiento y autenticación adicional hace que el Brute Force online clásico sea mucho menos efectivo: el atacante debe superar varios niveles de seguridad independientes.
Para el usuario, la protección contra Brute Force consiste en hacer que su contraseña no sea un objetivo fácil y minimizar el impacto de una posible filtración. Lo más importante es la longitud, unicidad e imprevisibilidad, más allá de añadir símbolos especiales.
Cuanto más larga sea la contraseña, más difícil será descifrarla por fuerza bruta. Una combinación aleatoria o una frase de contraseña larga es más fuerte que una corta llena de símbolos.
También es fundamental usar contraseñas diferentes en cada servicio. Si se reutiliza una contraseña y se filtra en un sitio, todas las cuentas quedan expuestas.
No es necesario memorizar decenas de contraseñas largas: existen gestores de contraseñas que las generan y almacenan de forma cifrada.
La autenticación de dos factores añade una capa de protección tras la contraseña. Incluso si un atacante obtiene la clave correcta, necesitará superar otro desafío.
Es especialmente recomendable para correos, redes sociales, servicios en la nube y cuentas sensibles. Siempre que sea posible, elige apps autenticadoras, llaves de seguridad o confirmaciones en dispositivos de confianza. Los códigos SMS también ayudan, aunque tienen limitaciones y riesgos propios.
Una solución revolucionaria es prescindir por completo de la contraseña tradicional. Passkeys utiliza un par de claves criptográficas en vez de un secreto que el usuario debe recordar y enviar al servidor.
Al crear una Passkey, el dispositivo genera una clave privada que permanece en el usuario y una clave pública que recibe el servicio. Al iniciar sesión, el servidor lanza un reto que el dispositivo valida con la clave privada.
Aquí no existe una contraseña que se pueda descifrar: el servidor no almacena ninguna combinación que pueda ser objeto de Brute Force. El acceso suele requerir desbloquear el propio dispositivo (PIN o biometría).
Para aprender más sobre cómo funcionan las Passkeys y la autenticación sin contraseñas, visita nuestra guía sobre autenticación sin contraseñas.
Si bien las contraseñas no desaparecerán de inmediato, combinar contraseñas largas y únicas, autenticación en dos factores y la transición a Passkeys reduce drásticamente las oportunidades para ataques por fuerza bruta.
El Brute Force sigue siendo uno de los métodos de ataque más simples: se prueban contraseñas hasta acertar. Sin embargo, su eficacia depende mucho de las circunstancias. Online, las demoras del servidor, bloqueos, CAPTCHAs y análisis de actividad limitan el ataque; offline, la longitud de la contraseña y el algoritmo de hash son clave.
Para el usuario, la mejor protección es usar contraseñas únicas y largas para cada servicio importante y activar la autenticación de dos factores. Donde estén disponibles, las Passkeys minimizan la dependencia de contraseñas y eliminan casi por completo la posibilidad de un ataque por fuerza bruta exitoso.