Copyright © 1986 Università di Firenze.All rights reserved.
Free license available.
Revisori: Franco Pirri e Maurizio Lunghi
Con l'inevitabile ascesa della comunicazione telematica al ruolo di primario e quotidiano mezzo di comunicazione, si pongono delle esigenze fondamentali di riservatezza e sicurezza.
E' per rispondere a tali necessità che si è sviluppata la crittografia come già spiegato in dettaglio nell' introduzione.
Esistono due tipi di crittosistemi che si basano su key o codici fondamentalmente diversi tra loro. Vengono definiti crittosistemi a secret-key (chiave segreta) e public-key (chiave pubblica).
Nel primo sistema viene usata una sola chiave, detta appunto segreta, utilizzata come parametro di una funzione unidirezionale e invertibile permettendo così di elaborare il testo del messaggio da trasmettere rendendolo incomprensibile agli intercettatori. Essendo la funzione invertibile, il destinatario dovrà soltanto elaborare nuovamente il crittogramma richiamando l'inversa della funzione di cifratura avente come parametro la stessa chiave utilizzata dal trasmettitore del messaggio.

Ovviamente la tecnica si basa sulla capacità del mittente e del destinatario di mantenere segreto il codice di cifratura. Tale metodo, noto da secoli, è definito crittografia simmetrica mentre la crittografia a public-key, relativamente recente in quanto risale agli anni '70, è nominata crittografia asimmetrica. Quest'ultima a differenza della precedente, utilizza due chiavi distinte: una per criptare il messaggio e l'altra per decriptare.
La fondamentale innovazione del crittosistema a chiave pubblica è l'impossibilità di derivare una chiave dall'altra potendo così diffondere una delle due e tenere segreta l'altra.
Sia i crittosistemi a secrety-key che quelli a public-key hanno, per motivi diversi, un problema in comune di implementazione: quello della gestione dei codici. Con il sistema a secret-key il mittente e il destinatario devono raggiungere un accordo sulla scelta della chiave.
La cosa non sarà facile se essi si trovano a migliaia di chilometri di distanza e sicuramente questo è il caso più frequente, altimenti perché farebbero uso di comunicazione telematica ? Come potranno allora scambiarsi la chiave?

Un tempo coppie di chiavi identiche erano inventate presso un mezzo centrale di generazione delle chiavi e poi trasmesse alla loro destinazione da un corriere. Naturalmente un metodo di questo tipo si dimostrò subito inadeguato, basti pensare a tutte le migliaia di filiali sparse in tutto il mondo che una banca o organizzazione simile possono avere. Inoltre per avere maggiore sicurezza tali chiavi venivano giornalmente cambiate incrementando sempre più la distribuzione.
Nacque allora spontaneo pensare di trasmettere tali chiavi, precedentemente cifrate, sulla rete stessa. Una soluzione a tale problema, di seguito esposta, fu ideata nel 1985 sfruttando una gestione gerarchica delle chiavi.
Un'organizzazione sceglie una chiave principale e la distribuisce mediante un corriere a ciascuno dei suoi uffici, essendo questi raggruppati in regioni ogni capoufficio regionale sceglie, a sua volta, una chiave regionale. Queste vengono cifrate usando la chiave principale e distribuite su tutta la rete. Se due uffici della stessa regione vogliono comunicare, uno di essi sceglie una chiave di sessione e la invia all'altro, cifrata mediante quella regionale. Oppure potrà essere creata la chiave di sessione da un processo di gestione esterno ed inviata ad ambedue gli uffici codificata con la chiave regionale.
Si nota che è sempre necessario un corriere esterno per la diffusione della chiave principale e nel caso di dubbia sicurezza di questa, essa dovrà essere subito sostituita.
Il problema non è, come si vede, facilmente risolvibile purtroppo quello che più spesso viene fatto è utilizzare telefono, posta o e-mail ma con nessuna garanzia. Sono nati vari metodi ingegnosi tra cui quello di Merkle detto puzzle (vedere "Reti di computer" Tanenbaum cap: 8.4.3).
I codici cifrati simmetrici possono encriptare qualunque testo in bit, byte, una parola o gruppi di parole alla volta.
Quando un codice cifrato viene applicato ad un bit, un byte o una parola alla volta, viene detto codice cifrato a flusso. Quando viene applicato a gruppi viene detto codice cifrato a blocchi.
L'utilizzo di un codice cifrato a flussi o a blocchi dipende dalla particolare applicazione usata. In genere quello più frequentemente adoperato è il codice a blocchi ma molte applicazioni richiedono l'altro.
Vediamo quattro modelli di codice a blocchi molto comuni:
Electronic Codebook (ECB): è il metodo più semplice ma anche meno affidabile infatti
Cipher Block Chaining (CBC): è un modello simile al precedente anche se in questo caso
Cipher Feedback (CFB):
Output Feedback (OFB): affinché il procedimento sia ancora più veloce, in questo Il primo metodo, nonostante sia il meno sicuro, è quello più utilizzato; viene però consigliato caldamente da crittologi il secondo vista la sua semplicità, cioè il CBC. Il CFB è adatto alle applicazioni dei terminali in cui i codici individuali, introdotti dagli utenti, devono essere inviati all'host senza che rimangono in memoria.
L'OFB viene spesso utilizzato nelle comunicazioni ad elevata velocità come quelle dei satelliti.
Bibliografia e sorgenti d'informazione