Come dovrebbe un webmaster gestire tutte le sue password e chiavi?

8

Ho diverse chiavi private che uso per ssh in AWS, dreamhost, github, ecc. Ho passphrase per tutte queste chiavi private che sono troppo complesse da ricordare. Ho delle password mysql che io e la mia applicazione dobbiamo conoscere.

Qual è un modo comodo e sicuro per tenere traccia di tutto questo? Il mio pensiero iniziale è che potrebbe essere utile crittografare e tarare un insieme di file con tutte queste informazioni e metterlo su "the cloud" (dropbox, gmail). Posso anche metterlo su una chiavetta USB che tengo su di me in ogni momento, ma è troppo facile da perdere. Esiste un modo migliore?

Aggiorna Io uso lastpass per le password, ed è decente. Non sono sicuro di come gestire le chiavi private o cose come i certificati SSL.

    
posta Snitse 30.08.2013 - 19:22
fonte

4 risposte

6

[Divulgazione: lavoro per AgileBits, i creatori di 1Password]

Hai già menzionato l'utilizzo di un gestore di password per gli accessi web. Ma per cose come le chiavi private SSH e GPG / PGP, dovresti prendere in considerazione un gestore di password che ti permetta di allegare file a particolari elementi e di facilitare la sincronizzazione di questi dati.

File system crittografati.

Un'altra opzione, non usando un gestore di password, è di avere un filesystem crittografato su qualche cosa portatile (chiavetta USB). La difficoltà sta nel trovare un formato che funzionerà in modo portabile per te. Se usi solo OS X, allora un DMG crittografato è un'opzione, dato che sarai in grado di montarlo e decodificarlo su qualsiasi Mac. Non so quale sia l'alternativa di Windows. Qualcosa come TrueCrypt potrebbe essere un'opzione, ma dovresti anche portare o installare TrueCrypt ovunque tu vada.

Cose da evitare

Eviterei di usare qualcosa come un file zip protetto da password. Innanzitutto la protezione / crittografia della password non è poi così eccezionale, ma soprattutto è troppo facile finire per lasciare dati non criptati in giro.

Vorrei anche evitare di provare a lanciare il proprio file system crittografato. Ci sono molte sottigliezze nella progettazione di un sistema del genere che la maggior parte delle persone non prenderà in considerazione.

Cosa faccio

Io, ovviamente, uso 1Password (vedi divulgazione). Poiché gestisce gli allegati, posso allegare le mie varie chiavi private agli elementi in 1Password.

Inconvenienti

Il problema più grande che ho con questo è che 1Password non funziona su Linux o FreeBSD. (Esistono alcuni progetti open source per creare un lettore 1Password per tali sistemi, ma non sono ancora pronti.)

Anche per quanto mi fido di 1Password e della mia password principale 1Password, mi sento ancora a disagio nel memorizzare sia il mio file di chiave privata PGP che la sua password nello stesso paniere ben protetto. Così ho archiviato la mia chiave privata PGP in 1Password, ma mi affido alla mia memoria per quella particolare passphrase.

    
risposta data 30.08.2013 - 21:14
fonte
2

Il "file pieno di password" va bene, ma richiede una certa attenzione quando lo si utilizza. Quando viaggio con il mio, lo criptico con GnuPG e decrittalo solo su un computer portatile (il mio , quindi è "pulito") che esegue Linux, senza alcuno spazio di swap attivato, e decritto solo in /tmp , che ho configurato come "file system di memoria" ( tmpfs ) supportato con RAM. Il punto dell'esercitazione è di impedire a nessuna delle mie preziose password di colpire mai in modo non crittografato una memorizzazione permanente dei dati (il disco rigido interno / SSD).

Alcune applicazioni di gestione delle password (ad es. KeePass ) possono automatizzare questo processo e offrire un sistema più facile da usare.

