L'Algoritmo RSA: Sicurezza Asimmetrica con Chiavi a 2048 bit
La crittografia a chiave pubblica, nota anche come crittografia asimmetrica, rappresenta un pilastro fondamentale nella sicurezza delle comunicazioni digitali moderne. Il suo successo si basa sulla necessità che Bob sia l'unico a essere in possesso della propria chiave privata. Questo sistema di crittografia si basa sull'esistenza di due chiavi distinte, che vengono usate per cifrare e decifrare. Se la prima chiave viene usata per la cifratura, la seconda deve necessariamente essere utilizzata per la decifratura e viceversa. Queste chiavi accoppiate costituiscono la spina dorsale del crittosistema RSA, consentendo una trasmissione sicura dei dati anche su reti non affidabili. Questa innovazione ha consentito comunicazioni sicure su canali non affidabili senza la necessità di uno scambio preventivo di chiavi.
Le Origini della Crittografia Asimmetrica
Prima dell'avvento della crittografia asimmetrica, i sistemi di cifratura erano prevalentemente "a chiave segreta", utilizzando la stessa chiave sia per cifrare che per decifrare. Questo approccio presentava un problema significativo per le comunicazioni a distanza: lo scambio sicuro della chiave. Le due parti dovevano trovare un modo per scambiarsi la chiave con la certezza che nessuno ne venisse a conoscenza.
La soluzione a questo problema fu proposta nel 1975 da Whitfield Diffie e Martin Hellman, crittologi americani, che pubblicarono un sistema basato sulla creazione di un cifrario asimmetrico composto da chiavi pubbliche. La loro intuizione rivoluzionò il mondo della crittografia. Diffie ed Hellman concepirono un sistema asimmetrico, basato sull'uso di due chiavi generate in modo tale che sia impossibile ricavarne una dall'altra. Le due chiavi vengono chiamate pubblica e privata: la prima serve per cifrare e la seconda per decifrare. Anche se pochi anni prima ci avevano già pensato James H. Ellis, Clifford Cocks, e Malcolm J. Il sistema di crittografia si basa sulla difficoltà di fattorizzare un numero molto grande in due numeri primi.
La Nascita dell'Algoritmo RSA
Sebbene Diffie e Hellman avessero posto le basi teoriche, mancava ancora un algoritmo pratico per implementare questo concetto. La svolta avvenne nel 1978, quando tre professori del MIT (Massachusetts Institute of Technology) - Ronald Rivest, Adi Shamir e Leonard Adleman - svilupparono una procedura di calcoli matematici che prenderà il nome di "algoritmo RSA", dalle iniziali dei suoi inventori. Essi seppero implementare tale logica utilizzando particolari proprietà formali dei numeri primi con alcune centinaia di cifre. Ronald Rivest, Adi Shamir e Leonard Adleman nel 1983 brevettarono l'algoritmo negli Stati Uniti dal MIT (brevetto 4.405.829, scaduto il 21 settembre 2000).

L'algoritmo RSA deve il suo nome a questi tre matematici americani, che per primi inventarono una funzione matematica per realizzare nella pratica un sistema di crittografia asimmetrica, ovvero basato sui concetti di chiave pubblica e privata. Il lavoro dei tre matematici prese spunto dall’articolo originale sulla crittografia asimmetrica di Diffie e Hellman del 1976 che servì da un lato alla scoperta di questa nuova forma di crittografia e in secondo luogo alla nascita dell’algoritmo RSA per la distribuzione sicura delle chiavi, risolvendo un annoso problema della crittografia simmetrica che aveva grandi difficoltà proprio nel distribuire chiavi sicure ad un gran numero di utenti.
Come Funziona l'Algoritmo RSA
Il funzionamento dell'algoritmo RSA si basa su un principio matematico fondamentale: la difficoltà nel fattorizzare un numero molto grande nei suoi due fattori primi costituenti. Mentre è computazionalmente facile moltiplicare due numeri primi per ottenere un numero composto, è estremamente difficile, con i metodi di calcolo classici, risalire ai due numeri primi originali partendo dal numero composto.
In termini matematici, il processo di generazione delle chiavi e di cifratura/decifratura può essere descritto come segue:
- Selezione dei Numeri Primi: Si scelgono due numeri primi distinti,
peq. Per ottenere una discreta sicurezza è necessario utilizzare chiavi binarie di almeno 2048 bit. - Calcolo del Modulo: Si calcola il modulo
N = p * q. Questo numeroNsarà parte sia della chiave pubblica che della chiave privata. - Calcolo della Funzione Totiente di Eulero: Si calcola
phi(N) = (p-1) * (q-1). Questo valore è cruciale per la generazione delle chiavi. - Selezione della Chiave Pubblica (e): Si sceglie un numero intero
etale che sia coprimo conphi(N), ovvero il loro massimo comune divisore (GCD) sia 1 (GCD(e, phi(N)) = 1).edeve essere compreso tra 1 ephi(N). - Calcolo della Chiave Privata (d): Si calcola la chiave privata
dcome l'inverso moltiplicativo diemodulophi(N), ovverod = e^(-1) mod phi(N), il che implica ched * e = 1 mod phi(N). - Formazione delle Chiavi:
- La chiave pubblica è la coppia
(e, N). Questa chiave può essere distribuita liberamente. - La chiave privata è la coppia
(d, N). Questa chiave deve essere mantenuta strettamente segreta dal suo proprietario.
- La chiave pubblica è la coppia

