La crittografia su curve ellittiche (Elliptic Curve Cryptography, ECC) è un approccio alla crittografia a chiave pubblica che sfrutta la struttura algebrica delle curve ellittiche definite su campi finiti. Il suo vantaggio principale rispetto a RSA è l’efficienza: offre sicurezza equivalente con chiavi significativamente più corte, riducendo il costo computazionale di generazione delle chiavi, firma e verifica. ECC è oggi lo standard de facto per la firma digitale (ECDSA) e lo scambio di chiavi (ECDH) in TLS 1.3, nelle criptovalute e nei dispositivi con risorse limitate.
Curve ellittiche: base matematica
Una curva ellittica su un campo \mathbb{F}_p (interi modulo un primo p) è definita dall’equazione di Weierstrass:
y^2 \equiv x^3 + ax + b \pmod{p}
con la condizione 4a^3 + 27b^2 \neq 0 (nessuna singolarità). L’insieme dei punti (x, y) che soddisfano l’equazione, insieme a un punto speciale \mathcal{O} (punto all’infinito), forma un gruppo abeliano sotto un’operazione di addizione geometricamente definita.
La moltiplicazione scalare è l’operazione chiave: dato un punto G (generatore) e uno scalare k, calcolare Q = kG (sommare G a se stesso k volte) è efficiente. Il problema del logaritmo discreto su curve ellittiche (ECDLP) — dato Q e G, trovare k — è computazionalmente intrattabile per curve ben scelte.
Confronto con RSA
| ECC-256 | RSA equivalente | |
|---|---|---|
| Sicurezza stimata | ~128 bit | ~3072 bit RSA |
| Dimensione chiave pubblica | 32 byte | 384 byte |
| Dimensione firma (ECDSA) | 64 byte | 384 byte |
| Velocità di firma | ~10× più veloce | — |
La riduzione dimensionale è particolarmente rilevante su dispositivi IoT, smart card e contesti in cui la larghezza di banda o la potenza di calcolo sono limitate.
Curve standardizzate
Le curve usate in pratica sono definite da standard internazionali:
- P-256 (secp256r1, NIST): la più usata in TLS e PKI. Coefficienti scelti dal NIST con processo non completamente trasparente — fonte di preoccupazione (mai dimostrata) su possibili backdoor.
- Curve25519: progettata da Daniel J. Bernstein con criteri di sicurezza espliciti e completamente trasparenti. Base di X25519 (ECDH) e Ed25519 (EdDSA). Preferita nei nuovi protocolli (TLS 1.3, SSH, Signal Protocol).
- secp256k1: usata in Bitcoin e Ethereum per la firma delle transazioni.
ECDH: scambio di chiavi
ECDH (Elliptic Curve Diffie-Hellman) è il protocollo di scambio di chiavi basato su ECC. Alice e Bob concordano una curva e un punto generatore G. Alice genera la chiave privata a e invia A = aG; Bob genera b e invia B = bG. Il segreto condiviso è K = aB = bA = abG, calcolabile da entrambi ma non da un osservatore che conosce solo A, B e G.
In TLS 1.3, viene usato ECDHE (la variante ephemeral): le chiavi vengono generate per ogni sessione e scartate dopo, garantendo la forward secrecy.
ECC e crittografia post-quantistica
Come RSA, ECC è vulnerabile all’algoritmo di Shor quantistico: un computer quantistico abbastanza potente risolverebbe l’ECDLP in tempo polinomiale. La transizione verso algoritmi post-quantistici (CRYSTALS-Kyber, CRYSTALS-Dilithium) è in corso, con standard NIST finalizzati nel 2024.