La crittografia RSA è la spina dorsale della comunicazione Internet sicura. È un tipo di crittografia a chiave pubblica che protegge e-mail, transazioni digitali e dati sensibili che circolano attraverso le reti. L’algoritmo prende il nome dai suoi creatori: Ronald L. Rivest, Adi Shamir e Leonard M. Adleman. Hanno sviluppato il sistema mentre insegnavano al Massachusetts Institute of Technology.
La sicurezza di RSA si basa su un semplice ostacolo matematico facile da creare ma quasi impossibile da invertire. Un utente inizia scegliendo due grandi numeri primi, p e q. Questi numeri sono così grandi che moltiplicarli per ottenere n è banale, ma fattorizzare n in p e q è computazionalmente proibitivo.
Pensala in questo modo: moltiplicare due numeri enormi richiede una frazione di secondo. Stai cercando di capire quali due numeri sono stati moltiplicati per ottenere quel risultato? Ciò potrebbe richiedere miliardi di anni con la tecnologia attuale.
Dal 2015, gli standard di sicurezza del governo statunitense richiedono che il modulo n sia di almeno 2.048 bit. In termini decimali, ciò significa che p e q sono circa 308 cifre ciascuno, creando un numero di 617 cifre per n. I numeri più grandi che abbiamo scomposto con successo sono solo la metà di quella dimensione. La difficoltà di fattorizzazione raddoppia all’incirca per ogni tre cifre aggiuntive nel modulo. Questa crescita esponenziale della complessità garantisce che le chiavi a 617 cifre rimangano al sicuro dagli attacchi di forza bruta per decenni.
I meccanismi della generazione delle chiavi
Una volta selezionati p e q, il sistema genera una chiave pubblica e una privata. L’utente sceglie un numero intero e minore di n. Questo numero deve essere relativamente primo rispetto al prodotto di (p – 1) e (q – 1). In parole povere, e non condivide fattori comuni con quel prodotto oltre a 1.
Questa scelta specifica garantisce l’esistenza di un altro numero d. Quando moltiplichi e per d e dividi per il minimo comune multiplo di (p – 1) e (q – 1), il resto è 1.
Trovare d è facile se conosci p e q. L’algoritmo euclideo lo calcola in pochi istanti. Ma se non conosci p e q, trovare d da e è difficile quanto scomporre n. Questa difficoltà è l’intera base della criptosicurezza di RSA.
La sicurezza di RSA non è magica; è matematica. Nello specifico, è l’asimmetria tra la moltiplicazione facile e la fattorizzazione impossibile.
Chiavi pubbliche e chiavi private
Le etichette d ed e descrivono funzioni, non ruoli rigidi. Le chiavi sono intercambiabili. Questa flessibilità consente a RSA di servire a due scopi distinti: segretezza e autenticazione.
Per creare un canale segreto, l’utente A pubblica e e n in una directory pubblica. L’utente A mantiene d segreto. Quando qualcuno vuole inviare un messaggio privato ad A, converte il messaggio in numeri inferiori a n e lo crittografa utilizzando e e n. Solo A può decifrarlo perché solo A contiene d. Il presupposto, e una forte evidenza, sostengono che nessun altro può decrittografare il messaggio senza considerare n.
L’autenticazione funziona diversamente. L’utente A pubblica d e n e mantiene e segreto. L’utente B vuole verificare che sta parlando con A. B invia un messaggio di sfida ad A. Se A restituisce la versione crittografata utilizzando e, B può decrittografarla utilizzando il pubblico d. Se il messaggio decriptato corrisponde alla sfida, B sa che il mittente possiede e. Poiché solo A ha e, l’identità è verificata.
Firme digitali e hashing
La firma digitale aggiunge un ulteriore livello di complessità. Richiede una funzione di hashing criptosicura. Questa è una funzione pubblica che comprime qualsiasi messaggio in un digest più piccolo. Ogni parte del digest dipende da ogni parte del messaggio originale. Cambia un bit nel messaggio originale e circa la metà dei bit nel digest verranno invertiti.
Un hash crittografico rende computazionalmente impossibile trovare un messaggio che produca uno specifico digest preassegnato. Inoltre rende difficile trovare un messaggio diverso con lo stesso digest di uno noto.
Per firmare un messaggio, A crittografa il digest con il proprio segreto e e lo aggiunge al messaggio. Non è necessario che il messaggio stesso sia segreto. Chiunque può utilizzare la chiave pubblica di A d per decrittografare la firma e recuperare il digest. Quindi calcolano il digest del messaggio ricevuto in modo indipendente. Se i due digest corrispondono, la firma è valida. Solo A avrebbe potuto crittografare il digest perché solo A conosce e.
La realtà ibrida
Questa sicurezza ha un costo. La crittografia asimmetrica implica un numero di calcoli notevolmente maggiore rispetto alla crittografia simmetrica (a chiave singola). Questa elevata richiesta di elaborazione riduce drasticamente la produttività. Per circa 20 anni, gli algoritmi a chiave singola hanno raggiunto prestazioni da 1.000 a 10.000 volte superiori rispetto agli algoritmi a due chiavi per livelli di sicurezza comparabili.
Poiché RSA è lento, viene utilizzato raramente per crittografare direttamente grandi quantità di dati. Invece, alimenta i sistemi ibridi. RSA gestisce il pesante lavoro di autenticazione e firme digitali. Inoltre, scambia in modo sicuro una chiave di sessione generata casualmente. Una volta condivisa la chiave, il sistema passa a un algoritmo a chiave singola per la trasmissione ad alta velocità dei dati effettivi. Al termine della sessione, la chiave viene scartata.
Questa combinazione ci offre il meglio di entrambi i mondi. Otteniamo lo scambio sicuro di chiavi della crittografia a chiave pubblica con la velocità della crittografia simmetrica per la maggior parte dei nostri dati.
I conti reggono. Le chiavi restano al sicuro. Ma man mano che la potenza di calcolo aumenta, la definizione di “grande” cambia. Ciò che è indistruttibile oggi potrebbe essere risolvibile domani. Continuiamo a costruire numeri primi più grandi. Continuiamo a sperare che il divario tra la moltiplicazione facile e la fattorizzazione difficile rimanga sufficientemente ampio da proteggere le nostre vite digitali.






























