Pregunta

Primero, mi pregunta no tiene que ver con el hashing de contraseñas, sino con el cifrado de contraseñas. Estoy creando una aplicación de escritorio que necesita autenticar al usuario en un servicio de terceros. Para acelerar el proceso de inicio de sesión, quiero darle al usuario la opción de guardar sus credenciales. Como necesito la contraseña para autenticarlo en el servicio, no se puede modificar.

Pensé en usar el módulo pyCrypto y su implementación Blowfish o AES para cifrar las credenciales. El problema es dónde almacenar la clave. Sé que algunas aplicaciones almacenan la clave directamente en el código fuente, pero como estoy codificando una aplicación de código abierto, esto no parece ser una solución muy eficiente.

Así que me preguntaba cómo, en Linux, implementaría claves específicas del usuario o del sistema para aumentar la seguridad del almacenamiento de contraseñas.

Si tiene una solución mejor para este problema que usar pyCrypto y claves específicas del sistema / usuario, no dude en compartirla. Como dije antes, el hash no es una solución y sé que el cifrado de contraseñas es vulnerable, pero quiero darle la opción al usuario. Usar Gnome-Keyring tampoco es una opción, ya que muchas personas (incluido yo mismo) no lo usan.

¿Fue útil?

Solución

Cifrar las contraseñas realmente no le ofrece mucha más protección que almacenar en texto sin formato. Cualquier persona capaz de acceder a la base de datos probablemente también tenga acceso completo a sus máquinas de servidor web.

Sin embargo, si la pérdida de seguridad es aceptable y realmente necesita esto, generaría un nuevo archivo de claves (a partir de una buena fuente de datos aleatorios) como parte del proceso de instalación y lo usaría. Obviamente, guarde esta clave de la manera más segura posible (permisos de archivos bloqueados, etc.). No es una buena idea utilizar una sola clave incorporada en la fuente, ya que no hay ninguna razón por la que las instalaciones independientes deban tener las mismas claves.

Otros consejos

Intente usar PAM . Puede crear un módulo que desencripte automáticamente la clave cuando el usuario inicie sesión. Así es internamente cómo funciona GNOME-Keyring (si es posible). Incluso puede escribir módulos PAM en Python con pam_python .

Password Safe está diseñado por Bruce Schneier y de código abierto. Es para Windows, pero debería poder ver lo que están haciendo y posiblemente reutilizarlo.

http://www.schneier.com/passsafe.html

http://passwordsafe.sourceforge.net/

Lea esto: Si escribe AES en su código, lo está haciendo mal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top