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 (interi modulo un primo ) è definita dall’equazione di Weierstrass:
con la condizione (nessuna singolarità). L’insieme dei punti che soddisfano l’equazione, insieme a un punto speciale (punto all’infinito), forma un gruppo abeliano sotto un’operazione di addizione geometricamente definita.
La moltiplicazione scalare è l’operazione chiave: dato un punto (generatore) e uno scalare , calcolare (sommare a se stesso volte) è efficiente. Il problema del logaritmo discreto su curve ellittiche (ECDLP) — dato e , trovare — è 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 . Alice genera la chiave privata e invia ; Bob genera e invia . Il segreto condiviso è , calcolabile da entrambi ma non da un osservatore che conosce solo , e .
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.