Perché gpg usa / dev / urandom [duplicate]

3

Guardando l'output strace di GPG sulla mia casella sembra mostrare che usa /dev/urandom quando si crittografa un messaggio senza alcun accesso a /dev/random anche quando viene specificato --no-random-seed-file.

I messaggi sono a rischio di crittografia con una chiave di sessione bassa entropia? Se è così allora come si fa a insegnare a GPG di non comportarsi in questo modo?

EDIT: Credo che questa sia una domanda diversa dal possibile duplicato che tratta di dati più effimeri. I miei messaggi crittografati con gpg avranno una lunga durata e sono facilmente soggetti all'ispezione da parte di un avversario.

    
posta CoderBrien 04.08.2015 - 18:38
fonte

2 risposte

13

In generale:

  • /dev/urandom non è meno sicuro di /dev/random . Infatti usano entrambi gli stessi algoritmi e gli stessi semi. Occasionalmente, /dev/random si interrompe solo perché qualcuno, un giorno, legge qualcosa sull'entropia, non lo capisce, e ora pensa che la casualità sia qualcosa che viene bruciata dopo l'uso e deve essere ricaricata regolarmente.

    ( Questa pagina fa un buon lavoro spiegando le cose a riguardo.)

  • Ci possono essere situazioni in cui non c'è abbastanza entropia disponibile nell'intero sistema. Queste situazioni non si verificano con le normali distribuzioni Linux perché generano e salvano un seed casuale all'avvio, da utilizzare per il successivo avvio, garantendo in modo efficace che /dev/urandom sia crittograficamente sicuro per tutto il tempo. Per entrare in una di queste situazioni, devi giocare qualche gioco strano con le istantanee VM, o usare non un PC ma un sistema embedded molto limitato; questo è abbastanza lontano dai contesti in cui useresti GnuPG.

  • È molto degno di nota il fatto che nel caso delle istantanee VM, la "stima dell'entropia" di /dev/random riporti allegramente che è piena di cose, che in questo caso è molto sbagliato. Cioè, non solo il comportamento di blocco di /dev/random è scientificamente infondato, ma anche non riesce a essere innescato in un caso pratico (snapshot della VM) dove si poteva temere la perdita di entropia.

  • Ricorda inoltre che i contesti in cui /dev/urandom è inappropriato sono contesti anche in cui /dev/random è inappropriato. Usare /dev/random non renderà le cose "più casuali"; nella migliore delle ipotesi , si rifiuterà di lavorare invece di generare una chiave di sicurezza teoricamente inferiore ("teoricamente" perché nessuno di questi ha mai portato a una rottura pratica, nemmeno come dimostrazione in condizioni controllate dal laboratorio) . Come spiegato sopra, questo è davvero un "al massimo" e in realtà non funzionerà in questo modo con le istantanee VM e resettato.

    Fortunatamente, tutte le attività coinvolte da un avvio implicano la raccolta di sufficiente entropia per raggiungere la sicurezza crittografica (anche per uscite arbitrariamente lunghe di /dev/urandom , pari). Vedi questo articolo per ulteriori analisi. La generazione della chiave GnuPG non viene eseguita dal kernel nelle prime fasi di avvio; si verifica molto più tardi, durante il normale funzionamento, quando il PRNG è stato seminato correttamente.

Niente di tutto ciò impedisce ad alcune persone di insistere su danze rituali con entropia. Apparentemente, gli autori di GnuPG fanno parte di quella specifica interpretazione teologica - o perché ci credono o perché cedono sotto la pressione del mercato.

Riepilogo: utilizzando /dev/urandom anziché /dev/random è non debole per GnuPG. GnuPG è usato in un contesto in cui /dev/urandom è correttamente seminato e raggiungerà tutta l'imprevedibilità richiesta, e /dev/random non farà di meglio (non nella pratica, nemmeno in teoria). Nell'unica situazione (istantanee VM) in cui l'output di /dev/urandom potrebbe essere inadeguato per GnuPG, l'output di /dev/random sarà ugualmente inadeguato per gli stessi motivi e il meccanismo di blocco di /dev/random non verrà attivato. La conclusione è che passare da /dev/urandom a /dev/random per GnuPG è completamente inutile .

... cioè, da un punto di vista tecnico. L'utilizzo di /dev/random anziché /dev/urandom potrebbe indurre qualche blocco che può aiutare a persuadere gli utenti con una mente debole che "sta accadendo una seria crittografia". Non renderà le cose più sicure, ma potrebbe rendere l'utente sentirsi più sicuro.

    
risposta data 04.08.2015 - 19:48
fonte
-5

Rispondere alla mia domanda:

Eureka: Modalità FIPS fa sì che / dev / random venga usato per la chiave di sessione e consente di prendere molte altre decisioni sensate. Sebbene sembri Fedora potrebbe aver deciso di farla finita . Quindi, nonostante il mio stack sia stato quasi traboccato da quelli che dicono di accontentarsi di "abbastanza buono", in realtà esiste un'alternativa valida.

    
risposta data 04.08.2015 - 19:13
fonte

Leggi altre domande sui tag