Con quale frequenza / dev / urandom esegue il seeding del campione da / dev / random?


15

A meno che non sia totalmente confuso e non lo faccia.

Voglio sapere se / dev / urandom otterrà una maggiore entropia se prendo un RNG hardware e inserisco la sua entropia in / dev / random.

Quindi, per riformulare, se dovessi aumentare l'entropia di / dev / random di X bit / sec (ovvero, / dev / random dopo l'iniezione ti permette di campionare X bit / sec) aumenterebbe l'entropia trasferendola su urandom?


2
Sebbene non molto pertinente, 2uo.de/myths-about-urandom e blog.cloudflare.com/… (in particolare il grafico su blog.cloudflare.com/content/images/image01.png ) potrebbero essere utili per la lettura.
user1686,

Se avessi un vero RNG hardware, potresti semplicemente usarlo direttamente.
Michael Hampton,

Risposte:


25

Non è proprio esatto dire che i /dev/urandomcampioni da /dev/random. Invece, i due pool sono supportati dalla stessa fonte di entropia. Quando il conteggio di entropia dei pool raggiunge lo zero, vengono restituiti dal pool di input condiviso. Quindi, se si dà l'entropia di input del kernel in qualche modo, può usarlo per uno /dev/randomo /dev/urandom, a seconda di quale viene letto.

Tuttavia, /dev/urandom è anche limitato nella frequenza con cui può chiedere il reseeding. Di default può essere ridimensionato solo una volta ogni 60 secondi.

Niente di tutto ciò conta davvero in pratica, perché fintanto che il pool è inizialmente seminato con almeno 128 bit circa di entropia, prevedere qualsiasi output richiederebbe non solo di vedere output precedenti ma anche di rompere gli algoritmi utilizzati, inclusa almeno la resistenza preimmagini di SHA-1 ( che rimane ininterrotto ).


7

Dipende dall'implementazione. Ma in genere, /dev/randome /dev/urandomattira l'entropia dallo stesso pool, quindi lo farà.

Diagramma da https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/


4

In Linux tutti i dati scritti su / dev / random o / dev / urandom vengono copiati sia nel pool di blocco (fonte di casualità per / dev / random) sia nel pool non bloccante (fonte di casualità per / dev / urandom).

Guarda random_write funzione .

Ma i dati scritti su / dev / random non vengono conteggiati dallo stimatore di entropia interna (dopo tutto, alcuni avversari locali potrebbero provare a reindirizzare / dev / zero o qualche altra fonte altamente non casuale a / dev / random), quindi se hai problemi con il blocco / dev / random, scrivere su / dev / random non aiuta.

In Linux scrivi a / dev / random (o / dev / urandom, nessuna differenza), ma leggi sempre da / dev / urandom (una volta eseguito il seeding: in realtà il modo migliore è utilizzare la nuova chiamata di sistema getrandom ).

Non so come funzioni in altri Unices.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.