el hashing es un método de una sola vía, si un usuario pierde su contraseña, nunca podrá obtener esa contraseña del servidor. asi que ¿Por qué no almacenamos las contraseñas en una base de datos usando encriptación en lugar de hash?
Porque si un usuario puede obtener su contraseña de la base de datos, entonces también puede:
En algunos de estos casos, la facilidad de acceso depende de si el sistema es vulnerable o no a otras vulnerabilidades. En otros, el daño puede exacerbarse o reducirse según la seguridad de la contraseña del usuario.
Sin embargo, todos los casos representan escenarios en los que el hash en su mayoría, si no completamente, bloquearía a las personas que no deberían tener acceso a las contraseñas de otras personas. El cifrado no puede ayudar aquí.
También vale la pena señalar que un usuario no necesita, para los fines previstos por ningún sitio web, obtener sus credenciales de inicio de sesión reales del sistema. En el caso de que un usuario olvide su contraseña, el sistema debe proporcionar un mecanismo mediante el cual pueda restablecerlo o cambiarlo de forma segura a un nuevo , valor conocido.
¿El cambio al hash de contraseña y la implementación de un proceso de restablecimiento (en lugar de recuperación) evitarán que un atacante acceda a la cuenta de un usuario en todos los escenarios anteriores? No. Pero ciertamente eleva el nivel y garantiza que el daño para el usuario esté aislado solo en esa cuenta, no en todas las cuentas en las que el usuario usó la misma contraseña.
Cuando su usuario inicie sesión, deberá saber si la contraseña es correcta.
Hashing una contraseña significa que no necesita conocer la contraseña, solo el hash. Como el hash es unidireccional, si alguien filtra su base de datos, solo tendrá los hashes y tendrá que aplicar la fuerza bruta a todos para obtener las contraseñas. El uso de sales, bcrypt y muchas rondas hace que sea muy, muy difícil de descifrar todas las contraseñas.
El cifrado es reversible. Su usuario envía la contraseña, su sitio descifra el valor almacenado y lo compara. El problema es que su sitio tiene la clave de descifrado. Si alguien piratea su sitio, obtendrá la clave y descifrará cada una de las contraseñas sin esfuerzo. No está bien.
Es casi tan inseguro como mantener la contraseña en texto claro.
Principales ventajas del hash frente al cifrado:
Lea otras preguntas en las etiquetas authentication hash encryption