Qual è la lunghezza migliore per le password generate casualmente? (Sicurezza vs. compatibilità)

10

In generale, si consiglia di utilizzare una password univoca per ciascun servizio online, un generatore di password casuali per crearli e un gestore di password per memorizzarli.

Ho iniziato a sostituire tutte le mie password online con questa tecnica, ma alcuni siti hanno determinate regole riguardanti la lunghezza di una password.

Purtroppo, a volte, un sito Web non verrà programmato per comunicare il numero massimo di caratteri consentiti e semplicemente eliminare l'overflow se copiato nel campo della password. Per questo motivo, ho già avuto qualche problema a riprendere il controllo di un account, dal momento che non sapevo quanti caratteri sono stati salvati come password.

Esiste un numero specifico di caratteri che probabilmente funzionerà sulla maggior parte dei siti / programmi di back-end e che è ancora considerato relativamente sicuro per le password generate casualmente, in modo tale che io possa usare solo un'impostazione della lunghezza del generatore di password per quanti più siti possibile?

    
posta Prototype700 21.10.2017 - 00:12
fonte

4 risposte

9

Se le tue password sono n caratteri disegnati a caso, con uguale probabilità, da un set di 95 caratteri (che riguarda tutti i caratteri stampabili ASCII meno spazio), ogni carattere ti dà circa 6,6 bit di entropia, quindi la forza di una password casuale con caratteri n è 6.6 × n . Quindi:

  • Una password di 10 caratteri fornisce una potenza di 66 bit;
  • Una password di 12 caratteri fornisce una potenza di circa 79 bit;
  • Una password di 14 caratteri fornisce una potenza di circa 92 bit;
  • Una password di 20 caratteri fornisce una potenza di 132 bit.

A mio giudizio, potresti scegliere sensibilmente una di queste lunghezze a seconda dell'applicazione. Ad esempio, se si utilizza una password di 66 bit per un servizio online di basso valore, la password sarà ancora più potente di quasi tutti coloro che utilizzano tale servizio. Ma se stiamo parlando di una password che viene utilizzata per ricavare una chiave di crittografia su un software eseguito sul tuo hardware, dovresti considerare sicuramente qualcosa di più strong.

Per aggiungere alcuni pensieri aggiuntivi, vale la pena considerare due tipi di attacco:

  1. Un attacco indirizzato a un sito web (o altro servizio protetto da password) a cui ti sei iscritto;
  2. Un attacco contro in particolare .

Nello scenario n. 1, il password cracker sta per suddividere il loro potere computazionale nel cracking di quante più password degli utenti possibile , nella speranza di trovare i fruitori di frutta a basso impatto che hanno password molto deboli. Credo che una password da 64 a 80 bit sia sufficiente per difendere le tue password da tali attacchi.

Nello scenario n. 2, l'attaccante dedicherà tutta la sua potenza computazionale allo spezzamento specifico della tua password. In tal caso, un potente avversario potrebbe (o potrebbe non!) Essere in grado di decifrare una password di 66 bit, e si potrebbe quindi giustificare di andare fino a 19-20 caratteri (in modo che corrisponda al 128 -bit forza di sicurezza della maggior parte delle cifre).

E ricorda sempre che se la tua password è abbastanza strong, significa che l'attaccante n. 2 sta per sondare un altro punto debole. Non preoccuparti di rendere la tua password scomoda se hai dei grossi buchi altrove.

    
risposta data 21.10.2017 - 01:15
fonte
4

Diversamente dalle altre risposte (finora) e suggerisco che se stai generando una password casuale unica per sito web, non hai affatto bisogno di una password veramente lunga.

Pensiamo alle minacce alle password. Daremo un'occhiata solo al lato server (non terremo conto di cose come il malware di registrazione dei tasti sul tuo PC dato che la lunghezza della password non aiuta molto)

Quindi fondamentalmente gli attacchi, per i quali la lunghezza della password è rilevante, rientrano in due categorie. Brute-force online e brute-force offline.

Nella brute-force online, l'utente malintenzionato cerca di indovinare la tua password contro il sito Web, quindi invia una richiesta per tentativo. In realtà molti siti si bloccheranno dopo un numero di richieste errate, ma per questo si assume che non lo fanno

Supponiamo ora che l'attaccante possa fare 1000 ipotesi al secondo. Se hai (per esempio) scelto una password casuale di 8 caratteri usando i caratteri Upper, Lower e numerici ci sono 62 ^ 8 opzioni. A quel ritmo stiamo parlando della morte termica dell'universo prima che lo indovinino.

Ora qualcuno potrebbe dire "cosa succede se l'attaccante ottiene una botnet per indovinarlo, può andare molto più veloce!", suggerirei di fare praticamente qualsiasi sito prima di renderlo abbastanza veloce da essere pratico.

