Miglior schema di archiviazione password per alta entropia, password uniche resistenti ai guasti [chiuso]

4

Qual è il modo migliore, più sicuro e più semplice per:

  • memorizza password uniche e forti per ogni servizio che richiede l'autenticazione
  • rende il sistema resistente (si evita la perdita totale della sicurezza, le violazioni sono contenute) a più potenziali punti di errore, tra cui:
    1. perdita dell'elenco di password
    2. perdita di qualsiasi password principale che protegge l'elenco delle password - perdita di una password
    3. perdita di due o più password che possono essere collegate alla stessa persona
    4. keylogger
posta 26.10.2011 - 13:44
fonte

3 risposte

5

@bstpierre I didn't realise that the validity of a security system involves length of explanation. This is a proposal to address a real world problem as simply and robustly as possible.

La lunghezza della spiegazione per un sistema che viene implementato direttamente dagli esseri umani è molto importante. La maggior parte delle persone che conosco difficilmente vogliono scegliere una buona password singola , non importa manipolare le stringhe come fa questa proposta.

Ma cerchiamo di essere generosi e supponiamo che un utente possa gestire la complessità. Lo schema presenta ancora diversi problemi che ne impediscono l'utilizzo.

In primo luogo, genera password come -----A1A8+QdjkD(* . Cosa succede quando deve avere un account con un sito web Braindead che richiede una password alfanumerica di 6-8 caratteri? (Risposta: avrai bisogno di un algoritmo di ricostruzione secondario o di un terzo sale e un algoritmo di hashing alternativo che generi stringhe alfanumeriche (possibilmente brevi). alcuni meccanismi per contrassegnare le password deboli.) Devi già ricordare 7 blocchi di informazioni per ricostruire la password (senza contare l'algoritmo - presumo per ragioni che tu abbia questo automatismo). E diventa ancora peggio, perché dopo aver risolto questo problema, ti imbatterai in un servizio ancora più braindead che richiede un nuovo set di ricette.

Un altro problema è il passo dell'utilizzo della prima metà della password "dalla riga successiva". Se perdi la lista, puoi ricostruire la coppia "parola" per ogni sito, ma non sarai in grado di ricostruire la password corretta a meno che tu non abbia corretto l'ordine dei siti. (IMO questo passaggio è un'offuscamento non necessario: se qualcuno ha la lista e conosce l'algoritmo, allora non c'è alcun valore aggiunto per te.)

E poi fai affidamento sul hashing del "nome del servizio". Quale stringa specifica stai usando per questo? Il nome del server? Cosa succede quando MegaBank viene acquistato da GigaBank e i tuoi account passano da www.mega.example.com a wws1.giga.example.com? Suppongo che sia abbastanza semplice cambiare semplicemente le password quando il nome del servizio cambia, ma è un altro fastidio.

Come gestisci le modifiche alle password forzate? Un sistema che conosco sembra ricordare le ultime due password in modo da non poterle riutilizzare. È possibile modificare lo schema per includere un ottavo blocco di informazioni - un "numero di sequenza"; questo sarebbe aggiunto (o anteposto, o inserito in qualche posizione arbitraria - ma questa quantità di variazione equivale a ricordare un nono blocco di informazioni). Ciò diventa una seccatura per i sistemi che richiedono la modifica della password ogni 60 o 90 giorni.

Come vengono tracciati i nomi utente? Li memorizzi o vengono annotati?

Che cosa succede se hai più account con un singolo servizio? Il tuo algoritmo garantisce (in base alla progettazione) che un determinato servizio genera esattamente una password. Ad esempio, forse devi accedere a account separati presso la tua banca o la tua intermediazione.

Come stai memorizzando la "password molto lunga" utilizzata per generare gli hash? Questo deve essere memorizzato da qualche parte, separatamente dall'elenco delle password.

If you have a more elegant solution that meets the design criteria, please share! I'd love to use it

Non ho un'altra soluzione adatta ai tuoi criteri.

In passato ho utilizzato uno schema di ricostruzione basato sul nome del sito Web e un paio di bit di informazioni. È crollato velocemente a causa delle ragioni sopra esposte e ho iniziato a usare keepassx con una password master strong. Ora, su ciascun servizio, utilizzo una password di lunghezza massima univoca generata in modo casuale con il set massimo consentito di caratteri.

La tua domanda delinea i rischi associati a questo sistema.

Modifica : un singolo punto di errore che ho perso nella mia analisi iniziale è il tuo account di posta elettronica. A meno che non si stiano utilizzando più account di posta elettronica indipendenti, con un account separato per ciascun servizio, la posta elettronica costituisce un singolo punto di errore per più servizi a causa del modo in cui la maggior parte dei sistemi di recupero password funziona. Se la tua password dell'account di posta elettronica è compromessa (social engineering, keylogger, ecc.), Molti dei tuoi servizi saranno compromessi.

    
risposta data 27.10.2011 - 03:36
fonte
7

Anche se quella tecnica potrebbe funzionare per te e ti darà una forza ragionevole (dal mio rapido sfogliare), il semplice problema che almeno il 95% del pianeta avrebbe:

È troppo complicato

Gli umani (generalmente) semplicemente non ricorderanno quelle regole e perderanno il pezzo di carta

Quindi, mentre una rapida risposta alla domanda specifica potrebbe essere "sembra a posto", la sua applicabilità è minima.

    
risposta data 26.10.2011 - 14:17
fonte
4

Come notato, questa tecnica è troppo complicata e richiede una grande quantità di tempo solo per inserire la password (è necessario ricordare il sale, il riempimento, il divisore e quindi applicare quelli all'hash).

Perché non usare frasi di testo semplici (ovviamente diverse per servizi diversi) come suggerito da xkcd (vedi anche questa domanda )? Hanno un'alta entropia, sono facili da ricordare e veloci da digitare.

    
risposta data 26.10.2011 - 17:44
fonte

Leggi altre domande sui tag