crittografia sicurezza Diffie-Hellman ECDH matematica

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
─── $g^a \bmod p$ ──▶
◀── $g^b \bmod p$ ───
Bob

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$

AliceBob
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 equivalenteDH classicoECDH
80 bit1024 bit160 bit
128 bit3072 bit256 bit
256 bit15360 bit521 bit

Schema ECDH

Parametri pubblici: curva $E$ e punto base $G$ su di essa.

AliceBob
Segreto privatoscalare $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.