La mia chiave OpenPGP è spazzatura a causa di una cattiva entropia?

4

Ho avuto problemi a generare una chiave OpenPGP sulla mia macchina XUbuntu, perché GnuPG non ha avuto abbastanza entropia. Dopo un po 'di tempo passato a navigare e a fare cose stupide per generare più entropia, non è ancora successo niente.

Quindi ho seguito un'istruzione e usato gli strumenti rng:

sudo apt-get install rng-tools
sudo rngd -r /dev/urandom b

E voilà, improvvisamente tutto ha funzionato senza sforzo in un secondo. Ma come può essere? Mi ha solo ingannato e mi ha fornito numeri pseudo casuali?

    
posta Klimbim 01.07.2017 - 10:16
fonte

1 risposta

4

rngd

La pagina man di rngd descrive abbastanza bene ciò che sta facendo il demone:

This daemon feeds data from a random number generator to the kernel's random number entropy pool, after first checking the data to ensure that it is properly random.

[...]

The -r or --rng-device options can be used to select an alternate source of input, besides the default /dev/hwrandom.

Per essere precisi, il comando che hai eseguito ha estratto numeri casuali da /dev/urandom e lo ha passato di nuovo nel pool entropico del kernel Linux registrandolo come "entropia reale e fresca", rendendolo così disponibile in /dev/random (questo la spiegazione è leggermente semplificata e tecnicamente il processo è un po 'più complicato, ma questa è l'idea alla base della chiamata di rngd che hai postato).

Tali strumenti sono comunemente usati in macchine virtuali o dispositivi embedded che non ricevono abbastanza entropia per riempire il pool di entropia, in quanto non ha accesso a tutte le fonti di entropia che un computer "reale hardware" avrebbe (tempismo del disco rigido, ... ).

Numeri casuali in Linux

And voila, suddenly everything worked without any effort within a second. But how can that be? Did it just trick me and provided me pseudo random numbers?

Sì, ha fatto esattamente questo. Linux conosce due dispositivi casuali: blocco /dev/random quando un contatore di entropia piuttosto arbitrario decide che non è disponibile abbastanza entropia e /dev/urandom restituisce sempre nuovi numeri pseudo-casuali. Ora il "generatore di numeri pseudo casuali" suona peggio di quello che è, in effetti numeri casuali da un generatore di numeri casuali (crittograficamente robusti, senza errori o backdoor) non è distinguibile da numeri casuali "reali". "La semplice semplice realtà dell'entropia - O come ho imparato a smettere di preoccuparmi e ad amare l'urandom" presentato a 32C3 offre una grande introduzione nei generatori di numeri casuali e perché sono totalmente soddisfacenti.

Dopo tutto, anche /dev/random è un generatore di numeri casuali con alcune decisioni piuttosto arbitrarie sul fatto che il pool abbia ricevuto abbastanza bit casuali, e la decisione ancora più arbitraria di decidere di non ricevere abbastanza pezzi casuali di recente.

Il mescolare la nuova entropia non è comunque una cattiva idea, nel caso in cui le basi matematiche o l'implementazione del software abbiano qualche problema - i nuovi bit casuali (non provenienti dal pool di entropia) renderanno molto più difficile rompere il pool di numeri casuali.

Riepilogo: le chiavi generate sono protette?

Come sempre, la risposta è: dipende. Dato che hai già stabilito uno stato casuale corretto del pool di entropia facendo in modo che la macchina funzioni per un po 'di tempo (ad es., Non ha recentemente installato il sistema, ma lo ha già usato per un tempo più lungo, con poche ore o giorni più che sicuri per configurazioni tipiche), il pool di entropia è stato inizializzato correttamente e da ora in poi hai numeri casuali appropriati, non importa se si restituiscono numeri casuali solo per aumentare il contatore di entropia del kernel.

Tutto sommato, i problemi di "non abbastanza entropia" di GnuPG in esecuzione su Linux si basano su due decisioni discutibili: il kernel Linux che fornisce /dev/random con la sua arbitraria "Non ho abbastanza semantica dei bit casuali" e GnuPG basandosi su questo invece di /dev/urandom . Purtroppo, non c'è modo di scegliere un'altra fonte di entropia in GnuPG.

    
risposta data 01.07.2017 - 10:52
fonte

Leggi altre domande sui tag