Non è un vero è proprio cifrario, ma può essere usato per implementare uno scambio di chiave simmetrica (da condividere).
Diciamo che
Ovvero
Per realizzare Diffie-Hellman, occorre:
Per la generazione di un numero primo (molto grande) viene utilizzato un algoritmo che sfrutta dei test probabilistici come quello di Miller-Rabin.
L'algoritmo utilizzato in versione iterativa ha complessità
L'algoritmo in versione ricorsiva
Non incluso nel programma del corso.
La chiave pubblica di Alice è la radice
Alice ha sia la chiave pubblica di Bob, che la sua chiave privata.
Chiave di Alice:
Bob sarà in grado di fare lo stesso calcolo, giungendo al medesimo risultato.
Alice e Bob adesso condividono la stessa chiave.
la chiave privata di Alice è un intero
Gli algoritmi per cifrare e decifrare con RSA, hanno complessità
Anche gli algoritmi per la generazione delle chiavi sono considerati inefficienti.
Per realizzare RSA occorrono
Si sfrutta l'algoritmo di Euclide generalizzato con lo scopo di trovare
In generale: questo cifrario è basato sulla difficoltà di calcolare la fattorizzazione di numeri ottenuti moltiplicando numeri primi molto grandi. Il problema per un attaccante, è che noto
DH soffre di un attacco di tipo Man-In-The-Middle. Supponendo che un terzo elemento, diciamo Darth, intercetti la comunicazione tra Alice e Bob e che questo conosca