Se openssl
utilizza molta CPU quindi non è bloccato in attesa di "entropia". OpenSSL è in realtà sano sotto questo aspetto e utilizza un PRNG crittograficamente sicuro per estendere un seme iniziale in tutti i bit necessari.
Quando usi dhparam
, OpenSSL non solo genera parametri DH; vuole anche affermare il suo status sociale avendo cura di utilizzare per il modulo un cosiddetto "primo forte", che è inutile per la sicurezza ma richiede uno sforzo computazionale enormemente maggiore. Un "primo forte" è un primo p tale che (p Anche -1)/2 è primo. L'algoritmo di prima generazione ha questo aspetto:
- Genera un intero dispari casuale p .
- Verifica se p è primo. In caso contrario, esegui il ciclo.
- Verifica se (p -1)/2 è primo. In caso contrario, esegui il ciclo.
Gli interi dispari casuali a 4096 bit hanno probabilità circa 1/2000 di essere primi, e poiché entrambi p e (p -1)/2 deve essere primo, questo richiederà in media la generazione e il test per la primalità di circa 4 milioni di numeri primi dispari. Ci vorrà del tempo.
Quando si passa da 2048 bit a 4096 bit, la densità di numeri primi forti viene divisa per 4 e anche i test di primalità saranno circa 4 volte più lenti, quindi se la generazione di un modulo DH a 2048 bit richiede in media 1 ora, lo stesso macchina con lo stesso software utilizzerà una media di 16 ore per un modulo DH a 4096 bit. Queste sono solo medie; ogni singola generazione può essere più veloce o più lenta, a seconda della tua fortuna.
La soluzione ragionevole sarebbe aggiungere il -dsaparam
opzione.
openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
Questa opzione indica a OpenSSL di produrre parametri DH "simili a DSA" (p è tale che p -1 è un multiplo di un numero primo q più piccolo , e il generatore ha un ordine moltiplicativo q ). Questo è notevolmente più veloce perché non ha bisogno di nidificare i test di primalità, e quindi verranno generati e testati solo migliaia, non milioni, di candidati.
Per quanto ne sanno gli accademici, i parametri simili a DSA per DH sono ugualmente sicuri; non vi è alcun vantaggio effettivo nell'usare "numeri primi forti" (la terminologia è tradizionale e non implica in realtà una forza extra).
Allo stesso modo, puoi anche utilizzare un modulo a 2048 bit, che è già molto lontano nella "zona impossibile da violare". Il modulo a 4096 bit renderà i calcoli DH più lenti (il che non è un vero problema per una VPN; questi si verificano solo all'inizio della connessione), ma in realtà non migliorerà la sicurezza.
In una certa misura, un modulo a 4096 bit può convincere gli auditor, ma è improbabile che gli auditor siano molto impressionati da un Raspberry-Pi, che è comunque troppo economico.