In questo articolo, Sicurezza dei dati: la Crittografia, definiamo il concetto di crittografia, i più importanti algoritmi di crittografia ed in che modo viene utilizzata la crittografia nei moderni sistemi informatici
Indice dei contenuti
- Introduzione alla crittografia
- Classificazione dei sistemi crittografici
-
Crittografia simmetrica: principi e algoritmi principali
- Il cifrario di Cesare
- Cifrari simmetrici a blocchi e a flusso
- Sostituzione e trasposizione
- Vulnerabilità dei cifrari semplici e attacchi statistici
- Cifrari polialfabetici e cifrario di Vigenère
- Modello generale di crittografia simmetrica
- Sicurezza computazionale e principi di Shannon
- Algoritmi simmetrici moderni: DES, 3DES e AES
-
Crittografia asimmetrica: principi e algoritmi principali
- Il problema della distribuzione delle chiavi
- Nascita della crittografia asimmetrica
- Chiave pubblica e chiave privata
- Requisiti di un crittosistema asimmetrico
- Confidenzialità con crittografia asimmetrica
- Autenticazione e firma digitale
- Confidenzialità e autenticazione combinate
- L’algoritmo RSA: funzionamento matematico e applicazioni
- Limiti dei sistemi asimmetrici e crittosistemi ibridi
Introduzione alla crittografia
Sin dall’antichità l’essere umano si è confrontato con il problema di comunicare informazioni in modo sicuro attraverso canali di comunicazione non affidabili. La necessità di proteggere i messaggi da intercettazioni indesiderate ha stimolato, nel corso dei secoli, lo sviluppo di numerose tecniche che permettevano di trasformare il contenuto originario rendendolo incomprensibile a chi non fosse il legittimo destinatario. Sebbene spesso semplici se valutate con i criteri odierni, tali soluzioni rappresentavano, per l’epoca, strumenti ingegnosi ed efficaci.
Il termine crittografia deriva dal greco κρυπτός (kryptós, “nascosto”) e γραϕία (graphía, “scrittura”) e significa letteralmente “scrittura nascosta”. Con questo termine si indica l’insieme delle tecniche e dei metodi utilizzati per garantire la sicurezza delle informazioni durante la trasmissione o la conservazione dei dati.
Si definisce sistema crittografico un sistema in cui un mittente trasforma un testo in chiaro T in un crittogramma X mediante una specifica procedura, allo scopo di inviarlo a un destinatario attraverso un canale di comunicazione potenzialmente intercettabile. Il destinatario, una volta ricevuto il crittogramma, applica una trasformazione inversa per ricostruire il testo originale T.

Quando la comunicazione richiede confidenzialità, integrità del messaggio o autenticazione dell’interlocutore, è necessario adottare tecniche crittografiche che presentano due elementi fondamentali comuni:
- una trasformazione del messaggio in grado di fornire garanzie di sicurezza, ad esempio la cifratura per renderne il contenuto illeggibile a terzi, oppure l’aggiunta di informazioni per verificare l’identità del mittente;
- un’informazione segreta, nota esclusivamente ai soggetti coinvolti nella comunicazione, come la chiave crittografica utilizzata nei processi di cifratura e decifratura.
La chiave è un’informazione, generalmente costituita da una sequenza di simboli alfabetici o numerici, impiegata in un sistema crittografico per trasformare il testo in chiaro T nel crittogramma X, oppure per effettuare l’operazione inversa.
Nei sistemi informatici moderni, la chiave è tipicamente una sequenza di bit, e la sua lunghezza influisce in modo diretto sul livello di sicurezza del sistema: chiavi più lunghe rendono più complessa l’individuazione della chiave corretta da parte di un attaccante.
In alcuni scenari può essere necessaria la presenza di un terzo soggetto fidato, che svolge il ruolo di garante tra le parti, ad esempio per certificare l’identità di uno dei partecipanti o per gestire la distribuzione sicura delle chiavi crittografiche.
I sistemi crittografici si distinguono principalmente in due categorie:
- sistemi simmetrici o a chiave privata, nei quali la chiave utilizzata per cifrare il messaggio dal mittente è la stessa impiegata dal destinatario per decifrarlo;
- sistemi asimmetrici o a chiave pubblica, in cui vengono utilizzate due chiavi distinte, matematicamente correlate ma diverse tra loro.
Un attaccante che intercetta il traffico su un canale non sicuro, detto crittoanalista, può tentare di recuperare il messaggio originale adottando diverse strategie di attacco, a seconda delle informazioni a sua disposizione oltre alla conoscenza dell’algoritmo di cifratura e del crittogramma:
- Ciphertext only (solo crittogramma): il crittoanalista dispone esclusivamente del crittogramma; è la situazione più complessa dal punto di vista dell’attacco.
- Known plaintext (testo in chiaro noto): sono note una o più coppie di testo in chiaro e del relativo crittogramma ottenuto con la stessa chiave.
- Chosen plaintext (testo in chiaro a scelta): l’attaccante può scegliere specifici testi in chiaro e osservare i corrispondenti crittogrammi, individuando eventuali debolezze dell’algoritmo.
- Chosen ciphertext (crittogramma a scelta): il crittoanalista può scegliere un crittogramma e ottenere il testo in chiaro corrispondente; questo scenario richiede generalmente l’accesso diretto al sistema del destinatario.
- Open key model (modello a chiave aperta): l’attaccante possiede informazioni parziali sulla chiave o sulla sua struttura, ad esempio la conoscenza di bit comuni tra più chiavi.
Un esempio storico significativo è rappresentato dalla decifrazione del codice della macchina Enigma, utilizzata dalla Germania durante la Seconda Guerra Mondiale. In quel contesto, l’uso di attacchi di tipo known plaintext permise agli analisti britannici di ricostruire il funzionamento del sistema grazie al possesso di messaggi in chiaro trasmessi da postazioni note.
Nel caso più comune, il crittoanalista conosce esclusivamente il crittogramma e l’algoritmo di cifratura. In assenza di ulteriori informazioni, l’unica strategia possibile è un attacco esaustivo, noto anche come attacco a forza bruta (brute force attack), che consiste nel tentativo sistematico di tutte le chiavi possibili. Se lo spazio delle chiavi è pari a N, in media il successo si ottiene dopo N/2 tentativi.
Quando lo spazio delle chiavi è sufficientemente ampio, questo tipo di attacco diventa computazionalmente impraticabile, costituendo uno dei principali obiettivi nella progettazione di sistemi crittografici sicuri.
Classificazione dei sistemi crittografici
I sistemi crittografici possono essere classificati secondo diversi criteri, che consentono di comprenderne meglio il funzionamento, le caratteristiche operative e gli ambiti di applicazione. Le principali classificazioni si basano sul tipo di trasformazione applicata al messaggio, sulle modalità di elaborazione del testo in chiaro e sul numero di chiavi utilizzate.
Classificazione in base al tipo di operazioni utilizzate
Una prima distinzione riguarda il tipo di operazioni matematiche o logiche impiegate per trasformare il testo in chiaro nel testo cifrato:
-
Crittografia a sostituzione
In questo tipo di crittografia, ogni elemento del testo in chiaro viene sostituito con un altro elemento secondo una determinata regola. La sostituzione può avvenire su singoli caratteri, gruppi di caratteri o blocchi di bit. Il messaggio cifrato mantiene la struttura del messaggio originale, ma i simboli risultano trasformati e non immediatamente interpretabili. -
Crittografia a trasposizione (o permutazione)
In questo caso, gli elementi del testo in chiaro non vengono modificati, ma riorganizzati secondo un criterio prestabilito. L’informazione è quindi nascosta alterando l’ordine dei simboli, rendendo il messaggio incomprensibile senza conoscere la permutazione utilizzata.
Nella crittografia moderna, queste due tecniche vengono spesso combinate per aumentare il livello di sicurezza del sistema.
Classificazione in base alla modalità di elaborazione del testo
Un ulteriore criterio di classificazione riguarda il modo in cui il testo in chiaro viene elaborato durante il processo di cifratura:
-
Crittografia a blocchi (block cipher)
Il testo in chiaro viene suddiviso in blocchi di lunghezza fissa, generalmente pari a NNN bit. Ogni blocco viene cifrato separatamente mediante lo stesso algoritmo e la stessa chiave. Questo approccio è ampiamente utilizzato nei moderni sistemi crittografici e garantisce un elevato livello di sicurezza se correttamente implementato. -
Crittografia a flusso (stream cipher o keystream)
In questo caso il messaggio viene elaborato come un flusso continuo di bit o byte, senza una suddivisione rigida in blocchi. Il testo in chiaro viene combinato con una sequenza di bit generata dinamicamente, detta keystream, rendendo la cifratura particolarmente adatta a comunicazioni in tempo reale.
Classificazione in base al numero di chiavi utilizzate
Un’ulteriore e fondamentale distinzione riguarda il numero di chiavi crittografiche impiegate nel processo di cifratura e decifratura:
-
Crittografia a chiave simmetrica
Il mittente e il destinatario utilizzano la stessa chiave segreta sia per cifrare sia per decifrare il messaggio. Questo implica la necessità di un canale sicuro per la distribuzione iniziale della chiave. I sistemi simmetrici sono generalmente molto efficienti dal punto di vista computazionale. -
Crittografia a chiave asimmetrica
In questo modello ciascun soggetto dispone di una coppia di chiavi distinte, una pubblica e una privata, matematicamente correlate. La chiave pubblica può essere condivisa liberamente, mentre la chiave privata deve rimanere segreta. Questo approccio risolve il problema della distribuzione sicura delle chiavi, ma comporta un maggiore costo computazionale.
Crittografia simmetrica: principi e algoritmi principali
La crittografia simmetrica rappresenta la forma più antica e storicamente consolidata di protezione delle informazioni. Già in epoca romana venivano utilizzate tecniche di cifratura per garantire la riservatezza delle comunicazioni militari e politiche. Lo storico Svetonio, nel Vite dei Cesari, testimonia come Giulio Cesare facesse ricorso a un semplice ma efficace metodo crittografico per trasmettere messaggi riservati.
Il cifrario di Cesare
Il cosiddetto codice di Cesare è un algoritmo di crittografia simmetrica basato su una sostituzione monoalfabetica. Ogni lettera del testo in chiaro viene sostituita con quella che si trova un certo numero di posizioni più avanti nell’alfabeto.
La chiave è rappresentata proprio dal numero di posizioni di scorrimento, che Cesare utilizzava tipicamente pari a 3.
Tabella di sostituzione (chiave = 3)

