Genera entropia per chiave PGP


12

Sono connesso a una VM da remoto e sto provando a generare una chiave PGP a 4096 bit, si blocca per sempre perché non c'è entropia e poiché sto lavorando attraverso il desktop remoto probabilmente non rileva il movimento del mouse come entropia.

Come posso generarne?

Ci ho provato cat /dev/urandom > /dev/nullma non aiuta.

Risposte:


13

Ottenere i dati fuori di /dev/randomo /dev/urandomè sicuramente non andando ad aiutare, tutto quello che farà è scaricare completamente la vostra piscina entropia, rendendo il problema ancora peggiore. La differenza principale tra questi due file è che anche quando il kernel esaurisce l'entropia urandomcontinuerà a generare dati casuali di qualità inferiore, mentre randomsi bloccherà fino a quando non potrà raccogliere nuovi dati casuali di alta qualità. PGP richiede i dati casuali più elevati possibili per generare chiavi sicure, quindi verrà sempre utilizzato /dev/random.

Se disponi di buoni dati casuali in giro o ne esporti da un altro server /dev/random, puoi catfarlo su quello del tuo server /dev/randomper ottenere più entropia. Tuttavia, non dovresti mai avere catlo stesso file due volte /dev/random.

Se ti ritrovi spesso a corto di entropia, puoi anche considerare di installare qualcosa come hasged , un demone che genera nuovamente entropia in background e riempie nuovamente /dev/randomse necessario.

Inoltre può essere tentati di link simbolico /dev/randoma /dev/urandom, ma questo deve essere considerato un rischio per la sicurezza, come un qualsiasi tasto generato utilizzando può essere meno sicuro di quanto dovrebbero. Sebbene possa essere d'aiuto per applicazioni meno critiche, devi considerare ogni altro possibile utilizzo /dev/random, inclusi altri utenti che generano le proprie chiavi, CSR, ecc.


Nota che su FreeBSD /dev/randomè un PRNG di alta qualità e normalmente non dovrebbe bloccarsi.
Kevin,

@Kevin /dev/randomsono PRNG di alta qualità sui moderni BSD e Linux, certo. Ma si bloccherà se non c'è abbastanza entropia disponibile. D'altra parte, /dev/urandomnon si bloccherà se non c'è abbastanza disponibile, ma in questo caso la sua qualità di casualità potrebbe risentirne. Nei dettagli ci sono molte sottigliezze tra implementazioni casuali e casuali tra Linux e i vari BSD, ma quanto sopra dovrebbe essere vero su tutti gli AFAIK.
Huygens,

Su Linux puoi generare più entropia semplicemente eseguendo il ping di un host (ad esempio ping 8.8.8.8) se possiedi un altro host di rete prova ad avere ping ogni 100 ms (se il tuo RTT è <100 ms ovviamente). E / o utilizzare findper cercare file sul disco rigido e svuotare la cache RAM tra ogni ricerca di file.
Huygens,

@Huygens: apri la pagina man che ho collegato e Ctrl + F "kern.random.sys.seeded"; per impostazione predefinita, /dev/randomnon si blocca su FreeBSD.
Kevin,

1
@Kevin sì hai ragione, la raccolta o la raccolta di entropia sono forse due modi distinti di "seminare" il PRNG. E dopo alcuni test sulla mia scatola BSD, ho scoperto che random e urandom si comportano allo stesso modo, si bloccano quando non riescono a generare un PRNG abbastanza buono. Prova a eseguire dd if=/dev/random of=/tmp/rndtest bs=64M count=1dopo un nuovo avvio, ci sono voluti 2 cicli consecutivi per vedere il tempo per generare l'aumento del file da 64 MB. Pensavo che non avrei visto questo effetto con urandom come input, ma FreeBSD sembra bloccare anche con esso, a differenza di Linux.
Huygens,


4

Consiglierei di generare le tue chiavi gpg sul tuo computer locale che avrà una casualità molto migliore di quella remota. E quindi migrare le chiavi usando SSH sul tuo computer remoto.

Generare localmente sarà più veloce (più fonte di entropia), più sicuro (nessuno può spiare il processo se la tua macchina non è infetta, migliore casualità).

Se vuoi ancora generarli in remoto: su Linux puoi generare più entropia semplicemente eseguendo il ping di un host (ad esempio ping 8.8.8.8) se possiedi un altro host di rete prova ad avere ping ogni 100ms (se il tuo RTT è <100ms ovviamente). E / o utilizzare findper cercare file sul disco rigido e svuotare la cache RAM tra ogni ricerca di file.

Potresti anche installare havegedma leggere le limitazioni se lo stai eseguendo in un ambiente virtuale: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines


Secondo me, questa è la soluzione giusta - +1 da parte mia.
MadHatter,

3

Sui sistemi basati su Debian, è possibile installare il rng-toolspacchetto usando atp-get, e quindi avviare il demone per generare entropia:

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

Sui server CentOS-6, il rngdemone è installato come uno degli strumenti di base (almeno sulla maggior parte dei sistemi su cui ho lavorato lo è), ed è possibile eseguire il comando seguente per avviarlo, al fine di generare entropia:

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

Non penso che usare urandom come fonte di rngd sia intelligente. Aiuterà a esaurire l'entropia disponibile più velocemente e una volta esaurita sarà una fonte distorta per l'entropia. Quindi eviterei questa soluzione.
Huygens,

1
sudo yum install haveged && sudo systemctl start haveged

funziona sicuramente su una VM CentOS 7.2. A volte vuoi creare chiavi GPG su un VM se stai creando un mazzo e vuoi che il tuo portachiavi sia intatto.

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.