C'è qualche debolezza pratica nell'usare MT19937 per generare passphrase?

4

Supponiamo che io usi MT19937 per scegliere parole casuali da (ad esempio) l'elenco di parole Diceware . So che MT19937 non è considerato un PRNG crittograficamente sicuro, ma Wikipedia suggerisce che la debolezza è piuttosto poco interessante per questo scopo:

The algorithm in its native form is not cryptographically secure. The reason is that observing a sufficient number of iterations (624 in the case of MT19937, since this is the size of the state vector from which future iterations are produced) allows one to predict all future iterations.

Dal momento che sembra piuttosto improbabile che io abbia bisogno di qualcosa come molte iterazioni per generare una passphrase strong, non vedo come un utente malintenzionato potrebbe sfruttare questa debolezza, supponendo che la mia password sia protetta in modo sicuro e salata agli standard del settore (ad esempio PBKDF2 con 10k + round e un unico sale per account). Sembra che questo sia considerato solo un punto debole perché rende MT19937 inadatto per l'uso in protocolli crittografici di lunga durata e in altre situazioni in cui un utente malintenzionato potrebbe osservare plausibilmente molte iterazioni.

Poiché MT19937 ha un periodo molto più lungo del numero di passphrase possibili, intuitivamente sembra che dovrebbe essere sicuro per questo tipo di utilizzo. Ma non mi piace fare affidamento sull'intuizione.

La mia ingenua stima dell'entropia della passphrase è log2 (N! / (N - r)!) per N = il numero di parole nel dizionario e r = il numero di parole nella passphrase (stiamo campionando senza sostituzione ; se si campiona con la sostituzione, i numeri aumentano un po ', ma non di molto, e non voglio una passphrase con parole ripetute comunque). Questo è allo stesso tempo abbastanza grande da essere poco pratico da attaccare e sostanzialmente più piccolo di 19937 bit per valori ragionevoli di N e r (ad esempio N = 2 ^ 12 e r = 5 ), quindi sembra sicuro. Ma non ho tenuto conto dell'uso di MT19937 perché non so come farlo.

Esistono attacchi noti o ragionevolmente probabili su passphrase generate, salate e hash in questo modo? In particolare, la conoscenza del PRNG utilizzata ci consente di ridurre significativamente l'entropia?

    
posta Kevin 13.01.2016 - 21:27
fonte

1 risposta

3

Non devi preoccuparti della forza crittografica. In effetti non ne ricaverete abbastanza valori perché l'attacco contamini e anche se lo avete fatto, nessuno può osservare quei valori. (Ovviamente se crei milioni di password e pensi che una parte di esse sia compromessa potrebbe cambiare le cose.)

Ciò che devi fare attenzione è quale è il tuo seme iniziale. Se si utilizza ad esempio il tempo, un utente malintenzionato deve solo indovinare a che ora è stata creata la password.

Conoscere il PRNG aiuta solo a ridurre l'entropia se il PRNG è estremamente cattivo. Molto peggio di MT19937.

    
risposta data 14.01.2016 - 00:38
fonte

Leggi altre domande sui tag