Dopo aver affrontato il quadro giuridico e matematico delle identità digitali, approfondiamo i due principali algoritmi crittografici che ne stanno alla base: RSA ed ECDSA.
RSA: il più utilizzato algoritmo crittografico a chiave asimmetrica
RSA, acronimo del cognome dei tre inventori, è nato negli anni ‘70 e da molti anni è il più utilizzato algoritmo crittografico a chiave asimmetrica. La sua solidità si basa sulla differenza tra due operazioni connesse: la moltiplicazione di grandi numeri primi che è un’operazione veloce e l’operazione inversa, cioè la fattorizzazione, che invece è un’operazione molto più lenta.
In effetti ancora non esiste una tecnica generale efficiente per la fattorizzazione di numeri primi lunghi che vanno trovati con tecniche che spesso sono quelle del “Crivello di Eratostene” o sue ottimizzazioni. Intendo Eratostene da Cirene, quello del III secolo avanti Cristo noto per aver calcolato le dimensioni della Terra. Il “crivello” che porta il suo nome non è altro che disporre una serie di numeri in una matrice ed escludere iterativamente i multipli dei numeri primi a partire dai più piccoli. Normalmente i certificatori generano grandi numeri primi partendo da grandi numeri casuali e chiedendosi se questi siano anche numeri primi utilizzando algoritmi specifici.
Nel ‘91 la sfida era fattorizzare numeri di 100 cifre decimali (pari a 330 bit). Negli ultimi anni il numero di cifre è cresciuto fino a oltre 600 (pari ad almeno 2048 bit). Non è chiaro quanto si potrà andare avanti ma è chiaro che – almeno per il momento – i numeri primi vanno trovati sostanzialmente con forza bruta. Lo stesso quantum computing sembra una minaccia lontana se non altro perché prima che diventi disponibile alle masse o, per lo meno agli hacker, passeranno anni.
RSA, matematica elementare in quattro passaggi
RSA tratta di matematica elementare con quattro passaggi. Vediamoli da vicino.
1. Prendere due numeri primi e moltiplicarli tra di loro per ottenere un nuovo numero, chiamato modulo, che viene usato per moltiplicare numeri, cioè il testo in chiaro, “avvolgendoli” attorno a questo nuovo numero e ottenere come risultato il resto (Il nome corretto dell’operazione di “avvolgimento” è “modulo”. Per esempio 2 x 3 modulo 5 dà come risultato 1 perchè, 6 che è il risultato normale dell’operazione, supera 5 di 1.)
2. Prendere arbitrariamente un numero primo molto grande che faccia da chiave pubblica e, tramite il modulo e l’algoritmo esteso di Euclide ottenere la chiave privata (l’algoritmo esteso di Euclide applicato su due numeri interi a e b, calcola sia il MCD, massimo comun divisore, sia i due coefficienti x e y tali che ax+by = MCD(a,b) ).
3. Per cifrare un messaggio, per esempio un numero, è necessario moltiplicare sé stesso il numero delle volte della chiave pubblica applicando il modulo.
4. Per decifrare il messaggio cifrato, è sufficiente moltiplicare sé stesso il numero di volte della chiave privata applicando il modulo.
La sicurezza di RSA si basa sull’utilizzo di chiavi sempre più lunghe contando sul fatto che la capacità computazionale necessaria per fattorizzare, cioè decifrare, un messaggio cifrato sia sempre superiore alla soglia di quanto sia economicamente conveniente. Lo stesso legislatore nazionale, consapevole del problema, con delibera Cnipa n. 45/2009 aveva imposto per le firme digitali l’utilizzo di chiavi lunghe almeno 2048 bit (pari a 256 caratteri) invece di 1024 fino allora utilizzate.
Ma allungare le chiavi è una specie di rincorsa che non è sostenibile nel lungo periodo. La distanza tra la capacità computazionale necessaria per la moltiplicazione utilizzata nella cifratura e quella per la fattorizzazione da utilizzare nella decifratura tenderà a restringersi nel tempo e non è ipotizzabile continuare a imporre chiavi sempre più lunghe. E, quanto alla firma digitale nel caso più generale i calcoli crittografici vengono svolti nel processore crittografico contenuto in un badge o in una chiavetta Usb e, anche in questo caso, non è ipotizzabile continuare a installare processori sempre più potenti su dispositivi così piccoli quando la decifrazione per forza bruta può essere svolta da sistemi di calcolo distribuiti e accessibili in cloud che sono enormemente più potenti di qualunque processore crittografico.
È necessario esplorare altre direzioni e in questo ECDSA viene in aiuto.
ECDSA: la crittografia a chiave ellittica
Molto più promettente della crittografia RSA è la crittografia a chiave ellittica ECC ovvero Elliptic Curve Cryptography – che da anni è utilizzata in molti ambiti, tra cui la garanzia di anonimato sui sistemi TOR, nella prova di possesso dei BitCoin e altre criptovalute e anche nella sicurezza delle connessioni SSL/TLS, oltre – naturalmente – nella firma elettronica qualificata e nella firma digitale con la sua variante chiamata ECDSA. Si tratta di un sviluppo della DSA.
Una curva ellittica è il grafico di un’equazione di terzo grado di questa forma esplicita:
y2 = x3 + ax + b
A differenza della RSA, il dominio non sono più i numeri naturali, inoltre la soluzione per y comporta necessariamente una radice quadrata che, di per sé, ha due soluzioni. In questa funzione, una delle variabili è elevata al quadrato mentre l’altra variabile lo è al cubo. Il grafico di questa equazione ha una forma particolare con un paio di proprietà interessanti:
1. ha una simmetria orizzontale, cioè ogni punto della parte superiore del grafico viene “riflesso” nella parte inferiore.
2. una retta non verticale e non tangente intercetta la curva in almeno tre punti.
Per esempio, nel grafico che segue, il punto della retta che passa per i punti A e B, intercetta anche il punto C. A partire da un punto qualunque, a causa della simmetria della curva, è sempre possibile ottenere il suo punto riflesso, cioè il punto D dell’esempio.
È possibile ripetere la stessa operazione questa volta partendo sempre dal punto A e coinvolgendo il punto D appena ottenuto per ottenere punto F. Questa operazione può essere ripetuta molte volte e partendo da un punto A noto si otterrà un altro punto sulla curva.
Fig. 4 – In una curva ellittica, partendo da due punti A e B, con due iterazioni si ottiene il punto F
Pertanto, nella crittografia a curva ellittica:
– la chiave pubblica è A;
– la chiave privata è il numero di volte in cui si è ripetuta l’operazione;
La cifratura corrisponde all’applicazione del modulo che trasforma la curva in un insieme di punti discreti tracciati su un quadrato con un numero primo come lato. Anche con questa rappresentazione, la curva mantiene tutte le proprietà.
Fig. 5 – Per esempio, 27 iterazioni del Modulo 23 sulla curva Y2 = ( X3 + x +1)mod23 (fonte: https://jun-wang-2018.github.io)
Come per la DSA, la cifratura è un problema di complessità crescente ma la decifratura con forza bruta comporta la soluzione del problema del logaritmo discreto che, al momento, è intrattabile.
La più diffusa implementazione pratica della ECC nella firma elettronica qualificata è la ECDSA, Elliptic Curve Digital Signature Algorithm. Sviluppata inizialmente negli Stati Uniti, all’inizio della sua diffusione era coperta da almeno un centinaio di brevetti e raccomandazioni. All’inizio, questo aveva frenato gli sviluppi che rischiavano di non essere completamente liberi né del tutto sicuri. Va da sé, scrupoli del tutto inesistenti per chi aveva cattive intenzioni.
Prospettive e problemi all’orizzonte: la minaccia del quantum computing
RSA ed ECDSA – pur molto usata la prima e con quote crescenti di adozione la seconda – non sono equivalenti. Dal punto di vista informatico, la prima è molto semplice da implementare ma la seconda – se implementata correttamente – è più veloce e richiede una minore quantità di memoria.
Quanto alla solidità, come visto, per affrontare la rottura per forza bruta il metodo più semplice è quello di allungare le chiavi. La norma tecnica europea (ETSI TS 119 312 V1.4.3 dell’agosto 2023) suggerisce dei valori minimi in base alla durata in anni prima della rottura (e sono quelli notificati proprio dall’Italia nel 2019). Per la sicurezza a un anno i valori proposti sono per la RSA almeno 1900 bit e nella pratica viene scelto il più comodo 2048 bit (pari a 211 bit cioè 256 caratteri). Per ECDSA le chiavi dovrebbero essere lunghe almeno 256 bit (pari a 32 caratteri). I valori suggeriti dovrebbero crescere fino a rispettivamente 3000 e 512 bit per resistere a sei anni.
Soprattutto se integrate con un sistema di gestione documentale a norma Agid, le firma elettroniche basate su RSA e ECDSA sono relativamente sicure.
All’orizzonte si profila un’unica grande minaccia, quella del computer quantistico. In particolare esiste un algoritmo (Algoritmo di Shor) capace di risolvere efficientemente sia il problema della fattorizzazione usata nella RSA sia quello del logaritmo discreto della ECDSA. Si stanno prendendo le prime contromisure. Da un lato si stanno sviluppando algoritmi in grado di resistere. Un ruolo importante è stato quello del NIST che in una competizione durata sei anni, nel 2022 ha identificato i primi vincitori lasciando però la porta aperta ad altri possibili candidati. Da un altro lato si stanno sviluppando i principi intrinseci della meccanica quantistica (come il principio di indeterminazione di Heisenberg) per ottenere più solidi algorigmi matematici. La sfida è aperta.
L’evoluzione normativa
Dal punto di vista normativo il quadro è in evoluzione con il portafoglio europeo delle identità digitali (EuDIW) ma, quanto agli aspetti matematici, possiamo aspettarci una serena continuità con quanto c’è già da molti anni. E poi, chiaro, oltre a diritto e matematica, le identità digitali fanno ampio uso di molto altro tra informatica e infrastrutture nei vari aspetti. Segnalo come minimo l’infrastruttura a chiave pubblica per i certificati e la distribuzione delle chiavi compreso i protocolli sullo stato degli stessi certificati e delle liste di revoca (CRL). Un quadro che complessivamente ha già dimostrato una certa solidità. Pensiamo alla Decisione di esecuzione (UE) 2015/1506 sui formati delle firme elettroniche che le Pubbliche Amministrazioni sono tenute ad accettare (i noti formati PAdES, CAdES e XAdES). Anche questo non cambia e in pratica suggerisce a tutti gli altri, operatori pubblici o privati, di utilizzare gli stessi formati.