Esempio
- Testo in chiaro:
attaccare vercingetorige - Testo cifrato:
dzzdffduh bhufnqlhzrunlh
In questo caso si utilizza un algoritmo simmetrico, poiché la stessa chiave numerica (compresa tra 0 e 25) viene impiegata sia per la cifratura sia per la decifratura.
Cifrari simmetrici a blocchi e a flusso
Gli algoritmi di crittografia simmetrica si distinguono principalmente in due categorie:
-
Cifrari a blocchi (block cipher)
Il testo in chiaro viene suddiviso in blocchi di dimensione fissa, ciascuno dei quali viene cifrato indipendentemente. Il codice Cesare, seppur rudimentale, può essere considerato un esempio di cifrario a blocchi, in quanto ogni lettera viene cifrata singolarmente. -
Cifrari a flusso (stream cipher)
La cifratura avviene bit per bit o byte per byte, combinando il testo in chiaro con una sequenza pseudo-casuale di bit detta keystream, generalmente tramite l’operazione logica XOR.
Esempio di cifratura a flusso
Il messaggio “Ciao” viene rappresentato in ASCII come:
67, 105, 97, 111 →1000011 1101001 1100001 1101111
| Testo in chiaro: | 1000011 1101001 1100001 1101111 |
| Keystream: | 1010101 0011001 1110001 0011001 |
| Crittogramma: | 0010110 1110000 0010000 1110110 |
Quando il keystream viene utilizzato una sola volta e mai riutilizzato, si parla di One-Time Pad (OTP), un cifrario teoricamente incondizionatamente sicuro. Durante la Guerra Fredda, Stati Uniti e Unione Sovietica utilizzarono chiavi generate da fenomeni fisici casuali (come la radioattività naturale) e scambiate fisicamente.
Vantaggi dei cifrari a flusso
- non richiedono operazioni di padding;
- permettono la cifratura in tempo reale;
- sono adatti alle comunicazioni continue e ai flussi di dati.
Sostituzione e trasposizione
Gli algoritmi simmetrici possono inoltre essere classificati in base al tipo di trasformazione applicata:
- Sostituzione: ogni simbolo del testo in chiaro viene sostituito con un altro simbolo;
- Trasposizione: i simboli vengono riordinati secondo uno schema prestabilito.
Il codice Cesare è un esempio di algoritmo per sostituzione.
Il cifrario a staccionata (Rail Fence)
Un classico esempio di crittografia per trasposizione è il cifrario a staccionata, in cui il testo viene scritto in diagonale su un numero fisso di righe (chiave) e poi ricomposto leggendo per righe.
Esempio

- Testo in chiaro:
vediamocialleottoinpiazza - Chiave:
4 - Testo cifrato:
voenaemcloipzdailtoiziata
Vulnerabilità dei cifrari semplici e attacchi statistici
Il codice Cesare è estremamente vulnerabile agli attacchi a forza bruta, poiché il numero di chiavi possibili è molto limitato. Ancora più efficace è l’attacco statistico, che sfrutta la frequenza delle lettere nei linguaggi naturali.
Le lingue presentano caratteristiche ricorrenti:
- frequenza delle singole lettere;
- posizione all’interno delle parole;
- sequenze ricorrenti di due o tre lettere (digrammi e trigrammi).
Un attacco basato su queste informazioni è definito attacco crittoanalitico statistico.
Cifrari polialfabetici e cifrario di Vigenère
Per contrastare gli attacchi statistici, nel XV secolo Leon Battista Alberti introdusse i cifrari polialfabetici, che utilizzano più alfabeti di sostituzione.
Il più celebre è il cifrario di Vigenère, in cui la chiave è una parola che determina, lettera per lettera, lo spostamento nell’alfabeto.
Esempio
- Testo in chiaro:
il cifrario di vigenere usa alfabeti diversi - Chiave:
esempiodichiavelunga - Crittogramma:
ne hvvapvrr lr welqisyf zlf nbopfnwq mjrjdnw
| Scrivendo il messaggio tutto in maiuscole e senza spazi, riportando sotto di esso la chiave (ripetuta) si ottiene: | |
ILCIFRARIODIVIGENEREUSAALFABETIDIVERSI | |
La prima I ha in corrispondenza una E nella chiave e viene spostata avanti di 5 posizioni, diventando N; la I della parola ALFABETI ha invece in corrispondenza una H nella chiave e viene spostata avanti di 8 posizioni, diventando Q. |
La sicurezza del cifrario dipende fortemente dalla lunghezza della chiave: una chiave di lunghezza 1 equivale a un codice Cesare.
Modello generale di crittografia simmetrica
Un crittosistema simmetrico può essere rappresentato come segue:
- T: testo in chiaro
- K: chiave segreta
- C: funzione di cifratura
-
X: crittogramma, con
X = C(K, T) -
D: funzione di decifratura, con
T = D(K, X)

Requisiti di sicurezza
Un sistema crittografico sicuro deve garantire:
- un algoritmo robusto contro attacchi ciphertext only e known plaintext;
- un meccanismo sicuro di distribuzione e protezione della chiave.
Sicurezza computazionale e principi di Shannon
Un algoritmo è:
- incondizionatamente sicuro se non può essere violato anche con risorse infinite (caso teorico);
- computazionalmente sicuro se il costo o il tempo necessario alla violazione supera il valore dell’informazione protetta.
Esempio
Una chiave di 64 bit genera 264 combinazioni possibili. Anche con un miliardo di tentativi al secondo, sarebbero necessari centinaia di migliaia di anni per un attacco esaustivo.
Diffusione e confusione
Claude Shannon individuò due proprietà fondamentali per la robustezza di un cifrario:
- diffusione: ogni bit del testo in chiaro influenza molti bit del crittogramma;
- confusione: la relazione tra chiave e crittogramma deve essere altamente complessa.
Questi principi sono alla base degli algoritmi crittografici moderni.
Algoritmi simmetrici moderni: DES, 3DES e AES
Con l’avvento dell’informatica moderna e l’aumento esponenziale della capacità di calcolo, i cifrari storici e classici sono diventati rapidamente inadeguati a garantire un livello di sicurezza sufficiente. Questo ha portato allo sviluppo di algoritmi di crittografia simmetrica moderni, progettati per essere efficienti, robusti dal punto di vista crittoanalitico e adatti all’implementazione su sistemi hardware e software.
Tra i più importanti algoritmi simmetrici moderni si distinguono DES, 3DES e AES, che hanno segnato l’evoluzione della crittografia applicata ai sistemi informatici.
DES (Data Encryption Standard)
Il DES (Data Encryption Standard) è stato adottato nel 1977 come standard federale statunitense per la cifratura dei dati sensibili non classificati. Si tratta di un cifrario a blocchi, che opera su blocchi di 64 bit utilizzando una chiave effettiva di 56 bit (i restanti 8 bit sono utilizzati per il controllo di parità).
Caratteristiche principali del DES
- tipo: cifrario simmetrico a blocchi
- dimensione del blocco: 64 bit
- lunghezza della chiave: 56 bit
- struttura: rete di Feistel
- numero di round: 16
Il funzionamento del DES si basa su una serie di trasformazioni ripetute (round) che applicano sostituzioni e permutazioni, secondo i principi di diffusione e confusione introdotti da Shannon.

il blocco, dopo una permutazione iniziale PI, subisce per 16 volte (round) un’identica trasformazione F che è funzione della chiave e, infine, una permutazione finale PF inversa di PI fornendo un output di 64 bit
ESEMPIO DI PERMUTAZIONE
La permutazione della sequenza di 8 bit 11001010 secondo il vettore [2,0,3,4,1,5,7,6] è 11100001:

Limiti di sicurezza del DES
Con il passare del tempo, la lunghezza della chiave del DES si è rivelata insufficiente. Un attacco a forza bruta su 56 bit è oggi computazionalmente fattibile utilizzando hardware dedicato o sistemi distribuiti.
Per questo motivo, il DES non è più considerato sicuro e non viene utilizzato nei sistemi moderni, se non a scopo didattico o storico.
3DES (Triple DES)
Per prolungare la vita operativa del DES senza dover progettare immediatamente un nuovo algoritmo, è stato introdotto il 3DES (Triple Data Encryption Standard).
Il 3DES applica l’algoritmo DES tre volte consecutive sullo stesso blocco di dati, utilizzando due o tre chiavi differenti.
Modalità di funzionamento del 3DES
La sequenza tipica è:
- cifratura con la prima chiave
- decifratura con la seconda chiave
- cifratura con la terza chiave
A seconda del numero di chiavi utilizzate, si distinguono:
- 3DES a due chiavi (112 bit effettivi)
- 3DES a tre chiavi (168 bit effettivi)
Vantaggi e limiti del 3DES
Vantaggi
- maggiore sicurezza rispetto al DES
- compatibilità con infrastrutture esistenti
Limiti
- elevato costo computazionale
- bassa efficienza rispetto agli algoritmi più moderni
- dimensione del blocco ancora limitata a 64 bit
Per questi motivi, anche il 3DES è oggi considerato obsoleto e progressivamente dismesso dagli standard di sicurezza internazionali.
AES (Advanced Encryption Standard)
L’AES (Advanced Encryption Standard) è l’algoritmo di crittografia simmetrica moderno più diffuso e utilizzato. È stato adottato ufficialmente nel 2001 come successore del DES, al termine di una selezione pubblica promossa dal NIST (National Institute of Standards and Technology).
AES è basato sull’algoritmo Rijndael ed è progettato per garantire elevata sicurezza, efficienza e flessibilità.
Caratteristiche principali dell’AES
- tipo: cifrario simmetrico a blocchi
- dimensione del blocco: 128 bit
- lunghezza della chiave:
- 128 bit (AES-128)
- 192 bit (AES-192)
- 256 bit (AES-256)
- struttura: rete di sostituzione-permutazione
- numero di round:
- 10 (AES-128)
- 12 (AES-192)
- 14 (AES-256)
Funzionamento generale dell’AES

Ogni round dell’AES applica una serie di trasformazioni matematiche sul blocco di dati:
- SubBytes: sostituzione non lineare dei byte
- ShiftRows: permutazione delle righe
- MixColumns: combinazione lineare delle colonne
- AddRoundKey: XOR con una sottochiave derivata dalla chiave principale
Queste operazioni garantiscono un elevato livello di diffusione e confusione, rendendo l’algoritmo resistente agli attacchi crittoanalitici noti.
Sicurezza e utilizzi dell’AES
Ad oggi, AES è considerato sicuro e non risultano attacchi praticabili che ne compromettano l’affidabilità se correttamente implementato. È utilizzato in numerosissimi contesti, tra cui:
- protocolli di sicurezza (TLS, IPsec, WPA2/WPA3)
- cifratura dei dischi (BitLocker, FileVault)
- protezione dei dati su cloud
- sistemi embedded e dispositivi IoT
Confronto sintetico tra DES, 3DES e AES
| Algoritmo | Lunghezza chiave | Blocco | Stato attuale |
|---|---|---|---|
| DES | 56 bit | 64 bit | Obsoleto |
| 3DES | 112/168 bit | 64 bit | In dismissione |
| AES | 128/192/256 bit | 128 bit | Standard attuale |
Considerazioni finali
L’evoluzione da DES ad AES mostra come la crittografia simmetrica abbia dovuto adattarsi costantemente all’aumento della potenza di calcolo e alle nuove tecniche di attacco. Oggi l’AES rappresenta il riferimento principale per la protezione dei dati, combinando sicurezza elevata ed efficienza operativa.
Crittografia asimmetrica: principi e algoritmi principali
I crittosistemi a chiave simmetrica sono estremamente efficienti, rapidi in esecuzione e, se correttamente configurati con chiavi sufficientemente lunghe e modalità operative adeguate, risultano computazionalmente impraticabili da violare. Tuttavia, essi presentano una debolezza strutturale fondamentale: la necessità di condividere preventivamente una chiave segreta attraverso un canale sicuro.
Il problema della distribuzione delle chiavi
Il problema dello scambio della chiave limita fortemente l’utilizzo dei sistemi simmetrici nelle comunicazioni aperte.
Esempio
Ada e Brian comunicano utilizzando una chiave segreta condivisa. Criminal intercetta il traffico sul canale di comunicazione non sicuro. Se, prima o poi, riesce a risalire alla chiave, sarà in grado di decifrare tutti i messaggi futuri.
Per mitigare il rischio, la chiave dovrebbe essere cambiata frequentemente, ma lo scambio della nuova chiave presenta lo stesso problema dello scambio del messaggio: se la chiave precedente è già compromessa, anche quella nuova lo sarà.
Il problema diventa ancora più complesso quando:
- Ada deve comunicare con più interlocutori;
- ogni coppia di comunicanti richiede una chiave diversa;
- non esiste alcuna comunicazione precedente tra le parti.
Sarebbe quindi necessario un sistema che permetta di cifrare un messaggio senza aver mai condiviso una chiave segreta. Fino alla metà degli anni ’70 questo obiettivo era ritenuto impossibile. Come osservò Bruce Schneier:
«Se l’aveste chiesto a tutti i crittografi del mondo nel 1975, vi avrebbero risposto che era impossibile».
Nascita della crittografia asimmetrica
Nel 1976 Whitfield Diffie e Martin Hellman dimostrarono teoricamente la possibilità di realizzare un sistema di questo tipo. L’anno successivo Rivest, Shamir e Adleman ne fornirono una concreta implementazione pratica con l’algoritmo RSA.
Un crittosistema asimmetrico si basa su due concetti fondamentali:
- l’uso di due chiavi distinte, matematicamente correlate;
- l’impiego di funzioni matematiche complesse, anziché semplici sostituzioni o permutazioni.
Chiave pubblica e chiave privata
Ogni utente dispone di:
- una chiave privata, che deve rimanere segreta;
- una chiave pubblica, che può essere distribuita liberamente.
Un messaggio cifrato con una delle due chiavi può essere decifrato solo utilizzando l’altra. Pur essendo matematicamente collegate, deve essere computazionalmente impossibile ricavare una chiave conoscendo l’altra.
In questo modo nessuna informazione segreta deve essere trasmessa sul canale di comunicazione.
Requisiti di un crittosistema asimmetrico
Diffie e Hellman individuarono i requisiti fondamentali che un crittosistema asimmetrico deve soddisfare:
- facilità di generazione di una coppia di chiavi pubblica/privata;
- facilità computazionale nel cifrare un messaggio usando la chiave pubblica;
- impossibilità computazionale di ricavare la chiave privata dalla chiave pubblica (funzione one-way);
- facilità computazionale nel decifrare il messaggio usando la chiave privata (funzione trapdoor one-way);
- impossibilità computazionale di risalire al testo in chiaro conoscendo solo l’algoritmo e la chiave pubblica;
- possibilità (opzionale ma utile) di utilizzare le chiavi anche in ordine inverso.
Confidenzialità con crittografia asimmetrica
Per garantire la confidenzialità, il mittente cifra il messaggio utilizzando la chiave pubblica del destinatario.
Schema operativo
- Ada e Brian generano ciascuno una coppia di chiavi (pubblica e privata);
- rendono pubblica la propria chiave pubblica;
- Ada cifra il messaggio usando la chiave pubblica di Brian;
- Brian decifra il messaggio usando la propria chiave privata.
Anche se Criminal intercetta il crittogramma e conosce l’algoritmo e la chiave pubblica di Brian, non è in grado di risalire al testo in chiaro senza la chiave privata.

Autenticazione e firma digitale
Se il sistema consente di applicare le chiavi anche in ordine inverso, la crittografia asimmetrica può garantire anche l’autenticità del mittente.
In questo caso:
- il mittente cifra il messaggio con la propria chiave privata;
- il destinatario lo decifra con la chiave pubblica del mittente.
Se la decifratura ha successo, il destinatario è certo che il messaggio proviene effettivamente dal titolare della chiave privata. Questo è il principio alla base della firma digitale.

Tale schema garantisce anche l’integrità dei dati: qualsiasi modifica al messaggio invalida il processo di decifratura.
Va però osservato che non garantisce la confidenzialità, poiché chiunque possieda la chiave pubblica può decifrare il messaggio.
Confidenzialità e autenticazione combinate
Per ottenere sia confidenzialità sia autenticazione, è possibile combinare entrambi i meccanismi:
Da T = testo in chiaro:
- 1)il mittente firma il messaggio con la propria chiave privata ottenendo X
- 2)Il mittente cifra il messaggio firmato con la chiave pubblica del destinatario ottenendo Y
- 3)Il destinatario decifra Y con la propria chiave privata ottenendo X
- 4)Il destinatario decifra X con la chiave pubblica del mittente ottenendo T, il testo in chiaro
Questo schema è ampiamente utilizzato nei protocolli di sicurezza moderni.

L’algoritmo RSA: funzionamento matematico e applicazioni
L’algoritmo RSA (Rivest-Shamir-Adleman), pubblicato nel 1977, è il primo crittosistema asimmetrico ad aver trovato un’ampia applicazione pratica ed è tuttora uno dei pilastri della sicurezza informatica moderna. Il suo funzionamento si basa su solide proprietà matematiche dei numeri primi e sull’elevata difficoltà computazionale di un problema noto come fattorizzazione di grandi numeri interi.
RSA viene utilizzato principalmente per:
- cifratura asimmetrica;
- firma digitale;
- scambio sicuro delle chiavi nei protocolli di sicurezza.
Fondamento matematico di RSA
La sicurezza di RSA si basa sull’osservazione che:
- moltiplicare due grandi numeri primi è computazionalmente semplice;
- fattorizzare il loro prodotto, se i numeri sono sufficientemente grandi, è computazionalmente impraticabile con le tecnologie attuali.
Questa asimmetria computazionale costituisce la base del sistema.
Generazione delle chiavi RSA
La generazione delle chiavi è una fase cruciale e avviene secondo i seguenti passaggi:
-
Scelta di due numeri primi
Si scelgono due grandi numeri primi distinti: p e q ad esempio p=11, q = 17 -
Calcolo del modulo
Si calcola: n=p⋅q –>n=11⋅17 = 187. Il valore n sarà utilizzato sia nella chiave pubblica sia in quella privata. -
Calcolo della funzione di Eulero
Si calcola la funzione di Eulero: φ(n)=(p−1)(q−1) –>φ(187)=(11−1)(17−1) = 10 * 16 = 160 -
Scelta dell’esponente pubblico “e”
Si sceglie un intero e tale che:- 1<e<φ(n)
- e deve essere primo rispetto a φ(n)
Esempio: e = 7 -
Calcolo dell’esponente privato “d”
Si calcola d, inverso moltiplicativo di e modulo φ(n):
(d⋅e) mod ϕ(n)=1
Esempio d = 23 infatti 23*7 = 161 e 161 mod(160) = 1
Chiavi pubblica e privata
A questo punto si ottengono:
- Chiave pubblica: (n,e)
- Chiave privata: (n,d)
Il valore d deve rimanere segreto. La conoscenza di n ed e non deve permettere di ricavare d in tempi computazionalmente accettabili.
Cifratura e decifratura con RSA
Cifratura
Dato un messaggio M (convertito in un numero intero minore di n), il crittogramma C si ottiene applicando: C=Me mod( n)
L’operazione viene eseguita utilizzando la chiave pubblica del destinatario.
Decifratura
Il destinatario utilizza la chiave privata per recuperare il messaggio originale: M=Cd mod (n)
Grazie alle proprietà dell’aritmetica modulare, il risultato coincide con il messaggio originale.
Vediamo ora un esempio pratico: Bob vuole inviare il messaggio “CIAO” ad Alice con p = 11, q = 17, n = 187, e = 7, d = 23:
| Carattere | ASCII (M) | Cifrato (C) = Me mod( n) |
|---|---|---|
| c | 99 | 176 |
| i | 105 | 96 |
| a | 97 | 92 |
| o | 111 | 155 |
| Cifrato (C) | Decifrato (M) = Cd mod (n) | Carattere |
|---|---|---|
| 176 | 99 | c |
| 96 | 105 | i |
| 92 | 97 | a |
| 155 | 111 | o |
Perché RSA è sicuro
La sicurezza di RSA dipende dalla difficoltà di calcolare ddd senza conoscere ppp e qqq.
Per ottenere ddd, un attaccante dovrebbe:
- fattorizzare nnn nei suoi fattori primi;
- calcolare φ(n)varphi(n)φ(n);
- determinare l’inverso moltiplicativo di eee.
Con chiavi moderne (2048 o 3072 bit), questa operazione è considerata computazionalmente impraticabile.
Limiti dei sistemi asimmetrici e crittosistemi ibridi
I crittosistemi asimmetrici sono più lenti rispetto a quelli simmetrici, poiché la complessità computazionale cresce molto rapidamente all’aumentare della lunghezza della chiave. Nella pratica, le chiavi necessarie per garantire un’adeguata sicurezza rendono la cifratura diretta dei dati inefficiente.
Per questo motivo vengono impiegati principalmente per:
- firma digitale;
- autenticazione;
- scambio sicuro delle chiavi.
Crittosistemi ibridi
Un crittosistema ibrido combina crittografia asimmetrica e simmetrica:
- la crittografia asimmetrica viene utilizzata per scambiare una chiave simmetrica;
- la crittografia simmetrica viene utilizzata per cifrare i dati.
La chiave simmetrica generata viene detta chiave di sessione ed è tipicamente diversa per ogni comunicazione.
Procedura di invio
- Brian ottiene la chiave pubblica di Ada;
- genera una chiave simmetrica casuale K;
- cifra il messaggio con K;
- cifra K con la chiave pubblica di Ada;
- invia entrambi i crittogrammi.
Procedura di ricezione
- Ada decifra K con la propria chiave privata;
- usa K per decifrare il messaggio.
Considerazioni di sicurezza
Un sistema ibrido non è mai più sicuro del suo componente più debole. Tuttavia, anche nel caso in cui un attaccante riuscisse a decifrare una chiave di sessione, potrebbe leggere un solo messaggio, rendendo l’attacco poco vantaggioso.

Lascia un commento