passphrases - parole minuscole e dizionario

4

Tra la discussione sulla lunghezza della password e la complessità (sintetizzata dalla famosa striscia xkcd e followup dicussion ) Sto cercando di prendere una decisione sui passphrase composti da parole pronunciate.

Capisco i vari calcoli per gli attacchi di forza bruta: sapresti di uno studio ragionevole sulle passphrase che verrebbero fatte da parole pronunciate?

Stavo chiedendo una politica con una lunghezza minima di, diciamo, 13 caratteri, tutto in minuscolo. Mi aspetto di finire con frasi come volleyballisfantastic . Questo è 3 parole. Se la frase è in inglese o francese, la media è di circa 4 parole.

Dal momento che uno dei motivi per passare a una passphrase sarebbe di andare via su alcuni sistemi da meccanismi di limitazione (bloccare l'account per 10 minuti dopo un login fallito o cambiare in modo esponenziale l'intervallo tra i prompt di accesso), mi chiedo se gli attacchi non avrebbero avuto molto successo su tali passphrase.

Grazie per i pensieri o i riferimenti agli studi esistenti (ho cercato su Google e ho scoperto che sono discussioni sulla pura forza bruta).

    
posta WoJ 12.12.2011 - 17:18
fonte

5 risposte

5

Direi che questo non è strettamente un attacco al dizionario, dal momento che non stai testando le parole in un dizionario, ma stringhe di parole. È davvero una forza bruta con un set di "personaggi" diverso. Ciò consente di utilizzare calcoli regolari di entropia.

Se la bruta dell'attaccante forza la password come se fosse una stringa di caratteri minuscoli, allora è lunga 13 e ogni token è una delle 26 scelte. Sono 61 bit di entropia.

Se il bruto dell'attaccante lo forza come se fosse una serie di parole minuscole dalla lista dei dadi inglesi, allora sono 4 lunghe, 7776 scelte, quindi 51 bit di entropia. Oppure, se il bruto dell'attaccante lo impone come parole minuscole dall'OED, 4 lunghe, 181.000 scelte, che ti danno 70 bit.

Dal momento che la maggior parte delle persone non usa parole oscure, nel tuo esempio, sarai più vicino a 50 bit di 60, quindi un attacco di dizionario darebbe risultati migliori. 13 caratteri di lettere casuali sarebbero teoricamente molto più forti di quattro parole.

(Non teoreticamente, ovviamente, una regola di password che richiede 13 caratteri di incomprensibilità significa solo note post-it sui monitor.)

    
risposta data 12.12.2011 - 18:45
fonte
3

Since most people would not use obscure words, in your example, you'll be closer to 50 bits than 60, so a dictionary attack would give better results. 13 characters of random letters would be theoretically much stronger than four words.

@Graham,

È vero che la maggior parte delle persone non usa parole oscure; tuttavia, non sarebbe sufficiente un semplice uso della sostituzione numerica per una singola lettera per poi aumentare la complessità? Ad esempio, anziché houseonfire scrivi h0useonfire . Sarebbe ancora facile da ricordare e il dizionario dovrebbe includere il 'leet speak' per poterlo forzare in modo più efficace.

Questo sarebbe accurato, secondo te?

    
risposta data 13.12.2011 - 02:31
fonte
1

Se dai un'occhiata alla nostra domanda su quella striscia XKCD vedrai molte discussioni sul calcolo dell'entropia, che è tutto ciò che è importante qui, perché una concatenazione di 3 o 4 parole richiede una normale procedura di forza bruta o una forza bruta che utilizza concatenazioni di parole del dizionario.

Il problema in cui ti trovi è questo:

Una forza bruta standard annullerà la passphrase. L'unica domanda è tempo. E se rendi quel tempo abbastanza grande, puoi trattare la passphrase come indistruttibile con questo metodo.

Un attacco di forza bruta basato su dizionario interromperà la passphrase solo se tutte le parole nella passphrase esistono nel dizionario usato, quindi inizi già con un'incertezza nel risultato. Quindi devi pianificare ogni parola del dizionario nelle posizioni 1, 2, 3 e 4 nella tua passphrase (assumendo che tu limiti a 4 parole) e possibilmente tutte le 4 posizioni.

Naturalmente, un buon meccanismo di limitazione renderà impossibili tutti gli attacchi brute force online, quindi tutto ciò di cui hai bisogno è una passphrase "abbastanza buona" per forzare un attacco offline a richiedere più tempo del tuo periodo di sicurezza (che potrebbe essere il doppio della scadenza della password tempo, o 5 volte, o qualunque fattore tu richieda)

    
risposta data 13.12.2011 - 10:43
fonte
1

