A principios de este año, unos 6,5 millones de hashes de contraseñas de cuentas de Linkedin se publicaron en un foro de hackers. Los hashes eran sencillos compendios SHA1 obtenidos a partir de las contraseñas de los usuarios guardadas en la infraestructura backend de LinkedIn.
A los hackers no les costó mucho esfuerzo, pues la mitad de ellas fue decodificada en un abrir y cerrar de ojos.
Hay dos razones principales por la que esta decodificación rapidísima fue posible:
- el uso de la función SHA1
- GPUs rápidos
Analicemos ambos.
La función SHA1 está diseñada principalmente para remplazar a la débil función MD5, y es muy rápida. En una tarjeta gráfica AMD / ATI 7970, “hashcat” (ver https://hashcat.net/oclhashcat-plus/) calcula un poco más de 2 mil millones de hashes por segundo. Esto significa que se pueden probar muchas combinaciones en un tiempo muy corto.
Para resolver este “problema”, existen algoritmos modernos y seguros, como la función sha512crypt que usa Ubuntu, y las últimas versiones de Fedora Core Linux. En vez de los 2 mil millones de hashes por segundo, la misma tarjeta GPU decodifica un poco más de 12.000 combinaciones sha512crypt por segundo. Por ejemplo, la verificación de mil millones de combinaciones sha512crypt toma unas 24 horas, mientras que para SHA1 apenas necesita 1 segundo.
Gracias a los modernos y rápidos GPUs, un buen consejo relacionado con la seguridad informática es elegir una contraseña compleja que:
- incluya letras mayúsculas y minúsculas
- incluya al menos un espacio
- incluya números
- incluya varios símbolos como !@#
- no se base en una palabra conocida
- tenga al menos doce símbolos, y mejor si es más
Muchas personas que conozco usan contraseñas con frases de entre 20 y 50 símbolos. Incluso si hackean el hash de tu contraseña, este buen consejo evitará que la decodifiquen.
Ahora, imagínate mi sorpresa cuando hoy trataba de ingresar a una antigua cuenta de Hotmail y me encuentro con esto:
Las contraseñas de las cuentas de Microsoft pueden contener hasta 16 símbolos
Si has estado usando una contraseña con más de 16 símbolos, ingresa los primeros 16.
Mi anterior contraseña tenía unos 30 símbolos y ahora, ya no sirve. Sin embargo, puedo ingresar con sólo poner los primeros 16 símbolos.
Esta limitación es muy conocida (ver el excelente artículo de Graham Cluley sobre los límites para las contraseñas en varios servicios), pero lo que me llamó la atención es que al cortar mi contraseña a 16 símbolos, seguía funcionando.
Para hacer esto con las antiguas contraseñas, Microsoft tenía dos alternativas:
- guardar la contraseña completa en texto llano en su base de datos y comparar sólo los primeros 16 símbolos
- calcular el hash sólo de los primeros 16 símbolos e ignorar el resto
Guardar en texto llano las contraseñas para servicios online es definitivamente un enfático NO a la seguridad. La otra alternativa implicaría que desde su inicio, Hotmail secretamente sólo usaba los primeros 16 símbolos de la contraseña.
Sinceramente, no sé cuál de las dos es peor.
P.D. Mi profesor siempre decía que había que pensar positivamente y tratar de terminar con algo de optimismo. Aquí voy: “Gracias Google por GMail”.
Hotmail: Como tu contraseña era muy larga, te la arreglamos