
Lo scambio di chiavi Diffie-Hellman è un protocollo crittografico che consente a due entità di stabilire una chiave condivisa e segreta utilizzando un canale di comunicazione insicuro (pubblico) senza la necessità che le due parti si siano scambiate informazioni o si siano incontrate in precedenza.
La chiave ottenuta mediante questo protocollo può essere successivamente impiegata per cifrare le comunicazioni successive tramite uno schema di crittografia simmetrica.
Supponiamo che Alice e Bob conoscano entrambi due numeri, g e p, pubblici (p numero primo). Inoltre Alice conosce un numero segreto ‘a’ e Bob conosce un numero segreto ‘b’
Alice calcola:  e lo dà a Bob
 e lo dà a Bob
Bob calcola:  e lo dà ad Alice
 e lo dà ad Alice
Alice calcola: ![Rendered by QuickLaTeX.com K = B^{a}\; mod \;p=\left [ g^{b}\;mod\:p \right ]^{a}=g^{ab}\;mod\;p](https://www.whymatematica.com/wp-content/ql-cache/quicklatex.com-b9b004847fb2c2b0308220ee1759f363_l3.png)
Bob calcola: ![Rendered by QuickLaTeX.com K = A^{b}\; mod \;p=\left [ g^{a}\;mod\:p \right ]^{b}=g^{ab}\;mod\;p](https://www.whymatematica.com/wp-content/ql-cache/quicklatex.com-6cf70f28656d8a2ab2d269951f219c68_l3.png)
CONCLUSIONE
Alice e Bob hanno condiviso un segreto (il numero K) senza comunicarlo esplicitamente!
L’attaccante Eva può osservare A, B, g, p ma questa informazione non è sufficiente per ricavare K
K è calcolabile solo conoscendo a o b, che tuttavia sono segreti e non vengono mai trasmessi. Ricavare a da A (o analogamente b da B) significa risolvere un logaritmo discreto computazionalmente difficile!
