Il protocollo di scambio di chiavi Diffie-Hellman (DH), pubblicato da Whitfield Diffie e Martin Hellman nel 1976, è stato il primo sistema crittografico pratico a risolvere il problema della distribuzione delle chiavi: come concordare un segreto condiviso attraverso un canale completamente pubblico e non sicuro, senza essersi incontrati in precedenza. Fu una rivoluzione concettuale che ha posto le basi dell’intera crittografia a chiave pubblica moderna.
Principio matematico
La sicurezza di DH si fonda sul problema del logaritmo discreto: dato un gruppo ciclico di ordine , un generatore e il valore , trovare è computazionalmente difficile per valori sufficientemente grandi di .
Il protocollo in forma classica (DH su ):
- Alice e Bob concordano pubblicamente un primo e un generatore (parametri pubblici).
- Alice sceglie un segreto , calcola e lo invia a Bob.
- Bob sceglie un segreto , calcola e lo invia ad Alice.
- Alice calcola .
- Bob calcola .
Entrambi ottengono lo stesso segreto . Un osservatore che conosce e non riesce a calcolare senza risolvere il logaritmo discreto.
Vulnerabilità al man-in-the-middle
DH nella sua forma base non autentica i partecipanti: un attaccante MitM può intercettare lo scambio, stabilire due sessioni DH separate (una con Alice, una con Bob), e decifrare tutto il traffico di entrambi. Per questo DH viene sempre abbinato a un meccanismo di autenticazione — tipicamente certificati X.509 in TLS.
DHE e ECDHE: forward secrecy
La variante DHE (Diffie-Hellman Ephemeral) genera nuove chiavi DH per ogni sessione. Questo garantisce la forward secrecy (perfect forward secrecy, PFS): anche se la chiave privata a lungo termine del server viene compromessa in futuro, le sessioni passate non sono decifrabili perché le chiavi effimere usate per quelle sessioni non esistono più.
ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) sostituisce il gruppo moltiplicativo con un gruppo di punti su una curva ellittica, ottenendo la stessa forward secrecy con chiavi molto più corte. TLS 1.3 richiede obbligatoriamente ECDHE (o DHE) — le suite senza forward secrecy sono state eliminate dallo standard.
Parametri e sicurezza
Per DH classico su , i parametri devono essere scelti con cura:
- Il primo deve essere sufficientemente grande: 2048 bit è il minimo attuale (NIST), 3072 bit per sicurezza a lungo termine.
- Usare safe primes ( con primo) e lavorare nel sottogruppo di ordine per evitare attacchi su piccoli sottogruppi.
- Logjam attack (2015): ha dimostrato che molti server usavano gli stessi parametri DH a 512 bit o 1024 bit, vulnerabili a precomputazione. ECDHE su curve standardizzate (P-256, X25519) è immune a questa classe di attacchi.
Diffie-Hellman e crittografia post-quantistica
L’algoritmo di Shor risolverebbe il problema del logaritmo discreto (su cui si basa DH classico) così come il problema della fattorizzazione (su cui si basa RSA). La crittografia post-quantistica sviluppa protocolli di scambio di chiavi su problemi matematici diversi, resistenti anche agli algoritmi quantistici.