02. Crittografia
La crittografia è una tecnica di rappresentazione di un messaggio in una forma tale che l’informazione in esso contenuta possa essere recepita solo dal destinatario; ciò si può ottenere con due diversi metodi: celando l’esistenza stessa del messaggio o sottoponendo il testo del messaggio a trasformazioni che lo rendano incomprensibile.
La crittografia ha trovato larga applicazione in campo militare, diplomatico e commerciale e il suo sviluppo è stato fortemente condizionato dall'evoluzione delle tecnologie di comunicazione adottate in questi campi. Le tecniche più note sono:
scrittura invisibile, ottenuta mediante l’utilizzo di inchiostri simpatici, ovvero sostanze che, una volta asciugate, risultino invisibili finché non siano sottoposte all'azione di un determinato reagente;
dissimulazione dell’informazione, ottenuta nascondendo il messaggio in un testo il cui significato sia apparentemente estraneo all'informazione da trasmettere;
cifratura del messaggio, consiste nel rappresentare gli elementi di un messaggio (testo in chiaro), mediante gli elementi di un altro sistema di simboli, alfabeto del codice, ottenendo un messaggio in codice o crittogramma.
Cifrario monoalfabetico
L’uso di cifrari per scopi militari è molto antico. Svetonio narra come Cesare usasse nelle sue comunicazioni militari un sistema di cifratura che consisteva nel sostituire ciascuna lettera con quella che la segue di un numero fisso di posizioni nell'alfabeto (cifrario di Cesare). Un sistema di questo tipo si dice monoalfabetico, in quanto ciascun simbolo del testo in chiaro è sostituito da un unico simbolo dell’alfabeto di cifra, a scorrimento. Oggi non è più utilizzato perché estremamente semplice da risolvere.
In particolare, Cesare utilizzava uno spostamento di 3 posizioni (la chiave era dunque 3), secondo il seguente schema.
Cifrario polialfabetico
Nei cifrari polialfabetici, a differenza di come accade con i cifrari monoalfabetici, un dato carattere del testo chiaro (p.es. la A) non viene cifrato sempre con lo stesso carattere, ma con caratteri diversi in base ad una qualche regola, in genere legata ad una parola segreta da concordare.
Vernam
La tecnica di cifratura mediante un algoritmo a cifrario monouso in cui la chiave di cifratura è casuale e ha pari lunghezza del messaggio (cifrario di Vernam o cifrario perfetto) è da ritenersi sicura senza alcun dubbio (infatti la sua inviolabilità è dimostrata matematicamente).
Questo significa che non può esistere nessun procedimento che consenta di risalire al messaggio originale conoscendo esclusivamente il messaggio cifrato.
Tuttavia tale sistema ha un costo di gestione elevatissimo che lo rende il più delle volte impraticabile e trova il suo punto di vulnerabilità nella difficoltà a mantenere segreto il cifrario utilizzato.
In ambito militare è stato effettivamente utilizzato per le comunicazioni con le spie, che venivano equipaggiate di taccuini contenenti una lunga chiave per ogni pagina, da poter strappare e gettare una volta utilizzata (one time, ovvero "un solo uso").
La sua forma più classica prevede che la chiave abbia lo stesso formato del messaggio e che sia implementata l'operazione di somma circolare sull'alfabeto utilizzato.
Ad ogni lettera è associato un valore numerico secondo uno schema del tipo:
La somma tra due lettere si implementa sommando i numeri ad essi associati e, se il risultato è maggiore di 25, sottraendo 26 (aritmetica modulare).
In questo esempio la parola HELLO rappresenta il messaggio da cifrare e WORLD la chiave di cifratura (di pari lunghezza del messaggio).
Il risultato (in grigio) rappresenta il messaggio cifrato.
E' possibile ricostruire il messaggio originario sottraendo al messaggio cifrato la chiave e, se il risultato è negativo, aggiungendo 26 (aritmetica modulare).
Enigma
Durante la seconda guerra mondiale le forza armate tedesche fecero ampio uso di sistemi di cifratura per comunicare in modo segreto.
Molto usata fu la macchina elettromeccanica Enigma, in grado di cifrare e decifrare messaggi. La facilità d'uso e la presunta indecifrabilità furono le maggiori ragioni del suo ampio utilizzo.
Nonostante fosse stata modificata e potenziata nell'arco del suo periodo di utilizzo, un nutrito gruppo di esperti riuscì a violarla dopo essersi impegnato a lungo con questo intento.
Tra i più brillanti crittoanalisti che operavano in Inghilterra, va ricordato Alan Turing che fu l'ideatore della macchina elettromeccanica utilizzata per decifrare i messaggi prodotti con Enigma.
La storia di questo straordinario matematico è stata ripresa dal film del 2015 The Imitation Game.
Da segnalare anche l'opera teatrale Breaking the Code, scritta da Hugh Whitemore nel 1986, che ha la particolarità di raccontare le vicende di Turing spiegando anche i risvolti matematici; in questo senso l'opera fa divulgazione scientifica. Successivamente Breaking the Code è diventato un film per la TV (inedito in Italia).
La macchina elettromeccanica Enigma
Alan Turing
Ambito informatico
Nell'ambito informatico tutti gli algoritmi di cifratura in uso sono polialfabetici, per mitigare il problema degli attacchi su base statistica.
La classificazione principale, quindi, non riguarda gli alfabeti ma il tipo e il numero di chiavi utilizzate: nella cifratura simmetrica viene utilizzata una sola chiave mentre nella cifratura asimmetrica se ne usano due, che assumono significato diverso.
Altri aspetti significativi riguardano le tecniche implementative che, a seconda dei casi, operano sui dati organizzati a blocchi di dimensione fissa o a flusso, nel senso che analizzano i byte uno alla volta (come accade con Vernam).
Un algoritmo di cifratura dovrebbe avere le seguenti caratteristiche:
essere di facile implementazione;
disponendo delle giuste chiavi, deve essere "facile" cifrare e decifrare un messaggio;
in assenza delle giuste chiavi, deve essere "difficile" decifrare un messaggio.
Con i termini "facile" e "difficile" si fa riferimento alla possibilità pratica di effettuare o meno una elaborazione che porti al risultato desiderato in un tempo ragionevole per il contesto applicativo.
Notare che non si fa alcun riferimento alla segretezza dell'algoritmo, in ossequio al principio formulato da Kerckhoffs nel 1880, in base al quale la sicurezza di un crittosistema deve dipendere solo dalla robustezza e segretezza della chiave e non dalla segretezza dell'algoritmo.
In questa stessa direzione si pone la massima di Shannon che afferma: il nemico conosce il sistema!
La crittoanalisi è il campo della ricerca che studia come interpretare un'informazione cifrata senza disporre degli elementi di sicurezza previsti, tipicamente le chiavi.
In questo ambito rompere un cifrario significa trovare una debolezza che consenta di violare il sistema con una complessità inferiore a quella della forza bruta (che consiste nel fare tutti i possibili tentativi).
Nelle tecniche di attacco si distinguono vari scenari:
disponibilità del solo testo cifrato: l'attaccante dispone solo di uno o più messaggi cifrati con la stessa chiave;
disponibilità sia del testo cifrato che di quello in chiaro: l'attaccante dispone di alcuni testi cifrati con una data chiave (non nota) e dei corrispondenti testi in chiaro;
possibilità di scegliere i testi da cifrare: in questo caso l'attaccante può scegliere quali testi far cifrare con la stessa chiave (non nota); l'attaccante disporrà sia dei testi in chiaro che che testi cifrati;
possibilità di operare su testi cifrati con chiavi correlate: in questo caso l'attaccante conosce la correlazione esistente tra le chiavi utilizzate per la cifratura di uno stesso testo di cui si ha piena disponibilità (un esempio di correlazione tra le chiavi può essere la differenza di un carattere).
Sito: 7ecnologie
Sezione: 14. Sicurezza informatica
Capitolo: 02. Crittografia
Indice dei capitoli: 00. Risorse - 01. Il quadro normativo - 02. Crittografia - 03. Protocolli per la sicurezza - 04. Applicazioni e Servizi - 98. Esercizi
Indice dei paragrafi: 01. Cifrari nella storia - 02. Crittografia simmetrica - 03. Crittografia asimmetrica - 04. Funzione hash - 05. Certificato digitale - 06. Firma digitale - 07. Codifica base 64 - 08. LAB