Introduzione alla crittografia: storia e classificazione

📋 Obiettivi di apprendimento
Definire il concetto di sistema crittografico e spiegare i suoi elementi fondamentali: testo in chiaro, chiave, crittogramma, funzioni di cifratura e decifratura
Classificare i sistemi crittografici per tipo di trasformazione (sostituzione/trasposizione), modalità di elaborazione (blocchi/flusso) e numero di chiavi (simmetrica/asimmetrica)
Descrivere il cifrario di Cesare, il cifrario Rail Fence e il cifrario di Vigenère, spiegandone il funzionamento con esempi e le rispettive vulnerabilità
Spiegare i principi di Shannon (diffusione e confusione) e la distinzione tra sicurezza incondizionata e computazionale
📄
Slides
Crittografia classica — slide con esempi e tabelle

Introduzione alla crittografia

Sin dall’antichità l’essere umano si è confrontato con il problema di comunicare in modo sicuro su canali non affidabili. Il termine crittografia deriva dal greco kryptós (nascosto) e graphía (scrittura) — letteralmente scrittura nascosta. Indica l’insieme delle tecniche per proteggere le informazioni durante la trasmissione o la conservazione.

📌 Sistema crittografico — definizione formale

Un sistema crittografico è un sistema in cui un mittente trasforma un testo in chiaro T in un crittogramma X mediante una funzione di cifratura C e una chiave K, allo scopo di inviarlo su un canale potenzialmente intercettabile. Il destinatario applica la trasformazione inversa per ricostruire T.

Modello generale di un crittosistema

T
Testo in chiaro
C(K, T)
X
Crittogramma
canale non sicuro
X
Crittogramma
D(K, X)
T
Testo in chiaro
T
testo in chiaro (plaintext)
K
chiave segreta
X = C(K,T)
cifratura
T = D(K,X)
decifratura

La chiave crittografica

La chiave è l’informazione segreta che rende unica la trasformazione crittografica. Nei sistemi informatici moderni è tipicamente una sequenza di bit. La sua lunghezza influisce direttamente sulla sicurezza: una chiave da n bit genera 2n combinazioni possibili da esplorare in un attacco a forza bruta.

Tempo stimato per un attacco brute force — 109 tentativi/secondo
Lunghezza chiaveCombinazioniTempo medioStato
5 bit (Cesare)26Istantaneo❌ Insicuro
56 bit (DES)7,2 × 1016~ 1 anno (hardware 2024)⚠️ Obsoleto
128 bit (AES-128)3,4 × 1038Miliardi di anni✅ Sicuro
256 bit (AES-256)1,2 × 1077Superiore all’età dell’universo✅ Quantistico-resistente

Classificazione dei sistemi crittografici

I sistemi crittografici si classificano secondo tre criteri indipendenti che è importante tenere distinti:

1 — Tipo di trasformazione
Sostituzione

Ogni simbolo del testo in chiaro viene rimpiazzato da un altro simbolo secondo una regola. La struttura del messaggio è preservata, i simboli cambiano.

Trasposizione

I simboli non vengono modificati, ma riorganizzati secondo uno schema. Il contenuto è invariato, l’ordine cambia.

2 — Modalità di elaborazione
Block cipher

Il testo viene diviso in blocchi di dimensione fissa (es. 128 bit) e ogni blocco viene cifrato indipendentemente con la stessa chiave.

Stream cipher

Il testo viene elaborato come flusso continuo bit per bit, combinato con un keystream pseudo-casuale tramite XOR.

3 — Numero di chiavi
Simmetrica

Mittente e destinatario usano la stessa chiave segreta condivisa per cifrare e decifrare. Veloce ma richiede canale sicuro per lo scambio.

Asimmetrica

Ogni utente ha una coppia di chiavi: pubblica (distribuibile) e privata (segreta). Risolve il problema della distribuzione, ma più lenta.

Tipi di attacco crittoanalitico

Un crittoanalista è un attaccante che cerca di recuperare il testo in chiaro o la chiave intercettando le comunicazioni. A seconda delle informazioni disponibili, distinguiamo cinque tipi di attacco:

Tipo di attaccoCosa conosce il crittoanalistaDifficoltà dell’attacco
Ciphertext onlySolo il crittogrammaMassima — scenario più difficile
Known plaintextCoppie (testo chiaro, crittogramma) con la stessa chiaveAlta — usato per violare Enigma
Chosen plaintextPuò scegliere testi in chiaro e osservare i crittogrammiMedia — individua debolezze dell’algoritmo
Chosen ciphertextPuò scegliere crittogrammi e ottenere i testi in chiaroBassa — richiede accesso al sistema
Open key modelInformazioni parziali sulla struttura della chiaveBassa — riduce drasticamente lo spazio di ricerca
📌 Caso storico — Enigma e l’attacco Known Plaintext

La macchina Enigma fu decifrata durante la Seconda Guerra Mondiale dagli analisti di Bletchley Park (tra cui Alan Turing). L’attacco sfruttava il metodo known plaintext: i messaggi tedeschi iniziavano sempre con formule standardizzate (“KEINE BESONDEREN EREIGNISSE” — nessun evento speciale) che fornivano coppie testo chiaro/crittogramma preziose per dedurre la configurazione giornaliera della macchina.

Cifrari classici — sostituzione

Il cifrario di Cesare

Il cifrario di Cesare è il più antico esempio documentato di crittografia simmetrica a sostituzione monoalfabetica. Giulio Cesare lo usava con scorrimento di 3 posizioni. Ogni lettera del testo in chiaro viene sostituita con quella che si trova K posizioni più avanti nell’alfabeto (con riavvolgimento circolare).

