LA MATEMATICA DEI SEGRETI
Sicuramente ti sarà capitato di scrivere un messaggio e desiderare ardentemente che nessuno, a parte il destinatario, lo legga. Non potendo avere la certezza che ciò accada, potresti aver avuto questa idea: io e il destinatario potremmo concordare un “alfabeto” in modo che nessun altro sia in grado di capire cosa c’è scritto nel messaggio!
Questa è tra le tecniche più antiche del mondo (probabilmente tanto la scrittura) e si chiama crittografia, l’arte di nascondere un messaggio in modo da renderne (almeno apparentemente) incomprensibile il contenuto. Un tempo questa pratica era comune solo nelle classi sociali più alte, ma con l’avvento dell’era dell’informazione la situazione è cambiata: infatti tutti hanno bisogno di segretezza per completare le più semplici attività quotidiane, come parlare con un amico oppure comprare un prodotto su internet con la carta di credito. Alla base degli algoritmi di crittografia c’è, ovviamente, la matematica.
Ormai questi algoritmi sono diventati talmente complicati da essere incomprensibili a chi non è del settore, perciò in questo articolo ti spiegherò uno dei primi metodi con cui i messaggi venivano nascosti, l’algoritmo di Cesare.
Svetonio in “Vite dei Cesari” racconta:
”Se doveva fare delle comunicazioni segrete, le scriveva in codice, cioè con l’ordine delle lettere così disposto che nessuna parola potesse essere ricostruita: se qualcuno avesse voluto capire il senso e decifrare, avrebbe dovuto cambiare la quarta lettera degli elementi, cioè D per A e così via per le rimanenti”
Dunque ogni lettera del messaggio originale è sostituita da un’altra lettera. Si parla di “alfabeto chiaro” per indicare quello utilizzato nel messaggio originale e di “alfabeto cifrante” per indicare quello che si ottiene rimpiazzando ogni lettera dell’alfabeto chiaro con la lettera che lo sostituisce nel crittogramma.
In generale l’algoritmo di Cesare consiste nel trasformare una sequenza di lettere (la frase originale) in un’altra, in cui ogni lettera viene sostituita dalla lettera che la segue di x posizioni nell’alfabeto di riferimento. Nell’alfabeto italiano, di 21 lettere, sono possibili 20 cifrature di questo tipo, a seconda del valore di x (compreso tra 1 e 21). Si può schematizzare un processo di cifratura introducendo due concetti:
- l’algoritmo è il metodo crittografico generale, il quale può essere considerato una funzione matematica che, applicata ad ogni lettera di un testo, la trasforma secondo un criterio preciso: nel caso della cifratura di Cesare, l’algoritmo prescrive che il posto di ogni lettera dell’alfabeto chiaro sia preso da una lettera dell’alfabeto cifrante, e che l’alfabeto cifrante consista in una qualunque riorganizzazione dell’alfabeto chiaro.
- la chiave è il parametro concreto utilizzato per cifrare o codificare il messaggio: fornisce i dettagli particolari per poter applicare un algoritmo. Nel caso della cifratura di Cesare, la chiave consiste nel numero di posizioni più avanti che occupa la lettera con la quale sostituiamo quella del messaggio originale (3)
Ora che è chiaro cosa significhi “cifrare” un messaggio, consideriamo il processo inverso, cioè il tentativo di comprendere tale messaggio. Si tratta di un processo che può essere legale (decifratura), o fraudolenta (decrittazione), nel caso in cui le chiavi non sono note a priori. La crittoanalisi è l’analisi di un testo cifrato condotta per estrarne il contenuto informativo prescindendo dalla chiave: essa è condotta per scopo fraudolento o per consolidare la sicurezza di un algoritmo.
È in quest’ultimo processo che si manifesta l’importanza della chiave, più che dell’algoritmo. A priori, infatti, per ottenere il messaggio originale non si può prescindere dalla chiave: un’eventuale spia che intercetti il messaggio cifrato può avere forti sospetti sul tipo di algoritmo utilizzato, ma finchè non possiede la chiave è impossibilitato a decifrare il crittogramma. Nel caso della cifratura di Cesare (nell’alfabeto italiano), le chiavi possibili sono solo 21 e la decrittazione può essere effettuata controllando le possibili chiavi una per una, in un tempo umano dunque. Se, invece, viene utilizzato l’algoritmo più generale che ammette la possibilità di generare un alfabeto cifrante mediante una qualsiasi ricombinazione dell’alfabeto italiano, ecco che il numero delle chiavi aumenta significativamente: controllare tutti i miliardi di miliardi di miliardi delle chiavi possibili non è un impresa di facile realizzazione.
LA CRITTOGRAFIA SIMMETRICA
La cifratura di Cesare è l’esempio lampante di crittografia simmetrica (o convenzionale), in cui la chiave utilizzata per la cifratura del messaggio e quella utilizzata per la decifrazione sono la stessa, come schematizzato in questa immagine.
In generale, detta C una lettera del messaggio cifrato, P la corrispondente lettera di quello in chiaro e K la chiave (nel caso descritto da Svetonio 3), l’algoritmo che sottende il cifrario di Cesare è il seguente
\(C= (P+K) \mod 26\) , dove \(\mod 26\) fa riferimento al fatto che se $P+K$ superano $26$, è necessario iniziare a contare nuovamente da $1$ (come in un orologio $11+2=1 \mod 12$).
Per $K=13$ si ottiene un particolare tipo di cifrario di Cesare noto come Rot13, usato ancora oggi da Internet per cifrare i nostri messaggi offensivi.
L’algoritmo per decifrare i messaggi si ricava da quello di cifratura ed è
\(P=(C-K) \mod 26\).
Si può notare che il procedimento di decifrazione è semplicemente il procedimento di cifratura eseguito al contrario, in cui la chiave ($K$) è rimasta uguale: si tratta pertanto di una tecnica di scrittura segreta simmetrica.
IL PROBLEMA DELL’ALGORITMO DI CESARE
Mettiamo un attimo da parte il problema della distribuzione della chiave. In effetti questo non è un problema da poco: come fare a comunicare al destinatario la chiave con cui decifrare? Bisogna prestare attenzione che anche questo messaggio non venga intercettato. Tuttavia non è di questo che ci vogliamo occupare.
Supponiamo che un messaggio sufficientemente lungo venga intercettato: la nostra tranquillità deriva dal fatto che chi lo ha intercettato non possiede la chiave. Tuttavia stiamo sottovalutando un altro aspetto importante: la lunghezza del messaggio, che mette in luce un punto debole dell’algoritmo di Cesare. Infatti la frequenza con cui una lettera si presenta nel messaggio originale è la stessa con cui la lettera che la sostituisce si manifesta nel messaggio cifrato.
Faccio un banale esempio, se nel messaggio cifrato la lettera $C$ si presenta poche volte, allora è improbabile che questa sostituisca una vocale. Al contrario, è possibile fare ipotesi su quali siano le vocali, analizzando le lettere che compaiono più frequentemente. Se disponiamo di un testo di media lunghezza, e della frequenza con cui la lettera \(E\) si presenta in un discorso in lingua italiana, possiamo cercare di indovinare quale sia la sua lettera corrispondente. Trovata una lettera, abbiamo concluso, perchè siamo riusciti a individuare la chiave $K$, e il messaggio viene scoperto. Questa tecnica si chiama analisi delle frequenze, ed è stata inventata dai seguaci di Maometto nel IX secolo.
Questo è solo un assaggio della battaglia tra crittanalisti e inventori di codici, che è destinata a durare molto a lungo. Le sorti di questa battaglia determineranno chi avrà la meglio, se la privacy dei cittadini o la sorveglianza di massa.
Questa era “La matematica dei segreti”! 😉
Speriamo che tu possa aver trovato utile questo nostro articolo. Se hai domande o commenti non esitare a scrivere qui sotto.
No Comments