CommandsStyle

miércoles, 12 de julio de 2017

¿Tus contraseñas van al gimnasio?

¡Hola de nuevo, visitante del averno!

En el post de hoy vamos a ver como de fuerte es una contraseña.

Contraseña fuerte
Contraseña fuerte
Una contraseña fuerte es una contraseña que para adivinarse utilizando todas las combinaciones posibles se tarde tanto tiempo que no sea algo que se pueda plantear por términos de coste temporal.

O lo que es lo mismo, que tengamos que utilizar un algoritmo de fuerza bruta que utilice todas las combinaciones de caracteres permitidos para conseguir averiguar la contraseña y que al tener que probar muchas contraseñas, se tarde demasiado y no sea algo factible.

Con esto en la cabeza, vamos a empezar a hacer cálculos:

Supongamos que utilizamos el alfabeto español, que consta de 27 letras o caracteres (a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z)

Si utilizando únicamente el alfabeto español creamos una contraseña de 4 caracteres de largo (Como puede ser la palabra “hola”), el número de contraseñas posibles con este número de símbolos y con una longitud de 4 caracteres, es el siguiente:

27*27*27*27 = 27^4 = 531.441

531.441 puede parecernos un numero de contraseñas muy alto, pero un ordenador puede probar miles de contraseñas en unas horas.

Ahora bien, todo el mundo sabe que las letras pueden ser mayúsculas y minúsculas.

Si utilizamos el alfabeto español, con las letras mayúsculas y minúsculas, entonces el alfabeto que utilizamos para generar las contraseñas consta de 54 símbolos (a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z)

Ahora supongamos que creamos una contraseña de 4 caracteres de largo, como en el caso anterior, pero en este caso utilizamos las letras mayúsculas y creamos una contraseña (Como puede ser la palabra “Hola”).

Si un atacante quiere averiguar nuestra contraseña, necesitara probar todas las letras mayúsculas, y todas las letras minúsculas.

Como la longitud de la contraseña es 4, el número de posibles contraseñas con las mayúsculas y minúsculas de longitud 4 es:

54*54*54*54 = 54^4 = 8.503.056

Como vemos, añadiendo las mayúsculas, la contraseña se vuelve mucho más complicada de averiguar utilizando fuerza bruta. Pero… no vamos a quedarnos aquí.
Queremos una contraseña más robusta todavía, así que además de las letras mayúsculas y minúsculas, vamos a introducir los números.

Si introducimos los números, el número de símbolos con el que podemos crear la contraseña será de 64 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9).

Utilizando este alfabeto de 64 símbolos, vamos a crear una contraseña de 4 caracteres de longitud (Por ejemplo “Hol4”).

El número de posibles contraseñas de 4 caracteres de longitud y 64 posibles símbolos asciende a:

64*64*64*64 = 64^4 = 16.777.216

El número de posibles contraseñas ha crecido un poco respecto al caso anterior, pero… ¡todavía se puede mejorar!

Vamos a introducir caracteres no alfanuméricos al alfabeto con el que generamos las contraseñas, en este caso vamos a añadir los caracteres “ !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~ ” lo que suma un total de 33 caracteres (Si no me equivoco :P).

Si sumamos estos 33 caracteres al alfabeto que teníamos anteriormente, obtenemos un alfabeto de 97 símbolos (a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~).

Con este alfabeto de 97 símbolos, vamos a crear una contraseña de 4 caracteres de longitud igual que en los casos anteriores. (Por ejemplo “Ho!4”).

El número de posibles contraseñas de 4 caracteres de longitud y 97 posibles símbolos asciende a:

97*97*97*97 = 97^4 = 88.529.281

Ahora podemos decir que tenemos un alfabeto completito, pero… 88.529.281 posibles contraseñas… todavía son “pocas”.

Para mejorar la complejidad de la contraseña llegado este punto, lo único que podemos hacer el aumentar su longitud.

Vamos a suponer una contraseña de 8 caracteres de longitud, utilizando el alfabeto de 97 símbolos que hemos visto anteriormente.(Esto es, una contraseña como puede ser “3l@verNo”)

El número de posibles contraseñas de 8 caracteres de longitud utilizando 97 símbolos es de:

97*97*97*97*97*97*97*97 =  97^8 = 7.837.433.594.376.961

¡Este número ya está mucho mejor!

Pero hay veces que queremos proteger cuentas de administrador o información utilizando una contraseña aún más fuerte, así que vamos a ver cuántas posibles contraseñas hay con una longitud de 16 caracteres y un alfabeto de 97 símbolos. (Una contraseña como por ejemplo “1nf0rm@ticoAvern”).

97*97*97*97*97*97*97*97*97*97*97*97*97*97*97*97 = 97^16 = 61.425.365.346.268.570.446.197.767.595.521

Con 61.425.365.346.268.570.446.197.767.595.521 posibles contraseñas seguro que a nadie se le ocurre hacer una fuerza bruta probándolas todas para robarte la contraseña.

Por otro lado, es frecuente que las aplicaciones o sistemas operativos te obliguen a utilizar una longitud mínima en las contraseñas, con lo que hay combinaciones que no hay que probar en un ataque de fuerza bruta.

Por ejemplo, si un sistema nos pide una longitud mínima de 8 caracteres, un atacante nunca probara las contraseñas que tengan de 1 a 7 caracteres de longitud.

Es por ello que partiendo del ejemplo anterior, en el que planteábamos que el número de posibles contraseñas de 8 caracteres de longitud utilizando 97 símbolos era de 7.837.433.594.376.961, un atacante no probara todas ellas, ya que las que miden de 1 a 7 caracteres no las probara.

Entonces tenemos que no probara las contraseñas de 1 carácter de longitud, es decir, no probara las primeras 97 contraseñas.

Tampoco probara las de 2 caracteres de longitud, es decir:

97*97 = 97^2 = 9.409

Y así sucesivamente hasta las de 7 caracteres.

Si queremos calcular el número de contraseñas que no probara un atacante lo haremos de la siguiente manera:

97 + (97^2) + (97^3) + (97^4) + (97^5) + (97^6) + (97^7) = 81.639.933.274.759

Como podemos ver, no probara 81.639.933.274.759


Una vez visto todos los cálculos, podemos concluir que una contraseña fuerte, hace los ataques de fuerza bruta sean totalmente inviables.

Es por ello por lo que se suelen utilizar diccionarios con un número limitado de contraseñas para probar.



Espero que os haya gustado el post y que ahora seleccionéis contraseñas más seguras para protegeros.

No hay comentarios:

Publicar un comentario