Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Giunta e altri
RETI DI ELABORATORI
SOMMARIO
1 PRESENTAZIONE ................................................................................................................................................. 7
1.1 BIBLIOGRAFIA ......................................................................................................................................................... 7
1.2 PREREQUISITI .......................................................................................................................................................... 7
1.2.1 CALCOLO DELLE PROBABILIT: FONDAMENTI ...................................................................................................... 7
1.2.1.1 Definizioni .......................................................................................................................................................... 7
1.2.1.2 Assiomi ............................................................................................................................................................... 7
1.2.1.3 Teoremi ............................................................................................................................................................... 8
1.2.2 SERIE GEOMETRICA................................................................................................................................................ 8
1.2.3 ESERCIZI................................................................................................................................................................. 9
2 INTRODUZIONE ................................................................................................................................................. 10
2.1 MODELLO MAINFRAME - TERMINALI................................................................................................................... 10
2.2 RETI DI ELABORATORI .......................................................................................................................................... 10
2.3 SERVIZI DI RETE .................................................................................................................................................... 11
2.4 USI DELLE RETI DI ELABORATORI ........................................................................................................................ 11
2.5 ASPETTI HARDWARE DELLE RETI ......................................................................................................................... 12
2.5.1 TECNOLOGIA TRASMISSIVA .................................................................................................................................. 12
2.5.1.1 Reti broadcast ................................................................................................................................................... 12
2.5.1.1.1 Varianti........................................................................................................................................................... 12
2.5.1.2 Reti punto a punto............................................................................................................................................. 12
2.5.2 SCALA DIMENSIONALE ......................................................................................................................................... 12
2.5.2.1 Reti locali.......................................................................................................................................................... 13
2.5.2.2 Reti metropolitane ............................................................................................................................................ 13
2.5.2.3 Reti geografiche................................................................................................................................................ 13
2.5.3 INTERCONNESSIONE DI RETI (INTERNETWORK) ................................................................................................... 15
2.6 ASPETTI SOFTWARE DELLE RETI .......................................................................................................................... 15
2.6.1 GERARCHIE DI PROTOCOLLO ............................................................................................................................... 15
2.6.2 ARCHITETTURA DI RETE ....................................................................................................................................... 16
2.6.3 INTERFACCE E SERVIZI ......................................................................................................................................... 17
2.6.3.1 Servizi orientati alla connessione ..................................................................................................................... 18
2.6.3.2 Servizi privi di connessione .............................................................................................................................. 18
2.6.3.3 Affidabilit ........................................................................................................................................................ 18
2.6.4 PRIMITIVE DI DEFINIZIONE DEL SERVIZIO ............................................................................................................ 19
2.6.5 ASPETTI DI PROGETTO DEI LIVELLI ...................................................................................................................... 20
2.7 LA REALT NEL MONDO DELLE RETI .................................................................................................................... 20
2.7.1 MODELLO OSI ..................................................................................................................................................... 20
2.7.2 INTERNET PROTOCOL SUITE ................................................................................................................................ 22
2.7.3 CONFRONTO FRA MODELLO DI RIFERIMENTO OSI E ARCHITETTURA TCP/IP ...................................................... 23
2.7.3.1 Confronto fra pile di protocolli OSI e TCP/IP .................................................................................................. 23
2.7.4 AUTORIT NEL MONDO DEGLI STANDARD ........................................................................................................... 24
3 PROGETTAZIONE DI APPLICAZIONI DI RETE ......................................................................................... 25
3.1 INTERFACCIA TRASPORTO-APPLICAZIONE .......................................................................................................... 25
3.2 IL PARADIGMA CLIENT-SERVER ............................................................................................................................ 25
3.3 REALIZZARE APPLICAZIONI DI RETE CON JAVA .................................................................................................. 25
3.3.1 CLASSE SOCKET ................................................................................................................................................... 26
3.3.1.1 Costruttore ........................................................................................................................................................ 26
3.3.1.2 Metodi pi importanti ....................................................................................................................................... 26
3.3.2 LA CLASSE SERVERSOCKET ................................................................................................................................. 26
3.3.2.1 Costruttori ......................................................................................................................................................... 26
3.3.2.2 Metodi pi importanti ....................................................................................................................................... 26
3.3.3 ESEMPIO DI SERVER.............................................................................................................................................. 27
3.4 ESERCIZI ................................................................................................................................................................ 27
4 IL LIVELLO FISICO ........................................................................................................................................... 29
4.1 BASI TEORICHE PER LA TRASMISSIONE DEI DATI ................................................................................................ 29
4.1.1 ANALISI ARMONICA ............................................................................................................................................. 30
11.5.7 SNIFFING...........................................................................................................................................................134
11.5.8 KEYLOGGER .....................................................................................................................................................135
11.5.9 SPOOFING .........................................................................................................................................................135
11.5.9.1 Spoofing a livello 2 .......................................................................................................................................135
11.5.9.2 Spoofing a livello 3 .......................................................................................................................................135
11.5.9.3 Spoofing a livello 4 .......................................................................................................................................135
11.5.9.4 WEB Spoofing ..............................................................................................................................................136
11.5.10 TROJAN ...........................................................................................................................................................136
11.5.11 VIRUS INFORMATICI ........................................................................................................................................137
11.5.12 DOS ................................................................................................................................................................137
11.5.13 INGEGNERIA SOCIALE .....................................................................................................................................139
11.6 FIREWALL ...........................................................................................................................................................140
11.6.1 CONFIGURAZIONE DI FIREWALL LINUX ............................................................................................................141
11.7 IDS (INTRUSION DETECTION SYSTEM) ............................................................................................................143
11.8 PROTEZIONE DELLE INFORMAZIONI DURANTE IL TRANSITO SULLA RETE ....................................................145
11.8.1 CRITTOGRAFIA .................................................................................................................................................145
11.8.2 CRITTOGRAFIA A CHIAVE SEGRETA (O SIMMETRICA) ........................................................................................147
11.8.3 CRITTOGRAFIA A CHIAVE PUBBLICA .................................................................................................................148
11.8.4 MATEMATICA NELLA CRITTOGRAFIA A CHIAVE PUBBLICA: ARITMETICA MODULARE .......................................149
11.8.5 ALGORITMO RSA .............................................................................................................................................152
11.8.6 FUNZIONI HASH E FIRME DIGITALI ....................................................................................................................152
11.8.7 PROTOCOLLI CRITTOGRAFICI ...........................................................................................................................154
11.8.8 CHIAVE SEGRETA DI SESSIONE ..........................................................................................................................154
11.8.9 CENTRO DI DISTRIBUZIONE DELLE CHIAVI .......................................................................................................155
11.9 PROTEZIONE DEL WEB ......................................................................................................................................156
11.9.1 CONTROLLO DEI DIRITTI DI ACCESSO: BASIC AUTHENTICATION IN HTTP 1.0 ..................................................156
11.9.2 CONTROLLO DEI DIRITTI DI ACCESSO: DIGEST AUTHENTICATION IN HTTP 1.1 ................................................157
11.9.3 PROTEZIONE DELLE RISORSE DA DANNEGGIAMENTO ......................................................................................157
11.9.3.1 Lato client .....................................................................................................................................................157
11.9.3.2 Lato server ....................................................................................................................................................157
11.9.4 LA SICUREZZA E JAVA .......................................................................................................................................158
11.9.5 TRANSPORT LAYER SECURITY .........................................................................................................................158
11.9.6 VULNERABILIT DI MD5 .................................................................................................................................159
11.10 PGP - PRETTY GOOD PRIVACY .......................................................................................................................160
11.11 VIRTUAL PRIVATE NETWORK ..........................................................................................................................162
12 ESERCIZI DI PROGETTAZIONE DI RETI ................................................................................................ 163
12.1 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2008 ......................................................163
12.2 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2010 ......................................................163
12.3 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2012 ......................................................163
12.4 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2014 ......................................................164
1 Presentazione
1.1 Bibliografia
-
1.2 Prerequisiti
1.2.1 Calcolo delle probabilit: fondamenti
Un fenomeno detto probabilistico quando il suo esito variabile e dipendente da condizioni che non
possiamo determinare.
Ogni possibile esito detto evento. Il compito del Calcolo delle probabilit misurare ogni evento mediante un numero detto probabilit dell'evento.
Es. Il fenomeno "Valore del lancio di un dado" probabilistico perch il suo esito, composto dai sei eventi
{1, 2, 3, 4, 5, 6}, dipende da condizioni che non possiamo determinare.
La probabilit di ognuno di questi eventi 1/6.
Es. Il fenomeno "Anno bisestile" non probabilistico perch il suo esito dipende da condizioni a noi note.
1.2.1.1 Definizioni
Due eventi E1 e E2 sono detti complementari se:
~ Non hanno elementi comuni, e
~ Uno dei due deve avvenire.
@
Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore 2" e "Valore 1 o 3 o 4 o 5 o 6" sono
complementari.
Due eventi E1 e E2 sono detti indipendenti se non si influenzano reciprocamente, cio se la probabilit di
ognuno di questi due eventi non dipende dal fatto che l'altro evento avvenuto.
@
Es. Nel fenomeno "Valore del lancio di due dadi", gli eventi "Valore 3 nel lancio del primo dado" e "Valore 4 nel lancio del secondo dado" sono indipendenti.
1.2.1.2 Assiomi
Lo studio del Calcolo delle probabilit si basa su alcuni assiomi:
1 La probabilit di ogni evento un numero compreso tra 0 e 1.
La probabilit di un evento E si indica con P[E].
2 La probabilit dell'insieme composto da tutti gli eventi possibili del fenomeno 1.
In questa trattazione considereremo soltanto fenomeni dove il numero di eventi possibili finito.
Es. Nel fenomeno "Valore del lancio di un dado", i sei eventi possibili sono "Valore 1", "Valore 2", ..,
"Valore 6". Quindi:
P["Valore 1" "Valore 2" .. "Valore 6"]
= 1
3 Se due eventi E1 e E2 non hanno elementi comuni, allora P[E1 E2] = P[E1] + P[E2].
Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore 2" e "Valore 3" non hanno elementi
comuni; quindi:
P["Valore 2" "Valore 3"]
= P["Valore 2"] + P["Valore 3"]
= 1/6 + 1/6 (perch tutti i sei eventi sono equiprobabili)
= 2/6
Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore pari" e "Valore multiplo di 3" hanno
l'elemento comune "Valore 6"; allora le ipotesi dell'assioma precedente non sono soddisfatte; infatti,
P["Valore pari"
= P["Valore 2 o 4
= P["Valore 2"] +
= 1/6 + 1/6 + 1/6
= 4/6
che diverso da
P["Valore pari"] + P["Valore multiplo di 3"]
= 3/6 + 2/6
= 5/6
1.2.1.3 Teoremi
Dagli assiomi precedenti discendono i seguenti teoremi, la cui dimostrazione omessa:
4 Se due eventi E1 e E2 sono complementari, allora P[E2]= 1 - P[E1].
Es. Nel fenomeno "Valore del lancio di un dado", si ha:
P["Valore 1 o 3 o 4 o 5 o 6"]
= 1 - P["Valore 2"]
= 1 1/6
= 5/6
= P[E1] * P[E2].
Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore pari" e "Valore >= 4" si influenzano
reciprocamente; allora le ipotesi del teorema precedente non sono soddisfatte; infatti,
P["Valore pari" "Valore >= 4"]
= P["Valore 4 o 6"]
= P["Valore 4"] + P["Valore 6"]
= 1/6 + 1/6
= 1/3
che diverso da
P["Valore pari"] * P["Valore >= 4"]
= 3/6 * 3/6
= 1/4
con 0<=a<=b.
La somma dei termini suddetti detta serie geometrica a termini finiti e si simboleggia con
SUM{pow(q, i) | i=a, .., b}.
q detta ragione della serie.
Ci sono i seguenti casi particolari notevoli.
~ (q >= 0) AND (q != 1) (perch (1-q) compare al denominatore)
Si dimostra che
SUM{pow(q, i | i=a, .., b}= (pow(q, a) pow(q, (b+1))) / (1-q).
Si pu notare che:
- il primo addendo del numeratore il primo termine della successione;
- il secondo addendo del numeratore il termine che viene dopo l'ultimo della successione.
Es: 8 + 16 + 32 + 64 =
SUM{pow(2, i) | i=3, .., 6} =
(8-128) / (1-2) = 120
Es: 36 + 108 + 324 =
4 * (9 + 27 + 81) =
4 * SUM{pow(3, i) | i=2, .., 4} =
4 * (9-243) / (1-3) =
4 * 234 / 2 =
468
1.2.3 Esercizi
1. Mescolando due qualsiasi di 6 liquori in uguale misura si ottiene un cocktail. Quanti tipi di cocktail
possibile ottenere?
2. Risolvere il problema precedente supponendo di avere nLiq liquori.
3. Risolvere il primo problema supponendo di ottenere un cocktail mettendo una quantit doppia del primo
liquore rispetto alla quantit del secondo liquore.
4. Risolvere il problema precedente supponendo di avere nLiq liquori.
5. Una targa automobilistica in Italia composta da:
- 2 lettere maiuscole dell'alfabeto latino tranne la I e la O.
- 3 cifre decimali.
- 2 lettere maiuscole dell'alfabeto latino tranne la I e la O.
Quante sono le possibili targhe?
6. Due persone sono nate in un anno non bisestile.
Qual la probabilit che siano nate lo stesso giorno e mese?
7. Una moneta lanciata 4 volte. La probabilit di ottenere testa uguale a quella di ottenere croce.
Qual la probabilit di ognuna delle seguenti combinazioni?
- 4 volte un valore e 0 volte l'altro valore.
- 3 volte un valore e 1 volte l'altro valore, in qualsiasi ordine
- 2 volte un valore e 2 volte l'altro valore, in qualsiasi ordine
8. Due dadi con 6 facce con i valori da 1 a 6 sono truccati, perch, per ogni dado:
- Tutti i numeri dispari hanno la stessa probabilit.
- Tutti i numeri pari hanno la stessa probabilit.
- La probabilit di avere un numero dispari la met di avere un numero pari.
A. Qual la probabilit di avere 1 lanciando un dado?
B. Qual la probabilit di avere 2 lanciando un dado?
C. Qual la probabilit di avere almeno 3 lanciando due dadi?
10
2 Introduzione
Ognuno dei ultimi tre secoli stati dominato da una tecnologia che lo ha caratterizzato ed ha avuto profonde influenze sulla vita dell'uomo:
- 18 secolo: sistemi meccanici, rivoluzione industriale;
- 19 secolo: motori a vapore;
- 20 secolo: tecnologie dell'informazione:
- raccolta e memorizzazione;
- elaborazione;
- distribuzione.
Nel secolo scorso si sono diffusi:
- il sistema telefonico, a livello mondiale;
- la radio e la televisione;
- i computer;
- i satelliti per telecomunicazioni.
Queste tecnologie stanno rapidamente convergendo. In particolare, la combinazione tra elaboratori e sistemi di telecomunicazione ha influenzato fortemente l'organizzazione dei sistemi di calcolo.
11
12
Ambito
Stanza
Edificio
Campus
Citt
Nazione
Continente
Pianeta
13
Tipo di rete
Rete locale
Rete locale
Rete locale
Rete metropolitana
Rete geografica
Rete geografica
Internet (Rete geografica)
14
Una WAN pu connettere pi LAN fra loro. La connessione tra LAN effettuata mediante i router.
15
16
17
18
de al SAP mentre il numero telefonico che identifica quella presa lindirizzo SAP.
19
Un servizio affidabile non perde mai dati, cio assicura che ogni dato spedito sar consegnato al destinatario. Ci generalmente richiede che il ricevente invier una conferma alla sorgente per ogni pacchetto ricevuto. Quindi, si introduce ovviamente un sovraccarico, che in certe situazioni desiderato.
Viceversa, un servizio non affidabile non garantisce che i dati spediti arriveranno effettivamente a destinazione. Se la funzionalit di un servizio affidabile non offerta da un livello ma desiderata, dovr essere
fornita da almeno uno dei livelli superiori (vedremo che ci accade spesso).
La scelta del tipo di servizio dipende da fattori contingenti (es.: se il mezzo di comunicazione utilizzato
unidirezionale, il ricevente non pu inviare una conferma e quindi il servizio non affidabile) oppure dipende da caratteristiche specifiche dellapplicazione (es.: in alcuni casi preferiamo una consegna dei dati
veloce anche se con qualche errore).
Alcuni esempi in questo senso sono:
- servizio affidabile e orientato alla connessione: trasferimento di file (non possono mancare pezzi e il
file non pu essere "rimescolato");
- servizio non affidabile con connessione: nelle trasmissioni in tempo reale (quali voce e video) le relazioni temporali fra i bit del flusso devono essere mantenute. meglio qualche disturbo ogni tanto, piuttosto che interruzioni momentanee, ma avvertibili, del flusso di dati.
- servizio non affidabile privo di connessione (datagram service, cio telegramma): distribuzione di
posta elettronica pubblicitaria, non importa se qualche messaggio si perde.
- servizio affidabile privo di connessione (acknowledged datagram service): si invia un breve messaggio e si vuole essere assolutamente sicuri che arrivato.
20
3. connect.response();
4. connect.confirm();
5. data.request(): si cerca di inviare dati;
6. data.indication(): sono arrivati dei dati;
7. disconnect.request(): si vuole terminare la connessione;
8. disconnect.indication(): l'altra entity vuole terminare.
La sequenza di primitive che gestiscono una connessione la seguente:
21
22
- Livello di applicazione: Contiene i software applicativi e i protocolli necessari per offrire servizi agli
utenti: il trasferimento file, la posta elettronica, le conferenze elettroniche, i database distribuiti, ecc.
Un router gestisce soltanto la parte della rete composta dai primi tre livelli, detta sottorete di comunicazione (subnet).
Spesso, le competenze sui livelli gestiti dai vari elaboratori sul cammino dei dati sono visualizzate mediante diagrammi simili al seguente:
23
dal server.
Successivamente se ne sono aggiunti altri, fra cui:
- DNS (Domain Name Service): converte il nome di host in un indirizzo IP; ci consente di identificare ogni computer della rete mediante una stringa evocativa (invece di una sequenza numerica).
- NNTP (Network News Transfer Protocol): trasferimento di articoli per i newsgroup. Consente la
diffusione di notizie a un newsgroup.
- HTTP (HyperText Transfer Protocol): alla base del Word Wide Web. Consente il dialogo tra un
client e un server web.
I protocolli nell'architettura TCP/IP si collocano come segue:
24
25
Applicazione
PROTOCOLLO
APPLICATIVO
Trasporto
Trasporto
PROTOCOLLO DI
TRASPORTO
SOTTORETE
COMUNICAZIONE
DI
ALLA CONNESSIONE
CLIENT
Apri socket
Connettiti a server
Finch c' connessione
Scrivi
Leggi
Chiudi connessione
26
dove host un nome DNS o un indirizzo IP in notazione puntata decimale, e port il numero di porta
TCP sulla quale deve esserci un processo server in ascolto.
Ad esempio:
mySocket1 = new Socket("cesare.dsi.uniroma1.it", 80);
mySocket2 = new Socket("151.100.17.25", 80);
connessione TCP).
27
3.4 Esercizi
1. Scrivere un semplice client che dialoghi con il server precedente.
2. data una classe SocketServer parzialmente progettata. Questa classe ha due campi di esemplare
streamIn e streamOut correttamente inizializzati che sono rispettivamente lo stream d'input e lo stream
28
29
4 Il livello fisico
Questo capitolo illustra gli aspetti principali del livello fisico, che riguardano:
- la teoria della trasmissione dei dati, per capire i limiti fondamentali imposti dalla fisica;
- le caratteristiche dei mezzi trasmissivi pi comuni;
- le caratteristiche del sistema telefonico.
30
Un segnale periodico (come un suono) scomponibile nella somma di "molte" vibrazioni, ognuna avente
una sua frequenza e una sua intensit. La diversit tra i timbri degli strumenti causata proprio dal numero
e dall'ampiezza di queste vibrazioni generate dal segnale sonoro. Quindi, noi possiamo "memorizzare
completamente" un suono mediante la frequenza e l'ampiezza di ogni vibrazione.
31
2. Le ampiezze delle armoniche tendono a zero al tendere dellordine dellarmonica di n a +. (Attenzione: Le ampiezze non sono necessariamente decrescenti, per "mediamente" si avvicinano a 0 quando n
aumenta.)
Il numero maggiore di armoniche necessarie a ricostruire un segnale maggiore per un segnale che varia
bruscamente nel tempo rispetto ad uno segnale che varia lentamente.
32
del segnale originario prelevati negli istanti considerati, che prendono appunto il nome di campioni.
Es. Un segnale ha una durata di 10 secondi ed campionato con una frequenza di 100 campioni al secondo (cio, campionato ogni 10 millisecondi).
Il segnale campionato conterr una sequenza di 100 * 10= 1000 numeri.
@
4.1.2.2 Quantizzazione
La quantizzazione discretizza l'insieme delle ampiezze. Pi precisamente, converte il valore di ogni campione (che appartiene all'insieme continuo delle ampiezze) in un valore memorizzabile soltanto mediante
un numero finito nBit di bit.
Per ottenere ci, consideriamo l'intervallo (compreso tra un valore minimo e un valore massimo) composto
dai valori possibili dei campioni; poi, dividiamo l'intervallo in pow(2,nBit) sottointervalli, ad ognuno dei
quali associamo un valore discreto, ottenuto mediante gli nBit stabiliti in precedenza. Adesso, convertiamo
(cio, quantizziamo) ogni campione dal suo valore iniziale continuo al valore discreto che abbiamo precedentemente associato al sottointervallo di appartenenza del campione iniziale.
La quantizzazione causa un errore di quantizzazione, che la differenza tra il valore quantizzato e il valore iniziale. L'insieme di questi errori conduce al rumore di quantizzazione.
Se decidiamo di associare ad ogni sottointervallo il valore uguale alla media tra il valore minimo e il valore
massimo del sottointervallo, allora l'errore massimo la met della larghezza massima tra tutti i sottointervalli.
33
zo, e questo migliora l'efficienza complessiva del sistema di trasmissione. Ci significa che qualche segnale usa l'intervallo di frequenza che parte dalla frequenza 0 e qualche altro segnale (shiftato) parte da una
frequenza maggiore di 0.
FIS-1
34
Quindi, se "velBit" abbastanza grande (cio, se il segnale abbastanza veloce), il numero di armoniche
che attraversano il canale (e che sono ricevute) insufficiente a ricostruire il segnale originario. Sintetizziamo la situazione al variare di "vBit".
velBit
(bit/sec)
300
4800
9600
19200
38400
Tempo
(msec)
26.67
1.67
0.83
0.42
0.21
Freq. dell'armonica 1
(Hz)
37.5
600
1200
2400
4800
N. di armoniche
ricevute
80
5
2
1
0
Ricostruzione
Possibile
Possibile
Difficile
Quasi impossibile
Impossibile
L'esempio precedente dimostra che una larghezza di banda limitata riduce la velocit di trasmissione di un
segnale binario, anche se il canale completamente privo di rumore. Tuttavia, se usiamo pi livelli di tensione per codificare un segnale (invece di usare soltanto i due livelli di un segnale binario), otteniamo una
velocit pi alta di trasmissione. Vedremo pi avanti questa soluzione.
La locuzione larghezza di banda ha un significato differente tra gli elettronici e gli informatici.
Per gli elettronici, la larghezza di banda (analogica) (come descritto precedentemente) una quantit misurata in Hz.
Per gli informatici, la larghezza di banda (digitale) la velocit massima dei dati in un canale, ed misurata in bit/sec. La velocit dei dati dipende dalla larghezza di banda analogica del canale fisico usato per
trasmissioni digitali, e c' una relazione tra questi due concetti, come vedremo pi avanti. In questo libro, il
contesto chiarir se intendiamo larghezza di banda analogica (Hz) oppure digitale (bit/sec).
35
La quantit di rumore termico presente misurata dal rapporto fra la potenza del segnale S e quella del rumore N, detto S / N. Usualmente, il rapporto S/N espresso nella forma logaritmica 10 * log (S/N, 10) perch varia in un intervallo molto grande. Lunit di misura di questa scala logaritmica il decibel (dB). Ad
es.:
Rapporto S/N Misura in dB
10
10
100
20
1.000
30
pow(10, n)
10*n
Il pi importante risultato del teorema di Shannon (1948) dice che la massima velocit di trasmissione di
dati o capacit di un canale rumoroso, avente una banda passante di B Hz e un rapporto segnale / rumore
S / N, :
Massima velocit dei dati = B * log(1 + (S / N), 2) bit/sec
Questo teorema ci dice qual la migliore capacit di un canale rumoroso e ci dice che non dipende dalla
frequenza di campionamento e dal numero di livelli del segnale (perch, a causa del rumore, un numero
maggiore di livelli pu renderli indistinguibili).
Es. LADSL, che fornisce un accesso ad Internet mediante una normale linea telefonica, usa una banda larga circa 1 MHz. Il rapporto S/N dipende molto dalla distanza tra la casa e il collegamento alla linea; un
rapporto di S/N circa 40 dB in una linea da 1 a 2 km molto buono. Con queste caratteristiche, il teorema
di Shannon dice che il canale non pu trasmettere mai a pi di
Massima velocit dei dati:= B * log(1 + (S / N), 2) = pow(10, 6) * log(1 + (pow(10, 4)), 2)
= pow(10, 6) * 13 = 13 Mbps.
In pratica, lADSL specifica una velocit fino a 12 Mbps, ma gli utenti vedono velocit minori. Questa velocit considerata molto buona; dopo oltre 60 anni, lo sviluppo delle tecniche di comunicazione hanno
fortemente ridotto la distanza tra la capacit di Shannon e quella dei sistemi reali.
Es. Una normale linea telefonica ha banda= 3 kHz e S/N= 30 dB. Quindi,
Velocit massima
:= B * log(1 + (S / N), 2)
= 3.000 * log(1 + 30dB, 2) = 3.000 * log(1 + 1.000, 2) =
= 3.000 * 10 = 30.000 bit/sec
3.000 * log(1001, 2)
4.1.5 Conclusioni
- Per ricevere un segnale identico a quello trasmesso, la banda del mezzo deve essere comprendere ogni
frequenza del segnale trasmesso; altrimenti, il mezzo elimina alcune armoniche dal segnale che quindi
viene distorto, cio alterato. Per, se un numero sufficiente di armoniche arriva a destinazione, il segnale ricevuto comunque interpretabile correttamente.
- La banda di un mezzo trasmissivo nota a priori. Se nota anche la banda di un segnale trasmesso nel
mezzo, possiamo individuare facilmente quali armoniche del segnale attraverseranno il mezzo.
- Comunemente, si dice che "un segnale composto da molti bit occupa pi banda". Infatti, un numero
maggiore di bit/sec da trasmettere richiede un numero maggiore di armoniche necessarie a rappresentare
adeguatamente il segnale. Ci causa (almeno) una delle due conseguenze:
1. Questo segnale usa una banda pi grande, e quindi "toglie" banda ad altri segnali trasmessi contemporaneamente sullo stesso canale. (Ad es., usa le frequenze fino a 100 KHz, invece delle frequenze
fino a 50 KHz.)
2. Questo segnale trasmesso pi lentamente. (Ad es., trasmesso in 10 sec. invece di 5 sec.)
- Un canale di trasmissione pi corto consente di raggiungere un numero pi alto di bit/sec (l'attenuazione
accettabile).
- La trasmissione digitale pi critica di quella analogica (perch genera frequenze pi alte), ma pu essere pi facilmente "rigenerata" lungo il percorso ( sufficiente distinguere fra pochi valori per ripristinare il segnale originario). Nella trasmissione analogica ogni amplificazione introduce distorsione, che
si somma a quella dei passaggi precedenti.
36
37
Il transceiver inserito tagliando il cavo e connettendo i due spezzoni al computer (mediante una struttura a T con ponticelli); la lunghezza massima del cavo circa 200 metri, compresi i cavi di attacco alla
macchina, con distanza minima tra le stazioni 0.5 metri. In questo caso, l'utente pu facilmente accedere
ai ponticelli e quindi pu aprire il circuito e comprometterne il funzionamento, con problemi di affidabilit.
FIS-1
38
- multimodali: raggi diversi possono colpire la superficie con diversi angoli (detti mode), proseguendo
quindi con diversi cammini. Il diametro del core di 50 micron, come quello di un capello.
- monomodali: sono cos sottili (il diametro del core 8-10 micron) che si comportano come una guida
d'onda: la luce avanza in linea retta, senza rimbalzare. Sono pi costose ma reggono distanze pi lunghe
(fino a 30 km).
Le fibre ottiche hanno prestazioni strepitose: con le tecnologie attuali si raggiunge una velocit di trasmissione di 50.000 Gbit/sec (50 Tbit/sec) con un bassissimo tasso d'errore. La pratica attuale di usare una velocit (minore) dell'ordine dei Gbit/sec dipende dall'incapacit di convertire pi velocemente segnali elettrici in luminosi. Infatti, nelle fibre ottiche, il mezzo fisico utilizzato ovviamente la luce; un impulso luminoso rappresenta un 1 mentre la sua assenza uno 0.
Le fibre ottiche sono fatte di un vetro speciale, molto trasparente (si vedrebbe il fondo del mare, se esso
fosse di questo vetro), e quindi attenuano pochissimo il segnale luminoso. L'attenuazione dipende anche
dalla lunghezza d'onda della luce; quindi, si usano comunemente tre particolari bande per la trasmissione
(tutte nell'infrarosso vicino), larghe da 25.000 Ghz a 30.000 Ghz ciascuna (un'enormit).
Un sistema di trasmissione ottica ha tre componenti:
- sorgente luminosa: pu essere un LED o un laser. Converte un segnale elettrico in impulsi luminosi;
- mezzo di trasmissione: la fibra ottica vera e propria;
- fotodiodo ricevitore: converte gli impulsi luminosi in segnali elettrici. Il tipico tempo di risposta di un
fotodiodo 1 nsec., da cui il limite di 1 Gbit/sec.
Ci sono due topologie comuni per le reti basate su fibre ottiche:
- anello: una concatenazione di pi spezzoni di fibre ottiche. Ogni collegamento punto a punto. L'interfaccia pu essere passiva (fa passare l'impulso luminoso nell'anello) o attiva (converte l'impulso in
elettricit, lo amplifica e lo riconverte in luce).
- stella passiva: l'impulso, inviato da un trasmettitore, arriva in un cilindro di vetro al quale sono attaccate tutte le fibre ottiche; viene poi distribuito alle fibre ottiche uscenti. Si realizza cos una rete broadcast.
Rispetto ai cavi di rame, le fibre sono pi leggere a parit di banda (due fibre sono pi capaci di 1.000
doppini, e pesano 100 kg/km contro 8.000 kg/km), ed difficile l'inserimento di intrusi per spiare il traffico. Gli svantaggi sono un maggior costo delle interfacce e delle giunzioni ed inoltre la comunicazione unidirezionale, quindi per realizzare la comunicazione a due vie servono due fibre.
La fibra ottica ancora poco usata; il suo uso caratterizzato da altissime velocit (>150 Mbit/sec), da
lunghe distanze di interconnessione ed infine da ambienti con problemi di compatibilit elettromagnetica.
39
tando sempre di pi ai dati digitali, grazie ai nuovi mezzi trasmissivi, come le fibre ottiche.
La seguente tabella mostra la differenza di qualit tra le due tipologie di connessione:
Velocit dei dati
Tasso di errore
7
8
[10
,
10
]
bit/sec
1 su 1012
Cavo fra 2 computer
[104, 105] bit/sec
1 su 105
Linea telefonica
40
41
di 4 kHz); questo campionamento produce altrettanti 8.000 (= 2 * 4000) valori a 7 bit (in USA) o 8 bit (in
Europa). Questa tecnica si chiama PCM (Pulse Code Modulation) ed usata da ogni sistema telefonico
moderno. Di conseguenza, il ritmo di funzionamento di ogni sistema telefonico basato su un intervallo di
tempo fondamentale di 125 microsecondi. Quindi, il segnale vocale digitalizzato richiede 8 * 8.000 bit/sec,
cio 64 Kpbs.
4.3.4 Commutazione
Il sistema telefonico commutato, cio ogni linea in ingresso alla centrale telefonica non sempre alla
stessa linea in uscita, ma la connessione dipende dalla richiesta di connessione dell'utente.
Ci sono due tipi principali di commutazione:
- Commutazione di circuito: Quando si effettua una telefonata, il sistema stabilisce una connessione fisica dedicata fra il chiamante ed il chiamato. Il traffico quindi fluisce su questa connessione. Naturalmente, la connessione in realt costituita prima sul circuito locale e poi come successione di canali a
64K. In questo caso, richiesto un certo tempo (anche alcuni secondi) per il connection setup; dopo, il
segnale viaggia senza ulteriori ritardi. Difficilmente ci sono situazioni di congestione.
- Commutazione di pacchetto: Il sistema non stabilisce una connessione fisica fra sorgente e destinazione. I dati da inviare sono spezzettati in pacchetti, che vengono inviati indipendentemente gli uni dagli
altri, possono percorrere strade diverse e sono riordinati solo a destinazione. Fra i vantaggi: non si riserva banda in anticipo (che verrebbe poi sprecata in assenza di traffico) e non c' il ritardo per il
connection setup. Uno svantaggio risiede nel fatto che la congestione pu insorgere in ogni momento.
Attualmente i sistemi telefonici (ottimizzati per la fonia) sono a commutazione di circuito. Invece, le reti di
elaborazione sono comunemente a commutazione di pacchetto, pur offrendo in generale anche servizi di
tipo connesso.
42
- commutato: richiesto da un utente a seguito di una chiamata e rimane a sua disposizione per l'intera
durata della chiamata, come nell'accesso dial-up.
- dedicato: predisposto in fase di configurazione dellutente e permane a sua disposizione 24 ore su 24.
4.3.5.1 Collegamenti dedicati
I collegamenti dedicati possono essere distinti in due categorie:
- CDA - Collegamento Diretto Analogico;
- CDN - Collegamento Diretto Numerico.
Il CDA il servizio di interconnessione fornito dal gestore di una rete pubblica di telecomunicazioni. Realizza fra due sedi dell'utente una connettivit analogica permanente adatta al trasferimento di un segnale
caratterizzato da una dinamica in ampiezza e frequenza prestabilite.
Le velocit di trasferimento dati vanno da 2400bit/sec a 64000 bit/sec. Questa tecnologia obsoleta e viene
sostituita da soluzioni pi recenti. Il CDA era usato nei centri di calcolo che necessitavano di un collegamento dedicato, quando le linee commutate non erano soddisfacenti. Con l'introduzione delle centrali numeriche i collegamenti analogici tra le centrali stesse sono stati rimpiazzati da dorsali digitali ad alta velocit.
Il CDN un collegamento fisico permanente full-duplex, realizzato tra due sedi del cliente mediante apparati che rappresentano la terminazione del collegamento, installati in entrambe le sedi e mediante apparati
della rete trasmissiva pubblica. Equivale ad una linea diretta dedicata tra le due sedi. Viene fornito con diverse opzioni di velocit: da 2400 bit/sec fino a 2048 kbit/sec, per passi discreti (2.4, 4.8, 9.6, 14.4, 19.2,
48 , 64, Nx64 kbit/sec, con N variabile da 2 a 32). La rete trasmissiva che fornisce tale servizio caratterizzata da bassi tassi di errore, alta disponibilit e possibilit di gestione da remoto; la trasmissione dati tra
gli apparati disposti agli estremi del CDN trasparente temporalmente (ritardo costante) e la rete trasparente ai codici utilizzati.
Prolungando un collegamento digitale dall'interno della centrale fino alla presa dell'utente, stato possibile
fornire un servizio completamente digitale, a velocit pi elevata e minor tasso d'errore. Il CDN usa la
commutazione di pacchetto, pertanto con i CDN possibile sfruttare tutto, o in parte, il flusso di dati delle
dorsali inserendo all'interno delle trame utilizzate per i canali telefonici digitali il traffico degli utenti.
4.3.5.2 xDSL
La rete di accesso in rame (il tradizionale doppino telefonico) nata per il trasporto della telefonia analogica, ma pu fornire il trasporto di servizi numerici ad alta velocit impiegando utilizzando la tecnologia
DSL (Digital Subscriber Line). Esistono varie tecnologie DSL, nate tutte con l'obiettivo di migliorare le
prestazioni delle trasmissioni su doppino di rame. Esse sono complessivamente identificate con il termine
generico "xDSL".
La "x" di xDSL viene sostituita ogni volta dalle lettere iniziali della particolare tecnologia, perch DSL
non un protocollo unico, ma una famiglia di soluzioni che si differenziano per le applicazioni e per la
velocit dei collegamenti.
Le principali tecnologie DSL sono:
- ADSL (Asymmetric Digital Subscriber Line): la velocit dei dati in ricezione maggiore rispetto a
quella dei dati in trasmissione.
- HDSL (High-bit rate Digital Subscriber Line): la velocit dei dati in ricezione uguale a quella dei
dati in trasmissione.
- RADSL (Rate Adaptive Digital Subscriber Line): dispositivo ADSL in grado di regolare la velocit in
funzione delle caratteristiche della linea.
- VDSL (Very high speed Digital Subscriber Line): l'ultima generazione, ancora in fase di consolidamento.
Tra queste tecnologie, si sono in particolare affermate ADSL e HDSL, che offrono servizi evoluti ed efficienti.
4.3.5.3 Caratteristiche e requisiti
Le caratteristiche peculiari dell'accesso a larga banda realizzato tramite il sistema xDSL sono riassunte in:
- Si usa una sola coppia simmetrica in rame.
- La possibilit di uso della rete analogica tradizionale per il servizio voce inalterata. Quindi, la linea dei
dati in ingresso non collegata al filtro ([300, 3.400] Hz), usato per la voce,
- La velocit diminuisce all'aumentare della lunghezza del collegamento e dipende da altri fattori, tra cui
lo stato del circuito locale (ultimo miglio). Quindi, oltre una data distanza, l'azienda telefonica non pu
43
44
Fisicamente, nel lato centrale, il DSLAM (Digital Subscriber Line Access Multiplexer) composto da diversi modem ADSL e svolge una funzione di adattamento tra la rete di accesso e la rete di transito.
Per la modulazione del segnale a larga banda ADSL si impiega la tecnica DMT (Discrete MultiTone) gi
standardizzata in ambito ANSI ed ETSI. Con questo tipo di modulazione multiportante la banda viene suddivisa in 256 sottocanali ciascuno dei quali destinato alla trasmissione di una porzione del flusso informativo. In questo modo le attenuazioni sono circa costanti allinterno delle sottobande e non necessario
impiegare equalizzatori di canale in ricezione riducendone quindi complessit e costi associati.
10
12
14...
7...
Ogni numero pari associato alla sua met, cio ad unico numero naturale; viceversa, ogni naturale associato al suo doppio. In questo modo, contiamo i numeri pari e vediamo che sono tanti quanti i naturali;
quindi l'insieme dei numeri pari discreto.
Una corrispondenza biunivoca tra Z (insieme dei numeri interi) e N la seguente:
0
-1
-2
-3
Il matematico Cantor ha dimostrato che anche l'insieme Q dei numeri razionali numerabile.
Quindi, gli insiemi P (numeri pari), N, Z e Q hanno tutti la stessa cardinalit, che detta aleph-zero ed
indicata con il simbolo 0.
Un insieme continuo un insieme infinito non numerabile.
Cantor ha anche dimostrato che l'insieme R dei numeri reali non numerabile e ha cardinalit maggiore di
aleph-zero. La cardinalit di R (cardinalit del continuo) detta aleph-uno e indicata con il simbolo 1.
Hanno la stessa cardinalit di R (e sono quindi insiemi continui) l'insieme dei punti di una retta, l'insieme
dei punti di una semiretta, l'insieme dei punti di un segmento, l'insieme di tutti i numeri reali compresi tra
un minimo e un massimo.
Cantor ha dimostrato anche l'esistenza di infinite cardinalit (ognuna maggiore delle precedenti) dell'infinito.
dove:
45
5*sen(3*t)= a[1]*sen(2*/(2*)*t)+
a[2]*sen(2*/(2*)*2*t)+a[3]*sen(2*/(2*)*3*t)+ .. ->
a[1]= 0; a[2]= 0; a[3]= 5; a[n]= 0 per n>=4.
I coefficienti b[n] si ottengono analogamente:
b[1]= 0; b[2]= 6; b[n]= 0 per n>=3.
I coefficienti c[n] si ottengono facilmente:
c[1]= 0; c[2]= 6; c[3]= 5; c[n]= 0 per n>=4.
46
pari a quella della portante non modulata. In questo caso si parla di modulazione OOK (On-Off Keying).
Questo tipo di modulazione abbastanza semplice da realizzare ma non molto utilizzato per le trasmissioni
dati a grande distanza a causa della sua notevole sensibilit al rumore.
47
un riferimento di fase rispetto al quale sia possibile rivelare le variazioni di fase del segnale ricevuto. Questa necessit rende difficoltoso il compito del demodulatore, perch il canale telefonico soggetto a fenomeni di distorsione di fase.
Per superare tali inconvenienti si utilizza la modulazione di fase differenziale (DPSK o Differential Phase
Shift Key), che impiega per la rivelazione dei dati un metodo basato sul confronto relativo alle fasi, cio la
rivelazione avviene confrontando la fase in un determinato istante con quella del salto precedente.
Il modem accetta in ingresso un segnale digitale e produce in uscita una portante analogica opportunamente modulata. Ora, poich la banda passante (e quindi la velocit di segnalazione) limitata a 3 kHz, sappiamo che non si possono trasmettere pi di 6 Kbit/sec (per il teorema di Nyquist) se il segnale a due valori. Per raggiungere velocit superiori si deve riuscire ad aumentare il numero dei possibili valori trasmessi.
Normalmente la modulazione di fase differenziale avviene su N= pow(2, n) livelli, ad ogni livello associata una sequenza di 8 bit. La differenza fra la rivelazione coerente assoluta a la rivelazione differenziale
sta nel fatto che nel primo caso si paragona al fase del segnale ricevuto con un riferimento da considerare
privo di disturbi mentre nel secondo caso vengono confrontati due segnali entrambi affetti dallo stesso disturbo, ottenendo quindi una maggiore immunit al rumore. Per aumentare il numero di livelli con una
buona immunit al rumore, i modem pi veloci utilizzano la modulazione differenziale di fase e ampiezza
combinate.
Ad esempio, modulando opportunamente sia ampiezza che fase si possono rappresentare 16 valori diversi,
quindi si possono ottenere 4 bit per simbolo. Dunque, una linea che trasmette 2.400 simboli/sec (come in
un circuito locale) trasmette 9.600 bit/sec.
I diagrammi che definiscono i punti (nello spazio a coordinate polari ampiezza - fase) corrispondenti a valori validi del segnale da trasmettere si chiamano constellation pattern. Quello sopra citato definito nello standard V.32, emesso da ITU. un esempio di standard per il livello fisico.
Un altro constellation pattern definito nello standard V.32 bis, per velocit di 14.400 bit/sec su linea a
2.400 simboli/sec. Utilizza pow(2, 6)= 64 punti per trasmettere 6 bit per simbolo.
Infine, il V.34 viaggia a 28.800 bit/sec, quindi trasmette 12 bit per simbolo. Si deve notare che con questi
due standard possono sorgere problemi se la linea telefonica pi rumorosa del normale (teorema di Shannon).
Un modo per aumentare ulteriormente le prestazioni ricorrere a meccanismi di compressione dei dati
prima di trasmetterli. In tal modo, a parit di velocit, si inviano pi informazioni.
Due standard importanti per la compressione dei dati sono: V.42 bis, emesso da ITU e MNP 5, standard de
facto (Microcom Network Protocol).
Infine, per consentire una trasmissione contemporanea nei due sensi (full-duplex), ci sono due tecniche:
- suddividere la banda in due sottobande, una per ogni direzione; cos per si dimezza la velocit. Questa
tecnica tipica degli standard per le velocit pi basse, ad esempio V.21 per 300 bit/sec;
- cancellazione dell'eco: ogni modem sfrutta l'intera banda e cancella in ricezione gli effetti della propria
trasmissione.
4.4.3.4 Modulazione in banda base
Nel caso di linee private o fisiche, che permettono il collegamento diretto tra due elaboratori posti a breve
distanza, i segnali di informazione in forma digitale non richiedono alcun processo di conversione analogicodigitale in quanto non si hanno problemi dovuti alla banda passante del mezzo trasmissivo; per necessario eliminare dal segnale digitale la componente continua.
I modem in banda base operano con la codifica di Manchester, un codice bifase che prevede una modulazione differenziale di fase di unonda rettangolare, la cui frequenza pari alla velocit di trasmissione prescelta, effettuando un salto di fase di 180 ogni volta che il segnale da trasmettere uno 0. In effetti la portante il clock, per cui il modem in banda base un dispositivo tipicamente sincrono. Il codice di Manchester in pratica impiega un intero ciclo di onda quadra per trasmettere un livello alto o un livello basso, con
la differenza che al bit uno si associa una semionda positiva pi una semionda negativa, mentre al bit zero
si associa una semionda negativa pi una semionda positiva.
4.5 Esercizi
Rappresentare ogni risultato mediante un nome evocativo; descriverlo mediante una frase chiara; esprimerlo in funzione dei dati o di altri risultati trovati precedentemente, mostrando i passaggi intermedi; indicare
la sua unit di misura.
48
1. L'ampiezza dell'armonica generica i(= 1, 2, ..) di un segnale s(t) 100 / pow(3,i). Si vuole ricevere ogni armonica (di s(t)) con ampiezza >= 1 attraverso un canale trasmissivo avente banda 3 MHz.
Qual la massima frequenza che pu avere s(t) per consentire il passaggio sul canale di tutte le armoniche suddette?
2. L'analisi di Fourier di un segnale s(t) avente frequenza 1500 kHz indica che l'ampiezza dell'armonica
generica i(= 1, 2, ..) 100 / pow(5, i). Si vuole trasmettere s(t) attraverso un canale trasmissivo
avente banda 5 MHz.
A. Quante armoniche attraversano il canale?
B. Definiamo guadagno del segnale il rapporto tra:
1) la somma totale delle ampiezze del segnale in uscita dal mezzo, e
2) la somma totale delle ampiezze del segnale in ingresso nel mezzo.
Quanto vale il guadagno del segnale?
Sugg. Per calcolare 2), bisogna usare la formula a pg. 9
3. Un segnale analogico sA(t) assume, con la stessa probabilit, tutti i valori nell'intervallo [-1, 5] V. Il
segnale quantizzato in modo da:
- Minimizzare l'errore massimo.
- Memorizzare ogni valore mediante 3 bit.
A. Qual l'errore massimo di quantizzazione?
B. Qual l'errore medio di quantizzazione?
4. L'analisi di Fourier di un segnale s(t) avente frequenza 100 kHz indica che:
- L'ampiezza di ogni armonica di indice pari (2, 4, ..) 0.
- Le ampiezze delle armoniche di indice dispari decrescono linearmente in base alla sequenza:
A[1]:= 9
A[3]:= 7
A[5]:= 5
..
49
5.2 Framing
I metodi principali di suddivisione dei bit in frame sono:
- Conteggio dei caratteri;
- Riempimento di byte;
- Riempimento di bit;
- Violazione della codifica del livello fisico.
5.2.1 Conteggio
Il mittente inserisce all'inizio del frame un campo contenente il numero di caratteri del frame:
50
A B C D E F
A FLAG B
A ESC FLAG FLAG
FLAG E F FLAG
FLAG ESC FLAG ESC FLAG FLAG
Inizio
Segnale trasmesso
1
1
0
0
0
1
1
1
Fine
0
Punto di rilevazione
Vantaggi:
- Facilita la sincronizzazione fra mittente e destinatario, perch ogni bit di dati individuato mediante la
51
Il numero di coppie differenti (P1[i], P2[i]) detto distanza di Hamming delle due parole. Se la distanza
di Hamming tra le parole P1 e P2 d, ci vogliono esattamente d errori su altrettanti bit della parola P1 per
trasformarla nella parola P2.
dato un insieme di parole della stessa lunghezza, detto codice. La distanza di Hamming di un codice
il minimo delle distanze di Hamming fra tutte le possibili coppie di parole del codice.
Es.: Il codice {1011, 0111, 0000} ha distanza di Hamming 2.
La rilevazione o la correzione gli errori sono possibili soltanto se il codice usato ha un'opportuna distanza
di Hamming. In particolare:
- Per rilevare nErr errori serve un codice con distanza di Hamming nErr+1. Infatti, una parola trasformata da qualsiasi nErr errori (o un numero minore) diventa una parola non appartenente al codice, e ci
rivela che errata.
- Per correggere nErr errori serve un codice con distanza di Hamming 2*nErr+1. Infatti, una parola trasformata da nErr errori pi vicina a quella originaria che a qualunque altra parola valida.
Dunque, a seconda degli scopi da raggiungere, si individuano r bit di controllo (in funzione degli m bit di
dati) in modo da avere un codice (composto da parole di n= m + r bit) avente la desiderata distanza di
Hamming.
00000
00000
11111
11111
00000
11111
00000
11111
d(P1,P3)= 5;
d(P1,P4)= 10;
d(P2,P3)= 10;
d(P2,P4)= 5;
00000 00111
d(P3,P4)= 5.
52
00000 11111
00000 00111
00000 11111
00000 00000
x
x
x
x
x
x
x
Assegno al bit di controllo Ci la somma senza riporto dei bit di dati corrispondenti a Ci.
Es. Calcolare il codice Hamming della parola 0110.
Soluzione
I bit di dati vanno piazzati nelle posizioni 3, 5, 6, 7:
c[3]= 0
c[5]=1
c[6]=0
c[7]= 0
Il destinatario calcola ogni bit di controllo Ci in modo analogo al mittente. Se il destinatario calcola un bit
Ci diverso da quello ricevuto, allora c' un errore tra i bit di dati che determinano Ci. Poich questo bit errato corrisponde soltanto ad alcuni bit di controllo, individuabile elaborando i bit Ci di controllo che in ricezione sono differenti dal valore calcolato:
Indice del bit errato= SUM (i | C[i] calcolato != C[i] ricevuto)
Es. Correggere l'errore del codice Hamming 1100100.
Soluzione
Bit di controllo
Valore ricevuto
Val. calcolato
c[1]
c[2]
c[4]
1
1
0
1
0
1
Confronto
==
!=
!=
Quindi, il bit errato in posizione 6, cio il suo valore originario l'opposto di quello ricevuto, cio 1.
La parola corretta senza i bit controllo : 0110.
@
53
- Il destinatario inserisce ogni messaggio ricevuto in una matrice, una parola in ogni colonna; alla fine,
ogni riga di questa matrice contiene il codice Hamming di ogni parola trasmessa.
- Un eventuale disturbo su k bit consecutivi avviene su ogni messaggio trasmesso; quindi, modifica 1 bit
di ogni parola trasmessa, e quindi ogni errore ricostruibile.
1
o
La distanza di Hamming di questo codice 2, e dunque pu rilevare un errore. Infatti, un errore trasforma
il frame in uno contenente un numero dispari di 1, e quindi una parola non valida.
Per rilevare raffiche di errori di lunghezza <= k mediante il bit di parit, si pu usare una tecnica analoga a
quella che corregge raffiche di k errori mediante il codice Hamming. La differenza che si usa un solo bit
di controllo per ogni parola, e non r.
Esiste anche la variante che aggiunge un bit di parit "dispari", cio tale che il numero totale di bit uguali
ad 1 sia dispari.
5.3.4 Confronto tra codici per la correzione e per il rilevamento degli errori
I codici correttori di errore sono usati raramente (ad esempio, nelle trasmissioni simplex, dove il ricevente
non pu chiedere una ritrasmissione al mittente), perch in generale pi efficiente rilevare gli errori e ritrasmettere (soltanto quando c' un errore) i dati corrotti invece di usare un codice (pi dispendioso in termini di ridondanza) per la correzione degli errori.
Es.: Consideriamo un canale con: blocchi dati di 1.000 bit; errori singoli (un bit per blocco); probabilit di
errore uguale a 10-6 per bit.
Per correggere un errore singolo su un blocco di 1.000 bit mediante il codice di Hamming, ci vogliono
log(1.000,2)= 10 bit di controllo; quindi, la trasmissione di un Megabit richiede l'aggiunta di
1.000*10= 10.000 bit di controllo.
Invece, per rilevare un errore singolo in un blocco mediante la parit, sufficiente aggiungere un bit ad
ogni blocco. Poich il tasso d'errore 10-6, soltanto un blocco su 1.000 sbagliato e quindi deve essere ritrasmesso. Di conseguenza, per ogni Megabit si deve rispedire un blocco compreso il bit di parit, cio
1.001 bit; dunque, la trasmissione di un Megabit richiede l'aggiunta di 1.000 bit di parit (uno per ogni
blocco) e di 1.001 bit (il blocco ritrasmesso), per un totale di 2.001 bit contro i 10.000 del codice di
Hamming.
@
54
re ha r+1 bit.
- Si calcola la differenza tra xr * M(x) e il resto della divisione effettuata al passo precedente. Il risultato
il frame seguito dal checksum, cio la sequenza da trasmettere, ed ovviamente divisibile per G(x).
Questa sottrazione fatta mediante un XOR sugli r bit meno significativi (perch il resto ha al massimo
r bit), e quindi non modifica M (perch M non occupa gli r bit meno significativi )
Es.: Trasmettere la sequenza 1101 0110 11 usando il polinomio generatore x4 + x + 1.
Il mittente aggiunge 4 zeri (in grassetto nello schema) dopo la sequenza e divide la sequenza risultante con
la stringa 10011 (corrispondente al polinomio generatore).
10011
110
100
10
10
1
1
0
0
011011
1
11
11
1011
1001
10
10
1110
il CRC da aggiungere in coda alla sequenza dei bit da trasmettere. Quindi, il messaggio da trasmettere 1101 0110 1111 10.
Il destinatario rif le stesse operazioni elencate sopra mediante lo stesso polinomio generatore: se il resto
0, la trasmissione stata corretta.
Questo metodo molto potente; infatti, si pu dimostrare (vedi parzialmente negli approfondimenti) che
un codice polinomiale con r bit rileva:
- ogni errore di un numero dispari di bit;
- ogni raffica di errori di lunghezza <= r (quindi, anche ogni errore su due bit consecutivi).
Inoltre, questo metodo anche efficiente; infatti, il mittente pu calcolare il CRC durante la trasmissione
(invece di calcolarlo prima) e, analogamente, il destinatario pu calcolare il CRC durante la ricezione (invece di calcolarlo dopo avere ricevuto tutta la sequenza).
Questi polinomi sono standard internazionali:
- CRC-12: x12 + x11 + x3 + x2 + x1 + 1;
- CRC-16: x16 + x15 +x2 + 1;
- CRC-CCITT: x16 + x12 + x5 + 1;
Un CRC a 16 bit rileva anche il 99.997% delle raffiche lunghe 17 bit e il 99.998% di quelle lunghe 18, se
gli m bit del messaggio sono distribuiti casualmente (poich questo non vero nella realt, le raffiche di 17
e 18 sfuggono con una frequenza maggiore di quella indicata prima).
Il calcolo del CRC pu essere implementato, oltre che mediante un software, anche mediante un semplice
circuito che effettua qualche shift. Questa soluzione usata nelle LAN e in qualche linea punto-a-punto.
seq
ack
info
55
Destinatario
void protocollo_StopAndWaitDestinatario() {
seq= 1
while (true) { // Loop infinito
frame= attendiDatiDalLivelloFisico() // $frame e` il frame ricevuto.
if (crcOk(frame)) { // Il frame e` stato trasmesso correttamente.
inviaAckAlLivelloFisico()
if (seq == iSeq(frame)) { // $frame e` ricevuto per la prima volta.
inviaDatiAlLivelloNetwork(estraiDati(frame))
seq= 1 - seq
} // if
} // if
} // while
} // protocollo_StopAndWaitDestinatario
In sintesi:
- Il mittente inserisce in ogni frame nuovo l'identificativo (1,0,1,0..,) e lo invia quando un ack arriva;
finch ci non succede, ritrasmette lo stesso frame.
- Il destinatario invia un ack di conferma per ogni frame corretto, ma consegna al livello di network solo i
frame con la sequenza 1,0,1,0...
56
Se il frame fr[x+1] si perde o si danneggia, il mittente invia fr[x], fr[x+1], fr[x+1], fr[x+2] e il destinatario riceve ed accetta fr[x], fr[x+1], fr[x+2]:
57
Per risolvere il problema precedente, la durata del timeout deve essere maggiore della somma tra:
- il tempo di trasmissione del frame pi grande,
- il tempo di elaborazione in ricezione,
- il tempo di trasmissione dell' ack del destinatario.
Quindi deve essere:
Durata del timeout > (Tempo di trasmissione del frame di dati pi grande)
+ (Tempo di elaborazione del frame di dati)
+ (Tempo di trasmissione del frame di Ack)
Se il destinatario inviasse un ack solo quando riceve un frame fr[x] per la prima volta, ci potrebbe essere
un loop, perch il destinatario rifiuterebbe ogni ricezione di fr[x] successiva alla prima perch fr[x] non
avrebbe il codice previsto.
58
- nella direzione da A a B, viaggiano i frame dati inviati da A a B e i frame di ack inviati da A a B (in risposta ai frame dati inviati da B ad A);
- nella direzione da B a A, viaggiano i frame dati inviati da B a A e i frame di ack inviati da B a A (in risposta ai frame dati inviati da A ad B);
I frame hanno anche un campo kind che indica il tipo di frame: di dati o di ack.
C' un'idea migliore: B, quando deve inviare un ack ad A, aspetta di ricevere (dal livello di network) un
frame dati (da inviare ad A) e mette anche questo ack dentro questo frame dati. Questa tecnica si chiama
piggybacking (= portare a spalle).
Il campo ack serve proprio a trasmettere un eventuale ack. Questa tecnica risparmia notevolmente la banda
usata e la cpu; infatti, un ack non inviato in un apposito frame, che richiede un tempo (per creare e riempire la struttura, per calcolare il checksum, ecc.) e una trasmissione (e quindi l'uso di banda).
Lutilizzo di questa tecnica per causa un problema: per quanto tempo il destinatario B aspetta un frame
(dal proprio livello di network) sul quale trasportare un ack che deve essere inviato? Non troppo, perch, se
lack non arriva in tempo, il mittente A ritrasmette il frame anche se ci non necessario. Dunque, si stabilisce un limite al tempo di attesa di un frame sul quale trasportare lack; trascorso tale tempo, si crea un
frame apposito nel quale si trasmette solo lack.
Diminuendo il numero di ack da trasmettere, si velocizzano le operazioni di trasmissione; per questo, alcuni protocolli hanno introdotto le finestre scorrevoli (sliding-windows). I protocolli a finestra scorrevole
stabiliscono un certo numero (larghezza della finestra) di frame dati che si possono inviare consecutivamente senza attendere lack di riscontro. I protocolli a finestra scorrevole sono full-duplex (per i dati),
sfruttano il piggybacking e sono pi robusti di quelli stop-and-wait.
Ogni frame inviato contiene un indice di sequenza, da 0 a 2n-1 (l'indice seq ha da n bit, e ricircola sugli
stessi valori). La finestra definita da un intervallo di indici [indIniz, indFin] validi di sequenza. La
finestra :
- scorrevole, cio indIniz o indFin possono essere modificati;
- di grandezza variabile, che <= della capienza massima della finestra.
5.4.2.1 Finestra del mittente
Il mittente memorizza l'intervallo degli indici di sequenza che pu trasmettere: gli indici di sequenza dentro la finestra rappresentano i frame da spedire oppure quelli spediti ma non ancora confermati.
Quando un nuovo frame arriva dal livello di network, l'indice corrispondente entra nella finestra perch il
frame dovr essere trasmesso.
Quando arriva un ack, l'indice corrispondente esce dalla finestra perch l'arrivo corretto del frame stato
confermato.
Il mittente memorizza i frame dentro la finestra per la possibile ritrasmissione; se il buffer pieno, il livello di data link sospende la ricezione di pacchetti che arrivano dal livello di network.
5.4.2.2 Finestra del destinatario
Il destinatario memorizza l'intervallo degli indici di sequenza che pu accettare: se riceve un frame avente
un indice fuori dalla finestra, lo scarta (e non invia il relativo ack); se riceve un frame avente un indice
dentro la finestra, accetta il frame, spedisce il relativo ack e eventualmente aggiorna l'indice inferiore.
Se la finestra del destinatario ha sempre grandezza 1, il destinatario accetta i frame soltanto nell'ordine di
arrivo. (Se la grandezza maggiore di 1, questo non detto.)
59
La finestra del mittente pu differire da quella del destinatario nella grandezza o nel limite inferiore o nel
limite superiore. In questo modo, il livello di data link ha pi libert nell'ordine di trasmissione.
In ogni caso, il livello di network consegner i pacchetti nell'ordine di partenza dal mittente (non nell'ordine di arrivo al destinatario).
5.4.2.3 Protocolli go-back-n e selective repeat
Se il tempo di andata e ritorno del segnale alto (ad es., in un canale satellitare il tempo tipicamente ca.
500 + 500 msec), i protocolli stop-and-wait sono molto inefficienti, perch quasi sempre sono fermi per
aspettare l'ack. Per migliorare le cose, si pu consentire l'invio di un certo numero di frame anche senza
aver ricevuto l'ack del primo. Questa tecnica detta pipelining, che, per, causa un problema: il mittente
invia molti frame prima di sapere che un frame precedente si rovinato.
Una prima soluzione al problema quella del protocollo go-back-n (=indietreggia di n):
- Se un frame arriva danneggiato o con un numero errato di sequenza, il destinatario ignora tale frame e
tutti i successivi, cio non invia i relativi ack. Ci corrisponde ad una finestra di grandezza 1 nel destinatario, che quindi accetta i frame solo nell'ordine giusto.
- Quando il mittente va in timeout sul frame danneggiato e poi su tutti quelli successivi (scartati dal destinatario), ritrasmette tutti questi frame.
Il mittente bufferizza ogni frame non confermato per poterlo eventualmente ritrasmettere; se riempie il so
buffer, blocca il livello di network finch il buffer pieno. C' spreco di banda se il tasso d'errore alto o il
timeout lungo.
Una seconda soluzione, pi efficiente, detta selective repeat (=ripetizione selettiva):
- Il destinatario bufferizza ogni frame ricevuto dopo un eventuale frame rovinato; quando questo arriva
nuovamente (senza errori), il destinatario lo consegna al livello di network insieme a tutti quelli successivi contigui mantenuti nel buffer.
- Per ogni frame arrivato bene, il destinatario invia un ack col numero pi alto della sequenza completa
arrivata fino a quel momento.
- Quando c' un timeout, il mittente rispedisce soltanto il frame corrispondente.
Con il protocollo selective repeat, il mittente e il destinatario gestiscono entrambi un buffer: il mittente
memorizza i frame non confermati; il destinatario memorizza i frame arrivati dopo un frame corrotto;
quindi, richiesta una quantit maggiore di memoria. Per, c' un basso spreco di banda.
Entrambi i protocolli go-back-n e selective-repeat devono gestire pi timer (uno per ogni frame inviato e
non confermato); il ricevente invia gli ack mediante il piggybacking, se possibile, o mediante un apposito
frame.
60
Flag
01111110
Indirizzo
(1 byte)
Controllo
(1 byte)
Area dati
(numero variabile di bit)
CRC
(2 byte)
Flag
01111110
Flag il flag byte di inizio e fine trama (01111110), ed rimpiazzato se compare nel campo Dati.
L'Indirizzo determina il destinatario del frame nelle configurazioni multi-punto.
L'Area dati contiene le informazioni vere e proprie, di lunghezza variabile. Non c' nelle trame di supervisione.
Il CRC generato dal polinomio x16+x12+x5+1.
Il Controllo specifica il tipo di trama (cio, contiene le informazioni necessarie alla gestione della connessione). Ci sono tre tipi di trame:
- Trame di Informazione
0 NS (3 bit) P/F
NR (3 bit)
- Trame di Supervisione
10 T(2 bit)
P/F
NR (3 bit)
P/F
M(3 bit)
61
Flag il flag byte di inizio e fine trama (01111110), ed rimpiazzato se compare nel campo Dati.
Address vale sempre 11111111 per indicare che tutte le stazioni devono accettare il frame.
Control vale per default 00000011 e indica un frame non numerato (cio, indica che per default PPP un
protocollo senza connessione e senza riscontro).
Poich i campi Address e Control hanno valore costante nella configurazione di base, LCP pu negoziare
l'opzione di non trasmetterli, risparmiando cos 2 byte.
Protocol indica il tipo di pacchetto contenuto nel campo Dati. LCP pu negoziare la grandezza a 1 byte.
Dati contiene i dati da trasmettere; ha una lunghezza variabile fino ad una massima grandezza negoziata.
In genere ha una lunghezza base di 1500 byte.
Checksum contiene il checksum; la lunghezza di solito 2 byte ma pu essere negoziata a 4 byte.
5.5.2.1 Funzionamento tipico di un PC che si connette a Internet per diventare host
- Il PC chiede una connessione al router del provider mediante un modem.
62
5.5.3 PPPoE
PPPoE (RFC 2516) significa "Point-to-Point Protocol over Ethernet"; incapsula frame PPP in frame Ethernet ed utilizzato per le connessioni Internet su linee DSL. Fornisce le caratteristiche standard di un protocollo PPP: autenticazione, cifratura, compressione, etc.
Il PPPoE un protocollo di tunneling che incapsula il livello IP su una connessione tra due porte Ethernet
pur mantenendo le caratteristiche di un collegamento PPP; per questo motivo utilizzato per "comporre il
numero" virtualmente di un altro computer dotato di connessione Ethernet e per stabilire una connessione
punto-a-punto con esso; su questa connessione vengono poi trasportati i pacchetti IP in base alle caratteristiche del PPP.
Per rilevare l'errore "E(x)", sufficiente rendere E(x) non divisibile per G(x):
- Il secondo fattore (che chiamiamo E2(x)) non divisibile per G(x) perch
grado(E2(x))< grado(G(x)), che discende dalla: grado(E2(x))= k-1 < r = grado(G(x))
- Il primo fattore (che chiamiamo E1(x)) non divisibile per G(x) se scegliamo
G(x):= 1 + un altro monomio qualsiasi.
5.7 Esercizi
Commentare ogni espressione impostata ed etichettarla con un simbolo.
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.
5.7.1 Framing
1. Una sequenza di byte trasmessa mediante byte di inizio e fine. Ogni frame contiene 100 byte. Ogni
byte appartiene al codice Ascii base.
A. Qual il numero massimo di byte di dati in un frame?
B. Qual la probabilit di avere un frame composto dal numero massimo di byte di dati?
63
2. 80 bit sono trasmessi mediante il riempimento di bit e sono distribuiti in frame di lunghezza <= 60 bit.
A. Quanti bit di dati ci sono al massimo in un frame?
Supponiamo di avere la sequenza composta soltanto dal valore 1.
B. Quante sequenze di 5 bit di dati ci sono nel primo frame?
C. Quanti bit di dati ci sono nel primo frame?
D. Quanti bit di dati ci sono nel terzo (ed ultimo) frame?
E. Quanti bit di controllo ci sono nel terzo frame?
3. Il livello di data-link riceve dal livello superiore $nBitDati bit di dati e li codifica mediante Manchester; dopo la codifica, il numero di bit diventa $nBitTot. Definiamo rendimento il rapporto $nBitDati / $nBitTot.
A. Qual il valore minimo del rendimento, in funzione di $nBitDati?
B. Qual il valore minimo di $nBitDati bit per avere un rendimento >= 0,4?
4. Un frame trasmette $nBDati bit di dati (pi i bit di controllo) mediante la codifica di Manchester. I primi
due e gli ultimi due bit del frame trasmesso arrivano correttamente; ogni altro bit ha una probabilit $p di
arrivare correttamente a destinazione. ($nBDati e $p sono dati.)
A. Qual la probabilit per il primo bit di dati di essere interpretato erroneamente dal destinatario?
B. Qual la probabilit per il frame di arrivare completamente integro al livello di network?
64
65
66
67
68
Supponiamo di avere nella rete "nBuff" buffer, ognuno dei quali pu memorizzare 1 bit.
Allora, la capienza cBRete di bit memorizzabili dalla rete cBAn + nBuff bit. Quindi, se il numero di bit
del token maggiore o uguale a nBRete, necessario inserire un buffer aggiuntivo in qualche stazione.
69
Linsieme di una stazione base e dei servizi da essa offerti alle stazioni mobili detto cella.
Il secondo modo non usa stazioni base; le stazioni mobili comunicano esclusivamente fra di loro, senza
collegamenti con una rete esterna. In questo caso si parla di rete ad hoc.
Indipendentemente dalla presenza di stazioni base, in una WLAN ci sono numerosi problemi da risolvere,
causati dalluso della trasmissione senza fili:
- collisioni: devono essere gestite mediante appositi protocolli.
- interferenze e riflessioni: Sono minimizzate grazie a tecniche trasmissive a spettro distribuito.
- privacy: i dati devono essere crittografati, perch chiunque pu intercettare una trasmissione radio.
- mobilit delle stazioni: necessario un meccanismo per gestire lo spostamento di una stazione mobile
da una cella ad un'altra.
70
6.5 Esercizi
Commentare ogni espressione impostata ed etichettarla con un indice progressivo compreso tra [].
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.
1. Una LAN token ring a 50 Kbit/sec ha un timer di possesso del token di 10ms. La LAN non possiede
buffer (neanche negli host) per memorizzare bit trasmessi.
A. Qual il massimo numero di byte che pu avere un frame (composto dal token e dai dati) inviato da un
host sullanello?
B. Aggiungendo dieci stazioni alla rete, il tempo di una circolazione completa del token aumenta del 25%.
71
72
73
Ethernet supporta 4 ripetitori; quindi pu collegare 5 cavi, cio pu estendere il cablaggio da 500 metri a
2500 metri.
MAC-2
74
- Se il bridge ignora dove l'host detinatario, invia il frame su ogni LAN tranne quella del mittente, mediante una tecnica detta flooding (che vedremo meglio pi avanti).
Un hub copia tutto ci che riceve da una linea su tutte le altre. Invece, un bridge, quando acquisisce un
frame, lo analizza e lo instrada. Un bridge pu essere configurato in modo da filtrare (cio non far passare)
alcuni tipi di traffico, mediante l'indirizzo LLC, che identifica il protocollo di livello superiore, o mediante
l'indirizzo MAC del mittente o del destinatario.
Un bridge progettato per connettere LAN di tipo diverso deve risolvere vari problemi legati alle diverse regole in vigore su tali LAN, tra cui:
- formati differenti dei frame;
- velocit differenti dei dati;
- differente lunghezza massima dei frame: un frame non pu essere spezzato in questo livello; quindi, se
troppo grande, deve essere scartato;
- funzioni previste da un tipo di LAN ma non dall'altra. (Ad esempio, il concetto di priorit c' in 802.5,
ma non ha un equivalente in 802.3.)
7.2.2.1.1 Standard IEEE per i bridge
I bridge standardizzati da IEEE sono di due tipi: transparent bridge e source-routing bridge.
Il transparent bridge diventa operativo semplicemente mediante la connessione fisica alla rete e l'accensione. Quando il bridge riceve un frame, memorizza in una tabella di instradamento la LAN di provenienza del frame (che la LAN che contiene l'host mittente) e quindi aumenta la sua conoscenza sulle posizioni degli host, e successivamente invier i frame successivi in modo pi mirato (e quindi pi efficiente). Il bridge aggiorna continuamente la tabella, dalla quale rimuove gli indirizzi che non ha visto negli ultimi minuti (quindi, se un host spostato, entro pochi minuti di nuovo indirizzato correttamente).
MAC-0A
75
76
77
Dunque, il frame, esclusi il preambolo e il delimitatore, deve essere costituito da almeno 64 byte.
Se la velocit di trasmissione della linea aumenta di k volte, il periodo di vulnerabilit diminuisce di k volte; quindi, l'ultima disequazione soddisfatta se:
- Il numero minimo di bit aumenta di k volte, oppure
- Il tempo di propagazione sulla rete] diminuisce di k volte, cio la lunghezza massima ammessa per la
rete diminuisce di k volte.
Vedremo pi avanti la soluzione del problema per il protocollo Fast Ethernet (100 Mbit/sec), dove k 10.
7.3.3.2 Protocollo MAC
Il protocollo 802.3 un CSMA/CD di tipo 1-persistente, per cui una stazione:
- prima di trasmettere, la stazione aspetta che il canale sia libero; subito dopo, inizia a trasmettere;
- se c' una collisione, la circuiteria contenuta nel transceiver invia una sequenza di jamming di 32 bit, per
avvisare le altre stazioni;
- se la trasmissione non riesce, la stazione attende una quantit di tempo casuale e poi riprova.
La quantit di tempo di attesa regolata dallalgoritmo di regressione binaria esponenziale.
Dopo una collisione, il tempo discretizzato con uno slot time pari a 51,2 microsecondi (cio, il tempo di
trasmissione di 512 bit, cio 64 byte, che la lunghezza minima di un frame senza contare il preambolo ed
il delimitatore). Il tempo di attesa prima della prossima ritrasmissione un multiplo intero dello slot time, e
viene scelto a caso in un intervallo i cui estremi dipendono dal numero di collisioni avvenute:
- dopo n collisioni, il numero r di slot time di attesa scelto a caso nell'intervallo 0 <= r <= 2k-1, con
k = min(n, 10);
- dopo 16 collisioni si rinuncia (inviando un messaggio di errore al livello superiore).
La crescita esponenziale dell'intervallo garantisce una buona adattabilit ad un numero variabile di stazioni. Infatti:
- Se il range fosse sempre piccolo, con molte stazioni si avrebbero praticamente sempre collisioni.
- Se il range fosse sempre grande, non ci sarebbero quasi mai collisioni ma il ritardo medio (met range*slot time) causato da una collisione sarebbe molto elevato.
78
Le prestazioni osservate sono molto buone, migliori di quelle stimabili in via teorica.
La pratica ha mostrato che 802.3 pu sopportare un carico medio del 30% (3 Mbit/sec) con picchi del 60%
(6 Mbit/sec); con un carico medio, il 3% dei frame ha una collisione e lo 0,03% ha pi di una collisione.
79
stazioni della rete. Questo problema risolto segmentando la rete, per creare pi domini di collisione usando degli switch.
La rete controllata da un hub collegato allo switch diventa un segmento con il proprio dominio di collisione. Questa soluzione riduce il traffico e aumenta la larghezza di banda. Si possono realizzare cos LAN estese comprendenti molti nodi, se la rete segmentata secondo criteri opportuni. Per esempio, lo switch
collegato ad una singola stazione, allora non ci sono collisioni, e quindi la comunicazione full-duplex e
punto a punto (full-duplex link). Questo utile se la stazione un server, che di solito gestisce una parte
considerevole del traffico. Un collegamento full-duplex garantisce risposte pi rapide ai vari client.
80
Durata
(2)
Indirizzo 1 (6)
Indirizzo 2 (6)
Indirizzo 3 (6)
Sequenza (2)
Indirizzo 4 (6)
Dati (0-2312)
Checksum (4)
W
O
81
82
Se allinizio della procedura la stazione A trova il canale occupato, essa attende un tempo casuale (determinato con un algoritmo di regressione binaria esponenziale analogo a quello di 802.3) e ricomincia daccapo. Uguale comportamento viene adottato se A non riceve il frame CTS dopo aver inviato il frame RTS,
o se non riceve il frame di Ack dopo aver inviato il frame dati.
83
84
numeri di Ack (questi ultimi due omessi per i servizi datagram), ecc.
Gli indirizzi LLC sono lunghi un byte e sostanzialmente indicano quale protocollo di livello superiore deve
ricevere il frame di livello di network; in questo modo LLC offre un supporto multiprotocollo al livello superiore.
Il frame LLC viene imbustato, in trasmissione, in un frame dell'opportuno sottolivello MAC. Il processo
inverso ha luogo in ricezione.
Mediante cablaggi opportuni UTP con hub o switch tutti gli host possono essere connessi mediante struttura ad albero facilmente separabile fisicamente. La separazione pu essere determinata da:
- necessit di ottimizzazione ( meglio che gli utenti di un database specifico molto usato non intasino la
rete locale con il loro traffico pesante)
- necessit di sicurezza ( meglio che il database dell'ufficio amministrativo sia tenuto in un ramo distinto
della rete locale, per minimizzare la possibilit di accessi non autorizzati)
Se la separazione della rete locale fosse effettuata fisicamente, gli utenti dello stesso ufficio dovrebbero essere collocati nello stesso luogo, ma questo non sempre si verifica. Inoltre, ogni spostamento interno (personale che cambia stanza ma non cambia ufficio, o viceversa) richiederebbe un ricablaggio della rete.
Per risolvere questi problemi, il comitato 802 ha standardizzato un protocollo chiamato VLAN (Virtual
LAN), che separa la topologia fisica della rete dalla sua topologia logica.
- La rete divisa in VLAN. Ogni VLAN vista dai switch come una rete locale separata dalle altre.
- Lo switch memorizza le VLAN collegate ad ogni sua porta dentro una tabella (differente da quella di
instradamento) configurata manualmente.
- Un frame appartenente ad una VLAN pu essere instradato solo sulle porte appartenenti a quella
VLAN.
- Lo switch memorizza una tabella di instradamento specifica per ogni VLAN, cio si comporta come
uno switch multiplo.
85
Il frame 802.1Q ha, dopo il campo destination address, due byte con valore 0x8100, seguito da due byte di
Tag contenente il numero di 12 bit identificativo della VLAN, e dalla lunghezza del campo dati e dal resto
del frame.
7.8 Esercizi
Commentare ogni espressione impostata ed etichettarla con un indice progressivo compreso tra [].
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.
1. data la rete mostrata in figura. Le interfacce di rete di ogni switch sono numerate con: 0, in alto; 1, a
destra; 2, in basso; 3, a sinistra. Le tabelle di instradamento degli switch sono inizialmente vuote.
---------------X ------| S1 |------| S2 |------| S3 |
---------------|
|
Y
Z
Per ogni passaggio, mostrare le variazioni nelle tabelle di instradamento compilando la tabella seguente.
(Legenda: Si:= Switch i-esimo; H:= Host; IR:= Interfaccia di rete.)
Passaggio
S1
H
S2
H
S3
H
X invia un pacchetto a Z.
Le risposte ai "Perch" non sono richieste quando la risposta non riguarda nessuno switch.
X invia un pacchetto a Z.
A. Quali switch imparano dove X? Perch? Perch gli altri switch non imparano?
B. Linterfaccia di rete di Y vede il pacchetto? Perch?
Successivamente, Z invia un pacchetto a X.
86
C. Quali switch imparano dove Z? Perch? Perch gli altri switch non imparano?
D. Linterfaccia di rete di Y vede il pacchetto? Perch?
87
8 Il livello di network
Il livello di network serve a controllare il movimento dei pacchetti dal mittente al destinatario. A differenza
del livello di data-link, che usa tutto il canale fisico, il livello di network attraversa soltanto i dispositivi intermedi (router) necessari. I compiti svolti dal livello sono:
- Instradare i pacchetti lungo la sottorete di comunicazione (routing dei pacchetti);
- Controllare il flusso dei dati per evitare di inviare troppi dati a un router (pi lento) che non riesce ad elaborarli tutti.
- Interconnettere reti diverse (internetworking).
Il livello di network delimita la sottorete di comunicazione; quindi, in una rete pubblica, i servizi di
network sono linterfaccia tra la societ di comunicazione e lutenza.
8.1 Router
Un router un dispositivo per il passaggio dei dati che agisce a livello di network e che instrada i frame
nella rete mediante un algoritmo opportuno. La funzione di router pu essere eseguita da un dispositivo
specializzato oppure da un computer contenente un software apposito.
Ogni router ha alcune linee di ingresso e di uscita. Quando un router riceve un frame da una linea, elimina
dal frame l'intestazione e la coda (che sono gestiti dal livello di data-link), esamina la parte rimanente e decide su quale linea inoltrarlo. (Quindi, dal frame eliminato l'indirizzo 802 a 48 bit. Il router ignora se il
frame arriva da una LAN oppure da una rete punto-a-punto.)
Il principale strumento di lavoro di un router la sua tabella di routing, che indica, per ogni possibile
destinazione, la linea in uscita da usare per raggiungere la destinazione. Il routing :
- Statico, se le tabelle dei router sono calcolate off-line e caricate nel router allaccensione.
- Dinamico, se i router calcolano periodicamente le proprie tabelle, per gestire eventuali variazioni nella
struttura della rete.
Normalmente ogni linea del router gestisce due buffer: in uno deposita i pacchetti entrati da quella linea e
nell'altro deposita i pacchetti che usciranno verso quella linea. Il router prende un pacchetto da un buffer di
ingresso, lo esamina per individuare la sua destinazione, consulta la propria tabella e deposita il pacchetto
nel buffer di uscita corrispondente.
NETW-1
88
Figura 8-2: Servizi orientati alla connessione (a) e privi di connessione (b)
Circuito virtuale
Datagram
Maggiore (in ogni pacchetto c
Banda trasmissiva Minore (in ogni pacchetto c' l'ID del circuito)
l'indirizzo di destinazione)
Spazio sui router Maggiore (c' una tabella per i circuiti virtuali)
Minore
Ritardo per il setup
Presente
Assente
Ritardo per il routing
Assente
Presente
Maggiore ( possibile in ogni moCongestione
Minore (le risorse sono allocate in anticipo)
mento)
Vulnerabilit
Alta
Bassa
89
Il routing individua, mediante un particolare algoritmo (ad es., in base alla distanza minima tra due nodi),
il percorso che collega qualunque mittente a qualunque destinatario. Il routing crea, per ogni nodo della rete, alcune informazioni (ad es., nella tecnologia IP crea la tabella di routing) che specificano la direzione
per ogni destinazione.
Il forwarding (inoltro) si differenzia dal routing perch non individua il percorso globale, ma soltanto il
prossimo nodo del percorso. Non conosce in anticipo tutto il percorso; i dati arrivati in un nodo e vengono
inoltrati verso un nodo opportuno. (Queste informazioni locali sono state individuate precedentemente dal
routing.)
Ambedue i processi (routing e forwarding) sono necessari per l'operativit di una rete. Tuttavia, il forwarding deve essere obbligatoriamente gestito dall'architettura di rete; invece, il routing pu essere gestito
dall'amministratore.
Un algoritmo di routing individua i nodi raggiungibili e memorizza, in ogni nodo coinvolto dal percorso,
le informazioni che saranno necessarie al forwarding per andare verso questi nodi.
L'operazione di memorizzazione deve essere coerente, per evitare che due nodi prendano decisioni contrapposte quando i dati sono inviati verso una certa destinazione. L'incoerenza deleteria perch pu originare loop (un pacchetto viene rimpallato ciclicamente su un insieme di pi nodi), buchi neri (un pacchetto
viene ricevuto da un nodo che non sa in che direzione instradarlo e perci lo scarta) e altro ancora.
Un algoritmo di routing dovrebbe anche individuare il percorso migliore, secondo una metrica decisa
dallutente, tra quelli percorribili. L'utente pu scegliere il percorso avente il minimo tempo medio di recapito di un pacchetto, oppure quello avente il minimo numero di router attraversati, oppure quello avente la
banda maggiore, etc.
La metrica consente di individuare il costo, cio un numero che misura la qualit della soluzione trovata.
L'algoritmo preferir il percorso a costo minore secondo quella determinata metrica. Il costo pu essere
calcolato usando anche due o pi metriche pesate opportunamente; ad es., il costo pu dipendere dal ritardo medio con un peso del 75% e dalla distanza tra i due interlocutori con un peso del 25%. I criteri possono essere anche contrastanti; ad es., si vuole minimizzare il ritardo medio di ogni pacchetto e contemporaneamente massimizzare l'uso delle linee, ma il primo criterio si realizza minimizzando il riempimento dei
buffer nei router, mentre il secondo si ottiene massimizzando lo stesso parametro.
Un algoritmo ottimale (cio, che cerca il percorso migliore) solitamente aumenta le richieste di risorse
(memoria, CPU) ma talvolta individua una soluzione poco migliore di unaltra soluzione nota. Inoltre,
laumento delle richieste di risorse pi che proporzionale rispetto al numero di nodi; talvolta, un algoritmo pu richiedere un tempo di calcolo o una quantit di memoria inaccettabili.
90
un nodo su una rete reale si accorge di un collegamento guasto soltanto quando questa informazione gli arriva. Quindi, nel transitorio, soltanto alcuni router conoscono la topologia aggiornata della rete.
La risoluzione di un imprevisto richiede un periodo necessario alla rete per tornare alla stabilit. I fenomeni pi tipici che possono accadere in questi casi sono:
Black Hole: Un router ignora altri percorsi per la destinazione e quindi scarta ogni frame che gli arriva.
Routing Loop: Alcuni router fanno circolare un frame all'interno dello stesso percorso finch il frame non
scartato per eccessivo time to live. Un loop pi pericoloso di un black hole, perch questo ricircolo
pu congestionare progressivamente la rete.
8.3.3 Classificazione
Come abbiamo gi anticipato, gli algoritmi di routing si dividono in due classi principali:
- algoritmi statici, che individuano il routing all'avvio della rete; i router usano sempre quel routing.
- algoritmi dinamici, che correggono continuamente il routing iniziale della rete, a seconda del traffico,
della topologia della rete, etc. Questi algoritmi sono eseguiti all'avvio della rete e rimangono in esecuzione sui router durante il funzionamento della rete. Gli algoritmi dinamici si differiscono fra loro per:
- la provenienza delle informazioni (locale, oppure dai router adiacenti, oppure da tutti i router);
- il periodo di revisione delle decisioni (a intervalli di tempo prefissati, oppure quando il traffico sulla
rete o la topologia cambiano);
- la metrica di valutazione adottata (distanza, numero di hop, tempo di transito stimato).
In molte reti (Internet compresa) si usano:
- un algoritmo dinamico nella zona interna della rete, per sfruttare al meglio le maglie della rete, oppure
in zone dove la variabilit dei percorsi pi elevata.
- un algoritmo statico nelle zone esterne della rete, perch pi semplice; inoltre, una zona esterna ha solitamente una topologia ad albero, cio c' un solo cammino che la connette al resto della rete; quindi, in
questo caso, un algoritmo dinamico inutile.
91
destinazione, un sink tree, e quindi instrada i pacchetti dentro questo sink tree.
92
A
B
F
G
E
C
H
E
Vicini non
marcati
B,
C,
E,
H
C,
D
D
G
F
G
A
m
F
T
p
=
B
c
0
m
F
p
=
A
C
c
m
F
p
=
m
F
p
=
m
F
p
=
m
F
p
=
m
F
p
=
A
m
F
T
H
p
=
T
T
C
H
12
10
B
1
C
2
D
3
E
4
93
B
3
C
2
D
3
E
4
3
5
5
4
4
6
3
5
5
4
4
6
B
2
C
D
E
vuole arrivare
da A.)
vuole arrivare
vuole arrivare
vuole arrivare
ad A da C. (C dista
ad A da B o D.
ad A da C o E.
ad A da D.
Quindi, ogni router aumenta la sua distanza per arrivare ad A. Questo inconveniente detto conteggio
allinfinito.
Se la distanza rappresenta il numero di hop, si pu porre come limite il diametro della rete; invece, se rappresenta il ritardo, si deve porre un limite molto alto, altrimenti un cammino con un ritardo occasionalmente alto (ad es., a causa di congestione) verrebbe interrotto.
Sono state proposte molte soluzioni al problema del conteggio allinfinito, ma nessuna veramente efficace. Nonostante ci, il distance vector routing era l'algoritmo di routing di ARPANET ed usato anche in
Internet col nome di RIP (Routing Internet Protocol), e nelle prime versioni di DECnet e IPX.
8.3.6.2 Routing basato sullo stato dei canali (link state routing)
Nel link state routing, ogni router misura il tempo di invio fra s e ogni suo vicino e glielo comunica.
Mediante questo tempo, il router ricostruisce localmente la topologia completa dell'intera rete e calcola il
cammino minimo fra s e ogni altro. I passi da seguire sono:
- scoprire i vicini e identificarli;
- misurare il costo delle relative linee;
- costruire un pacchetto con tali informazioni;
- mandare il pacchetto a tutti gli altri router;
- costruire la topologia dell'intera rete mediante gli analoghi pacchetti arrivati dagli altri router.
- calcolare il cammino pi breve verso ogni altro router.
Quando il router si avvia, invia un pacchetto ECHO su ogni linea in uscita e quindi riceve da ogni vicino
r' l'indirizzo di r' (univoco in tutta la rete). Inviando vari pacchetti ECHO e misurando il tempo medio di
arrivo della risposta diviso 2, il router calcola il ritardo della linea.
Quindi, il router costruisce un pacchetto (pacchetto di link state) con: ID del mittente, indice di sequenza
del pacchetto, et del pacchetto, lista dei vicini con i relativi ritardi. La costruzione e l'invio di tali pacchetti
avviene tipicamente a intervalli regolari o quando accade un evento significativo (es.: una linea va gi o
torna su).
La distribuzione dei pacchetti fatta di solito mediante il flooding; nei pacchetti sono inserite le coppie (ID
del router iniziale, Indice di sequenza) per eliminare i duplicati. Ogni pacchetto confermato. Per evitare
la circolazione di qualche pacchetto nello stesso percorso (per qualche errore), l'et del pacchetto viene decrementata ogni secondo, e quando arriva a zero il pacchetto viene scartato.
Combinando le informazioni arrivate, ogni router costruisce il grafo della rete e calcola il cammino minimo verso ogni altro router.
Il link state routing usato in Internet: il protocollo standard OSPF (Open Shortest Path First) basato
su tale principio e sta diventando l'algoritmo pi utilizzato.
94
95
pacchetti in ingresso per vedere se sono destinati alla linea d'uscita che in allarme. In caso affermativo,
invia all'host di origine del pacchetto un pacchetto di strozzamento (choke packet) per avvertirlo di diminuire il flusso.
Quando l'host sorgente riceve il pacchetto di strozzamento diminuisce il flusso (tipicamente lo dimezza) e
ignora i successivi pacchetti di strozzamento per un tempo prefissato, perch tipicamente ne arriveranno
molti in sequenza. Trascorso tale tempo prefissato, l'host attende altri pacchetti di strozzamento e se arrivano, riduce ancora il flusso; altrimenti, aumenta di nuovo il flusso.
L'unico problema di questa tecnica la lentezza di reazione, perch l'host che produce i pacchetti impiega
un certo tempo per ricevere i choke packet e per diminuire di conseguenza il ritmo della trasmissione. Per
migliorare le cose si pu costringere ogni router sul percorso, appena riceve tali pacchetti, a rallentare subito il ritmo. In tal caso si parla di hop-by-hop choke packet.
Questa tecnica alleggerisce molto pi velocemente il primo router che problemi di congestione, ma richiede pi spazio di buffer nei router sul percorso dall'host originario a quel router.
8.5 Internetworking
Come sappiamo, le architetture di rete possono differenziarsi, ad es., nei tipi di servizio offerti, nelle modalit di indirizzamento, nella grandezza massima dei pacchetti e nel loro formato.
La connessione di reti eterogenee (internetworking) presenta alcuni problemi non banali, tra i quali:
- difformit nei servizi offerti (ad esempio, solo su una rete offre un servizio connesso);
- difformit nei formati dei pacchetti e degli indirizzi;
- difformit, nelle subnet, dei meccanismi di controllo dell'errore e della congestione;
- difformit nella grandezza massima dei pacchetti.
Questi problemi sono gestiti mediante tecniche basate sull'uso di switch (che operano a livello di data-link)
e di router multiprotocollo (che operano a livello di network e che possono gestire contemporaneamente
pi protocolli di network).
8.5.2 Tunneling
Il tunneling, una tecnica usata quando le due reti che comunicano sono entrambe di tipo X ma sono connesse da una rete diversa di tipo Y. (Questo caso pi semplice di quello gestito da un router multiprotocollo.)
96
8.5.3 Frammentazione
Quando i pacchetti arrivati da una rete sono troppo grandi per transitare su un altra, il livello di network
della rete di origine deve spezzettare il pacchetto in frammenti prima di consegnarli alla rete intermedia e
il livello di network della rete di destinazione deve ricomporre i frammenti quando questi giungono dalla
rete intermedia in quella di destinazione. (Come vedremo, il protocollo IP gestisce questa funzionalit.)
97
98
- Time to live contatore (inizializzato a 255) che decrementato di uno a ogni hop (o ad ogni secondo).
Quando arriva a zero, il pacchetto viene scartato.
- Protocol codice del protocollo di livello di trasporto a cui consegnare i dati (i codici sono definiti in
RFC 1700).
- Header checksum checksum di controllo dell'header: si sommano (in complemento ad uno) le parole a
16 bit dello header, considerando il checksum a zero; si complementa ad uno il risultato; ricalcolato ad
ogni hop (quando il time to live cambia).
- Source address indirizzo del mittente.
- Destination address indirizzi del destinatario.
- Options opzioni. Solo cinque sono definite oggi: security (quanto il pacchetto segreto), strict source
routing (cammino da seguire), loose source routing (lista di router da non mancare), record route (ogni
router appende il suo indirizzo) e timestamp (ogni router appende il suo indirizzo pi un timestamp).
8.6.2 Indirizzi IP
Un indirizzo IP un numero di 32 bit (cio, di 4 byte). Ogni host o router nell'intera rete Internet ha un
unico indirizzo IP; pi correttamente, l'indirizzo IP assegnato ad un'interfaccia di rete, non ad un host.
Quindi:
- Se un host ha un'unica interfaccia di rete (ad es., un PC in LAN), allora ha un unico indirizzo IP.
- Se un host ha n interfacce di rete (ad es., un router connesso ad una LAN e ad n-1 linee punto-a-punto)
ha n indirizzi.
In questo contesto, indicheremo (impropriamente) con il termine host una generica interfaccia di rete.
8.6.2.1 Prefissi
Gli indirizzi IP sono costruiti in modo gerarchico (a differenza degli indirizzi MAC). Ogni indirizzo di 32
bit composto:
- da una parte iniziale di lunghezza variabile, detta prefisso di rete, che identifica la rete IP dove c'
l'host;
- da una parte finale, detta host number, che identifica l'host nella rete.
Tutti gli host di una rete hanno lo stesso prefisso. Quindi, una rete possiede un blocco di indirizzi IP contigui.
Un indirizzo IP di un host scritto nella notazione decimale a punti: ognuno dei 4 byte dell'indirizzo
scritto in cifre decimali (da 0 a 255) e i byte sono separati da un punto. Ad es.: 193.192.140.37
Il prefisso di una rete scritto specificando:
- il pi basso indirizzo IP tra quelli posseduti dalla rete;
- il numero di bit del prefisso, preceduto dal carattere '/'.
Es. L'indirizzo IP 193.192.140.37 appartiene ad una rete che possiede pow(2, 8) indirizzi IP. Allora l'host
number ha 8 bit; quindi, il prefisso occupa 24 bit a partire dall'indirizzo 193.192.140.0, cio scritto
193.192.140.0 /24.
Poich la lunghezza del prefisso non individuabile mediante l'indirizzo IP, i protocolli del routing devono
indicarla ai router.
99
La scrittura /n, dove n lunghezza del prefisso, simboleggia una sequenza, detta maschera di sottorete, i
cui primi n bit sono 1 e gli altri bit sono 0. Mediante un'operazione di AND tra i bit della maschera di sottorete e quelli dell'indirizzo IP possibile estrarre il prefisso della rete
Figura 8-13: a) L' indirizzo IP lungo 8+8+2 bit. b) La maschera di sottorete /18.
La struttura gerarchica degli indirizzi d un vantaggio e due svantaggi.
Il vantaggio che un router inoltra un pacchetto analizzando soltanto il prefisso di rete; ignora l'host number perch tutti gli host della stessa rete si trovano nella stessa direzione rispetto al router. L'host number
sar analizzato soltanto quando il pacchetto raggiunger la rete di destinazione. Quindi, le tabelle di routing sono le pi piccole possibili. Infatti, se un router dovesse memorizzare l'indirizzo di ognuno degli host
su Internet (che sono circa un miliardo), la sua tabella di routing sarebbe grandissima. Invece, usando questa gerarchia, i router devono memorizzare soltanto circa 300.00 prefissi.
Il primo svantaggio che l'indirizzo IP di un host dipende dalla rete in cui si trova, a differenza di un indirizzo Ethernet che pu essere usato ovunque nel mondo. Quindi, un router riuscir soltanto a inviare pacchetti destinati a quel prefisso di rete. Ad es., la progettazione di una rete mobile IP richiede di gestire host
che si spostano tra le reti ma vogliono conservare lo stesso indirizzo IP.
Il secondo svantaggio che la gerarchia spreca molti indirizzi se usata senza attenzione. Se ad una rete
sono assegnati troppi indirizzi, molti di questi indirizzi non saranno usati. Questo spreco sarebbe irrilevante
se gli indirizzi fossero sufficienti; per, stato calcolato che la crescita nell'uso di Internet utilizzer tutti
gli indirizzi entro venti anni. IPv6 la soluzione a questa futura penuria, ma finch non si affermer ci sar
bisogno di usare gli indirizzi IP in modo molto efficiente.
8.6.2.2 Indirizzi speciali
I seguenti prefissi generano indirizzi speciali, e quindi non possono essere assegnati.
- L'indirizzo 0.0.0.0 significa l'host corrente. usato da un host quando questo si sta inizializzando.
- Un indirizzo con tutti 0 nel prefisso significa la rete corrente. usato da un host quando fa riferimento alla propria rete ma non conosce il prefisso (ma deve conoscere la maschera di sottorete, per sapere
quali sono i bit dell'host number).
- Un indirizzo 127.x.y.z /8 significa loopback: un pacchetto inviato a questo indirizzo ricevuto (ed elaborato) soltanto dall'host che lo ha inviato; quindi, il pacchetto non trasmesso nella rete. usato quando si vuole inviare un pacchetto all'host senza conoscere il suo host number. (Ad esempio, usato per
testare localmente un software di rete, oppure per contattare un servizio che si trova sullo stesso host,
ma che l'utente pensa di trovare altrove.)
- L'indirizzo 255.255.255.255 significa ogni host della rete corrente. usato da un host per trasmettere
in broadcast sulla rete corrente.
I seguenti host number generano indirizzi speciali, e quindi non possono essere assegnati.
- Un indirizzo con tutti 0 nell'host number significa indirizzo della rete. usato per indicare sinteticamente tutti gli indirizzi della rete.
- Un indirizzo con tutti 1 nell'host number significa ogni host della rete indicata dal prefisso. usato
da un host per trasmettere in broadcast su una rete differente dalla propria. Molti amministratori di rete
disabilitano questa caratteristica per motivi di sicurezza.
8.6.2.3 ICANN
Lassegnazione degli indirizzi IP coordinata a livello internazionale da ICANN (Internet Corporation for
Assigned Names and Numbers), un ente non profit, con uffici a Marina del Rey e a Bruxelles, che anche
responsabile della gestione del sistema dei nomi a dominio generici di primo livello (gTLD; ad es., .com,
.net, .info) e dei domini nazionali (ccTLD; ad es., .it, .uk). ICANN si appoggia agli RIR (Regional Internet
100
Risolviamo il problema dividendo il blocco di indirizzi in pi parti; l'azienda vede ogni parte come una rete, mentre il mondo esterno vede il blocco di indirizzi come un'unica rete. Questa divisione detta subnetting; le reti ottenute dopo la divisione sono dette subnet o sottoreti. (Il termine "sottorete" in questo contesto differente dal termine, gi visto, di "sottorete" che indica l'insieme dei router e delle linee di comunicazione.)
Il router della sottorete (collegato ad Internet) potrebbe memorizzare, per ogni host destinatario, la coppia
{"indirizzo di host", "sottorete che contiene l'host"}, ma cos vanificherebbe il vantaggio della gerarchia.
Pi efficientemente, il router memorizza soltanto la maschera di ogni sottorete; quando riceve un pacchetto, gli estrae l'indirizzo di destinazione e individua la sottorete dell'host destinatario, cio la sottorete il cui
prefisso uguale al risultato dell'AND tra l'indirizzo IP e la maschera corrispondente.
La divisione in sottoreti potr essere cambiata in futuro (se sar necessario) aggiornando soltanto le maschere di sottorete all'interno dell'azienda. All'esterno, il subnetting non visibile; quindi, una nuova divisione non richiede di contattare ICANN n di modificare qualsiasi database esterno.
@
Es. Per risolvere il nostro problema aziendale, dividiamo il blocco 192.1.0.0 /22 in modo da assegnare met degli indirizzi al dipartimento X, un quarto degli indirizzi al dipartimento Y, un ottavo degli indirizzi al
dipartimento Z; il rimanente ottavo rimane disponibile. Sintetizziamo i risultati nella tabella seguente.
Sottorete interna Prefisso /Maschera di sottorete
Numero di indirizzi
Ultimo indirizzo
Dipartimento X
192.1.0.0 /23
pow(2, 32-23) = pow(2, 9) = 512
192.1.1.255
Dipartimento Y
192.1.2.0 /24
pow(2, 32-24) = pow(2, 8) = 256
192.1.2.255
Dipartimento Z
192.1.3.0 /25
pow(2, 32-25) = pow(2, 7) = 128
192.1.3.127
Parte disponibile
192.1.3.128 /25
pow(2, 32-25) = pow(2, 7) = 128
192.1.3.255
Individuiamo la rete che contiene l'host 192.1.3.9.
Sottorete interna
Dipartimento X
192.1.0.0 /23
Dipartimento Y
192.1.2.0 /24
Dipartimento Z
192.1.3.0 /25
Quindi, l'host destinatario nella rete del dipartimento Z.
AND(192.1.3.9,
maschera di sottorete)
192.1.1.0
192.1.3.0
192.1.3.0
AND = = Prefisso
false
false
true
Successivamente, l'azienda cambia la ripartizione degli indirizzi, in modo da lasciare disponibile il primo
quarto degli indirizzi e di dare un quarto degli indirizzi ad ogni sottorete. Sintetizziamo i risultati nella figura seguente.
101
8.6.2.5 Classi
Nel 1993 gli indirizzi IP sono stati divisi in cinque classi: A, B, C, D, E. La classe di una rete determina il
numero di bit appartenenti all'indirizzo di rete, secondo la seguente figura. Questa tecnica detta indirizzamento classful.
Range del
primo numero
[1, 126]
7 (= 8-1)
[128, 191]
14 (= 16-2)
[192, 223]
21 (= 24-3)
D
E
[224, 239]
[240, 255]
N. di reti disponibili
126
(= pow(2,7)-2)
16.384
(= pow(2,14)
2.097.152
(= pow(2,21)
N. di host disponibili in
ogni rete
16.777.214
(= pow(2,24)-2)
65.534
(= pow(2,16)-2)
254
(= pow(2,8)-2)
Questa struttura ha una grandezza rigida dei blocchi di indirizzi IP. Fornisce pi di 2 miliardi di indirizzi,
ma ne spreca molti milioni. Per molte organizzazioni, una rete di classe A, con 16 milioni di indirizzi,
troppo grande, e una rete di classe C, con 254 indirizzi, troppo piccola. La classe B, che ha 65.534 IP,
sembra dimensionata correttamente; ma alcuni studi hanno mostrato che met delle reti di classe B hanno
meno di 50 host.
Le reti che non usano la divisione rigida delle classi sono dette classless.
8.6.2.6 CIDRClassless InterDomain Routing
L'elevato numero di host di Internet ha indicato che l'indirizzamento IP pi flessibile senza l'uso delle
classi. Quindi, stato definito un nuovo standard di indirizzamento (e anche una nuova implementazione
del software dei router) svincolato dalla suddivisione in classi, detto CIDR (Classless InterDomain Routing) (e pronunciato [said*]). Il CIDR permette di aggregare le reti IP in superreti (oltre che dividerle
in sottoreti, come visto in precedenza).
Es. Un ente ha bisogno di circa 2000 indirizzi IP. Una rete di classe B troppo grande (64.000 indirizzi).
Quindi, acquisisce 8 reti di classe C (8 * 256 = 2.048 indirizzi), dalla 194.24.0.0 alla 194.24.7.0; queste 8
reti di classe C possono essere accorpate in un'unica superrete:
- Prefisso/ Maschera di sottorete: 194.24.0.0/ 21
- Range di indirizzi (escluso quelli speciali): [194.24.0.1, 194.24.7.254]
- Broadcast: 194.24.7.255
@
8.6.3 Routing IP
La sottorete che collega due router costituita soltanto dalle due interfacce di rete e dalla linea di comunicazione.
Una rete fisica (oppure, in questo contesto, semplicemente "rete") un insieme di host aventi le interfacce
di rete collegate fisicamente mediante una particolare tecnologia.
102
Una rete logica l'insieme delle interfacce di rete aventi lo stesso indirizzo di sottorete e collegate senza
attraversare un router; tale condizione viene detta di routing implicito.
IP assumeva originariamente una corrispondenza biunivoca tra reti fisiche e logiche; realizzazioni pi moderne ammettono anche pi reti logiche nella stessa rete fisica e viceversa.
Per scegliere il percorso di routing, bisogna determinare, mediante il prefisso di destinazione, se l'host destinatario diretto, cio se situato sulla stessa rete dell'host mittente, oppure indiretto, cio, situato
su una rete diversa da quella dell'host mittente.
Nel primo caso, un datagramma IP arriva direttamente all'host destinatario.
Nel secondo caso, un datagramma attraversa uno o pi router. Ogni router possiede una tabella (aggiornata
periodicamente) che:
- Per ogni host della rete collegata direttamente al router, memorizza il suo number host.
- Per ogni rete remota nota al router, memorizza:
- il suo prefisso;
- le informazioni necessarie per instradare il pacchetto;
- l'indirizzo del router successivo, nel caso delle linee punto-a-punto.
Inoltre, il router memorizza l'indirizzo di un default router (e la linea da usare per raggiungerlo) al quale
invia ogni pacchetto destinato a una rete sconosciuta.
In sintesi, dato un pacchetto avente il prefisso di rete pref, un router lo instrada come segue:
Se pref 127 // loopback
L'host elabora il pacchetto come se l'avesse ricevuto e non lo trasmette al suo esterno.
Altrimenti se pref 0 (e l'host number non 0) // prefisso di rete
oppure se pref uguale al prefisso di rete del mittente
oppure se pref 255.255.255.255 (broadcast sulla rete del mittente)
Il router non inoltra il pacchetto.
Altrimenti se pref noto al router
Il router inoltra opportunamente il pacchetto (consultando la sua tabella di routing).
Altrimenti
Il router inoltra il pacchetto al router di default.
103
volgere l'amministratore.
N. di host
16.777.216
1.048.576
65.536
Ogni host ha un suo indirizzo IP privato che usa per il traffico interno.
Il collegamento con l'esterno gestito dal protocollo NAT (Network Address Translation, RFC 3022).
Quando un pacchetto inviato da un host verso Internet, attraversa un dispositivo (che non un router),
detto NAT box, che sostituisce l'indirizzo IP privato dell'host contenuto nel pacchetto con un indirizzo
pubblico, identico per tutti gli host interni alla rete. Poi, un router inoltra il pacchetto come al solito.
Quando il server remoto invia la risposta allIP pubblico del router, il NAT box deve individuare l'host che
destinatario della risposta (e che condivide lo stesso IP pubblico con tutti gli altri host). Per risolvere questo problema, i progettisti del NAT hanno osservato che un pacchetto IP contiene un header inserito dal
protocollo TCP (o dall'UDP). Nel capitolo sul livello di trasporto, vedremo che questo header contiene una
porta sorgente e una porta destinazione. Ogni porta un intero di 16 bit che indica, rispettivamente, l'inizio
o la fine della connessione. Queste porte forniscono le informazioni di cui il NAT ha bisogno. Quando un
host interno vuole collegarsi mediante TCP con un server esterno, un processo apre una porta sorgente tra
quelle inutilizzate contenute nella propria macchina; il TCP invia alla porta sorgente i pacchetti ricevuti dal
server esterno su questo collegamento. Il processo apre anche una porta destinazione e le invia i pacchetti
104
destinati al server esterno. (Due host comunicano all'esterno mediante lo stesso indirizzo IP ma mediante
due differenti indirizzi di porta sorgente.)
Un'analogia nel campo telefonico pu chiarire l'uso delle porte. Immaginiamo un'azienda che possiede un
unico numero di telefono. Quando una persona telefona a questo numero, parla con un centralinista che
chiede il numero di interno desiderato e poi collega il telefonista esterno con il numero interno. Il numero
di telefono analogo all'unico IP pubblico condiviso tra tutti gli host e il numero interno analogo alle
porte.
Usando il campo "porta sorgente", possiamo individuare qual l'host destinatario della risposta. Quando il
NAT box attraversato da un pacchetto proveniente da un host interno, sostituisce l' indirizzo IP originario
con l'indirizzo IP pubblico e memorizza in una tabella di traduzione la coppia "indirizzo IP originario, porta sorgente"; infine, ricalcola i checksum e invia il pacchetto all'ISP.
Ogni server remoto risponde indicando l'IP pubblico destinatario (unico per tutti gli host della rete locale) e
la porta sorgente (che dipende dall'host connesso al server remoto). Quando il NAT box riceve un pacchetto dall'ISP, gli estrae il campo "porta sorgente", mediante la tabella di traduzione individua l'indirizzo IP
originario, e lo inserisce nel pacchetto; infine, ricalcola i checksum e invia il pacchetto al router interno
della rete.
Indirizzo privato Porta privata
10.0.0.5
21023
10.0.0.1
386
10.0.0.6
26600
10.0.0.3
1274
Indirizzo esterno
128.10.19.20
128.10.19.20
207.200.75.12
128.210.1.5
Porta esterna
80
80
21
80
Porta NAT
14003
14010
14012
14007
NETW-2
105
gibile; inoltre, gestisce o crea un messaggio per segnalare il superamento del tempo massimo di permanenza in rete (TTL) di un datagramma. Infine, ICMP esegue alcune funzioni di modifica per determinare se
l'intestazione IP errata o incomprensibile.
Il protocollo ICMP descritto in RFC 792 ed un protocollo a basso livello che si appoggia direttamente
su IP. I messaggi viaggiano nel campo dati del datagram IP e sono manipolati dal software IP, non dagli
applicativi utente. ICMP imbustato in IP, indirizzato con 1 nel campo protocol.
Il formato del pacchetto ICMP prevede:
- tipo; indica un particolare messaggio ICMP (descritto nell'elenco successivo);
- codice; viene usato in alcuni messaggi ICMP per specificare alcune condizioni;
- checksum, per il controllo di errore; viene calcolato su tutto il pacchetto ICMP;
- la parte rimanente, per trasmettere dei dati legati al particolare messaggio ICMP.
Esistono molti tipi di messaggi, fra i quali:
- destination unreachable: non si trova la destinazione del pacchetto. Viene inviato al mittente del pacchetto;
- time exceeded: il contatore di un pacchetto arrivato a zero. Viene inviato al mittente del pacchetto;
- redirect: il router pensa che il pacchetto gli arrivato per errore, ad esempio perch un host mobile si
spostato. Viene inviato al mittente del pacchetto;
- echo request, reply: si vuole sapere se una destinazione viva e raggiungibile. Si invia request, si aspetta reply;
- timestamp request, reply: come il precedente, con in pi la registrazione dell'istante di arrivo e partenza,
per misurare le prestazioni della rete.
8.6.5.2 ARP (Address Resolution Protocol, RFC 826)
Il protocollo ARP invidua, dall'indirizzo IP dell'host di destinazione, l'indirizzo di livello di data link necessario per inviare il frame che incapsuler il pacchetto destinato all'host di cui all'indirizzo IP.
Si appoggia direttamente sul livello di data link e non su IP. Ad ogni stazione della LAN inviata, in data
link broadcast, una richiesta del tipo: "chi ha l'indirizzo IP uguale a 151.100.17.102 ?". Il messaggio ricevuto da ogni nodo della LAN, ma solo l'host che ha quell'indirizzo IP risponde, inserendo nella risposta il
proprio indirizzo data link.
8.6.5.3 RARP (Reverse Address Resolution Protocol, RFC 903)
Il protocollo RARP risolve il problema inverso, cio individua l'indirizzo IP corrispondente a un determinato indirizzo data link. Esso utile nel caso di stazioni senza disco interno di memoria, che si avviano caricando l'immagine del codice binario del sistema operativo da un server.
Il vantaggio che una sola immagine binaria va bene per tutte le stazioni: ogni stazione personalizza poi
l'immagine binaria con la determinazione del proprio indirizzo IP mediante una richiesta RARP, nella quale
invia il proprio indirizzo data link (che cablato nell'interfaccia di rete).
8.6.5.4 DHCP (Dynamic Host Configuration Protocol, RFC 2131)
Per funzionare correttamente, un host ha bisogno di un certo numero di informazioni:
- Deve ricevere un proprio numero di rete (detto numero IP).
- Deve conoscere il numero IP del "gateway", cio dell'apparecchio che collega la LAN ad Internet.
- Deve conoscere il numero IP del server DNS (cio di un particolare nodo cha traduce da un indirizzo di
rete in forma alfanumerica al numero IP corrispondente).
Queste informazioni possono essere impostate manualmente in modo facile. Tuttavia, in alcuni casi l'impostazione manuale frequente, e quindi poco pratica. (Ad es., quando un computer portatile collegato ad
una rete Wi-fi oppure quando un ISP ha un numero ristretto di indirizzi e deve gestire molti client ma non
contemporaneamente.)
Per impostare dinamicamente queste informazioni, si pu usare il protocollo DHCP, che configura automaticamente i parametri necessari ad un host che deve connettersi ad una rete locale.
Il funzionamento del DHCP concettualmente assai semplice.
Nella LAN vengono installati uno o pi server DHCP; ogni server DHCP dispone di un gruppo di indirizzi IP, ricorda quali tra questi indirizzi sono stati assegnati, "ascolta" le richieste e risponde adeguatamente.
Quando un host attiva il software per la gestione della rete, fa una "richiesta DHCP" mediante un messaggio "broadcast" (che viene ricevuto da ogni nodo). Per, soltanto i server DHCP rispondono al messaggio
DHCP, offrendo un numero IP e le altre informazioni necessarie. Il richiedente, fra tutti i numeri ricevuti,
ne sceglie uno ed avverte il server DHCP prescelto di memorizzare l'indirizzo IP assegnato; se non riceve
106
107
8.6.7 IP versione 6
Dopo un lungo lavoro, IETF ha approvato il successore di IP versione 4, cio la versione 6 (IPv6, RFC
1883, 1884, 1885, 1886, 1887). I requisiti principali di progetto erano:
- aumentare il numero di indirizzi, ormai quasi esauriti;
- ottenere una maggiore efficienza nei router (tavole pi piccole, routing pi veloce);
- supportare meglio il traffico real time;
- offrire maggiore sicurezza ai dati riservati.
Le principali differenze rispetto alla versione 4 sono:
- indirizzi di 16 byte, il che significa disporre di 216*8 = 2128 indirizzi IP, e cio 7*1023 indirizzi IP per metro quadro su tutto il nostro pianeta.
I primi 48 bit sono assegnati alla rete. I successivi 16 bit identificano la sottorete. Gli ultimi 64 bit (cio,
6 byte) sono ottenuti dall'indirizzo MAC.
Un indirizzo scritto mediante 8 numeri decimali separati dal carattere ':'. Ogni numero rappresenta 16
bit (e quindi varia da 0 a 65535) mediante il formato esadecimale (di 4 cifre; gli 0 iniziali sono facoltativi). La pi lunga successione di numeri zeri consecutivi pu essere abbreviata dalla stringa "::"; le altre
pi parti composte da zeri vanno scritte per esteso.
Es. L'indirizzo IPv6 2031:DB9::1 corrisponde a 2031:0DB9:0000:0000:0000:0000:0000:0001.
- header semplificato: 7 campi contro 13;
- funzioni di autenticazione e privacy, basate su crittografia;
- gestione della qualit di servizio attraverso un campo flow label, che consente di istituire delle pseudoconnessioni con caratteristiche negoziate in anticipo.
108
254
25
26
1
2
2
4
7
6
126
62
27
28
29
30
[a]:=
[b]:=
Note
Incompatibile con la consegna, perch la rete non divisibile
in 3 sottoreti.
Come sopra.
30
109
Indirizzo di broadcasting
S1
S2
S3
196.200.96.0 /26
196.200.96.64 /26
196.200.96.128 /26
196.200.96.63
196.200.96.127
196.200.96.191
196.200.96.192 /26
196.200.96.255
196.200.96.62
196.200.96.126
196.200.96.190
196.200.96.193
196.200.96.194
196.200.96.195
8.9 Esercizi
8.9.1 Piani di indirizzamento classfull
1. Ipotizzando un indirizzamento classful, indicare se gli indirizzi seguenti sono indirizzi di rete oppure
di host; indicare inoltre la loro classe di appartenenza.
Indirizzo
di rete? Classe
130.192.0.0
192.168.0.0
80.45.0.0
112.0.0.0
198.0.1.0
134.188.1.0
224.0.0.3
241.0.3.1
235.0.0.0
110
9 Il livello di trasporto
Il livello di trasporto il cuore di tutta la gerarchia di protocolli. Ha suo compito di fornire un trasporto affidabile ed efficace dall'host mittente a quello destinatario, indipendentemente dalla rete utilizzata. Questo
il livello pi basso tra quelli che gestiscono una conversazione diretta (cio senza nodi intermediari) fra
sorgente e destinazione. Infatti, il software di livello di trasporto presente solo sugli host, e non nei router
della subnet di comunicazione.
=
CONN.REQUEST
DATA
=
DISCONN.REQUEST
...
connect();
receive();
send();
...
disconnect();
Queste due applicazioni possono dialogare senza errori (se, come succede spesso, il servizio utilizzato affidabile), ignorando completamente tutto quanto riguarda la meccanica della comunicazione.
111
- il controllo di flusso;
- il riordino dei segmenti.
Analogamente al livello di data link che migliora le caratteristiche dei servizi offerto dal livello fisico, il
livello di trasporto migliora le caratteristiche dei servizi offerti dal livello di network. Il caso pi evidente
il TCP (servizio affidabile orientato alla connessione) sopra lIP (servizio datagram non affidabile).
Ci sono per anche delle importanti differenze. Quella principale che tra le peer entity del livello di data
link c' un unico canale di comunicazione, mentre tra quelle del livello di trasporto c' l'intera sottorete di
comunicazione. Questo implica che, a livello di trasporto, necessario indirizzare esplicitamente il destinatario ed pi complicato stabilire la connessione. La rete infatti memorizza i segmenti; quindi questi possono arrivare anche quando il destinatario non li aspetta pi, e ci, pu creare dei problemi.
Anche il buffering e il controllo di flusso richiedono un approccio differente che nel livello di data link, a
causa del numero molto variabile di connessioni che si possono avere al momento.
9.4 Indirizzamento
Per attivare una connessione si deve ovviamente specificare il destinatario. L'indirizzo di livello di trasporto detto TSAP (Transport Service Access Point) e accede al livello di network mediante un NSAP
(Network Service Access Point) address.
112
- ogni segmento numerato con un numero d'ordine a 32 bit, che usato per il controllo di flusso e per la
gestione degli ack;
- un segmento TCP formato da un header e dai dati da trasportare. Lheader costituito da una parte fissa di 20 byte e da una parte opzionale.
9.6.1 Indirizzamento
I servizi di TCP creano una connessione, a livello di trasporto, identificata da una coppia di punti d'accesso
detti socket. Ogni socket ha un socket number formato dalla coppia: (IP address: Port number)
Il socket number costituisce il TSAP.
I port number hanno 16 bit; quelli minori di 1024 sono i cosiddetti well-known port, e sono riservati per i
servizi standard. Ad esempio:
Port number
Servizio
7
20
21
23
25
80
110
Echo
Ftp (control)
Ftp (data)
Telnet
Smtp
Http
Pop versione 3
Poich le connessioni TCP (che sono full-duplex e point to point) sono identificate dalla coppia di socket
number alle due estremit, un singolo host pu attivare pi connessioni locali sullo stesso socket number.
Le connessioni TCP trasportano un flusso di byte, non di messaggi: i confini fra i messaggi non sono n
definiti n preservati. Ad esempio, se il processo mittente (di livello di applicazione) invia 4 blocchi di 512
byte, quello destinatario pu ricevere indifferentemente 8 "pezzi" da 256 byte, 1 "pezzo" da 2.048 byte,
ecc... Poi, le entit TCP suddividono il flusso (arrivato dal livello di applicazione) in segmenti, trasmettono questi segmenti e li ricombinano in un flusso che consegnato al livello di applicazione di destinazione.
Il livello di applicazione pu chiedere l'invio immediato di dati mediante l'invio di un flag urgente che,
quando arriva dall'altra parte, interrompe l'applicazione e attiva l'esame dei dati urgenti (Es. L'utente, durante una sessione di emulazione di terminale, pu digitare il comando Abort (Ctrl-C) dell'applicazione
corrente.)
113
Sequence number il numero d'ordine del primo byte contenuto nel campo dati.
il numero d'ordine del prossimo byte aspettato.
Ack. number
TCP
header il numero di parole di 32 bit contenute nell'header. ( necessario perch il campo options di grandezza variabile.)
length
Vale 1 se urgent pointer usato, 0 altrimenti.
URG
Vale 1 se l'ack number valido (cio se si convoglia un ack), 0 altrimenti.
Ack
Dati urgenti (pushed data), da consegnare senza aspettare che il buffer si riempia.
PSH
Richiesta di reset della connessione (ci sono problemi!).
RST
usato nella fase di setup della connessione:
SYN
SYN=1 Ack=0 richiesta connessione; SYN=1 Ack=1 accettata connessione.
usato per rilasciare una connessione.
FIN
Il controllo di flusso di tipo sliding window di grandezza variabile. Window size dice
quanti byte possono essere spediti a partire da quello (compreso) che viene confermato
Window size
con l'ack number. Il valore 0 significa: fermati e attendi l'arrivo di un uguale ack number con un valore di window size diverso da 0.
simile a quello di IP; il calcolo include uno pseudoheader.
Checksum
puntatore ai dati urgenti.
Urgent pointer
fra le pi importanti, negoziabili al setup:
- grandezza massima dei segmenti da spedire;
Options
- uso di selective repeat invece che go-back-n;
- uso di NAK.
Il checksum comprende anche uno pseudoheader, in aperta violazione della gerarchia, perch il livello
TCP in questo calcolo opera su indirizzi IP.
114
funziona cos:
- il richiedente richiede una connessione mediante un segmento CONN.REQUEST contenente un numero x
che indica l'inizio della sequenza. Il numero x scelto in modo che un contatore da 0 a x impieghi tempo maggiore di 2*T. In questo modo, uneventuale altra richiesta di connessione generata in precedenza
con lo stesso numero di sequenza e gli eventuali ack di risposta ad essa sono gi arrivati a destinazione
o sono stati distrutti dalla sottorete di comunicazione.
- il destinatario invia un segmento contenente un ack contenente la conferma di x e la proposta di un proprio numero y di inizio sequenza, letto anchesso da un contatore che completa il suo conteggio in un
tempo maggiore di 2*T.
- il richiedente invia un segmento contenente i primi dati del dialogo e la conferma di y.
In assenza di errori, il funzionamento il seguente:
115
116
117
10 Il livello di applicazione
Nell'architettura "Internet Protocol Suite", il livello di applicazione sopra quello di trasporto, e fornisce le
applicazioni usate direttamente dall'utente. Questo livello contiene diverse tipologie di protocolli ed applicazioni:
- protocolli di supporto a tutte le applicazioni, come ad esempio:
- DNS (Domain Name System, RFC 1034 e 1035);
- protocolli di supporto ad applicazioni di tipo standardizzato, come ad esempio:
- SNMP (Simple Network Management Protocol, RFC 1157) per la gestione della rete;
- FTP (File Transfer Protocol, RFC 959) per il trasferimento di file;
- SMTP e POP3 (Simple Mail Transfer Protocol, RFC 821, e Post Office Protocol, RFC 1225) per
la posta elettronica;
- HTTP (HyperText Transfer Protocol, RFC 1945) alla base del World Wide Web (WWW);
- applicazioni scritte in conformit ai protocolli di cui sopra;
- applicazioni proprietarie, basate su regole di private (ad esempio, un'applicazione di tipo client/server
per la gestione remota di un magazzino).
Le applicazioni seguono il paradigma client-server e utilizzano i servizi del TCP. Questi servizi si ottengono creando una connessione con il livello di trasporto, identificata da una coppia di punti d'accesso detti
socket. Ogni socket ha un numero formato dalla coppia: indirizzo IP: numero di porta.
Un numero di porta formato da 16 bit ed usato dallentit TCP per sapere a quale applicazione deve
consegnare i dati che riceve. I numeri minori di 1024 corrispondono alle cosiddette well-known port, riservate per i servizi standard.
Sicuramente, l'applicazione pi utilizzata nella rete Internet il World Wide Web (abbreviato in Web o
WWW), che letteralmente significa ragnatela intorno al mondo.
L'idea del World Wide Web nata nel 1989, presso il CERN (Conseil Europen pour la Recherche Nuclaire) di Ginevra, il pi importante laboratorio di fisica europeo. All'epoca, il ricercatore inglese Tim
Barnes-Lee fu impressionato da alcuni colleghi italiani che trasmettevano informazioni da un piano all'altro dell'istituto tramite linea telefonica e tramite video. Il 13 marzo 1989 present al proprio supervisore il
documento Information Management: a Proposal che fu valutato "vago ma interessante"; era basato sul
progetto, dello stesso Berners-Lee e del suo collega Robert Cailliau, di un software per condividere la documentazione scientifica in formato elettronico, indipendentemente dalla piattaforma informatica usata, e
per migliorare la comunicazione, e quindi la cooperazione, tra i ricercatori dell'istituto.
Furono definiti, oltre il software, anche gli standard e i protocolli per scambiare documenti su reti di calcolatori: il linguaggio HTML e il protocollo di rete HTTP, che sono gli elementi alla base del WWW.
La caratteristica principale della rete Web che i nodi della rete sono collegati tramite i cosiddetti link,
formando un enorme ipertesto1 multimediale. Mediante la rete, un utente pu diventare editore con una
spesa esigua e pu raggiungere un pubblico potenzialmente vastissimo distribuito in tutto il mondo.
Il Web un'applicazione distribuita di tipo client-server. Su alcuni nodi della rete Internet sono in esecuzione dei Web server. Ogni Web server gestisce uno o pi siti Web; un sito un insieme di risorse Web
(documenti html, immagini, file multimediali ed altro). Queste risorse sono inviate alle applicazioni client
(browser Web) che le richiedono. I server e i client Web comunicano tra loro mediante il protocollo http. I
browser poi visualizzano sullo schermo le informazione ricevute secondo le indicazioni fornite dal codice
HTML delle pagine.
Le pagine Web, anche appartenenti a siti diversi, sono collegate fra loro (in modo non sequenziale) attraverso i link (o collegamenti), parti di testo o grafica di una pagina web che possono accedere ad un'altra
pagina web, di scaricare particolari contenuti, o di accedere a particolari funzionalit, cliccandoci sopra
con il mouse, e cos creano un ipertesto.
Ogni risorsa Web identificata da un indirizzo chiamato URL (Uniform Resource Locator). La struttura
pi semplice dellURL protocollo://nomeNodo/percorso, dove:
1 Un ipertesto un insieme di documenti collegati mediante parole chiave. Equivale ad una rete i cui nodi sono i documenti. La
propriet principale di un ipertesto che la lettura pu essere non lineare: il lettore pu scegliere il "successivo" documento
dell'ipertesto mediante le parole disponibili come collegamenti. (da Wikipedia, l'enciclopedia libera, voce Ipertesto)
118
- protocollo il protocollo da utilizzare per il trasferimento (normalmente http, ma pu essere ad esempio https, ftp, );
- nomeServer lindirizzo IP oppure il nome DNS del server che ospita il sito (es.
www.itiseveripadova.gov.it);
- percorso il nome completo della risorsa Web allinterno del sito (es. guidahtml/guidahtml.html)
Non esiste un indice aggiornato in tempo reale dei contenuti del Web; quindi, nel corso degli anni, sono nati ed hanno riscosso notevole successo i motori di ricerca, siti che consentono di cercare contenuti nel
Web in modo automatico mediante parole chiave inserite dall'utente, e i portali Web, siti che consentono
di accedere ad ampie quantit di contenuti selezionati dai redattori del portale mediante l'utilizzo di motori
di ricerca o segnalati dai redattori dei siti Web stessi.
Inizialmente, i protocolli utilizzati nel Web gestivano soltanto pagine HTML statiche, cio file ipertestuali,
preparati precedentemente, visualizzabili e, soprattutto, navigabili utilizzando i browser. Per dare al Web
una maggiore interattivit e dinamicit sono state seguite due strade. Da un lato, sono state aumentate le
funzionalit dei browser attraverso un'evoluzione del linguaggio HTML e la possibilit d'interpretazione di
linguaggi di scripting (come il JavaScript). Dall'altro, si migliorata la qualit di elaborazione dei server
attraverso una nuova generazione di linguaggi integrati con il Web Server (come JSP, PHP, ASP, etc.), trasformando i Web Server in quelli che sono oggi pi propriamente noti come Application Server.
La diffusione di queste soluzioni ha avviato l'uso del Web come piattaforma applicativa che oggi trova la
sua massima espressione nei Web Service, alla cui realizzazione e diffusione sta lavorando l'intera industria
mondiale del software per la gestione d'azienda.
L'Hypertext Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) il principale protocollo per la trasmissione di informazioni sul Web. Le specifiche del protocollo sono gestite dal World Wide
Web Consortium (W3C).
Un server HTTP generalmente resta in ascolto sulla porta 80 usando il protocollo TCP.
119
La prima versione, la 0.9, dell'HTTP risale alla fine degli anni '80 e costituiva, insieme con l'HTML e gli
URL, il nucleo base della World Wide Web portata avanti da Tim Berners-Lee al CERN di Ginevra per
condividere le informazioni tra i fisici delle alte energie. La prima versione effettivamente disponibile del
protocollo, la HTTP/1.0, fu implementata dallo stesso Berners-Lee nel 1991 e proposta come RFC 1945
all'ente normatore IETF nel 1996. La versione attuale HTTP/1.1, presentato come RFC 2068 nel 1997 e
successivamente aggiornato nel 1999 come descritto dal RFC 2616.
L'HTTP funziona su un meccanismo richiesta/risposta (client/server): il client richiede ed il server risponde; vi sono quindi due tipi di messaggi HTTP: messaggi di richiesta e messaggi di risposta.
HTTP differisce da altri protocolli del livello di applicazione (come FTP) perch le connessioni sono generalmente chiuse quando una particolare richiesta (o una serie di richieste correlate) stata soddisfatta. Questo comportamento rende il protocollo HTTP ideale per il World Wide Web, in cui le pagine molto spesso
contengono dei link a pagine ospitate da altri server.
HTTP supporta, oltre la richiesta di una pagina, altre operazioni dette metodi.
120
La richiesta deve terminare con una riga vuota, cio con due "a capo" consecutivi.
Risposta:
HTTP/1.0 200 OK
Date: Mon, 28 Jun 2004 10:47:31 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: it
Content-Type: text/html; charset=utf-8
Age: 7673
X-Cache: HIT from wikipedia.org
Connection: close
10.3.1 TLD
I TLD sono suddivisi in domini nazionali e domini generici. Nello standard ISO-3166 stato assegnato un
dominio nazionale per ogni Paese del mondo, anche quelli non ancora connessi ad Internet. Esempi di domini nazionali sono:
au
ch
fr
it
jp
uk
Australia
Svizzera
Francia
Italia
Giappone
Inghilterra
I TLD generici attualmente disponibili sono stati definiti in pi riprese e sono usati, almeno in teoria, da
una classe particolare di soggetti. Sono formati da tre o pi lettere ed indicano il loro utilizzo (ad esempio
".com" dovrebbe essere usato esclusivamente da aziende o organizzazioni commerciali). Per molti TLD
generici queste indicazioni non sono vincolanti, ma per altri s; questi ultimi si dicono domini patrocinati.
La responsabilit di un dominio patrocinato (sponsored) affidata ad una organizzazione, di solito quella
121
che richiede l'attivazione del dominio, che limita la registrazioni ai propri affiliati (come il .aero gestito
dalla Socit Internationale de Tlcommunications Aronautiques) oppure a siti che possiedono determinate caratteristiche (come il .cat per i siti in lingua catalana).
La registrazione di altri gTLD (.gov, .edu, .mil e .int) riservata a particolari categorie di enti statunitensi.
.aereo
.arpa
.biz
.cat
.com
.coop
.edu
.eu
.gov
.info
.int
.jobs
.mil
.mobi
.museum
.name
.net
.org
.pro
.travel
La gestione dei domini di primo livello assegnata ad un organismo di nome ICANN (Internet Corporation for Assigned Names and Numbers); ogni dominio responsabile della creazione dei suoi sottodomini,
che devono essere registrati presso una apposita autorit delegata da ICANN.
L'estensione di un dominio del tutto indipendente da quella delle reti e sottoreti IP.
10.3.2 Funzionamento
Ogni dominio deve fornire il servizio DNS di propria competenza, cio deve rispondere a interrogazioni
riguardanti ogni host contenuto nel dominio stesso. Il funzionamento del DNS, in breve, il seguente:
- Un'applicazione, per collegarsi ad una risorsa di cui conosce il nome logico (ad es. sparc1.unimi.it), invia una richiesta al DNS server locale, mediante un'apposita procedura di libreria detta resolver.
- Il DNS server locale, se conosce la risposta, la invia direttamente al richiedente; altrimenti, interroga a
sua volta un DNS server di livello superiore, e cos via. Quando finalmente arriva la risposta, il DNS
server locale la passa al richiedente.
- Quando l'applicazione riceve la risposta (costituita dal numero IP della risorsa richiesta), crea una connessione TCP con la (o spedisce segmenti UDP alla) destinazione, usando l'indirizzo IP appena ricevuto.
Ci si ottiene mediante un processo (o pi) detto name server, che pu gestire le seguenti informazioni:
- informazioni di corrispondenza fra nomi simbolici e indirizzi IP. Per ogni host del dominio c' un resource record che contiene tali informazioni ed detto authoritative record, perch gestito dal DNS
server responsabile del dominio (che supposto fornire sempre informazioni corrette e aggiornate).
- l'identit dei name server responsabili dei sottodomini inclusi nel dominio, per poter inviare loro le richieste che gli pervengono dall'alto della gerarchia;
- l'identit del name server responsabile del dominio di livello immediatamente superiore, per potergli inviare le richieste che gli pervengono dal basso della gerarchia.
Una richiesta che arriva a un name server pu dunque viaggiare verso l'alto nella gerarchia oppure (se perviene a un top-level domain server) verso il basso, a seconda dei casi. Quando una risposta ritorna indietro,
essa viene tenuta dal server in una sua cache per un certo periodo; qui costituisce un nuovo record, detto
cached record perch contiene della informazione che potrebbe anche divenire, col passare del tempo, obsoleta e non pi corretta.
I server DNS sono in ascolto sulla porta 53.
Un Servizio di directory un programma o un insieme di programmi che organizza e memorizza informazioni su reti di computer e su risorse condivise disponibili tramite la rete. Inoltre, il servizio di directory
controlla gli accessi sull'uso delle risorse condivise per favorire il lavoro dell'amministratore di sistema. Un
122
servizio di directory fornisce uno strato di astrazione tra le risorse e gli utenti.
Si parla direttamente di directory riferendosi alla struttura di dati ordinata dove viene immagazzinata
dell'informazione. In particolare, nei sistemi distribuiti le directory sono usate per archiviare le informazioni relative agli account utente e quindi per consentire i servizi di autenticazione.
Una richiesta di solito fatta dal directory client, e il processo che cerca linformazione nella directory
chiamato directory server. In generale, i server forniscono un servizio specifico ai client. Qualche volta un
server pu diventare un client di altri server, per ottenere le informazioni necessarie per soddisfare la richiesta. Client e server possono risiedere o meno sulla stessa macchina. Un server pu soddisfare diversi
client; pi server possono eseguire richieste in parallelo. Si possono essere anche code di processi quando i
server sono occupati mentre stanno eseguendo unaltra richiesta.
Il formato e il contenuto dei messaggi scambiati tra client e server devono rispettare un protocollo concordato.
La e-mail o email ("electronic mail" o "posta elettronica") un servizio Internet usato da un utente per inviare o ricevere dei messaggi. nata nel 1972, quando Ray Tomlinson install su ARPANET un sistema in
grado di scambiare messaggi fra le varie universit; il suo funzionamento fu definito da Jon Postel.
123
Quando l'utente lo desidera, pu consultare il contenuto della sua casella, organizzarlo, inviare messaggi a
uno o pi utenti.
L'accesso alla casella di posta elettronica normalmente controllato da una password o da altre forme di
autenticazione. La trasmissione di un messaggio asincrona, cio non richiede che mittente e destinatario
siano contemporaneamente attivi o collegati.
La consegna al destinatario dei messaggi inviati non garantita. Se un server SMTP non consegna un messaggio che ha ricevuto, tenta normalmente di inviare una notifica al mittente per avvisarlo della mancata
consegna, ma anche questa notifica a sua volta un messaggio di e-mail (generato automaticamente dal
server), e quindi la sua consegna non garantita.
Il mittente pu anche richiedere una conferma di consegna o di lettura dei messaggi inviati, ma il destinatario pu decidere se vuole inviare o meno tale conferma. Il significato della conferma di lettura pu essere
ambiguo, in quanto aver visualizzato un messaggio per pochi secondi in un client non significa averlo letto,
compreso o averne condiviso il contenuto.
124
- Reply-to: (Rispondi a:) contiene l'indirizzo e-mail al quale devono essere inviate le eventuali risposte al
messaggio, se diverso da quello del mittente.
- Date: (Data:) contiene la data e l'ora in cui il messaggio stato scritto.
Gli indirizzi dei destinatari principali (To: o A:) e di quelli in copia conoscenza (Cc:) sono ugualmente visibili a tutti i destinatari.
La scelta di mettere un destinatario in uno dei due campi dipende dal ruolo del destinatario riguardo all'argomento del messaggio. Ad esempio, se un messaggio richiede di eseguire un compito, si intende che la
richiesta fatta al destinatario principale (To: o A:), mentre i destinatari in copia conoscenza (Cc:) vengono
informati che questa richiesta stata fatta, ma non sono incaricati dell'esecuzione del compito.
Gli indirizzi dei destinatari in copia conoscenza nascosta (Bcc: o Ccn:) non appaiono nel messaggio consegnato ai destinatari. Ci consente l'invio di un messaggio a un terzo senza che i destinatari "ufficiali" ne
siano a conoscenza. "Mettere in CC" o "in CCN" una locuzione diffusa negli ambienti lavorativi e nei
gruppi sociali organizzati. Quando l'e-mail diffonde un messaggio a persone che non si conoscono tra loro
(ad es., comunicati pubblici, annunci, messaggi spiritosi pi o meno utili), preferibile nascondere a ciascun destinatario gli altri destinatari e i loro indirizzi, per ragioni di privacy e di sicurezza. In particolare,
se si invia un messaggio ad un gran numero di persone che non si conoscono tra di loro, costoro probabilmente non saranno d'accordo che il loro indirizzo sia reso noto ad estranei. Inoltre, molti worm si propagano per e-mail, e utilizzano gli indirizzi presenti nei messaggi per diffondersi; l'invio di un messaggio con
gli indirizzi dei destinatari in chiaro espone ogni destinatario ad un ulteriore rischio di contagio. Per ovviare a questo problema, consigliabile utilizzare in questi casi il Bcc: (o Ccn:), oppure una mailing list.
Altre intestazioni vengono aggiunte dai programmi che manipolano il messaggio. La pi importante Received:, che viene aggiunta da ciascun server SMTP che manipola il messaggio, indicando da quale indirizzo IP il messaggio stato ricevuto, a che ora, e altre informazioni utili a tracciarne il percorso.
Altre intestazioni segnalano ad esempio che il messaggio stato valutato da qualche tipo di filtro automatico antivirus o antispam, e la valutazione espressa dal filtro.
Il Message-ID: (Identificativo del messaggio) un codice costruito dal client su cui il messaggio stato
composto, che dovrebbe permettere di identificare univocamente un messaggio.
Il corpo del messaggio composto dal contenuto informativo che il mittente invia ai destinatari. Esso era
originalmente composto di testo semplice; ci causava problemi se i messaggi avevano caratteri accentati
(ad es., Francese e Italiano), caratteri di alfabeti non latini (ad es., Russo ed Ebreo), caratteri di alfabeti non
impostati su fonemi (ad es., Cinese e Giapponese) o erano privi di caratteri (ad es., file audio, immagini,
documenti binari). Questa problema stato risolto dalla codifica MIME (Multipurpose Internet Mail Extensions) che gestisce, oltre il formato gi esistente, anche il trasferimento di caratteri non-Ascii.
In seguito stata introdotta la possibilit di inserire dei file in un messaggio e-mail (allegati), ad esempio
per inviare immagini o documenti. Gli allegati vengono utilizzati anche per comporre un messaggio e-mail
in formato HTML, generalmente per ottenere una pi gradevole visualizzazione dello stesso. Questa pratica non molto apprezzata dai puristi di Internet, in quanto aumenta notevolmente la grandezza dei messaggi e, inoltre, non tutti i client e-mail sono in grado di interpretare l'HTML.
125
Anche se non obbligatorio, quasi ogni client richiede sono le estensioni del protocollo SMTP supportate
dal server, usando il saluto EHLO. Questi client usano HELO soltanto se il server non risponde ad EHLO.
126
C:USER pippo
S:+OK
C:PASS pluto
S:+OK
C:LIST
S:+OK
1 817
2 124
.
C:RETR 1
S:+OK
Return-Path: <pippo@example.org>
Delivered-To: pippo@example.org
Date: Sat, 22 Oct 2005 13:24:54 +0200
From: Mario Rossi <mario@rossi.org>
Subject: xxxx
Content-Type: text/plain; charset=ISO-8859-1
testo messaggio
.
C:DELE 1
S:+OK
C:QUIT
S:+OK
L'Internet Message Access Protocol (IMAP) un protocollo di comunicazione per la ricezione di e-mail. Il
protocollo stato inventato da Mark Crispin nel 1986 come alternativa pi moderna all'utilizzatissimo
POP. La porta predefinita del demone IMAP sull'host la 143. Se si utilizza una connessione sicura tramite
SSL, la porta la 993.
10.5.7.1 Differenze tra IMAP e POP
Il protocollo POP 3 scarica la posta direttamente sul PC e la cancella dal server. Il protocollo IMAP pu
conservare sul server una copia delle e-mail (per scaricarle successivamente su altri computer). Ecco un elenco delle caratteristiche dell'IMAP ma non del POP:
- Accesso alla posta sia online che off-line: mediante il POP3, il client si connette per scaricare i nuovi
messaggi e poi si disconnette; mediante l'IMAP, il client rimane connesso e risponde alle richieste fatte
dall'utente mediante l'interfaccia; questo permette di risparmiare tempo se ci sono messaggi lunghi.
- Pi utenti possono utilizzare la stessa casella di posta: il protocollo POP consente ad un solo client la
connessione ad una determinata mailbox (casella di posta), quella che gli stata assegnata. Al contrario,
l'IMAP4 permette connessioni simultanee alla stessa mailbox, fornendo meccanismi per controllare i
cambiamenti apportati da ogni utente.
- Supporto all'accesso a singole parti MIME di un messaggio strutturato ad albero, dove ogni ramo un
contenuto diverso (intestazioni, allegati o parti di esso, messaggio in un dato formato, eccetera): il protocollo IMAP4 permette di scaricare una singola parte MIME o addirittura sezioni delle parti, per avere
un'anteprima del messaggio o per scaricare una mail senza i file allegati.
- Supporto per attributi dei messaggi tenuti dal server: attraverso l'uso di attributi, tenuti sul server e definiti nel protocollo IMAP4, ogni client pu tenere traccia di ogni messaggio, per esempio per sapere se
gi stato letto o se ha avuto una risposta.
- Accesso a molteplici caselle di posta sul server: mediante l'IMAP4, un utente pu creare, modificare o
cancellare mailbox (di solito associate a cartelle) sul server, e pu condividere cartelle tra utenti diversi.
- Possibilit di fare ricerche sul server: l'IMAP4 permette al client di ricevere soltanto i che messaggi
soddisfano un certo criterio, per fare, per esempio, delle ricerche sui messaggi senza doverli scaricare
tutti.
- Supporto di un meccanismo per la definizione di estensioni: le specifiche dell'IMAP descrivono come
un server pu far sapere agli utenti se ha delle funzionalit extra.
10.5.8 Abusi
L'SMTP non riesce ad impedire abusi del sistema di posta elettronica; in particolare, non possiede strumenti semplici ed efficaci per controllare quali messaggi vengono consegnati nella casella di un utente (autorizzazione), ed inoltre non gestisce l'autenticazione del mittente riportato da un messaggio. Questo causa
diversi tipi di abusi.
127
Il principale utilizzo improprio dell'e-mail lo spam, cio l'invio massiccio a molti utenti di messaggi indesiderati, in genere di natura pubblicitaria-commerciale. Secondo alcune fonti, l'incidenza di questi messaggi raggiungerebbe i due terzi del traffico totale di posta elettronica.
Un altro fenomeno negativo costituito dalle catene di sant'Antonio, messaggi che contengono informazioni allarmanti, promesse di facili guadagni o vere e proprie bufale, ed invitano ad inoltrare il messaggio
ai propri conoscenti, finendo talvolta per circolare per mesi o per anni.
inoltre possibile falsificare il nome e l'indirizzo del mittente visualizzati nel programma client del destinatario, inducendo l'utente a ritenere attendibile un messaggio del tutto falso. Questa vulnerabilit usata
per costruire vere e proprie truffe o scherzi che si basano sulla fiducia che la maggior parte degli utenti erroneamente ripone nel "mittente" di un messaggio di posta elettronica. Anche i worm che si replicano per
posta elettronica usano questo meccanismo, per indurre gli utenti ad interessarsi o a fidarsi di un messaggio, in modo che lo aprano ed eventualmente installino allegati infetti.
Il Garante della privacy afferma che la posta elettronica deve avere la stessa tutela di quella ordinaria. Anche se la rete consente una vasta conoscibilit degli indirizzi di posta elettronica, considerato illegale l'uso di questi dati personali per scopi diversi da quelli per cui sono presenti on-line (compreso l'invio di messaggi a scopo commerciale, pubblicitario...). quindi obbligatorio, per non violare la privacy degli utenti,
accertarsi del loro consenso prima di utilizzare il loro indirizzo e-mail per qualsiasi scopo.
10.5.8.1 E-mail privacy sul posto di lavoro
Il problema riguarda da una parte il fatto che il datore di lavoro desidera che gli strumenti disponibili
(internet, e-mail, ..) vengano usati solo per scopi prettamente lavorativi, e dall'altro la legittima tutela dei
dati personali del dipendente. L'autorit Garante ha stabilito che il datore di lavoro pu controllare le email dei dipendenti esclusivamente in rari casi. Sono state definite le norme per l'utilizzo della posta elettronica sul luogo di lavoro; infatti spetta al datore di lavoro il compito di fissare le regole consentite all'interno dell'azienda per l'uso di Internet e delle e-mail e soprattutto per effettuare i controlli. Quindi, la soluzione pi efficace l'adozione da parte dell'azienda di un regolamento interno, coinvolgendo anche i sindacati.
Si verificano problemi anche quando un dipendente assente e il datore di lavoro o un superiore presume
che al suo indirizzo siano stati inviati messaggi di lavoro a cui necessario accedere per il funzionamento
dell'azienda. Queste situazioni possono essere prevenute creando caselle di posta associate a particolari uffici o persone oltre a quelle individuali, e usando queste caselle per le attivit lavorative che possono essere
gestite da pi persone.
10.5.8.2 Posta elettronica certificata
La Posta Elettronica Certificata un servizio di posta elettronica che garantisce la ricezione del messaggio (da parte del destinatario) e l'integrit del messaggio ricevuto. In Italia l'invio di una e-mail certificata
(nelle forme stabilite dalla normativa vigente) equiparato a tutti gli effetti di legge alla spedizione di una
raccomandata cartacea con avviso di ricevimento. Ai fini della legge, il messaggio si considera consegnato
al destinatario quando accessibile nella sua casella di posta.
- Quando il gestore di posta elettronica certificata gestisce l'email del mittente, gli invia una ricevuta di
accettazione, che certifica l'avvenuto invio.
- Quando il gestore deposita il messaggio nella casella del destinatario, invia al mittente una ricevuta di
consegna che certifica l'avvenuta ricezione.
La ricevuta di accettazione e quella di consegna sono in formato elettronico, e ricevono la firma digitale
del gestore.
Se il gestore di posta elettronica certificata del mittente diverso dal gestore del destinatario, c un passaggio ulteriore: il gestore del destinatario, nel momento in cui riceve la mail dal gestore del mittente, emette una ricevuta di presa a carico, in formato elettronico, a cui appone la propria firma digitale. Se il gestore di posta elettronica non pu depositare la mail nella casella del destinatario, invia una ricevuta di
mancata consegna. I gestori di posta certificata devono rifiutare le mail contenenti virus.
I gestori di posta elettronica certificata sono soggetti privati che devono possedere alcuni requisiti stabiliti
dalla legge (devono, per esempio, possedere gli stessi requisiti di onorabilit previsti per l'attivit bancaria,
e avere un capitale sociale non inferiore a 1 milione di euro), e possono operare solo se sono autorizzati dal
CNIPA, il Centro Nazionale per l'Informatica nella Pubblica Amministrazione.
Le pubbliche amministrazioni possono essere gestori di posta elettronica certificata, ma in tal caso gli indirizzi rilasciati hanno validit solo limitatamente agli scambi di mail fra il titolare dell'indirizzo e l'Amministrazione che lo ha rilasciato.
128
Come vedremo, il tema della sicurezza informatica (e in particolare nelle reti) un problema estremamente complesso, che coinvolge diversi tipi di aspetti e che quindi presenta soluzioni diverse e articolate
su diversi livelli.
Sotto l'aspetto fisico, gli elaboratori che svolgono funzioni delicate (server, router, proxy, firewall, ..) devono essere posti in luoghi sicuri, ai quali possono accedere solo i tecnici autorizzati.
Sotto l'aspetto sistemistico, si devono prevedere meccanismi di accesso basati su autenticazione ed accounting, e meccanismi di monitoraggio dei file di log, in cui vengono registrate le operazioni effettuate dagli
utenti e le eventuali anomalie.
Le problematiche di sicurezza di una rete sono distinte da quelle legate alla sicurezza dei sistemi informativi o dei singoli calcolatori e richiedono strumenti appositi. Per garantire la sicurezza globale delle informazioni necessario che gli strumenti per la garanzia della sicurezza nei calcolatori, nei sistemi operativi e
nelle reti possano interagire in modo sinergico per aumentare la garanzia il pi possibile.
Gli accorgimenti tecnologici usati per non sono sufficienti per raggiungere gli obiettivi, perch lelemento
umano risulta essere determinante. Ad esempio, inutile impostare un accesso basato su autenticazione
degli utenti se questi utilizzano password facili da indovinare o addirittura le espongono presso la propria
postazione di lavoro.
Inoltre, non esiste la sicurezza assoluta, ma soltanto un livello di sicurezza che si intende raggiungere
(livello di fiducia). Maggiore il livello di protezione che si intende raggiungere e maggiori sono i costi
da sostenere, e quindi le scelte aziendali si baseranno su unattenta analisi del rapporto costi/benefici e degli effettivi rischi che si corrono in tema di sicurezza informatica.
In definitiva, ogni organizzazione dovr impostare una propria politica per la sicurezza informatica, considerando le proprie politiche aziendali, le disponibilit tecnologiche e umane e rispettando le disposizioni
legislative vigenti in materia.
129
130
131
Quando si parla di "sicurezza informatica", spesso si usano i concetti di sicurezza passiva e di sicurezza attiva.
La sicurezza passiva l'insieme di tecniche e di strumenti di tipo difensivo, ossia quel complesso di soluzioni finalizzate ad impedire l'accesso a risorse, sistemi, impianti, informazioni e dati di natura riservata da
parte di utenti non autorizzati. Il concetto di sicurezza passiva pertanto molto generale: ad esempio, per
l'accesso a locali protetti, l'utilizzo di porte di accesso blindate, congiuntamente all'impiego di sistemi di
identificazione personale, uno strumento di sicurezza passiva.
La sicurezza attiva , invece, l'insieme delle tecniche e degli strumenti mediante i quali le informazioni ed
i dati di natura riservata sono resi intrinsecamente sicuri e protetti dalla possibilit che un utente non autorizzato possa accedervi (confidenzialit) o possa modificarli (integrit).
132
evidente che la sicurezza passiva e quella attiva sono complementari ed entrambe indispensabili per raggiungere il desiderato livello di sicurezza di un sistema. Ci sono molte tecniche di attacco; perci necessario usare contemporaneamente diverse tecniche difensive per proteggere un sistema informatico, realizzando pi barriere fra l'attaccante e l'obiettivo.
Spesso l'obiettivo dell'attaccante non il sistema informatico, ma i suoi dati; quindi, la sicurezza informatica deve impedire l'accesso ad utenti non autorizzati, ma anche a soggetti con autorizzazione limitata a certe
operazioni, per evitare la copia, la modifica o la cancellazione dei dati del sistema informatico.
Le violazioni possono essere molteplici: tentativi non autorizzati di accesso a zone riservate, furti di identit digitale o di file riservati, usi di risorse che l'utente non potrebbe utilizzare, ecc. La sicurezza informatica
si occupa anche di prevenire eventuali Denial of service (DoS); i DoS sono attacchi al sistema finalizzati a
rendere non utilizzabili alcune risorse per danneggiare gli utenti del sistema. Per prevenire le violazioni si
utilizzano strumenti hardware e software.
Un exploit un programma che, sfruttando un bug o una vulnerabilit, porta all'acquisizione di privilegi o
al denial of service di un computer.
133
Ci sono diversi modi per classificare gli exploit. La classificazione pi comune distingue il modo usato
dall'exploit per contattare l'applicazione vulnerabile. Un exploit remoto sfrutta la vulnerabilit al primo
accesso al sistema. Un exploit locale richiede un precedente accesso al sistema e solitamente aumenta i
privilegi dell'utente rispetto a quelli impostati dall'amministratore.
Un'altra classificazione distingue il tipo di vulnerabilit sfruttato dagli exploit (buffer overflow, heap overflow, format string attacks, race condition, double free(), integer overflow, SQL injection, cross-site scripting, cross-site request forgery, remote file inclusion e local file inclusion).
Lo scopo di molti exploit quello di acquisire i privilegi di root su un sistema. Alcuni exploit dapprima accedono con i minimi privilegi e poi li alzano fino ad arrivare a root.
Normalmente un exploit pu sfruttare solo una specifica falla; quando viene divulgato, questa falla riparata dal programma e l'exploit diventa innocuo per le nuove versioni del programma. Per questo motivo,
alcuni blackhat hacker non divulgano gli exploit trovati ma li tengono riservati per loro o per la loro comunit. Questi exploit sono chiamati zero day exploit, e scoprire il loro contenuto il pi grande desiderio per
gli attacker senza conoscenze, altrimenti detti script kiddie.
Il buffer overflow una vulnerabilit di sicurezza che pu colpire un software che, senza controllare la
lunghezza dei dati ricevuti, li copia in un buffer di capienza prestabilita, confidando che l'utente (o il mittente) non superi questa capienza.
Quando, per errore o per malizia, sono inviati dati pi lunghi della capienza del buffer destinato a contenerli, i dati extra sovrascrivono le variabili interne del programma o il suo stack; di conseguenza, a seconda
delle variabili sovrascritte e dei nuovi valori, il programma pu dare risultati errati o imprevedibili, bloccarsi, o (se un driver di sistema o lo stesso sistema operativo) bloccare il computer. Chi conosce bene il
software in questione, il sistema operativo e il tipo di computer su cui gira, pu individuare una serie di dati malevoli che, inviata per provocare un buffer overflow, consenta ad un malintenzionato di controllare il
programma (e a volte, tramite questo, l'intero computer).
Questa debolezza nota da molto tempo, ma solo di recente usata dai cracker per bloccare o controllare
altri computer collegati in rete. Un programma ha questo tipo di vulnerabilit se:
- Il programma legge dati di lunghezza variabile e non nota a priori;
- Il programma immagazzina i dati in un buffer allocato in un'area di memoria vicina ad altre strutture di
dati vitali per il programma stesso;
- Il programma non controlla la correttezza dell'input in corso.
- L'area di memoria dello stack eseguibile, se si tenta di scrivere dello shellcode sullo stack; questo non
vero sui computer pi recenti dotati di NX bit.
La prima condizione facilmente verificabile, mediante le specifiche del programma; le altre due invece
sono interne ad esso e riguardano la sua completezza in senso teorico.
11.5.3 Shellcode
(Da Wikipedia, l'enciclopedia libera, voce Shellcode)
Uno shellcode un programma in linguaggio assembly che tradizionalmente esegue una shell (ad es., la
shell Unix '/bin/sh' o la shell command.com sui sistemi operativi DOS e Microsoft Windows). Uno shellcode pu sfruttare un bug mediante un exploit, consentendo ad un hacker o un cracker di accedere alla riga di comando di un computer, o, pi in generale, di eseguire codice arbitrario.
Uno shellcode tipicamente inserito nella memoria del computer mediante un buffer overflow nello stack
o nell'heap, o tramite un format string attack. Lo shellcode pu essere eseguito sovrascrivendo l'indirizzo di
ritorno dello stack con l'indirizzo dello shellcode. In questo modo, quando una subroutine prova a ritornare
al chiamante, ritorna invece al codice dello shellcode che apre una riga di comando che pu essere usata
dal cracker.
11.5.4 Cracking
(Da Wikipedia, l'enciclopedia libera, voce Cracking)
Il cracking la modifica di un software per rimuovere la protezione dalla copia, oppure per accedere ad
un'area riservata.
Il cracking anche la violazione di sistemi informatici, collegati ad Internet o ad un'altra rete, per danneggiarli, rubare informazioni oppure sfruttare i servizi telematici della vittima (connessione ad Internet, traffico voce, sms, accesso a database ecc..) senza la sua autorizzazione (thiefing).
134
11.5.5 Backdoor
(Da Wikipedia, l'enciclopedia libera, voce Backdoor)
Una backdoor una porta che consente di superare in parte o in tutto le procedure di sicurezza attivate in
un sistema informatico (analogamente alle porte di servizio nel retro di una casa). Questa porta pu essere
intenzionalmente create dai gestori del sistema informatico per facilitare la manutenzione della struttura informatica oppure, pi spesso, da cracker intenzionati a manomettere il sistema. Pu anche essere installata
autonomamente da alcuni malware (come virus, worm o trojan), per consentire ad un utente esterno controllare da remoto la macchina senza l'autorizzazione del proprietario.
Oltre ad essere molto pericolosa per l'integrit delle informazioni presenti sul sistema, una backdoor installata dai virus pu essere utilizzata per condurre un attacco di tipo DDoS.
Il Port Scanning individua quali porte sono usate da un computer connesso ad una rete.
Letteralmente significa "scansione delle porte" e consiste nell'inviare richieste di connessione al computer
bersaglio (soprattutto pacchetti TCP, UDP e ICMP creati ad arte): elaborando le risposte, si pu stabilire
(anche con precisione) quali servizi di rete sono attivi su quel computer. Il risultato della scansione di una
porta rientra solitamente in una delle seguenti categorie:
- aperta: l'host ha risposto che un servizio in ascolto su quella porta
- chiusa: l'host ha risposto che le connessioni alla porta saranno rifiutate (ICMP port-unreachable)
- bloccata/filtrata: l'host non ha risposto; quindi, probabilmente c' un firewall o un ostacolo di rete che
pu bloccare laccesso alla porta ed impedire di individuarne lo stato.
Di per s, il port scanning non pericoloso per i sistemi informatici, e viene comunemente usato dagli
amministratori di sistema per effettuare controlli e manutenzione. Rivela per informazioni dettagliate che
potrebbero essere usate da un eventuale attaccante per preparare una tecnica mirata a minare la sicurezza
del sistema; pertanto un amministratore deve osservare attentamente i port scan effettuati verso i computer
della propria rete.
11.5.7 Sniffing
(Da Wikipedia, l'enciclopedia libera, voce Sniffing)
Lo sniffing l'attivit di intercettazione passiva dei dati che transitano in una rete telematica. Tale attivit
pu essere svolta sia per scopi legittimi (ad es., l'individuazione di problemi di comunicazione o di tentativi di intrusione) sia per scopi illeciti (ad es., l'intercettazione fraudolenta di password o altre informazioni
sensibili).
I prodotti software che eseguono queste attivit sono detti sniffer e, oltre ad intercettare e memorizzare il
traffico, offrono funzionalit di analisi del traffico stesso.
Gli sniffer intercettano i singoli pacchetti, decodificando le varie intestazioni di livello datalink, rete, trasporto, applicativo. Inoltre, possono offrire strumenti che analizzano, ad esempio, tutti i pacchetti di una
connessione TCP per valutare il comportamento del protocollo o per ricostruire lo scambio di dati tra le
applicazioni.
Per intercettare i dati in una rete locale necessario possedere od ottenere l'accesso fisico al mezzo trasmissivo.
Nelle reti ethernet non-switched, il mezzo trasmissivo (cavo coassiale o, attualmente, cavo UTP o STP
connesso ad un hub) condiviso; quindi, ogni scheda di rete di un computer nella rete locale riceve tutti i
pacchetti, anche quelli destinati ad altri, e seleziona i propri a seconda dell'indirizzo MAC (indirizzo
hardware univoco della scheda di rete). Lo sniffing, in questo caso, imposta sull'interfaccia di rete la cosiddetta "modalit promiscua" che disattiva questo "filtro hardware" per permettere al sistema l'ascolto di tutto il traffico passante sul cavo.
Nelle reti ethernet switched, lo switch invia ad ogni interfaccia di rete solo i pacchetti destinati al proprio
indirizzo ed i pacchetti di broadcast. L'impostazione della modalit promiscua quindi non pu intercettare
il traffico in una rete gestita da switch. In questo caso, ci si pu collegare ad una porta (detta "Span" da Cisco, "Roving Analysis" da 3Com, "port mirroring" dagli altri produttori) che riceve il traffico circolante su
tutte le porte dello switch. Alcune tecniche che gestiscono tutto il traffico diretto dallo switch da una porta
qualunque sono il MAC flooding, l'ARP poisoning e il port stealing.
Per intercettare i dati che transitano su reti geografiche, si utilizzano tecniche "Man in the middle" analoghe a quelle accennate in precedenza, che operano per a livello di instradamento del traffico IP oppure
che inviano alle vittime informazioni fasulle per quanto riguarda la corrispondenza tra nomi a dominio e
indirizzi IP, sfruttando l'assenza di autenticazione del sistema DNS.
135
11.5.8 Keylogger
(Da Wikipedia, l'enciclopedia libera, voce Keylogger)
Un keylogger uno strumento che pu intercettare tutto ci che un utente digita sulla tastiera del proprio
computer.
Un keylogger hardware collegato al cavo di comunicazione tra la tastiera ed il computer o all'interno
della tastiera. molto efficace, perch la sua installazione molto semplice e il sistema non pu accorgersi
della loro presenza. Quando installato fra la tastiera e il PC, sembra un adattatore oppure in uno cavo di
prolunga. Quando nascosto nella tastiera, sembra invisibile. Un keylogger hardware completamente indipendenti dal sistema operativo e pu intercettare anche le password di bootstrap. Un keylogger memorizza i tasti premuti o li invia a un dispositivo wireless. Per leggere il contenuto dei dati memorizzati localmente, di solito si utilizza una combinazione di tasti o si lancia uno specifico software.
Un keylogger software un programma che controlla e salva la sequenza di tasti digitata da un utente.
Spesso, un keylogger software trasportato ed installato nel computer da worm o trojan ricevuti tramite
Internet ed in genere serve a intercettare password e numeri di carte di credito ed inviarli tramite posta elettronica al creatore degli stessi. Un programma di keylogging pu sovrapporsi fra il browser ed il World
Wide Web. In questo caso intercetta le password, comunque vengano inserite nel proprio PC. La password
catturata indipendentemente dalla modalit di input: digitazione da tastiera, oppure copia/incolla da un
file di testo prima di collegarsi a Internet per evitarne la digitazione, oppure mediante un programma di
dettatura vocale. Anche in caso di connessione sicura (cifrata), se sul computer presente un keylogger che
invia le password in remoto, tali password potranno essere utilizzate dalla persona che le riceve.
11.5.9 Spoofing
(Da Wikipedia, l'enciclopedia libera, voce Spoofeing)
Lo spoofing un attacco informatico che in qualche modo falsifica l'identit (spoof). Lo spoofing pu avvenire in qualunque livello della pila ISO/OSI e inoltre pu anche falsificare le informazioni applicative.
Quando la falsificazione dell'identit non avviene in campo informatico si parla di social engineering.
Uno spoofing deve far credere alla vittima che c' qualcosa di diverso: un hostname, un indirizzo ethernet
o altro ancora.
11.5.9.1 Spoofing a livello 2
Quando l'informazione falsificata un indirizzo MAC, si parla di MAC-spoofing. L'attacco immette in rete un pacchetto che contiene un MAC address diverso da quello dell'attaccante ed uguale a quello della vittima. Un esempio di questa tecnica impiegata nel MAC-flooding in cui un attaccante manda continuamente pacchetti in rete contenenti un MAC che non il suo. Questo attacco satura il forwarding database
dello switch, causandone malfunzionamenti. Un attacco che riguarda la sicurezza del layer 2 ma non direttamente il mac spoofing l'ARP poisoning.
11.5.9.2 Spoofing a livello 3
Quando un indirizzo IP falsificato, si parla di IP spoofing. In generale facile falsificare un indirizzo
perch il protocollo non implementa alcun sistema di sicurezza. Ci causa un routing asimmetrico perch il
pacchetto di risposta a quello falsificato sar inviato al vero IP. Gli ISP possono attivare diversi sistemi di
sicurezza per impedire l'IP spoofing. Il primo metodo impedisce che da una interfaccia (di un router/firewall) vengano inviati pacchetti in cui l'IP sorgente diverso da quello atteso. Il secondo metodo usa
delle tabelle di routing; se l'interfaccia di provenienza per un pacchetto diversa da quella che sarebbe
scelta dal router per l'inoltro del pacchetto di risposta, allora questo pacchetto viene scartato. Questo sistema si chiama uRPF[1].
11.5.9.3 Spoofing a livello 4
Il livello 4 della pila ISO/OSI non rilevante in fase di autenticazione; quindi non si parla di UDP/TCP
spoofing, ma di un attacco di IP-spoofing portato verso uno di questi due protocolli.
Lo spoofing UDP analogo al caso IP. Poich UDP un protocollo connectionless, un datagram UDP
falsificato mediante l'immissione di informazioni desiderate e la falsificazione dell'header.
Lo spoofing TCP decisamente pi complesso del caso UDP. TCP infatti un protocollo connection oriented che richiede una sessione tramite il three way handshake. Se un pacchetto SYN contiene l'indirizzo
IP falsificato e questo inviato ad un server, il server, prima di inviare i dati, cercher di concludere l'handshake rispondendo con un pacchetto SYN/Ack. Questo pacchetto conterr l'indirizzo IP falsificato e quindi non verr inviato indietro all'attaccante che quindi non potr rispondere con il terzo e ultimo pacchetto
(il pacchetto Ack). Per concludere questo attacco, necessario inviare un pacchetto Ack al server contenente nuovamente l'indirizzo IP falsificato, ma anche il sequence number inserito dal server nel pacchetto
136
SYN/Ack; per scegliere questo numero, l'attaccante deve sapere come stato scelto dal server. Poich l'attaccante invia il primo e il terzo pacchetto senza vedere il secondo, questo attacco si chiama blind spoofing.
11.5.9.4 WEB Spoofing
Quando lo spoofing coinvolge il web (server applicativo, host server o protocolli web) si parla di web spoofing. Nell'accezione pi comune, il web spoofing falsifica un server web per far credere ad un utente di
essere connesso ad un certo server mentre connesso ad un server malevolo.
Nel caso in chiaro (non TLS), la prima azione di un attaccante per redirigere un client verso un server falso
(anche chiamato shadow server o server ombra) la falsificazione dell'associazione tra l'indirizzo web e
l'indirizzo IP. Questa operazione viene effettuata tramite un attacco di dns poisoning. A questo punto, l'attaccante ha fatto credere al client che l'indirizzo del server vero quello invece del server falso. L'attaccante ha costruito in precedenza un server falso che pu contenere una copia del server vero (ogni pagina
stata copiata in locale sul server ombra) oppure pu rigirare pagina per pagina le connessioni del client
verso il server vero. In entrambi questi casi, l'attaccante si finge il server vero, catturando, per esempio, le
credenziali di accesso. La creazione dello shadow server uguale a ci che si fa nel phishing, ma in questo
caso c' stato un preventivo attacco diretto al client.
Nel caso TLS la cosa si complica notevolmente perch bisogna violare il sistema crittografico di TLS. Poich gli algoritmi stessi sono difficilmente violabili, un attaccante opera un attacco a met tra l'informatica e
il social engineering. L'attacco si svolge come nel caso senza TLS, ma le connessioni sono girate verso il
server vero. Quando il client riceve il certificato del server, dovrebbe verificarne l'autenticit. Allora, l'attaccante genera un certificato server falso, totalmente uguale al certificato vero, che per non firmato dalla stessa CA. L'utente quindi riceve un certificato che sembra valido ma solo un'analisi approfondita rivela
la sua falsit. L'attaccante potrebbe rendere ancora pi ardua l'identificazione usando una CA falsa, ma uguale a quella vera (cio con stessi nomi, identificativi, ecc.). Se l'utente non conosce sufficientemente la
problematica, pu cliccare per accettare anche se la prova crittografica non completa. A questo punto il
server dell'attaccante si connette al server vero agendo da proxy e intercettando le comunicazioni. Questo
un attacco di tipo "man in the middle".
11.5.10 Trojan
(Da Wikipedia, l'enciclopedia libera, voce Trojan)
Un trojan (o trojan horse, dall'inglese per Cavallo di Troia), un tipo di malware. Deve il suo nome al fatto che le sue funzionalit sono nascoste all'interno di un programma apparentemente utile; dunque l'utente stesso che, installando ed eseguendo un certo programma, inconsapevolmente, installa ed esegue anche
il codice trojan nascosto.
In genere il termine Trojan indica i trojan ad accesso remoto (detti anche RAT dall'inglese Remote Administration Tool), composti generalmente da 2 file: il file server, che viene installato nella macchina vittima,
ed un file client, usato dall'attaccante per inviare istruzioni che il server esegue. In questo modo ( come con
il mitico stratagemma adottato da Ulisse) la vittima introduce il programma nella citt, ossia (fuor di metafora) lo esegue il programma. Esistono anche alcuni software legali, come GoToMyPC o PCAnywhere,
con funzionalit simili ai trojan, ma che non sono dei cavalli di Troia poich l'utente conosce la situazione.
Spesso il trojan viene installato dallo stesso attaccante, quando prende il controllo del sistema, acquisendone i privilegi amministrativi. In questo caso il trojan serve a "mantenere lo stato di hacking", cio a mantenere il controllo della macchina, senza che l'amministratore legittimo si accorga che alcuni programmi nascondono delle altre funzioni.
I trojan non si diffondono autonomamente come i virus o i worm, quindi richiedono un intervento diretto
dell'aggressore per far giungere l'eseguibile maligno alla vittima. A volte agiscono insieme: un worm viene
iniettato in rete proprio per installare dei trojan sui sistemi. Spesso la vittima stessa che scarica un trojan
sul proprio computer, perch i cracker amano inserire queste "trappole" in programmi molto richiesti (ad
es., nei videogiochi piratati). Vengono in genere riconosciuti da un antivirus aggiornato come tutti i malware. Se un trojan non ancora stato scoperto dalle software house degli antivirus, talvolta pu essere rilevato, con la scansione euristica, come probabile malware.
Un trojan pu contenere qualsiasi tipo di istruzione maligna. Spesso i trojan sono usati come veicolo alternativo ai worm e ai virus per installare delle backdoor o dei keylogger sui sistemi bersaglio.
All'incirca negli anni successivi al 2001 o 2002, i trojan incominciarono ad essere utilizzati sistematicamente per operazioni criminose; in particolare per inviare messaggi di spam e per rubare informazioni personali quali numeri di carte di credito e di altri documenti o anche solo indirizzi email.
137
I Trojan di nuova generazione hanno molteplici funzionalit; ad es., connessioni tramite bot IRC, formando
appunto Botnet, e opzioni per nascondersi meglio nel sistema operativo, utilizzando tecniche di Rootkit.
Nell'ambito dell'informatica un virus un software, appartenente alla categoria dei malware, che, una volta
eseguito, pu infettare dei file in modo da riprodursi facendo copie di s stesso, generalmente senza farsi
rilevare dall'utente. Talvolta, un virus non danneggia direttamente il sistema operativo che lo ospita, ma
anche nel caso migliore spreca risorse in termini di RAM, CPU e spazio sul disco fisso. Come regola generale, un virus danneggia direttamente solo il software della macchina che lo ospita, anche pu indirettamente danneggiare anche l'hardware, ad esempio surriscaldando la CPU mediante overclocking, oppure
fermando la ventola di raffreddamento.
Nell'uso comune il termine virus viene frequentemente ed impropriamente usato come sinonimo di malware, indicando quindi di volta in volta anche categorie di "infestanti" diverse, come ad esempio worm, trojan
o dialer.
Un virus composto da un insieme di istruzioni, come qualsiasi altro programma per computer. solitamente composto da un numero molto ridotto di istruzioni, (da pochi byte ad alcuni kilobyte), esegue soltanto poche e semplici operazioni ed ottimizza l'uso delle risorse, per rendersi il pi possibile invisibile.
Caratteristica principale di un virus quella di riprodursi e quindi diffondersi nel computer ogni volta che
viene aperto il file infetto.
Tuttavia, un virus di per s non un programma eseguibile (come un virus biologico non di per s una
forma di vita). Un virus, per essere attivato, deve infettare un programma ospite, o una sequenza di codice
che viene lanciata automaticamente, come ad esempio nel caso dei boot sector virus. La tecnica solitamente usata dai virus quella di infettare i file eseguibili: il virus inserisce una copia di s stesso nel file eseguibile che deve infettare, pone tra le prime istruzioni di tale eseguibile un'istruzione di salto alla prima linea della sua copia ed alla fine di essa mette un altro salto all'inizio dell'esecuzione del programma. In questo modo quando un utente lancia un programma infettato, viene dapprima impercettibilmente eseguito il
virus, e poi il programma. L'utente vede l'esecuzione del programma e non si accorge che il virus ora in
esecuzione in memoria e sta compiendo le varie operazioni contenute nel suo codice.
Principalmente, un virus esegue copie di s stesso spargendo l'epidemia, ma pu avere anche altri compiti
molto pi dannosi (cancellare o rovinare dei file, formattare l'hard disk, aprire delle backdoor, far apparire
messaggi, disegni o modificare l'aspetto del video, ..)
I virus informatici pi semplici sono composti da due parti essenziali, sufficienti ad assicurarne la replicazione:
- una routine di ricerca, che ricerca i file adatti ad essere infettati dal virus e controlla che gli stessi non ne
contengano gi una copia, in modo da evitare l'infezione ripetuta di uno stesso file;
- una routine di infezione, che copia il codice del virus all'interno di ogni file selezionato dalla routine di
ricerca in modo che venga eseguito ogni volta che il file infetto viene aperto, in maniera trasparente rispetto all'utente.
Molti virus sono progettati per eseguire attivit differenti dalla replicazione del virus stesso, e contengono
dunque altri due elementi:
- la routine di attivazione, che contiene i criteri in base ai quali il virus decide se effettuare o meno l'attacco (es. una data, o il raggiungimento di un certo numero di file infetti);
- il payload, che una sequenza di istruzioni in genere dannosa per il sistema ospite, come ad esempio la
cancellazione di alcuni file o la visualizzazione di messaggi sullo schermo.
I virus possono essere cifrati e magari cambiare algoritmo e/o chiave ogni volta che vengono eseguiti,
quindi possono contenere altri tre elementi:
- una routine di decifratura, contenente le istruzioni per decifrare il codice del virus;
- una routine di cifratura, di solito cifrata anch'essa, che contiene il procedimento per cifrare ogni copia
del virus;
- una routine di mutazione, che modifica le routine di cifratura e decifratura per ogni nuova copia del virus.
11.5.12 DoS
(Da Wikipedia, l'enciclopedia libera, voce DoS)
DoS, scritto con la maiuscola al primo e terzo posto, la sigla di denial of service (negazione del servizio). Questo tipo di attacco attacca un sistema server, ad esempio un sito web al limite delle prestazioni, la-
138
vorando su uno dei parametri d'ingresso, per renderlo incapace di erogare il servizio.
Gli attacchi vengono abitualmente attuati inviando molte richieste al server (di solito un server Web, FTP o
di posta elettronica), saturando le sue risorse e "destabilizzando" il suo sistema; quindi, qualsiasi sistema
collegato ad Internet e che fornisca servizi di rete basati sul TCP pu subire di attacchi DoS.
Inizialmente questo tipo di attacco veniva attuato dai "cracker" come gesto di dissenso etico nei confronti
dei siti web commerciali e delle istituzioni.
Oggi gli attacchi DoS vogliono (pi "criminalmente") impedire l'accesso ai siti web attaccati. L'attacco, per
essere pi efficace, in genere utilizza molti computer inconsapevoli sui quali precedentemente ha inoculato
un programma appositamente creato e che si attiva ad un comando proveniente dal cracker creatore. Se il
programma maligno diffuso su molti computer, migliaia di questi PC, violati da un cracker, possono produrre inconsapevolmente e contemporaneamente un flusso incontenibile di dati che travolgeranno anche i
link pi capienti del sito bersaglio.
Oltre i sistemi server, anche semplici utenti e client (come iPhone) possono essere attaccati da un DoS.
La probabilit sempre minore di incontrare sistemi veramente vulnerabili ha diminuito gli attacchi DoS pi
eclatanti; per si scoperta un'estrema vulnerabilit della rete per l'aumento costante della potenza operativa degli attuali personal computer e dell'accesso ad Internet tramite i sistemi DNS.
L'implementazione del protocollo TCP/IP, che non garantisce l'identificazione dei mittenti di pacchetti ma
anzi ne protegge l'anonimato, pu venir sfruttato per mascherarne la vera provenienza. Trattandosi di connessioni apparentemente legittime, impossibile bloccarle senza interrompere anche il flusso realmente
inoffensivo. Per, la riduzione drastica del numero di sessioni aperte simultaneamente riduce l'impatto
dell'attacco senza limitare il flusso dei pacchetti regolari.
Anche limitando il discorso al blocco di un sito web, esistono, e sono stati utilizzati, parecchi modi di ottenere questo risultato.
Lo scopo di questo attacco saturare la backlog queue con richieste di attivazione di un servizio (TCP
SYN settato) oltre la scadenza dei relativi timeout e non consentendo alla vittima di completare il 3-way
handshake; in questo modo, non sar in grado di gestire i SYN leciti a cui verr negato il servizio.
Lattacco pu essere:
- diretto: l'attaccante interagisce direttamente con la vittima; in questo caso, l'attaccante si dice reale e la
vittima si dice di primo livello;
- indiretto: l'attaccante sfrutta terze parti per colpire la vittima, in questo caso l'attaccante si dice riflesso,
le terze parti si dicono vittime di secondo livello e la vittima finale si dice vittima di primo livello.
Storicamente il SYN-Flooding il capostipite degli attacchi DoS, e discende dal Ping of Death. Il temine
SYN Flooding (= "inondazione di pacchetti di tipo SYN") nasce dal fatto che quando un utente clicka su
un link di una pagina web, richiede l'apertura di una connessione (di tipo TCP) verso quel sito; il primo
passo di questa connessione l'invio di un pacchetto TCP che richiede l'apertura di una connessione.
Il protocollo TCP esige che il sistema risponda allocando alcune risorse (in pratica memoria) per la connessione. Se si programma opportunamente un semplice PC, possibile richiedere l'apertura di diverse migliaia di connessioni al secondo, che "inondando" il server, ne consumano rapidamente tutta la memoria, e
lo bloccano o lo mandano in crash.
Il problema di questo tipo di attacco che il computer attaccante deve poter mandare il flusso di pacchetti
attraverso la connessione ad Internet fino al server attaccato; oppure l'utente malintenzionato deve fornire
delle "credenziali" di accesso valide per usufruire della vulnerabilit insorta nel sistema operativo e portare
a termine, efficacemente, l'attacco al sito bersaglio.
I pacchetti dannosi predisposti con un indirizzo IP, falsificato rispetto all'originale, procureranno al computer "vulnerabile" una situazione, temporanea, di Denial of Service; poich le connessioni che sono normalmente disponibili, sia per i buoni che per i cattivi, sono lente, questo diventa impossibile.
Un esempio potrebbe essere il seguente: l'attaccante, identificato dal nome STE, invia una serie di richieste
alla sua vittima, identificata col nome CRI: la macchina server, sulla quale vengono eseguiti dei servizi,
non riuscir a gestire tutte le richieste e i servizi andranno in crash, risultando prima molto rallentati e poi,
successivamente, inaccessibili. In questa maniera, un utente qualunque (identificato dal nome UTENTE)
non riuscir ad accedere ai servizi e ricever un errore di richiesta scaduta o timeout.
Il protocollo classico usato nei DoS il ping; inviando milioni di ping si riuscir a bloccare l'operativit di
qualunque sito Internet, ma trattandosi di un modello di attacco "uno a uno", ad un pacchetto in uscita corrisponder la ricezione di un solo pacchetto al sistema attaccato. Occorrer quindi che i cracker dispongano
139
di un gran numero di PC client, "controllati"; per, difficile "inoculare" il codice maligno in un numero
tanto elevato di macchine grazie all'azione specifica di antivirus, patch di sicurezza e tecnici informatici.
Una modalit di attacco pi sofisticata, detta Smurf attack, usa un flusso di pacchetti modesto, che invia
attraverso una normale connessione via modem, ed una rete esterna mal configurata, che agisce da moltiplicatore di pacchetti, i quali si dirigono infine verso il bersaglio finale lungo linee di comunicazione ad alta velocit. Tecnicamente, viene mandato uno o pi pacchetti di broadcast verso una rete esterna composta
dal numero maggiore possibile di host e con l'indirizzo mittente che punta al bersaglio (broadcast storm).
Ad esempio, pu venir usata una richiesta echo ICMP (Internet Control Message Protocol) precedentemente falsificata dallattaccante.
Questo tipo di attacco possibile solo in presenza di reti che abbiano grossolani errori di configurazione
dei sistemi (nello specifico, nella configurazione dei router) che le collegano tra loro e con Internet.
Il DDoS (Distributed Denial of Service) un attacco DoS realizzato utilizzando numerose macchine attaccanti che insieme costituiscono una botnet. Gli attaccanti non si espongono direttamente, perch le forze
dell'ordine potrebbero risalire facilmente ai computer utilizzati per l'attacco. Gli attaccanti, per evitare di
essere individuati e per disporre di un numero sufficiente di computer per l'attacco, inizialmente infettano
un numero elevato di computer con dei virus o worm che lasciano aperte delle backdoor a loro riservate; i
computer che sono controllati dall'attaccante vengono chiamati zombie.
Ogni computer infettato entra in una botnet utilizzabile dall'attaccante; c un distinguo interessante tra le
macchine che eseguono un Sistema Operativo Windows (definiti, in gergo, rxbot) e quelle che invece eseguono un sistema Unix, particolarmente adatte all'UDP Flooding (Flooding sul protocollo UDP). Una particolarit degli zombies Windows la possibilit, per l'attaccante, di programmare un trojan in grado di diffondersi automaticamente a una serie di contatti presenti sul computer infettato (funzione di autospreading); questi contatti sono contenuti nella rubrica degli indirizzi e nei contatti di programmi di Instant
Messaging, come Microsoft Messenger, e permettono al computer zombie di infettare, in maniera completamente autonoma, altre macchine che, a loro volta, diverranno parte della botnet dell'attaccante.
Quando il numero di zombies ritenuto adeguato, o quando avviene una data condizione, i computer infetti si attivano e sommergono il server bersaglio di richieste di connessione. Con l'avvento della banda larga
il fenomeno dei DDOS sta assumendo proporzioni preoccupanti, dato che attualmente esistono milioni di
persone dotate di una connessione ad Internet molto veloce e permanente ma con scarse o nulle conoscenze
e contromisure riguardanti la sicurezza informatica.
Il danno maggiore dell'attacco di tipo DDoS dovuto principalmente alla "asimmetria" che si viene a creare tra "la" richiesta e le risposte correlate in una sessione DNS (Domain Name System). Il flusso enorme di
risposte generato provocheranno nel sistema una tale "inondazione" di traffico rendendo il server inadeguato alla gestione delle abituali funzioni on-line.
Inoltrando, al Sito preso di mira, una risposta di alcuni Kilobyte, per ogni richiesta contenente solo pochi
byte, si ottiene un'amplificazione esponenziale tale da saturare i canali dati pi capienti, raggiungendo con
il DDoS livelli finora inattuabili con gli altri tipi di attacco DoS.
Le configurazioni predefinite, standard e quelle "consigliate" di firewall contrastano solo gli "attacchi"
sferrati dall'esterno, ad esempio di un'azienda, ma poich il traffico in Rete gestito tramite sistema DNS
vitale, per fronteggiare questo tipo di attacco non si potranno attuare le stesse strategie impiegate nei confronti degli attacchi ai ping.
Quindi il Network manager dovr tenere scrupolosamente sotto controllo e monitoraggio i canali di flusso
dati e, per escludere l'intervento o contrastare l'azione di un cracker, riconfigurer il DNS responsabile del
sito.
Nel campo della sicurezza delle informazioni per ingegneria sociale (dall'inglese social engineering) si intende lo studio del comportamento individuale di una persona al fine di carpire informazioni.
Questa tecnica anche un metodo (improprio) di crittoanalisi quando usata su una persona che conosce
la chiave crittografica di un sistema. Similmente al metodo del tubo di gomma pu essere un modo sorprendentemente efficiente per ottenere la chiave, soprattutto se comparato ad altri metodi crittoanalitici.
Con l'evoluzione del software, l'uomo ha migliorato i programmi a tal punto che essi presentano pochi bug
(errori che i programmatori generalmente commettono quando creano un software). Per un cracker sarebbe
140
impossibile attaccare un sistema informatico in cui non riesce a trovare bug. Quando ci accade l'unico
modo che il cracker ha per procurarsi le informazioni di cui necessita quello di attuare un attacco di ingegneria sociale.
Un ingegnere sociale (social engineer) se sa fingere, sa ingannare gli altri, in una parola sa mentire. Un
social engineer molto bravo a nascondere la propria identit, fingendosi un'altra persona: in tal modo egli
riesce a ricavare informazioni che non potrebbe mai ottenere con la sua identit reale. Nel caso sia un cracker, pu ricavare informazioni attinenti ad un sistema informatico. Il social engineering quindi una tecnica per ricavare informazioni molto usata dagli hacker esperti e dalle spie, e dato che comporta (nell'ultima fase dell'attacco) il rapporto pi diretto con la vittima, questa tecnica una delle pi importanti per carpire informazioni. In molti casi il cosiddetto ingegnere potr riuscire a ricavare tutto ci che gli serve dalla
vittima ignara.
Il social engineer comincia con il raccogliere informazioni sulla vittima per poi arrivare all'attacco vero e
proprio. Durante la prima fase (che pu richiedere anche alcune settimane di analisi), l'ingegnere cercher
di ricavare tutte le informazioni di cui necessita sul suo bersaglio: e-mail, recapiti telefonici, ecc. Superata
questa fase, detta footprinting, l'ingegnere passer alla fase successiva, cio quella che gli permetter di verificare se le informazioni che ha ricavato sono pi o meno attendibili, anche telefonando all'azienda del
bersaglio e chiedendo cortesemente di parlare con la vittima. La fase pi importante, quella che determiner il successo dell'attacco, lo studio dello stile vocale della persona per la quale vuole spacciarsi (ad esempio cercando di evitare in tutti i modi l'utilizzo di espressioni dialettali e cercando di essere quanto pi
naturale possibile, sempre utilizzando un tono neutro e cortese). In questa fase l'attaccante avr sempre vicino a s i propri appunti con tutte le informazioni raccolte nella fase di footprinting, dimostrandosi pertanto sicuro nel caso gli venisse posta qualche domanda.
Molto spesso il social engineering viene utilizzato per ricavare informazioni su privati (phishing). Un esempio di azione di questo genere pu essere una falsa e-mail, mandata da un aspirante ingegnere sociale
fingendosi magari un amministratore di sistema, o un membro di qualche grosso ente. Vengono richiesti al
malcapitato di turno nome utente e password di un suo account, ad esempio quello di posta elettronica, con
la scusa di fare dei controlli sul database dell'azienda. Se la vittima cade nel tranello, il social engineer ottiene il suo obiettivo, ossia una breccia nel sistema della vittima, da cui potr iniziare una fase di sperimentazione allo scopo di violare il sistema stesso.
11.6 Firewall
Un firewall (parete tagliafuoco) l'incarnazione moderna del fossato pieno d'acqua (e anche di coccodrilli)
e del ponte levatoio che proteggevano gli antichi castelli.
Il principio lo stesso: obbligare tutto ci che transita (esseri umani nell'antichit, traffico di rete oggi) a
passare per un unico punto di ingresso e uscita, dove si possono effettuare gli opportuni controlli.
Un firewall un componente attivo che seziona e collega due o pi tronconi di rete, normalmente la rete
aziendale e quella esterna. In tal modo, tutto il traffico dall'una all'altra parte deve per forza transitare attraverso il firewall e consente di impostare una politica di sicurezza a livello di network.
Con il termine personal firewall invece ci si riferisce a dei programmi (es. Zone Alarm o similari) che
consentono di impostare regole di filtraggio (e quindi una politica di sicurezza) solo a livello di host.
Il firewall quindi un punto obbligato di passaggio tra la rete interna e la rete esterna permette di filtrare i
pacchetti che passano da una parte allaltra sulla base di regole importate dallamministratore di rete con
funzioni di controllo, modifica e monitoraggio.
Criteri tipici di filtraggio dei pacchetti, che possono anche essere combinati fra loro, sono:
- indirizzo IP (o range di indirizzi) di partenza o di destinazione: questo pu servire per connettere fra loro due reti aziendali remote attraverso una rete esterna, ottenendo una cosiddetta extranet;
- numero di port di destinazione: questo pu servire per abilitare soltanto alcuni (ad esempio, si disabilita
in ingresso il port 23: nessuno dalla rete esterna pu fare login su un elaboratore della rete interna). C'
il problema che alcuni servizi (come il Web) sono spesso offerti anche su porte non standard;
- tipo di connessione usata: frequente bloccare tutto il traffico UDP, che pi difficile da analizzare.
141
Eth
0
firewall
Eth
1
Router
ADSL
Client B
Innanzitutto si devono configurare gli indirizzi IP dei vari nodi e le relative tabelle di routing.
142
localhost localhost.localdomain
firewall
clientA
clientB
Per risolvere i nomi in Internet si deve inserire nel file /etc/conf lindirizzo del DNS server specificato dal
provider:
echo nameserver ip_dns_provider >> /etc/resolv.conf
Una volta configurate le tabelle di routing, necessario impostare le regole di filtraggio. In Linux il filtraggio si imposta utilizzando iptables e per comprenderne meglio il funzionamento importante comprendere come vengono trattati i pacchetti durante il routing.
143
In ogni passaggio, se il pacchetto non verifica nessuna delle condizioni impostate, pu essere definita una
regola di default da applicare al pacchetto che verr quindi accettato o rigettato.
Usualmente si ritengono sicuri ed accettabili i pacchetti provenienti dallinterno e destinati verso lesterno
e quindi, in particolare, i pacchetti che hanno come sorgente il firewall saranno permessi e quindi
limpostazione ovvia di default del processo di OUTPUT sar quella di ACCEPT.
Quello che si vuole invece evitare, a meno di eccezioni, e che dallesterno si possa impunemente accedere
verso linterno. Ecco perch usuale impostare a DROP la configurazione di default dei processi di
FORWARD e di INPUT.
Sarebbe un errore lasciare ad ACCEPT queste regole e tentare di chiudere tutti i servizi interni. Il firewall
serve, in particolare, per chiudere tutto, anche quello che neanche si sa di avere aperto. Negando tutto e accettando solo ci che si considera come corretto si sicuri che se dallesterno di accede ad una data risorsa
interna perch siamo stati noi a richiederlo.
Il primo banale script di configurazione del nostro firewall sar quindi (il flag -P imposta per lappunto la
politica di default per il processo):
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
In questo modo tutto il traffico bloccato. Da qui in poi aggiungeremo le regole che consentiranno di accedere ai servizi che si vogliono attivare (politica default deny)
iptables N lan_inet
iptables A FORWARD i eth0 o eth1 j lan_inet
creo una nuova catena che si chiama lan_inet e su questa catena dirotto tutto il traffico in ingresso dalla
scheda eth0 e diretto verso la scheda eth1 (cio il traffico che dalla LAN va verso Internet)
iptables N inet_lan
iptables A FORWARD i eth1 o eth0 j inet_lan
creo una nuova catena che si chiama inet_lan e su questa catena dirotto tutto il traffico in ingresso dalla
scheda eth1 e diretto verso la scheda eth0 (cio il traffico che da Internet va verso la LAN)
Utilizzare regole basate sulle interfacce fisiche da cui provengono o verso cui sono instradati i pacchetti
pi sicuro rispetto allutilizzo di regole basate sugli indirizzi IP, perch ci protegge da situazioni di IP spoofing.
iptables A lan_inet p tcp --dport 80 j ACCEPT
iptables A lan_inet p tcp --dport 53 j ACCEPT
iptables A lan_inet p udp --dport 53 j ACCEPT
Queste regole abilitano linoltro dei pacchetti che transitano dalla LAN verso Internet se contengono segmenti TCP che sono diretti alla porta 80 o 53 oppure segmenti UDP diretti alla porta 53 del nodo di destinazione. Si tratta di pacchetti generati da un client Web o pacchetti diretti a un DNS server.
iptables A lan_inet p tcp j REJECT -reject-with tcp-reset
Questa regola (lultima della catena) serve a inviare un segmento TCP di reset ai nodi che inviano pacchetti
contenenti segmenti TCP che non verranno inoltrati. In questo modo lapplicazione capisce subito che la
porta chiusa, e si evitano ulteriori tentativi.
iptables A inet_lan m state --state ESTABLISHED, RELATED j ACCEPT
Questa regola consente alle connessioni attivate dallinterno di poter ricevere le risposte che provengono
dallesterno.
iptables A inet_lan p tcp j REJECT -reject-with tcp-reset
Questa regola (lultima della catena) serve a inviare un segmento TCP di reset ai nodi che inviano pacchetti
contenenti segmenti TCP che non verranno inoltrati. In questo modo lapplicazione capisce subito che la
porta chiusa, e si evitano ulteriori tentativi.
iptables t nat I POSTROUTING s 192.168.1.0/24 o eth1 j MASQUERADE
Questultima regola serve a abilitare il NAT sui pacchetti che escono verso Internet.
Per consentire invece laccesso dallesterno a un servizio interno alla rete si deve abilitare il D-NAT.
Lesempio che segue abilita laccesso a un server Web:
iptables t nat A PREROUTING p tcp d <IP PUBBLICO> --dport 80 j DNAT --todestination <IP PRIVATO>
144
L'Intrusion Detection System o IDS un dispositivo software e hardware (a volte la combinazione di tutti e
due, sotto forma di sistemi stand-alone pre-installati e pre-configurati) utilizzato per identificare accessi
non autorizzati ai computer o alle reti locali. Le intrusioni rilevate possono essere quelle prodotte da cracker esperti, da tool automatici o da utenti inesperti che utilizzano programmi semiautomatici. Gli IDS
vengono utilizzati per rilevare tutti gli attacchi alle reti informatiche e ai computer. Questi attacchi includono gli attacchi alle reti informatiche tramite lo sfruttamento di un servizio vulnerabile, attacchi attraverso
l'invio di dati malformati e applicazioni malevole, tentativi di accesso agli host tramite innalzamento illecito dei privilegi degli utenti, accessi non autorizzati a computer e file, e i classici programmi malevoli come
virus, trojan e worm.
Un IDS composto da quattro componenti. Uno o pi sensori utilizzati per ricevere le informazioni dalla
rete o dai computer. Una console utilizzata per monitorare lo stato della rete e dei computer e un motore
che analizza i dati prelevati dai sensori e provvede a individuare eventuali falle nella sicurezza informatica.
Il motore di analisi si appoggia ad un database ove sono memorizzate una serie di regole utilizzate per identificare violazioni della sicurezza. Esistono diverse tipologie di IDS che si differenziano a seconda del
loro compito specifico e delle metodologie utilizzate per individuare violazioni della sicurezza. Il pi semplice IDS un dispositivo che integra tutte le componenti in un solo apparato.
Un IDS consiste quindi in un insieme di tecniche e metodologie realizzate ad-hoc per rilevare pacchetti sospetti a livello di network, di trasporto o di applicazione. Due sono le categorie base: sistemi basati sulle
firme (signature) e sistemi basati sulle anomalie (anomaly). La tecnica basata sulle firme in qualche modo analoga a quella per il rilevamento dei virus, che permette di bloccare file infetti e si tratta della tecnica
pi utilizzata. I sistemi basati sul rilevamento delle anomalie utilizzano un insieme di regole che permettono di distinguere ci che "normale" da ci che "anormale". importante sapere che un IDS non pu
bloccare o filtrare i pacchetti in ingresso ed in uscita, n tanto meno pu modificarli. Un IDS pu essere
paragonato ad un antifurto ed un firewall ad una porta blindata. L'IDS non cerca di bloccare le eventuali
intrusioni, cosa che spetta al firewall, ma cerca di rilevarle laddove si verifichino.
Le attivit e i campi di applicazione di un Intrusion Detection System sono vari, al punto che spesso vengono gestiti da diversi software, che nel loro insieme provvedono ad accorgersi dei tentativi di attacco o
scansione di un sistema, prevedere meccanismi di notifica e reazione secondo eventi anche proattivi in
grado di bloccare sul nascere le comunicazioni con IP da cui arrivano pacchetti ostili. I meccanismi di individuazione di attivit sospette sono diversi, ma generalmente si concentrano su:
- verifica dei log di sistema o di specifici programmi per individuare attivit anomale;
- controllo dell'integrit dei file locali (modifiche sospette sono sintomi di una avvenuta irruzione);
- monitoring dei pacchetti destinati all'host, sia per reagire a pattern di attacco noti che per accorgersi di
un port scan remoto, generalmente prologo di un tentativo di intrusione.
Gli IDS si possono suddividere anche a seconda di cosa analizzano, esistono gli IDS che analizzano le reti
locali, quelli che analizzano gli Host e gli IDS ibridi che analizzano la rete e gli Host.
Un Network Intrusion Detection System (o Nids) analizza il traffico di rete per identificare intrusioni,
permettendo quindi di monitorare non solo un singolo host ma una rete completa. Si tratta di un sistema
che legge (in gergo 'sniffa') il traffico che passa su un segmento di rete dov' attestato, cercando tracce di
attacchi. Il suo funzionamento regolato in base a due principi: il signature matching con cui l'ids cattura il
traffico e lo confronta con un database di firme di attacchi (database costantemente aggiornato dal produttore dell'ids) e il network analysis che entra in funzione quando il signature matching fallisce e che in
grado di rilevare anomalie nei flussi di traffico e quindi di rilevare anche quegli attacchi che non sono ancora stati scoperti come tali. Un esempio di Network INtrusion Detection System Snort, uno degli IDS
pi conosciuti.
Un Host based Intrusion Detection System consiste in un agente che analizza l'Host alla ricerca di intrusioni. Le intrusioni vengono rilevate analizzando i file di log del sistema, le system call, le modifiche al file
system del computer (modifiche nel file delle password, nel database degli utenti e della gestione dei privilegi, ecc), e altre componenti del computer. Un esempio di questa tipologia Aide.
Un Hybrid Intrusion Detection System combina i due approcci. Le informazioni recuperate dagli agenti
in esecuzioni negli Host vengono integrate con le informazioni prelevate dalla rete locale. Un esempio di
IDS ibrido Prelude.
Gli IDS si suddividono in due ulteriori categorie, gli IDS passivi e degli IDS attivi. I primi IDS quando rilevano una violazione della sicurezza informatica provvedono a notificarla all'operatore tramite la console
ed eventualmente gli inviano una email. Gli IDS attivi oltre a notificare all'operatore una violazione della
145
sicurezza provvedono a prendere delle opportune contromisure per eliminare o comunque isolare la violazione informatica.
Nei sistemi attivi l'eliminazione della violazione si ottiene usualmente riprogrammando la lista di controllo
degli accessi del firewall in modo da impedire l'accesso agli indirizzi responsabili dell'attacco. Questa tipologia di IDS va accuratamente programmata dato che una falsa identificazione potrebbe bloccare un utente
autorizzato.
Il firewall non in grado di bloccare violazioni della sicurezza che avvengono dall'interno della rete locale.
A questo scopo sono stati sviluppati gli Intrusion prevention system. Questi componenti contengono delle
liste programmate dall'IDS che vengono utilizzate per decidere se un programma pu essere eseguito. Questi componenti impediscono a worm o virus di diffondersi nei vari computer dato che il componente ne
impedisce l'attivazione.
11.8.1 Crittografia
Storicamente, sono stati quattro i gruppi di persone che hanno dato il loro contributo allarte della crittografia: i militari, il corpo diplomatico, gli scrittori di diari e gli amanti. (Da Reti di Computer di Andrew
S. Tanenbaum)
La crittografia (o scrittura nascosta) la disciplina che si occupa di studiare le tecniche per scrivere un
messaggio in modo tale che solo il legittimo destinatario sia in grado di leggerlo. Si occupa dunque del
problema della segretezza.
La scienza della crittografia stata impiegata fino a qualche anno fa quasi esclusivamente in ambiente diplomatico e militare. Come gi accaduto per Internet, tuttavia, la crittografia moderna da pochi anni uscita dalle nebbie oscure dellambiente militare diffondendosi pian piano nei pi svariati settori della nostra
societ ed andando a costituire il principale strumento di sicurezza in campo informatico.
La segretezza delle informazioni ha assunto, quindi, notevole importanza soprattutto a seguito
dellespansione di Internet, con milioni di comuni cittadini che utilizzano la rete per operazioni bancarie,
commerciali e fiscali.
I requisiti principali di tale tecnica sono:
- ragionevole efficienza nella creazione del messaggio;
- estrema difficolt nella interpretazione del messaggio da parte di chi non autorizzato;
- possibilit di cambiare con estrema rapidit il metodo usato.
Una prima possibilit stabilire un metodo di trasformazione (cifratura o encryption) del messaggio originale e un corrispondente metodo di interpretazione (decifratura o decryption) che vengono tenuti gelosamente segreti, e sono noti solo alle persone autorizzate.
146
147
fratura. La criptoanalisi (cryptoanalysis) invece si occupa di scoprire modi per decifrare i messaggi pur
non conoscendo le regole note alle persone autorizzate (in particolare, la chiave).
Questa operazione pu essere portata avanti in due modi:
- provare ad applicare al testo cifrato il metodo di decifratura con tutti i possibili valori della chiave. Questo approccio, detto di forza bruta, produce certamente il testo in chiaro originale prima o poi, ma
ovviamente molto oneroso, ed anzi lo tanto pi quanto lunga la chiave (ad esempio con 128 bit di
chiave, ci sono 2128 prove da effettuare);
- scoprire le eventuali debolezze delle funzioni E e D, per ridurre lo spazio delle chiavi da esplorare.
Ci sono due principi fondamentali che ogni metodo di cifratura deve rispettare:
- i messaggi originali devono contenere della ridondanza: se cos non fosse, ogni possibile messaggio cifrato sarebbe comunque valido e Trudy potrebbe quindi inviarne a piacere, dato che a destinazione essi
verrebbero considerati autentici dopo essere stati decifrati;
- i messaggi originali devono contenere qualcosa (ad esempio un time stamp) che impedisca a Trudy di
rispedire nuovamente un messaggio valido. Altrimenti, ogni volta che Trudy intercetta un messaggio
pu inviarlo nuovamente per i propri scopi.
148
149
150
0
0
1
4
2
1
3
5
4
2
5
6
6
3
151
- (D+X)(mod m)=(D+R)(mod m) e cio: una data uguaglianza modulare rimane tale anche se si aggiunge
ad entrambi i membri una stessa quantit.
Applicando infatti rispettivamente le propriet sul resto di un prodotto e sul resto di una somma :
- DX(mod m)=D(mod m) X(mod m)=D(mod m) R=DR(mod m)
- (D+X)(mod m)=D(mod m)+X(mod m)=D(mod m)+R=(D+R)(mod m).
Se si considera allora la funzione modulare C=EP(mod m), per quanto appena detto sono dunque giustificati i passaggi:
- C=EP(mod m)
- DC(mod m)=DEP(mod m)=P(DE(mod m)).
Basta dunque cercare una D tale che: DE(mod m)=1, perch cos la funzione inversa vale:
- P=DC(mod m).
importante sottolineare che D esiste solo se E ed m sono primi fra loro.
Esempi:
Se si considera la funzione vista C=4P(mod7), essendo 4 e 7 primi fra loro, per poterla invertire basta trovare una D tale che: 4D(mod 7)=1.
Come pu essere facilmente verificato D=2, per cui :
- P=2C(mod 7).
Se si considera ora la funzione C=11P(mod 10800, essendo 11 e 10800 primi fra loro, per poterla invertire
basta trovare una D tale che: 11D(mod 10800)=1.
Come pu essere facilmente verificato D=5891, per cui :
- P=5891C(mod 10800).
Nel primo caso la determinazione di D intuitiva ed immediata, mentre nel secondo no.
Esiste un algoritmo che consente di giungere alla determinazione di D con tempi di elaborazione ragionevoli, anche quando il resto ha un enorme numero di cifre.
Sapendo che D, numero naturale, deve sottostare alla condizione DE(mod m)=1, se si indica con QUOZ il
risultato della divisione fra DE e m, dovendo essere DE=m*QUOZ+1, si pu implementare un'iterazione
con QUOZ che avanza a partire da 1, arrestando l'algoritmo non appena il risultato (e non il resto) della divisione (m*QUOZ+1)/E un numero naturale, numero che poi D.
Per la funzione sopra considerata, ovvero C=11P(mod 10800), l'algoritmo si arresta dopo appena 6 iterazioni. Con QUOZ=6 dunque D=5891.
La funzione di Eulero N(m) di un numero naturale m definita come il numero di naturali (con 1 sempre
incluso) compresi fra 1 ed m-1, che non hanno fattori in comune con m.
Se m un numero primo, naturalmente : N(m)=m-1.
Se m pari al prodotto di due numeri primi, p e q, N(m)=N(pq)=(p-1)(q-1)
Se m pari al prodotto di tre numeri primi, p, q e z , N(m)=N(pqz)=(p-1)(q-1)(z-1)
e cos via.
L'importanza del funzione di Eulero N(m) nell'ambito della crittografia a chiave pubblica, sta proprio nella
semplicit con cui possibile determinarla, anche quando m il prodotto di due numeri primi molto grandi.
La struttura di una funzione modulare esponenziale la seguente: C=PE(mod m)
come prima:
- E ed m sono delle costanti numeriche
- C la variabile dipendente
- P la variabile indipendente.
Come prima C un resto, e dato che si pensa di dover far ricorso alla funzione modulare esponenziale inversa, in cui P ad essere la variabile dipendente, anche P un resto.
E allora C e P sono due numeri naturali (0, 1, 2, 3, ..), con valori compresi fra 0 ed (m-1).
Ora per la funzione C=PE(mod m) invertibile solo se E ed N(m) sono primi fra loro, ovvero solo se E ed
N(m) non hanno alcun fattore in comune.
Con riferimento intanto alla notazione X(mod m)=R, con D pari a una costante, :
XD (mod m) = RD (mod m)
e cio: una data uguaglianza modulare rimane tale anche se si "elevano" entrambi i membri ad una stessa
quantit.
infatti:
XD (mod m) = (X*X*)(mod m) = X(mod m)* X(mod m)*= R*R* =RD (mod m)
152
153
Per, a causa del costo computazionale, questo approccio sembra eccessivo: cifrare tutto il messaggio solo
per firmarlo poco efficiente. Inoltre, scomodo rendere l'intero documento illeggibile ove solo una firma
sia richiesta.
Ambedue i problemi si risolvono con una tecnica diversa e pi efficiente, che per introduce un piccolo rischio in termini di sicurezza.
La tecnica in questione si basa sull'uso delle funzioni hash (dette anche funzioni digest, cio funzioni riassunto) che vengono applicate al messaggio e ne producono, appunto, un riassunto (message digest).
Tale riassunto in generale di lunghezza ridotta, tipicamente fra i 10 e i 20 byte, indipendentemente dalla
lunghezza del messaggio originario.
Figura 11-11: Uso del digest per il controllo di integrit del messaggio
Alice invia il messaggio corredato del riassunto; quando Bob riceve il tutto, ricalcola il riassunto e lo confronta con quello ricevuto.
Ovviamente, questa semplice modalit esposta all'attacco di Trudy, che potrebbe intercettare il messaggio, sostituirlo con uno diverso correlato del relativo digest, e inviarlo a Bob come se fosse quello proveniente da Alice.
Per risolvere questo problema si ricorre a uno schema leggermente pi complesso, che fa uso anche della
crittografia a chiave pubblica: il riassunto, prima di essere spedito, viene cifrato dal mittente con la propria
chiave privata e decifrato dal destinatario con la chiave pubblica del mittente. Un riassunto cifrato in questo modo si dice firma digitale (digital signature) del mittente, perch assicura sia l'integrit del messaggio che l'autenticit del mittente, proprio come una firma apposta (in originale) in calce a un documento
cartaceo.
154
155
156
da una CA; in questo modo Alice ha la garanzia che si tratta proprio della chiave di Bob e non di quella di
Trudy.
Quando il client riceve questo messaggio, fa apparire automaticamente una finestra di dialogo predisposta
per l'immissione di una username e di una password.
L'utente immette i dati, e poi preme OK. A questo punto il client invia una nuova richiesta al server, simile
alla seguente:
GET url(la stessa di prima) HTTP/1.0
Authorization: Basic *****************
User-agent: .....
Accept: .....
ecc.
dove il testo rappresentato con gli asterischi contiene la username e la password immesse dall'utente, codificate con il metodo base64 encoding (uno standard del mondo Unix, definito negli rfc 1341 e 1521, che
non costituisce una cifratura ma serve solo a poter trasmettere caratteri ASCII estesi).
Quando il server riceve la richiesta, applica l'algoritmo di decodifica alla stringa di username-password, le
confronta con quelle in suo possesso per il realm NomeRealm e se tutto OK ritorna il documento richiesto,
altrimenti, ritorna un messaggio di errore (403 forbidden).
Il client di norma ricorda in una cache la coppia username-password immessa dall'utente e la utilizza anche
157
per i successivi accessi a documenti dello stesso realm; il server deve comunque decodificare tale coppia
ogni volta che arriva e verificarne la corrispondenza con quelle in suo possesso.
158
- i programmi CGI devono controllare la potenziale pericolosit di ogni comando che ricevono prima di
consegnarlo al programma esterno;
- il programma esterno deve essere il meno potente possibile: ad esempio la shell certamente da evitare,
se possibile.
Transport Layer Security (TLS) un protocollo standard IETF che, nella sua ultima versione, definito
nella RFC 5246, sviluppata sulla base del precedente protocollo SSL da Netscape Corporation. un protocollo crittografico che permette una comunicazione sicura tra applicazioni client-server e una integrit dei
dati su reti TCP/IP cifrando la comunicazione dalla sorgente alla destinazione (end-to-end) sul livello di
trasporto. Viene utilizzato in applicazioni come i browser, l'E-mail, la messaggistica istantanea e il Voice
over IP.
Nell'utilizzo tipico di un browser da parte di utente finale, l'autenticazione TLS unilaterale: solo il server
autenticato (il client conosce l'identit del server), ma non vice-versa (il client rimane anonimo e non autenticato. L'autenticazione del server molto utile per il software di navigazione e per l'utente. Il browser
valida il certificato del server controllando la firma digitale dei certificati del server controllando che questa sia valida e riconosciuta da una certificate authority conosciuta utilizzando una cifratura a chiave pubblica. Dopo questa autenticazione il browser indica una connessione sicura mostrando solitamente un lucchetto in un'icona in basso a destra. Questa autenticazione, per, non sufficiente per garantire che il sito
con cui ci si collegati sia quello richiesto. Per esserne sicuri necessario analizzare il contenuto del certificato rilasciato e controllarne la catena di certificazione. I siti che intendono ingannare l'utente non possono utilizzare un certificato del sito che vogliono impersonare perch non hanno la possibilit di cifrare in
modo valido il certificato, che include l'indirizzo, in modo tale che risulti valido alla destinazione. Solo le
CA possono generare certificati validi con un'URL incorporata in modo che il confronto fra l'URL apparente e quella contenuta nel certificato possa fornire un metodo certo per l'identificazione del sito. Molto spesso questo meccanismo non noto agli utenti di internet ed causa di varie frodi dovute, per, ad un incorretto utilizzo del browser non ad una debolezza del protocollo TLS.
159
Il protocollo TLS permette anche un'autenticazione bilaterale, tipicamente utilizzata in applicazioni aziendali, in cui entrambe le parti si autenticano in modo sicuro scambiandosi i relativi certificati. Questa autenticazione (definita Mutual authentication) richiede che anche il client possieda un proprio certificato digitale cosa molto improbabile in un normale scenario.
In assenza di un'autenticazione bilaterale si possono utilizzare i protocolli TLS-PSK o Secure remote
password (SSP) per garantire un'autenticazione sicura in assenza di un certificato.
Il funzionamento del protocollo TLS pu essere suddiviso in tre fasi principali:
- Negoziazione fra le parti dell'algoritmo da utilizzare
- Scambio delle chiavi e autenticazione
- Cifratura simmetrica e autenticazione dei messaggi
Nella prima fase, il client e il server negoziano il protocollo di cifratura che sar utilizzato nella comunicazione sicura, il protocollo per lo scambio delle chiavi e l'algoritmo di autenticazione nonch il Message authentication code (MAC). L'algoritmo per lo scambio delle chiavi e quello per l'autenticazione normalmente sono algoritmi a chiave pubblica o, come nel caso di TLS-PSK, fanno uso di una chiave precondivisa
(Pre-Shared Key). L'autenticazione dei messaggi garantita da un algoritmo di hash che usa un costrutto
HMAC per il protocollo TLS o una funzione pseudorandom non standard per il protocollo SSL.
All'interno di una sessione tipicamente vengono utilizzati i seguenti protocolli:
- per lo scambio di chiavi: RSA, Diffie-Hellman, ECDH, SRP, PSK
- per l'autenticazione: RSA, DSA, ECDSA
- cifratura simmetrica: RC4, Triple DES, AES, IDEA, DES, o Camellia. Nelle vecchie versioni di SSL
era anche utilizzato il protocollo RC2.
- per le funzioni crittografiche di hash: in TLS sono utilizzati HMAC-MD5 o HMAC-SHA mentre in SSL
MD5 e SHA. Nelle versioni pi vecchie di SSL erano anche utilizzati MD2 e MD4.
I certificati prodotti da una CA possono essere conservati dove si desidera. Ad esempio, Bob pu tenere
una copia del proprio certificato, ed Alice pu chiederlo direttamente a lui invece che alla CA.
Questo precisamente quanto avviene sul Web quando si incontra un link gestito col metodo
https://
che viene gestito dal protocollo chiamato Secure Socket Layer (SSL), introdotto da Netscape.
Esso protegge l'intero flusso di dati che fluisce sulla connessione TCP, per cui pu essere usato sia con
HTTP che con FTP o TELNET.
Ad esempio, una form HTML che consente l'ordine di beni da acquistare fornendo il numero della propria
carta di credito potr essere riferita col link:
https://www.server.com/order.html
Quando l'utente del client decide di seguire tale link, si sviluppa questa catena di eventi:
MD5 (RFC 1321) un algoritmo crittografico di hashing messo a punto dal professor Ronald Rivest, nel
1991, dopo che erano state segnalate alcune debolezze nello schema del MD4. Pi lento del MD4, stato
implementato in un vastissimo numero di prodotti fintanto che, nel 1996, molteplici vulnerabilit nell'algoritmo furono individuate e dimostrate dal crittografo tedesco Hans Dobbertin.
Le funzioni hash, a partire da un testo di lunghezza arbitraria, generano una stringa di lunghezza fissa. La
trasformazione operata funziona in un solo senso: non quindi possibile, dalla stringa generata, risalire al
testo iniziale.
In certo senso, si pu dire che le funzioni hash non impiegano alcuna chiave crittografica.
160
L'hash rappresenta una sorta di "impronta digitale" (fingerprint) del contenuto di un file ed solitamente
usata per attestare che lo stesso file non sia stato alterato da virus, malware oppure per l'intervento di un
malintenzionato. All'"impronta digitale" viene attribuito anche il nome di message digest, checksum o valore di hash.
Le funzioni di hash sono talvolta non ben comprese ed alcune fonti affermano che due file non possano
mai avere lo stesso valore di hash (message digest). Questasserzione, infatti, falsa. Si consideri una
funzione di hash che genera un message digest da 128 bit. Ci sono, ovviamente, pow(2,128) possibili valori di hash. I file che esistono, per, sono certamente ben pi di pow(2,128) (sono considerabili in numero
pari allinfinito). Ne consegue che possono esistere file con il medesimo valore di hash.
La difficolt, quindi, consiste nellindividuare due file con il medesimo valore di hash.
Quando due messaggi producono un identico hash, si parla di collisione. La qualit di una funzione di
hash dipende dalla probabilit di individuare due testi che collidono.
Perch un algoritmo di hashing cada in disgrazia sufficiente che un gruppo di crittografi o di esperti informatici riesca a generare una collisione. questo ci che accaduto, in passato, per gli algoritmi MD2,
MD4 ed MD5, tutti oggi considerati insicuri.
A "rincarare la dose" ci hanno pensato alcuni ricercatori (A. Sotirov, M. Stevens, J. Appelbaum, A. Lenstra,
D. Molnar, D.A. Osvik e de Weger) che alcuni giorni fa hanno individuato una nuova vulnerabilit nella
PKI (acronimo di "Public Key Infrastructure") utilizzata per la generazione di certificati digitali da utilizzare per comunicazioni sicure attraverso il protocollo SSL.
Il metodo presentato pu consentire ad un aggressore di produrre nuovi certificati digitali contenenti la
stessa firma del certificato originale. L'attacco, quindi, stato dimostrato nella pratica.
Se l'utente si trovasse a visitare, utilizzando un qualunque browser, un sito web che sta utilizzando un certificato digitale "fasullo" - generato sfruttando vulnerabilit di MD5 - non otterrebbe alcun messaggio di allerta e riterrebbe erroneamente sicura la connessione.
A titolo esemplificativo, i ricercatori hanno creato un falso certificato digitale emesso da un'altrettanto fasulla "certification authority" (CA). Il certificato, ritenuto valido da tutti i principali browser web, avrebbe
potuto permettere ai ricercatori di "impersonificare" qualunque altro sito che utilizzasse il protocollo
HTTPS, compresi quelli di banche ed e-commerce.
L'attacco si basa su una debolezza dell'algoritmo di hashing MD5 che permette di costruire differenti messaggi aventi lo stesso hash MD5 ("collisione"). Come spiegano Sotirov, Stevens, Appelbaum, Lenstra,
Molnar, Osvik e de Weger, "i precedenti lavori incentrati sullo studio delle collisioni in MD5, tra il 2004 ed
il 2007, hanno evidenziato attacchi effettuabili almeno in linea teorica. Il nostro studio evidenzia invece
come possa essere sferrata almeno una tipologia di attacco pratico, funzionante in contesti reali".
"Questa nuova scoperta non incrementa in modo significativo i rischi per gli utenti poich i ricercatori non
hanno pubblicato alcuni dettagli indispensabili per la riproducibilit dell'attacco", ha commentato
Microsoft che fa notare come i vendor di certificati digitali abbiano ormai abbandonato MD5 per passare al
pi sicuro algoritmo SHA-1.
Purtuttavia, esistono ancora alcuni servizi che poggiano su MD5. Gli scopritori della falla, che hanno presentato la scoperta in occasione di una conferenza tenutasi nei giorni scorsi a Berlino, sono infatti riusciti a
violare un sito che permette di generare certificati digitali riuscendo ad ottenere certificati falsi.
Anche Mozilla ha voluto dire la sua a proposito della scoperta puntualizzando, in primo luogo, che pur non
trattandosi di un attacco rivolto nei confronti dei prodotti dell'azienda si avviata una collaborazione con i
vendor coinvolti affinch possano aggiornare i propri meccanismi per la generazione di certificati digitali.
161
se tutti usassero abitualmente la crittografia per la loro posta elettronica, indipendentemente dal contenuto
pi o meno riservato, e in tal modo nessuno desterebbe sospetti
Per la realizzazione di PGP, Zimmermann venne citato in tribunale dalla RSA Data Security Inc. per violazione del brevetto sull'algoritmo RSA, e accusato dal governo degli Stati Uniti di esportazione illegale di
strumenti crittografici. Entrambe le cause finirono nel nulla. L'accusa di esportazione illegale venne ritirata
nel 1996, mentre la controversia con RSA venne mediata da una successiva collaborazione tra le due parti
per la realizzazione delle versioni successive del software.
PGP, , quindi, un programma di crittografia che garantisce la segretezza della posta (ma non solo), l'autenticazione con firma digitale e la compressione. Il software in questione implementa in pratica i sistemi visti
fino a questo momento, utilizzando un sistema di crittografia misto con tre algoritmi:
- il sistema a chiavi pubbliche RSA;
- sistema a chiavi private IDEA (oppure altri algoritmi a scelta);
- algoritmo di hashing SHA-1 (oppure MD5).
Inoltre, per garantirne la diffusione, la versione base distribuita gratuitamente per l'uso personale.
Il suo funzionamento molto semplice:
- il file mittente viene compresso con un algoritmo di tipo zip; questo oltre ad essere utile per guadagnare
spazio, permette anche un guadagno di sicurezza della cifratura. Molte tecniche di crittoanalisi infatti
sfruttano le ridondanze presenti nel testo in chiaro per violare il cifrario: tali ridondanze sono ridotte
dalla compressione, migliorando la resistenza a questo tipo di attacchi. possibile comprimere soltanto
quei file che non risultano esser troppo corti;
- il file compresso viene cifrato mediante codice IDEA (o altri);
- viene generata una sequenza casuale di 128 bit (o pi) chiamata session key con appositi algoritmi per
ottenere una serie di numeriche hanno determinate propriet statistiche, devono essere equiprobabili;
- la session key viene cifrata con lRSA utilizzando la chiave pubblica del destinatario e il risultato concatenato al documento;
- infine viene applicato lalgoritmo di trasformazione reversibile a testo ASCII chiamato Armor Radix-64
(a volte indicato Base-64 o Armored). Questo algoritmo produce un documento formato da solo caratteri ASCII compatibile con tutti i server e client di posta elettronica.
Il tutto schematizzato dalla figura seguente.
162
Una Virtual Private Network o VPN una rete privata instaurata tra soggetti che utilizzano un sistema di
trasmissione pubblico e condiviso come per esempio Internet. Lo scopo delle reti VPN di dare alle aziende le stesse possibilit delle linee private in affitto ad un costo inferiore sfruttando le reti condivise pubbliche.
Le reti VPN utilizzano collegamenti che necessitano di autenticazione per garantire che solo gli utenti autorizzati vi possano accedere; per garantire la sicurezza che i dati inviati in Internet non vengano intercettati o utilizzati da altri non autorizzati, esse utilizzano sistemi di crittografia.
Le reti VPN sicure adottano dunque protocolli che provvedono a cifrare il traffico transitante sulla VPN.
Oltre alla cifratura, una VPN sicura deve prevedere nei suoi protocolli dei meccanismi che impediscano
violazioni della sicurezza, come ad esempio il furto dell'identit digitale o l'alterazione dei messaggi.
Generalmente una VPN comprende due parti: una interna alla rete, e quindi protetta, che preserva la trasmissione, e una meno affidabile e sicura che quella esterna alla rete private, ad esempio via Internet.
Nelle VPN c in genere un firewall tra il computer del dipendente o di un cliente e il terminale della rete o
del server. Il dipendente, per esempio, quando stabilisce la connessione con il firewall, deve autenticare i
dati che vuole trasmettere, passando attraverso un servizio di autenticazione interno.
Un utente autenticato pu essere provvisto di privilegi particolari per accedere a risorse che generalmente
non sono accessibili a tutti gli utenti. La maggior parte dei programmi client richiede che tutto il traffico IP
della VPN passi attraverso un Tunnel virtuale tra le reti utilizzando Internet come mezzo di collegamento. Dal punto di vista dellutente ci significa che, mentre la connessione VPN attiva, tutti gli accessi esterni alla rete sicura devono passare per lo stesso firewall come se lutente fosse fisicamente connesso
allinterno della rete sicura. Questo riduce il rischio che utenti esterni possano accedere alla rete privata
dellazienda.
La sicurezza della connessione VPN di importanza fondamentale, perch la rete su cui gli altri computer
stanno lavorando potrebbe non essere sicura, o esserlo solo parzialmente. La VPN deve quindi garantire un
livello di sicurezza tale da proteggere i computer dei dipendenti che stanno lavorando simultaneamente sulla stessa rete, tra i quali uno potrebbe essere stato infettato da un virus, un worm o un trojan.
163
164
smetterli in tempo reale al sistema di gestione della competizione collocato presso la sede del gruppo. Al
termine della competizione, un incaricato provveder allinvio, sul sistema informativo della Federazione
Italiana Automobilismo, della classifica, completa di tutte le informazioni richieste (nominativo concorrente, auto, targa, tempo di ogni prova, tempo totale, posizione in classifica, penalit).
Il candidato, fatte le opportune ipotesi aggiuntive:
- analizzi il problema, rappresenti lo schema della realt proposta, descriva le possibili soluzioni per l'acquisizione dei dati che dovranno essere inviati in tempo reale al sistema informativo del gruppo e in seguito alla FIA e scelga quella che a suo motivato giudizio la pi idonea a rispondere alle specifiche indicate;
- rappresenti graficamente l'architettura di rete del sistema fornendo gli elementi essenziali che caratterizzano le parti principali della stessa;
- progetti i sistemi di archiviazione e consultazione dati utilizzando il modello di rappresentazione Entit
Relazioni;
- descriva la logica del software di controllo del sistema;
- indichi una soluzione per garantire la continuit del servizio nel caso in cui si interrompa il collegamento del sistema di trasmissione dati al sistema gestionale del gruppo.