Un altro metodo è passare alla matematica al momento della generazione delle password. L'idea è di memorizzare nella tua mente una singola "password principale" (renderla grande e molto casuale, diciamo 20 lettere casuali). Quando è necessario generare una password per un utilizzo U , è sufficiente applicare alcune operazioni crittografiche deterministiche (ad esempio, hashing) che coinvolgono sia U che la password principale. " U " qui sarà una stringa che usa un formato ( qualsiasi formato che desideri) che codifica in qualche modo la destinazione della password.

Ad esempio, rendi U la stringa " ssh:foo.example.com " per indicare "la password utilizzata per connettersi con SSH alla macchina foo.example.com ". La codifica non ha importanza finché non è ambigua, ovvero puoi ricostruire dinamicamente la stringa dalla tua conoscenza della situazione ("Voglio collegarmi con SSH a foo.example.com ") e non avrai collisioni (due distinte usi che finiscono sulla stessa stringa di utilizzo)

La "operazione di crittografia" che combina la password principale e la stringa di utilizzo in una password deve essere progettata con un po 'di attenzione. Suggerisco di utilizzare PBKDF2 , la stringa di utilizzo U come "sale". Il conteggio delle iterazioni per PBKDF2 è un compromesso: un conteggio superiore protegge meglio la password principale, ma implica un costo maggiore quando si desidera ricalcolare una password. Un costo di iterazione di circa un milione è probabilmente adeguato.

Non ho un utile riferimento a un prodotto esistente che lo faccia, ma sono certo che tali prodotti esistono; e potrebbe altrimenti essere reimplementato facilmente con una semplice applicazione .NET (.NET ha un'implementazione di PBKDF2 da .NET 2.0 ed è anche disponibile sulla porta Linux Mono ).

Il punto di usare la matematica è che non hai nulla a store : l'applicazione (pubblica, fissa) e la password principale (privata, mai memorizzata da nessuna parte ma nella tua testa) concettualmente " contenere "tutte le password per un numero virtualmente infinito di usi. Le sfide con questo tipo di soluzione sono:

  • Devi codificare l'output PBKDF2 (una sequenza di byte) in una "password" che sarà considerata accettabile "ovunque". Sfortunatamente, ogni sito, server o applicazione che accetta le password può avere le sue restrizioni (lunghezza minima, lunghezza massima, set di caratteri accettabili, set di caratteri NON accettabili ...) e non è chiaro se sia possibile progettare una singola codifica con conseguente password che funzionano per ogni sistema.

  • Per la stessa destinazione (la nostra "stringa di utilizzo"), ottieni sempre la stessa password. Alcuni siti / sistemi impongono cambiamenti di password su base regolare (per nessun motivo veramente razionale, ma sono gli umani per te). Puoi supportare tali cose includendo la data corrente (mese e anno) nella "stringa di utilizzo", ma è complicato dover ricordare se un determinato sito ha bisogno di password rotanti o meno.

Quindi, anche se questo metodo ha un po 'di eleganza, potrebbe essere poco pratico fino a quando alcuni pensieri pesanti e armeggiare saranno investiti nella creazione di un prodotto che fa il lavoro (il prodotto può essere uno strumento da riga di comando con un codice breve). / p>

Modifica: come per l'aggiornamento, una volta memorizzate le password, puoi sempre crittografare i file arbitrari con GnuPG (crittografia simmetrica con una password: gpg -c ). Pertanto, puoi memorizzare qualsiasi in questo modo, incluse le chiavi private per i certificati.

    
risposta data 30.08.2013 - 19:47
fonte
1

Molti di noi usano programmi come KeePass per tenere traccia degli account. Li crittografa in modo sicuro e li mantiene organizzati. Ha anche client disponibili per la maggior parte degli smartphone e desktop, così puoi accedere alle tue password ovunque tu sia.

    
risposta data 30.08.2013 - 19:29
fonte
0

Puoi provare a KeePassX . Almeno in Linux, in ogni voce è possibile salvare un file. Probabilmente non "aprirà" automaticamente chiavi o certificati privati, ma almeno sei un posto sicuro dove mettere tutte le informazioni critiche.

    
risposta data 30.08.2013 - 19:47
fonte

Leggi altre domande sui tag