Come viene calcolata (o stimata) l'entropia disponibile in / dev / random?

11

Sembra (per un non esperto) che /dev/random sia acclamato per essere utilizzabile come fonte di dati puramente casuali. Tuttavia, sono curioso dell'analisi del file /dev/random .

/dev/random è un punto di raccolta di dati rumorosi dall'hardware. Il file viene espanso quando viene raccolto più rumore dall'hardware; quando viene aggiunto un nuovo rumore, i vecchi dati vengono spostati in modo che il file nel suo complesso rappresenti una sorta di fonte di entropia.

Supporrò che /dev/random sarà usato una sola volta per evitare problemi derivanti dal riutilizzo di una volta. Poi c'è una cosa che mi infastidisce ー come viene stimata l'entropia. Sono meno interessato alle risposte alle seguenti domande e più interessato alla questione se la ricerca passata abbia considerato queste domande e fornito qualcosa di rilevante.

Come viene calcolato il numero di bit di entropia nel file? Sospetto che non sia la dimensione del file, poiché stat e ls -s restituiscono 0 , ma il numero di bit di entropia è disponibile in /proc/sys/kernel/random/entropy_avail . È qualcosa come il numero di bit che possono essere ottenuti senza imparare nulla se non il bit stesso?

Non ho davvero capito la spiegazione nel codice sorgente o in Gutterman et al. Sospetto che non si possa calcolare esattamente questo valore in modo esatto. Tuttavia, si può garantire che se leggo meno di entropy_avail bit da /dev/random , allora l'entropia in quella stringa è approssimativamente la lunghezza della stringa? In altre parole, il valore di entropy_avail è un limite inferiore conservativo sul numero di bit casuali che è possibile ottenere leggendo /dev/random ?

Sarei molto interessato per un riferimento sull'ultimo!

    
posta techraf 18.11.2012 - 03:02
fonte

2 risposte

3

C'è un breve documento sull'archivio di crittografia ePrint che potrebbe rispondere alla tua domanda. Fondamentalmente l'autore interpreta il codice dello stimatore di entropia come stima di entropia di tipo Kolmogorov in cui un evento è "casuale" se non è accaduto troppo vicino dall'evento precedente, se il tempo tra due eventi consecutivi non è troppo prevedibile e così via Ecco il link che risponderà alla domanda meglio di quello che ho fatto link

    
risposta data 19.11.2012 - 17:25
fonte
2

/proc/sys/kernel/random/entropy_avail ti dà semplicemente il numero di bit che possono essere letti attualmente da /dev/random . I tentativi di leggere più di quello si bloccheranno fino a quando non sarà disponibile più entropia. Puoi trattare questi bit come faresti con qualsiasi altro bit da una fonte crittograficamente casuale.

I bit da /dev/random non possono essere riletti.

    
risposta data 18.11.2012 - 04:52
fonte

Leggi altre domande sui tag