Hace unos años salió a la luz William Blurr el responsable de decirnos a todos que las contraseñas seguras eran las que tenían mas de 8 caracteres, incluyendo cifras, letras, mayúsculas, minúsculas y caracteres especiales.
No me gusta fusilar artículos de otros blogs y hacerlos pasar por míos, así que os recomiendo que visitéis este artículo de Hipertextual. Las reglas para crear una contraseña segura han cambiado.
Para los perezosos, os ahorro el clic. Viene a decir que las reglas actuales se hicieron en tiempos del procesador Z80 cuando ni sumando toda la potencia de cálculo mundial podías romper esa contraseña de 8 caracteres en menos de una semana por fuerza bruta. Pero que hoy en día entidades como la NSA que tienen granjas de servidores del tamaño de varios campos de fútbol -ya sabes, esos sitios dónde a veces organizan grandes eventos de e-sports- pueden romper el cifrado de extremo a extremo de una conversación de whatsapp en lo que tardas en decir «What’s up!».
Aún así, puesto que la gente normal no somos victimas de la NSA, pero si de los hackers del barrio lo que nos toca es utilizar contraseñas más «molestas». El webcómic de https://xkcd.com/ que es una joya en toda su trayectoria lo explica así.
Lo que hace robusta una contraseña es su longitud. Da igual si es o no es con mayúsculas, minúsculas, puntos, comas o caracteres especiales.
Pero como con eso no basta, hemos de usar de forma habitual la autentificación en 2 factores. Lo que viene a ser, confirmar con el móvil que estamos siendo nosotros los que iniciamos la sesión.
Lo que se viene conociendo desde hace años como seguridad basada en «Algo que sé, algo que tengo, algo que soy». Por ejemplo, me se la clave de mi banco, tengo el teléfono vinculado a es cuenta y a esa clave y soy cliente de ese banco.
Últimamente la poca vergüenza de la gente llega a niveles insospechados. Lo último es que cuando intentan robarte, como no tiene acceso a tu teléfono te escriben un whastapp o te llaman con la excusa de que ha sido un fallo, que por favor, les envíes el código que te ha llegado. Precisamente, te piden que les des el código que el banco te ha enviado para evitar que puedan robarte aunque sepan tu DNI y tu PIN.
Últimamente la poca vergüenza de la gente llega a niveles insospechados. Lo último es que cuando intentan robarte, como no tiene acceso a tu teléfono te escriben un whastapp o te llaman con la excusa de que ha sido un fallo, que por favor, les envíes el código que te ha llegado. Precisamente, te piden que les des el código que el banco te ha enviado para evitar que puedan robarte. Hacking social de toda la vida.
El único fallo de esta estafa es que sabemos quien eres con teléfono y foto de perfil y ya estás denunciado sinvergüenza.
Decía el hacker más famoso de todos los tiempos, Kevin Mitnick. Es sorprendente lo que se puede conseguir siendo educado y tratando bien a las personas.
Pero si de algo estamos seguros, es de que una clave almacenada en plano no vale para gran cosa. Los datos, que almacenamos en los servidores de los servicios web a veces son filtrados a internet en ciberataques. O simplemente pueden quedar a la vista de los administradores de los sitios web. Así que esperamos que los guarden de una forma segura. De modo que ni ellos mismos puedan leerlos «por accidente» o si caen malas manos.
Si mi clave es Hola, no quiero que se guarde así en la base de datos. Espero que la guarden como mínimo en MD5 con este otro formato mucho más robusto: f688ae26e9cfa3ba6235477831d5122e
Así, al menos, el administrador de la base de datos, o los programadores no podrán leer mi clave …
O tal vez debería decir, no podrán leer mi clave «accidentalmente».
Porque tanto MD5 como SHA1 son algoritmos de dispersión de un solo sentido, pero siempre que se da una misma entrada se obtiene una misma salida, independientemente del equipo en que se ejecute el algoritmo.
Es decir, que puedo aplicar MD5 a todas las palabras de mi diccionario de claves y luego comparar los resultados con una clave MD5 proporcionada y si son iguales en MD5 también serán iguales en el texto plano que generó ese MD5.
Y en eso se basan estas páginas web. Almacenan las parejas: texto plano + MD5 de todas las contraseñas que se les ocurren. 15 mil millones de contraseñas ya las tienes preparadas, si es cierto lo que anuncian en la web.
Y con eso, romper una contraseña no son más que unos segundos. Podrían ser mas rápidos pero tienen que hacerlo despacio para que parezca que están calculando algo, cuando en el fondo solo están haciendo una consulta a una base de datos que tienen preparada.
Pero eso no solo ocurre con MD5. Otros algoritmos de dispersión adolecen del mismo problema. Aunque tengan claves mas largas.
Los matemáticos que crearon esos algoritmos, pensaron en crear una función que fuera irreversible. Dada una cadena de SHA1 o de MD5 no hay forma de volver atrás. Pero por tanteo, por fuerza bruta, es solo cuestión de tiempo y potencia de cálculo.
Si no sabéis a que tipo de cifrado es estáis enfrentando, hay esta herramientas que analizan una cadena y os dicen a qué formato corresponde.
Luego solo es cuestión de usar una página web para ver si esa clave ya fue descifrada anteriormente. Por ejemplo, md5hashing.net me suele dar buenos resultados.
He recibido algunos correos de personas diciendo que las KEYs de cifrado eran demasiado difíciles, que iban a tardar días por fuerza bruta.
Pero lo cierto es que ya preparé las KEYs para que fueran «fáciles». De hecho, me aseguré de que fueran las típicas que se pueden romper como usuario gratuito en una página web.
Esto siempre ha sido un juego educativo, para trabajar ideas y conceptos. Lo importante es que sepáis que MD5 y SHA1 como todos los algoritmos de dispersión se pueden romper con relativa facilidad. Así que complicad la vida a los atacantes usando claves largas y hacer uso de la autenticación en dos pasos es lo único que nos queda.
Ahora romped mis claves, reclamad las KEYs y volved a por el siguiente reto.