L'aggiunta di un carattere casuale a una password generata in modo pseudo casuale migliora significativamente l'entropia?

4

Sto facendo una domanda pratica. Mi è stato insegnato che i computer sono cattivi nel generare dati casuali. Questo significa generatori di password, come quello integrato in Keepass, succhiare? Se sì, sarebbe utile per l'utente inserire manualmente un carattere o due nella password generata?

    
posta Celeritas 24.09.2015 - 09:21
fonte

2 risposte

3

Gli umani sono piuttosto terribili nel generare dati casuali. Chiedete a una persona di darvi un numero casuale compreso tra 1 e 20, otterrete molti più 7 e 17 rispetto ad altri numeri poiché percepiamo che questi numeri sono più "casuali". (Fonte: link )

I computer d'altra parte sono deterministici e in quanto tali non possono generare veri dati casuali da soli. Quindi vengono usati generatori pseudocasuali che sono equazioni leggermente complesse. Quelle equazioni hanno bisogno di un seme che dovrebbe essere in qualche modo casuale. Per generare questo seme ecco alcuni metodi:

  • Alta risoluzione della misurazione del tempo (spesso cicli di clock) al momento dell'esecuzione
  • Input dell'utente, spesso dai topi, le buone implementazioni utilizzano l'incapacità umana di controllare perfettamente i topi
  • Generatore di casualità esterna, ci sono dispositivi esterni che utilizzano un processo chimico o fisico non deterministico o alcuni parametri ambientali che fluttuano molto per generare dati casuali.

Quindi per rispondere alle tue domande.

Does adding a random character to a pseudo-randomly generated password improve entropy significantly?

L'aggiunta di caratteri a una password anche quando non perfettamente distribuita uniformemente aumenta l'entropia. È significativo? Questo dipende in gran parte dalla lunghezza della password, vedi il commento di Anonymous Coward su questa risposta per una spiegazione.

Does this mean password generators, such as the one built into Keepass, suck?

Questo dipende completamente dal modo in cui il seme viene generato. Non so come lo fa Keepass ma ci sono sicuramente generatori di password che usano ottimi metodi di generazione dei semi (a volte combinazioni di metodi).

would it help for the user to manually enter a character or two in the generated password?

Supponendo che la password risultante rimanga della stessa lunghezza, dipende dal tuo punto di vista. Come ho detto, gli umani sono dei generatori di casualità molto cattivi e di conseguenza questo ridurrebbe teoricamente l'entropia della password. Tuttavia aggiunge ulteriori variabili al processo di generazione della password che, se correttamente implementato, potrebbe aumentare la forza della password contro gli attacchi diretti all'algoritmo pseudocasuale e al processo seme.

Modifica: rispondi al commento

How could a human adding 1 or 2 random characters (in a random position of the existing password) decrease entropy?

Suppongo che intendi sostituire 1 o 2 caratteri casuali come ho spiegato sopra, nel rispondere alla domanda per il titolo, aggiungere solo caratteri casuali (anche se non distribuiti uniformemente) aumenterà sempre l'entropia.

Quindi esaminiamo nuovamente il processo di generazione dei dati casuali:

  1. ottieni un seme
  2. usa il seme come input per il generatore pseudocasuale
  3. ottieni l'output dal generatore pseudocasuale (e usalo da qualche parte)
  4. usa l'output come prossimo input per il generatore pseudocasuale (questo è il più delle volte eseguito dietro le schermate del generatore pseudocasuale)
  5. ripeti dal passaggio 3

Un processo piuttosto semplice e dato che un computer è deterministico, le uniche incognite di alcuni attaccanti sono il seme e il numero di volte in cui il processo viene iterato prima che l'output venga utilizzato per la password specifica che stiamo cercando di violare.

Se si guarda a questo processo ci si potrebbe chiedere perché non sempre si calcoli un seme e lo si usi come dati casuali, alla fine il seme è ciò che rende il processo casuale. Allora, qual è il lavoro del generatore pseudocasuale? La sua funzione è duplice, in primo luogo consente di generare più dati casuali da un seme. Questo è importante perché i semi buoni sono costosi. Avanti e forse ancora più importante crea dati casuali uniformemente distribuiti. E questo è molto importante in quanto il seme (diciamo quando stiamo usando una misurazione del tempo) avrà spesso una struttura.

