I CSPRNG hanno una lunghezza massima del seme in ingresso per il rapporto lunghezza uscita?

0

Usando quelli che possono essere considerati i CSPRNG "migliori" o "più sicuri" di oggi, quanti dati massimi N è possibile leggere da un input seme di CSPRNG di lunghezza n prima che l'uscita inizi a diventare prevedibile (senza reseeding)? Si può leggere da esso indefinitamente e ottenere comunque risultati imprevedibili?
Più concretamente: posso generare 20kb di dati da un dispositivo di numero casuale hardware, inviarlo a un CSPRNG con stato, eliminare il generatore di numeri casuali dell'hardware e utilizzare indefinitamente i dati dal CSPRNG per scopi crittografici?

Nota: mi rendo conto che "la lunghezza" può essere problematica, quindi questa domanda può essere risolta in termini di qualità di entropia.

    
posta automaton 03.09.2016 - 14:46
fonte

1 risposta

1

Questo è esattamente ciò che fa / dev / urandom, in realtà.

Un PRNG con un seme di lunghezza N bit avrà un periodo (lunghezza di ripetizione) di 2 ^ N bit, a causa del principio del pigeonhole. Quindi, finché il tuo CSPRNG è perfettamente sicuro e ha una lunghezza di seme, ad esempio di 256 bit, non devi preoccuparti di ripetere mai prima della morte termica dell'universo. (Nota che i semi hanno una lunghezza fissa.)

Il motivo per cui questo è considerato pericoloso è perché se per qualsiasi ragione il tuo PRNG perde stato, diciamo perché un utente malintenzionato usa un bug di informazione-divulgazione del kernel, tutti i dati "casuali" vengono compromessi fino al successivo riavvolgimento. OTOH, il recupero della casualità "reale" quando ne hai bisogno fornisce una perfetta sicurezza in avanti.

    
risposta data 03.09.2016 - 15:05
fonte

Leggi altre domande sui tag