Qual è la differenza tra Diffie Hellman generator 2 e 5?

23

La generazione dei parametri di Diffie Hellman in OpenSSL può essere eseguita come segue:

$ openssl dhparam -out dh2048.pem 2048
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time 
[...]

Il "generatore 2" ha attirato la mia attenzione lì. Sembra che io possa scegliere tra il generatore 2 e 5 come indicato dalla manpage ( man dhparam ):

-2, -5
   The generator to use, either 2 or 5. 2 is the default. If present then the input file
   is ignored and parameters are generated instead.
  • Che cos'è il generatore 2 e 5?
  • In che modo la scelta di 5 anziché 2 influisce sulla sicurezza?
  • È specifico per OpenSSL?
posta gertvdijk 28.03.2014 - 14:17
fonte

2 risposte

18

Diffie-Hellman funziona in un sottogruppo di interi modulo a prime p . Vale a dire, si ha un generatore g , che è un modulo intero convenzionale p . Quel generatore ha un ordine r che è il più piccolo intero positivo tale che g r = 1 mod p . I due sistemi che si occupano di DH scelgono le chiavi private a e b rispettivamente come numeri interi in un dato intervallo, e le corrispondenti chiavi pubbliche DH (che scambiano sul filo) sono g a mod p e g b mod p .

DH è sicuro finchè:

  • p è "corretto": abbastanza grande (almeno 1024 bit) e non prodotto con una "struttura speciale" che rende logaritmo discreto facile. Un primo generato in modo casuale della giusta dimensione andrà bene.
  • Il massimo principale divisore di r ha dimensione almeno 2k bit, quando si mira a un livello di sicurezza di " k bit". Fondamentalmente, il primo principale divisore di r dovrebbe essere un numero primo intero di dimensioni di almeno 160 bit (200 bit o più sarebbe preferito dagli standard odierni).
  • Le chiavi private DH sono generate in un intervallo di dimensioni almeno 2 2k o giù di lì. Fondamentalmente, a e b dovrebbero anche essere 2k -bit interi.

Il valore esatto del generatore g non ha importanza, purché entrambe le parti utilizzino lo stesso valore. Si può dimostrare che se qualcuno può calcolare logaritmo discreto relativamente a un generatore g , può calcolarlo come relativamente relativamente a qualsiasi generatore g ' dello stesso sottogruppo. Quindi, ciò che conta è l'ordine di sottogruppo , non il generatore. Puoi usare 2 o 5 , non cambierà la sicurezza.

L'uso di un generatore breve ha alcuni (lievi) benefici per le prestazioni, motivo per cui sono preferiti. La differenza di prestazioni tra 2 e 5 sarà tuttavia trascurabile. In alcuni protocolli, il generatore è concordato a livello di protocollo, cioè non trasmesso sul filo; è hardcoded in entrambi i sistemi. Alcuni protocolli impongono l'uso di 2 , altri vogliono usare 5 , per ragioni storiche e tradizionali. OpenSSL, come libreria generica, può generare parametri per entrambi i casi.

Ci sono dettagli , però. Fare in modo che il generatore scelto abbia effettivamente un ordine con un primo divisore abbastanza grande può essere difficile. Per impostazione predefinita, openssl dhparam genererà un cosiddetto "primo sicuro", ovvero genera numeri primi casuali q finché non ne trova uno tale che p = 2q + 1 è anch'esso un numero intero. L'ordine di qualsiasi g modulo q è sempre un divisore di p-1 . Quindi, usando un primo sicuro, OpenSSL è garantito che l'ordine r di qualsiasi generatore g nell'intervallo 2..p-2 ( in particolare 2 e 5 ) sarà uguale a q o 2q , quindi sempre un multiplo di q , che è un numero abbastanza grande.

Se OpenSSL genera un p casuale senza assicurarsi che sia un "sicuro primo", quindi l'ordine effettivo di g = 2 o 5 sarebbe difficile da calcolare esattamente (implicherebbe il factoring p-1 , che è costoso).

In alcuni contesti non-DH, vale a dire nell'algoritmo di firma DSA, si deve avere un sottogruppo DH-like tale che l'ordine del generatore sia esattamente uguale a un dato primo non troppo grande q , invece di essere semplicemente un multiplo di q . In tal caso, OpenSSL (con l'interruttore della riga di comando -dsaparam ) genererà prima q , quindi p = qt + 1 per i valori casuali di t fino a quando non viene trovato un primo; e il generatore sarà ottenuto prendendo un s modulo p casuale e calcolando g = s t modulo p (questo produce necessariamente 1 o un intero di ordine esattamente q ). Quando si producono i parametri DSA, il generatore non può essere forzato (o del tutto) ad essere un numero intero piccolo specifico come 2 o 5 . Per DSA, il generatore è "grande".

    
risposta data 28.03.2014 - 14:56
fonte
12

What is generator 2 and 5?

Comprendere ciò richiede una certa quantità di background matematico. Diffie-Hellmann opera su gruppi ciclici . Questi gruppi hanno in comune la presenza di almeno un generatore , ovvero un elemento che può essere utilizzato per generare tutti gli altri elementi del gruppo.

Diamo un'occhiata a un esempio:

Z_11 *: insieme di interi i = 0,1, ..., 10 per i quali gcd (i, 11) = 1. Questo è un gruppo abeliano sotto la moltiplicazione modulo 11.

Generatore: a = 2

a^1  =           2 mod 11,
a^2  =           4 mod 11,
a^3  =           8 mod 11,
a^4  = (  16 =)  5 mod 11, 
a^5  = (  32 =) 10 mod 11,
a^6  = (  64 =)  9 mod 11,
a^7  = ( 128 =)  7 mod 11,
a^8  = ( 256 =)  3 mod 11,
a^9  = ( 512 =)  6 mod 11,
a^10 = (1024 =)  1 mod 11

Come puoi vedere, abbiamo generato l'intero gruppo, ovvero ogni elemento come risultato. Nota comunque che questo funzionerà su tutti i tipi di gruppi e non è limitato al gruppo moltiplicativo di interi modulo p.

How does choosing 5 instead of 2 affect the security?

No, il problema Diffie-Hellman è tutto della dimensione del gruppo ciclico, non sugli elementi che generano il gruppo . Quindi, quando entrambi gli elementi sono generatori per un gruppo, non fa differenza. Scegliere 2 come generatore ha un paio di vantaggi, però, perché è possibile implementare gli algoritmi sottostanti in modo più efficiente.

Personalmente non cambierei il default qui, a meno che non ci sia una buona ragione per farlo. Questo ovviamente non è il caso, altrimenti non dovresti chiedere;).

Is this specific to OpenSSL?

No, questo deriva dalla matematica dei gruppi ciclici stessi.

    
risposta data 28.03.2014 - 14:47
fonte

Leggi altre domande sui tag