Ataque de fuerza bruta
# Ataque de fuerza bruta

En criptografía, se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso.
Dicho de otro modo, define al procedimiento por el cual a partir del conocimiento del algoritmo de cifrado empleado y de un par texto claro/texto cifrado, se realiza el cifrado (respectivamente, descifrado) de uno de los miembros del par con cada una de las posibles combinaciones de clave, hasta obtener el otro miembro del par. El esfuerzo requerido para que la búsqueda sea exitosa con probabilidad mejor que la par será $10^{n}-1$ operaciones, donde $n$ es la longitud de la clave (también conocido como el espacio de claves).
Otro factor determinante en el coste de realizar un ataque de fuerza bruta es el juego de caracteres que se pueden utilizar en la clave. Contraseñas que sólo utilicen dígitos numéricos serán más fáciles de descifrar que aquellas que incluyen otros caracteres como letras, así como las que están compuestas por menos caracteres serán también más fáciles de descifrar, la complejidad impuesta por la cantidad de caracteres en una contraseña es logarítmica.

# Ataque de fuerza bruta
## Descripción y cálculo

La fuerza bruta suele combinarse con un ataque de diccionario, en el que se encuentran diferentes palabras para ir probando con ellas.
Estos tipos de ataques, no son rápidos, para una contraseña compleja, puede llegar a tardar siglos (aunque también depende de la capacidad de operación del ordenador que lo ejecute).
En la actualidad este tipo de ataques son usados para hackear Facebook, correos electrónicos, auditar redes WIFI y otras redes sociales.
Se puede calcular la cantidad de posibles contraseñas. De esto depende la cantidad de caracteres de la contraseña en cuestión, y el conjunto de caracteres. Evidentemente, puesto que la contraseña se desconoce, no se sabe cuán larga es, ni cuáles caracteres contiene; sin embargo, de momento consideremos una contraseña de exactamente $10$ caracteres, de los cuales dichos caracteres son los siguientes $75$: el alfabeto español (a-z, A-Z, contando la eñe, es decir $27\cdot 2=54$ caracteres), los caracteres numéricos (0-9, es decir $10$ caracteres), y los $11$ caracteres #, $, %, &, /, *, -, ., _ y @. Es decir, consideraremos un total de $54+10+11=75$ posibles caracteres. Procedamos al cálculo. Ya que es posible repetir caracteres, y su orden sí importa, el problema se trata de una variación con repetición (no de una combinación, ni una permutación), y por lo tanto de la estadística/combinatoria tenemos que existe un total de $75^{10}$ posibles contraseñas; nótese que la cantidad de posibles contraseñas varía exponencialmente, no linealmente. Pero esto es suponiendo que la contraseña es exactamente de $10$ caracteres, y de los cuales todos esos son algunos de los $75$ mencionados anteriormente. Sabemos que la contraseña desconocida no necesariamente será de $10$ caracteres, sino que puede ser más corta o más larga (de $4,5,6,7,\ldots$ caracteres), de manera que también debemos considerar esas posibilidades; supondremos que la contraseña es de al menos $4$ caracteres y como mucho de $20$, inclusive. También sabemos que es posible que la contraseña tenga otros caracteres (por ejemplo "+", "?", e incluso caracteres de otros alfabetos como el griego o el japonés, y cualquier carácter UNICODE), aunque omitiremos este hecho y nos conformaremos con el conjunto anterior. Por lo tanto, en definitiva, existe un total de $75^{4}+75^{5}+75^{6}+\cdots +75^{20}$ posibles contraseñas. El resultado de esta suma es el siguiente:
$\sum _{i=4}^{20}75^{i}=32\,140\,661\,543\,249\,931\,324\,877\,448\,984\,094\,140\,625\approx 3.2141{\text{E}}37$
posibles contraseñas. Obviamente en realidad no es necesario probarlas todas; se requerirían $3.2141{\text{E}}37$ intentos sólo si por muchísima casualidad el último intento de contraseña es el correcto, pero la probabilidad de que eso ocurra es prácticamente 0; en cambio, podemos asumir que en promedio se adivinará la clave cuando se haya probado la mitad de las posibles combinaciones, es decir ${\frac {3.2141{\text{E}}37}{2}}=1.6070{\text{E}}37$, bajo las suposiciones mencionadas antes. Este número es muy grande, por lo que puede tomar mucho tiempo en encontrar la contraseña correcta, manifestando la desventaja del ataque de fuerza bruta. Para adivinar una contraseña también influirán otros factores tales como la rapidez de la computadora usada, en cuál número de intentos se adivinaría (lo cual en general se desconoce), si el servidor o sitio web tiene CAPTCHA, y/o si el servidor o sitio web deshabilita temporalmente el acceso a una cuenta debido a varios intentos de contraseña (actualmente sitios como Facebook deshabilitan temporalmente luego de varios intentos fallidos, y otros como Snapchat requieren resolver CAPTCHA, pero Instagram no emplea ninguna de esas dos técnicas y por ende sus usuarios son más vulnerables a los hackers).
Troy Hunt, un director regional de Microsoft de Australia, analizó las contraseñas de los sitios web de Sony y Gawker obtenidos en un breach (violación de datos) y las publicadas por el grupo de hackers LulzSec incluyendo sitios como pron.com. De este análisis determinó que el 14 % de contraseñas son de nombres de personas (p. ej. maggie, michael, jennifer), el 8 % son de nombres de lugares (p. ej. dallas, canada, boston), el 25 % son palabras de diccionarios (p. ej. password, monkey, dragon), el 14 % son exclusivamente números (p. ej. 123456, 12345678, 123456789), el 2.7 % son palabras repetidas dos veces (p. ej. blahblah, poopoo, lovelove), el 2.6 % son palabras del correo del usuario (p. ej. murphy666 en murphy666@…, baolihua en baolihua@…, y racecar73 en racecar73@…), entre otras categorías.
El sitio web WP Engine (WordPress Engine) analizó dos conjuntos de datos sobre contraseñas, uno que se publicó en foro ruso de BitCoin y otro publicado por el consultor de seguridad Mark Burnett que incluye más de 10 millones de contraseñas en toda la web. De este análisis se observó que algunas de las contraseñas más comunes son 123456, password, 12345678, qwerty, 123456789, 12345, 1234, 111111, 1234567, dragon, 123123, baseball, abc123, football, monkey, letmein, shadow, master, 696969, michael, mustang, 666666, qwertyuiop, 123321, 1234567890. También se observó que es común añadir un número entre 1 y 9 al final de la contraseña. En ese análisis también se revelan contraseñas de empleados de empresas como Facebook, Yahoo!, Mozilla, BBC, Vimeo, Nike, Microsoft, BuzzFeed, PayPal, IBM, Google, Twitter, GitHub, Pinterest, y Dropbox.