Ok lascia parlare la brute-force offline poiché è più rilevante per la lunghezza della password. Qui l'atacker ha già una copia dell'hash della password, quindi è probabile che abbiano compromesso la sicurezza di quel sito in modo abbastanza approfondito. Qui puoi fare un argomento per cui vuoi che la password duri abbastanza a lungo affinché il sito si accorga di essere stato pwnato e ti ha portato a reimpostare la tua password.

Dire esattamente quanto è lungo un po 'complicato in quanto dipende molto da come il sito memorizza le proprie password. Se usano MD5 non salato questa è una differenza enorme rispetto a se usano bcrypt con un fattore di lavoro elevato.

Tuttavia, una cosa da considerare in tutto questo è l'impatto. Qual è l'impatto di questa password in fase di crack. Bene, se hai utilizzato un valore casuale unico per ogni sito, l'impatto sarà probabilmente piuttosto limitato. avresti spero che i tuoi siti di alto valore utilizzino tutti 2FA, quindi la password da sola non ottiene l'aggressore lontano e i siti con un valore basso, beh, quali sono le conseguenze del compromesso?

Tutta quell'analisi non risponde alla tua domanda, ma come regola generale ti suggerirei se usi addirittura 10-12 caratteri con Superiore, Inferiore e numerico e le password siano davvero casuali (questo è l'importante bit) sei a) probabilmente andrà bene e b) difficilmente incontrerà problemi con qualsiasi restrizione del sito.

Per questo articolo su password cracking a 10 caratteri superiore, inferiore, numerico la password impiegherebbe 83 giorni per un "Super computer o botnet" da decifrare. Quello che devi chiedertelo è, è probabile che un hacker investirà quel costo per rompere una singola password in cui hanno già compromesso la sicurezza del sito di destinazione per ottenere l'hash ....

    
risposta data 21.10.2017 - 18:18
fonte
2

Dal mio uso personale e test ad hoc, ho trovato 20 caratteri casuali, usando le lettere in alto / in basso / cifre più alcuni speciali selezionati con attenzione (@ # $ ._ esclusa la parentesi), per essere un buon mix:

  • Buona durata - meno probabilità di essere troncato silenziosamente (una volta superati i 20, più siti iniziano a troncare silenziosamente - proprio come hai visto - oppure li rifiutano come "troppo lunghi" - 20 erano in passato troppo grande per questo scopo, ma il paesaggio si è spostato negli ultimi anni)
  • Dimensioni dello spazio delle chiavi molto buone ((26 + 26 + 10 + 5) ^ 20 = 3.32x10 ^ 36) - ammesso overkill anche per i viaggiatori del tempo dello stato nazionale del prossimo futuro, ma destinati a coprire quasi tutti i potenziali modelli di minaccia (compresa la considerazione della Legge di Moore e delle risorse a livello di stato nazionale) per quasi tutti, senza essere troppo lunghi in modo ingestibile
  • Soddisfa i requisiti di complessità più ingenui / legacy (incluso richiedere almeno un carattere speciale)
  • Soddisfa molti requisiti " non -complessità" (caratteri vietati)

In altre parole, questo è un approccio che penso si adatti alla maggior parte dei modelli di minacce e casi d'uso.

Non ho dati formali per supportare questa affermazione se non la mia stessa sperimentazione con i miei stessi accessi nel corso degli anni, ma questa è la mia opinione. Potresti dover armeggiare con l'elenco delle offerte speciali nel tempo, ma ti viene l'idea.

Modifica per aggiungere una riga di comando di esempio:

echo $(tr -d -c 'A-Za-z0-9@#$._' </dev/urandom | head -c 20)
    
risposta data 21.10.2017 - 04:24
fonte
1

Purtroppo, non ci sono standard per le password consentite, né alcuna somiglianza tra i siti web. Gli sviluppatori mettono in atto tutte le restrizioni che immaginano potrebbero aiutare la sicurezza, altri introducono restrizioni basate su regole esterne (ma anche completamente arbitrarie). Ciò significa che se hai capito che le 14 password dei personaggi colpiscono il punto giusto, avrai ancora altre regole incompatibili con cui fare i conti: un numero di lettere maiuscole, minuscole, cifre o simboli, e avrai set di caratteri limitati che non sono compatibili tra loro. Alcuni siti consentono solo pochissimi caratteri speciali (o del tutto assenti) nella speranza di evitare attacchi di SQL injection; altri richiedono caratteri speciali diversi perché pensano erroneamente che un set di caratteri più ampio migliori la sicurezza.

La soluzione migliore è rendere il generatore configurabile e visualizzare ogni sito come una fonte indipendente di regole.

    
risposta data 22.10.2017 - 00:41
fonte