Memorizzazione di password con portachiavi in ​​pitone


16

Sto usando la libreria di portachiavi per archiviare le password nella mia app Python.

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

E questo funziona molto bene.

Presumo che le password siano sicure nel portachiavi, sono crittografate. Ma dal momento che posso ottenerli tramite nome utente, cosa impedisce ad altre app di fare lo stesso?

Non è un rischio per la sicurezza o mi sto perdendo qualcosa?

Risposte:


14

La libreria portachiavi utilizza il portachiavi standard dell'ambiente desktop, ad esempio il portachiavi GNOME . Questo portachiavi viene sbloccato non appena esegui l'accesso, ovvero: sì, qualsiasi altra applicazione gestita da te ha accesso alla password memorizzata con la tua applicazione, ma - e questa è l'idea di un portachiavi - altri utenti e le loro applicazioni non aver.

Citando " gnome-keyring Security Philosophy ":

Un esempio di teatro della sicurezza è l'illusione che in qualche modo un'applicazione in esecuzione in un contesto di sicurezza (come la sessione utente) possa mantenere le informazioni di un'altra applicazione in esecuzione nello stesso contesto di sicurezza.

Si noti che il usernamenei set_password/ get_passwordfunzioni non è legato al nome dell'utente che esegue l'applicazione (cioè l'utente il cui portachiavi viene utilizzato), ma può essere ad esempio un indirizzo email, un nome utente di database, ecc


Grazie per la risposta. Quindi, la memorizzazione delle password può essere rischiosa :)
umpirsky,

3
No, chiunque recuperi la password dovrà conoscere (o aver fornito) la password di accesso dell'utente. Prova a abilitare l'accesso automatico e quindi esegui la tua app. Non dovresti essere in grado di accedere alle password memorizzate senza fornire la password di accesso.
Javier Rivera,

@umpirsky: non è più rischioso che archiviarlo in un file. E non importa come lo codifichi, le chiavi per la descrizione devono essere archiviate da qualche parte o fornite in qualche modo. Quindi, indipendentemente da ciò che fai, qualsiasi app nella tua sessione avrà accesso ad essa.
MestreLion,

È importante notare che questo codice in esecuzione su Ubuntu Server in cui non è presente Gnome Keyring tornerà ai file con valori codificati Base64 che sono facilmente accessibili.
Cat Man Do,

Quel collegamento sembra morto.
AdamC,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.