2009-06-16 13 views
7

Innanzitutto, la mia domanda non riguarda l'hashing della password, ma la crittografia della password. Sto creando un'applicazione desktop che deve autentificare l'utente a un servizio di terze parti. Per velocizzare la procedura di accesso, voglio dare all'utente la possibilità di salvare le sue credenziali. Poiché ho bisogno della password per autentificarlo al servizio, non può essere sottoposto a hash.Come archiviare in modo reversibile la password con Python su Linux?

Ho pensato di utilizzare il modulo pyCrypto e la sua implementazione Blowfish o AES per crittografare le credenziali. Il problema è dove conservare la chiave. So che alcune applicazioni memorizzano la chiave direttamente nel codice sorgente, ma dal momento che sto codificando un'applicazione open source, questa non sembra una soluzione molto efficiente.

Quindi mi chiedevo come, su Linux, implementeresti chiavi specifiche per utente o sistema per aumentare la sicurezza della memorizzazione delle password.

Se si dispone di una soluzione migliore a questo problema rispetto all'utilizzo di pyCrypto e di tasti specifici di sistema/utente, non esitate a condividerli. Come ho detto prima, l'hashing non è una soluzione e so che la crittografia delle password è vulnerabile, ma voglio dare l'opzione all'utente. Anche l'uso di Gnome-Keyring non è un'opzione, dal momento che molte persone (me compreso) non la usano.

+0

Darn. Stavo per suggerire gnome-keyring :( – Zifre

risposta

5

La crittografia delle password non ti offre una protezione molto maggiore rispetto all'archiviazione in chiaro. Chiunque sia in grado di accedere al database probabilmente ha anche pieno accesso ai propri server web server.

Tuttavia, se la perdita di sicurezza è accettabile e ne avete davvero bisogno, vorrei generare un nuovo file di chiavi (da una buona fonte di dati casuali) come parte del processo di installazione e utilizzarlo. Ovviamente conservare questa chiave nel modo più sicuro possibile (autorizzazioni di file bloccate ecc.). L'utilizzo di una singola chiave incorporata nella sorgente non è una buona idea: non c'è motivo per cui le installazioni separate debbano avere le stesse chiavi.

0

Password Safe è progettato da Bruce Schneier e open source. È per Windows, ma dovresti essere in grado di vedere quello che stanno facendo ed eventualmente riutilizzarlo.

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

http://passwordsafe.sourceforge.net/

Leggi questo: If you type A-E-S into your code, you're doing it wrong.

+0

che l'ultimo link ("Se si digita ...") restituisce un 404. –

+0

Hanno spostato il blog - aggiornato –

+0

Aaaa e si è rotto di nuovo. Un po 'di googling lo trova speculare in alcuni posti, ma a tutti sembrano mancare le immagini. – TRiG

5

Prova utilizzando PAM. È possibile creare un modulo che annulli automaticamente la crittografia della chiave quando l'utente esegue il login. Questo è internamente il modo in cui GNOME-Keyring funziona (se possibile). È anche possibile scrivere moduli PAM in Python con pam_python.

Problemi correlati