L'eliminazione della possibilità di ripetere le parole rende le password di Diceware significativamente meno sicure?

8

Ho letto su passphrase Diceware e ho montato un piccolo programma per generare password in quello stile. Lo faccio prendendo l'elenco delle parole del dizionario per creare password e "ordinarle" con un numero casuale (quello prodotto da System.Security.Cryptography.RNGCryptoServiceProvider ), in sostanza mischiandoli. Poi lo passo in coda e rimuovi le parole quando si deve generare una password.

Questo è un po 'diverso dalla versione per penna e carta, poiché esiste la possibilità, anche se remota, che una parola possa essere ripetuta. Quindi, in modo chiaro, riduciamo un po 'il numero di password possibili. Questa riduzione delle possibili password modifica in modo significativo la suscettibilità di tali password al cracking? Sarebbe meglio leggere il dizionario in una matrice e ottenere le parole generando un numero casuale e accedendo alla matrice in quell'indice?

    
posta Casey 28.01.2016 - 02:45
fonte

1 risposta

10

Questo potrebbe ottenere migliori risposte in crypto.stackexchange.com o math.stackexchange.com , ma penso di poterti dare il succo di ciò.

Se ci allontaniamo dalle parole e dai un'occhiata ad alcuni numeri potrebbe essere utile illustrare.

Prendi ad esempio un codice a quattro cifre per un lucchetto.
Ci sono 10 possibili cifre (0-9) e quattro spazi in cui possono essere inseriti, quindi ci sono 10 * 10 * 10 * 10 = 10 ^ 4 = 10.000 combinazioni possibili.

Se dici che non ci possono essere cifre ripetute, sul primo spazio avresti 10 cifre possibili, il secondo 9, il terzo 8 e infine 7 possibili cifre sull'ultimo spazio.
Lascia 10 * 9 * 8 * 7 = 5,040 combinazioni possibili, o circa la metà.

Se applichiamo questo al tuo creatore di password, prenderemo il numero totale di parole che stai usando come possibilità (la maggior parte dei sistemi Unix ha un dizionario inglese con circa 200.000, quindi possiamo usare questo numero per ora), e numero totale di parole nella tua password (utilizzando 6 come raccomandato da Diceware).

Questo significa che senza alcuna restrizione sulla ripetizione, ci sono esattamente 200.000 ^ 6 = 64 nonillion possibili combinazioni di password.

Se non si desiderava ripetere le parole, ci sarebbero 200.000 * 199.999 * 199.998 * 199.997 * 199.996 * 199.995 ≈ 63.995 combinazioni di password diverse da zero.

Questa è una differenza di circa .00008%.

Come puoi vedere, con un dizionario di almeno 200.000 parole univoche e uno spazio delle chiavi di sei parole, la differenza tra nessuna restrizione della password e limitazione delle parole ripetute è trascurabile.

Questa differenza avrebbe quindi un effetto ugualmente trascurabile sulla resistenza della password al cracking.

Modifica

LieRyan ha sottolineato che Diceware utilizza un vocabolario di 7776 parole comuni, facili da digitare. Se volessimo vedere la differenza con un elenco di tale dimensione, sarebbe simile a qualcosa:

Nessuna restrizione: 7776 ^ 6 ≈ 2.21 sextillion possibili combinazioni.
Nessuna ripetizione: 7776 * 7775 * 7774 * 7773 * 7772 * 7771 ≈ 2.2064 combinazioni possibili di sequestione.
Differenza: ~ 0,19%

Diamo un'occhiata a cosa significa per qualcuno che tenta di decifrare la tua password.

Assume your adversary is capable of one trillion guesses per second. -Edward Snowden, 2014

Se prendiamo questa stima (enfasi), divideremo il numero totale di combinazioni possibili per il numero di ipotesi / secondo per ottenere i secondi totali presi a forza maggiore ogni combinazione della lista di parole.

Cioè, 2,2 combinazioni di sestilione / 1 trilione di tentativi / sec = 2,2 miliardi di secondi = 69,72 anni (rispetto a 70,03 anni senza limitazioni di password)

Questo è il tempo medio che impiegherebbe un cracker di password ben equipaggiato e dotato (con accesso a una copia della tua lista di parole) per rinforzare una password creata con questo metodo.

    
risposta data 28.01.2016 - 03:32
fonte

Leggi altre domande sui tag