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
Bob calcola: e lo dà ad Alice
Alice calcola:
Bob calcola:
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!