Contraseñas seguras: porqué más es siempre mejor

Seguramente, al registrate en un sitio web, banca electrónica, o cualquier otro servicio que solicite contraseña, has encontrado un mensaje como el siguiente:

La contraseña debe contener al menos 8 caracteres, pero no más de 12, y debe incluir al menos una letra y un número

(Ciertamente es una pobre política de contraseña segura, pero se entiende el ejemplo)

¿Porqué es esto? Bueno, es probable que hayas escuchado que esto hace más segura a tu contraseña. Pero… es cierto esto?

Dejemos de lado por un momento la posibilidad de que alguien se robe tu contraseña directamente de los servidores del sitio (eso es tema para otro post, coming soon). Supongamos que lo que queremos evitar es que alguien la “adivine”. Seguramente, gatito33 es lo suficientemente “diferente” para que alguien la adivine (a diferencia de, digamos, “gatito” a secas). Y probablemente estaremos en lo cierto, si por “alguien” nos referimos a un humano común y corriente. El problema es que, cuando alguien quiere obtener tu contraseña, usualmente no se la pasa adivinando y probando manualmente una por una (sí hay casos así, pero, a diferencia de lo que Hollywood nos quiera hacer creer, son los que menos nos preocupan). No, la preocupación mayor es lo que se conoce como un ataque de fuerza bruta.

Mediante este método, un atacante puede intentar adivinar miles (dependiendo de los recursos de cómputo a su disposición, puede ser millones) de contraseñas por minuto. Evidentemente, tiene que probar todas las combinaciones. Por ejemplo, si quisiera yo adivinar una contraseña de 4 caracteres o menos que utilice sólo letras minúsculas, tendría que probar:

a
b

z
aa
ab

az
ba

zz
aaa

zzzz

Si mi contraseña es “gato”, estará en esa lista. Y… cuántas son las que tiene que probar? Si recuerdas tus clases de probabilidad y estadística, esto se calcula fácilmente. Son todas las permutaciones de las letras del alfabeto en 4 lugares – o, en fórmula: 26^4 (26 elevado a la cuarta potencia). Esto es, 26*26*26*26, o bien, 456,976. Un numerote.

Pero, si dijimos que un atacante puede adivinar miles (o, en casos extremos, millones) de contraseñas por minuto, cuánto tiempo puede tomarle adivinar mi pequeña contraseña? Muy poco. Digamos que un atacante puede intentar un millón de contraseñas por minuto. En menos de 30 segundos, ya tendrá mi contraseña.

Uff! Entonces una contraseña de 8 caracteres será mucho más segura, no? Efectivamente. Y más del doble, de hecho. Consideremos que para adivinar una contraseña de máximo 8 caracteres, la fórmula sería:

26^8 = 208,827,064,576 = Doscientos ocho mil ochocientos veintisiete millones (!) y fracción.

Nuestro mismo atacante tardará… pues 208,827 minutos en adivinar esta contraseña. Lo cual es igual a… 145 días. Más de 4 meses. Caray, pero nuestro estimado de un millón por minuto puede ser bajo. Las botnets permiten controlar miles de computadoras a la vez! Démosle más ventaja a nuestro atacante. Supongamos que puede calcular 1 millón de contraseñas *por segundo*. De ser así, calcular todas las contraseñas de máximo 8 letras le tomaría 2.4 días.

NOTA: Hay que considerar que las políticas de contraseña, sin embargo, no suelen decir “de 1 a 8 caracteres”. No, en realidad dicen algo así como “mínimo 6 y máximo 10 carácteres”. Si solo utilizaramos letras, las posibilidades son 26^10 – 26^6 = 1.411667867×10^14 = un numerototote (141 billones y fracción). De ahora en adelante seguiremos con estas consideraciones.

Pensemos ahora en la política de contraseña arriba descrita: “La contraseña debe contener al menos 8 caracteres, pero no más de 12, y debe incluir al menos una letra y un número”. Esto significa que nuestra base (el 26) cambia, porque ahora consideramos las letras (26) y los números (10). Entonces nuestra fórmula sería: 36^12 – 36^8 = 4.738378517×10^18 (o bien, 4.7 trillones). Nuestro atacante (el de un millón de contraseñas por segundo) debería pasar 150,252 AÑOS intentando obtener nuestra contraseña, de todas las posibles.

Ahora, un poco de matemática aburrida (y no, lo de arriba no fue matemática aburrida). Si ya estás por dormirte, sáltate el siguiente párrafo, y lee las conclusiones.

Nótese que cada que agregamos un nuevo caracter (es decir, aumentamos el tamaño de la posible contraseña) disparamos exponencialmente el tamaño de la contraseña; no así cuando aumentamos el tamaño de la base (el crecimiento es más bajo). Esto cimenta la teoría de que es mejor utilizar contraseñas largas (ej. “estaesunacontraseñalargaquenosepuedeadivinarfacilmente” – 26^55) que una contraseña más corta pero con más caracteres (ej. “U7w!5q3qw&” – 60^10 considerando 8 símbolos especiales), en particular porque a la persona promedio se le hace mucho más sencillo recordar la frase que el garabato del segundo ejemplo. Más fácil de recordar + más difícil de vulnerar es una muy buena combinación 😉

El punto es: usa más en tus contraseñas. Si vas a utilizar contraseñas cortas (nunca abajo de 8, pero no superiores a 10 o 12 caracteres) es *imprescindible* que utilices letras mayúsculas, minúsculas, números, y símbolos especiales. Si no te gustan esos garabatos, utiliza contraseñas MUY largas, de más de 20 o 30 caracteres. Una forma fácil es utilizar frases, quitando espacios, acentos y puntuación. Por ejemplo:

“El respeto al derecho ajeno es la paz” –> elrespetoalderechoajenoeslapaz ==> 26^30.

Y, por supuesto – no olvides cambiarla con frecuencia. Buen consejo para la ropa, buen consejo para las contraseñas 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *