ECC (Elliptic Curve Cryptography)

Indice dei contenuti

    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 Fp\mathbb{F}_p (interi modulo un primo pp) è definita dall’equazione di Weierstrass:

    y2x3+ax+b(modp)y^2 \equiv x^3 + ax + b \pmod{p}

    con la condizione 4a3+27b204a^3 + 27b^2 \neq 0 (nessuna singolarità). L’insieme dei punti (x,y)(x, y) che soddisfano l’equazione, insieme a un punto speciale O\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 GG (generatore) e uno scalare kk, calcolare Q=kGQ = kG (sommare GG a se stesso kk volte) è efficiente. Il problema del logaritmo discreto su curve ellittiche (ECDLP) — dato QQ e GG, trovare kk — è computazionalmente intrattabile per curve ben scelte.

    Confronto con RSA

    ECC-256RSA equivalente
    Sicurezza stimata~128 bit~3072 bit RSA
    Dimensione chiave pubblica32 byte384 byte
    Dimensione firma (ECDSA)64 byte384 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 GG. Alice genera la chiave privata aa e invia A=aGA = aG; Bob genera bb e invia B=bGB = bG. Il segreto condiviso è K=aB=bA=abGK = aB = bA = abG, calcolabile da entrambi ma non da un osservatore che conosce solo AA, BB e GG.

    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.

    Ultimo aggiornamento: