2009-12-08 6 views
7

In Linux, quanto è casuale lo /dev/urandom/? È considerato sicuro?Quanto casuale è casuale?

Inoltre è possibile ottenere un flusso di 1?

+3

* "E 'considerato sicuro?" * * Sicuro per quello che *? La risposta dipende interamente dal contesto. – dmckee

risposta

9

nota 4.5 anni dopo: questo è un cattivo consiglio. Vedi uno di theselinks per i dettagli.

Se si generano chiavi di crittografia su Linux, si desidera /dev/random, anche se si blocca-- non è necessario che molti bit.

Per quasi tutto il resto, come la generazione di dati di test casuali o ID di sessione imprevedibili, /dev/urandom va bene. Ci sono abbastanza fonti di entropia nella maggior parte dei sistemi (timing di eventi di tastiera e mouse, pacchetti di rete, ecc.) Che l'output sarà imprevedibile.

+1

+1, anche se è spesso più facile e veloce raccogliere la propria entropia anziché attendere un blocco/dev/random. Riempio i file di grandi dimensioni in questo modo per l'entropia 'imbottigliata' quando si lavora su simulazioni di monte carlo, è molto più veloce battere le chiavi e spostare il mouse che attendere su/dev/random –

+0

Sono confuso: com'è meglio che usare/dev/urandom? –

+2

L'ultima volta che ho guardato/dev/urandom su linux ha restituito lo stesso output di/dev/random * finché c'è entropia nel pool * perché entrambi usano il pool. La differenza è che urandom ricadrà su un semplice algoritmo di rilocalizzazione quando non vi è alcuna entropia memorizzata, mentre random attenderà fino a quando non sarà stata aggiunta una nuova entropia. – dmckee

4

prega di controllare la man page:

Yarrow is a fairly resilient algorithm, and is believed to be resistant 
    to non-root. The quality of its output is however dependent on regular 
    addition of appropriate entropy. If the SecurityServer system daemon 
    fails for any reason, output quality will suffer over time without any 
    explicit indication from the random device itself. 

    Paranoid programmers can counteract this risk somewhat by collecting 
    entropy of their choice (e.g. from keystroke or mouse timings) and seed- 
    ing it into random directly before obtaining important random numbers. 
+0

Ma diciamo che stai tirando da casuale o urandom. e il sistema è appena seduto lì, diciamo un cd dal vivo. L'entropia non sarebbe simile ogni volta che si verificava lo stesso scenario. – Recursion

+0

Questo è un collegamento a una pagina man BSD, e in questo caso il comportamento di Linux è diverso:/dev/random è "più forte" di/dev/urandom. –

0

utilizza/dev/urandom, è crittograficamente sicuro.

buona lettura: http://www.2uo.de/myths-about-urandom/

"Se non si è sicuri se si deve utilizzare/dev/random o/dev/urandom, allora probabilmente si desidera utilizzare quest'ultimo."

In caso di dubbio in fase di avvio iniziale, se si dispone di sufficiente entropia raccolta. utilizzare invece la chiamata di sistema getrandom(). [1] Il suo meglio di entrambi i mondi, blocca fino a quando (solo una volta!) Viene raccolta abbastanza entropia, dopodiché non si bloccherà più.

[1] git kernel commit