In Diffie-Hellman c'è un intero grande che è primo, ma l'altro non ha bisogno di essere grande, e non ha bisogno di essere primo neanche.
Con DH, i calcoli sono fatti modulo un grande primo p . Viene utilizzato anche un generatore chiamato g : g "genera" i valori g i mod p . Se calcoli (virtualmente) il g i modulo p , tornerai a 1 ad un certo punto; il più piccolo valore non zero i tale che g i = 1 mod p è chiamato l'ordine di g (scriviamolo r ). Necessariamente, r divide p-1 .
Ciò di cui DH ha bisogno è:
-
p è abbastanza grande da rendere difficile discreto logaritmo ; diciamo, almeno 1024 bit (la moda attuale è 2048 bit, perché 1024 bit sono ora considerati "un po 'troppo deboli" come in "unbreakable per ora, ma forse tra 20 anni ...").
-
r deve avere almeno un fattore primo q che sia abbastanza grande da scoraggiare il logaritmo discreto; in questo contesto, questo significa almeno 170 bit (ancora una volta, le mode dettano 256 bit - i crittografi amano semplicemente i poteri di due).
q e r non devono essere conosciuti dalle persone che fanno il DH. Se selezioni un p casuale di dimensioni appropriate, e un g casuale (come valore tra 2 e p-2 , incluso), quindi g andrà bene con una probabilità schiacciante (non si conoscerà r , figuriamoci q , ma sarebbe estremamente improbabile che tutti i fattori primi di r siano brevi).
Tuttavia, potresti provare un po 'più difficile nella scelta di p ; per esempio, puoi selezionare p tale che p = 2t + 1 dove t è anche primo. A questo punto, qualsiasi g (tra 2 e p-2 ) è garantito per avere un ordine uguale a t o 2t , quindi puoi scegliere g come meglio credi. In particolare, puoi scegliere g = 2 , il che rende i calcoli un po 'più veloci.
Nessuno dei valori sopra indicati deve essere segreto. In effetti, si presume che entrambe le parti DH le conoscano in anticipo, quindi non possono essere segrete (se fossero segrete, sarebbe un segreto condiviso e non avresti assolutamente bisogno di fare Diffie-Hellman, potresti semplicemente usare quel segreto condiviso come è). Per risparmiare, puoi riutilizzare i valori esistenti e pubblicati per p e g , ad esempio questi valori .