Il primo elemento che riguarda crittografia e sicurezza è stato l'introduzione del concetto di codice HASH. Una funzione di hash è una procedura che, dato in ingresso una serie di dati, produce un codice (in linea di massima) diverso per ogni diversa serie di dati, ma identico per la stessa serie. Da questo codice deve essere impossibile risalire ai dati originali. Un esempio molto semplice che illustra il principio di base è quello basato sulla somma: se noi abbiamo una sequenza di numeri, sommandoli otteniamo un valore unico. Questo valore è sempre lo stesso per la stessa sequenza di numeri, ma da quel valore è impossibile risalire alla esatta sequenza che lo ha generato.
Questo sistema viene normalmente usato per registrare le password nei siti e per la posta elettronica. In questo modo non mantengono intatta l'informazione "delicata" della password, ma sono in grado di riconoscere una persona quando inserisce la propria password applicando ad essa la stessa procedura e confrontando i risultati.
Le operazioni di base della crittografia si basano sull'operatore XOR, che ha come simbolo un più in un circoletto: ⊕. Questo operatore si applica a due valori binari e restituisce un valore binario che vale 1 se i due operandi sono diversi tra loro (1 e 0 oppure 0 e 1) e restituisce 0 se sono uguali. XOR è la forma contratta di EXCLUSIVE OR (or esclusivo).
Questo operatore si può applicare anche a interi byte e produce dei byte composti dai risultati di 8 operazioni "in colonna". L'aspetto interessante dello XOR è che se aplicato due volte con lo stesso valore, esso restituisce il valore iniziale. Per esempio 1010 ⊕ 1100 = 0110 , ma se applichiamo di nuovo al risultato lo stesso XOR otteniamo: 1001 ⊕ 1100 = 1010 cioè il valore iniziale. Si può dire anche che N⊕K⊕K = N. Praticamente ripetere lo XOR la seconda volta con lo stesso valore annulla il primo XOR e ripristina il valore originale.
L'idea è quella di usare questa caratteristica per "fondere" in modo reversibile un messaggio con la chiave di crittazione. Se abbiamo un messaggio che è composto da una sequenza di bit (che rappresentano dei caratteri di testo) e una chiave composta da un'altra sequenza di bit (la traduzione in binario di "quiquoqua" per esempio) si possono comporre queste due sequenze di valori in modo da ottenere una sequenza di valori (successivamente reinterpretabili come caratteri) incomprensibile per chi non conosca la chiave di crittazione. Il ricevente, applicando la stessa trasformazione usando la stessa chiave, può decifrare il messaggio e riportarlo in chiaro. In pratica il nostro messaggio M viene elaborato con la chiave K (ripetendo la chiave se serve per coprire tutto il messaggio, che in genere è più lungo della chiave) con lo XOR: C=M⊕K. C è il messaggio cifrato che viene spedito al destinatario. A questo punto il destinatario, conoscnedo la chiave K, la può applicare al messaggio cifrato C⊕K e ottenere M.
Il problema della crittografia simmetrica è che, almeno per gli algoritmi più vecchi, è abbastanza vulnerabile. Conoscendo abbastanza informazioni sulla lingua del messaggio e osservando regolarità statistiche molto sofisticate è possibile spesso decifrare il messaggio. Questo non è più molto vero dato che gli algoritmi moderni di crittazione simmetrica sono molto molto sicuri. La fragilità del sistema simmetrico è intrinseca al sistema stesso: l'informazione più importante, la chiave, si deve trovare in due posti contemporaneamente. Inoltre quanto più spesso viene usata, tanto più vulnerabile diventa la crittazione (la statistica si fonda sui grandi numeri, più mesaggi crittati allo stesso modo sono disponibili, più appigli ci sono per decrittarli). Inoltre ci deve essere un accordo preventivo sulla chiave da usare, questo accordo deve essere fatto lungo un canale "sicuro", altrimenti la crittazione è inutile. La chiave di quando in quando va rinnovata, per quei problemi di vulnerabilità già detti, quindi la nuova chiave deve essere ritrasmessa in qualche modo tra i due partecipanti (le classiche valigette blindate legate con le manette al polso delle spie!) e questa è certamente un'enorme vulnerabilità del sistema. Non è nemmeno possibile pensare di trasmettere la nuova chiave sfruttando la vecchia crittazione, perché se qualcuno ha scoperto la vecchia chiave e intercetta il messaggio può venire a conoscenza anche della nuova chiave, e così via.
Un'ulteriore vulnerabilità (non detta a lezione) è che se malauguratamente qualcuno entrasse in possesso di UN messaggio cifrato, e dello STESSO messaggio non cifrato, potrebbe conoscere perfettamente la chiave, proprio per quelle caratteristiche dello XOR che dicevamo: se C=M⊕K, per ottenere K è sufficiente fare C⊕M!!! (praticamente decrittiamo la chiave col messaggio, invece che il messaggio con la chiave). C=M⊕K, conoscendo C e M possiamo fare M⊕C = M⊕M⊕K = K
Infatti (preso da Wikipedia nella voce di un sistema nazistra di cifratura, il sistema Lorenz):
Sul ponte-radio Vienna-Atene della Wehrmacht, in funzione dal 1941, ancora durante la fase sperimentale della macchina cifratrice, fu inviato uno stesso messaggio di circa 4.000 caratteri, due volte, una poco dopo l'altra, cifrato con la medesima posizione iniziale dei cilindri-chiave. Il destinatario aveva chiesto di ritrasmettere il messaggio poiché la parola iniziale SPRUCHNUMMER era stata sostituita con SPRUCHNR. Questo grave errore di un radiotelegrafista, commesso già all'inizio, doveva diventare decisivo per la futura violazione del sistema di cifratura Lorenz.Tutti queti problemi venono risolti grazie ai moderni sistemi di cifratura a chiave Asimmetrica, dove esiste una chiave per crittare e una per decrittare, che verranno spiegati nella prossima lezione.
Con la crittografia ha esordito una delle menti più brillanti del Novecento, Alan Turing, che ha una storia straordinaria degna di essere letta e conosciuta. Con le sue idee ha dato vita a una serie enorme di riflessioni e di filoni scientifici, primo fra tutti quello della concezione dell'informatica come scienza, e non più solo come tecnologia. I computer fino a quel momento erano appunto questo: calcolatori. Con Turing sono diventate delle entità teoriche, matematiche, dei modelli teoretici sui quali si possono costruire concetti rivoluzionari.
Nessun commento:
Posta un commento