Crittografia asimmetrica: RSA e sistemi ibridi

📋 Obiettivi di apprendimento
Spiegare il problema della distribuzione delle chiavi nei sistemi simmetrici e come la crittografia asimmetrica lo risolve
Descrivere i requisiti di un crittosistema asimmetrico secondo Diffie-Hellman e distinguere i casi d’uso di confidenzialità e autenticazione
Eseguire la generazione delle chiavi RSA e calcolare cifratura/decifratura su un esempio numerico concreto
Spiegare il funzionamento dei crittosistemi ibridi e perché combinano crittografia asimmetrica e simmetrica
📄
Slides
slide complete con diagrammi
🔬
Lab
Openssl – crittografia asimmetrica RSA
GitHub →

Il problema della distribuzione delle chiavi

La crittografia simmetrica è efficiente e sicura — ma ha un difetto strutturale fondamentale: mittente e destinatario devono condividere la stessa chiave segreta prima di poter comunicare. Come si scambiano questa chiave in modo sicuro su un canale non sicuro?

Il paradosso dello scambio delle chiavi:
👤
Ada
canale non sicuro
⟵ K ⟶
Criminal intercetta!
👤
Brian

Se usano un canale sicuro per scambiarsi la chiave, potrebbero usare quel canale direttamente per il messaggio. Se il canale non è sicuro, la chiave viene compromessa. Il problema si amplifica quando Ada deve comunicare con decine di interlocutori diversi: servirebbe una chiave diversa per ognuno.

📌 La citazione di Bruce Schneier (1996)

“Se l’aveste chiesto a tutti i crittografi del mondo nel 1975, vi avrebbero risposto che era impossibile cifrare un messaggio senza aver prima condiviso una chiave segreta.”

La rivoluzione — crittografia asimmetrica

Nel 1976 Whitfield Diffie e Martin Hellman pubblicarono “New Directions in Cryptography”, dimostrando teoricamente la possibilità di scambiare informazioni in modo sicuro senza mai condividere un segreto. L’anno successivo, nel 1977, Rivest, Shamir e Adleman ne fornirono la prima implementazione pratica: l’algoritmo RSA.

L’idea rivoluzionaria è usare due chiavi matematicamente collegate ma diverse:

🔓 Chiave Pubblica

Può essere distribuita liberamente a chiunque. È come pubblicare il proprio numero di telefono sull’elenco.

  • Chiunque può cifrare messaggi per te
  • Chiunque può verificare la tua firma digitale
🔐 Chiave Privata

Rimane segreta e non lascia mai il tuo sistema. Come la chiave fisica di casa — non si consegna a nessuno.

  • Solo tu puoi decifrare messaggi cifrati con la tua chiave pubblica
  • Solo tu puoi firmare digitalmente documenti
📌 Proprietà fondamentale

Un messaggio cifrato con la chiave pubblica può essere decifrato solo con la corrispondente chiave privata — e viceversa. Nonostante le due chiavi siano matematicamente collegate, deve essere computazionalmente impossibile ricavare la chiave privata conoscendo quella pubblica.

Requisiti di un crittosistema asimmetrico (Diffie-Hellman)

1

Generazione di una coppia di chiavi pubblica/privata computazionalmente facile

2

Cifratura con la chiave pubblica computazionalmente facile

3

Ricavare la chiave privata dalla chiave pubblica computazionalmente impossibile — funzione one-way

4

Decifratura con la chiave privata computazionalmente facile — funzione trapdoor one-way

5

Risalire al testo in chiaro conoscendo solo algoritmo e chiave pubblica computazionalmente impossibile

I tre scenari d’uso della crittografia asimmetrica

Scenario 1 — Confidenzialità

Ada vuole inviare un messaggio segreto a Brian che solo Brian possa leggere:

1

Brian pubblica la sua chiave pubblica (visibile a tutti)

2

Ada cifra il messaggio T con la chiave pubblica di Brian → ottiene X

3

Ada invia X sul canale non sicuro

4

Brian decifra X con la sua chiave privata → ottiene T

Criminal può intercettare X e conosce la chiave pubblica di Brian — ma non può decifrare senza la chiave privata che Brian non ha mai trasmesso.

Scenario 2 — Autenticazione e Firma Digitale

Brian vuole provare che un messaggio proviene davvero da lui (autenticità) e che non è stato modificato (integrità):

1

Brian cifra il messaggio T con la sua chiave privata → firma digitale X

2

Chiunque decifra X con la chiave pubblica di Brian e ottiene T

3

Se la decifratura ha successo → il messaggio proviene certamente dal titolare della chiave privata di Brian

⚠️ Questo schema non garantisce la confidenzialità: chiunque possiede la chiave pubblica può leggere il messaggio. Garantisce solo autenticità e integrità.

Scenario 3 — Confidenzialità + Autenticazione combinate

Per ottenere entrambe le garanzie si applicano le chiavi in sequenza:

Mittente Ada:
  X = C(Kpriv-Ada, T)  ← firma con chiave privata di Ada (autenticità)
  Y = C(Kpub-Brian, X)  ← cifra con chiave pubblica di Brian (confidenzialità)
Destinatario Brian:
  X = D(Kpriv-Brian, Y)  ← decifra con chiave privata di Brian
  T = D(Kpub-Ada, X)   ← verifica firma con chiave pubblica di Ada

L’algoritmo RSA

L’RSA (Rivest-Shamir-Adleman, 1977) è il primo e ancora il più diffuso crittosistema asimmetrico. La sua sicurezza si basa sull’asimmetria computazionale tra due operazioni:

FACILE