Dovresti sempre implementare qualche forma di limitazione sui tentativi di accesso - anche con il trucco casuale, non è molto pratico per molte persone memorizzare una passphrase con sufficiente entropia per essere protetta contro un dizionario non limitato attacco, soprattutto se hanno bisogno di uno separato per ogni sito che usano.

(Ci sono modi per aggirare il problema dal lato client, come usare un portafoglio delle password sicuro per memorizzare il sito password, con una singola passphrase strong per accedere al portafoglio, ma per varie ragioni non sono ancora state prese in considerazione.)

Vale anche la pena notare che un attaccante determinato può DOS il tuo sito benissimo anche senza limitazione dell'accesso. La limitazione, se implementata con noncuranza, rende più facile un particolare tipo di attacco DOS mirato. Per mitigare questo effetto, suggerirei almeno i seguenti passaggi:

  • Imposta un limite di accesso per IP piuttosto basso, nonché uno più alto per sito. Ciò significa che un utente malintenzionato deve impiegare più computer con indirizzi IP diversi per DOS efficacemente il proprio sito, il che, sebbene sia certamente possibile, presenta ancora un rallentamento. (Puoi anche o meno volere un limite per utente: è logico se ti aspetti che gli attacchi al dizionario siano mirati ai singoli utenti, ma in molti casi un tipico aggressore sarebbe altrettanto contento della password per qualsiasi account, nel qual caso la loro strategia migliore è quella di attaccarli tutti in parallelo.)

  • Quando viene raggiunto il limite, registralo. Se continua a essere colpito ripetutamente, avvisa gli amministratori del sito, che si tratti di un tentativo DOS o di un vero e proprio attacco al dizionario, vorranno saperlo.

  • Assicurati di fornire agli utenti un modo alternativo per contattare gli amministratori se non riescono ad accedere a causa della limitazione.

  • Ultimo ma non meno importante, richiede un token anti-CSRF su tutti i tentativi di accesso. Dovrai comunque fare questo per proteggerti da login CSRF , ma come utile effetto collaterale, si ferma anche alcuni tipi di attacchi distribuiti semplicistici (come creare un collegamento diretto allo script di accesso e includerlo come URL di immagine in messaggi di forum ampiamente letti).

In definitiva, la lunghezza della password IMO ei requisiti del modulo sono un'aringa rossa, almeno dal punto di vista dell'amministratore del sito: se lasci che i tuoi utenti scelgano la propria password, alcuni sceglieranno quelli deboli, non importa che cosa. Se hai bisogno di password alfanumeriche con segni di punteggiatura, alcuni utenti sceglieranno "abc & 123"; se hai bisogno di frasi di quattro parole, sceglieranno "I love my mom".

Puoi accettarlo e trovare modi per conviverci, oppure, se non puoi o non vuoi farlo, prendi la scelta lontano dai tuoi utenti e genera password casuali per loro. In tal caso, molto suggerisco caldamente di utilizzare il metodo "quattro (o più) parole comuni", poiché restituisce molte password più memorizzabili per una determinata quantità di entropia rispetto a , per esempio, selezionando caratteri o sillabe casuali.

    
risposta data 13.12.2011 - 16:47
fonte
0

Se scegli le parole dal dizionario in modo casuale (non scegliere e scegliere), questa sarebbe una buona parola per la maggior parte delle persone. Sarebbe ancora meglio in quanto sarebbe più facile da ricordare e scrivere. Non devi capitalizzare nulla o aggiungere simboli strani o fare altre cose stupide, il che renderebbe più difficile ricordare.

Se hai un dizionario di 30.000 parole, aggiungendo ogni parola scelta casualmente aggiungerebbe entropia di 14,8 bit

tre parole casuali significherebbero 14 .8 x 3 = 44 bit

cinque parole casuali 14.8 x 5 = 74 bit.

Direi che 3 parole a caso da un dizionario di 30.000 parole andrebbero bene per un account online in cui è possibile rilevare la forza bruta. Per un account offline (o come password principale per il gestore di password), 5 parole sarebbero sufficienti per la maggior parte degli utenti, soprattutto perché la maggior parte dei software moderni esegue un tipo di allungamento / hashing chiave (PBKDF2 o scrypt, ecc.).

5 parole (74 bit) con PBKDF2 o scrypt / bcrypt come la maggior parte del software farebbe con una password sarebbe quasi impossibile alla forza bruta anche per il governo USA (costerebbe loro diversi milioni di dollari e alcuni anni, almeno ).

In altre parole, qualcosa di simile:

"ghost iron iron serious serious"

(quando le parole vengono selezionate casualmente senza pregiudizi umani)

è una buona password per l'account offline dove è possibile la forza bruta (come il wifi), facile da digitare e ricordare, ma piuttosto sicuro.

    
risposta data 19.11.2015 - 06:01
fonte

Leggi altre domande sui tag