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.
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
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.
Classificazione dei sistemi crittografici
I sistemi crittografici si classificano secondo tre criteri indipendenti che è importante tenere distinti:
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:
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).
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.
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.
Testo in chiaro: ILCIFRARIODIVIGENEREUSAALFABETIDIVERSI Chiave (ripetuta): ESEMPIODICHIAVELUNGAESEMPIODICHIAVELUN Crittogramma: NEHVVAPVRRLRWELQISYFZLFNBOPFNWQMJRJDNW
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 ✓
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.
- Incondizionatamente sicuro (proven secure)
- Nessun attacco matematico possibile
- Usato durante la Guerra Fredda (hotline USA-URSS)
- 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:
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.
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.
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
Non può essere violata nemmeno con risorse infinite. Solo il One-Time Pad raggiunge questo livello. È un caso teorico, non pratico su larga scala.
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.
- 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