Moltiplicare due grandi numeri primi
p × q = n

DIFFICILISSIMO

Fattorizzare n per trovare p e q
n → p × q = ?

Generazione delle chiavi RSA — passo per passo

Esempio numerico con p = 11, q = 17
1
Scelta dei primi
p = 11   q = 17

In produzione sono numeri di centinaia di cifre decimali

2
Calcolo del modulo n
n = p × q = 11 × 17 = 187

n è pubblico — fa parte di entrambe le chiavi

3
Funzione di Eulero φ(n)
φ(n) = (p-1)(q-1) = 10 × 16 = 160

Conta i numeri ≤ n coprimi con n — rimane segreto

4
Esponente pubblico e
e = 7  [MCD(e, φ(n)) = MCD(7, 160) = 1 ✓]

e deve essere coprimo con φ(n) e 1 < e < φ(n)

5
Esponente privato d
d = 23  [23 × 7 = 161 = 1 × 160 + 1 → (d×e) mod φ(n) = 1 ✓]

d è l’inverso moltiplicativo di e modulo φ(n) — rimane segreto

🔓 Chiave PUBBLICA
(n, e) = (187, 7)

Distribuita liberamente

🔐 Chiave PRIVATA
(n, d) = (187, 23)

Mai rivelata — protetta con cura

Cifratura e decifratura RSA

Cifratura (con chiave pubblica)
C = Me mod n

M è il messaggio convertito in numero intero con M < n

Decifratura (con chiave privata)
M = Cd mod n

Le proprietà dell’aritmetica modulare garantiscono M = (Me)d mod n

Esempio numerico completo — Bob cifra “CIAO” per Alice

Parametri: n=187, e=7 (pub), d=23 (priv)
CarattereASCII (M)Cifrato C = M⁷ mod 187Decifrato M = C²³ mod 187
c9917699 → c ✓
i10596105 → i ✓
a979297 → a ✓
o111155111 → o ✓
Verifica: 99⁷ mod 187 = 176  |  176²³ mod 187 = 99 ✓ — le proprietà dell’aritmetica modulare garantiscono il round-trip perfetto

Perché RSA è sicuro — e quali sono i suoi limiti

🔐 Sicurezza

Per ricavare d (chiave privata) un attaccante deve fattorizzare n in p×q. Con chiavi da 2048 o 4096 bit (standard attuale), questo richiede tempo superiore all’età dell’universo con tecnologia classica.

⚠️ Limiti

RSA è molto più lento di AES: cifrare 1 MB con RSA-2048 richiede secondi, con AES-256 microsecondi. Non adatto per cifrare grandi quantità di dati direttamente.

⚠️ RSA e il calcolo quantistico

L’algoritmo di Shor (1994) dimostra che un computer quantistico sufficientemente potente potrebbe fattorizzare grandi numeri in tempo polinomiale, rendendo RSA insicuro. Per questo il NIST ha avviato la standardizzazione di algoritmi post-quantistici (CRYSTALS-Kyber, CRYSTALS-Dilithium) che resistono anche agli attacchi quantistici. RSA rimane sicuro con tecnologia classica attuale, ma la transizione è già iniziata.

Crittosistemi ibridi

La soluzione definitiva combina i vantaggi di entrambi i mondi: la crittografia asimmetrica per scambiare la chiave in modo sicuro, e la crittografia simmetrica (AES) per cifrare i dati in modo efficiente. Questo è il modello alla base di TLS, HTTPS, SSH e di quasi tutti i protocolli sicuri moderni.

Schema del crittosistema ibrido
📤 Procedura di INVIO (Brian → Ada)
1

Brian ottiene la chiave pubblica di Ada

2

Genera una chiave di sessione K (AES, 256 bit) casuale e unica

3

Cifra il messaggio con K tramite AES → crittogramma C₁

4

Cifra K con la chiave pubblica di Ada tramite RSA → C₂

5

Invia C₁ + C₂ ad Ada sul canale non sicuro

📥 Procedura di RICEZIONE (Ada)
1

Ada riceve C₁ (messaggio cifrato) e C₂ (chiave cifrata)

2

Decifra C₂ con la sua chiave privata RSA → ottiene K

3

Decifra C₁ con K tramite AES → messaggio originale ✓

Criminal può intercettare C₁ e C₂ ma non conosce la chiave privata di Ada → non può decifrare K → non può decifrare il messaggio ✓
Confronto — perché il sistema ibrido è la soluzione ottimale
CaratteristicaSolo AES (simmetrico)Solo RSA (asimmetrico)Sistema Ibrido
Distribuzione chiave❌ Problema irrisolto✅ Nessun problema✅ RSA per la chiave
Velocità cifratura dati✅ Molto veloce❌ Molto lenta✅ AES per i dati
Usato inDisco, archiviFirma digitale, piccoli datiTLS, HTTPS, SSH, S/MIME
📌 Riepilogo — Punti chiave
  • La crittografia asimmetrica risolve il problema della distribuzione delle chiavi usando una coppia pubblica/privata matematicamente collegata
  • Chiave pubblica del destinatario = confidenzialità; chiave privata del mittente = autenticità; entrambe combinate = confidenzialità + autenticità
  • RSA si basa sulla difficoltà computazionale della fattorizzazione di grandi numeri. Chiavi consigliate oggi: 2048 o 4096 bit
  • RSA è lento per grandi quantità di dati → i sistemi ibridi usano RSA solo per scambiare la chiave di sessione AES
  • Il calcolo quantistico (algoritmo di Shor) minaccia RSA — la transizione verso algoritmi post-quantistici è già in corso

Lascia un commento