Quale dimensione del gruppo DH utilizza i cifrari DHE effimeri TLS?

10

In SSL / TLS, il Cliente e il Server hanno la possibilità di utilizzare uno scambio Ephemeral Diffie-Hellman per stabilire un segreto condiviso per il quale seminare le seguenti chiavi Segreto Master e Sessione.

Nel caso in cui DHE venga selezionato come scambio di chiavi tra due parti, come determinano le dimensioni del gruppo ModP DH (in modo che possano quindi concordare un numero P e G)?

    
posta Eddie 03.11.2015 - 21:19
fonte

3 risposte

1

Quando configurazione di un server per DHE devi generare parametri Diffie Hellman. Quindi devi configurare OpenSSL / Apache / Nginx ecc. Per utilizzare i parametri DH che hai generato.

I parametri DH da utilizzare vengono inviati nel messaggio ServerKeyExchange . Dopo i messaggi ServerHello e certificato , ma prima di ServerHelloDone .

Il messaggio ServerKeyExchange contiene quanto segue:

   struct {
       select (KeyExchangeAlgorithm) {
           case diffie_hellman:
               ServerDHParams params;
               Signature signed_params;
           case rsa:
               ServerRSAParams params;
               Signature signed_params;
       };
   } ServerKeyExchange;

Fonte: RFC2246 Sezione 7.4.3

    
risposta data 03.11.2015 - 21:40
fonte
6

Con le suite di crittografia DHE, la dimensione del modulo per DH è interamente scelta dal server, senza alcun input da parte del cliente sulle dimensioni accettabili (questo è davvero un difetto nel protocollo TLS per quanto riguarda le suite di crittografia DHE).

Alcuni client storici (incluso quello fornito con Java fino a Java 7 incluso) non supportavano il modulo DH oltre 1024 bit. Così ha indotto alcune implementazioni del server ad aderire al modulo DH a 1024 bit. Tuttavia, alcuni altri hanno deciso a un certo punto che tali dimensioni sono troppo basse. Apache + OpenSSL ha fatto quel particolare salto qualche anno fa; vedi questo per i dettagli.

Con ECDHE (la versione della curva ellittica), la curva ellittica da utilizzare è ancora scelta dal server, ma c'è un ClientHello estensione che consente al client di specificare le curve che supporta, consentendo così al server di prendere una decisione veramente consapevole.

    
risposta data 03.11.2015 - 21:36
fonte
1

Il server sceglie il gruppo e dice al client. Il client non fornisce input per questo processo.

La maggior parte dei server verrà fornita con un set predefinito di parametri (primo e generatore) ma si consiglia di generare il proprio per due motivi.

  1. Alcuni server vengono forniti con un valore di base predefinito che è solo 1024 bit. Questo è ora considerato troppo piccolo.
  2. Gran parte del lavoro nel cracking dh è per-prime, non per sessione. Quindi è una buona pratica evitare di usare lo stesso primo livello che fanno tutti gli altri.

Sfortunatamente Java 7 e precedenti falliranno l'handshake se un server usa un primo più grande di 1024 bit.

Per Java 6 non c'è una buona soluizione a questo. Se hai bisogno di supportare i client Java 6 devi scegliere il tuo veleno tra nessuna segretezza in avanti per i client che non supportano l'ECDHE oi deboli parametri DSA a 1024 bit.

Per Java 7 è possibile evitare questo problema dando una priorità alle cifrarie digitali ECDHE rispetto alle cipherite digitali DHE.

    
risposta data 17.03.2017 - 15:43
fonte

Leggi altre domande sui tag