Speichern von Passwörtern mit dem Python-Schlüsselbund

16

Ich verwende die Schlüsselbundbibliothek , um Kennwörter in meiner Python-App zu speichern.

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

Und das funktioniert sehr gut.

Ich gehe davon aus, dass Passwörter im Schlüsselbund sicher und verschlüsselt sind. Aber was hindert andere Apps daran, dasselbe zu tun, da ich sie über den Benutzernamen abrufen kann?

Ist das nicht ein Sicherheitsrisiko oder vermisse ich etwas?

umpirsky
quelle

Antworten:

14

Die Schlüsselbundbibliothek verwendet den Standardschlüsselbund Ihrer Desktop-Umgebung, z . B. den GNOME-Schlüsselbund . Dieser Schlüsselbund wird entsperrt, sobald Sie sich anmelden. Dies bedeutet: Ja, jede andere von Ihnen ausgeführte Anwendung hat Zugriff auf das Kennwort, das Sie mit Ihrer Anwendung gespeichert haben, aber - und dies ist die Idee eines Schlüsselbunds - andere Benutzer und deren Anwendungen nicht haben.

Zitieren der „ Sicherheitsphilosophie für Gnomenschlüsselringe “:

Ein Beispiel für ein Sicherheitstheater ist die Illusion, dass eine Anwendung, die in einem Sicherheitskontext ausgeführt wird (z. B. Ihre Benutzersitzung), Informationen von einer anderen Anwendung behalten kann, die im selben Sicherheitskontext ausgeführt wird.

Beachten Sie, dass usernamein den set_password/ get_password-Funktionen nicht der Name des Benutzers angegeben ist, der die Anwendung ausführt (dh der Benutzer, dessen Schlüsselbund verwendet wird), sondern beispielsweise eine E-Mail-Adresse, ein Datenbank-Benutzername usw.

Marcel Stimberg
quelle
Danke für die Antwort. Das Speichern von Passwörtern kann daher riskant sein :)
umpirsky
3
Nein, jeder, der das Passwort abruft, muss das Login-Passwort des Benutzers kennen (oder angegeben haben). Versuchen Sie, die automatische Anmeldung zu aktivieren, und führen Sie dann Ihre App aus. Sie sollten nicht in der Lage sein, auf die gespeicherten Passwörter zuzugreifen, ohne Ihr Login-Passwort anzugeben.
Javier Rivera
@umpirsky: es ist nicht riskanter als in einer Datei zu speichern. Unabhängig davon, wie Sie es beschreiben, müssen die Schlüssel für die Beschreibung irgendwo gespeichert oder auf irgendeine Weise bereitgestellt werden. Unabhängig davon, was Sie in Ihrer Sitzung tun, haben alle Apps Zugriff darauf.
MestreLion
Es ist wichtig zu beachten, dass dieser Code, der auf Ubuntu Server ohne Gnome-Schlüsselring ausgeführt wird, auf Dateien mit Base64-codierten Werten zurückgreift, auf die leicht zugegriffen werden kann.
Cat Man Do
Dieser Link scheint tot zu sein.
AdamC