Para entender mejor la vital importancia de mantener tu cuenta segura, vamos a explicar brevemente como funciona cualquier sistema de login. PRIMERO. El registro Cuando te registras en el servidor, nos envías una contraseña que garantizará que cualquiera que la tenga pueda acceder. No obstante, si guardaramos la contraseña sin más, cualquiera con acceso a la lista de registros podría conocerla. Es aquí donde se entra en juego el encriptar la contraseña. ¿Y que es encriptar exactamente? Encriptar consiste en generar una nueva cadena de caracteres (una "palabra") mediante un algoritmo a partir de la contraseña que se ha dado. El algoritmo siempre generará esa misma cadena siempre que se meta la misma contraseña. Esto quiere decir, que nadie puede ver las contraseñas si listamos todos los registros. Las contraseñas están encriptadas sin que nadie puede conocer su contraseña*. *Letra pequeña de que "nadie puede conocer la contraseña" En caso de que hubiera un fallo de seguridad, sí se podrían extraer los listados de contraseñas encriptadas. En este caso, conociendo el algoritmo y mediante fuerza bruta (usar un programa que prueba cientos de contraseñas y comprueba si el resultado generado es el mismo, de forma que si coincide, ya tiene la contraseña) podrían sacar las contraseñas. Para evitar esto, nosotros generamos una segunda contraseña para cada contraseña. Con esta contraseña que generamos (y guardamos), la utilizamos junto a la del usuario para generar la contraseña encriptada. ¿Y para qué todo esto? En el caso anterior, como simplemente se encripta la contraseña, podrías generar un listado de millones de contraseñas y compararlas: con generar una vez la lista ya te valdría para todos los usuarios. Al utilizar una segunda contraseña para encriptar, habría que generar una lista diferente por cada usuario del que quisieramos adivinar su contraseña encriptada. De esta forma se hace mucho más complicado generar la lista ¿Pero si generan la lista ya pueden saber mi contraseña? Sí, pero generar una lista con la tecnología actual requiere muchos años, y recordemos que estaríamos hablando de que sólo en caso de que hubiera un fallo de seguridad. Por lo tanto, cuando se nos solicita conocer una contraseña, nos es imposible ya que esta está guardada mediante un proceso que no admite volver atrás (des-encriptar). SEGUNDO. El inicio de sesión ¿Entonces cómo sabe el sistema que la contraseña es correcta? Cuando tu inicias sesión en un servicio existen dos opciones: comparar la contraseña sin encriptar o comparar el resultado del algoritmo. En nuestro caso, dado que las contraseñas se guardan tras pasar por la función del algoritmo, la única forma es comparar. Para comparar hacemos igual que en el proceso de registro. Cogemos la contraseña que crees que es correcta y la metemos al algoritmo junto a una contraseña aleatoria que generamos y guardamos en el registro del usuario para encriptar (aunque en este caso la contraseña la tenemos guardada, ya que si usaramos una nueva contraseña, el resultado del algoritmo sería completamente diferente). Por lo tanto, si la contraseña que nos proporcionas, junto a nuestra contraseña y pasado por el algoritmo genera el mismo resultado que la contraseña encriptada, la contraseaña es correcta. CONCLUSIONES. - Al encriptar una contraseña, es casi imposible conocer cual es la contraseña. - Las contraseñas, aunque encriptadas, podrían averiguarse a base de generar millones de contraseñas posibles y comparar con el algoritmo. Actualmente esto requiere de tiempo (y requeriría tener acceso a la contraseña encriptada), haciéndolo casi bastante difícil. - Por tanto, la forma más fácil de robarte tu contraseña es que la uses en otro sistema que no las encripte.