Lo Scambio di Chiavi Diffie-Hellman
Introduzione Storica
Prima del 1976 esisteva solo la crittografia simmetrica: mittente e destinatario usavano la stessa chiave per cifrare e decifrare. Il problema fondamentale era: come condividere la chiave segreta in modo sicuro, se il canale di comunicazione è pubblico?
Nel 1976 Whitfield Diffie e Martin Hellman pubblicarono il loro lavoro rivoluzionario “New Directions in Cryptography” (IEEE Transactions on Information Theory). L’idea di base: permettere a due persone di stabilire una chiave segreta condivisa su un canale insicuro, senza aver mai comunicato in precedenza. Nasce così la crittografia a chiave pubblica (asimmetrica).
Basi Matematiche
Aritmetica Modulare
L’aritmetica modulare è l’aritmetica del resto nella divisione. L’esempio più intuitivo è l’orologio: se sono le 10 e passano 5 ore, si arriva alle 3, non alle 15.
$$10 + 5 = 15 \equiv 3 \pmod{12}$$
In generale, $a \equiv b \pmod{n}$ significa che $a$ e $b$ hanno lo stesso resto quando divisi per $n$.
Le operazioni principali sono:
- Addizione: $(a + b) \pmod{n}$
- Moltiplicazione: $(a \cdot b) \pmod{n}$
- Elevamento a potenza: $a^b \pmod{n}$ — calcolabile in modo efficiente anche con numeri enormi grazie all’algoritmo di esponenziazione modulare
Esempio — calcolo di $3^5 \pmod{7}$ passo per passo:
$$3^2 = 9 \equiv 2 \pmod{7}$$ $$3^4 = (3^2)^2 \equiv 2^2 = 4 \pmod{7}$$ $$3^5 = 3^4 \cdot 3 \equiv 4 \cdot 3 = 12 \equiv 5 \pmod{7}$$
Il Problema del Logaritmo Discreto
Nel calcolo ordinario, se $b^x = y$ allora $x = \log_b y$. L’operazione inversa è semplice.
Nel mondo modulare, il logaritmo discreto pone la domanda: dati $g$, $y$ e un numero primo $p$, trovare $x$ tale che
$$g^x \equiv y \pmod{p}$$
Calcolare $g^x \pmod{p}$ dato $x$ è veloce (esponenziazione modulare).
Trovare $x$ dato il risultato è computazionalmente intrattabile per $p$ sufficientemente grande.
Questa asimmetria — facile in avanti, impossibile al contrario — è il fondamento matematico della sicurezza di Diffie-Hellman.
L’Algoritmo: Scambio di Chiavi
Schema di Comunicazione
Alice invia il proprio valore pubblico, Bob risponde con il suo. Ognuno poi eleva il valore ricevuto al proprio segreto, ottenendo la stessa chiave condivisa.
Esempio Numerico (p = 23, g = 5)
Parametri pubblici concordati: $p = 23$, $g = 5$
| Alice | Bob | |
|---|---|---|
| Segreto privato | $a = 6$ | $b = 15$ |
| Valore pubblico | $A = 5^6 \bmod 23 = 8$ | $B = 5^{15} \bmod 23 = 19$ |
| Invia | $A = 8$ → | ← $B = 19$ |
| Chiave condivisa | $K = 19^6 \bmod 23 = \mathbf{2}$ | $K = 8^{15} \bmod 23 = \mathbf{2}$ |
Entrambi arrivano a $K = 2$ senza che il valore sia mai transitato in chiaro sul canale.
Perché è sicuro? Un attaccante che intercetta $A = 8$, $B = 19$, $p = 23$, $g = 5$ dovrebbe risolvere il logaritmo discreto per trovare $a$ o $b$, e da lì ricavare $K$. Con numeri reali dell’ordine di migliaia di bit, questo è computazionalmente impossibile con le tecniche attuali.
Diffie-Hellman con Curve Ellittiche (ECDH)
Il Problema della Versione Classica
Per garantire sicurezza adeguata, la versione classica richiede chiavi molto lunghe (2048–4096 bit), con conseguente costo computazionale elevato.
Curve Ellittiche
Una curva ellittica è definita da un’equazione della forma:
$$y^2 = x^3 + ax + b$$
y
2 │ · ·
│ · ·
1 │ · ·
│· ·
0 ┼─────────────────── x
│· ·
-1 │ · ·
│ · ·
-2 │ · ·
y² = x³ − x + 1
In crittografia si usano curve definite su campi finiti $\mathbb{F}_p$ (non su $\mathbb{R}$). Si definisce un’operazione di “addizione” tra punti della curva con proprietà algebriche simili all’aritmetica modulare.
Perché le Curve Ellittiche Sono Migliori
Il “logaritmo discreto” su curve ellittiche (trovare $k$ dato $P$ e $kP$) è ancora più difficile da risolvere rispetto alla versione classica. Questo permette di usare chiavi molto più corte a parità di sicurezza:
| Sicurezza equivalente | DH classico | ECDH |
|---|---|---|
| 80 bit | 1024 bit | 160 bit |
| 128 bit | 3072 bit | 256 bit |
| 256 bit | 15360 bit | 521 bit |
Schema ECDH
Parametri pubblici: curva $E$ e punto base $G$ su di essa.
| Alice | Bob | |
|---|---|---|
| Segreto privato | scalare $a$ | scalare $b$ |
| Valore pubblico | $aG$ | $bG$ |
| Chiave condivisa | $a(bG)$ | $b(aG)$ |
Per le proprietà delle curve ellittiche, $a(bG) = b(aG)$: entrambi ottengono lo stesso punto, da cui derivano la chiave condivisa.
Conclusioni
Diffie-Hellman è uno degli algoritmi fondamentali della crittografia moderna. I punti chiave:
- Permette lo scambio sicuro di chiavi su un canale completamente pubblico.
- La sicurezza si fonda sulla difficoltà del logaritmo discreto.
- La variante ECDH offre sicurezza equivalente con chiavi molto più corte ed è la scelta predefinita nelle implementazioni moderne.
- Applicazioni reali: HTTPS (TLS 1.3 usa ECDH di default), SSH, VPN, protocolli di messaggistica cifrata (Signal), criptovalute.
Bibliografia
- Whitfield Diffie, Martin E. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, 1976.
- Neal Koblitz. Elliptic Curve Cryptosystems. Mathematics of Computation, 1987.
- Victor S. Miller. Use of Elliptic Curves in Cryptography. CRYPTO, 1985.
- William Stallings. Cryptography and Network Security: Principles and Practice. Pearson, 6th ed., 2013.
- A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996.
EC