querystring para net mvc metodos encriptar desencriptar contraseña como cifrado asp algoritmos asp.net passwords asp.net-membership

asp.net - para - encriptar querystring asp net c#



Hash vs. cifrar contraseñas (4)

Como han dicho otros usuarios, las contraseñas encriptadas se pueden descifrar y no son una buena idea.

Si usa una técnica de hash estándar, el usuario que tenga acceso a su base de datos podría poner en el md5 estándar la "contraseña", por ejemplo. Puede resolver este problema con un hash salado que toma la cadena de entrada y un valor de cadena de sal para crear un hash único que no se puede replicar fácilmente. Guárdelo en un lugar seguro y use sha1 ($ sal. $ Input). Ahora tiene un hash salado.

Estoy usando membresía ASP.NET para un sitio que servirá principalmente a usuarios sofisticados. Entiendo la diferencia entre las contraseñas hash y encriptadas, y estoy tratando de decidir entre las dos.

Después de que mi último cliente se quejó amargamente de que las contraseñas hash eran un PITA total, comencé a favorecer las contraseñas encriptadas. Pero alguien sugirió que esto no es lo suficientemente seguro.

Entonces mi pregunta es: ¿cuáles son exactamente los riesgos de cifrar contraseñas? Cualquier persona con la capacidad de robar contraseñas al descifrarlas de la base de datos seguramente tendrá la capacidad de restablecerlas si fueran hash, ¿no? Tengo problemas para ver dónde alguien podría causar problemas con las contraseñas encriptadas, pero no con los hash. Hacerlo conveniente para los usuarios también es importante.


El punto es que las contraseñas cifradas se pueden descifrar ... por lo que es posible que al tener acceso a las claves, etc., todas las contraseñas puedan ser conocidas.

Las contraseñas hash (con sal) son una función de 1 y 1 por lo que no existe una forma posible de determinar cuál es la contraseña, lo que significa que el usuario que proporciona la contraseña tiene menos de qué preocuparse. Seguro que alguien podría cambiar el hash en cualquier lugar donde esté almacenado (por ejemplo, una base de datos) para que el usuario ya no pueda iniciar sesión, pero aún no se sabría la contraseña que le proporcionaron originalmente.

Editar
Como ha etiquetado la pregunta ASP.Net, recomendaría usar la biblioteca BCrypt.Net para generar sus hashes


El riesgo con las contraseñas descifrables es que las personas usan una contraseña para varios inicios de sesión y cuentas, no solo para la aplicación que está tratando.

  • Con una contraseña cifrada, una contraseña robada / descifrada podría probarse en otras cuentas de los usuarios (por ejemplo, una contraseña bancaria robada podría dar lugar al acceso a su correo electrónico).
  • Con una contraseña hash, no hay recuperación. El robo de hash de contraseñas nunca debería arrojar fácilmente contraseñas utilizables

Trate las contraseñas como propiedad del propietario de la cuenta. No es suyo para ver, descifrar o hacer otras cosas. Si un usuario olvida su contraseña, ofrece restablecimiento y no la recupera.


El riesgo es que las contraseñas encriptadas se puedan descifrar para obtener la contraseña de texto sin formato.

Los hashes normalmente no se pueden revertir.

Invertir un hash MD5

Una ocurrencia bastante común es que las personas usan el mismo nombre de usuario y contraseña en todos sus sitios de Internet.

Todo lo que se necesita es una contraseña de sitio para descifrar, y todos los sitios de los usuarios están en riesgo.

Mientras que con un hash, el cracker nunca obtiene la contraseña de texto sin formato.