Tabella di sostituzione — chiave K = 3
Chiaro:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Cifrato:
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
Esempio — K = 3:
Chiaro: ATTACCARE
Cifrato: DWWDFFDUH
⚠️ Vulnerabilità — spazio delle chiavi banale

Il cifrario di Cesare ha solo 26 chiavi possibili (0–25). Un attaccante può provare tutte le combinazioni in meno di un secondo. Si tratta del caso limite di attacco brute force. Più subdolamente, poiché è un cifrario monoalfabetico, è vulnerabile anche all’analisi delle frequenze: la lettera più frequente nel crittogramma corrisponderà alla lettera più frequente nella lingua (in italiano: ‘E’).

Cifrari classici — trasposizione

Il cifrario Rail Fence (staccionata)

Esempio classico di crittografia per trasposizione: i simboli del testo non vengono modificati ma riordinati. Il testo viene scritto in diagonale su un numero fisso di righe (la chiave) e poi ricomposto leggendo riga per riga.

Esempio — Testo: VEDIAMOCIALLEOTTO  |  Chiave: 4 righe
V. . . . . O. . . . . . E. . . . → riga 1: VOE
. E. . . M. C. . . . L. . O. . . . → riga 2: EMCLO
. . D. A. . . I. . L. . . . T. O. → riga 3: DAILTO
. . . I. . . . . A. . . . . . T. . → riga 4: IAT
Testo cifrato: VOEEMCLODAILTOIAT

Cifrari polialfabetici — il cifrario di Vigenère

Per contrastare l’analisi delle frequenze, nel XV secolo Leon Battista Alberti introdusse i cifrari polialfabetici, che usano più alfabeti di sostituzione diversi. Il più celebre è il cifrario di Vigenère: la chiave è una parola che determina, lettera per lettera, lo scorrimento da applicare.

Esempio di cifratura con Vigenère:
Testo in chiaro:  ILCIFRARIODIVIGENEREUSAALFABETIDIVERSI
Chiave (ripetuta): ESEMPIODICHIAVELUNGAESEMPIODICHIAVELUN
Crittogramma:     NEHVVAPVRRLRWELQISYFZLFNBOPFNWQMJRJDNW
Come si calcola — esempio passo per passo:

La prima I del testo corrisponde alla E nella chiave (posizione 5): I + 5 = N
La I di ALFABETI corrisponde alla H nella chiave (posizione 8): I + 8 = Q
Stessa lettera nel testo in chiaro → lettere diverse nel crittogramma ✓

Sicurezza
La sicurezza dipende dalla lunghezza della chiave. Con chiave = 1 carattere è equivalente a Cesare. Con chiave della stessa lunghezza del testo e mai riutilizzata diventa One-Time Pad — teoricamente inviolabile.

One-Time Pad — sicurezza perfetta

Il One-Time Pad (OTP) è un caso speciale di cifrario a flusso in cui il keystream ha la stessa lunghezza del messaggio, è completamente casuale e non viene mai riutilizzato. Claude Shannon dimostrò nel 1949 che è l’unico sistema crittografico incondizionatamente sicuro.

✅ Vantaggi
  • Incondizionatamente sicuro (proven secure)
  • Nessun attacco matematico possibile
  • Usato durante la Guerra Fredda (hotline USA-URSS)
❌ Limiti pratici
  • La chiave deve essere lunga quanto il messaggio
  • Non riutilizzabile in nessun caso
  • Distribuzione della chiave è il problema irrisolto

I principi di Shannon — diffusione e confusione

Nel 1949 Claude Shannon pubblicò “Communication Theory of Secrecy Systems”, gettando le fondamenta matematiche della crittografia moderna. Individuò due proprietà essenziali per la robustezza di un cifrario:

🌊 Diffusione

Ogni bit del testo in chiaro deve influenzare molti bit del crittogramma. Una singola modifica nel testo in chiaro deve propagarsi su tutto il crittogramma.

Obiettivo: nascondere la relazione statistica tra testo in chiaro e crittogramma
🔀 Confusione

La relazione tra la chiave e il crittogramma deve essere altamente complessa e non lineare. Ogni bit della chiave deve influenzare molti bit del crittogramma.

Obiettivo: rendere impossibile dedurre la chiave conoscendo coppie testo/crittogramma

Questi due principi sono alla base di tutti gli algoritmi moderni come AES, che combina operazioni di sostituzione (confusione) e permutazione (diffusione) in multipli round.

Sicurezza incondizionata vs computazionale

Sicurezza INCONDIZIONATA

Non può essere violata nemmeno con risorse infinite. Solo il One-Time Pad raggiunge questo livello. È un caso teorico, non pratico su larga scala.

Sicurezza COMPUTAZIONALE

Il costo o il tempo necessario per violare il sistema supera il valore dell’informazione protetta. È il modello di tutti i sistemi crittografici moderni: AES, RSA, ecc.

📌 Riepilogo — Punti chiave
  • Un sistema crittografico trasforma T in X usando una chiave K — la chiave è il segreto, non l’algoritmo (principio di Kerckhoffs)
  • I cifrari si classificano per trasformazione (sostituzione/trasposizione), elaborazione (blocchi/flusso) e numero di chiavi (simmetrica/asimmetrica)
  • Il cifrario di Cesare è vulnerabile per forza bruta (26 chiavi) e per analisi delle frequenze — il Vigenère migliora usando chiavi più lunghe
  • Diffusione e confusione di Shannon sono i principi fondamentali dei cifrari robusti moderni
  • La sicurezza computazionale (non incondizionata) è il modello realistico: violare il sistema deve costare più del valore dell’informazione

Lascia un commento