🔑 Crittografia

Crittografia a curve ellittiche: perché bastano chiavi corte

Come funziona la crittografia a curve ellittiche, perché una chiave da 256 bit equivale a un RSA da 3072 e dove la incontri: HTTPS, chat cifrate, Bitcoin.

Se guardi i dettagli tecnici di una connessione HTTPS moderna, di un'app di messaggistica cifrata o di un portafoglio di criptovalute, troverai quasi sempre sigle come ECDHE, ECDSA, X25519 o Ed25519. Tutte indicano la crittografia a curve ellittiche (ECC), che negli ultimi anni ha in gran parte sostituito RSA in molti utilizzi. Il motivo principale è semplice: offre la stessa sicurezza con chiavi molto più piccole.

Che cos'è una curva ellittica

In crittografia una curva ellittica è l'insieme dei punti che soddisfano un'equazione del tipo y² = x³ + ax + b. Nonostante il nome, non ha nulla a che vedere con le ellissi: disegnata sul piano, ha una forma simile a una linea ondulata, simmetrica rispetto all'asse orizzontale.

L'aspetto interessante è che sui punti della curva si può definire un'operazione di "somma":

  1. prendi due punti P e Q sulla curva;
  2. traccia la retta che li unisce: incontrerà la curva in un terzo punto;
  3. rifletti quel punto rispetto all'asse orizzontale: il risultato è P + Q.

Sommando un punto con se stesso si ottiene 2P, poi 3P e così via. In crittografia non si lavora con i numeri reali ma con numeri interi modulo un grande primo: la curva diventa una nuvola di punti apparentemente disordinata, ma le regole della somma restano valide.

Il problema difficile

Fissato un punto di partenza pubblico G, detto generatore, si può calcolare rapidamente k × G anche per un numero k enorme, grazie a una tecnica di raddoppi successivi. Il contrario, cioè risalire a k conoscendo solo G e il risultato, è invece estremamente difficile. Si chiama problema del logaritmo discreto su curve ellittiche.

Su questo si basa tutto:

  • la chiave privata è il numero segreto k;
  • la chiave pubblica è il punto K = k × G.

Pubblicare K non rivela k, così come conoscere il prodotto di due primi non rivela facilmente i fattori in RSA.

Perché le chiavi sono così corte

Per il logaritmo discreto sulle curve ben scelte non si conoscono scorciatoie paragonabili a quelle che esistono per la fattorizzazione. Il risultato è una differenza enorme nelle dimensioni:

Livello di sicurezza RSA Curve ellittiche
128 bit 3072 bit 256 bit
192 bit 7680 bit 384 bit
256 bit 15360 bit 512 bit circa

Chiavi più corte significano firme più piccole, calcoli più rapidi, meno energia consumata e meno dati trasmessi. Per smartphone, dispositivi IoT e server che gestiscono milioni di connessioni la differenza è concreta.

Dove si usano le curve ellittiche

Le applicazioni principali sono due.

Scambio di chiavi (ECDH)

Due parti, ciascuna con la propria coppia di chiavi, combinano la propria chiave privata con la chiave pubblica dell'altra e ottengono lo stesso punto segreto, senza mai trasmetterlo. È la versione su curve ellittiche di Diffie-Hellman. Nella variante effimera (ECDHE), usata in TLS, le chiavi vengono generate da capo per ogni sessione.

Firme digitali (ECDSA ed EdDSA)

  • ECDSA è lo schema di firma più diffuso nei certificati web e in Bitcoin.
  • EdDSA, nella sua forma Ed25519, è più recente e progettato per essere più semplice da implementare correttamente e meno esposto agli errori.

Le curve più usate

  • P-256 (detta anche secp256r1): standardizzata dal NIST, molto diffusa in TLS e nelle smart card.
  • Curve25519: progettata da Daniel J. Bernstein, usata per lo scambio di chiavi (X25519) e, in forma equivalente, per le firme Ed25519. È presente in molti protocolli moderni e nelle principali app di messaggistica cifrata.
  • secp256k1: la curva scelta da Bitcoin e da altre criptovalute.

La scelta della curva conta. Una curva con parametri deboli, o un'implementazione che non verifica che i punti ricevuti appartengano davvero alla curva, può aprire la strada ad attacchi. Per questo è bene affidarsi a curve standard e a librerie mature.

L'errore più pericoloso: il valore casuale delle firme

Le firme ECDSA richiedono, per ogni firma, un numero casuale segreto detto nonce. Se lo stesso nonce viene usato due volte con la stessa chiave, oppure se è prevedibile, dalla coppia di firme si può ricavare la chiave privata con semplici calcoli.

Non è un rischio teorico: è successo in casi reali, tra cui quello delle chiavi di firma di una nota console per videogiochi, compromesse proprio perché il valore che doveva essere casuale era sempre lo stesso. Le soluzioni moderne generano il nonce in modo deterministico a partire dalla chiave e dal messaggio, oppure adottano Ed25519, che lo fa per progetto.

E i computer quantistici?

Come RSA, anche la crittografia a curve ellittiche sarebbe vulnerabile a un computer quantistico abbastanza potente grazie all'algoritmo di Shor. Le curve ellittiche restano oggi la scelta migliore tra gli schemi classici, ma la transizione verso la crittografia post-quantistica riguarderà anche loro, probabilmente con una fase intermedia di schemi ibridi.

In sintesi

  • La crittografia a curve ellittiche si basa sulla difficoltà di risalire a k conoscendo k × G.
  • Una chiave da 256 bit offre una sicurezza paragonabile a un RSA da 3072 bit.
  • Si usa per lo scambio di chiavi (ECDH, X25519) e per le firme (ECDSA, Ed25519).
  • Il riuso o la prevedibilità del nonce nelle firme ECDSA permette di ricavare la chiave privata.
  • È vulnerabile ai futuri computer quantistici, come RSA, e rientra nella transizione post-quantistica.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche