Almacenar contraseñas con llavero python

16

Estoy usando la biblioteca de llaveros para almacenar contraseñas en mi aplicación Python.

import keyring
keyring.set_password('My namespace', username, password)
keyring.get_password('My namespace', username)

Y esto funciona muy bien.

Supongo que las contraseñas son seguras en el llavero, están encriptadas. Pero, dado que puedo obtenerlos por nombre de usuario, ¿qué impide que otras aplicaciones hagan lo mismo?

¿No es un riesgo de seguridad, o me estoy perdiendo algo?

Umpirsky
fuente

Respuestas:

14

La biblioteca de conjuntos de claves utiliza el conjunto de claves estándar de su entorno de escritorio, por ejemplo, el conjunto de claves GNOME . Este llavero se desbloquea tan pronto como inicie sesión, lo que significa: sí, cualquier otra aplicación que ejecute tiene acceso a la contraseña que almacena con su aplicación, pero, y esta es la idea de un llavero, otros usuarios y sus aplicaciones no tengo.

Citando " Filosofía de seguridad de llavero de gnomo ":

Un ejemplo de teatro de seguridad es dar la ilusión de que de alguna manera una aplicación que se ejecuta en un contexto de seguridad (como su sesión de usuario) puede mantener información de otra aplicación que se ejecuta en el mismo contexto de seguridad.

Tenga usernameen cuenta que en las funciones set_password/ get_passwordno está relacionado con el nombre del usuario que ejecuta la aplicación (es decir, el usuario cuyo llavero se utiliza), pero puede ser, por ejemplo, una dirección de correo electrónico, un nombre de usuario de la base de datos, etc.

Marcel Stimberg
fuente
Gracias por la respuesta. Por lo tanto, almacenar contraseñas puede ser arriesgado :)
umpirsky
3
No, cualquiera que recupere la contraseña deberá conocer (o haber proporcionado) la contraseña de inicio de sesión del usuario. Intenta activar el inicio de sesión automático y luego ejecuta tu aplicación. No debería poder acceder a las contraseñas almacenadas sin dar su contraseña de inicio de sesión.
Javier Rivera
@umpirsky: no es más riesgoso que almacenarlo en un archivo. Y no importa cómo lo escriba, las claves para la descripción deben almacenarse en algún lugar o proporcionarse de alguna manera. Entonces, no importa lo que haga, cualquier aplicación en su sesión tendrá acceso a ella.
MestreLion
Es importante tener en cuenta que este código que se ejecuta en Ubuntu Server donde no hay Gnome Keyring volverá a los archivos con valores codificados en Base64 que son fácilmente accesibles.
Cat Man Do
Ese enlace parece muerto.
AdamC