Capitolo 1 La sicurezza in rete
14
Capitolo 1
LA SICUREZZA IN RETE
Mentre nei primi decenni della loro esistenza, le reti di
computer non avevano esigenze di segretezza, in quanto utilizzate
principalmente da ricercatori universitari per inviare messaggi
elettronici e da dipendenti di industrie per condividere stampanti,
attualmente, con un numero sempre crescente di comuni cittadini
che utilizzano le reti per operazioni bancarie, commerciali e fiscali,
il problema della sicurezza in rete sta divenendo sempre più
importante. Si tratta di un argomento vasto, riguardante una
moltitudine di crimini, che si occupa, per esempio, di assicurare che
nessuno possa leggere o modificare i messaggi destinati ad altri, di
evitare che persone accedano a servizi remoti senza averne
l’autorizzazione, di problemi come l’intercettazione di messaggi
autografi e la loro riproduzione. Questi sono solo alcuni dei
problemi di sicurezza in rete che si possono presentare, problemi
che si possono suddividere in quattro aree:
• segretezza
• autenticazione
• non disconoscimento
• controllo d'integrità.
Capitolo 1 La sicurezza in rete
15
La segretezza ha a che fare con la riservatezza delle informazioni
nei confronti degli utenti non autorizzati.
L'autenticazione riguarda il determinare con chi si sta parlando
prima di rivelare informazioni particolari.
Il non disconoscimento riguarda le firme dei messaggi.
Il controllo d'integrità riguarda il fatto di essere sicuri che un
messaggio ricevuto sia davvero quello spedito e non qualcosa che
un avversario ha modificato mentre transitava oppure ha inventato.
Vediamo dove si trova la sicurezza nell'insieme stratificato dei
protocolli. Probabilmente non esiste un posto unico nel quale
occuparsi di essa: ogni livello contribuisce in qualche modo. Nel
livello fisico, l'intercettazione di messaggi può essere contrastata
racchiudendo le linee di trasmissione in tubi sigillati contenenti del
gas argo ad alta pressione. Qualsiasi tentativo per perforare il tubo
provocherà una fuga di gas, riducendo la pressione e facendo
scattare un allarme. Alcuni sistemi militari utilizzano questa
tecnica.
A livello data link, i pacchetti punto-a-punto possono venire
codificati appena lasciano una macchina e decodificati appena
arrivano all'altra. Tutti i dettagli possono essere gestiti dal livello
data link, lasciando i livelli superiori ignari di ciò che sta
succedendo. Questa soluzione, tuttavia, fallisce quando i pacchetti
Capitolo 1 La sicurezza in rete
16
devono attraversare più router, in quanto in quanto i pacchetti
devono essere decodificati su ciascuno, rendendoli vulnerabili agli
attacchi dall'interno di un qualsiasi router. Si può dire che,
nonostante tale metodo, detto codifica del link (link encryption),
non permetta di proteggere alcune sessioni, esso è facile da
aggiungere ad ogni rete e viene utilizzata di frequente.
Al livello rete è possibile installare firewall, ovvero componenti
hardware o software in grado di filtrare i pacchetti che transitano
sulla rete, facendo passare solo quelli con le caratteristiche volute.
Al livello trasporto, è possibile codificare l'intera connessione
da un capo all'altro, ossia da processo a processo.
Sebbene queste soluzioni risolvano alcuni problemi di
segretezza, e sebbene molte persone stiano lavorando seriamente
per migliorarle, nessuna di esse risolve il problema
dell'autenticazione o del disconoscimento in un modo
sufficientemente generale. Per affrontare questi problemi, le
soluzioni devono essere al livello delle applicazioni.
1.1 Crittografia
Quando si parla di crittografia ci si riferisce a quell’arte, o
scienza, che fornisce uno strumento adatto a mantenere segrete tutte
quelle informazioni che non si vogliono divulgare pubblicamente in
Capitolo 1 La sicurezza in rete
17
modo che la possibilità di accedervi sia data soltanto ad uno o ad un
ristretto numero di persone autorizzate.
L’operazione mediante la quale si nascondono le informazioni
viene detta cifratura o crittazione, ed è effettuata tramite un
apposito algoritmo detto cifrario. L’informazione o il messaggio da
cifrare è noto come testo in chiaro (“plaintext”); la crittazione
sfrutta come mezzo fondamentale una chiave detta chiave del
cifrario per convertire il testo in chiaro in testo cifrato o
crittogramma (“ciphertext”).
L’operazione di conversione del testo cifrato in testo in chiaro è
detta decrittazione, e sfrutta anch’essa la chiave del cifrario.
Col termine crittoanalisi ci si riferisce alla pratica di rivelare ciò
che la crittografia tenta di nascondere.
Infine il termine crittologia include sia la crittografia che la
crittoanalisi.
1.1.1 Cifrari
I metodi di codifica sono storicamente suddivisi in due categorie:
1. cifrari a sostituzione
In tale cifrario ogni lettera o gruppo di lettere vengono rimpiazzati
da un’altra lettera o gruppo di lettere in modo da mascherarli. Uno
dei più vecchi e noti cifrari è il cifrario di Cesare, attribuito a Giulio
Cesare. In questo metodo a diventa D, b diventa E, c diventa F e
così via.
Capitolo 1 La sicurezza in rete
18
Una semplice generalizzazione del cifrario di Cesare permette di
trasporre l’alfabeto del testo cifrato di k lettere, invece delle solite
tre.
Un miglioramento a tale cifrario è dato dal sistema di sostituzione
monoalfabetica secondo il quale ogni simbolo del testo in chiaro,
per semplicità le 26 lettere dell’alfabeto, viene mappato in qualche
altra lettera; quindi la chiave è la stringa di 26 lettere che
corrisponde all’alfabeto.
Tale cifrario potrebbe sembrare sicuro perché anche se il
crittoanalista scoprisse che è stato adottato il metodo di sostituzione
lettera per lettera, sarebbe comunque difficile per lui trovare la
chiave giusta tra tutte le 26! chiavi possibili. In realtà è facile
attaccare tale cifrario, conoscendo le proprietà statistiche del
linguaggio con cui il testo in chiaro è stato scritto: per esempio la
frequenza delle lettere, dei bigrammi (sono la combinazione di due
lettere) e dei trigrammi, più comuni. In tal non si fa molta fatica a
rivelare esattamente tutto il contenuto reale di un crittogramma.
2. cifrari a trasposizione
Tali cifrari, al contrario di quelli a sostituzione, riordinano le lettere
ma non le trasformano. Si può eseguire, per esempio, una
trasposizione colonnare: si prende, come chiave, una parola o frase
che non contiene alcuna lettera ripetuta, e dopo aver disposto il
messaggio da cifrare in righe sovrapposte di lunghezza uguale a
quella della chiave, si numerano le colonne così ottenute
assegnando il numero 1 a quella posta sotto la lettera della chiave
che è più vicina all’inizio dell’alfabeto e così via fino al numero
che corrisponde alla lunghezza della chiave. Il testo cifrato viene
Capitolo 1 La sicurezza in rete
19
successivamente letto dalle colonne, partendo da quella con il
numero minimo. Anche un cifrario del genere può essere svelato:
dopo aver scoperto che abbiamo a che fare con un cifrario di
trasposizione, si deve indovinare il numero delle colonne, per
individuare la lunghezza della chiave, attraverso più tentativi se si
sospetta che una determinata parola o frase può essere presente nel
testo, e infine occorre ordinare le colonne nel corretto ordine, anche
qui tenendo in conto varie combinazioni possibili.
Vediamo ora alcune regole che il crittosistema deve, in generale,
rispettare:
• la sicurezza di un potente cifrario deve risiedere nella
segretezza della chiave piuttosto che nella supposta
segretezza dell’algoritmo; ciò vuol dire che anche se un
crittoanalista conoscesse completamente il metodo usato,
non riuscirebbe comunque a rompere il cifrario.
• Un crittosistema forte dovrebbe avere uno spazio delle
chiavi abbastanza grande, in modo da rendere difficoltosa
la ricerca della chiave segreta anche utilizzando
calcolatori molto potenti.
• Un crittosistema forte deve essere in grado di produrre un
testo cifrato che possa apparire il più possibile casuale a
tutti i più potenti test statistici, in modo tale da
nascondere ricorrenze tipiche di un determinato
linguaggio.
Capitolo 1 La sicurezza in rete
20
1.1.2 Algoritmi di crittografia
La crittografia moderna utilizza gli stessi principi di base della
crittografia tradizionale, trasposizione e sostituzione, ma con enfasi
diversa. Tradizionalmente i crittografi utilizzavano algoritmi
semplici e si affidavano a chiavi molto lunghe per la loro sicurezza.
Al giorno d’oggi è il contrario e l’obiettivo è rendere l’algoritmo di
codifica così complesso e involuto che anche se il crittoanalista
entrasse in possesso di una grande mole di testo cifrato, non sarebbe
assolutamente capace di dargli alcun senso.
Tuttavia regola fondamentale della crittografia moderna è
quella di supporre che il crittoanalista conosca il metodo generale di
cifratura impiegato. La quantità di sforzi necessari per inventare,
collaudare e installare un nuovo metodo ogni volta che quello
vecchio è compromesso, o si pensa che lo sia, ha sempre reso poco
pratico il mantenimento di tale segreto, ed il fatto di pensare che
esso sia segreto mentre in realtà non lo è, fa più male che bene.
Diviene quindi importante il ruolo della chiave ossia il ruolo di
quella stringa di caratteri che selezione una tra le molte cifrature
potenziali. Tutti i moderni metodi utilizzano una chiave per
eseguire la crittazione e la decrittazione, e il messaggio può essere
decrittato solo se la chiave di decifratura si accoppia con quella di
cifratura. Per alcuni algoritmi le due chiavi sono uguali, mentre per
altri sono diverse. In base a questa differenza gli algoritmi basati
sull’utilizzo di chiavi si dividono in algoritmi simmetrici, a chiave
Capitolo 1 La sicurezza in rete
21
segreta, e in algoritmi asimmetrici, a chiave pubblica. Gli algoritmi
simmetrici, utilizzati dalla crittografia classica, permettono al
mittente e al destinatario di usare la medesima chiave
rispettivamente per crittare e decrittare il messaggio.
I sistemi a chiave segreta possono essere utilizzati per
implementare i seguenti servizi di sicurezza:
1. Autenticazione al fine di identificare con certezza il mittente del
messaggio.
2. Riservatezza per proteggere l’informazione da visione non
autorizzata.
3. Integrità per garantire che l’informazione non venga alterata e
che il messaggio arrivi esattamente come è stato spedito.
Tuttavia, in genere, tali sistemi hanno alcuni punti deboli:
a) Due corrispondenti devono essere in possesso della stessa
chiave che deve essere consegnata telematicamente ad entrambi
prima che possa iniziare una comunicazione tra i due. Inoltre
all’aumentare degli utenti di servizio il numero di chiavi
aumenta rendendo problematica la loro gestione e distribuzione.
b) Poiché gli utenti condividono chiavi segrete, non si può
facilmente implementare l’importante servizio di Non-
Disconoscimento del messaggio, ossia nessuno dei due è in
Capitolo 1 La sicurezza in rete
22
grado di provare a un terzo che un certo messaggio è stato
effettivamente generato dall’altro.
Questi problemi sono risolti dalla crittografia a chiave pubblica.
Le tecniche asimmetriche utilizzano coppie di chiavi
complementari invece di una sola chiave segreta. Un singolo utente
possiede una coppia di chiavi complementari: una chiave pubblica,
che può essere nota a tutti, usata per cifrare un messaggio, e una
chiave privata, che solo il proprietario può utilizzare. Le due chiavi
sono create in modo tale che un messaggio cifrato da una delle due
può essere decifrato solo e soltanto dall’altra. In pratica se si vuole
spedire un messaggio ad una persona, si critta quel messaggio con
la sua chiave pubblica, e si ha così la sicurezza che solo quella
persona potrà decifrarlo grazie alla propria chiave privata.
Il vantaggio principale della crittografia asimmetrica della
critttografia asimmetrica sta nella facilità di gestione delle chiavi.
Non si deve comunque pensare che gli algoritmi asimmetrici
risolvono completamente i problemi di sicurezza. In realtà vi sono
vari motivi che fanno propendere per un uso combinato dei due
metodi: per esempio, nel caso in cui si debbano crittare grandi
volumi di dati, la crittografia asimmetrica impiegherebbe per tale
operazione un tempo di gran lunga maggiore rispetto a quello
impiegato da un algoritmo simmetrico, e quindi la scelta dei metodi
chiave segreta è quasi obbligatoria; inoltre se un messaggio è
Capitolo 1 La sicurezza in rete
23
diretto a più destinatari, la cifratura asimmetrica deve essere
ripetuta per ogni destinatario.
Elenchiamo ora alcuni dei principali algoritmi, a chiave segreta
e pubblica, senza comunque descriverne le complesse
trasformazioni e calcoli matematici che spesso ne costituiscono la
base. E’ importante però mettere in risalto che in base alla
computazione che si effettua, si individuano due tipi di cifratura:
1. Cifratura sequenziale: il messaggio è visto come una
sequenza di bit e viene cifrato un bit alla volta. Sono
considerati i più veloci ma sono considerati poco sicuri,
sebbene la sicurezza dipenda dall’algoritmo utilizzato;
2. Cifratura a blocchi: il messaggio è suddiviso in blocchi di
lunghezza fissa e cifrato un blocco per volta. Sebbene
siano più lenti dei precedenti, sono considerati più sicuri
perché ogni blocco è cifrato mescolandolo
opportunamente al blocco precedente.
1.1.2.1 Algoritmi a chiave segreta
1) DES
Il DES (Data Encryption Standard) è un cifrario a blocchi,
sviluppato dall’IBM, che è stato adottato, nel 1977, dal governo
statunitense come proprio standard ufficiale. Questo cifrario fu
adottato in maniera estesa dall’industria per prodotti per la
Capitolo 1 La sicurezza in rete
24
sicurezza. Adotta blocchi da 64 bit ed una chiave a 56 bit; data la
ridotta lunghezza della chiave risulta facilmente violabile dai
computer moderni. Nella sua forma originale, quindi, non è più
sicuro, ma è ancora utilizzato in una sua forma modificata, il triplo-
DES, triplo perchè effettua una codifica tripla del messaggio.
2) IDEA
L’IDEA (International Data Encryption Algorithm) è un
cifrario a blocchi, progettato nei primi anni novanta, in Svizzera, da
due ricercatori, Xuejja Lai e James L. Massey. Si pensa che
nessuna tecnica conosciuta o macchina esistente attualmente sia in
grado di forzarlo. Esso utilizza una chiave a 128 bit.
3) RC4
Sviluppato da RSA Data Security Inc. è un cifrario sequenziale
molto veloce, che accetta chiavi di lunghezza variabile. La sua
sicurezza non è ancora stata ben accertata, ma finora ha resistito
molto bene a diversi tipi di attacchi. Usa essenzialmente un
generatore di numeri casuali, e il numero generato viene applicato
mediante l’operatore OR Esclusivo (XOR) alla sequenza di bit.
1.1.2.2 Algoritmi a chiave pubblica
1) RSA
L’RSA è attualmente l’algoritmo a chiave pubblica più
utilizzato, sia per la cifratura di messaggi che per apporre la firma
Capitolo 1 La sicurezza in rete
25
digitale. Ideato al MIT (Massachussets Institute of Technology),
prende il nome dalle iniziali dei suoi tre inventori: Ron Rivest, Adi
Shamir e Leonard Adleman. E’ generalmente considerato sicuro
quando usato con chiavi di almeno 1024 bit.
Nella pratica tale algoritmo è utilizzato principalmente per
distribuire in una volta sola le chiavi di sessione da utilizzare col
DES o con l’IDEA, in quanto l’RSA è attualmente troppo lento per
cifrare grosse quantità di dati.
2) Diffie-Helmann
Algoritmo che porta il nome dei suoi inventori, comunemente
usato per lo scambio di chiavi. Tale algoritmo sarà descritto nel
paragrafo 1.2.1.1.
1.2 Autenticazione
Vi sono molti settori nel mondo della telematica per i quali è, e
sarà, necessario l’utilizzo di software crittografico: tra questi
sicuramente i settori che debbono risolvere problemi di
autenticazione. Col termine autenticazione si definisce la tecnica
attraverso la quale un processo verifica che il suo partner nella
comunicazione sia colui che si suppone, e non un impostore.
Vediamo il modello generale dei protocolli d’autenticazione. Il
primo utente, si tratta di un processo, detto Alice, vuol stabilire una
Capitolo 1 La sicurezza in rete
26
connessione sicura con un secondo utente, detto Bob; Alice inizia
inviando un messaggio a Bob oppure ad un fidato centro di
distribuzione delle chiavi (Key distribution center o KDC), che è
sempre onesto. Seguono molti altri scambi di messaggi nelle varie
direzioni. Mentre questi messaggi viaggiano, un pericoloso intruso,
detto Trudy, può intercettarli, modificarli o rispondere ad essi, per
ingannare Alice o Bob, o solo per bloccarli. Nonostante questo
quando il protocollo è terminato Alice è sicura di aver parlato con
Bob e viceversa. Inoltre in molti protocolli Alice e Bob stabiliscono
una chiave di sessione segreta da utilizzare nelle conversioni future.
In pratica, per ragioni di efficienza, tutto il traffico dei dati viene
cifrato utilizzando la crittografia a chiave segreta, anche se la
crittografia a chiave pubblica è molto utilizzata per gli stessi
protocolli d’autenticazione e per stabilire la chiave di sessione.
Il fatto di usare una chiave di sessione nuova, scelta in maniera
casuale per ogni nuova connessione, serve a minimizzare il traffico
totale che avviene con le chiavi segrete o pubbliche dell’utente, per
ridurre la quantità di testo cifrato che un intruso può ottenere e per
minimizzare il danno fatto se un processo termina e il suo dump
finisce nelle mani sbagliate. Fortunatamente la sola chiave presente
è quella di sessione, e tutte le chiavi permanenti vengono annullate
dopo che si è stabilita la sessione. Vediamo ora le varie procedure
d’autenticazione
Capitolo 1 La sicurezza in rete
27
1.2.1 Protocolli d’autenticazione
Si possono avere due metodi d’autenticazione:
1. Autenticazione a due parti
2. Autenticazione con terza parte
1.2.1.1 Autenticazione a due parti
1. Autenticazione basata su una chiave segreta condivisa
Assumiamo che Alice (A) e Bob (B) condividano una chiave
segreta, K
AB
, concordata per telefono o di persona, ma non
attraverso la rete, in quanto insicura.
Questo è un protocollo di challenge-response poiché si basa sul
seguente principio: una parte invia un numero casuale all’altra , la
quale lo trasforma in un modo speciale e quindi restituisce il
risultato.
Capitolo 1 La sicurezza in rete
28
1
1
1
2
2
2
3
3
3
4
4
4
5
5
5
A
A
A
l
l
l
i
i
i
c
c
c
e
e
e
B
B
B
o
o
o
b
b
b
Figura 1.1 Autenticazione a doppia via utilizzando il protocollo challenge-response
Vediamo qual è la sequenza dei messaggi.
Nel messaggio 1 Alice invia la propria identità, A, a Bob. Bob,
chiaramente non ha modo di sapere se il messaggio viene da Alice
o da Trudy, così sceglie una sfida, genera un numero casuale molto
grande, R
B
, e lo invia ad Alice come messaggio 2, col testo in
chiaro. Alice allora cifra il messaggio con la chiave che condivide
con Bob e restituisce il testo cifrato, K
AB
(R
B
), nel messaggio 3.
Quando Bob vede questo messaggio, capisce immediatamente che
esso proviene da Alice perché Trudy non conosce K
AB
e quindi non
può averlo generato. A questo punto Bob è sicuro di stare parlando
R
B
K
AB
(R
A
)
K
AB
(R
B
)
B
A
A
R
A