La crittografia, semplice e pratica
Premessa
Con questo articolo inauguro l’area tematica legata alla sicurezza informatica. Ne presento gli aspetti pratici, utili nel contesto lavorativo ma anche personale, oltre che i fondamenti scientifici e le tecniche sottostanti, necessari per comprendere fino in fondo a cosa stiamo affidando la nostra sicurezza.
L’obiettivo è trarre spunti e capire un po’ meglio cosa si cela dietro le notizie ricorrenti che negli ultimi tempi inondano notiziari, Web e rimbalzano, talvolta male, sui social.
Per ogni tecnica o strumento troverai il contesto di riferimento, link alle risorse utili e ai documenti di specifica più autorevoli. I temi degli articoli seguiranno un ordine sparso, seguendo idee, suggerimenti, esperienze e lavori correnti che avrò il piacere di trattare di volta in volta.
Come sempre, ti prego di lasciarmi un commento qui o di scrivermi direttamente al mio indirizzo email dario.carotenuto@gmail.com: mi farebbe piacere sapere cosa ne pensi, se ci sono argomenti di cui vorresti leggere e come migliorare contenuti o forma di presentazione. Grazie!
Iniziamo
Questo primo articolo è dedicato ad uno degli argomenti più ricorrenti quando si parla di sicurezza delle informazioni: la crittografia.
Comunicazioni telefoniche, accesso a documenti online, home banking, pagamento di tasse, acquisti online,… sono tutti esempi di attività che non potremmo condurre senza la crittografia o, almeno, non senza essere disposti a correre un rischio maggiore.
La crittografia è la scienza che studia come rendere le informazioni sicure, ossia confidenziali ed integre. La confidenzialità è un concetto simile alla privacy ma ne rappresenta solo una componente: si riferisce alla capacità di proteggere dati da chi non è autorizzato a leggerli. L’integrità invece si riferisce alla capacità di proteggere dati da modifiche non autorizzate.
Per proteggere con la crittografia una comunicazione bisogna trasformarla in qualcosa di equivalente ma non intellegibile e non facilmente riconducibile all’originale: è questo l’atto del cifrare. Decifrare è, invece, l’operazione inversa: da una comunicazione cifrata si ottiene nuovamente la sua forma originaria, chiara ed intellegibile. Un procedimento ben definito per cifrare e decifrare dati è detto algoritmo crittografico e, per funzionare, può richiedere l’utilizzo di una, nessuna o più chiavi, concettualmente simili alle password che siamo abituati ad utilizzare.
Per definire un sistema crittografico bisogna disporre di un algoritmo crittografico, la definizione dello spazio di chiavi possibili, dell’insieme di messaggi in chiaro e dell’insieme dei possibili messaggi cifrati.
Mentre la crittografia si occupa di costruire tecniche sicure per eseguire cifratura e decifratura, la crittoanalisi è la scienza che si occupa di trovare espedienti e tecniche per rompere tale sicurezza rendendo inefficaci gli schemi di cifratura.
Crittografia e crittoanalisi fanno parte della più ampia scienza della crittologia.
Inquadrati i termini principali, divertiamoci ora con alcuni sistemi di crittografia che hanno fatto storia.
L’esigenza di comunicare in modo ‘confidenziale’, infatti, è antica e, pertanto, ritroviamo tecniche di crittografia in ogni epoca. Non vorrei trasformare questo articolo in un estratto di libro di storia, per cui cito solo un paio di casi notevoli che oggi fanno un po’ sorridere ma che ripropongo perché ci consentono di prendere pratica ed “iniziare a giocare” con la crittografia.
Il cifrario Cesare
Il cifrario Cesare, così detto perché pare sia stato adoperato da Giulio Cesare, si basa sulla trasposizione delle lettere dell’alfabeto: ad ogni lettera del testo in chiaro si abbina un’altra lettera per generare il corrispondente testo cifrato. L’abbinamento è semplice: avviene assegnando, ad ogni lettera, la n-esima successiva.
In particolare, il cifrario Cesare effettuava uno slittamento di 3 lettere in avanti nell’alfabeto, per cui una “A” viene cifrata in “D”, una “B” in “E” e così via. Ovviamente, per decifrare basta invertire lo slittamento.
Quindi, ora sai dirmi cosa intendo per “VHFUHW” ?
Il cifrario Jefferson
Un altro cifrario storico, ideato alla fine del ‘700 dal presidente americano Thomas Jefferson ed adoperato fino ai primi del ‘900, replica n volte il meccanismo di trasposizione alla base del Cifrario Cesare: il testo da cifrare viene suddiviso in blocchetti da n caratteri e, per ciascun carattere presente in una particolare posizione, si utilizza una corrispondete trasposizione di lettere, non un semplice slittamento (shift) nell’ordine alfabetico come nel cifrario di Cesare.
Per semplificare la codifica e la decodifica con questo sistema Thomas Jefferson ideò il rullo presente nella figura in basso in cui vi sono n dischi, ciascuno dei quali riporta, lungo la circonferenza, una particolare permutazione delle lettere dell’alfabeto. Per cifrare bisognava semplicemente ruotare ciascuno degli n dischi in modo da ottenere su di una verticale prefissata il messaggio in chiaro. Fatto questo bastava poi leggere, su un’altra verticale, il messaggio cifrato. In questo cifrario la chiave per decifrare un messaggio corrisponde alla disposizione dei cilindri usati per comporre il rullo.
L’Enigma della seconda guerra mondiale
L’ultimo esempio storico riguarda un cifrario leggendario la cui sicurezza è stata sfidata e vinta da alcune delle menti più brillanti del secolo scorso sancendo, oltre che la vittoria degli alleati, la nascita dei moderni computer.
Per chi è appassionato di ricostruzioni cinematografiche consiglio di vedere il recente film “The imitation game” dedicato alla vita di Alan Turing, geniale matematico inglese, in cui si ricostruiscono i fatti legati al periodo in cui lavorò come crittoanalista per l’Impero britannico.
Come funziona Enigma?
Alla base di Enigma vi è un meccanismo molto complesso ma, l’essenza del funzionamento, volendo semplificare molto, è basato sulla connessione in cascata di 3 rotori, ciascuno dei quali attiva una particolare trasposizione alfabetica che incide a cascata sul rotore successivo, in base a dei collegamenti elettrici che l’operatore doveva impostare prima di avviare la cifratura/decifratura. Oltre a questo meccanismo base si aggiungevano altri accorgimenti, che potresti approfondire facilmente in rete, anche per il modello specifico usato durante la seconda guerra mondiale.
Se ti va, puoi anche divertirti ad inviare messaggi cifrati “stile” 2a guerra mondiale ai tuoi amici o collaboratori. Ho trovato un simulatore in javascript disponibile gratuitamente su Web che, una volta scelto il modello di Enigma e condivise le impostazioni con il tuo interlocutore, ti consentirà di cifrare e inviare i tuoi messaggi che un tempo sarebbero stati a prova di “bomba”.. Ops, quasi!
Ecco il link:
https://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20_en.html
Ed ecco un testo che ho cifrato per te usando il modello M3 nella sua configurazione di default:
pqzzf qjpfm ejsqu xbkwh txaae xqtgi yprst iy
Riesci a decifrarlo?
Conclusioni
Siamo solo al primo articolo ma abbiamo già descritto i termini ed i concetti base legati al mondo della crittografia e visto 3 esempi storici di sistemi crittografici o cifrari. Ci siamo divertiti con alcuni esempi ed un “enigma” impostando lo sfondo necessario per trattare i moderni sistemi a chiave simmetrica, asimmetrica e le funzioni di hashing. Vederemo queste cose in un prossimo articolo, spero a brevissimo ma, intanto, cosa ne pensi? Ciao!
Related Posts
