una tipos niveles jerarquia encriptar encriptada encriptacion descifrado datos contraseña como cifrado algoritmos algoritmo database passwords encryption

database - tipos - niveles de cifrado



Cómo proteger contraseñas sensibles almacenadas en una base de datos (1)

Estoy desarrollando una aplicación web para la cual los usuarios finales deben crear una cuenta. Esta parte es muy sencilla: copiaré sus contraseñas con SHA-256 para que nadie, excepto el usuario mismo, conozca la contraseña. Ahora viene la parte difícil. Después de que el usuario crea una cuenta, él / ella debe proporcionar la contraseña de su servidor de correo electrónico. Ahora la pregunta es: ¿cómo puedo proteger esta contraseña decentemente (la contraseña se almacenará en una base de datos)? Si cifro la contraseña con TripleDES, cualquier desarrollador o administrador del sistema podrá descifrar la contraseña y verla. ¿Cuál es la forma habitual de enfrentar un problema así? Muchas gracias.


La forma habitual de hacerlo es utilizar una clave de cifrado simétrica que se deriva de la contraseña del usuario. La forma estándar de hacerlo es usar el algoritmo especificado en RFC2898 , que genera un conjunto de bytes criptográficamente seguros que puede usar como clave y IV. Es probable que sea compatible con una biblioteca para su idioma, .NET por ejemplo, que es lo que uso tiene la clase Rfc2898DeriveBytes .

Por supuesto, cuando su usuario cambie su contraseña, deberá descifrar cualquier texto de cifrado existente y luego derivar la nueva clave y volver a cifrarla.