Processo di Cifratura e Decifratura
Una volta generate le chiavi, il processo di cifratura e decifratura avviene come segue:
Cifratura: Se Alice vuole spedire un messaggio a Bob e non vuole che altri all'infuori di Bob possano leggerlo, Alice cercherà sull'elenco la chiave pubblica di Bob
(e, N). Alice trasformerà il messaggio originaleMin una sequenza di numeri. Per ogni bloccom[i]del messaggio, la cifratura avviene calcolando il testo cifratoc[i]tramite la formula:c[i] = (m[i]^e) mod NIl messaggio cifratocviene quindi inviato a Bob.Decifratura: Bob riceve il messaggio cifrato
c. Essendo Bob l'unico a possedere la chiave privata(d, N)(in grado quindi di poter decifrare il messaggio cifrato con la chiave pubblica), sarà anche l'unico a poter decifrare il messaggio. Per decifrare ogni bloccoc[i], Bob utilizzerà la formula inversa:m[i] = (c[i]^d) mod NIl messaggio decifratomrimarrà così segreto per tutti gli altri, compresa Alice, che non disponendo della chiave privata di Bob, non sarà in grado di decifrare il messaggio da lei stessa creato.
Tipicamente, il modulo N viene scelto con lunghezze di 1024 bit, 2048 bit, 3072 bit o 4096 bit. Le chiavi a 512 bit sono ricavabili in poche ore, rendendole obsolete per scopi di sicurezza moderna. Per ottenere una discreta sicurezza è necessario utilizzare chiavi binarie di almeno 2048 bit.
Garanzia di Autenticità: La Firma Digitale
Oltre alla confidenzialità, il sistema RSA consente anche di garantire la provenienza di un messaggio, attraverso la firma digitale. Riprendiamo l'esempio precedente: Alice questa volta, prima di cifrare il messaggio usando la chiave pubblica di Bob, lo cifrerà usando la propria chiave privata e solo in un secondo momento lo ri-crittograferà utilizzando la chiave pubblica di Bob.
Più semplicemente, utilizzando questo metodo di cifratura, Alice può mandare messaggi a tutti, garantendo la provenienza. Infatti, cifrando il messaggio con la propria chiave privata, chiunque sarà in grado di leggere il messaggio, decifrandolo con la sua chiave pubblica, assicurandosi in tal modo che il mittente sia proprio Alice.
Quando Bob riceverà il messaggio e lo decifrerà usando la propria chiave inversa (la chiave pubblica di Alice), otterrà ancora un messaggio crittografato (quello cifrato con la chiave privata di Alice). Bob potrà quindi decifrare questo messaggio finale utilizzando la propria chiave privata, rivelando così il messaggio originale. Questo doppio processo di cifratura assicura sia la confidenzialità (grazie alla chiave pubblica di Bob) sia l'autenticità (grazie alla chiave privata di Alice).
06 - C# - Gestione della Firma Digitale RSA
L'Evoluzione e le Sfide Future: L'Impatto del Quantum Computing
RSA è computazionalmente impegnativo, soprattutto per quanto riguarda una eventuale realizzazione hardware. I principali metodi di attacco all'algoritmo RSA si basano sulla fattorizzazione dei numeri primi. Il segreto di RSA (chiave privata) risiede infatti nella moltiplicazione di due numeri primi molto grandi. L’operazione inversa sarebbe infatti computazionalmente impossibile (tempi oggi considerati proibitivi) con metodi di calcolo classici. Ad esempio, un numero RSA a 2048 bit consiste in 309 cifre decimali. Un numero primo così grande è appunto (quasi) impossibile da fattorizzare nei suoi due componenti.
Tuttavia, l'avvento del quantum computing rappresenta una potenziale minaccia per gli algoritmi di crittografia classici, tra cui lo scambio di chiavi Diffie-Hellman (DH), la crittografia a curva ellittica (ECC) e l'algoritmo di crittografia RSA. Dato che l'algoritmo RSA si basa sulla difficoltà computazionale di fattorizzare grandi numeri primi, algoritmi quantistici come quello di Shor potrebbero essere utilizzati per decifrare le chiavi RSA.

Il NIST (National Institute of Standards and Technology) sta lavorando attivamente per preparare la transizione verso la crittografia post-quantistica. Nel 2024, ha pubblicato una bozza iniziale di guida ("Transition to Post-Quantum Cryptography Standards", "Transizione agli standard di crittografia post-quantistica", NIST IR 8547) che raccomanda almeno 112 bit di sicurezza (chiavi RSA a 2048 bit) e l'obiettivo di utilizzare almeno chiavi RSA a 4096 bit (per 128 bit di sicurezza) dopo il 2030. Nella bozza di guida, il NIST raccomandava di non utilizzare chiavi RSA di qualsiasi dimensione dopo il 2035.
È importante notare che, sebbene si ritenga che gli algoritmi di crittografia post-quantistica siano resistenti agli attacchi dell'informatica quantistica, esiste il rischio che anche questi framework possano essere attaccati da metodi di crittoanalisi e di calcolo "tradizionali". Se le organizzazioni utilizzano un algoritmo di crittografia post-quantistica, dovrebbero essere al sicuro dagli attacchi post-quantistici, ma potrebbero comunque essere violate da attacchi basati su un metodo pre-quantistico.
Adozione e Standardizzazione
La pubblicazione di un documento in cui un gruppo di ricercatori cinesi afferma di poter violare l’algoritmo crittografico RSA a 2048 bit (sebbene non lo abbia ancora fatto) non ha colto di sorpresa gli addetti ai lavori. Non è una novità, infatti, che il quantum computing possa diventare un problema di sicurezza.
L'adozione diffusa del crittosistema RSA ha portato allo sviluppo dell'infrastruttura a chiave pubblica (PKI) RSA, una struttura che gestisce i certificati digitali e la crittografia a chiave pubblica. RSA Security ha reso di pubblico dominio l'algoritmo di crittografia in data 6 settembre 2000. Il rilascio "consentirebbe a chiunque di creare prodotti che incorporino la propria implementazione dell'algoritmo. Ciò significa che RSA Security ha rinunciato al diritto di far valere il brevetto per qualsiasi attività di sviluppo che includa l'algoritmo RSA dopo il 6 settembre 2000".
RSA Security è stata fondata nel 1982 da Ron Rivest, Adi Shamir e Leonard Adleman, che hanno sviluppato l'algoritmo di crittografia RSA nel 1977. Sin dalla sua fondazione, RSA Security ha aiutato le organizzazioni a difendersi da phishing, malware, social engineering e altri vettori di minacce ricorrenti. RSA continua a innovare contro le minacce emergenti come i deepfake, gli attacchi basati sull'intelligenza artificiale e i bypass dell'help desk IT.
Sin dalla sua fondazione, RSA ha contribuito a plasmare la cybersecurity. Da pioniere del crittosistema RSA a leader nell'autenticazione senza password, l'eredità di RSA è segnata dal suo costante impegno per l'innovazione e la sicurezza.
La crittografia a chiave pubblica consente comunicazioni online sicure tramite HTTPS, una versione sicura del protocollo HTTP. Gli algoritmi a chiave pubblica sono fondamentali per proteggere le comunicazioni digitali e l'archiviazione dei dati. Costituiscono la base di standard Internet come S/MIME, che garantisce l'autenticità, l'integrità, la privacy e la sicurezza dei messaggi elettronici. La crittografia a chiave pubblica è importante per la sicurezza online. Consente la messaggistica sicura, verifica le identità online e rileva la manomissione dei dati. Un uso corretto protegge le informazioni sensibili per individui e organizzazioni.
Al di là del clamore suscitato su Internet dalla notizia sulla nuova ricerca, occorre ricordare che l’algoritmo crittografico RSA esiste con diverse lunghezze di chiave ed esistono raccomandazioni sulla lunghezza da utilizzare con un certo orizzonte temporale. Ad oggi, ad esempio, il report CNSA (Commercial National Security Suite 2.0) della National Security Agency di settembre 2022 raccomanda RSA con minimo 3072 bit. Il NIST (National Institute for Standards and Technology) raccomanda RSA 2048 fino al 2030 e RSA 3072 per tempi ancora più lunghi. Anche ENISA, Agenzia Europea per la Cybersicurezza in uno dei suoi ultimi report sull’argomento crittografico, raccomanda l’adozione di RSA 3072. Introducendo il concetto di “Security Strength”, ad esempio, RSA 1024 ha un valore di 80 bit, RSA 2048 ha un valore di 112 bit mentre RSA 3072 ha un valore di 128, da cui nasce la raccomandazione vista prima. Questi valori sono destinati ad essere rivisti nei prossimi tempi, quando le ricerche con quantum computer produrranno effetti pratici concreti. Intanto, si procede con la standardizzazione dei futuri algoritmi di crittografia che siano resistenti ai quantum computer. Per ora sono stati selezionati CRYSTALS-Kyber per la crittografia e CRYSTALS-Dilithium per la firma digitale.
tags: #chiave #pubblica #rsa #a #2048 #bit