Ora, quando sostituisci 2 caratteri di questi dati casuali distribuiti uniformemente con dati casuali distribuiti in modo meno uniforme (ricorda i 7 e i 17), stai riducendo l'entropia della password. Tuttavia, ciò non significa necessariamente che la password è più difficile da interrompere, poiché crea uno sconosciuto in più al sistema accanto al numero en di iterazioni.

Tuttavia come side-note da un punto di vista teorico si potrebbero usare quei 2 caratteri di input dell'utente per aiutare a creare il seed che potrebbe aumentare l'entropia nel sistema, a seconda del precedente metodo seed e di cos'altro è usato per creare il seed .

    
risposta data 24.09.2015 - 09:59
fonte
2

La tua domanda sembra presupporre che il fatto che la password sia solo pseudo-casualmente generata è cattiva. Tuttavia, in realtà non importa molto, tutto ciò che conta è che la tua password dovrebbe essere imprevedibile , e questa non è la stessa cosa.

Un vero valore casuale è un valore casuale che viene semplicemente visualizzato da "nessun luogo", o per esprimerlo meglio un valore che verrà generato in modo non deterministico. Il vero generatore di numeri casuali (TRNG) richiede hardware specifico che di solito si affida a un insieme più o meno ampio di fenomeni fisici o elettrici combinati per produrre un set di valori più piccolo che sarà considerato casuale. Questo valore non sarà il risultato di alcun algoritmo di qualche tipo.

Al contrario, un generatore di numeri pseudo-casuali (PRNG) sarà un algoritmo ben definito e testato che, dato uno stato interno iniziale, produrrà un valore definito e passerà a un successivo stato definito definito. Tutto ciò deve essere ben definito poiché ciò consentirà agli scienziati di analizzare l'algoritmo e determinarne il valore crittografico.

Come in molte altre moderne aree crittografiche, il segreto non è nell'algoritmo, ma qui il segreto sta in questo dato stato iniziale. Il numero di diversi stati possibili in un dato momento può essere più o meno grande: questo sarà ciò che si chiama entropia. Maggiore è il numero di stati possibili, maggiore è l'entropia.

Con un'entropia abbastanza grande, un attaccante non avrà modo di determinare lo stato attuale del PRNG, e quindi non sarà in grado di determinare il prossimo valore che verrà generato. Questo è ciò che viene chiamato imprevedibilità . Come puoi vedere, questo è diverso da casualità poiché il valore risultante sarà il risultato di un processo ben noto e controllato in cui non c'è spazio per il destino.

Questo è esattamente ciò di cui hai bisogno per le tue password e altri segreti: deve essere imprevedibile . Come hai affermato, senza uno specifico hardware TRNG, un computer non è in grado di generare una password casuale. Tuttavia, come spiega Selenog nella sua buona risposta, il fatto è che il cervello umano in realtà non è migliore. Ma, quando si tratta di generare un valore imprevedibile, dotato di un PRNG appropriato e di una corretta entropia, il computer batterà definitivamente il cervello umano .

Come nel caso specifico di KeePass, non ho controllato personalmente la sua implementazione. Tuttavia, secondo la sua documentazione non sembra provare a reinventare la ruota, ma invece si basano su algoritmi testati e Sistema operativo fornito fonti PRNG. Inoltre, questo prodotto è sia open source che ampiamente utilizzato, ma sicuramente passa attraverso molti scrutini. Quindi non direi certo che "le password di KeePass fanno schifo".

Come spiegato nel commento di Anonimo Coward, se generi una password già sicura con KeePass, aggiungere alcuni caratteri in più non farà mai del male. Quindi, se ti senti più sicuro nel tentativo di aggirare un problema di generazione di password di KeePass non ancora pubblicato, fallo (nota che KeePass offre anche un'alternativa che ti consente di fornire input mouse / tastiera per aumentare la sua entropia PRNG interna durante la password processo di generazione). Tuttavia, questo non deve portare a configurare KeePass nella generazione di password più brevi " perché lo completerò io stesso " o sostituire alcuni caratteri generati: ciò che otterresti qui sarebbe sostituire i personaggi generati dal computer generati dall'imprevedibile generato caratteri più prevedibili e non sarebbe di alcuna utilità per la sicurezza della tua password.

    
risposta data 25.09.2015 - 10:31
fonte

Leggi altre domande sui tag