Formas seguras para almacenar contraseñas sin tener que marcarlas

4

Estoy trabajando en un cliente de correo electrónico para Windows, y para enviar correos electrónicos, mi aplicación necesita tener la dirección de correo electrónico y la contraseña de esa dirección de correo electrónico. Cuando el usuario da su contraseña, la almaceno encriptada. Al enviar un correo electrónico, paso la contraseña desencriptada. Pero hay un problema aquí: si solo cifro una contraseña, alguien puede descifrar fácilmente la contraseña si tiene la clave, y esta clave es fácil de obtener al descifrar mi aplicación y encontrar la clave. Pero tampoco puedo descifrar la contraseña porque necesito pasarla en texto sin formato y no quiero molestar a mis usuarios preguntándoles la contraseña cada vez que inicien mi aplicación.

Entonces, ¿cómo puedo almacenar la contraseña de forma segura sin hacerla hash?

Nota: He leído esta pregunta: Cómo mantener un usuario contraseñas, pero no puedo marcarlas , pero eso es para una aplicación web y tengo una aplicación de escritorio, así que no puedo usar un servidor.

    
pregunta ProgramFOX 17.03.2014 - 17:58
fuente

1 respuesta

11

Si está hablando de una aplicación de escritorio de Windows, debe usar CryptProtectData API, que almacena las credenciales en regiones de memoria protegidas y las cifra con una clave que forma parte del perfil del usuario. Este es el mecanismo de protección estándar para aplicaciones de Windows.

En Linux, puede considerar el uso del anillo de claves de GNOME o la cartera de KDE, y OS X tiene un conjunto de API para su anillo de claves también. Esto garantizaría que la configuración de seguridad del juego de llaves del usuario tome el control de anulación, ya que pueden decidir con qué frecuencia desean tener que volver a ingresar su clave maestra.

Cualquier procedimiento que elija para ofuscar contraseñas es un ejercicio inútil contra cualquier atacante medio determinado, por lo que, como máximo, está creando una ilusión de seguridad. Mi sugerencia es incluir una configuración que diga "recordar mi contraseña", pero advierta a los usuarios que la contraseña se almacenará localmente en un formato reversible que ofrece poca seguridad, para que estén al tanto del problema.

    
respondido por el Polynomial 17.03.2014 - 18:08
fuente

Lea otras preguntas en las etiquetas