01.11.2012 Views

Universit`a degli Studi di Verona Studio di meccanismi di attacco e ...

Universit`a degli Studi di Verona Studio di meccanismi di attacco e ...

Universit`a degli Studi di Verona Studio di meccanismi di attacco e ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> <strong>Verona</strong><br />

FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI<br />

Corso <strong>di</strong> Laurea in Informatica<br />

Can<strong>di</strong>dato:<br />

Michele Barletta<br />

Tesi <strong>di</strong> laurea specialistica<br />

<strong>Stu<strong>di</strong></strong>o <strong>di</strong> <strong>meccanismi</strong> <strong>di</strong> <strong>attacco</strong> e <strong>di</strong>fesa<br />

delle reti wireless<br />

Anno Accademico 2006–2007<br />

Relatore:<br />

Prof. Roberto Segala


Ai miei genitori, Giancarla e Rolando


Non c’è nessun buon<br />

motivo per cui una persona<br />

dovrebbe tenersi in casa un<br />

computer.<br />

Kenneth Harry Olsen, 1977


In<strong>di</strong>ce<br />

Introduzione v<br />

Contesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v<br />

Scopo della Tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii<br />

Organizzazione della Tesi . . . . . . . . . . . . . . . . . . . . . . . vii<br />

I Le reti <strong>di</strong> comunicazione 1<br />

1 Le reti: nozioni <strong>di</strong> base 3<br />

1.1 La trasmissione delle informazioni . . . . . . . . . . . . . . . 3<br />

1.1.1 I mezzi trasmissivi . . . . . . . . . . . . . . . . . . . . 4<br />

1.1.2 Le tecniche <strong>di</strong> trasmissione . . . . . . . . . . . . . . . 4<br />

1.1.3 Co<strong>di</strong>fica e deco<strong>di</strong>fica dei dati . . . . . . . . . . . . . . 6<br />

1.1.4 Il modem . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.1.5 Misure fondamentali in un sistema <strong>di</strong> trasmissione <strong>di</strong>gitale<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.2 Reti <strong>di</strong> calcolatori . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

1.2.1 Tecnologie trasmissive . . . . . . . . . . . . . . . . . . 11<br />

1.2.2 Topologia . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

1.2.3 Classificazione delle reti in base all’estensione geografica 13<br />

1.3 Tecniche <strong>di</strong> commutazione . . . . . . . . . . . . . . . . . . . . 14<br />

1.3.1 Categorie principali . . . . . . . . . . . . . . . . . . . 14<br />

1.3.2 Il multiplexing . . . . . . . . . . . . . . . . . . . . . . 16<br />

1.4 Tecniche <strong>di</strong> accesso multiplo . . . . . . . . . . . . . . . . . . . 18<br />

1.5 Congestione delle reti . . . . . . . . . . . . . . . . . . . . . . 20<br />

1.6 Protocolli e architetture <strong>di</strong> rete . . . . . . . . . . . . . . . . . 21<br />

1.6.1 Funzionamento del software <strong>di</strong> rete . . . . . . . . . . . 22<br />

1.6.2 Il modello OSI . . . . . . . . . . . . . . . . . . . . . . 24<br />

1.6.3 Architettura Client-Server . . . . . . . . . . . . . . . 25<br />

1.7 Il collegamento dei dati . . . . . . . . . . . . . . . . . . . . . 26<br />

i


INDICE<br />

1.7.1 Riconoscimento e correzione <strong>degli</strong> errori . . . . . . . . 27<br />

1.7.2 Gestione del flusso <strong>di</strong> dati . . . . . . . . . . . . . . . . 28<br />

1.8 Le reti locali . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

1.8.1 Struttura trasmissiva delle reti locali . . . . . . . . . . 32<br />

1.8.2 Il livello MAC (Me<strong>di</strong>um Access Control) . . . . . . . . 32<br />

1.8.3 Il livello LLC (Logical Link Control) . . . . . . . . . . 33<br />

1.8.4 Il cablaggio . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

1.8.5 La rete ethernet . . . . . . . . . . . . . . . . . . . . . 34<br />

1.8.6 Il cablaggio Ethernet . . . . . . . . . . . . . . . . . . . 35<br />

1.8.7 Token Ring . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

1.8.8 Componenti a livello <strong>di</strong> struttura . . . . . . . . . . . . 37<br />

1.9 Instradamento dei pacchetti . . . . . . . . . . . . . . . . . . . 39<br />

1.9.1 Algoritmi <strong>di</strong> routing . . . . . . . . . . . . . . . . . . . 40<br />

1.9.2 Internetworking . . . . . . . . . . . . . . . . . . . . . . 43<br />

1.9.3 Internetwork routing . . . . . . . . . . . . . . . . . . . 45<br />

1.9.4 Routing multicast . . . . . . . . . . . . . . . . . . . . 45<br />

1.10 Trasporto dei pacchetti . . . . . . . . . . . . . . . . . . . . . 47<br />

1.10.1 In<strong>di</strong>rizzamento . . . . . . . . . . . . . . . . . . . . . . 47<br />

1.10.2 Attivazione e rilascio della connessione . . . . . . . . . 47<br />

1.10.3 Multiplexing . . . . . . . . . . . . . . . . . . . . . . . 48<br />

1.11 Internet Protocol Suite . . . . . . . . . . . . . . . . . . . . . . 49<br />

1.11.1 L’architettura TCP/IP . . . . . . . . . . . . . . . . . . 50<br />

1.11.2 Protocollo IP (Internet Protocol) . . . . . . . . . . . . 52<br />

1.11.3 In<strong>di</strong>rizzi IP . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

1.11.4 Routing IP . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

1.11.5 Altri protocolli del livello <strong>di</strong> Rete . . . . . . . . . . . . 59<br />

1.11.6 Protocollo TCP (Transmissio Control Protocol) . . . . 62<br />

II Le reti Wireless 67<br />

2 Generalità delle reti Wireless 69<br />

2.1 Topologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

2.1.1 BAN (Body Area Network) . . . . . . . . . . . . . . . 70<br />

2.1.2 PAN (Personal Area Network) . . . . . . . . . . . . . 71<br />

2.1.3 WLAN (Wireless Local Area Network) . . . . . . . . . 71<br />

2.1.4 WWAN (Wireless Wide Area Network) . . . . . . . . 72<br />

2.2 Modelli <strong>di</strong> reti mobili . . . . . . . . . . . . . . . . . . . . . . . 73<br />

2.2.1 Cellular Network Model . . . . . . . . . . . . . . . . . 73<br />

2.2.2 Virtual Cellular Network Model . . . . . . . . . . . . . 73<br />

2.2.3 Ad-hoc Network Model . . . . . . . . . . . . . . . . . 74<br />

2.3 Wireless Local Area Network (WLAN) . . . . . . . . . . . . . 74<br />

2.3.1 Il protocollo 802.11 . . . . . . . . . . . . . . . . . . . . 75<br />

2.3.2 Configurazioni . . . . . . . . . . . . . . . . . . . . . . 77<br />

ii


INDICE<br />

2.3.3 Formato dei frame . . . . . . . . . . . . . . . . . . . . 86<br />

2.3.4 Servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

3 Meccanismi crittografici 89<br />

3.1 La crittografia dei dati . . . . . . . . . . . . . . . . . . . . . . 90<br />

3.2 Wired Equivalent Privacy (WEP) . . . . . . . . . . . . . . . . 90<br />

3.2.1 Cyclic Redundancy Check (CRC-32) . . . . . . . . . . 92<br />

3.2.2 Rivest Chipher 4 (RC4) . . . . . . . . . . . . . . . . . 93<br />

3.3 Wireless Protected Access (WPA-WPA2) . . . . . . . . . . . 96<br />

3.3.1 Funzionamento . . . . . . . . . . . . . . . . . . . . . . 96<br />

3.3.2 WPA-WPA2: Crittografia e sicurezza dei dati . . . . . 97<br />

3.3.3 WPA2 (AES) . . . . . . . . . . . . . . . . . . . . . . . 105<br />

4 Meccanismi <strong>di</strong> autenticazione 117<br />

4.1 Lo standard 802.11i . . . . . . . . . . . . . . . . . . . . . . . 118<br />

4.2 Il Sistema <strong>di</strong> autenticazione 802.1X . . . . . . . . . . . . . . . 118<br />

4.3 Extensible Authentication Protocol (EAP) . . . . . . . . . . . 120<br />

4.3.1 EAP Message Digest 5 (EAP-MD5) . . . . . . . . . . 122<br />

4.3.2 EAP Transport Layer Security (EAP-TLS) . . . . . . 123<br />

4.3.3 EAP Tunneled Transport Layer Security (EAP-TTLS) 125<br />

4.3.4 Protected Extensible Authentication Protocol (PEAP) 126<br />

4.3.5 Microsoft c○ Challenge Handshake Authentication Protocol<br />

vers.2 (MS-CHAPv.2) . . . . . . . . . . . . . . . 126<br />

III Sicurezza delle reti Wireless 129<br />

5 Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong> 131<br />

5.1 WEP: Insicurezza totale . . . . . . . . . . . . . . . . . . . . . 131<br />

5.1.1 Attacco “IV deboli” . . . . . . . . . . . . . . . . . . . 131<br />

5.1.2 Attacco <strong>di</strong> Klein . . . . . . . . . . . . . . . . . . . . . 139<br />

5.1.3 Attacco “a frammentazione” . . . . . . . . . . . . . . 139<br />

5.1.4 Meto<strong>di</strong> alternativi <strong>di</strong> <strong>attacco</strong> . . . . . . . . . . . . . . 143<br />

5.2 WPA: Vulnerabilità nascoste . . . . . . . . . . . . . . . . . . 148<br />

5.2.1 Attacco combinato <strong>di</strong>zionario/forzabruta . . . . . . . 148<br />

5.2.2 Meto<strong>di</strong> alternativi <strong>di</strong> <strong>attacco</strong> . . . . . . . . . . . . . . 152<br />

6 Test <strong>di</strong> penetrazione effettuati 155<br />

6.1 Scelta del sistema operativo (OS) . . . . . . . . . . . . . . . . 155<br />

6.2 Scelta dell’hardware <strong>di</strong> rete . . . . . . . . . . . . . . . . . . . 156<br />

6.3 Scelta del software . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

6.4 Gestione kernel e driver . . . . . . . . . . . . . . . . . . . . . 160<br />

6.5 Casi <strong>di</strong> stu<strong>di</strong>o . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

6.5.1 Pentesting a reti private . . . . . . . . . . . . . . . . . 162<br />

iii


INDICE<br />

6.5.2 Pentesting alla rete wireless del Dipartimento <strong>di</strong> Informatica<br />

dell’Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> <strong>Verona</strong> . . . . 175<br />

IV Normative giuri<strong>di</strong>che e conclusioni 185<br />

7 Legalità e reti Wireless 187<br />

7.1 Normativa dal 2001 al luglio 2005 . . . . . . . . . . . . . . . . 187<br />

7.2 Il Decreto Pisanu (luglio 2005) . . . . . . . . . . . . . . . . . 188<br />

7.3 Il Decreto Landolfi (ottobre 2005) . . . . . . . . . . . . . . . 189<br />

7.4 Il Decreto Legge n.248 (<strong>di</strong>cembre 2007) . . . . . . . . . . . . 190<br />

7.5 Wardriving . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

8 Conclusioni 193<br />

Ringraziamenti 197<br />

Bibliografia 199<br />

Elenco delle figure 205<br />

Elenco delle tabelle 209<br />

iv


Introduzione<br />

Contesto<br />

“Non c’è nessun buon motivo per cui una persona dovrebbe tenersi in<br />

casa un computer”. Con questa frase nel 1977, Kenneth Henry Olsen, fondatore<br />

della Digital Equipe Corporation (DEC), prevedeva un’era in cui i computer<br />

sarebbero rimasti solamente dei giocattoli. Non poteva immaginare<br />

quale impatto sconvolgente avrebbe avuto, nelle comunicazioni <strong>di</strong> tutti i<br />

giorni, la tecnologia informatica. Oggi vivamo in un’epoca dove la velocità<br />

<strong>di</strong> comunicazione gioca un ruolo fondamentale. Lo sviluppo delle reti <strong>di</strong> comunicazione<br />

informatiche ha subito una crescita costante, adattandosi alle<br />

necessità della società. In questo processo evolutivo, l’aspetto della sicurezza<br />

<strong>di</strong>venta fondamentale. L’enorme quantità <strong>di</strong> informazioni, che ogni giorno<br />

transita attraverso le reti, deve essere protetta da <strong>meccanismi</strong> specifici che<br />

ne salvaguardano il contenuto. Ciò appare ancor più evidente quando si<br />

vogliono far transitare in rete informazioni essenziali per il buon funzionamento<br />

<strong>di</strong> “Infrastruttre critiche”, quali ad esempio, aziende fornitrici <strong>di</strong><br />

energia, gestori <strong>di</strong> mezzi <strong>di</strong> trasporto, mezzi <strong>di</strong> comunicazione <strong>di</strong> massa,<br />

protezione civile ed ospedali, che gestiscono aspetti altamente critici per il<br />

buon funzionamento dell’intera società civile <strong>di</strong> un Paese.<br />

I requisiti <strong>di</strong> sicurezza delle informazioni <strong>di</strong> un’organizzazione hanno<br />

subito due importanti cambiamenti nei decenni passati. Prima della <strong>di</strong>ffusione<br />

dei sistemi <strong>di</strong> elaborazione delle informazioni, la sicurezza delle informazioni<br />

veniva garantita principalmente con mezzi fisici e amministrativi.<br />

Un esempio dei primi: i documenti più riservati venivano riposti in robusti<br />

arma<strong>di</strong> metallici con chiusura a combinazione. Un esempio dei secon<strong>di</strong> sono<br />

le procedure <strong>di</strong> assunzione del personale.<br />

Con l’introduzione dei computer, <strong>di</strong>venne evidente la necessità <strong>di</strong> utilizzare<br />

strumenti automatizzati per la protezione dei file e <strong>di</strong> altri dati memorizzati.<br />

Esigenza particolarmente sentita per sistemi accessibili tramite reti<br />

dati e Internet. Gli strumenti destinati alla protezione dei dati ed alla <strong>di</strong>fesa<br />

v


Introduzione<br />

dagli hacker 1 venivano genericamente in<strong>di</strong>cati con il termine “sicurezza dei<br />

computer”[59].<br />

Il secondo grande cambiamento che ha coinvolto la sicurezza è stato l’introduzione<br />

dei sistemi <strong>di</strong>stribuiti, l’uso delle reti e <strong>di</strong> apparecchiature <strong>di</strong><br />

comunicazione per il trasferimento dei dati fra terminale utente e computer<br />

centrale o fra computer. Diviene necessario adottare misure <strong>di</strong> sicurezza<br />

della rete per proteggere i dati durante la trasmissione. Dopo l’invenzione<br />

del protocollo Ethernet, nel maggio del 1973, che dettava le regole per il<br />

trasferimento de dati in rete, i <strong>meccanismi</strong> <strong>di</strong> sicurezza iniziano a svilupparsi<br />

velocemente in un continuo adattamento alle esigenze.<br />

Giunti ad una necessità fondamentale <strong>di</strong> mobilità, nell’ultimo decennio le<br />

reti informatiche si sono evolute cercando soluzioni alternative all’utilizzo dei<br />

cavi <strong>di</strong> collegamento. La comunicazione senza l’utilizzo del cavo, ovvero comunicazione<br />

wireless, fu pensata innanzi tutto per la comunicazione vocale,<br />

utilizzando <strong>di</strong>spositivi adatti principalmente al trasferimento voce. Alla fine<br />

<strong>degli</strong> anni ’90, con la crescita esponenziale del fenomeno Internet, si è reso<br />

necessario lo sviluppo <strong>di</strong> una tecnologia, rimasta dormiente, per il trasferimento<br />

dati senza l’utilizzo <strong>di</strong> connessione fissa: nascono tecnologie come<br />

WAP e GPRS che sfruttano le tecnologie preesistenti. Oltre a queste reti<br />

<strong>di</strong> dati wireless a lungo raggio, furono sviluppati standard wireless a me<strong>di</strong>o<br />

e breve raggio: questi risultati <strong>di</strong>edero alla luce le wireless LAN (WLAN).<br />

Lo standard per le wireless LAN venne introdotto nel 1990 quando l’IEEE<br />

costituì il comitato 802.11 per definirne l’omonimo standard. Lo standard<br />

introdotto si manifestò alquanto carente soprattutto in termini <strong>di</strong> sicurezza,<br />

rendendo inizialmente riluttante agli investimenti la tecnologia wireless<br />

per reti <strong>di</strong> dati. Anche a causa del prezzo <strong>degli</strong> apparecchi wireless, questa<br />

tecnologia venne utilizzata solo in caso <strong>di</strong> con<strong>di</strong>zioni in cui l’uso <strong>di</strong> cavi<br />

era <strong>di</strong>fficile oppure impossibile. Man mano che i prezzi <strong>di</strong>minuirono, però,<br />

tali tipologie <strong>di</strong> connessione entrarono e stanno tuttora entrando anche nelle<br />

case, permettendo la con<strong>di</strong>visione <strong>di</strong> dati e della connessione internet. Le<br />

reti wireless sono, e ci si aspetta che saranno, sempre più un’importante<br />

forma <strong>di</strong> connessione per molte attività: il mercato per i <strong>di</strong>spositivi wireless<br />

è stimato in continua crescita. L’ideologia fondamentale che ha aperto<br />

una nuova era <strong>di</strong> comunicazione con la tecnologia wireless è la connessione<br />

sempre ed ovunque (anytime & anywhere)[59].<br />

1 Comunemente noti come pirati informatici. Nell’accezione originale il termine in<strong>di</strong>cava<br />

i soggetti che, spinti dalla curiosità, si <strong>di</strong>vertivano a <strong>di</strong>mostrare le loro capacità<br />

tecniche nell’intromettersi all’interno <strong>di</strong> sistemi informatici altrui, con una sorta <strong>di</strong> co<strong>di</strong>ce<br />

deontologico che gli proibiva <strong>di</strong> provocare danni.<br />

vi


Scopo<br />

La sicurezza nelle comunicazioni wireless rappresenta uno scoglio, con il<br />

quale i ricercatori si sono dovuti confrontare, a causa del mezzo <strong>di</strong> trasporto<br />

fisico utilizzato: le onde ra<strong>di</strong>o.<br />

Le tecniche già impiegate per le reti cablate si sono <strong>di</strong>mostrate inapplicabili<br />

per questo tipo <strong>di</strong> tecnologia. Da quì l’idea alla base della tesi, <strong>di</strong><br />

analizzare alcuni tra i più <strong>di</strong>ffusi <strong>meccanismi</strong> <strong>di</strong> <strong>di</strong>fesa delle reti wireless, per<br />

in<strong>di</strong>viduarne le problematiche e <strong>di</strong>mostrare con esempi pratici il sottile equilibrio<br />

tra sicurezza e prestazioni. Si vuole mettere in risalto la semplicità<br />

con cui possono essere carpite informazioni nell’etere per eludere sofisticati<br />

congegni hardware e software <strong>di</strong> controllo <strong>degli</strong> accessi e <strong>di</strong> sicurezza dei dati<br />

nelle reti senza fili. Vengono descritti dettagliatamente algoritmi implementati<br />

nei <strong>di</strong>spositivi commerciali, e successivamente descritte le vulnerabilità<br />

che li caratterizzano per arrivare alla <strong>di</strong>mostrazione che l’idea <strong>di</strong> sicurezza<br />

assoluta rimane solo un utopia teorica. Grazie ad una serie <strong>di</strong> test effettuati<br />

con esito positivo, la tesi porterà ad alcune considerazioni <strong>di</strong> carattere<br />

generale, volte a sensibilizzare l’opinione pubblica sul delicato tema della<br />

sicurezza e della privacy delle proprie informazioni.<br />

Organizzazione della Tesi<br />

Il lavoro <strong>di</strong> seguito descritto è strutturato in quattro parti. Questo<br />

per facilitare la lettura ed apprendere le nozioni necessarie sud<strong>di</strong>vise per<br />

macroaree. La struttura <strong>di</strong> ogni parte viene specificata <strong>di</strong> seguito:<br />

Parte I<br />

L’argomento trattato in questa parte riguarda le nozioni <strong>di</strong> base delle<br />

reti informatiche, ed è così organizzato:<br />

• Capitolo 1: descrive dettagliatamente ed in maniera approfon<strong>di</strong>ta, le<br />

nozioni fondamentali che riguardano gli aspetti tecnologici e teorici<br />

delle reti informatiche [57, 36]. Illustra i vari <strong>meccanismi</strong> <strong>di</strong> comunicazione<br />

e controllo dei dati comuni alle <strong>di</strong>verse tipologie <strong>di</strong> rete, incentrandosi<br />

prevalentemente sugli aspetti legati ai livelli <strong>di</strong> “Trasporto”<br />

e “Data Link” implicati maggiormente nei <strong>di</strong>spositivo descritti nei<br />

capitoli successivi [46, 29].<br />

vii


Parte II<br />

Introduzione<br />

In questa parte vengono descritte le principali caratteristiche delle reti<br />

wireless ed è così organizzata:<br />

• Capitolo 2: vengono descritte le generalità [26, 27, 48, 52, 56] sulla<br />

topologia e le configurazioni strutturali delle reti wireless [54, 37,<br />

35, 38, 29], introducendo terminologie tecniche in<strong>di</strong>spensabili per una<br />

corretta comprensione dei capitoli successivi.<br />

• Capitolo 3: viene effettuata l’analisi <strong>di</strong> alcuni <strong>meccanismi</strong> crittografici<br />

utilizzati dalla maggior parte delle reti wireless [42, 15, 23, 25, 30, 31].<br />

Vengono descritti dettagliatamente gli algoritmi ed il funzionamento<br />

alla base <strong>di</strong> tali tecniche [32, 33, 34, 39, 51], in quanto la loro<br />

conoscenza ricopre un ruolo chiave per i test effettuati nel capitolo 6.<br />

• Capitolo 4: si analizzano in profon<strong>di</strong>tà alcune delle principali tecniche<br />

<strong>di</strong> autenticazione [15, 53, 39, 27, 60] implementate sulle reti senza<br />

fili. Vengono messi in risalto gli aspetti legati alla sicurezza <strong>di</strong> tali<br />

<strong>di</strong>spositivi in un contesto generale <strong>di</strong> evoluzione tecnologica[25, 22, 21,<br />

35, 45, 51].<br />

Parte III<br />

Questa parte rappresenta il nucleo centrale del lavoro svolto. Essa descrive<br />

alcune problematiche relative alla sicurezza delle reti wireless <strong>di</strong>mostrandone<br />

l’effettiva vulnerabiltà attraverso esperimenti pratici. Viene<br />

strutturata in questo modo:<br />

• Capitolo 5: affronta in maniera attenta e consapevole, quali sono le<br />

vulnerabilità riscontrate negli automatismi stu<strong>di</strong>ati[23, 51, 49, 18, 41].<br />

Descrive in modo tecnico le possibili implicazioni <strong>di</strong> carattere pratico<br />

nell’utilizzo incauto <strong>di</strong> tali <strong>meccanismi</strong>[39, 45, 44].<br />

• Capitolo 6: vengono descritti passo passo dei test <strong>di</strong> penetrazione su<br />

reti wireless autorizzate, dopo aver presentato le tecniche <strong>di</strong> intrusione<br />

adottate ed i <strong>di</strong>spositivi hardware e software impiegati[10, 1, 12].<br />

Parte IV<br />

In questa ultima parte vengono affrontati aspetti legati al <strong>di</strong>ritto informatico<br />

in materia <strong>di</strong> sicurezza e <strong>di</strong> seguito presentate le conclusioni del<br />

lavoro <strong>di</strong> tesi.<br />

• Capitolo 7: in questo capitolo viene affrontato il tema della legalità nei<br />

confronti <strong>di</strong> alcune azioni legate alla sicurezza delle reti wireless, e più<br />

in generale sui reati <strong>di</strong> tipo informatico. Si fa il punto sulle normative<br />

vigenti in materia.<br />

viii


• Capitolo 8: presentazione delle conclusioni relative al lavoro <strong>di</strong> tesi.<br />

Suggerimenti ed ipotesi per la risoluzione dei problemi affrontati e su<br />

possibili sviluppi futuri <strong>degli</strong> argomenti affrontati.<br />

ix


Parte I<br />

Le reti <strong>di</strong> comunicazione


Capitolo 1<br />

Le reti: nozioni <strong>di</strong> base<br />

Introduzione<br />

Una rete fornisce la possibilità a <strong>di</strong>versi <strong>di</strong>spositivi <strong>di</strong> comunicare tra<br />

loro. La sempre più crescente <strong>di</strong>ffusione <strong>di</strong> strumenti tecnologici, ricchi <strong>di</strong><br />

molteplici funzionalità, necessita <strong>di</strong> avere una solida struttura che permetta<br />

loro <strong>di</strong> comunicare potendo facilmente scambiarsi informazioni.<br />

Prima <strong>di</strong> addentrarci profondamente in contenuti tecnici complicati definiamo<br />

in modo preciso che cosa si intende per rete informatica [57]:<br />

Rete informatica: Combinazione <strong>di</strong> hardware, software e cablaggio<br />

che, assieme, permettono a più <strong>di</strong>spositivi <strong>di</strong> elaborazione <strong>di</strong> comunicare tra<br />

loro.<br />

Questa definizione si può applicare a molti tipi <strong>di</strong> rete <strong>di</strong>versi tra loro. Le<br />

reti hanno lo scopo <strong>di</strong> fornire un servizio <strong>di</strong> trasferimento delle informazioni<br />

ad una popolazione <strong>di</strong> utenti <strong>di</strong>stribuiti su un’area geografica più o meno<br />

ampia. Le informazioni relative alle nozioni <strong>di</strong> base delle reti descritte in<br />

questo capitolo, sono riportate e rielaborate da [46, 29, 57, 36].<br />

1.1 La trasmissione delle informazioni<br />

Le informazioni che vengono trasmesse attraverso una rete vengono denominate<br />

“traffico”, utilizzando come metafora la circolazione dei mezzi <strong>di</strong><br />

trasporto sulla rete stradale delle nostre città.<br />

La trasmissione delle informazioni è un’area <strong>di</strong> stu<strong>di</strong>o e ricerca alla cui<br />

base ci sono concetti propri delle scienze fisiche, in primo luogo relativi alle<br />

forme d’energia e alla propagazione delle onde elettromagnetiche, e propri<br />

delle scienze matematiche, tra cui spicca, in quanto a numero <strong>di</strong> applicazioni,<br />

la teoria dei co<strong>di</strong>ci.<br />

3


Le reti: nozioni <strong>di</strong> base<br />

La comunicazione tra due calcolatori, in particolare, avviene attraverso<br />

lo scambio <strong>di</strong> un segnale, che può essere una tensione, una corrente o una<br />

qualsiasi grandezza fisica capace <strong>di</strong> convogliare un’informazione.<br />

Nelle comunicazioni fra calcolatori le tecnologie utilizzate sono <strong>di</strong> vario<br />

tipo. Utilizzano metodologie e componenti <strong>di</strong>verse. Tali strumenti, pur nella<br />

loro <strong>di</strong>versità, hanno come obiettivo primario quello <strong>di</strong> rendere possibile<br />

l’interazione e la comprensione fra computer eterogenei, cioè in maniera<br />

del tutto in<strong>di</strong>pendente dai particolari sistemi operativi e dai componenti<br />

hardware utilizzati.<br />

1.1.1 I mezzi trasmissivi<br />

Grazie alle loro caratteristiche fisiche e per la loro facilità <strong>di</strong> utilizzo per<br />

il trasporto e la trasmissione dei dati vengono impiegati i seguenti mezzi<br />

trasmissivi:<br />

• Fili <strong>di</strong> rame, che possono prsentarsi sotto forma <strong>di</strong> “doppino” intrecciato<br />

o cavo coassiale. Sono mezzi elettrici ed il fenomeno fisico utilizzato<br />

è l’energia elettrica.<br />

• Fibre ottiche, attraverso le quali la luce rimane intrappolata grazie alla<br />

<strong>di</strong>versa rifrazione <strong>degli</strong> strati <strong>di</strong> materiale utilizzato. Sono mezzi ottici<br />

ed il mezzo trasmissivo usato è la luce.<br />

• Aria e spazio, sfruttando il fenomeno fisico delle onde elettromagnetiche<br />

che, grazie alle variazioni <strong>di</strong> campo elettrico e magnetico, inducono<br />

corrente elettrica in un <strong>di</strong>spositivo a <strong>di</strong>stanza dotato <strong>di</strong> una<br />

antenna ricevente.<br />

1.1.2 Le tecniche <strong>di</strong> trasmissione<br />

In<strong>di</strong>pendentemente dai mezzi fisici appena citati, le modalità <strong>di</strong> trasmissione<br />

sono <strong>di</strong> due tipi:<br />

• Analogica, in cui il valore <strong>di</strong> energia trasmessa è proporzionale al<br />

valore dell’informazione spe<strong>di</strong>ta. Il valore trasmesso può variare continuamente<br />

in un intervallo costituito da un numero infinito <strong>di</strong> possibili<br />

valori.<br />

• Digitale, con prefissati livelli <strong>di</strong> energia necessari per co<strong>di</strong>ficare le informazioni<br />

(ad esempio i valori binari “0” e “1” e loro combinazioni).<br />

Gli impulsi trasmessi variano passando bruscamente da un valore all’altro<br />

all’interno <strong>di</strong> un range <strong>di</strong> ampiezza ristretta.<br />

È da precisare che nella trasmissione <strong>di</strong> segnali <strong>di</strong>gitali, il fenomeno fisico<br />

utilizzato non è <strong>di</strong>gitale ma analogico. Questo comporta una anomalia pratica<br />

dovuta ad un tempo <strong>di</strong> latenza nel passaggio da un valore ad un altro.<br />

4


1.1 La trasmissione delle informazioni<br />

La trasmissione dei dati attraverso le reti <strong>di</strong> computer avviene in modalità<br />

<strong>di</strong>gitale.<br />

Un esempio <strong>di</strong> co<strong>di</strong>fica <strong>di</strong>gitale potrebbe essere dato da un mezzo trasmissivo<br />

formato da fili <strong>di</strong> rame sfruttando la corrente elettrica come forma <strong>di</strong><br />

energia e co<strong>di</strong>ficando le informazioni associando un voltaggio negativo per<br />

rappresentare il valore logico “1” ed un voltaggio positivo per rappresentare<br />

il valore logico “0”.<br />

Il <strong>di</strong>agramma che segue (Fig.1.1) illustra la co<strong>di</strong>fica <strong>di</strong>gitale dell’esempio<br />

ed è chiamato grafico della forma d’onda, in cui l’asse orizzontale corrisponde<br />

al tempo <strong>di</strong> trasmissione/ricezione dei dati mentre l’asse verticale<br />

corrisponde al voltaggio:<br />

Figura 1.1: Segnale <strong>di</strong>gitale<br />

Molte organizzazioni si occupano <strong>di</strong> creare <strong>degli</strong> standard per la co<strong>di</strong>fica<br />

delle informazioni nelle reti, tra queste ricor<strong>di</strong>amo: IEEE, ITU, EIA.<br />

Ve<strong>di</strong>amo ora come due calcolatori instaurano una comunicazione <strong>di</strong> rete.<br />

La modalità trasmissiva prevede due tecniche progettate per permettere la<br />

comunicazione tra calcolatori.<br />

La modalità sincrona adotta l’uso <strong>di</strong> un segnale <strong>di</strong> sincronizzazione<br />

tra i due <strong>di</strong>spositivi assieme all’invio dei dati. Tale segnale si presenta<br />

esclusivamente in precisi istanti <strong>di</strong> tempo.<br />

La modalità asincrona non è legata ad un segnale <strong>di</strong> “clock” e dunque implica<br />

che la comunicazione avvenga senza preavviso. In tale comunicazione<br />

il mittente ed il destinatario devono accordarsi su alcuni aspetti, quali il numero<br />

<strong>di</strong> bit per ogni dato inviato e la durata <strong>di</strong> ciascun bit. Questo accordo<br />

è in<strong>di</strong>spensabile per mettere il destinatario nelle con<strong>di</strong>zioni <strong>di</strong> comprendere<br />

i dati trasmessi, visto che la sua attesa non ha riferimenti <strong>di</strong> alcun genere.<br />

Per assicurare scambi senza ambiguità si usano dei bit <strong>di</strong> delimitazione che<br />

racchiudono il dato.<br />

Un ulteriore aspetto nella connessione tra due calcolatori riguarda la<br />

capacità <strong>di</strong> essere attivi e/o passivi nella comunicazione.<br />

5


Le modalità in questo ambito sono le seguenti:<br />

Le reti: nozioni <strong>di</strong> base<br />

• simplex, se la trasmissione avviene in una sola <strong>di</strong>rezione;<br />

• half duplex, se la trasmissione avviene in una sola <strong>di</strong>rezione per volta;<br />

• full duplex, se i dati possono essere inviati simultaneamente nelle due<br />

<strong>di</strong>rezioni.<br />

La comunicazione bi<strong>di</strong>rezionale, che è quella desiderabile nella pratica,<br />

richiede ad ogni utente la capacità <strong>di</strong> svolgere sia la funzione <strong>di</strong> trasmettitore<br />

che <strong>di</strong> ricevitore. Nell’illustrazione seguente (Fig.1.2) si evince che c’è<br />

bisogno <strong>di</strong> fili separati per trasportare il segnale in ciascuna <strong>di</strong>rezione. G<br />

in<strong>di</strong>ca la messa a terra.<br />

Figura 1.2: Modalità comunicazione<br />

1.1.3 Co<strong>di</strong>fica e deco<strong>di</strong>fica dei dati<br />

I segnali analogici e <strong>di</strong>gitali utilizzati come mezzo <strong>di</strong> trasporto delle informazioni<br />

rappresentano i dati attraverso le loro proprietà. Con il termine<br />

“co<strong>di</strong>fica” si intende la capacità <strong>di</strong> definire tali proprità. Co<strong>di</strong>fica e deco<strong>di</strong>fica<br />

sono due facce della stessa medaglia. La fase <strong>di</strong> co<strong>di</strong>fica associa un<br />

dato dell’informazione ad una specifica proprietà, mentre la deco<strong>di</strong>fica riconverte<br />

il dato nel segnale originale. Purtroppo l’invio <strong>di</strong> segnali attraverso<br />

mezzi fisici, come per esempio la corrente elettrica, comporta un degrado<br />

dovuto a <strong>di</strong>verse cause. Tale <strong>di</strong>storsione del segnale può indurre un errore<br />

nell’interpretazione del dato ad esso associato.<br />

Figura 1.3: Segnale reale ed ideale<br />

6


1.1 La trasmissione delle informazioni<br />

Nella figura 1.3 viene rappresentata chiaramente la <strong>di</strong>fferenza tra un segnale<br />

“reale” ed uno “ideale”. Nelle comunicazioni a lunga <strong>di</strong>stanza si sfrutta<br />

una proprietà delle onde: un segnale oscillante conserva meglio le proprie<br />

caratteristiche rispetto alla corrente <strong>di</strong>retta. Dunque si utilizza un’onda<br />

sinusoidale “portante”, detta anche carrier, che oscilla continuamente ad<br />

una frequenza prefissata: essa viene in seguito modulata per co<strong>di</strong>ficare i<br />

dati. Questa tecnica viene utilizzata soprattutto per i sistemi ra<strong>di</strong>ofonico e<br />

televisivo.<br />

Figura 1.4: Onda sinusoidale<br />

Richiamiamo alcune caratteristiche fondamentali sulle onde (Fig.1.4)<br />

prima <strong>di</strong> <strong>di</strong>scutere della modulazione.<br />

• Ampiezza (A): <strong>di</strong>fferenza tra il valore massimo e quello minimo raggiunto<br />

da un’onda in un ciclo (ovvero la <strong>di</strong>stanza tra l’avvallamento e<br />

la cresta).<br />

• Lunghezza (L): data dalla lunghezza del ciclo che si ripete.<br />

• Periodo (T): intervallo <strong>di</strong> tempo nel quale l’onda descrive il ciclo,<br />

generalmente misurato in millisecon<strong>di</strong> (ms).<br />

• Frequenza (F): esprime la velocità alla quale si ripetono i cicli. Si<br />

misura generalmente in cicli al secondo o Hertz (Hz). Per oscillazioni<br />

molto rapide si utilizzano multipli: Kilohertz (kHz), Megahertz (MHz),<br />

Gigahertz (GHz) e Terahertz (THz) con fattore <strong>di</strong> moltiplicazione pari<br />

a 1000.<br />

Relazioni fondamentali:<br />

1. Tra il periodo T e la frequenza F, vale la relazione: F = 1<br />

(il periodo<br />

T<br />

è inversamente proporzionale alla frequenza).<br />

2. Tra il periodo T e la lunghezza d’onda L, vale la relazione: L<br />

T =<br />

costante (il periodo è <strong>di</strong>rettamente proporzionale alla lunghezza).<br />

Ve<strong>di</strong>amo ora il concetto <strong>di</strong> modulazione necessario per co<strong>di</strong>ficare i dati.<br />

Esistono <strong>di</strong>versi tipi <strong>di</strong> modulazione.<br />

7


Modulazione <strong>di</strong> ampiezza<br />

Le reti: nozioni <strong>di</strong> base<br />

Questo tipo <strong>di</strong> modulazione (ve<strong>di</strong> figura 1.5) varia l’ampiezza dell’onda<br />

secondo valori prefissati in modo da associare a tali configurazioni i valori<br />

logici 0 e 1. Tale operazione non viene utilizzata per i dati se non associata<br />

ad un altro tipo <strong>di</strong> modulazione.<br />

Modulazione <strong>di</strong> frequenza<br />

Figura 1.5: Modulazione d’ampiezza<br />

In questo tipo <strong>di</strong> modulazione il parametro che viene fatto variare è la<br />

frequenza. Così facendo, il cambio <strong>di</strong> frequenza viene associato ad un valore<br />

logico come rappresentato in figura 1.6.<br />

Modulazione <strong>di</strong> fase<br />

Figura 1.6: Modulazione <strong>di</strong> frequenza<br />

Tale modulazione varia la fase d’onda del carrier (segnale usato per la<br />

trasmissione dei dati) ottenendo un “ritardo” rispetto al segnale originale.<br />

Ogni cambiamento <strong>di</strong> fase co<strong>di</strong>fica K bit. Con tali cambiamenti posso co<strong>di</strong>ficare<br />

V informazioni <strong>di</strong> base ottenendo un valore <strong>di</strong> K pari a K = log2V . Lo<br />

scopo è ottenere un data rate 1 più alto della larghezza <strong>di</strong> banda del carrier<br />

1 Data Rate: velocità <strong>di</strong> trasmissione dati<br />

8


1.1 La trasmissione delle informazioni<br />

come in<strong>di</strong>cato in figura 1.7.<br />

1.1.4 Il modem<br />

Figura 1.7: Modulazione <strong>di</strong> fase<br />

Il modem è un <strong>di</strong>spositivo hardware utilizzato per comunicazioni a lunga<br />

<strong>di</strong>stanza. Contiene due circuiti separati, uno per la modulazione dei segnali<br />

in uscita ed uno per la demodulazione dei segnali in ingresso. Il nome deriva<br />

proprio da queste due proprietà <strong>di</strong> MOdulazione e DEM odulazione. Ovviamente<br />

una comunicazione necessita della presenza <strong>di</strong> due modem, uno al<br />

capo del mittente e l’altro del destinatario. Un incrocio dei fili <strong>di</strong> collegamento<br />

permette la trasmissione dei dati in entrambi i versi <strong>di</strong> percorrenza<br />

come mostrato in figura 1.8:<br />

Figura 1.8: Schema <strong>di</strong> collegamento dei modem<br />

In commercio esistono vari tipi <strong>di</strong> modem: tra<strong>di</strong>zionali, che utilizzano<br />

cavi <strong>di</strong> rame e trasmettono onde elettriche modulate, ottici, che utilizzano<br />

fibre ottiche trasmettendo luce modulata e wireless che utilizzano l’aria come<br />

mezzo trasmissivo inviando onde ra<strong>di</strong>o opportunamente modulate.<br />

1.1.5 Misure fondamentali in un sistema <strong>di</strong> trasmissione <strong>di</strong>gitale<br />

In un sistema <strong>di</strong> trasmissione <strong>di</strong>gitale vi sono due fondamentali limiti<br />

fisici <strong>di</strong>pendenti dal mezzo <strong>di</strong> comunicazione scelto. Tali scogli sono:<br />

• Il ritardo <strong>di</strong> propagazione (propagation delay): ovvero il tempo richiesto<br />

ad un segnale per attraversare il mezzo trasmissivo. Definito anche<br />

come il tempo necessario ad un segnale per arrivare a destinazione.<br />

9


Le reti: nozioni <strong>di</strong> base<br />

• La larghezza <strong>di</strong> banda (bandwidth): limite massimo <strong>di</strong> possibili cambiamenti<br />

<strong>di</strong> un segnale in un secondo. Essa rappresenta l’intervallo <strong>di</strong><br />

frequenze che il mezzo fisico è in grado <strong>di</strong> trasmettere senza alterarle<br />

oltre certi limiti.<br />

Proprio in relazione a questi due aspetti si possono delineare le misure<br />

fondamentali che caratterizzano un sistema <strong>di</strong>gitale:<br />

• Il ritardo (o delay), ovvero il tempo richiesto ad un bit <strong>di</strong> dati per<br />

viaggiare da un capo all’altro del canale <strong>di</strong> comunicazione. In genere<br />

coincide con il ritado <strong>di</strong> propagazione del mezzo fisico sottostante.<br />

• La velocità (throughtput), ovvero il numero <strong>di</strong> bit che possono essere<br />

trasmessi in un secondo. Tale grandezza viene espressa in bit/s o baud.<br />

La velocità del sistema è legata matematicamente alla larghezza <strong>di</strong> banda<br />

del mezzo fisico. Infatti, per il teorema <strong>di</strong> Nyquist 2 , vale la relazione:<br />

D = 2B · log2(K)<br />

dove D è il data rate o tasso d’informazione, B è la larghezza <strong>di</strong> banda<br />

e K è il numero <strong>di</strong> valori utilizzato per co<strong>di</strong>ficare i dati. Tale risultato<br />

fornisce una relazione valida per canali <strong>di</strong> comunicazione totalmente privi <strong>di</strong><br />

<strong>di</strong>sturbi. Cosa purtroppo non realistica in quanto i sistemi reali emettono<br />

ed assorbono energia.<br />

Un’ulteriore relazione matematica espressa nel teorema <strong>di</strong> Shannon tiene<br />

conto della presenza del “rumore” e rettifica il risultato <strong>di</strong> Nyquist affermando<br />

che in un canale <strong>di</strong> comunicazione con <strong>di</strong>sturbi, il massimo data rate<br />

raggiungibile è dato da:<br />

C = B · log2(1 + S<br />

N )<br />

dove C in<strong>di</strong>ca la capacità effettiva del canale misurata in baud, B è<br />

la larghezza <strong>di</strong> banda, S la potenza me<strong>di</strong>a del segnale ed N la potenza<br />

me<strong>di</strong>a del rumore. Il rapporto S<br />

N si misura in Decibel ed esprime il rapporto<br />

segnale/rumore.<br />

2 Teorema <strong>di</strong> Nyquist: Un segnale <strong>di</strong> banda B (cioè con frequenze da 0 a B Hz),<br />

può essere completamente ricostruito me<strong>di</strong>ante una campionatura effettuata 2B volte al<br />

secondo. In tal caso trasporta un’informazione pari a D baud.<br />

10


1.2 Reti <strong>di</strong> calcolatori<br />

1.2 Reti <strong>di</strong> calcolatori<br />

Una rete (computer network) è un’insieme <strong>di</strong> calcolatori in grado <strong>di</strong> comunicare,<br />

scambiarsi informazioni ed eventualmente con<strong>di</strong>videre delle risorse<br />

in comune. Per una definizione più rigorosa possiamo considerare quella data<br />

da IEEE (Institute of Electrical and Electronic Engineers):<br />

“Una rete è un insieme <strong>di</strong> no<strong>di</strong> <strong>di</strong> elaborazione totalmente autonomi connessi<br />

me<strong>di</strong>ante un opportuno sistema <strong>di</strong> comunicazione in grado <strong>di</strong> interagire<br />

me<strong>di</strong>ante scambio <strong>di</strong> messaggi al fine <strong>di</strong> con<strong>di</strong>videre le risorse messe a <strong>di</strong>sposizione<br />

della rete”.<br />

Dal vecchio modello basato sulla presenza <strong>di</strong> un solo potente elaboratore<br />

(mainframe) e terminali collegati si è oggi passati a modelli che prevedono<br />

la presenza <strong>di</strong> un gran numero <strong>di</strong> elaboratori autonomi e interconnessi. La<br />

<strong>di</strong>ffusione sempre crescente <strong>di</strong> questi sistemi ha <strong>di</strong>verse ragioni <strong>di</strong> utilità. Le<br />

reti infatti permettono <strong>di</strong> con<strong>di</strong>videre risorse fra molti utenti, comunicare<br />

fra persone in tempo reale (real time) o in <strong>di</strong>fferita, assicurare l’affidabilità<br />

<strong>di</strong> sistemi <strong>di</strong> controllo strategici, accedere ad informazioni o servizi e molto<br />

altro ancora.<br />

1.2.1 Tecnologie trasmissive<br />

Le tecnologie <strong>di</strong> trasmissione dei dati sono essenzialmente <strong>di</strong> due tipi:<br />

1. Reti broadcast: il canale <strong>di</strong> comunicazione è utilizzato da tutti gli utenti<br />

connessi. Un messaggio inviato da un utente reca con sé l’in<strong>di</strong>rizzo<br />

del destinatario, viene spe<strong>di</strong>to a tutti, ma viene preso in considerazione<br />

solo dal destinatario.<br />

2. Reti punto a punto: costituite da un insieme <strong>di</strong> canali <strong>di</strong> trasmissioni<br />

fra coppie <strong>di</strong> elaboratori (non necessariamente per ogni coppia). L’utilizzo<br />

del canale <strong>di</strong> connessione avviene in maniera paritetica fra i due<br />

calcolatori. Un messaggio, per arrivare a destinazione, può dover attraversare<br />

uno o più elaboratori interme<strong>di</strong> e spesso esistono anche più<br />

cammini alternativi.<br />

Un’ulteriore tipologia denominata reti punto-multipunto, ormai non più<br />

utilizzata, prevede la presenza <strong>di</strong> un utente che comunica con tutti gli altri.<br />

In genere la tecnologia broadcast viene utilizzata per reti più piccole dal<br />

punto <strong>di</strong> vista geografico, mentre la tecnologia punto a punto viene utilizzata<br />

per reti estese.<br />

11


1.2.2 Topologia<br />

Le reti: nozioni <strong>di</strong> base<br />

L’insieme dei collegamenti <strong>di</strong> una rete (eventualmente anche wireless,<br />

senza fili) determina la sua <strong>di</strong>sposizione topologica. Questa caratteristica è<br />

una chiave <strong>di</strong> lettura molto utile soprattutto nelle reti locali. Ve<strong>di</strong>amo quali<br />

sono le principali topologie e le loro caratteristiche:<br />

• Bus: ridondanza dei dati nulla. Un solo canale con<strong>di</strong>viso da tutti gli<br />

utenti. Vantaggioso perché economico e semplice. Bassa tolleranza ai<br />

guasti.<br />

• Ring (anello): ridondanza dei dati nulla. Canale <strong>di</strong> comunicazione ad<br />

anello multi<strong>di</strong>rezionale o bi<strong>di</strong>rezionale cui tutti sono collegati. Ha il<br />

vantaggio <strong>di</strong> usare pochi canali. Bassa tolleranza ai guasti.<br />

• Star (stella): ridondanza dei dati nulla. Unica centrale collegata a<br />

tutte le altre unità. Il nodo centrale può essere “attivo” o “passivo” a<br />

seconda che commuti le informazioni centrali sul nodo <strong>di</strong> destinazione<br />

o su tutti i no<strong>di</strong>. Rete vulnerabile in seguito a guasti del nodo centrale.<br />

• Tree (albero): ridondanza dei dati nulla. Centrale collegata a tutte le<br />

altre unità anchi in<strong>di</strong>rettamente. Vantaggi e vulnerabilità simili alla<br />

topologia a stella.<br />

• Mesh (maglia completa): ridondanza dei dati massima. Ogni unità<br />

è collegata alle altre. Dunque per n unità occorrono n(n − 1)/2 collegamenti.<br />

Reti molto veloci e buona tolleranza dei guasti grazie al<br />

numero elevato <strong>di</strong> collegamenti.<br />

• Partial mesh (maglia parziale): ridondanza dei dati me<strong>di</strong>a. Ottenuta<br />

dalla topologia mesh rimuovendo alcune connessioni. Costi ridotti e<br />

<strong>di</strong>screta tolleranza ai guasti.<br />

• Ibrid (schema ibrido): configurazione che combina <strong>di</strong>verse topologie <strong>di</strong><br />

collegamento. È lo schema tipico delle reti geografiche. Non permette<br />

una <strong>di</strong>stribuzione regolare dei dati ma ha un’ottima flessibilità ed una<br />

elevata tolleranza ai guasti. Internet ne è un esempio.<br />

Le reti con topologia bus e ring sono tipicamente reti broadcast e vengono<br />

chiamate anche shared me<strong>di</strong>um (mezzo con<strong>di</strong>viso). Sono possibili più<br />

comunicazioni contemporaneamente, ma nello stesso tempo si pone il problema<br />

del controllo <strong>degli</strong> accessi alla rete e della gestione dei conflitti che ne<br />

derivano. Diventa necessario un meccanismo <strong>di</strong> arbitraggio. Il meccanismo<br />

scelto in questo senso può essere:<br />

• Statico: le regole per risolvere i conflitti sono fissate a priori, per esempio<br />

assegnando un token ad ogni elaboratore (anche se ha lo svantaggio<br />

<strong>di</strong> produrre sprechi <strong>di</strong> tempo).<br />

12


1.2 Reti <strong>di</strong> calcolatori<br />

• Dinamico: la risoluzione delle contese (affidata ad un’apposita apparecchiatura<br />

o <strong>di</strong>stribuita fra gli utenti) viene decisa <strong>di</strong> volta in volta.<br />

Tutte le altre topologie (star, mesh, partial mesh) sono tipicamente reti<br />

punto a punto e vengono chiamate anche peer to peer (P2P).<br />

1.2.3 Classificazione delle reti in base all’estensione geografica<br />

In base a questa caratteristica identifichiamo i seguenti tipi <strong>di</strong> rete:<br />

• PAN (Personal Area Network): rete informatica che permette la comunicazione<br />

<strong>di</strong> <strong>di</strong>spositivi (telefono, PDA (Personal Digital Assistant),<br />

etc) nelle vicinanze <strong>di</strong> un singolo utente. Il raggio <strong>di</strong> azione <strong>di</strong> una PAN<br />

è tipicamente <strong>di</strong> alcuni metri.<br />

• LAN (Local Area Network): identifica una rete costituita da computer<br />

collegati fra loro (comprese interconnessioni e periferiche con<strong>di</strong>vise)<br />

all’interno <strong>di</strong> un ambito fisico delimitato. Tale ambiente può essere<br />

una stanza, un e<strong>di</strong>ficio o ad<strong>di</strong>rittura e<strong>di</strong>fici confinanti in un raggio che<br />

non supera qualche chilometro.<br />

• WLAN (Wireless Local Area Network): rete dalle caratteristiche<br />

identiche alla LAN che si <strong>di</strong>stingue per l’assenza <strong>di</strong> fili cablati per<br />

l’interconnessione.<br />

• MAN (Metropolitan Area Network): rete che solitamente ricopre<br />

l’estensione <strong>di</strong> una intera città. Nata solitamente per applicazioni <strong>di</strong><br />

tipo telematico.<br />

• WAN (Wide Area Network): rete geografica utilizzata per connettere<br />

assieme più reti locali in modo da consentire la comunicazione tra<br />

utenti connessi a reti locali <strong>di</strong>fferenti. Ha estensione illimitata sulla<br />

superficie terrestre.<br />

13


La tabella 1.1 riassume la classificazione geografica.<br />

Distanza Ambito Tipo <strong>di</strong> rete<br />

10 m stanza locale<br />

10 2 m e<strong>di</strong>ficio locale<br />

10 3 m campus locale<br />

10 4 m città metropolitana<br />

10 5 m nazione geografica<br />

10 6 m continente geografica<br />

10 7 m pianeta geografica (Internet)<br />

Tabella 1.1: Classificazione geografica delle reti<br />

1.3 Tecniche <strong>di</strong> commutazione<br />

Le reti: nozioni <strong>di</strong> base<br />

Il trasferimento delle informazioni su una rete <strong>di</strong> comunicazione può<br />

avvenire con <strong>di</strong>verse procedure chiamate “tecniche <strong>di</strong> commutazione”. Esse<br />

<strong>di</strong>fferiscono per l’uso delle risorse <strong>di</strong> comunicazione.<br />

1.3.1 Categorie principali<br />

Queste tecniche possono essere sud<strong>di</strong>vise in tre categorie:<br />

1. Commutazione <strong>di</strong> circuito (circuit switching): ai due client in comunicazione<br />

viene assegnato un “circuito” (circuito effettivo o porzione<br />

<strong>di</strong> banda o intervallo <strong>di</strong> tempo) per tutta la durata del collegamento.<br />

Durante tale connessione il circuito non è utilizzabile dagli altri utenti.<br />

Si possono <strong>di</strong>stinguere le seguenti fasi <strong>di</strong> trasmissione:<br />

a) creazione del circuito (connection setup)<br />

b) trasferimento dell’informazione<br />

c) chiusura del collegamento<br />

2. Commutazione <strong>di</strong> messaggio (message switching): ogni messaggio trasmesso<br />

rappresenta un’entità informativa autonoma. Per raggiungere la<br />

destinazione segue un percorso deciso in base allo stato della rete. Il<br />

circuito viene occupato solamente per il tempo necessario al trasferimento<br />

del messaggio lasciandolo libero anche ad altri utenti. Il messaggio<br />

è strutturato in maniera da contenere oltre ai dati un campo<br />

denominato header contenente le informazioni del mittente e del<br />

destinatario.<br />

14


1.3 Tecniche <strong>di</strong> commutazione<br />

3. Commutazione <strong>di</strong> pacchetto (packet switching): questa tecnica rappresenta<br />

l’evoluzione del message switching. Il messaggio da trasmettere,<br />

prima <strong>di</strong> essere inviato, viene sud<strong>di</strong>viso in pacchetti <strong>di</strong> <strong>di</strong>mensioni ridotte.<br />

Ad ognuno <strong>di</strong> tali pacchetti viene aggiunto un header per renderlo<br />

autonomo nel cammino verso destinazione. L’header contiene<br />

l’in<strong>di</strong>rizzo del mittente e del destinatario ed ovviamente un numero che<br />

in<strong>di</strong>ca la posizione del pacchetto all’interno del messaggio. Una volta<br />

effettuata questa operazione, la trasmissione può avvenire secondo due<br />

<strong>di</strong>verse modalità:<br />

a) Datagram: ogni pacchetto viene instradato nella rete in modo in<strong>di</strong>pendente,<br />

per cui i pacchetti possono giungere a destinazione <strong>di</strong>sor<strong>di</strong>natamente<br />

come mostrato in figura 1.9.<br />

Figura 1.9: Datagram<br />

b) Circuito Virtuale: i pacchetti generati dallo stesso messaggio seguono<br />

tutti lo stesso percorso, per cui giungono a destinazione sempre nell’or<strong>di</strong>ne<br />

corretto (Fig.1.10). Il termine circuito virtuale in<strong>di</strong>ca che il<br />

circuito può essere con<strong>di</strong>viso da più utenti. Con la tecnica a circuiti<br />

virtuali (utilizzata nelle reti per la trasmissione dei dati ad alta velocità)<br />

la trasmissione dei dati è molto più veloce una volta in<strong>di</strong>viduato<br />

il percorso. La tecnica datagram (utilizzata da Internet), invece, ha<br />

<strong>di</strong>versi vantaggi: non è necessaria la creazione del circuito virtuale per<br />

la trasmissione, la procedura è più resistente ai guasti potendo identificare<br />

percorsi alternativi e si può evitare la congestione <strong>di</strong> alcuni no<strong>di</strong><br />

o della rete instradando i pacchetti su vari percorsi.<br />

15


1.3.2 Il multiplexing<br />

Figura 1.10: Circuito virtuale<br />

Le reti: nozioni <strong>di</strong> base<br />

Uno dei problemi principali nella creazione <strong>di</strong> una rete è dato dai collegmanti<br />

fisici tra le varie postazioni. Connettere ogni utente ad ogni altro<br />

utente attraverso un canale riservato richiede uno spreco <strong>di</strong> risorse enorme.<br />

La soluzione è <strong>di</strong> creare una “con<strong>di</strong>visione” delle risorse, utilizzando la tecnica<br />

del multiplexing o multiplazione. Essa permette <strong>di</strong> utilizzare un canale<br />

<strong>di</strong> commutazione trasportando due o più messaggi simultaneamente anche<br />

da più sorgenti a più destinazioni come mostrato in figura 1.11.<br />

Figura 1.11: Multiplexing<br />

Il <strong>di</strong>spositivo che esegue tale operazione, demoninato multiplexor, riceve<br />

m segnali <strong>di</strong>stinti s1(t), s2(t), . . . , sm(t) e li invia con un segnale in uscita Y (t)<br />

che ne è una opportuna combinazione. Tale segnale trasmesso su un unico<br />

canale verrà ritrasformato in ricezione da un demultiplexer che restituirà i<br />

segnali originali <strong>di</strong> partenza.<br />

Le tecniche maggiormente utilizzate sono due:<br />

1. Multiplazione a <strong>di</strong>visione <strong>di</strong> frequenza (FDM, Frequency Division Multiplexing):<br />

lo spettro <strong>di</strong> frequenze <strong>di</strong>sonibile viene sud<strong>di</strong>viso in bande<br />

più piccole avendo la possibilità <strong>di</strong> utilizzare canali multipli. Ogni<br />

16


1.3 Tecniche <strong>di</strong> commutazione<br />

utente ha l’uso esclusivo <strong>di</strong> una <strong>di</strong> queste bande attraverso il trasporto<br />

del suo segnale. Se B è la banda dei segnali s(t) allora il segnale s1(t)<br />

viene traslato in frequenza <strong>di</strong> F , s2(t) viene traslato in frequenza <strong>di</strong><br />

F +B, . . . , sm(t) viene traslato in frequenza F +(m−1)B. Nell’esempio<br />

in figura 1.12 abbiamo m = 3, B = 4, F = 60KHz.<br />

Figura 1.12: Frequency Division Multiplexing<br />

2. Multiplazione a <strong>di</strong>visione <strong>di</strong> tempo (TDM, Time Division Multiplexing):<br />

i segnali si <strong>di</strong>fferenziano per l’intervallo <strong>di</strong> tempo utilizzato per<br />

la trasmissione. Se i segnali richiedono ogni t secon<strong>di</strong> la trasmissione<br />

<strong>di</strong> b bit, il tempo viene sud<strong>di</strong>viso in intervalli <strong>di</strong> tempo t ed ogni<br />

intervallo viene sud<strong>di</strong>viso in m intervalli; il primo viene usato per<br />

trasmettere il primo segnale, il secondo per trasmettere il secondo segnale,<br />

e così via. Nell’esempio che segue (Fig.1.13) abbiamo i valori<br />

m = 2, t = 2µsec, b = 8bit.<br />

Figura 1.13: Time Division Multiplexing<br />

Nella tecnica FDM i segnali non sono sottoposti ad alcun <strong>di</strong>sturbo. Ciò<br />

viene confermato da un importante principio fisico il quale afferma che due o<br />

più segnali che usano frequenze portanti <strong>di</strong>fferenti possono essere trasmessi<br />

simultaneamente su un singolo mezzo trasmissivo senza alcuna interferenza.<br />

Di fatto questo vantaggio rende la tecnica FDM molto utilizzata in<br />

applicazioni analogiche come la TV via cavo.<br />

17


1.4 Tecniche <strong>di</strong> accesso multiplo<br />

Le reti: nozioni <strong>di</strong> base<br />

L’incontro <strong>di</strong> due o più pacchetti sul mezzo <strong>di</strong> trasmissione determina<br />

una collisione e la per<strong>di</strong>ta <strong>degli</strong> stessi, rendendoli <strong>di</strong> fatto non più utilizzabili.<br />

Pertanto la rete ha bisogno <strong>di</strong> tecnologie appropriate per ridurre il numero<br />

<strong>di</strong> collisioni e massimizzare il numero <strong>di</strong> messaggi trasmessi in un secondo.<br />

Le tecniche <strong>di</strong> accesso multiplo si occupano <strong>di</strong> come ripartire le risorse tra<br />

le trasmissioni simultaneamente attive.<br />

Nelle reti punto a punto, con due unità che hanno l’esclusivo accesso<br />

al mezzo <strong>di</strong> trasmissione, è molto più semplice conservare e proteggere le<br />

informazioni rispetto ad una rete con<strong>di</strong>visa. Tuttavia, le connessioni punto<br />

a punto, non sono praticabili nelle reti <strong>di</strong> uso comune.<br />

Il problema dell’accesso multiplo al mezzo <strong>di</strong> trasmissione si presenta in<br />

molte aree. Per esempio nelle reti locali cablate, in rame o fibra ottica, in<br />

cui le unità con<strong>di</strong>vidono lo stesso cavo o ether-cable. Nelle reti <strong>di</strong> telefonia<br />

cellulare i telefoni all’interno della stessa cella comunicano con la stessa<br />

stazione base e con<strong>di</strong>vidono lo spazio delle onde ra<strong>di</strong>o. Nelle reti locali wireless<br />

le unità alla portata del ricetrasmettitore con<strong>di</strong>vidono lo stesso spazio<br />

<strong>di</strong> frequenze ra<strong>di</strong>o o infrarosso. Ricor<strong>di</strong>amo poi i satelliti, principalmente<br />

geostazionari, in cui le unità trasmettono nello stesso “spazio” al satellite<br />

stazionario.<br />

L’impiego <strong>di</strong> un metodo per risolvere i conflitti <strong>di</strong>pende dall’ambiente <strong>di</strong><br />

rete. In tal senso esistono dei vincoli <strong>di</strong> ciascuna rete, che vanno rispettati:<br />

• Estensione limitata dello spettro, derivante dal fatto che una buona<br />

fetta delle frequenze <strong>di</strong>sponibili viene già occupata da altri sistemi,<br />

applicabile alle reti wireless e ai telefoni cellulari.<br />

• Proprietà del collegamento ra<strong>di</strong>o, riguardante i problemi fisici delle<br />

onde ra<strong>di</strong>o e dell’ambiente in cui si propagano (la presenza <strong>di</strong> grossi<br />

elementi può determinare una degradazione del segnale, la ricezione<br />

da piú sorgenti può generare interferenze, ecc.).<br />

• Il rapporto tra massimo ritardo <strong>di</strong> propagazione dei dati (ovvero il<br />

tempo necessario per rilevare un messaggio inviato dall’altra unità),<br />

ed il tempo <strong>di</strong> percorrenza che è generalmente costante per tipologia<br />

<strong>di</strong> canale trasmissivo.<br />

Le prestazioni <strong>di</strong> uno schema <strong>di</strong> accesso multiplo si possono valutare<br />

attraverso opportuni parametri:<br />

⊲ Throughput normalizzato o goodput: porzione della capacità del canale<br />

utilizzata per i nuovi pacchetti (quelli non ritrasmessi). Il valore ideale<br />

sarebbe 1, 0 ma in molte reti è <strong>di</strong> fatto leggermente inferiore, tra 0, 95<br />

18


1.4 Tecniche <strong>di</strong> accesso multiplo<br />

e 1. Per calcolare questo valore occorre conoscere velocità o larghezza<br />

della banda <strong>di</strong> collegamento, <strong>di</strong>mensione me<strong>di</strong>a <strong>di</strong> un pacchetto,<br />

throughput <strong>di</strong> picco del collegamento.<br />

⊲ Ritardo me<strong>di</strong>o: tempo che un pacchetto deve aspettare presso l’unità<br />

trasmittente prima <strong>di</strong> essere trasmesso (<strong>di</strong>pende dal carico <strong>di</strong> lavoro e<br />

dal canale).<br />

⊲ Stabilità: capacità <strong>di</strong> gestire eventuali aumenti <strong>di</strong> traffico senza <strong>di</strong>minuire<br />

il valore <strong>di</strong> throughput.<br />

⊲ Equità: possibilità <strong>di</strong> fornire alle unità trasmittenti la stessa opportunità<br />

<strong>di</strong> accesso al canale.<br />

L’allocazione del canale fra i vari utenti può essere <strong>di</strong> due tipi:<br />

1. Allocazione statica decisa in anticipo: si può ottenere ad esempio con<br />

la tecnica FDMA (Frequency Division Multiple Access) in cui il canale<br />

viene sud<strong>di</strong>viso fra i vari utenti che così hanno la <strong>di</strong>sponibilità <strong>di</strong> una<br />

frazione della banda totale. Ciò va bene se il numero <strong>di</strong> utenti e il<br />

data rate non variano rapidamente ma comporta uno spreco <strong>di</strong> banda<br />

quando alcuni utenti non trasmettono e alcuni picchi <strong>di</strong> trasmissione<br />

non possono essere gestiti da una sola sottobanda.<br />

2. Allocazione <strong>di</strong>namica: si adatta alle esigenze del momento.<br />

In quest’ultimo caso occorre fare una ulteriore classificazione in base a:<br />

- tempo <strong>di</strong> trasmissione: può essere continuo (la trasmissione può avvenire<br />

in qualsiasi istante) o slotted (il tempo viene <strong>di</strong>viso in intervalli <strong>di</strong>screti<br />

o slot e la trasmissione può iniziare solo all’inizio <strong>di</strong> uno slot.<br />

- ascolto del canale: può essere carrier sense, ovvero prima <strong>di</strong> trasmettere<br />

l’unità controlla se il canale è occupato e nel qual caso aspetta<br />

(tipico delle LAN), e no carrier sense quando l’unità trasmette e si<br />

preoccupa solo in un secondo momento se c’è stata collisione (tipico<br />

dei canali via satellite).<br />

Ulteriori tecniche sono:<br />

• CDMA (Code Division Multiple Access): in cui le tecnologie a tempo<br />

ed a frequenza vengono combinate producendo un allargamento <strong>di</strong><br />

spettro. Inizialmente adottate in ambito militare, le ritroviamo oggi<br />

impiegate anche in applicazioni civili, soprattutto dove è richiesto un<br />

determinato livelo <strong>di</strong> protezione dei dati.<br />

19


Le reti: nozioni <strong>di</strong> base<br />

• CSMA (Carrier Sense Multiple Access): le stazioni possono seguire<br />

strategie <strong>di</strong>verse per evitare collisioni e sono dotate <strong>di</strong> un meccanismo<br />

per controllare se il mezzo <strong>di</strong> trasmissione è correntemente occupato.<br />

Le modalità sono sostanzialmente le seguenti: aspettare il momento in<br />

cui il canale si sia <strong>di</strong> fatto liberato e quin<strong>di</strong> trasmettere (in tal caso si<br />

<strong>di</strong>cono 1-persistenti), oppure aspettare un tempo random per verificare<br />

l’eventuale liberazione del canale con l’invio in caso <strong>di</strong> esito positivo<br />

(in tal caso si <strong>di</strong>cono Non-persistenti), o, infine, aspettare il prossimo<br />

slot (quin<strong>di</strong> nel caso <strong>di</strong> canali slotted) ed inviare con probabilità p in<br />

caso <strong>di</strong> liberazione del canale (in tal caso si <strong>di</strong>cono P-persistenti).<br />

1.5 Congestione delle reti<br />

Il controllo della congestione è un problema globale <strong>di</strong> tutta la rete.<br />

Quando troppo traffico scorre in un mezzo <strong>di</strong> trasmissione (causato da <strong>di</strong>spositivi<br />

e canali troppo lenti o capacità <strong>di</strong> memoria insufficienti dei router), i<br />

pacchetti che tentano <strong>di</strong> immettersi nel mezzo subiscono dei ritar<strong>di</strong>. Vengono<br />

così a trovarsi in coda lungo una linea <strong>di</strong> collegamento (memoria buffer).<br />

Quando la capacità corrente <strong>di</strong> una rete comincia a raggiungere la capacità<br />

massima consentita dal mezzo si verifica la congestione (Fig.1.14) della rete<br />

e la quantità <strong>di</strong> dati scambiata si riduce.<br />

La capacità della rete che viene correntemente utilizzata viene detta<br />

utilizzazione e viene <strong>di</strong> solito espressa come valore percentuale. Il ritardo<br />

effettivo <strong>di</strong> una rete può essere determinato attraverso la relazione:<br />

D =<br />

I<br />

(1 − U)<br />

dove con I viene in<strong>di</strong>cato il ritardo quando il mezzo <strong>di</strong> trasmissione è inattivo<br />

(idle), con U l’utilizzazione della rete espressa in percentuale e con D il<br />

ritardo effettivo.<br />

In generale una rete non dovrebbe mai operare a livelli superiori al 90%,<br />

ma se il numero <strong>di</strong> richieste è alto ed è quin<strong>di</strong> necessario avere ritar<strong>di</strong> minori,<br />

il livello massimo <strong>di</strong> utilizzazione scende al 50%.<br />

Figura 1.14: Comportamento <strong>di</strong> una rete al variare del traffico in ingresso<br />

per intervalli temporali<br />

20


1.6 Protocolli e architetture <strong>di</strong> rete<br />

1.6 Protocolli e architetture <strong>di</strong> rete<br />

Con l’esplosione <strong>di</strong> Internet, il protocollo IP (Internet Protocol) è da considerarsi<br />

ormai il più <strong>di</strong>ffuso su scala mon<strong>di</strong>ale. Durante la progettazione <strong>di</strong><br />

una rete basata su protocollo IP è importante avere una chiara ed esaustiva<br />

conoscenza del protocollo <strong>di</strong> controllo delle trasmissioni IP (Transmission<br />

Control Protocol), il protocollo meglio noto come TCP/IP. Inoltre bisogna<br />

conoscere al meglio le convenzioni del modello <strong>di</strong> riferimento internazionale<br />

OSI (Open Systems Interconnection) che stabilisce una non restrittiva gerarchia<br />

<strong>di</strong> “livelli” o layers che organizzano e regolano i servizi del software<br />

<strong>di</strong> rete. Questa piramide <strong>di</strong> livelli svolge alcune essenziali mansioni per il<br />

corretto funzionamento della rete. In primis, vengono definiti precisi compiti<br />

ad ogni livello. Ogni livello interagisce con i livelli a<strong>di</strong>acenti fornendo certi<br />

servizi allo strato superiore (nascondendo i dettagli della loro realizzazione)<br />

ed utilizzando determinati servizi forniti dallo strato gerarchico inferiore.<br />

L’insieme dei servizi e delle procedure che li utilizzano viene detto interfaccia.<br />

Ciascun livello comprende uno o più protocolli (insiemi <strong>di</strong> regole) che<br />

governano il formato ed il significato dei blocchi <strong>di</strong> informazione (frames o<br />

pacchetti) che vengono scambiati tra entità <strong>di</strong> pari livello (peer entity) su<br />

macchine <strong>di</strong>verse. Tali insiemi <strong>di</strong> regole che governano “conversazioni” tra<br />

pari livelli vengono detti protocolli <strong>di</strong> livello n. Nell’illustrazione sottostante<br />

(Fig.1.15) ve<strong>di</strong>amo la struttura <strong>di</strong> collegamento a livelli tra due computer<br />

(host) connessi in rete tra loro.<br />

Figura 1.15: Struttura <strong>di</strong> collegamento <strong>di</strong> rete a livelli<br />

Come evidenziato nell’immagine sopra, quando due no<strong>di</strong> comunicano fra<br />

loro (Host 1 e Host 2) ogni livello su ciascun nodo scambia informazioni sia<br />

con i livelli a<strong>di</strong>acenti che con il livello paritetico dell’altro nodo (anche se<br />

non c’è trasferimento <strong>di</strong>retto dal livello n <strong>di</strong> Host 1 al livello n <strong>di</strong> Host 2).<br />

21


Le reti: nozioni <strong>di</strong> base<br />

Il trasferimento <strong>di</strong> un pacchetto da un nodo al livello paritetico <strong>di</strong> un altro<br />

nodo si effettua attraverso i seguenti passi:<br />

• si inoltra il pacchetto attraverso i livelli sottostanti fino a quello fisico,<br />

attraverso il quale i dati vengono trasferiti dal primo nodo al secondo<br />

nodo;<br />

• il secondo nodo acquisisce il pacchetto tramite il livello fisico e lo inoltra<br />

verso i livelli superiori fino al livello paritetico con quello del<br />

primo nodo.<br />

L’insieme dei livelli e dei relativi protocolli definisce un’architettura <strong>di</strong><br />

rete. È da notare che tra reti <strong>di</strong>verse possono essere <strong>di</strong>versi anche il numero<br />

<strong>di</strong> livelli, i loro nomi, nonchè il loro contenuto e le loro funzioni. Nella stessa<br />

rete, invece, i vari host possono avere implementazioni <strong>di</strong>verse in termini <strong>di</strong><br />

interfacce fra i livelli, ma conformi in termini <strong>di</strong> livelli e protocolli.<br />

Un’architettura <strong>di</strong> rete, infine, può essere:<br />

• Proprietaria, se è basata su scelte arbitrarie ed in<strong>di</strong>pendenti del costruttore<br />

(le specifiche non sono pubbliche).<br />

• Standard de facto, se le specifiche sono <strong>di</strong> pubblico dominio (ad esempio<br />

l’Internet Protocol Suite).<br />

• Standard de iure, se è basata su specifiche pubbliche approvate da<br />

enti internazionali che si occupano <strong>di</strong> standar<strong>di</strong>zzazione (per esempio<br />

l’IEEE802 e l’OSI).<br />

1.6.1 Funzionamento del software <strong>di</strong> rete<br />

La comunicazione avviene con una modalità che, generalmente, è uguale<br />

in tutte le architetture <strong>di</strong> rete. Ve<strong>di</strong>amo un esempio <strong>di</strong> scambio <strong>di</strong> messaggio<br />

tra due host connessi in rete analizzando la procedura dei vari livelli<br />

impiegati allo scopo.<br />

1. Il programma applicativo (livello 3) vuole inviare un messaggio M alla<br />

peer entity attraverso la rete.<br />

2. Il livello 4 consegna tale messaggio al livello sottostante.<br />

3. Il livello 3 aggiunge una sua “etichetta” (header) in testa al frame contenente<br />

il messaggio. L’header contiene informazioni circa il numero<br />

<strong>di</strong> sequenza del messaggio, la sua priorità e la sua <strong>di</strong>mensione.<br />

4. Il livello 3 consegna il tutto al livello 2.<br />

5. Il livello 2 può avere la necessità <strong>di</strong> deframmentare i dati. Esegue questa<br />

operazione aggiungendo ad ogni pezzo <strong>di</strong> messaggio il suo header <strong>di</strong><br />

livello.<br />

22


1.6 Protocolli e architetture <strong>di</strong> rete<br />

6. Il livello 2 trasmette il tutto al mezzo fisico <strong>di</strong> trasmissione.<br />

7. In ricezione vengono svolti tutti i precedenti passi al contrario. Ogni<br />

livello esegue le proprie operazioni, rimuove il proprio header e<br />

consegna il tutto al livello superiore.<br />

Questa procedura è rappresentata in figura 1.16.<br />

Figura 1.16: Funzionamento del software <strong>di</strong> rete<br />

Due livelli paritetici comunicano fra loro scambiandosi pacchetti chiamati<br />

PDU (Protocol Data Unit). Ogni livello n aggiunge al pacchetto proveniente<br />

dal livello superiore n+1, le informazioni <strong>di</strong> controllo del suo protocollo (PCI,<br />

Protocol Control Information). Queste informazioni vengono preposte alla<br />

PDU del livello n e costituiscono la n-PDU. La n-PDU a sua volta viene imbustata<br />

in un pacchetto <strong>di</strong> livello n − 1 e così via. Un messaggio viaggia in<br />

rete con il corredo <strong>di</strong> tante intestazioni quanti sono i livelli dell’architettura,<br />

ovvero gli sta<strong>di</strong> attraverso cui il messaggio passa prima <strong>di</strong> essere effettivamente<br />

trasmesso sul canale fisico. Una volta che il messaggio è giunto a<br />

destinazione gli sta<strong>di</strong> da attraversare sono gli stessi ma, in or<strong>di</strong>ne inverso,<br />

con l’eliminazione dell’intestazione <strong>di</strong> un livello se questo passa i suoi dati al<br />

livello superiore. In pratica ciascun livello a destinazione riceve esattamente<br />

i dati che ha spe<strong>di</strong>to lo stesso livello alla sorgente.<br />

Un aspetto molto importante è l’affidabilità del servizio. Un servizio<br />

affidabile non incorre mai nell’errore <strong>di</strong> perdere i dati, assicurandosi che i dati<br />

spe<strong>di</strong>ti siano stati consegnati al destinatario. Ciò richiede, generalmente,<br />

che il ricevente invii una conferma (acknowledgement) per ogni messaggio o<br />

pacchetto ricevuto. Alcuni servizi possono non essere affidabili (non danno<br />

la certezza della ricezione a valle) ma, in tal caso, basta che se ne occupi<br />

almeno uno dei livelli superiori.<br />

23


1.6.2 Il modello OSI<br />

Le reti: nozioni <strong>di</strong> base<br />

L’OSI (Open System Interconnection), emesso dalla ISO (International<br />

Standard Organization), è un modello <strong>di</strong> riferimento nel senso che definisce<br />

numero, relazioni e caratteristiche funzionali dei livelli ma non definisce in<br />

che modo queste funzioni vengano implementate, ovvero quali siano i protocolli<br />

effettivi che utilizzano. Il modello OSI fornisce le specifiche generali del<br />

software e dell’hardware della rete, mettendo a <strong>di</strong>sposizione uno standard<br />

per la connessione <strong>di</strong> sistemi aperti, ed inoltre rappresenta uno standard<br />

rispetto a cui confrontare le varie architetture <strong>di</strong> rete.<br />

Esso si compone <strong>di</strong> sette livelli:<br />

7 Applicazione (Application)<br />

6 Presentazione (Presentation)<br />

5 Sessione (Session)<br />

4 Trasporto (Transport)<br />

3 Rete (Network)<br />

2 Collegamento (Data Link)<br />

1 Fisico (Physical)<br />

Tabella 1.2: Struttura <strong>di</strong> rete: modello OSI<br />

Ve<strong>di</strong>amo quali sono i principali compiti <strong>di</strong> ogni livello:<br />

1. Fisico (Physical layer): questo livello si occupa della trasmissione dei<br />

bit sul canale <strong>di</strong> comunicazione. Specifica le modalità con cui vengono<br />

trasmessi i bit e le caratteristiche dei segnali utilizzati. Stabilisce le<br />

operazioni <strong>di</strong> multiplazione controllando gli aspetti meccanici, elettrici<br />

e procedurali delle interfacce <strong>di</strong> rete. I due host che comunicano devono<br />

utilizzare gli stessi segnali, gli stessi co<strong>di</strong>ci e la stessa modulazione.<br />

Tale livello ha inoltre il compito <strong>di</strong> attivare e <strong>di</strong>sattivare la connessione<br />

<strong>di</strong> rete.<br />

2. Collegamento (Data Link layer): si occupa della trasmissione e della<br />

ricezione dei dati tra due host collegati attraverso il canali fisico. Organizza<br />

i dati <strong>di</strong>videndoli in frame ed inviandoli in sequenza attendendo<br />

una conferma <strong>di</strong> ricezione (ack) per ogni frame. Gestisce gli errori<br />

<strong>di</strong> trasmissione causati da per<strong>di</strong>te o alterazioni del segnale e regola il<br />

flusso <strong>di</strong> trasmissione dei dati per non sovraccaricare l’host. Nelle reti<br />

broadcast questo livello viene esteso con l’aggiunta <strong>di</strong> un sottostrato<br />

denominato MAC (Me<strong>di</strong>um Access Control) incaricato <strong>di</strong> controllare<br />

l’accesso al canale <strong>di</strong> trasmissione.<br />

3. Rete (Network layer): deputato al controllo del funzionamento della<br />

sottorete <strong>di</strong> comunicazione ed alla gestione dell’instradamento dei messaggi<br />

(routing) sulla rete. Altre funzioni riguardano la multiplazione<br />

24


1.6 Protocolli e architetture <strong>di</strong> rete<br />

<strong>di</strong> più flussi sullo stesso circuito fisico ed il controllo della congestione<br />

della rete.<br />

4. Trasporto (Transport layer): questo livello ha il compito <strong>di</strong> fornire<br />

un servizio <strong>di</strong> trasporto dei dati efficiente, affidabile ed economico in<br />

termini <strong>di</strong> risorse, in<strong>di</strong>pendentemente dalla rete utilizzata. Viene considerato<br />

il primo livello del modello <strong>di</strong> rete orientato all’utente. Si<br />

occupa <strong>di</strong> definire la qualità del servizio (QoS - Quality of Service)<br />

tenendo in considerazione i ritar<strong>di</strong> <strong>di</strong> attivazione della connessione e <strong>di</strong><br />

transito dei dati. Ha la funzione <strong>di</strong> rilevazione e controllo <strong>degli</strong> errori,<br />

segmentazione e assemblaggio dei dati oltre che la scelta della rete <strong>di</strong><br />

trasporto.<br />

5. Sessione (Session layer): considerato il più basso tra i livelli <strong>di</strong> elaborazione<br />

è responsabile dell’organizzazione delle comunicazioni. Mette<br />

a <strong>di</strong>sposizione alcune funzioni necessarie per la gestione ed il controllo<br />

del trasferimento dei dati, per l’instaurazione della connessione tra due<br />

utenti e per la sincronizzazione tra due applicazioni.<br />

6. Presentazione (Presentation layer): si occupa della corretta interpretazione<br />

sintattica dei dati scambiati tra i vari calcolatori in<strong>di</strong>pendentemente<br />

dai co<strong>di</strong>ci e dalle particolari convenzioni impiegate da ciascun<br />

sistema. I servizi messi a <strong>di</strong>sposizione sono la rappresentazione dei<br />

dati, la loro compressione e la cifratura.<br />

7. Applicazione (Application layer): in questo livello si trovano tutti i<br />

programmi utente (e <strong>di</strong> sistema) che consentono <strong>di</strong> svolgere le varie<br />

attività in rete. A questo livello vengono implementati <strong>di</strong>versi protocolli<br />

necessari per le principali attività <strong>di</strong> rete: trasferimento dati,<br />

accesso e gestione dei file, posta elettronica, terminale virtuale, etc.<br />

Ognuno <strong>di</strong> questi livelli contiene due tipologie <strong>di</strong> oggetti: le entità, che<br />

sono elementi software ed hardware presenti in quello specifico livello ed i<br />

punti <strong>di</strong> accesso (SAP), che rappresentano i punti nei quali ogni livello mette<br />

a <strong>di</strong>sposizione i suoi servizi al livello <strong>di</strong>rettamente superiore.<br />

1.6.3 Architettura Client-Server<br />

In molte reti (per esempio Internet) i <strong>di</strong>aloghi tra i calcolatori si basano<br />

su un’architettura denominata client-server, che si riferisce non alla sintassi<br />

della comunicazione quanto alla specificità dei ruoli che i calcolatori<br />

assumono. Il funzionamento è il seguente:<br />

• Un calcolatore (client) richiede l’accesso ad informazioni <strong>di</strong>slocate su<br />

un altro calcolatore, e dunque assume il ruolo <strong>di</strong> “cliente”.<br />

25


Le reti: nozioni <strong>di</strong> base<br />

• L’altro calcolatore (server) risponde alla richiesta ricevuta inoltrando<br />

le informazioni in questione, e dunque assume il ruolo <strong>di</strong> “fornitore<br />

<strong>di</strong> servizi”. In pratica, una volta che il client ha ottenuto l’accesso<br />

attraverso la fase <strong>di</strong> handshake (“stretta <strong>di</strong> mano”), il server si mette<br />

a totale <strong>di</strong>sposizione.<br />

In questo contesto assumono una fondamentale importanza le cosiddette<br />

“porte <strong>di</strong> comunicazione” che riguardano i particolari servizi forniti dal server.<br />

Il server associa a ciascun servizio offerto una porta d’accesso (ciascuna<br />

viene in<strong>di</strong>cata con un numero standard a seconda del tipo <strong>di</strong> servizio), ed<br />

il client accede a quel servizio esclusivamente attraverso quella porta. Il<br />

mancato accesso tramite la giusta porta non permette, dunque, la ricezione<br />

delle informazioni desiderate.<br />

Generalmente i server sono implementati come programmi al livello <strong>di</strong><br />

applicazione. Il termine server si usa, pertanto, per in<strong>di</strong>care qualsiasi programma<br />

che offra un servizio raggiungibile dalla rete. Un programma in<br />

esecuzione <strong>di</strong>venta client se invia una richiesta ad un server ed attende una<br />

risposta. Un certo servizio può essere fornito da un’applicazione server su<br />

un sistema in time-sharing insieme con altri programmi, o da più server<br />

in esecuzione sulla medesima macchina o su più macchine per aumentarne<br />

l’affidabilità e migliorarne le prestazioni.<br />

1.7 Il collegamento dei dati<br />

Una volta definito il mezzo fisico <strong>di</strong> trasmissione <strong>di</strong> una rete e la modalità<br />

con cui avviene la trasmissione su tale mezzo, si passa ad affrontare un secondo<br />

problema: la ricerca <strong>di</strong> una trasmissione/ricezione affidabile ed efficiente<br />

tra le macchine connesse fisicamente da quel mezzo. Questo problema viene<br />

gestito dal secondo livello dello schema OSI, il livello Data Link. Le funzioni<br />

principali riguardano i seguenti aspetti:<br />

• determinare come i bit del livello fisico sono raggruppati in frame;<br />

• gestire gli errori <strong>di</strong> trasmissione;<br />

• regolare il flusso dei dati nella trasmissione;<br />

Un funzionamento tipico che coinvolge questo livello è, per esempio, la<br />

procedura eseguita da un router per lo smistamento <strong>di</strong> un pacchetto:<br />

1. I bit giungono al router lungo il canale fisico. L’hardware apposito<br />

trasferisce i bit al sistema <strong>di</strong> elaborazione hardware/software (HW/SW)<br />

del livello Data Link.<br />

2. Tale sistema solitamente integrato in un chip della scheda <strong>di</strong> rete, controlla<br />

la struttura del framing (composizione ed or<strong>di</strong>ne della sequenza)<br />

ed eventuali errori <strong>di</strong> trasmissione.<br />

26


1.7 Il collegamento dei dati<br />

3. Se il controllo non evidenzia errori, l’HW/SW genera un segnale (interrupt)<br />

alla CPU per richiedere i sevizi offerti dal livello <strong>di</strong> rete. Il<br />

software del Network layer (tipicamente un processo <strong>di</strong> sistema) elabora<br />

il pacchetto contenuto nel frame e decide su quale linea in uscita<br />

dal router instradarlo.<br />

4. Il SW <strong>di</strong> livello tre consegna il pacchetto al SW/HW del livello due<br />

che lo imbusta in un nuovo frame e a sua volta lo consegna al livello<br />

fisico della linea in uscita prescelta.<br />

L’approccio usuale del livello due è, in generale, il seguente:<br />

• In trasmissione spezza il flusso <strong>di</strong> bit provenienti dal livello <strong>di</strong> rete in<br />

una serie <strong>di</strong> frame, aggiunge a ciascuno <strong>di</strong> essi un campo <strong>di</strong> controllo<br />

(checksum) e consegna i frame al livello Data Link.<br />

• In ricezione riceve una sequenza <strong>di</strong> bit dal livello fisico, ricostruisce<br />

uno dopo l’altro i frame ricevuti e li controlla; quin<strong>di</strong>, se sono corretti,<br />

li passa al livello superiore.<br />

Un problema decisivo è dunque rappresentato dalla delimitazione dei<br />

frame. Le tecniche utilizzate per risolvere questo problema sono legate ai<br />

caratteri o bit utilizzati poiché tecniche <strong>di</strong> natura temporale sarebbero molto<br />

rischiose.<br />

1.7.1 Riconoscimento e correzione <strong>degli</strong> errori<br />

Nella fase <strong>di</strong> co<strong>di</strong>fica o durante la trasmissione dei dati si possono generare<br />

errori nei segnali. Questi, in fase <strong>di</strong> ricezione, vengono interpretati in<br />

maniera non corretta. Gli errori sono generalmente dovuti a rumori <strong>di</strong> fondo,<br />

<strong>di</strong>sturbi improvvisi (fulmini) o interferenze. Per riconoscere e correggere<br />

problemi <strong>di</strong> questo genere si possono implementare tecniche apposite, che<br />

consistono nell’utilizzazione <strong>di</strong> co<strong>di</strong>ci particolari. In generale esistono due<br />

tipologie <strong>di</strong> co<strong>di</strong>ci:<br />

1. Co<strong>di</strong>ce per la correzione <strong>degli</strong> errori: aggiunge informazioni aggiuntive<br />

che vengono utilizzate per ricostruire il messaggio originario.<br />

2. Co<strong>di</strong>ce per il riconoscimento <strong>degli</strong> errori: aggiunge informazioni ridondanti<br />

necessarie per comprendere l’esistenza <strong>di</strong> un errore.<br />

Il riconoscimento e la correzione <strong>degli</strong> errori da parte del co<strong>di</strong>ce (nella<br />

realtà un singolo co<strong>di</strong>ce) <strong>di</strong>pende dal numero <strong>di</strong> errori presenti nel dato<br />

trasmesso. Se gli errori superano un certo numero, il co<strong>di</strong>ce può non essere il<br />

grado <strong>di</strong> rilevarli e correggerli intervenendo anche in maniera errata. Peraltro<br />

tale situazione accade con una probabilità esponenzialmente decrescente<br />

all’aumentare <strong>degli</strong> errori.<br />

27


Le reti: nozioni <strong>di</strong> base<br />

Supponiamo <strong>di</strong> avere il co<strong>di</strong>ce binario formato dalle parole (o word)<br />

P = {0000, 1111}<br />

ed una probabilità p <strong>di</strong> errore uguale per entrambi i simboli binari 0 e 1.<br />

Allora:<br />

• Se nella trasmissione si verifica un singolo errore, ovvero viene mo<strong>di</strong>ficato<br />

il valore <strong>di</strong> un solo bit, il co<strong>di</strong>ce è in grado <strong>di</strong> correggere l’errore<br />

attraverso il seguente meccanismo:<br />

0001, 0010, 0100, 1000 sono corretti in 0000<br />

1110, 1101, 1011, 0111 sono corretti in 1111<br />

• Se si verificano due errori (probabilità molto più bassa), il co<strong>di</strong>ce è in<br />

grado solo <strong>di</strong> riconoscere che ci sono <strong>degli</strong> errori.<br />

0011, 0101, 0110, 1001, 1010, 1100 rappresentano 0000 oppure 1111<br />

• Se si verificano tre errori (probabilità bassissima), il co<strong>di</strong>ce riconosce<br />

la presenza dell’errore ed inoltre corregge in modo sbagliato secondo<br />

il meccanismo applicato al caso contenente un solo errore.<br />

• Se si verificano quattro errori, il co<strong>di</strong>ce non è in grado <strong>di</strong> riconoscere<br />

alcun errore.<br />

1.7.2 Gestione del flusso <strong>di</strong> dati<br />

Assieme alle tecniche per comprendere la composizione dei frame e la<br />

presenza <strong>di</strong> errori, un fattore decisivo è dato dalla corretta gestione della<br />

sequenza <strong>di</strong> trasmissione e del flusso <strong>di</strong> dati dal mittente al destinatario.<br />

Nel lessico informatico con il termine acknowledgement si in<strong>di</strong>ca un messaggio<br />

inviato dal destinatario al mittente per informarlo sull’arrivo del<br />

frame: si parla <strong>di</strong> ack positivo se il frame è arrivato correttamente, <strong>di</strong> ack<br />

negativo se invece il frame è errato.<br />

È importante controllare la velocità con cui i dati vengono inviati per<br />

evitare che il mittente li spe<strong>di</strong>sca troppo velocemente ed il destinatario non<br />

sia in grado <strong>di</strong> gestirli. Questo problema viene genericamente in<strong>di</strong>cato con<br />

il termine controllo <strong>di</strong> flusso.<br />

Usualmente le funzioni <strong>di</strong> rilevazione <strong>degli</strong> errori, richieste <strong>di</strong> reinvio delle<br />

informazioni mancanti e <strong>di</strong> conferma <strong>di</strong> ricezione dei dati sono raggruppate<br />

assieme nel software <strong>di</strong> livello. Vengono messi in atto i seguenti <strong>meccanismi</strong>:<br />

• Error detection, per controllare le informazioni ricevute.<br />

• Acknowledgement positivo, testimonia la corretta ricezione dei dati.<br />

28


1.7 Il collegamento dei dati<br />

• Acknowledgement negativo, testimonia la mancata ricezione dei dati.<br />

• Ri-trasmissione a tempo, allo scadere <strong>di</strong> un timeout senza la ricezione<br />

<strong>di</strong> ack.<br />

L’insieme <strong>di</strong> tutti questi meto<strong>di</strong> viene chiamato ARQ (Automatic Repeat-<br />

Request) Gli schemi in figura 1.17 rappresentano alcuni meto<strong>di</strong> ARQ.<br />

Figura 1.17: Automatic Repeat-Request<br />

Per superare alcuni problemi relativi alle procedure ARQ si usano i protocolli<br />

a finestra scorrevole (sli<strong>di</strong>ng window) come rappresentato in figura<br />

1.18. All’instaurarsi della comunicazione viene assegnata al mittente ed al<br />

destinatario la <strong>di</strong>mensione della finestra, che supponiamo sia <strong>di</strong> s pacchetti.<br />

Il mittente confezione gli s frame e li invia al destinatario senza attendere<br />

alcun messaggio <strong>di</strong> acknowledgement. Resta in attesa del messaggio <strong>di</strong> conferma<br />

da parte del destinatario. Tale messaggio contiene il numero <strong>di</strong> sequenza<br />

del successivo frame. Ricevuto questo messaggio il mittente invia i<br />

successivi s frame.<br />

Con questa tecnica il tempo necessario per trasmettere s frame 2T , dove<br />

T è il tempo per inviare un frame in una sola <strong>di</strong>rezione. Se non si utilizzasse<br />

questa tecnica il tempo necessario per trasmettere gli s frame sarebbe 2sT .<br />

Figura 1.18: Sli<strong>di</strong>ng window<br />

La <strong>di</strong>mensione della finestra varia in base alle <strong>di</strong>verse implementazioni.<br />

29


Le reti: nozioni <strong>di</strong> base<br />

Può essere fissa o variabile. Alcuni aspetti, però, sono comuni a tutti gli<br />

algoritmi:<br />

• Ogni frame inviato ha un numero <strong>di</strong> sequenza fra 0 e 2n − 1 (vengono<br />

usati n bit per rappresentarlo).<br />

• Ad ogni istante il mittente mantiene una finestra scorrevole sugli in<strong>di</strong>ci<br />

del frame e solo quelli all’interno della finestra possono essere spe<strong>di</strong>ti.<br />

Gli in<strong>di</strong>ci nella finestra riguardano frame in <strong>di</strong>verse situazioni:<br />

– quando arriva un pacchetto dal livello network, nella finestra<br />

entra un nuovo in<strong>di</strong>ce;<br />

– quando arriva un ack, l’in<strong>di</strong>ce esce dalla finestra;<br />

– i frame nella finestra sono mantenuti in memoria per una possibile<br />

ritrasmissione;<br />

• il destinatario mantiene una finestra corrispondente agli in<strong>di</strong>ci del<br />

frame che possono essere accettati:<br />

– se arriva un frame il cui in<strong>di</strong>ce è fuori dalla finestra, questo viene<br />

scartato e non si invia alcun ack;<br />

– se arriva un frame il cui in<strong>di</strong>ce è dentro la finestra: il frame viene<br />

accettato, viene spe<strong>di</strong>to il relativo ack e la finestra viene spostata<br />

in avanti;<br />

– i frame nella finestra sono mantenuti in memoria per una possibile<br />

ritrasmissione;<br />

• Le finestre del mittente e del destinatario non devono avere necessariamente<br />

le stesse <strong>di</strong>mensioni.<br />

Utilizzando questi protocolli il livello Data Link non ha più libertà nell’or<strong>di</strong>ne<br />

<strong>di</strong> trasmissione, fermo restando il fatto che i pacchetti sono riconsegnati<br />

al livello Network nel giusto or<strong>di</strong>ne ed i frame arrivano a destinazione<br />

con la sequenza con cui sono stati spe<strong>di</strong>ti.<br />

I protocolli maggiormente <strong>di</strong>ffusi nelle reti o<strong>di</strong>erne sono:<br />

• HDLC (High Level Data Link Control), lo standard ISO.<br />

• SLIP (Serial Line IP), nato per l’architettura TCP/IP ma presenta<br />

<strong>di</strong>verse limitazioni.<br />

• PPP (Point to Point Protocol), successore dello SLIP, in grado <strong>di</strong><br />

gestire tutte le funzionalità richieste nel framing, nel rilevamento <strong>degli</strong><br />

errori, nell’uso delle linee, nel supportare protocolli <strong>di</strong> rete <strong>di</strong>versi e<br />

nel negoziare opzioni <strong>di</strong> livello superiore.<br />

30


1.8 Le reti locali<br />

1.8 Le reti locali<br />

Il crescente sviluppo economico, politico e sociale mo<strong>di</strong>fica costantemente<br />

la nostra società imponendole un continuo adattamento ai ritmi frenetici dei<br />

flussi <strong>di</strong> informazioni. Il settore dell’ IT, Information Technology, si pro<strong>di</strong>ga<br />

per offrire su larga scala gli strumenti adatti a questa continua crescita. La<br />

crescente <strong>di</strong>ffusione e <strong>di</strong>stribuzione delle capacità elaborative, unite al basso<br />

costo <strong>di</strong> implementazione, hanno permesso la nascita e lo sviluppo delle reti<br />

locali.<br />

Nelle reti locali tutte le unità con<strong>di</strong>vidono lo stesso canale trasmissivo.<br />

Quando una <strong>di</strong> queste lo occupa per la trasmissione, utilizza temporaneamente<br />

tutta la banda <strong>di</strong>sponibile. Nessun’altra unità può quin<strong>di</strong> interferire.<br />

Le principali caratteristiche <strong>di</strong> questo tipo <strong>di</strong> rete sono:<br />

• Velocità <strong>di</strong> comunicazione elevata. Il range varia da 10 Mbps a 100<br />

Mbps.<br />

• Bassa probabilità <strong>di</strong> errori in virtù dell’ estensione geografica ridotta.<br />

• Alta affidabilità. Se ben progettata può operare anche in presenza <strong>di</strong><br />

guasti o malfunzionamenti.<br />

• Espan<strong>di</strong>bilità. Il numero <strong>di</strong> elaboratori può crescere senza comportare<br />

cambiamenti significativi della rete.<br />

• Basso costo <strong>di</strong> implementazione.<br />

Le reti locali, spesso nate privatamente e in modo sperimentale, non<br />

rispettano generalmente quanto imposto dagli “standard” emanati dagli organismi<br />

classici quali ISO. Tuttavia, per garantire una linea comune nello<br />

sviluppo non proprietario esiste l’associazione IEEE 802 composta da vari<br />

comitati (Tab.1.3). Essa si occupa dello sviluppo <strong>di</strong> standard <strong>di</strong> trasmissione<br />

per reti LAN, WLAN e MAN.<br />

COMITATO STANDARD LAN<br />

802.1 Specifiche generali<br />

802.3 CSMA/CD<br />

802.5 Token Ring<br />

802.10 Sicurezza<br />

802.11 Wireless<br />

Tabella 1.3: Comitati IEEE per reti locali<br />

Il cablaggio delle reti (realizzazioni fisiche) viene invece regolato tramite<br />

l’uso delle norme standard EIA/TIA 568 emanato dalle associazioni EIA<br />

(Electronic Industries Association) e TIA (Telecommunications Industries<br />

Associations).<br />

31


1.8.1 Struttura trasmissiva delle reti locali<br />

Le reti: nozioni <strong>di</strong> base<br />

La struttura <strong>di</strong> una rete locale è basata, come il modello OSI, su una sud<strong>di</strong>visione<br />

in livelli. Tale sud<strong>di</strong>visione si occupa solamente <strong>degli</strong> strati inferiori<br />

in quanto lo scopo è semplicemente quello <strong>di</strong> fornire un’interfaccia unificata<br />

verso il livello <strong>di</strong> rete. È possibile comunque identificare la corrispondenza<br />

con i livelli OSI (Fig.1.19):<br />

Figura 1.19: Corrispondenza struttura <strong>di</strong> rete - livelli OSI<br />

Il modello IEEE 802 sud<strong>di</strong>vide i due livelli inferiori OSI in tre sottolivelli:<br />

1) Livello fisico, specifica le caratteristiche dei segnali trasmessi sul mezzo<br />

fisico.<br />

2a) Livello MAC (Me<strong>di</strong>um Access Control), specifica le modalità <strong>di</strong> accesso<br />

al mezzo trasmissivo ed è caratteristico per ogni tipo <strong>di</strong> LAN. Generalmente<br />

questo livello viene implementato attraverso una struttura<br />

hardware detta scheda <strong>di</strong> rete o NIC (Network Interface Connection).<br />

2b) Livello LLC (Logical Link Control), comune a tutte le reti in quanto<br />

unifica l’interfaccia verso il livello <strong>di</strong> rete. Questo livello viene<br />

realizzato attraverso software.<br />

1.8.2 Il livello MAC (Me<strong>di</strong>um Access Control)<br />

È l’elemento centrale per il buon funzionamento della rete locale in quanto<br />

si occupa <strong>di</strong> gestire gli accessi multipli alla rete e quin<strong>di</strong> <strong>di</strong> garantire una<br />

trasmissione corretta e senza conflitti tra le unità. I protocolli <strong>di</strong> accesso<br />

possono essere classificati in due categorie: accesso multiplo casuale e deterministico.<br />

I protocolli più noti sono il CSMA/CD per l’accesso casuale e<br />

Token Passing per l’accesso deterministico.<br />

Il livello MAC assieme al formato dei frame caratterizza ogni tipologia<br />

<strong>di</strong> LAN. Tuttavia, nella composizione del frame, vi sono alcuni campi che<br />

sono presenti in tutti i formati in<strong>di</strong>pendentemente dal tipo <strong>di</strong> rete locale.<br />

Questi campi, rappresentati in figura 1.20, sono:<br />

32


1.8 Le reti locali<br />

Figura 1.20: Principali campi <strong>di</strong> un frame<br />

• Gli in<strong>di</strong>rizzi delle unità mittente e destinatario sono detti in<strong>di</strong>rizzi a<br />

livello MAC.<br />

• Il campo dati (<strong>di</strong> lunghezza variabile a seconda del tipo <strong>di</strong> rete).<br />

• Il campo FCS (Frame Control Sequence) contenente bit <strong>di</strong> ridondanza<br />

per riconoscere la presenza <strong>di</strong> eventuali errori nel frame.<br />

Oltre a questi in<strong>di</strong>rizzi, considerati “universali”, ne troviamo altri assegnati<br />

dai costruttori dei <strong>di</strong>spositivi: 24 bit sono destinati all’identificazione<br />

del costruttore ed altri 24 bit (224 in<strong>di</strong>rizzi) sono destinati all’identificazione<br />

dei singoli <strong>di</strong>spositivi.<br />

A seconda del tipo <strong>di</strong> applicazione, inoltre, l’in<strong>di</strong>rizzo <strong>di</strong> destinazione può<br />

essere <strong>di</strong> tre tipi: singolo (se in<strong>di</strong>rizzato ad un singolo <strong>di</strong>spositivo), multicast<br />

(se in<strong>di</strong>rizzato ad un gruppo <strong>di</strong> apparecchiature) e broadcast (se in<strong>di</strong>rizzato<br />

a tutti i <strong>di</strong>spositivi). Quando il livello MAC <strong>di</strong> un <strong>di</strong>spositivo riceve un<br />

frame, oltre ai controlli <strong>di</strong> routine per la convalida del frame ed al controllo<br />

<strong>di</strong> eventuali errori, si accerta dell’in<strong>di</strong>rizzo <strong>di</strong> destinazione: se l’in<strong>di</strong>rizzo del<br />

<strong>di</strong>spositivo è compreso nell’in<strong>di</strong>rizzo <strong>di</strong> destinazione il frame viene inviato al<br />

livello superiore, altrimenti il frame viene scartato.<br />

1.8.3 Il livello LLC (Logical Link Control)<br />

Il frame LLC associato a tale livello comprende i seguenti campi:<br />

Figura 1.21: Principali campi <strong>di</strong> un frame LLC<br />

Gli in<strong>di</strong>rizzi destinazione LLC e mittente LLC identificano i protocolli<br />

del livello <strong>di</strong> rete su cui si appoggiano le due reti locali mittente e destinatario.<br />

I servizi forniti da questo livello possono essere: senza connessione<br />

e senza conferma (come il tipo datagram senza conferma della ricezione),<br />

con connessione logica (come i tipo a circuito virtuale), senza connessione<br />

con conferma.<br />

33


1.8.4 Il cablaggio<br />

Le reti: nozioni <strong>di</strong> base<br />

Il mezzo trasmissivo costituisce il collegamento fisico tra gli elaboratori<br />

e le apparecchiature <strong>di</strong> rete. Per assicurare le migliori prestazioni il mezzo<br />

deve avere determinate caratteristiche: essere poco <strong>di</strong>spersivo e <strong>di</strong>ssipativo<br />

(quin<strong>di</strong> con bassi valori <strong>di</strong> resistenza, capacità ed induttanza) e il più possibile<br />

indeformabile rispetto alla trazione (per evitare il deterioramento delle<br />

qualità <strong>di</strong> trasmissione).<br />

I mezzi comunemente utilizzati sono: il doppino intrecciato in rame, il<br />

cavo coassiale (oggi quasi completamente abbandonato) e le fibre ottiche.<br />

Quando non risulta possibile effettuare il cablaggio si possono realizzare<br />

connessioni wireless, “senza fili”, che utilizzano onde ra<strong>di</strong>o o raggi infrarossi.<br />

1.8.5 La rete ethernet<br />

Ethernet è certamente la tecnologia LAN più utilizzata. Il suo basso<br />

costo la rende predominante rispetto alle altre, anche se <strong>di</strong>verse tecnologie<br />

sono in grado <strong>di</strong> comunicare in modo più sicuro, veloce e ad una maggiore<br />

<strong>di</strong>stanza.<br />

Ethernet fu creata nel 1976 da B. Metcalfe nel centro <strong>di</strong> ricerca Xerox c○<br />

utilizzando il protocollo CSMA/CD. Vista la sua semplicità realizzativa e le<br />

elevate prestazioni, il consorzio DIX (con Digital, Intel e Xerox) elaborarò le<br />

specifiche della rete Ethernet a 10 Mbps. Successivamente il comitato IEEE<br />

802.3 elaborò le specifiche <strong>di</strong> una rete basata sul protocollo CSMA/CD e<br />

molto simile alla rete Ethernet. Ad oggi si realizzano solo reti IEEE 802.3<br />

per le quali viene utilizzata, in modo improprio, la denominazione <strong>di</strong> rete<br />

Ethernet.<br />

La topologia è con bus con<strong>di</strong>viso ed il metodo <strong>di</strong> accesso multiplo è<br />

carrier sense (anche se le collisioni non sono completamente evitate per via<br />

del fatto che il ritardo <strong>di</strong> propagazione sul bus non è nullo), per cui con una<br />

struttura completamente <strong>di</strong>stribuita.<br />

Il frame che caratterizza la rete 802.3 è composto dai seguenti campi:<br />

in cui:<br />

Figura 1.22: Campi frame 802.3<br />

• Il campo “Preambolo” è formato da tutti byte del tipo 10101010.<br />

• Il campo “SF” (Start Frame) è costituito dal byte 10101011 e delimita<br />

l’inizio del frame.<br />

34


1.8 Le reti locali<br />

• Nei campi “In<strong>di</strong>rizzo” il primo bit identifica il tipo <strong>di</strong> trasmissione:<br />

se vale 0 in<strong>di</strong>ca trasmissione or<strong>di</strong>naria, se vale 1 in<strong>di</strong>ca multicast (per<br />

broadcast nell’in<strong>di</strong>rizzo <strong>di</strong> destinazione devono essere tutti 1).<br />

• Il campo “Lunghezza Frame” riporta la lunghezza in co<strong>di</strong>ce binario.<br />

• Il campo “Dati” è variabile da 0 a 1500 byte.<br />

• Il campo “Pad” serve per garantire la lunghezza minima del frame <strong>di</strong><br />

64 byte.<br />

• Il campo “FCS” serve per il controllo <strong>degli</strong> errori.<br />

Viene utilizzata la co<strong>di</strong>fica Manchester nella quale, in ogni periodo <strong>di</strong><br />

bit (intervallo temporale), si co<strong>di</strong>fica una variazione dell’informazione attraverso<br />

il cambiamento <strong>di</strong> tensione tra i valori −0, 85V e +0, 85V. Questa<br />

co<strong>di</strong>fica, assieme alla sincronizzazione delle unità e alla gestione del collegamento,<br />

viene implementata attraverso un’interfaccia <strong>di</strong> rete realizzata su<br />

un’apposita scheda.<br />

Alcune funzioni fondamentali sono svolte da:<br />

• Transceiver o MAU (Me<strong>di</strong>um Access Control Unit) che si collega da<br />

un lato alla scheda Ethernet, dall’altra al cavo <strong>di</strong> trasmissione e serve<br />

per trasmettere e ricevere i segnali lungo il canale, rilevare e notificare<br />

eventuali collisioni nel canale alle unità.<br />

• Ripetitore (repeater) che consente <strong>di</strong> superare i limiti fisici imposti dalla<br />

rete a causa dell’attenuazione dei segnali lungo il canale trasmissivo.<br />

Pertanto si occupa <strong>di</strong> ricevere, amplificare e ritrasmettere i segnali.<br />

1.8.6 Il cablaggio Ethernet<br />

Esistono varie tipologie <strong>di</strong> rete Ethernet basate principalmente sulle<br />

caratteristiche dei cavi <strong>di</strong> collegamento:<br />

• 10 Mbps Ethernet, che operano a 10 Mbps, tra cui possiamo <strong>di</strong>stinguere:<br />

– 10Base2 (thin Ethernet), con cavo coassiale sottile (thin) <strong>di</strong> lunghezza<br />

massima <strong>di</strong> 200 metri, e con limitazioni sul numero e sulla<br />

<strong>di</strong>stanza delle unità collegate.<br />

– 10Base5 (thick Ethernet), con cavo coassiale più spesso e rigido<br />

(thick) e <strong>di</strong>stanza massima <strong>di</strong> 500 metri (spesso utilizzata<br />

come dorsale in e<strong>di</strong>fici). Presenta limitazioni sul numero e sulla<br />

<strong>di</strong>stanza delle unità collegate.<br />

– 10BaseT , che usa doppino intrecciato (Twisted-pair cable) <strong>di</strong><br />

lunghezza massima <strong>di</strong> 100 metri ed ha una configurazione a stella.<br />

35


Le reti: nozioni <strong>di</strong> base<br />

– 10BaseF , che usa fibra ottica (Fiber) <strong>di</strong> lunghezza massima <strong>di</strong> 2<br />

Km ed ha una configurazione a stella.<br />

• 100 Mbps Fast Ethernet, che operano a velocit <strong>di</strong> 100 Mbps e che<br />

racchiude <strong>di</strong>versi standard (TX con doppino telefonico, FX con fibra<br />

ottica, T4 con doppini telefonici quadruplicati).<br />

• 1000 Mbps Gigabit Ethernet, che operano a velocit <strong>di</strong> 1000 Mbps, e<br />

consentono operazioni in “full duplex” e “half duplex”.<br />

1.8.7 Token Ring<br />

I protocolli <strong>di</strong> tipo deterministico consentono <strong>di</strong> eliminare i problemi<br />

legati alle collisioni derivanti dall’accesso al mezzo trasmissivo, anche se<br />

questa caratteristica va a scapito della complessità <strong>di</strong> realizzazione della<br />

rete. Alcune reti locali <strong>di</strong> questo genere, dapprima realizzate da IBM c○<br />

e poi standar<strong>di</strong>zzate da IEEE 802, utilizzano la tecnica <strong>di</strong> accesso tramite<br />

un “gettone” o token, che in pratica viene rappresentato da una particolare<br />

sequenza binaria. Fra le varie configurazioni realizzate, quella che ha incontrato<br />

maggiore <strong>di</strong>ffusione è basata su una struttura topologica ad anello e<br />

per questo viene detta Token Ring.<br />

Nella rete Token Ring ogni anello viene connesso tramite un’interfaccia<br />

<strong>di</strong> rete detta MAU (Me<strong>di</strong>a Access Unit). Tali interfacce sono collegate a<br />

coppie (linee punto a punto) e determinano la struttura ad anello che caratterizza<br />

la rete. Le MAU possono essere passive, se svolgono solo le operazioni<br />

<strong>di</strong> connessione e <strong>di</strong>sconnessione alla rete, attive, se oltre alle funzioni <strong>di</strong> connessione<br />

amplificano i segnali ricevuti, parzialmente attive, se amplificano i<br />

segnali solo sulle porte <strong>di</strong> dorsale.<br />

Le reti ad anello hanno le seguenti caratteristiche: non sono basate su<br />

un mezzo trasmissivo broadcast, non hanno una componente significativa<br />

per rilevare le collisioni, e sono eque tra le unità collegate. L’interfaccia<br />

<strong>di</strong> rete può operare secondo due modalità: listen mode e transmit mode a<br />

seconda se è in ascolto dei dati in arrivo dall’anello (ring) o se è in fase<br />

<strong>di</strong> trasmissione <strong>di</strong> nuovi bit rimuovendo così quelli in arrivo. La co<strong>di</strong>fica<br />

utilizzata è la Differential Manchester Enco<strong>di</strong>ng.<br />

Il token circola in continuazione e viene catturato solo quando qualcuno<br />

vuole trasmettere. Poiché il token è uno solo, l’accesso al mezzo si risolve<br />

senza alcun conflitto. La procedura seguita per la trasmissione è la seguente:<br />

1. aspettare l’arrivo del token;<br />

2. rimuoverlo dall’anello (listen mode);<br />

3. trasmettere i dati (transmit mode);<br />

4. aspettare il ritorno dei dati inviati (che nel frattempo hanno raggiunto<br />

le destinazioni);<br />

36


1.8 Le reti locali<br />

5. ritrasmettere il token (transmit mode);<br />

6. rimettersi in listen mode<br />

Non ci sono limitazioni per la lunghezza dei dati inviati, ma solo per il<br />

token, che non deve avvalersi <strong>di</strong> più bit <strong>di</strong> quanti possano contenere insieme<br />

una linea <strong>di</strong> collegamento e il buffer (memoria temporanea) <strong>di</strong> un’interfaccia<br />

(tenendo conto che la velocità <strong>di</strong> propagazione del segnale nel rame è<br />

<strong>di</strong> circa 200 metri per microsecondo). Il token, inoltre, viene generato da<br />

una stazione “master” che si occupa <strong>di</strong> controllare la presenza <strong>di</strong> errori ed<br />

eventualmente <strong>di</strong> generarne uno nuovo. Il Token è formato da tre campi,<br />

ciascuno <strong>di</strong> lunghezza <strong>di</strong> 1 byte, denominati “SD” (Start Delimiter) che identifica<br />

l’inizio del token, “AC” (Access Control) che contiene le informazioni<br />

necessarie per l’accesso all’anello ed “ED” (End Delimiter) per identificare<br />

la fine del token. Ogni unità deve leggere tutti i pacchetti e verificare se<br />

l’in<strong>di</strong>rizzo <strong>di</strong> destinazione coincide con il proprio in<strong>di</strong>rizzo, quin<strong>di</strong> riceverlo<br />

(cambiare alcuni bit per palesarlo) e poi ritrasmetterlo all’unità mittente.<br />

Il frame della rete Token Ring è costituito dai campi rappresentati in<br />

figura 1.23:<br />

Figura 1.23: Campi frame Token Ring<br />

in cui “SD” ed “AC” servono per identificare l’inizio del frame, “Frame<br />

Control” serve per controllare la funzione per cui viene trasmesso il frame,<br />

“Routing Information” serve per contenere le informazioni necessarie per<br />

instradare il messaggio, “FCS” serve per contenere dei bit <strong>di</strong> controllo per<br />

rivelare eventuali errori nel frame, “ED” e “Frame Status” servono per<br />

identificare la fine del frame.<br />

Nel cablaggio delle reti token ring possono essere utilizzati i doppini telefonici<br />

(per velocità fino a 16 Mbps) o le fibre ottiche. In quest’ultimo caso la<br />

rete prende il nome <strong>di</strong> FDDI (Fiber Distributed Date Interface) e può operare<br />

a velocità <strong>di</strong> 100 Mbps su un’area anche <strong>di</strong> notevole estensione (decine<br />

<strong>di</strong> Km). La sua struttura comprende due anelli concentrici in fibra ottica<br />

che trasportano le informazioni in sensi opposti, anche se il secondo viene<br />

utilizzato solo in caso <strong>di</strong> guasti sull’anello principale o sugli host connessi.<br />

1.8.8 Componenti a livello <strong>di</strong> struttura<br />

Livello fisico (Physical)<br />

Ulteriori componenti che operano a questo livello sono:<br />

37


Le reti: nozioni <strong>di</strong> base<br />

• Repeater: è un <strong>di</strong>spositivo con 2 porte <strong>di</strong> ingresso/uscita che opera a<br />

livello fisico replicando e amplificando il segnale da una porta all’altra.<br />

Viene utilizzato per interconnettere due sottoreti nel caso in cui la<br />

<strong>di</strong>stanza tra le due sia superiore alla lunghezza permessa dal mezzo<br />

trasmissivo.<br />

• Hub: è un <strong>di</strong>spositivo multiporta in grado <strong>di</strong> far comunicare più computer.<br />

Consiste in una centralina <strong>di</strong> cablaggio che collega insieme tutti<br />

i cavi <strong>di</strong> una rete. Tale <strong>di</strong>spositivo crea il percorso fisico che il segnale<br />

deve seguire per passare da un cavo all’altro, fino a giungere alla<br />

scheda <strong>di</strong> rete <strong>di</strong> ciascun calcolatore. Sebbene il comportamento <strong>di</strong> un<br />

hub sia specificato dalla tecnologia della rete, esso opera al livello dello<br />

strato fisico in quanto funge da semplice ripetitore dei segnali, senza<br />

apportarvi mo<strong>di</strong>fiche. Un hub permette inoltre <strong>di</strong> verificare facilmente<br />

eventuali guasti ai cavi <strong>di</strong> rete ed offre la possibilità <strong>di</strong> aggiungere o<br />

rimuovere un nodo senza <strong>di</strong>sturbare le altre macchine.<br />

Livello <strong>di</strong> collegamento (Data Link)<br />

In questo livello sono presenti due componenti molto utilizzati nelle reti<br />

commerciali:<br />

• Bridge: necessario per connettere assieme due o più LAN si occupa<br />

<strong>di</strong> instradare solo il traffico destinato da una rete all’altra (comunque<br />

entrambi apparteneti alla stessa rete logica). Questo <strong>di</strong>spositivo <strong>di</strong>versamente<br />

dall’hub, esamina i dati che lo attraversano e decide cosa<br />

trasmettere all’altra rete. In altre parole è in grado <strong>di</strong> filtrare il traffico<br />

passante (i frame danneggiati non sono ritrasmessi) anche se proveniente<br />

da LAN <strong>di</strong> tipo <strong>di</strong>verso risolvendo i problemi legati alla <strong>di</strong>versità<br />

delle regole utilizzate su ciascuna rete: formati e lunghezze <strong>di</strong>verse dei<br />

frame, data rate <strong>di</strong>fferenti, funzioni non previste in tutte le LAN (ad<br />

esempio la priorità dei frame). Ci sono due standard <strong>di</strong> bridge:<br />

1. Transparent bridge, esegue le operazioni <strong>di</strong> smistamento in modo<br />

del tutto trasparente, creando tabelle <strong>di</strong> instradamento fra le varie<br />

LAN e aggiornandosi continuamente sui cambiamenti fisici della<br />

rete.<br />

2. Source-routing bridge, dove il modo <strong>di</strong> operare è il più efficiente<br />

possibile, anche se non trasparente, in quanto in ogni trasmissione<br />

il mittente in<strong>di</strong>ca il percorso da seguire.<br />

• Switch: sono <strong>degli</strong> hub con capacità <strong>di</strong> “bridging”. Praticamente<br />

uno switch è un insieme <strong>di</strong> porte <strong>di</strong> comunicazione funzionanti come<br />

un bridge, cioè in grado <strong>di</strong> filtrare i dati (logicamente è come avere<br />

più bridge racchiusi in un’unità fisica). Gli switch usano delle aree<br />

38


1.9 Instradamento dei pacchetti<br />

<strong>di</strong> memoria (buffer) per registrare temporaneamente i frame, finché<br />

questi non vengono trasmessi. Questo permette la conversazione e<br />

l’invio <strong>di</strong> più dati in un solo istante. Gli switch non ripetono il segnale<br />

ricevuto a tutte le porte, ma solo a quelle interessate. Sono <strong>di</strong>spositivi<br />

più costosi <strong>degli</strong> hub e generalmente utilizzati solo nelle reti con<br />

notevole traffico.<br />

Livello <strong>di</strong> rete (Network)<br />

A questo livello opera un componente fondamentale <strong>di</strong> rete:<br />

• Router: tutti gli host collegati tramite hub, switch e bridge si trovano<br />

nello stesso dominio <strong>di</strong> trasmissione (broadcast domain), i cui confini<br />

sono determinati dai router. I router agiscono al livello <strong>di</strong> rete e<br />

quin<strong>di</strong> prendono decisioni <strong>di</strong> instradamento in base alle informazioni<br />

contenute negli header del terzo livello. Il compito <strong>di</strong> un router è <strong>di</strong> stabilire<br />

se un pacchetto sia destinato alla rete locale o ad una rete remota<br />

e <strong>di</strong> inoltrarlo secondo una tabella <strong>di</strong> in<strong>di</strong>rizzi Ethernet, IP od altro,<br />

senza propagazione incon<strong>di</strong>zionata del traffico. Normalmente è capace<br />

<strong>di</strong> inviare pacchetti tra reti <strong>di</strong>verse nei protocolli e nella grandezza dei<br />

pacchetti. Il router multiprotocollo concettualmente è simile al bridge<br />

ma operando a livello Network ha una visione molto più estesa della<br />

rete.<br />

I router presentano sostanziali <strong>di</strong>fferenze rispetto ai bridge in quanto<br />

vengono in<strong>di</strong>rizzati esplicitamente nella rete (i bridge attuali sono<br />

trasparenti), possono mo<strong>di</strong>ficare i pacchetti a livello <strong>di</strong> rete (i bridge<br />

non possono mo<strong>di</strong>ficare il campo dati), possono fornire informazioni<br />

sullo stato della rete e possono utilizzare livelli <strong>di</strong> priorit ed implementare<br />

tecniche <strong>di</strong> sicurezza.<br />

1.9 Instradamento dei pacchetti<br />

L’instradamento dei pacchetti è la tipica attività <strong>di</strong> una rete che si occupa<br />

<strong>di</strong> muovere i pacchetti dall’unità sorgente fino alla destinazione. Utilizzando<br />

la subnet <strong>di</strong> comunicazione, il flusso attraversa tutti i sistemi interme<strong>di</strong><br />

necessari (una serie <strong>di</strong> router), eseguendo molti “hop” (salti) da un router<br />

all’altro. Questa attività viene gestita dal livello tre dello schema OSI, il<br />

livello <strong>di</strong> rete o Network.<br />

Le funzioni principali <strong>di</strong> questo livello sono, oltre alla scelta del cammino<br />

migliore, la gestione del flusso dei dati e delle congestioni oltre alla soluzione<br />

delle problematiche <strong>di</strong> interconnessione tra reti <strong>di</strong>verse.<br />

Il funzionamento delle sottoreti <strong>di</strong> comunicazione può essere <strong>di</strong> due tipi:<br />

39


Le reti: nozioni <strong>di</strong> base<br />

1. Connection-oriented (o circuiti virtuali), in cui viene stabilito un circuito<br />

virtuale fra sorgente e destinazione e tutti i router lungo il<br />

cammino seguono le in<strong>di</strong>cazioni fornite.<br />

2. Connectionless, in cui i router stabiliscono sulla base della destinazione<br />

fornita (e solo quella) come far proseguire la trasmissione; ciò avviene<br />

attraverso delle tabelle <strong>di</strong> instradamento (routing table) che in<strong>di</strong>cano,<br />

per ogni possibile destinazione, quale linea <strong>di</strong> uscita dal router bisogna<br />

utilizzare. Le tabelle sono utilizzate anche nel caso <strong>di</strong> trasmissioni<br />

basate sui circuiti virtuali, ma solo nella fase iniziale.<br />

Alcune caratteristiche ed implicazioni delle subnet <strong>di</strong> comunicazione sono<br />

riassunte dalla tabella seguente 1.4:<br />

Connection oriented Connectionless<br />

Banda trasmissione minore maggiore<br />

Ritardo connessione presente assente<br />

Ritardo routing assente presente<br />

Congestione rete minore maggiore<br />

Vulnerabilità alta bassa<br />

Tabella 1.4: Connection oriented vs Connectionless<br />

1.9.1 Algoritmi <strong>di</strong> routing<br />

Gli algoritmi <strong>di</strong> routing si occupano <strong>di</strong> decidere su quale linea in uscita<br />

dal router debbono essere instradati i pacchetti. Questa parte del software<br />

<strong>di</strong> rete viene applicata a tutti i pacchetti delle sottoreti datagram e solo nel<br />

setup <strong>di</strong> circuito nel caso <strong>di</strong> sottoreti a circuiti virtuali (si parla <strong>di</strong> session<br />

routing).<br />

Possiamo <strong>di</strong>stinguere due classi principali <strong>di</strong> algoritmi <strong>di</strong> routing:<br />

1. Non adattivi o statici (static routing), in cui le decisioni <strong>di</strong> routing<br />

sono prese all’avvio della rete e non vengono più mo<strong>di</strong>ficate.<br />

2. Adattivi o <strong>di</strong>namici (dynamic routing), in cui le decisioni <strong>di</strong> routing<br />

vengono riformulate molto spesso. Le modalità con cui le decisioni<br />

vengono cambiate possono essere <strong>di</strong>verse:<br />

• le informazioni provengono dal router locale, solamente da quelli<br />

a<strong>di</strong>acenti oppure da tutti;<br />

• le decisioni vengono prese ad intervalli <strong>di</strong> tempo regolari, in base<br />

al cambiamento della topologia o del traffico <strong>di</strong> rete;<br />

40


1.9 Instradamento dei pacchetti<br />

• il parametro <strong>di</strong> valutazione può essere la <strong>di</strong>stanza, il numero <strong>degli</strong><br />

“hop” effettuati tra router oppure una stima del tempo per il<br />

transito dei dati<br />

Principio <strong>di</strong> ottimalità<br />

Questo principio sta alla base del ragionamento <strong>di</strong> ogni router. Esso ha il<br />

compito <strong>di</strong> ottimizzare i percorsi <strong>di</strong> instradamento. Supponiamo <strong>di</strong> avere tre<br />

no<strong>di</strong> i, j e k (ve<strong>di</strong> figura 1.24). Supponiamo inoltre che il cammino ottimo<br />

fra i e k sia stato in<strong>di</strong>viduato e lo in<strong>di</strong>chiamo con (i, k). Allora, se il nodo j<br />

si trova sul cammino (i, k), il cammino ottimo (j, k) è il sottocammino tra<br />

j e k che si trova su (i, k).<br />

Figura 1.24: Cammino minimo tra i e k<br />

Come conseguenza <strong>di</strong> questo principio, l’insieme dei cammini ottimi da<br />

tutti i router ad uno specifico router costituisce un albero, anche detto sink<br />

tree per quel router. La ra<strong>di</strong>ce <strong>di</strong> quell’albero è il router destinazione.<br />

Algoritmi statici<br />

I principali algoritmi <strong>di</strong> questa categoria sono:<br />

• Routing a cammino minimo (shortest path routing), in cui si calcola il<br />

cammino minimo che congiunge una coppia <strong>di</strong> router (problema analogo<br />

alla ricerca del cammino minimo in un grafo). In realtà la grandezza<br />

da minimizzare può essere <strong>di</strong> vario tipo. Ad esempio: la lunghezza<br />

dei collegamenti, il numero <strong>degli</strong> “hop” da effettuare, il tempo me<strong>di</strong>o<br />

<strong>di</strong> attesa e trasmissione, o anche una combinazione fra tutte queste<br />

grandezze.<br />

• Floo<strong>di</strong>ng, (non propriamente un algoritmo <strong>di</strong> routing ma molto utile<br />

soprattutto nel caso <strong>di</strong> informazioni <strong>di</strong>stribuite) che consiste nell’inviare<br />

un pacchetto su tutte le linee eccetto che sulla linea dalla quale<br />

proviene. Questo algoritmo ha l’inconveniente <strong>di</strong> generare molti pacchetti<br />

e quin<strong>di</strong> incrementare il traffico <strong>di</strong> rete. Esistono tecniche per<br />

limitare il traffico prodotto ricorrendo ad un contatore (che decresce<br />

ad ogni “hop”, in modo da eliminare il pacchetto quando arriva a zero)<br />

oppure applicando un floo<strong>di</strong>ng selettivo (duplicando i pacchetti solo<br />

41


Le reti: nozioni <strong>di</strong> base<br />

verso le linee che vanno statisticamente nella giusta <strong>di</strong>rezione) oppure<br />

eliminando le copie <strong>di</strong> pacchetti già ricevuti.<br />

• Routing a ritardo minimo (flow-based routing), in cui si sceglie il cammino<br />

che minimizza il ritardo me<strong>di</strong>o dell’intera rete. Una volta in<br />

possesso <strong>di</strong> informazioni quali la topologia della rete, la matrice delle<br />

quantità <strong>di</strong> traffico stimate e le capacità dei canali <strong>di</strong>venta possibile<br />

calcolare in anticipo il ritardo me<strong>di</strong>o atteso, espresso come somma pesata<br />

dei ritar<strong>di</strong> su ogni singola linea dell’intero collegamento (dove il<br />

peso <strong>di</strong> ogni linea si ottiene dal rapporto tra il traffico della linea e il<br />

traffico totale della rete).<br />

Algoritmi <strong>di</strong>namici<br />

Sono gli algoritmi adottati nelle reti attuali. L’esecuzione avviene sia<br />

nella fase iniziale per creare le tabelle <strong>di</strong> routing, sia in fasi successive per<br />

mo<strong>di</strong>ficarle dove opportuno. I principali algoritmi <strong>di</strong> questa categoria sono:<br />

• Routing basato sulla <strong>di</strong>stanza (<strong>di</strong>stance vector routing), in cui la tabella<br />

<strong>di</strong> routing (che contiene informazioni sulla <strong>di</strong>stanza, numero <strong>di</strong><br />

“hop”, ritardo ed altre informazioni su ogni router) viene aggiornata<br />

con regolarità sfruttando i dati acquisiti dal router stesso sui quelli a<strong>di</strong>acenti.<br />

Questo avviene inviando speciali pacchetti “Echo” e le tabelle<br />

dei router a<strong>di</strong>acenti (in maniera ricorsiva). Dunque ogni router riceve<br />

la tabella dei vicini e manda la propria agli stessi. Provvede poi a<br />

calcolare la concatenazione migliore per ogni destinazione. L’aspetto<br />

negativo è che la reazione alle cattive notizie è molto lenta (in caso<br />

<strong>di</strong> mancato collegamento ad un nodo la <strong>di</strong>stanza tende ad aumentare,<br />

problema noto come count-to-infinity). Questo algoritmo viene usato<br />

in Internet col nome <strong>di</strong> RIP (Routing Internet Protocol).<br />

• Routing basato sullo stato dei collegamenti (link state routing), in cui<br />

ogni router analizza lo stato dei collegamenti con i suoi vicini ed invia<br />

tali informazioni a tutti gli altri, ricevendo a sua volta informazioni<br />

analoghe. La tabella <strong>di</strong> routing, che viene aggiornata in seguito ad<br />

eventi significativi o ad intervalli regolari, viene formata ricostruendo<br />

la struttura topologia della rete e calcolando il cammino minimo<br />

rispetto a tutti gli altri. Un altro pacchetto tipico (oltre ad Echo),<br />

denominato “Hello” viene inviato all’avvio del router, in risposta al<br />

quale ogni router invia il proprio in<strong>di</strong>rizzo. La <strong>di</strong>stribuzione dei pacchetti<br />

nelle varie fasi avviene tramite il floo<strong>di</strong>ng. Questo algoritmo<br />

è molto usato in Internet col nome <strong>di</strong> OSPF (Open Shortest Path<br />

First).<br />

Il routing statico è preferito in situazioni periferiche <strong>di</strong> <strong>di</strong>mensioni ridotte,<br />

ovvero in con<strong>di</strong>zioni <strong>di</strong> gestione semplificata dell’intera rete. Al<br />

42


1.9 Instradamento dei pacchetti<br />

contrario, laddove sono possibili frequenti cambi <strong>di</strong> topologia, variazioni <strong>di</strong><br />

prestazioni in <strong>di</strong>pendenza del carico <strong>di</strong> lavoro dei router e dei link, dei guasti<br />

e dei percorsi, o <strong>di</strong> altre ragioni similari, è preferito l’utilizzo del routing<br />

<strong>di</strong>namico.<br />

Routing gerarchico<br />

Per semplificare il lavoro dei router nella raccolta dei dati e nella formulazione<br />

delle tabelle <strong>di</strong> routing si fa ricorso ad una struttura <strong>di</strong> tipo gerarchico.<br />

Per evitare l’acquisizione e il mantenimento dell’intera topologia, la<br />

rete viene <strong>di</strong>visa in zone (o regioni) per le quali valgono le seguenti proprietà:<br />

• I router presenti all’interno <strong>di</strong> una regione (router interni) hanno dati<br />

<strong>di</strong> routing relativi ad ogni altro router della regione.<br />

• I router <strong>di</strong> una regione che devono spe<strong>di</strong>re dati in un’altra regione<br />

sanno che devono passare attraverso un particolare router della propria<br />

regione (router <strong>di</strong> confine).<br />

• I router <strong>di</strong> confine che devono far arrivare dati in un’altra regione<br />

sanno a quale router dell’altra regione devono spe<strong>di</strong>re i dati.<br />

1.9.2 Internetworking<br />

La connessione <strong>di</strong> reti eterogenee, caratterizzate da architetture a volte<br />

completamente <strong>di</strong>fferenti, rappresenta un problema <strong>di</strong> non banale soluzione.<br />

A volte le <strong>di</strong>fferenze si collocano su molteplici livelli: i servizi offerti dai<br />

livelli sono <strong>di</strong>fformi, i formati dei pacchetti e <strong>degli</strong> in<strong>di</strong>rizzi sono <strong>di</strong>versi, la<br />

<strong>di</strong>mensione massima dei pacchetti è <strong>di</strong>fferente ed i <strong>meccanismi</strong> <strong>di</strong> controllo<br />

sono <strong>di</strong>scordanti. La risoluzione <strong>di</strong> questi problemi <strong>di</strong> tipo “comunicativo”<br />

avviene attraverso tecniche specifiche che si basano su particolari <strong>di</strong>spositivi:<br />

i bridge (ve<strong>di</strong> sezione 1.8) ed i router multiprotocollo.<br />

43


Router multiprotocollo<br />

Le reti: nozioni <strong>di</strong> base<br />

Sono dei router in grado <strong>di</strong> gestire contemporaneamente pile <strong>di</strong>verse <strong>di</strong><br />

protocolli. Tipiche implementazioni <strong>di</strong> questi <strong>di</strong>spositivi sono:<br />

• reti <strong>di</strong> router multiprotocollo, in cui ogni rete può comunicare con le<br />

altre ad essa conformi e con reti costituite da router multiprotocollo.<br />

Nell’esempio in figura 1.25 i pacchetti <strong>di</strong> tipo X possono viaggiare nelle<br />

reti X e nella rete multiprotocollo, <strong>di</strong>scorso analogo per i pacchetti del<br />

tipo Y .<br />

Figura 1.25: Reti <strong>di</strong> router multiprotocollo<br />

• tunneling, utilizzato per mettere in comunicazione reti uguali per mezzo<br />

<strong>di</strong> una rete <strong>di</strong>versa. Si noti in figura 1.26 uno schema dove i pacchetti<br />

<strong>di</strong> tipo X (appartenenti alla rete X) vengono incapsulati in pacchetti <strong>di</strong><br />

tipo Y (appartenenti alla rete Y ) per mezzo dei router multiprotocollo<br />

e quin<strong>di</strong> fatti viaggiare attraverso la rete Y .<br />

Figura 1.26: Tunneling<br />

44


1.9 Instradamento dei pacchetti<br />

Questo avviene aggiungendo ai pacchetti <strong>di</strong> tipo X, che hanno già un<br />

header X, un ulteriore header <strong>di</strong> tipo Y , in modo da ottenere una<br />

struttura del tipo:<br />

[HeaderX][Dati] → [HeaderY ][HeaderX][Dati] → [HeaderX][Dati]<br />

1.9.3 Internetwork routing<br />

Le singole reti collegate ad Internet sono generalmente entità autonome.<br />

Divise in gruppi, ciascuno controllato da un’unica autorità amministrativa,<br />

vengono chiamate AS (Autonomous System). Tutte queste entità sono connesse<br />

tra loro da dorsali (backbone) ad alta velocità. Ogni AS viene identificato<br />

da un numero univoco a livello internazionale rilasciato dall’Authorithy<br />

che rilascia gli “in<strong>di</strong>rizzi” Internet.<br />

Il routing in questo caso viene gestito a due livelli:<br />

1. Livello IGP (Interior Gateway Protocol), che identifica l’algoritmo <strong>di</strong><br />

routing utilizzato da ogni singolo AS al proprio interno (algoritmo che<br />

può essere <strong>di</strong>verso da rete a rete). Un IGP può essere gerarchico in caso<br />

<strong>di</strong> grosse <strong>di</strong>mensioni (e quin<strong>di</strong> <strong>di</strong>vidersi in ulteriori livelli <strong>di</strong> routing).<br />

2. Livello EGP (Exterior Gateway Protocol), che identifica l’algoritmo<br />

utilizzato per il routing fra <strong>di</strong>versi AS. Tipicamente questo algoritmo<br />

viene implementato dai router multiprotocollo.<br />

Ogni Autonomous System può essere visto come composizione <strong>di</strong> reti<br />

<strong>di</strong> calcolatori e dorsali <strong>di</strong> collegamento. Le funzioni dei router, le modalità<br />

<strong>di</strong> esecuzione e gli algoritmi utilizzati <strong>di</strong>pendono dunque dalla <strong>di</strong>slocazione<br />

logica. Tale <strong>di</strong>slocazione può avvenire internamente ad una rete (IGP), sul<br />

confine <strong>di</strong> una rete (IGP), nell’area della dorsale dell’AS (IGP), sul confine<br />

dell’AS (EGP). Ciascun Internet Service Provider è un AS che utilizza<br />

un protocollo EGP per far conoscere la presenza dei propri clienti, e delle<br />

relative reti, agli altri ISP. Quando una destinazione viene resa nota, tale<br />

destinazione può iniziare a ricevere dati dalla rete globale.<br />

1.9.4 Routing multicast<br />

Questo meccanismo <strong>di</strong> routing “speciale” consente <strong>di</strong> raggiungere molte<br />

destinazioni con un unico pacchetto inviato ad un in<strong>di</strong>rizzo <strong>di</strong> gruppo. In<br />

pratica, mentre il routing unicast permette l’invio <strong>di</strong> un pacchetto ad una<br />

sola destinazione (e quin<strong>di</strong> per raggiungere molte destinazioni bisogna creare<br />

da subito molte copie del pacchetto), il routing multicast permette l’invio <strong>di</strong><br />

un pacchetto ad un numero arbitrario <strong>di</strong> destinazioni seguendo un numero<br />

imprecisato <strong>di</strong> percorsi. Alcune situazioni tipiche nelle quali viene richiesto<br />

45


Le reti: nozioni <strong>di</strong> base<br />

l’instradamento multicast sono: il broadcast me<strong>di</strong>a (au<strong>di</strong>o/video), l’aggiornamento<br />

simultaneo <strong>di</strong> dati (come le quotazioni <strong>di</strong> borsa), le applicazioni<br />

con<strong>di</strong>vise (come le teleconferenze) ed i giochi in rete interattivi.<br />

La tecnica utilizzata permette l’invio dei pacchetti interessati ad un in<strong>di</strong>rizzo<br />

<strong>di</strong> gruppo (o in<strong>di</strong>rizzo multicast). L’elemento base del multicast<br />

è il concetto <strong>di</strong> “gruppo”, che nasce quando il primo elemento si aggrega<br />

(attraverso una registrazione) e termina quando tutti gli elementi si<br />

<strong>di</strong>ssociano.<br />

Il multicast in ambito LAN (senza l’attraversamento <strong>di</strong> un router) viene<br />

realizzato attraverso un in<strong>di</strong>rizzo multicast utilizzato in quel dominio <strong>di</strong><br />

broadcast. In generale, per “associare” unità appartenenti a reti <strong>di</strong>verse,<br />

poiché un normale router non è provvisto delle funzionalità necessarie, occorre<br />

utilizzare dei router con algoritmi specifici (detti Multicast router o<br />

Mrouter).<br />

L’algoritmo più semplice per realizzare il routing multicast viene denominato<br />

floo<strong>di</strong>ng e consiste nell’inoltro del pacchetto se questo è stato ricevuto<br />

per la prima volta. Questo algoritmo, seppur molto robusto, crea problemi<br />

<strong>di</strong> memoria in quanto ogni router deve ricordarsi tutti i pacchetti ricevuti<br />

per un certo lasso <strong>di</strong> tempo, onde evitare l’aumento in<strong>di</strong>scriminato <strong>di</strong><br />

traffico in rete. L’instradamento viene risolto in<strong>di</strong>viduando un albero <strong>di</strong><br />

<strong>di</strong>stribuzione (spanning tree) che comprenda tutti i no<strong>di</strong> interessati, gestendo<br />

in maniera opportuna le tabelle <strong>di</strong> routing generate per la normale<br />

<strong>di</strong>stribuzione unicast e cercando <strong>di</strong> evitare i problemi <strong>di</strong> loop dei pacchetti. I<br />

problemi legati al loop dei pacchetti sono risolti facendo in modo che ciascun<br />

nodo sia attraversato una sola volta. Le possibilità principali sono due:<br />

• Albero basato sul gruppo (group-shared tree), che prevede un unico<br />

spanning tree per tutti i no<strong>di</strong> del gruppo. L’albero viene costruito<br />

cercando percorsi <strong>di</strong> <strong>di</strong>stribuzione che rendano minimo il costo dei<br />

percorsi utilizzati in generale (non rispetto ad una specifica sorgente).<br />

• Albero basato sulla sorgente (source-based tree), che prevede uno spanning<br />

tree <strong>di</strong>verso per ciascuna sorgente. Poco utilizzato in ambiti non<br />

locali perché l’ottimizzazione ha bisogno <strong>di</strong> conoscere il costo <strong>di</strong> ogni<br />

collegamento e delle sue eventuali variazioni.<br />

Molti router utilizzano la tecnica <strong>di</strong> instradamento RPF (Reverse Path<br />

Forwar<strong>di</strong>ng) con la quale un pacchetto viene inoltrato a tutte le altre sorgenti,<br />

esclusa quella <strong>di</strong> provenienza, solo se arriva dal percorso ottimale. Questa<br />

strategia può essere ulteriormente migliorata con le tecniche <strong>di</strong> potatura<br />

(pruning) che permettono <strong>di</strong> escludere i no<strong>di</strong> “foglia” non interessati<br />

(già raggiunti in precedenza). In generale, l’unione delle due tecniche è<br />

conosciuta come “<strong>di</strong>ffon<strong>di</strong> e pota” (broadcast and prune).<br />

46


1.10 Trasporto dei pacchetti<br />

1.10 Trasporto dei pacchetti<br />

Ad un livello superiore all’instradamento dei dati si colloca la comunicazione<br />

<strong>di</strong>retta tra sorgente e destinazione volta a rilevare l’esito del trasferimento.<br />

Questa attività viene gestita dal livello quattro dello schema OSI,<br />

ovvero dal livello <strong>di</strong> trasporto (Transport).<br />

Le funzioni <strong>di</strong> questo livello hanno origine dall’esigenza dell’utente, che<br />

non ha alcun controllo sulla sottorete <strong>di</strong> comunicazione, <strong>di</strong> volere alcune<br />

garanzie sul servizio <strong>di</strong> trasmissione. Per questo il livello <strong>di</strong> trasporto è<br />

organizzato per offrire un servizio più affidabile ed efficace <strong>di</strong> quanto non sia<br />

in grado <strong>di</strong> fare la sottorete. Per questo motivo il software <strong>di</strong> tale livello (il<br />

cuore <strong>di</strong> tutta la gerarchia dei protocolli) si trova solo sugli host e non sui<br />

router.<br />

Altre funzioni <strong>di</strong> questo livello sono:<br />

• Isolare i livelli superiori dai dettagli implementativi della sottorete <strong>di</strong><br />

comunicazione<br />

• Specificare la qualità del servizio desiderata (QoS - Quality of Service).<br />

Ovvero il massimo ritardo per l’attivazione della connessione,<br />

il throughput richiesto, il tasso d’errore tollerato, il tipo <strong>di</strong> protezione<br />

richiesto, il massimo ritardo <strong>di</strong> transito ammesso.<br />

I protocolli <strong>di</strong> livello trasporto sono in stretta analogia con quelli del<br />

collegamento dati. Entrambi si occupano del controllo <strong>degli</strong> errori, del flusso<br />

e del rior<strong>di</strong>no dei dati del relativo livello, ma con l’importante <strong>di</strong>fferenza che<br />

il livello <strong>di</strong> trasporto deve gestire l’intera sottorete <strong>di</strong> comunicazione. Questo<br />

implica maggiori <strong>di</strong>fficoltà nello stabilire le connessioni maggiori capacità <strong>di</strong><br />

buffering, memorizzazione e controllo <strong>di</strong> flusso, in quanto sono coinvolte un<br />

numero variabile <strong>di</strong> connessioni.<br />

1.10.1 In<strong>di</strong>rizzamento<br />

Quando si desidera attivare una connessione bisogna specificare l’in<strong>di</strong>rizzo<br />

del livello trasporto del destinatario, detto TSAP (Transport Service<br />

Access Point), tipicamente della forma NSAP address (Network Service<br />

Access Point), ed un informazione supplementare. Per esempio in Internet<br />

un NSAP address rappresenta un in<strong>di</strong>rizzo IP, mentre un’informazione<br />

supplementare è il numero <strong>di</strong> porta <strong>di</strong> un determinato servizio.<br />

1.10.2 Attivazione e rilascio della connessione<br />

Il problema della connessione deve essere gestito con attenzione. In fase<br />

<strong>di</strong> attivazione della connessione la <strong>di</strong>fficoltà principale si pone quando pacchetti<br />

e duplicati arrivano a destinazione in ritardo. In questi casi il con-<br />

47


Le reti: nozioni <strong>di</strong> base<br />

trattempo viene risolto con un metodo detto three-way handshaking (triplice<br />

stretta <strong>di</strong> mano) ed implementato nel seguente modo:<br />

• Il mittente invia la richiesta <strong>di</strong> connessione, proponendo un numero x<br />

come inizio <strong>di</strong> sequenza.<br />

• Il destinatario risponde con un ack che conferma x e propone un altro<br />

numero y <strong>di</strong> inizio sequenza.<br />

• Il mittente invia i primi dati assieme ad un ack <strong>di</strong> conferma per y.<br />

Il rilascio <strong>di</strong> una connessione presenta meno problemi. In generale ci sono<br />

due tipi <strong>di</strong> <strong>meccanismi</strong>. Asimmetrico (la connessione si chiude se una delle<br />

due parti decide in tal senso), simmetrico (se le due parti devono entrambe<br />

rilasciare la connessione). Le due parti possono volersi accordare prima <strong>di</strong><br />

chiudere la connessione e quin<strong>di</strong> concordare il rilascio sulla base del modello<br />

three-way handshaking.<br />

1.10.3 Multiplexing<br />

Un’opportunità per migliorare le trasmissioni <strong>di</strong> questo livello viene fornita<br />

dal multiplexing. A seconda della natura del miglioramento richiesto si<br />

parla <strong>di</strong>:<br />

• Upward multiplexing, attraverso cui si possono convogliare più conversazioni<br />

<strong>di</strong> trasporto su un’unica connessione <strong>di</strong> rete (utile se le<br />

connessioni <strong>di</strong> rete sono costose).<br />

• Downward multiplexing, con cui una conversazione <strong>di</strong> trasporto può<br />

essere ripartita su più connessioni <strong>di</strong> rete (utile se se si vuole avere<br />

una banda superiore a quella data ad una sola connessione <strong>di</strong> rete).<br />

48


1.11 Internet Protocol Suite<br />

1.11 Internet Protocol Suite<br />

Internet è il nome con cui si designa comunemente la più grande rete <strong>di</strong><br />

calcolatori esistente al mondo, nella quale i computer sono collegati (<strong>di</strong>rettamente<br />

o in<strong>di</strong>rettamente) attraverso vari tipi <strong>di</strong> canali trasmissivi. Il linguaggio<br />

utilizzato nella comunicazione viene detto Internet Protocol Suite,<br />

meglio conosciuto con l’acronimo TCP/IP (si parla anche <strong>di</strong> architettura<br />

TCP/IP, ovvero TCP/IP reference model). Si può pertanto definire Internet<br />

come la rete <strong>di</strong> tutti i calcolatori sparsi per il mondo che comunicano<br />

attraverso il linguaggio TCP/IP.<br />

La rete Internet è il frutto <strong>di</strong> una serie continua <strong>di</strong> evoluzioni che ha ra<strong>di</strong>calmente<br />

mo<strong>di</strong>ficato l’originaria architettura della rete Arpanet. Il progetto<br />

Arpanet, sviluppato nei primi anni ‘60 dal DDS, Dipartimento della Difesa<br />

<strong>degli</strong> Stati Uniti, nasceva con scopi militari. In seguito il piano fu preso in<br />

gestione dal mondo accademico americano il cui obiettivo, una volta capite le<br />

potenzialità delle reti <strong>di</strong> calcolatori, era quello <strong>di</strong> favorire la comunicazione,<br />

la collaborazione e la con<strong>di</strong>visione <strong>di</strong> dati, programmi e risorse in genere fra<br />

università ed enti <strong>di</strong> ricerca. Per questa ragione uno <strong>degli</strong> scopi perseguiti è<br />

sempre stato quello <strong>di</strong> integrare via via <strong>di</strong>versi tipi <strong>di</strong> reti favorendo l’inter-<br />

connessione tra reti anche molto <strong>di</strong>verse fra loro.<br />

È solo dagli inizi <strong>degli</strong> anni<br />

‘90 che Internet è stato reso accessibile a tutta la popolazione mon<strong>di</strong>ale, ed<br />

in particolare, ad enti non universitari o governativi (associazioni, aziende,<br />

provider).<br />

L’architettura nel suo complesso include una serie <strong>di</strong> protocolli specificati<br />

attraverso i documenti RFC (Request For Comments). La funzione <strong>di</strong> questi<br />

protocolli è <strong>di</strong> far viaggiare i datagram attraverso un insieme interconnesso<br />

<strong>di</strong> reti, passando da un modulo Internet ad un altro, fino a raggiungere la<br />

destinazione finale.<br />

In questa immensa rete i <strong>di</strong>aloghi avvengono normalmente tra coppie <strong>di</strong><br />

computer (struttura Client/Server). Sebbene un calcolatore possa <strong>di</strong>alogare<br />

contemporaneamente con un numero elevato <strong>di</strong> computer, ciascun messaggio<br />

ha uno e un solo destinatario alla volta. Tale <strong>di</strong>alogo è piuttosto complesso<br />

e può avvenire a vari livelli. Un livello “basso” che consiste nello scambio<br />

<strong>di</strong> informazioni binarie (spe<strong>di</strong>zione <strong>di</strong> bit lungo i canali della rete) ed un<br />

livello “alto” relativo allo scambio <strong>di</strong> oggetti informatici (ipertesti, immagini,<br />

programmi, messaggi).<br />

Con il termine Intranet si intende una rete aziendale che comunica attraverso<br />

il protocollo TCP/IP, costituita da una serie <strong>di</strong> client e server (information<br />

server) che permettono lo scambio <strong>di</strong> informazioni solo all’interno<br />

della rete. Un ulteriore tipo <strong>di</strong> rete denominato Extranet identifica una rete<br />

Intranet alla quale possono accedere anche utenti che non fanno parte della<br />

rete aziendale. Generalmente ne viene limitato il numero ed il tipo <strong>di</strong> servizi<br />

per salvaguardare la sicurezza della rete stessa.<br />

49


Le reti: nozioni <strong>di</strong> base<br />

Internet è una rete a commutazione <strong>di</strong> pacchetto. I motivi fondamentali<br />

<strong>di</strong> questa scelta sono i seguenti:<br />

1. Avere la possibilità <strong>di</strong> trasmissioni <strong>di</strong> dati simultanee fra varie sequenze,<br />

appartenenti ad utenti o applicazioni <strong>di</strong>verse, utilizzando tecniche<br />

<strong>di</strong> multiplexing.<br />

2. Avere la possibilità <strong>di</strong> scegliere in maniera più efficiente il percorso<br />

migliore ed evitare la congestione della rete o le sue parti.<br />

3. Controllare più efficacemente gli errori <strong>di</strong> trasmissione.<br />

4. Poter implementare il Priority Tasking, ovvero assegnare priorità <strong>di</strong>fferenziate<br />

ai dati trasmessi.<br />

1.11.1 L’architettura TCP/IP<br />

L’architettura TCP/IP (Transfer Control Protocol/Internet Protocol)<br />

è concettualmente composta da 4 livelli <strong>di</strong> servizio in stretta relazione con i<br />

livelli del modello OSI. La relazione che li lega viene rappresentata in figura<br />

1.27:<br />

Figura 1.27: Mappatura livelli TCP/IP - OSI<br />

Il livello “Host to Network” non viene esplicitamente specificato nel documento<br />

ufficiale RFC che definisce l’architettura, in quanto prevede l’utilizzo<br />

<strong>di</strong> protocolli già <strong>di</strong>sponibili per le varie piattaforme hardware. Questo livello<br />

riguarda la capacità <strong>degli</strong> host <strong>di</strong> inviare pacchetti sulla rete.<br />

Il livello “Internet” permette all’host <strong>di</strong> inviare pacchetti in rete e <strong>di</strong> farli<br />

viaggiare in maniera in<strong>di</strong>pendente gli uni dagli altri, fino alla destinazione<br />

finale (il servizio viene comunemente chiamato best-effort datagram). Il protocollo<br />

principale utilizzato si chiama IP (Internet Protocol). Alcune funzioni<br />

connesse al suo ruolo sono la definizione del formato dei dati inviati<br />

sulla rete, la definizione della poltica <strong>di</strong> routing ed una serie <strong>di</strong> controlli sui<br />

pacchetti che convogliano le informazioni. Questo protocollo è senza connessione<br />

e senza riscontro risultando dunque inaffidabile.<br />

50


1.11 Internet Protocol Suite<br />

Il livello “Trasporto” fornisce una spe<strong>di</strong>zione sicura dell’informazione e<br />

viene progettato per consentire la conversazione delle peer entity sugli host<br />

in comunicazione. I protocolli <strong>di</strong> questo livello sono: TCP (Transmission<br />

Control Protocol), connesso ed affidabile, e UDP (User Datagram Protocol),<br />

non connesso e non affidabile. In particolare il TCP, oltre ad assicurare un<br />

trasporto sicuro e la correttezza dei dati spe<strong>di</strong>ti e ricevuti si preoccupa anche<br />

<strong>di</strong> controllare il flusso delle informazioni in rete e <strong>di</strong> sud<strong>di</strong>videre in pacchetti<br />

i dati provenienti dalle applicazioni.<br />

Il livello “Applicazione” contiene tutti i protocolli <strong>di</strong> “alto” livello utilizzati<br />

nei programmi applicativi.<br />

I principali protocolli sono:<br />

• Telnet, terminale virtuale.<br />

• FTP (File Transfer Protocol), per il trasferimento dei file.<br />

• SMTP (Simple Mail Transfer Protocol) e POP (Post Office Protocol),<br />

per la posta elettronica.<br />

In seguito con lo sviluppo sempre maggiore della rete Internet, si sono resi<br />

necessari ulteriori protocolli per migliorare e rendere efficiente la comunicazione.<br />

• DNS (Domain Name Service), per la mappatura tra i nomi <strong>degli</strong> host<br />

e gli in<strong>di</strong>rizzi IP numerici.<br />

• NNTP (Network News Transfer Protocol), per il trasferimento <strong>di</strong><br />

articoli dei newsgroups.<br />

• HTTP (Hypertext Transfer Protocol), per il trasferimento delle pagine<br />

Web.<br />

Un aspetto fondamentale <strong>di</strong> questo tipo <strong>di</strong> architettura sta nel fatto<br />

che, rifacendosi molto alla filosofia <strong>di</strong> Internet, le tre classi <strong>di</strong> servizio sono<br />

realizzate separatamente e quin<strong>di</strong> ciascun protocollo software può essere<br />

sostituito senza per questo mo<strong>di</strong>ficare gli altri servizi o protocolli.<br />

51


Le reti: nozioni <strong>di</strong> base<br />

La struttura dei dati nei vari livelli viene <strong>di</strong>visa e incapsulata come in<br />

figura 1.28, tenendo conto che le informazioni dei livelli inferiori vengono<br />

strutturate secondo la rete che <strong>di</strong> fatto effettua il trasporto.<br />

Figura 1.28: Incapsulamento dati TCP/IP<br />

Rispetto al modello OSI, l’architettura TCP/IP presenta molteplici <strong>di</strong>fferenze:<br />

i livelli “Sessione”, “Presentazione” e “Applicazione” sono con<strong>di</strong>visi,<br />

alcune problematiche <strong>di</strong> gestione delle comunicazioni sono risolte in<br />

maniera <strong>di</strong>versa (più efficiente) e sono affrontate alcune questioni (internetworking)<br />

che non erano tenute in considerazione dall’OSI. Inoltre l’architettura<br />

TCP/IP viene realizzata in modo tale che non c’è, <strong>di</strong> fatto, una chiara<br />

<strong>di</strong>stinzione delle funzioni fra protocolli, servizi e interfacce. Questo la porta<br />

a non avere alcuna utilità come reference model.<br />

Protocolli del livello <strong>di</strong> Rete<br />

1.11.2 Protocollo IP (Internet Protocol)<br />

Internet è composta da una serie <strong>di</strong> AS (Autonomous System) connessi<br />

tra <strong>di</strong> loro. La struttura complessiva si può facilmente schematizzare<br />

in<strong>di</strong>viduando alcuni componenti principali:<br />

• le reti regionali statunitensi;<br />

• le reti nazionali nel resto del mondo;<br />

• le reti locali;<br />

• backbone <strong>di</strong> collegamento;<br />

52


1.11 Internet Protocol Suite<br />

Con il termine backbone (Fig.1.29) si identificano le linee <strong>di</strong> connessione<br />

ad alta velocità <strong>di</strong>slocate in tutto il mondo. Tutte queste entità sono in<br />

collegamento attraverso il protocollo del livello <strong>di</strong> rete IP (Internet Protocol)<br />

[28].<br />

Figura 1.29: Struttura Internet<br />

Il protocollo IP è <strong>di</strong> tipo datagram, quin<strong>di</strong> non connesso e non affidabile.<br />

Pertanto esso tratta ogni pacchetto come entità in<strong>di</strong>pendente, non correlata<br />

ad alcun altro pacchetto.<br />

Oggi si utilizza la versione 4 del protocollo IP, comunemente in<strong>di</strong>cata con<br />

IPv4, ma si sta <strong>di</strong>ffondendo velocemente la nuova release denominata IPv6<br />

caratterizzata da importanti migliorie e arricchita <strong>di</strong> nuove funzionalità.<br />

Questo protocollo implementa due funzioni <strong>di</strong> base: l’in<strong>di</strong>rizzamento (inteso<br />

come trasmissione) e la frammentazione dei frame. Il suo schema <strong>di</strong><br />

funzionamento può essere così rappresentato:<br />

• Il protocollo riceve i dati dal livello <strong>di</strong> “Trasporto” e li incapsula in<br />

pacchetti <strong>di</strong> lunghezza massima <strong>di</strong> 64 Kb (<strong>di</strong> norma la lunghezza è<br />

1500 byte).<br />

• Successivamente instrada i pacchetti lungo la subnet, e se necessario<br />

effettua una ulteriore frammentazione.<br />

• In fase <strong>di</strong> ricezione riassembla i frammenti in pacchetti ed estrae i dati<br />

per il livello “Trasporto” consegnandoli nell’or<strong>di</strong>ne in cui sono arrivati.<br />

53


Le reti: nozioni <strong>di</strong> base<br />

L’header <strong>di</strong> un pacchetto IPv4, ovvero il formato del datagram, è costituito<br />

da 20 byte fissi e da una parte opzionale <strong>di</strong> lunghezza variabile come<br />

rappresentato in figura 1.30 :<br />

Figura 1.30: Struttura frame IPv4<br />

I datagram, inoltre, possono avere un ulteriore vincolo. I frame accessibili<br />

in una rete possono richiedere <strong>di</strong>mensioni limitate superiormente<br />

o inferiormente. In tal caso si procede all’incapsulamento del datagram,<br />

se ha lunghezza inferiore del massimo frame consentito (Fig.1.31) oppure<br />

alla frammentazione del datagram, se ha lunghezza maggiore del frame<br />

(Fig.1.32). Da notare che in caso <strong>di</strong> per<strong>di</strong>ta <strong>di</strong> un frammento deve essere<br />

rispe<strong>di</strong>to tutto il datagram. Ogni tipologia <strong>di</strong> rete ha una propria lunghezza<br />

massima <strong>di</strong> dati trasportabili da un frame. Tale quantità viene denominata<br />

MTU (Maximum Transmission Unit).<br />

Figura 1.31: Incapsulamento datagram IP<br />

54


1.11 Internet Protocol Suite<br />

Figura 1.32: Frammentazione datagram IP<br />

I campi del formato datagram hanno le seguenti funzioni:<br />

VERS , in<strong>di</strong>ca la versione del protocollo IP.<br />

HLEN , in<strong>di</strong>ca la lunghezza dell’header del datagram IP (numero <strong>di</strong> parole<br />

da 32 bit).<br />

Service Type , specifica come un protocollo <strong>di</strong> livello inferiore deve trattare<br />

il pacchetto in riferimento al routing (priorità, ritardo, affidabilità).<br />

Total length , in<strong>di</strong>ca la lunghezza del datagram o del frammento.<br />

Identification , serve ad in<strong>di</strong>viduare a quale datagram appartiene il frammento<br />

che giunge a destinazione.<br />

Flags , fornisce informazioni sui frammenti del datagram (per esempio se è<br />

possibile o meno la frammentazione).<br />

Fragment Offset , in<strong>di</strong>ca la posizione del frammento nel datagram originale.<br />

Time to live , in<strong>di</strong>ca il tempo in secon<strong>di</strong> (a partire da 255 fino a 0) che il<br />

datagram può rimanere nella rete Internet prima <strong>di</strong> essere scartato.<br />

Protocol , specifica il protocollo <strong>di</strong> livello superiore utilizzato per il campo<br />

dati del datagram.<br />

55


Le reti: nozioni <strong>di</strong> base<br />

Header Checksum , controlla se l’header del datagram contiene errori,<br />

nel qual caso il datagram viene scartato.<br />

Source IP address , contiene l’in<strong>di</strong>rizzo IP dell’unità che ha generato il<br />

datagram.<br />

Destination IP address , contiene l’in<strong>di</strong>rizzo IP del destinatario.<br />

Option , <strong>di</strong> lunghezza variabile, fornisce opzioni sulla sicurezza e sul routing<br />

(sui router attraversati e/o da attraversare e sul grado <strong>di</strong> segretezza<br />

del pacchetto).<br />

Pad<strong>di</strong>ng , <strong>di</strong> lunghezza variabile, serve a rendere l’header un multiplo <strong>di</strong><br />

32 bit.<br />

1.11.3 In<strong>di</strong>rizzi IP<br />

Ogni computer connesso ad Internet ha un in<strong>di</strong>rizzo, detto “in<strong>di</strong>rizzo<br />

IP”, che lo identifica in modo univoco. Questo in<strong>di</strong>rizzo è composto da 32<br />

bit, ovvero 4 byte (per cui gli in<strong>di</strong>rizzi possibili sono 232), ma generalmente<br />

viene espresso attraverso i 4 numeri decimali equivalenti, ciascuno dei quali<br />

con valore da 0 a 255 separati da punti (dotted decimal notation) come negli<br />

esempi seguenti:<br />

10000001 00110100 00000111 00000000 =⇒ 129.52.7.0<br />

10000010 10000010 11111111 00010000 =⇒ 130.130.255.16<br />

I 32 bit che formano un in<strong>di</strong>rizzo IP possono essere <strong>di</strong>visi in due campi:<br />

• l’in<strong>di</strong>rizzo <strong>di</strong> rete (netid), che identifica la rete su cui si trova il computer<br />

e che costituisce numericamente una sorta <strong>di</strong> prefisso.<br />

• l’in<strong>di</strong>rizzo del computer (hostid), che identifica il computer all’interno<br />

della rete e che costituisce numericamente una sorta <strong>di</strong> suffisso.<br />

Gli in<strong>di</strong>rizzi IP vengono sud<strong>di</strong>visi in 5 classi (Tab.1.5) denominate A, B,<br />

C, D, E. Tale sud<strong>di</strong>visione viene effettuata in base al numero massimo <strong>di</strong><br />

reti e host in<strong>di</strong>rizzabili da ogni classe.<br />

56


1.11 Internet Protocol Suite<br />

Classe Nr. bit Netid Nr. bit Hostid Nr. max reti Nr. max host rete<br />

A 7 24 128 16777216<br />

B 14 16 16384 65536<br />

C 21 8 2097152 256<br />

D riservata ad applicazioni multicast<br />

E riservata ad applicazioni future<br />

Tabella 1.5: Classi <strong>di</strong> in<strong>di</strong>rizzi IP<br />

Alcune convenzioni prevedono che:<br />

• Per identificare una rete si pongono tutti i bit dell’hostid uguali a zero.<br />

• Per identificare un host sulla stessa rete si pongono i bit del netid<br />

uguali a zero.<br />

• Il broadcast sulla stessa rete <strong>di</strong> invio si ottiene ponendo tutti i bit<br />

uguali ad uno.<br />

• Il broadcast su una rete <strong>di</strong>versa si ottiene ponendo tutti i bit dell’hostid<br />

uguali ad uno.<br />

Gli in<strong>di</strong>rizzi <strong>di</strong> ogni classe si compongono come riportato in figura 1.33:<br />

Figura 1.33: Composizione in<strong>di</strong>rizzi IP<br />

Gli in<strong>di</strong>rizzi <strong>di</strong>sponibili <strong>di</strong>minuiscono ogni giorno sensibilmente vista la<br />

crescita inarrestabile delle reti informatiche. Per evitare questo spreco, dato<br />

anche dal fatto che la rete più piccola (classe C) <strong>di</strong>spone <strong>di</strong> 256 in<strong>di</strong>rizzi, si<br />

ricorre alla tecnica del subnet addressing o subnetting, obbligatoria in ogni<br />

implementazione del protocollo.<br />

Questa tecnica, rappresentata in figure 1.34, prevede che il router R<br />

utilizzi lo stesso in<strong>di</strong>rizzo 201.45.0.0 per le due reti fisiche ad esso collegate.<br />

57


Figura 1.34: Subnet addressing<br />

Le reti: nozioni <strong>di</strong> base<br />

In questo modo tutti i router <strong>di</strong> Internet vedranno le due reti fisiche<br />

201.45.1.0 e 201.45.2.0 come un’unica rete. Quando un pacchetto viene<br />

inviato su una delle due reti, il router R provvederà ad in<strong>di</strong>viduare qual è<br />

la rete fisica <strong>di</strong> destinazione. In pratica la sud<strong>di</strong>visione della rete 201.45.0.0<br />

è un fatto “privato” e non ha bisogno <strong>di</strong> essere comunicato all’esterno.<br />

Nel caso <strong>di</strong> subnetting, il campo hostid dell’in<strong>di</strong>rizzo IP viene reinterpretato<br />

in maniera <strong>di</strong>versa. Esso viene sud<strong>di</strong>viso in due parti: subnet e hostid,<br />

che identificano, nell’or<strong>di</strong>ne, sottorete e unità della sottorete.<br />

L’ampiezza dei campi subnet e hostid può essere definita in maniera<br />

flessibile attraverso un parametro detto subnet mask, unico per la rete, composto<br />

da tutti bit <strong>di</strong> valore 1 in corrispondenza dei campi <strong>di</strong> netid e subnet e<br />

tutti i bit a 0 in corrispondenza del campo hostid. Si può ottenere facilmente<br />

l’in<strong>di</strong>rizzo della subnet eseguendo l’AND logico fra le sequenze dell’in<strong>di</strong>rizzo<br />

IP e della subnet mask.<br />

1.11.4 Routing IP<br />

L’instradamento dei pacchetti avviene in maniera <strong>di</strong>retta, da una macchina<br />

<strong>di</strong>rettamente ad un’altra su una stessa rete fisica, oppure in<strong>di</strong>retta, se le<br />

macchine comunicanti non si trovano sulla stessa rete fisica. In quest’ultimo<br />

caso il mittente deve in<strong>di</strong>viduare il router cui consegnare il datagram, il<br />

quale in<strong>di</strong>viduerà il prossimo router in <strong>di</strong>rezione della destinazione finale.<br />

L’instradamento del traffico si basa sulle tabelle <strong>di</strong> routing (routing table)<br />

nelle quali vengono memorizzate informazioni per raggiungere qualsiasi<br />

destinazione grazie al fatto che tutti i calcolatori della stessa rete fisica hanno<br />

lo stesso netid. Tipicamente una tabella <strong>di</strong> routing è costituita da una<br />

sequenza <strong>di</strong> coppie (in<strong>di</strong>rizzo IP destinazione, prossimo router) per cui anche<br />

se i datagram possono viaggiare su più percorsi, nella realtà statisticamente<br />

effettuano lo stesso percorso. Ovviamente il traffico nel senso opposto, con<br />

58


1.11 Internet Protocol Suite<br />

il mittente che <strong>di</strong>viene destinatario, può seguire un percorso completamente<br />

<strong>di</strong>verso.<br />

1.11.5 Altri protocolli del livello <strong>di</strong> Rete<br />

Oltre al protocollo IP, nel livello <strong>di</strong> rete, sono presenti una serie <strong>di</strong> protocolli<br />

che permettono <strong>di</strong> svolgere alcune importanti funzioni legate al routing.<br />

Tali protocolli sono qui raggruppati per tipologia <strong>di</strong> funzione svolta.<br />

Protocolli EGP (Exterior Gateway Protocol)<br />

Internet può utilizzare <strong>di</strong>versi tipi <strong>di</strong> protocolli EGP per far comunicare<br />

fra loro gli AS. In questa classe rientrano:<br />

• EGP, il primo protocollo utilizzato in maniera massiccia su Internet.<br />

Opera in modo sod<strong>di</strong>sfacente su reti ad albero ma non su reti a maglia,<br />

per cui gli AS devono essere collegati in maniera stellare. Le tabelle<br />

<strong>di</strong> routing sono aggiornate attraverso appositi pacchetti <strong>di</strong> routing che<br />

contengono informazioni sulla raggiungibilità dei no<strong>di</strong> della rete.<br />

• BGP (Border Gateway Protocol), protocollo che dovrebbe sostituire<br />

EGP eliminando i suoi <strong>di</strong>fetti. Questo protocollo utilizza un algoritmo<br />

<strong>di</strong> routing denominato <strong>di</strong>stance vector, basato sul numero <strong>di</strong> hop<br />

(salti).<br />

Protocolli IGP (Interior Gateway Protocol)<br />

I protocolli IGP servono a facilitare lo scambio <strong>di</strong> traffico tra i router che<br />

operano all’interno <strong>degli</strong> AS. I principali algoritmi IGP sono:<br />

• RIP (Routing Information Protocol), protocollo originario <strong>di</strong> questa<br />

classe, noto anche come routed, è <strong>di</strong> tipo <strong>di</strong>stance vector e sud<strong>di</strong>vide<br />

le macchine in attive e passive (tra chi invia informazioni <strong>di</strong> routing<br />

e chi le riceve), che in genere corrispondono ai routers (attivi) e agli<br />

host (passivi).<br />

• OSPF (Open Shortest Path First), algoritmo sviluppato per superare<br />

i <strong>di</strong>fetti del RIP. In questo protocollo le specifiche sono pubbliche, e<br />

quin<strong>di</strong> gratuite. Prevede un routing variabile a seconda del tipo <strong>di</strong><br />

servizio. È <strong>di</strong> tipo link state.<br />

Protocolli ARP e RARP<br />

I protocolli ARP (Address Resolution Protocol) [19] e RARP (Reverse<br />

Address Resolution Protocol) [40] permettono <strong>di</strong> rilevare in modo automatico<br />

la corrispondenza fra gli in<strong>di</strong>rizzi IP e gli in<strong>di</strong>rizzi fisici e viceversa. Questi<br />

59


Le reti: nozioni <strong>di</strong> base<br />

protocolli, che non si appoggiano sul protocollo IP, ma <strong>di</strong>rettamente sul<br />

livello “Data link”, vengono utilizzati quando:<br />

• Un’unità vuole inviare un messaggio ad un nodo <strong>di</strong> cui conosce l’in<strong>di</strong>rizzo<br />

IP ma non quello fisico. Ciò risulta necessario per inviare il frame<br />

che incapsula il pacchetto del livello IP (utilizzando il protocollo ARP).<br />

• Un’unità conosce l’in<strong>di</strong>rizzo fisico (ad esempio il proprio) e vuole conoscere<br />

l’in<strong>di</strong>rizzo IP (utilizzando il protocollo RARP).<br />

Protocollo ICMP (Internet Control Message Protocol)<br />

Il protocollo ICMP permette ad un router l’invio <strong>di</strong> messaggi <strong>di</strong> errore<br />

o <strong>di</strong> controllo ad altri router e host. Oltre a fornire un metodo <strong>di</strong> comunicazione<br />

fra i protocolli IP <strong>di</strong> due macchine, viene considerato parte fondamentale<br />

per l’implementazione del protocollo IP. Ogni messaggio ICMP<br />

viene inserito nella parte dati del datagram IP, successivamente trasportato<br />

da un frame. Alcuni tipici messaggi ICMP sono:<br />

• Echo request ed echo reply. Una macchina invia un echo request ad<br />

un’altra macchina che risponde con un echo reply per confermare la sua<br />

raggiungibilità. L’utilizzo più <strong>di</strong>ffuso è legato all’applicazione ping.<br />

• Destination unreachable, per avvertire il mittente <strong>di</strong> un pacchetto che<br />

la destinazione non è raggiungibile.<br />

• Re<strong>di</strong>rect, utilizzato tra router e host della stessa rete per ottimizzare<br />

l’instradamento dei messaggi.<br />

• Time exceed, inviato al mittente <strong>di</strong> un datagram quando questo viene<br />

scartato poiché il suo TTL (Time to Live) è scaduto.<br />

Protocollo IPv6 (Internet Protocol version 6.0)<br />

L’enorme crescita che Internet ha fatto registrare fin dai primi anni ’90<br />

ha posto da subito il problema <strong>di</strong> superare le limitazioni dell’IPv4. Attualmente<br />

si tratta ancora del protocollo maggiormente utilizzato considerando<br />

che gli in<strong>di</strong>rizzi IP raggiungeranno molto presto uno stato <strong>di</strong> saturazione previsto<br />

tra il 2007 ed il 2010. Il nuovo protocollo IPv6 [47] è stato elaborato<br />

allo scopo <strong>di</strong> migliorare le procedure <strong>di</strong> instradamento (efficacia, efficienza,<br />

sicurezza) e per cercare <strong>di</strong> risolvere il problema <strong>degli</strong> in<strong>di</strong>rizzi per un certo<br />

numero <strong>di</strong> anni. Le principali <strong>di</strong>fferenze rispetto a IPv4 sono:<br />

• In<strong>di</strong>rizzi con lunghezza <strong>di</strong> 128 bit. L’aumento avviene in base ad un fattore<br />

<strong>di</strong> crescita pari a 2 96 , che implica la <strong>di</strong>sponibilità <strong>di</strong> 1500 in<strong>di</strong>rizzi<br />

per metro quadro terrestre<br />

60


1.11 Internet Protocol Suite<br />

• Header semplificato, passando da 13 a 7 campi.<br />

• Funzioni <strong>di</strong> autocertificazione (convalida dell’origine dei dati) e privacy<br />

(segretezza del contenuto ad estranei) basate su meto<strong>di</strong> crittografici.<br />

• Gestione della qualità del servizio (QoS) attraverso un campo negoziato<br />

in anticipo. Questo permette una migliore gestione delle applicazioni<br />

multime<strong>di</strong>ali ed in tempo reale (videoconferenza, au<strong>di</strong>o conferenza)<br />

che, avendo una priorità più elevata, anche in caso <strong>di</strong> cattiva<br />

qualità della rete giungono a destinazione.<br />

Il passaggio da IPv4 a IPv6, seppur necessario e con<strong>di</strong>viso dall’intera<br />

comunità mon<strong>di</strong>ale, non sarà imme<strong>di</strong>ato, ma avverrà attraverso un lungo<br />

periodo <strong>di</strong> coesistenza dei due protocolli.<br />

Protocollo IGMP (Internet Group Management Protocol)<br />

Il protocollo IGMP viene utilizzato dai Multicast router per la gestione<br />

dei gruppi multicast <strong>di</strong> host sulle LAN. Per conoscere quali host sono interessati<br />

alla ricezione <strong>di</strong> un determinato flusso, gli Mrouter inviano perio<strong>di</strong>camente<br />

un pacchetto (query) a cui ogni host interessato risponde in broadcast<br />

con l’elenco dei gruppi a cui ha aderito o vuole aderire. Ogni host risponde<br />

generando dei report, uno per ciascun host group (insieme <strong>di</strong> hosts interessati<br />

a ricevere un determinato flusso <strong>di</strong> informazioni) cui sono iscritti. Ogni<br />

report viene segnalato all’Mrouter il quale, una volta accertata l’adesione <strong>di</strong><br />

un nodo ad un gruppo, invia un messaggio <strong>di</strong> join verso il nodo <strong>di</strong> centro.<br />

In tal modo si crea un percorso ad albero fino a raggiungere il centro del<br />

multicast, o un router, che fa già parte del gruppo.<br />

Questo protocollo, oggi <strong>di</strong>ffuso nella release v.2, è parte integrante del<br />

protocollo IP, in quanto i messaggi IGMP sono incapsulati nei datagram<br />

IP. La fornitura del servizio multicasting su Internet avviene attraverso una<br />

rete virtuale chiamata Multicast backbone (Mbone) che interconnette tutti i<br />

router multicast.<br />

Ulteriori protocolli legati alla fornitura del servizio multicast sono quelli<br />

relativi al routing ed utilizzati all’interno della rete Mbone. Tra i protocolli<br />

IGP multicast vi sono: DVMRP (Distance Vector Multicast Routing<br />

Protocol), PIM-DM (Protocol In<strong>di</strong>pendent Multicast Dense Mode), MOSPF<br />

(Multicast OSPF ), CBT (Core Based Tree). Tra i protocolli EGP multicast<br />

figurano: MBGP (Multiprocol Extension for BGP4 ), MSDP (Multicast<br />

Source Discovery Protocol).<br />

61


Protocolli del livello <strong>di</strong> Trasporto<br />

Le reti: nozioni <strong>di</strong> base<br />

1.11.6 Protocollo TCP (Transmissio Control Protocol)<br />

Il protocollo TCP si occupa <strong>di</strong> fornire un flusso <strong>di</strong> dati affidabile per<br />

le applicazioni, da sorgente a destinazione, su una rete non affidabile. Il<br />

protocollo IP si occupa della comunicazione fra i vari hosts e gli in<strong>di</strong>rizzi<br />

<strong>di</strong> sorgente e destinazione del messaggio da inviare sono identificativi <strong>di</strong><br />

macchine. Il protocollo TCP, occupandosi della comunicazione fra applicazioni,<br />

ha bisogno <strong>di</strong> un’estensione del meccanismo <strong>di</strong> in<strong>di</strong>rizzamento per<br />

identificare tali software.<br />

Il servizio che offre, <strong>di</strong> tipo affidabile e connesso, implementa le seguenti<br />

funzionalità:<br />

• Fase <strong>di</strong> trasmissione:<br />

– riceve i dati dal livello Applicazione e li <strong>di</strong>vide in segmenti (con<br />

<strong>di</strong>mensione massima <strong>di</strong> 64 Kb, generalmente circa 1500 byte);<br />

– consegna i segmenti al livello <strong>di</strong> Rete (da cui vengono incapsulati<br />

nei datagram IP);<br />

• Fase <strong>di</strong> ricezione:<br />

– riceve i segmenti dal livello <strong>di</strong> Rete e li rimette in or<strong>di</strong>ne, eliminando<br />

spazi vuoti e doppioni;<br />

– invia un acknowledgment positivo;<br />

– consegna i dati rior<strong>di</strong>nati al livello “Applicazione”;<br />

• Fase <strong>di</strong> ritrasmissione:<br />

– se la fase <strong>di</strong> trasmissione non riceve un ack positivo entro un certo<br />

tempo (il ritardo consentito <strong>di</strong>pende dalla <strong>di</strong>stanza e dal traffico<br />

della rete), provvede ad inviare <strong>di</strong> nuovo i dati;<br />

Inoltre implementa un meccanismo full-duplex con servizio <strong>di</strong> acknowledgment<br />

e controllo <strong>di</strong> flusso. In pratica il protocollo TCP residente su<br />

un computer utilizza il protocollo IP per comunicare con il protocollo TCP<br />

dell’altro computer.<br />

I servizi <strong>di</strong> questo protocollo funzionano attraverso la creazione <strong>di</strong> una<br />

“connessione” a livello <strong>di</strong> “Trasporto”, che costituisce la fondamentale astrazione<br />

del funzionamento TCP tra una coppia <strong>di</strong> punti detti endpoints.<br />

Ciascun endpoint ha una porta logica chiamata socket, rappresentata da<br />

una coppia <strong>di</strong> numeri univoca (socket number). Tale coppia costituisce il<br />

punto d’accesso del servizio (ovvero il TSAP).<br />

62


1.11 Internet Protocol Suite<br />

La coppia numerica che identifica tale punto <strong>di</strong> accesso è composta da:<br />

(In<strong>di</strong>rizzo IP, numero <strong>di</strong> porta)<br />

La “connessione” è la chiave fondamentale su cui si basa l’organizzazione<br />

del lavoro del protocollo TCP, in<strong>di</strong>pendentemente dal numero <strong>di</strong> porta. La<br />

conseguenza <strong>di</strong> questa affermazione è che un numero <strong>di</strong> porta TCP su una<br />

macchina può essere con<strong>di</strong>viso da più connessioni. In tal modo si possono<br />

creare servizi concorrenti con connessioni multiple in simultanea, senza dover<br />

riservare una porta locale ad ogni connessione. Per esempio alcuni sistemi<br />

forniscono la possibilità <strong>di</strong> accedere al loro servizio <strong>di</strong> posta elettronica permettendo<br />

a molteplici utenti, anche contemporaneamente, <strong>di</strong> spe<strong>di</strong>re i loro<br />

messaggi e-mail.<br />

I numeri <strong>di</strong> porta sono numeri prefissati <strong>di</strong> 16 bit (in range decimale da 0 a<br />

65535) che identificano i vari tipi <strong>di</strong> servizio. In particolare i numeri minori<br />

<strong>di</strong> 1024, le cosiddette porte well-known, sono riservate ai servizi standard<br />

come rappresentato in tabella 1.6:<br />

Num. porta Servizio<br />

7 Echo<br />

20 FTP (Controllo)<br />

21 FTP (Dati)<br />

23 Telnet<br />

25 SMTP<br />

53 DNS<br />

80 HTTP<br />

110 POP3<br />

119 NNTP<br />

. . . . . .<br />

Tabella 1.6: Porte dei servizi well-know<br />

La richiesta <strong>di</strong> un servizio ad un server deve dunque avvenire attraverso<br />

la porta standard <strong>di</strong> accesso. Per esempio la richiesta del servizio web deve<br />

aprire una connessione sulla porta 80 della macchina server. Per evitare che<br />

la risposta del server (nella fase <strong>di</strong> handshake) possa avvenire su una porta<br />

occupata da un servizio <strong>di</strong> client, il socket del client viene aperto con numero<br />

maggiore <strong>di</strong> 1024.<br />

Le connessioni TCP ricevono e forniscono flussi <strong>di</strong> byte dal livello superiore,<br />

in questo modo se il livello applicazione vuole trasmettere alcuni<br />

messaggi ad un altro host, l’insieme <strong>di</strong> questi messaggi forma un flusso <strong>di</strong><br />

dati che TCP, sud<strong>di</strong>vide in pacchetti, li trasmette, e giunti a destinazione li<br />

ricombina per il livello “Applicazione”.<br />

Le caratteristiche più importanti del protocollo TCP sono:<br />

63


•<br />

Le reti: nozioni <strong>di</strong> base<br />

È orientato alla connessione, con conferma e controllo del flusso.<br />

• Fornisce un servizio full-duplex.<br />

• Definisce il formato dei dati, <strong>degli</strong> acknowledgement e delle procedure<br />

per assicurare la correttezza dei dati.<br />

• Specifica le modalità per iniziare e chiudere la trasmissione dei dati.<br />

• Non impone particolari restrizioni alla rete sottostante, per cui può<br />

essere implementato su molte reti (telefonia, reti locali).<br />

Il formato <strong>di</strong> un segmento TCP è costituito da due campi: l’header TCP,<br />

costituito da una parte fissa <strong>di</strong> 20 byte ed una parte opzionale <strong>di</strong> lunghezza<br />

variabile, e il campo dati. La struttura <strong>di</strong> un segmento TCP è rappresentata<br />

in figura 1.35:<br />

dove:<br />

Figura 1.35: Struttura frame TCP<br />

Source port/destination port , identificano le porte cui sono associati<br />

gli applicativi sorgente e destinazione.<br />

Sequence number , per in<strong>di</strong>care la posizione del campo dati nel messaggio<br />

completo.<br />

Ack number , per in<strong>di</strong>care il numero <strong>di</strong> sequenza del primo byte <strong>di</strong> cui la<br />

sorgente aspetta la conferma.<br />

HLEN , per in<strong>di</strong>care la lunghezza dell’header TCP (in multipli <strong>di</strong> 32 bit).<br />

Reserved , campo riservato ad applicazioni future.<br />

Code bit , contiene informazioni sulle caratteristiche e finalit del segmento<br />

(setup connessione, reset connessione, urgenza).<br />

64


1.11 Internet Protocol Suite<br />

Window size , in<strong>di</strong>ca le <strong>di</strong>mensioni del buffer per il traffico in ingresso<br />

(quanti byte nuovi possono essere spe<strong>di</strong>ti). Se il campo nullo in<strong>di</strong>ca<br />

la richiesta <strong>di</strong> blocco temporaneo della trasmissione.<br />

Checksum , controllo <strong>di</strong> parità per rivelare errori sull’header.<br />

Urgent pointer , in<strong>di</strong>ca il primo byte urgente del pacchetto.<br />

Options , per negoziare con il TCP dell’altra macchina alcuni parametri,<br />

come la <strong>di</strong>mensione massima dei segmenti.<br />

Pad<strong>di</strong>ng , campo fittizio per completare la lunghezza del campo options<br />

(insieme formano 32 bit).<br />

Data , contiene i dati da trasmettere.<br />

I segmenti TCP sono scambiati per stabilire la connessione, per trasferire<br />

dati, per inviare ack, per inviare le <strong>di</strong>mensioni della finestra <strong>di</strong>sponibile o per<br />

chiudere la connessione. In particolare, il protocollo TCP garantisce l’affidabilità<br />

dei dati ricevuti me<strong>di</strong>ante l’utilizzo della tecnica sli<strong>di</strong>ng window per<br />

regolare le trasmissioni, tecnica che permette anche il controllo <strong>di</strong> flusso in<br />

quanto in<strong>di</strong>ca al TCP sorgente la quantità <strong>di</strong> dati accettata (campo window<br />

size). L’attivazione della connessione avviene, infine, attraverso il three-way<br />

handshaking.<br />

65


Parte II<br />

Le reti Wireless


Capitolo 2<br />

Generalità delle reti Wireless<br />

Introduzione<br />

Da sempre, il crescente sviluppo <strong>di</strong> <strong>di</strong>spositivi tecnologici dalle molteplici<br />

funzionalità ha dato spunto a ricercatori ed impren<strong>di</strong>tori <strong>di</strong> stu<strong>di</strong>are <strong>meccanismi</strong><br />

<strong>di</strong> comunicazione senza fili. Negli anni ‘70 fu la necessità <strong>di</strong> collegare<br />

tra loro le isole Hawaii a guidare un insieme <strong>di</strong> ricercatori allo sviluppo <strong>di</strong><br />

AlhoaNet. Nel recente 1994 fu la como<strong>di</strong>tà <strong>di</strong> una connessione senza cavo tra<br />

cellulari e palmari a spingere Ericsson c○ , IBM c○ , Toshiba c○ e Nokia c○ verso<br />

il protocollo Bluetooth c○1 .<br />

Nasce così il concetto “wireless”, senza fili. Le apparecchiature che supportano<br />

tale servizio, permettono alle persone ed alle macchine <strong>di</strong> comunicare<br />

tra loro senza connessioni via cavo. Questo assicura libertà <strong>di</strong> movimento<br />

e possibilità <strong>di</strong> estendere le applicazioni alle <strong>di</strong>verse aree <strong>di</strong> un ufficio,<br />

un e<strong>di</strong>ficio o <strong>di</strong> una città. Il concetto <strong>di</strong> rete wireless è presente da molti<br />

anni nella storia dell’umanità. Dai segnali <strong>di</strong> fumo dei nativi d’America, agli<br />

impulsi luminosi che trasmettono informazioni attraverso l’alfabeto morse<br />

tuttora importante forma <strong>di</strong> comunicazione. Esistono molti tipi <strong>di</strong> sistemi <strong>di</strong><br />

comunicazione wireless, ma la caratteristica comune a tutti è la capacità <strong>di</strong><br />

far comunicare <strong>di</strong>spositivi computerizzati attraverso l’uso delle onde ra<strong>di</strong>o.<br />

Le informazioni riportate e descritte in questo capitolo sono riportate da<br />

[54, 37, 35, 38, 29, 26, 27, 48, 52, 56].<br />

1 Marchio registrato <strong>di</strong> proprietà delle rispettive case<br />

69


2.1 Topologia<br />

Generalità delle reti Wireless<br />

La classificazione in base all’estensione geografica viene effettuata riadattando<br />

quella delle reti cablate al nuovo mezzo fisico trasmissivo utilizzato.<br />

Come mostrato in figura 2.1 , possiamo classificare le reti wireless in<br />

base all’area coperta dal segnale trasmesso dai <strong>di</strong>spositivi, in <strong>di</strong>verse categorie:<br />

BAN, PAN, WLAN e WWAN. Questa classificazione viene accettata<br />

universalmente.<br />

Figura 2.1: Classificazione topologica delle reti wireless<br />

2.1.1 BAN (Body Area Network)<br />

Le BAN sono reti che hanno un raggio <strong>di</strong> trasmissione che copre all’incirca<br />

le imme<strong>di</strong>ate vicinanze del corpo umano. Il range <strong>di</strong> azione tipicamente<br />

si aggira intorno ad 1 o 2 metri, consentendo la connessione <strong>di</strong> <strong>di</strong>spositivi<br />

indossabili quali auricolari, palmari, lettori Mp3, telefoni cellulari. Tra le<br />

caratteristiche principali delle BAN troviamo la capacità <strong>di</strong> connettere <strong>di</strong>spositivi<br />

eterogenei e la capacità <strong>di</strong> autoconfigurarsi, rendendo trasparenti<br />

all’utente operazioni come la rimozione o l’aggiunta <strong>di</strong> un nuovo <strong>di</strong>spositivo<br />

da una BAN. La connessione wireless viene considerata la soluzione naturale<br />

per l’implementazione <strong>di</strong> una BAN in quanto l’uso <strong>di</strong> cavi risulterebbe ingombrante<br />

e scomodo. Uno dei primi esempi <strong>di</strong> BAN fu il prototipo sviluppato<br />

da T.G.Zimmerman [54], che poteva fornire una comunicazione dati<br />

(con una data rate che arrivava fino a 400 Kbps) sfruttando il corpo come<br />

un canale fisico. In particolare, Zimmerman mostrò che i dati possono essere<br />

trasferiti attraverso la pelle sfruttando una corrente elettrica molto bassa. Il<br />

trasferimento dati tra due persone (ovvero l’interconnessione tra due BAN)<br />

poteva essere realizzata attraverso una semplice stretta <strong>di</strong> mano.<br />

70


2.1 Topologia<br />

2.1.2 PAN (Personal Area Network)<br />

Il raggio <strong>di</strong> comunicazione delle PAN è tipicamente superiore ai 10 metri.<br />

Le PAN consentono a <strong>di</strong>spositivi vicini <strong>di</strong> con<strong>di</strong>videre <strong>di</strong>namicamente informazioni.<br />

Mentre una BAN si de<strong>di</strong>ca all’interconnessione dei <strong>di</strong>spositivi indossabili<br />

da una persona, una PAN viene sviluppata nell’imme<strong>di</strong>ata prossimità<br />

<strong>degli</strong> utenti. Risulta possibile la connessione <strong>di</strong> <strong>di</strong>spositivi portatili con<br />

altri oppure con stazioni fisse, ad esempio per accedere a servizi come Internet.<br />

Tecnologie ad infrarossi e ra<strong>di</strong>o rendono notevolmente più pratiche<br />

operazioni “quoti<strong>di</strong>ane” <strong>di</strong> sincronizzazione fra laptop, desktop pc e palmare,<br />

ma anche il download delle immagini dalla macchina fotografica <strong>di</strong>gitale e<br />

l’upload <strong>di</strong> musica nel riproduttore Mp3.<br />

Tra gli standard maggiormente utilizzati per realizzare reti BAN e PAN<br />

citiamo l’IrDA c○2 ed il Bluetooth c○ . Il protocollo IrDA c○ (Infrared Data Association)<br />

consente collegamenti bi<strong>di</strong>rezionali point-to-point sfruttando onde<br />

nello spettro dell’infrarosso. L’interconessione viene effettuata tra <strong>di</strong>spositivi<br />

posti in visibilità reciproca ad una <strong>di</strong>stanza <strong>di</strong> un paio <strong>di</strong> metri e permette<br />

una bit rate <strong>di</strong> 4 Mbps. Esiste anche una implementazione seriale <strong>di</strong> tale<br />

protocollo, nota con il nome <strong>di</strong> SIR (Serial InfraRed), che garantisce un data<br />

rate massimo <strong>di</strong> 155 Kbps. I <strong>di</strong>spositivi che utilizzano questo standard comunicano<br />

utilizzando dei LED (Light Emission Diode) alla lunghezza d’onda<br />

<strong>di</strong> 875 nm. Se da un lato questa tecnologia garantisce una certa sicurezza<br />

della trasmissione è anche vero che richiede <strong>di</strong> avere i <strong>di</strong>spositivi particolarmente<br />

vicini ed in posizione statica; l’eventuale frapposizione <strong>di</strong> un oggetto<br />

o lo spostamento <strong>di</strong> un <strong>di</strong>spositivo potrebbe comportare l’interruzione della<br />

connessione.<br />

2.1.3 WLAN (Wireless Local Area Network)<br />

Le WLAN sono le reti senza fili maggiormente <strong>di</strong>ffuse sul pianeta. Hanno<br />

un raggio <strong>di</strong> azione tipico <strong>di</strong> un singolo palazzo, compreso tra 100 e 500 metri.<br />

Troviamo nelle WLAN gli stessi requisiti delle tra<strong>di</strong>zionali reti LAN cablate<br />

(wired), come la completa connessione fra le stazioni che ne fanno parte<br />

e la capacità <strong>di</strong> inviare messaggi broadcast. Trattandosi <strong>di</strong> reti wireless,<br />

si devono affrontare alcuni problemi specifici <strong>di</strong> questo ambiente, come la<br />

sicurezza delle trasmissioni via etere, il consumo energetico, la mobilità e la<br />

limitata larghezza <strong>di</strong> banda. Lo standard che si occupa <strong>di</strong> regolamentare le<br />

WLAN è l’IEEE 802.11. Di tali reti ci occuperemo approfon<strong>di</strong>tamente nel<br />

paragrafo 2.3.<br />

2 Marchi registrato <strong>di</strong> proprietà della rispettiva casa<br />

71


2.1.4 WWAN (Wireless Wide Area Network)<br />

Generalità delle reti Wireless<br />

Le WWAN sono le reti wireless in grado <strong>di</strong> coprire il range più ampio<br />

oggi <strong>di</strong>sponibile. Vengono nella maggior parte dei casi installate nell’infrastruttura<br />

della telefonia cellulare sebbene offrano anche la possibilità <strong>di</strong><br />

trasmettere dati. Le WWAN sono estese su vaste aree geografiche ed hanno<br />

un raggio <strong>di</strong> trasmissione che varia da 1, 5 a 8 Km. Nascono dall’esigenza <strong>di</strong><br />

collegare utenti che si trovano a gran<strong>di</strong> <strong>di</strong>stanze. Questa tipologia <strong>di</strong> rete si<br />

sta <strong>di</strong>ffondendo anche come strumento per collegare reti LAN posizionate su<br />

territori inaccessibili per la rete cablata. Le soluzioni WWAN che si basano<br />

su un’infrastruttura a rete cellulare, o su trasmissione satellitare, rappresentano<br />

il futuro della comunicazione dati <strong>di</strong> ogni giorno. Esse sono destinate<br />

a <strong>di</strong>ventare sempre più importanti dato che un numero sempre più elevato<br />

<strong>di</strong> persone ha la necessità <strong>di</strong> accedere ai dati e scambiarli per uso personale<br />

o professionale senza essere legati ad un luogo specifico. Le Wireless Wide<br />

Area Network forniscono accesso alle informazioni anytime & anywhere in<br />

presenza <strong>di</strong> copertura <strong>di</strong> rete cellulare.<br />

Le reti WWAN sono costituite da una ampia varietà <strong>di</strong> standard.<br />

Lo standard Advanced Mobile Phone Systems (AMPS), nato negli Stati<br />

Uniti, permette la trasmissione della voce tra cellulari Tacs. Opera su una<br />

banda <strong>di</strong> frequenza <strong>di</strong> 800 MHz basato su tecnologie analogiche e viene considerato<br />

uno standard <strong>di</strong> prima generazione (1G).<br />

Gli standard <strong>di</strong> seconda generazione (2G), basati su tecnologia <strong>di</strong>gitale,<br />

sono stati progettati principalmente per servizi telefonici. Tra gli esempi <strong>di</strong><br />

questa categoria troviamo il Global System for Mobile (GSM) in Europa e<br />

Personal Digital Communication (PDC) in Giappone. Il data rate prevista<br />

per le tecnologie <strong>di</strong> seconda generazione non superava 9.6 Kbps. Gli standard<br />

2.5 G, come General Packet Ra<strong>di</strong>o System (GPRS) ed EDGE (evoluzione<br />

<strong>di</strong> GSM), nascono dalla necessità <strong>di</strong> fornire sia servizi telefonici che per lo<br />

scambio <strong>di</strong> dati consentendo un data rate <strong>di</strong> 348 Kbps.<br />

La telefonia <strong>di</strong> terza generazione (3G) si propone <strong>di</strong> fornire trasmissioni<br />

con data rate che raggiungono i 2 Mbps al fine <strong>di</strong> supportare vari servizi<br />

multime<strong>di</strong>ali, quali videotelefonate e scambio <strong>di</strong> brevi filmati. Uno standard<br />

<strong>di</strong> questo tipo è l’Universal Mobile Telecommunication System (UMTS) introdotto<br />

dalla International Telecommunications Union (ITU). L’obiettivo<br />

<strong>di</strong> UMTS è quello <strong>di</strong> andare ad estendere la capacità, in termini <strong>di</strong> banda,<br />

delle reti cellulari e cercare <strong>di</strong> arricchire in modo significativo la tipologia<br />

e la qualità dei servizi agli utenti. Mentre la maggior parte dei sistemi <strong>di</strong><br />

comunicazione cellulare utilizza tecnologie switched, UMTS fornisce anche<br />

il supporto per comunicazioni basate su pacchetti, che risulta sicuramente<br />

più adatto per gestire il traffico dati. Le frequenze <strong>di</strong> trasmissione utilizzate<br />

72


2.2 Modelli <strong>di</strong> reti mobili<br />

sono comprese fra 1, 9 Ghz e i 2, 2 Ghz, mentre lo standard GSM trasmette<br />

tra 900 Mhz e 1800 Mhz. La tecnologia <strong>di</strong> trasmissione <strong>di</strong> UMTS (UTRAN,<br />

UMTS Terrestrial Ra<strong>di</strong>o Access Network) consente un data rate minimo <strong>di</strong><br />

144 Kbps per le applicazioni ad alta mobilità totale, estesa a tutti gli ambienti,<br />

un data rate pari a 384 Kbps per applicazioni a mobilità parziale, e<br />

un massimo data rate <strong>di</strong> 2 Mbps per le applicazioni a bassa mobilità.<br />

2.2 Modelli <strong>di</strong> reti mobili<br />

Verranno descritti brevemente tre modelli <strong>di</strong> reti mobili [48] in or<strong>di</strong>ne<br />

crescente <strong>di</strong> flessibilità e in or<strong>di</strong>ne decrescente in termini <strong>di</strong> contenuto <strong>di</strong><br />

infrastrutture fisse.<br />

2.2.1 Cellular Network Model<br />

Una cellular network copre una determinata area composta da celle eventualmente<br />

sovrapposte. Ogni cella ha una stazione base fissa, BS (Base<br />

Station). Le base stations sono connesse tra <strong>di</strong> loro da una rete cablata<br />

(wireline). I no<strong>di</strong> mobili (noti anche come “mobile hosts” o MHs) si possono<br />

muovere da una cella all’altra. Un MH comunica con gli altri no<strong>di</strong><br />

della rete attraverso la base station della cella in cui si trova. Per effettuare<br />

ciò, il MH deve stabilire una connessione wireless con la sua base station.<br />

Se il partner della comunicazione è presente nella stessa cella, la base station<br />

consegna il messaggio attraverso un altro link wireless stabilito con il<br />

ricevente. Se il partner della comunicazione si trova in una cella <strong>di</strong>versa, la<br />

base station inoltra il messaggio attraverso la wireline backbone alla base<br />

station presente nella cella del ricevente. La rete backbone è connessa alla<br />

rete telefonica.<br />

In una cellular network possiamo assumere che, nella rete wireline backbone,<br />

non si verifichino mai <strong>di</strong>sconnessioni e che tutte le base station siano<br />

funzionanti. Finché due MHs sono funzionanti e situati nell’area <strong>di</strong> copertura,<br />

essi possono comunicare gli uni con gli altri. Da un punto <strong>di</strong> vista<br />

formale considerando la teoria dei grafi, le base stations sono i no<strong>di</strong> interni<br />

del grafo e gli MHs sono le foglie. Nel tempo l’unico cambiamento nel grafo<br />

riguarda le interconnessioni tra i no<strong>di</strong> foglia e i no<strong>di</strong> interni. Il sottografo<br />

che comprende i no<strong>di</strong> interni rimane invariato.<br />

2.2.2 Virtual Cellular Network Model<br />

Una virtual cellular network (VCN) è architetturalmente simile alla cellular<br />

network, <strong>di</strong>fferenziandosi solamente per un aspetto tecnico: le base<br />

stations <strong>di</strong> una VCN sono “mobili”. La comunicazione tra le base stations<br />

avviene anche attraverso link wireless. La mobile station continua a coor<strong>di</strong>nare<br />

la comunicazione dei MHs che si trovano in prossimità. Tuttavia,<br />

73


Generalità delle reti Wireless<br />

a <strong>di</strong>fferenza delle virtual cellular, il grafo delle base stations può cambiare<br />

nel tempo a causa della loro mobilità. Come conseguenza, la maggior parte<br />

<strong>degli</strong> algoritmi <strong>di</strong>stribuiti che sono utilizzati nelle virtual cellular cessano <strong>di</strong><br />

funzionare correttamente. Le VCNs possono essere sfruttate per interventi<br />

militari in territorio nemico dove le base stations mobili possono essere<br />

installate su carri armati o autocarri e i soldati possono trasportare i mobile<br />

hosts. Nelle VCN si assume che le base stations mobili possano sempre<br />

comunicare l’una con l’altra attraverso un cammino formato esclusivamente<br />

da base stations. Ogni MH è connesso a qualche base station mobile. Il<br />

sottografo che comprende i no<strong>di</strong> interni (le base stations mobili) cambia nel<br />

tempo rendendo necessario l’impiego <strong>di</strong> algoritmi <strong>di</strong>namici.<br />

2.2.3 Ad-hoc Network Model<br />

La caratteristica principale <strong>di</strong> una rete ad-hoc è che tutti i no<strong>di</strong> <strong>di</strong> cui<br />

è composta sono simili e mobili. Non ci sono base station che coor<strong>di</strong>nano<br />

le attività <strong>di</strong> un sottoinsieme <strong>di</strong> no<strong>di</strong>. Perciò tutti i no<strong>di</strong> devono prendere<br />

le decisioni collettivamente. A causa della loro mobilità, i no<strong>di</strong> vicini ad un<br />

altro cambiano con il tempo. Poiché la mobilità dei no<strong>di</strong> non può essere<br />

predetta, i cambiamenti della topologia della rete nel tempo sono arbitrari.<br />

Le reti ad-hoc sono adatte per le missioni militari, per le operazioni<br />

<strong>di</strong> soccorso in situazioni <strong>di</strong> emergenza e dove sia necessario instaurare una<br />

rete improvvisata e <strong>di</strong> fondamentale importanza. In una rete ad-hoc due<br />

no<strong>di</strong> mobili con<strong>di</strong>vidono un link se sono all’interno del reciproco raggio <strong>di</strong><br />

trasmissione wireless. Assumendo che un cammino single o multiple hop<br />

esista per ogni coppia <strong>di</strong> no<strong>di</strong> mobili, questo cammino può cambiare nel<br />

tempo a causa del movimento dei no<strong>di</strong>.<br />

2.3 Wireless Local Area Network (WLAN)<br />

Vengono ora analizzate nel dettaglio le caratteristiche delle reti WLAN<br />

al fine <strong>di</strong> possedere un lessico adatto alla comprensione dei capitoli successivi<br />

e della III parte <strong>di</strong> questa tesi.<br />

Il successo <strong>di</strong> una tecnologia <strong>di</strong> rete è strettamente connesso con allo<br />

sviluppo dei <strong>di</strong>spositivi <strong>di</strong> rete. L’affidabilità, abbinata ad un prezzo competitivo,<br />

sono la chiave <strong>di</strong> volta nella <strong>di</strong>ffusione commerciale <strong>di</strong> tale tecnologia.<br />

Ma il principale fattore per ottenere un successo su scala globale, è<br />

l’esistenza <strong>di</strong> un appropriato standard <strong>di</strong> rete. Attualmente, due principali<br />

standard per le reti wireless “ad hoc” detengono questo primato: lo standard<br />

IEEE 802.11 per le WLANs e le specifiche Bluetooth c○ per le comunicazioni<br />

wireless a corto raggio. In questo sede ci occuperemo solamente del primo.<br />

74


2.3 Wireless Local Area Network (WLAN)<br />

2.3.1 Il protocollo 802.11<br />

L’IEEE (Institute of Electrical and Electronic Engineers) nel 1997 ha<br />

<strong>di</strong>vulgato il primo standard <strong>di</strong> riferimento per le reti wireless: l’IEEE 802.11<br />

legacy. Tecnicamente il protocollo detta le specifiche a livello “Fisico” (Physical<br />

layer) e <strong>di</strong> “Collegamento” (Data Link layer) per l’implementazione <strong>di</strong><br />

una rete LAN wireless.<br />

802.11 legacy<br />

La prima versione dello standard 802.11 venne presentata nel 1997 e<br />

venne chiamata 802.11y. Specificava una velocità <strong>di</strong> trasferimento dei dati<br />

compresa tra 1 e 2 Mbps, utilizzando come mezzo trasmissivo raggi infrarossi<br />

o onde ra<strong>di</strong>o nella frequenza <strong>di</strong> 2.4 GHz per la trasmissione del segnale.<br />

L’uso dei raggi infrarossi, regolamentato dallo standard Irda c○ , venne<br />

abbandonato preferendo la trasmissione ra<strong>di</strong>o che meglio si adattava alle<br />

esigenze <strong>di</strong> una rete LAN. Tuttavia lo standard Irda c○ rimase conglobato<br />

all’interno dell’802.11 per ragioni <strong>di</strong> compatibilità, adattandosi alle continue<br />

evoluzioni.<br />

Successivamente vennero realizzate, da due produttori in<strong>di</strong>pendenti, alcune<br />

evoluzioni riguardo a tale standard le quali, fuse e migliorate, portarono<br />

alla definizione dello standard 802.11b.<br />

802.11 b<br />

Questo standard nato nel 1999 <strong>di</strong>venta il nuovo standard dominante. Data<br />

l’enorme <strong>di</strong>ffusione e la sua in<strong>di</strong>scussa affidabilità, viene battezzato con<br />

l’acronimo Wi-Fi Wireless Fidelity). Viene progettato per un data rate<br />

massimo <strong>di</strong> 11 Mbps utilizzando il metodo CSMA/CA (Carrier Sense Multiple<br />

Access with Collision Detection) per la trasmissione delle informazioni.<br />

Tale meccanismo, descritto tecnicamente in seguito, occupa buona parte<br />

della banda trasmissiva. Praticamente il massimo trasferimento ottenibile<br />

è <strong>di</strong> 5.9 Mbps utilizzando il protocollo TCP e 7.1 Mbps con UDP. Sfruttando<br />

le frequenze nell’intorno dei 2.4 GHz, la portata del segnale si riduce<br />

drasticamente in presenza <strong>di</strong> ostacoli soli<strong>di</strong>, metallo ed acqua.<br />

Utilizzando antenne <strong>di</strong>rezionali esterne ad alto guadagno, si è in grado<br />

<strong>di</strong> stabilire conessioni punto a punto del raggio <strong>di</strong> molti chilometri. La<br />

<strong>di</strong>stanza massima raggiungibili è <strong>di</strong> 8 Km con ricevitori appositi e con<strong>di</strong>zioni<br />

atmosferiche ideali. Tali situazioni però sono <strong>di</strong> durata temporanea<br />

e non consentono una copertura affidabile. Se il segnale risulta troppo <strong>di</strong>sturbato<br />

o debole, lo standard prevede <strong>di</strong> ridurre la velocità massima <strong>di</strong><br />

trasmissione a 5.5, 2 o ad<strong>di</strong>rittura 1 Mbps per consentire al segnale <strong>di</strong> essere<br />

opportunamente deco<strong>di</strong>ficato.<br />

Sono state sviluppate delle estensioni propietarie che, utilizzando più<br />

canali trasmissivi accoppiati, consentono <strong>di</strong> incrementare la velocità <strong>di</strong> trasmis-<br />

75


Generalità delle reti Wireless<br />

sione a <strong>di</strong>scapito della compatibilità con le periferiche <strong>di</strong> altri produttori.<br />

Queste estensioni vengono chiamate commercialmente 802.11b+ e portano<br />

la banda teorica a 22, 33 o ad<strong>di</strong>rittura 44 Mbps.<br />

802.11 a<br />

Nel 2001 viene ratificato il protocollo 802.11a già in <strong>di</strong>scussione dal 1999.<br />

Questo standard utilizza lo spazio <strong>di</strong> frequenze nell’intorno dei 5 GHz ed<br />

opera con una velocità massima teorica <strong>di</strong> 54 Mbps sebbene in pratica raggiunga<br />

solamente i 20 Mbps. Tale velocità può essere ridotta, in funzione<br />

delle interferenze rilevate, a 48, 36, 34, 18, 9 o 6 Mbps. Lo standard definisce<br />

12 canali non sovrapposti, 8 de<strong>di</strong>cati alle comunicazioni interne e 4 per le<br />

connessioni punto a punto.<br />

Questo standard non ha riscosso molto successo in quanto il precedente<br />

802.11b era già molto <strong>di</strong>ffuse ed inoltre in molti paesi l’utilizzo delle frequenze<br />

a 5 GHz è riservato.<br />

802.11 f<br />

Chiamato IAPP (Inter Access Point Protocol), l’802.11f è un protocollo<br />

<strong>di</strong> livello “Applicazione” per la gestione <strong>di</strong> ESS (Extend Service Set), ovvero<br />

più reti wireless collegate tra loro. Esso si occupa <strong>di</strong> gestire l’handover <strong>di</strong><br />

terminali da una rete wireless all’altra.<br />

802.11 g<br />

Questo standard viene approvato nel giugno del 2003. Utilizza la stessa<br />

frequenza dell’802.11b, ovvero 2.4 GHz. Fornisce una banda teorica<br />

<strong>di</strong> 54 Mbps, che in pratica si traduce a 24.7 Mbps molto simile a quella<br />

dell’802.11a.<br />

È totalmente compatibile con lo standard b, anche se come<br />

effetto collaterale durante la comunicazione deve ridurre la sua velocità per<br />

adattarvisi.<br />

Anche per questo standard esistono delle varianti proprietarie chiamate<br />

g+ o SuperG. Tali varianti utilizzano l’accoppiamento <strong>di</strong> due canali per<br />

raddoppiare la banda <strong>di</strong>sponibile, anche se introducono notevoli interferenze<br />

con altre reti e non vengono supportate da tutti i prodotti commerciali.<br />

802.11 i<br />

Task force creata per sopperire alle debolezze del sistema crittografico<br />

WEP. Scopo del progetto era, ed è tuttora, quello <strong>di</strong> creare una valida<br />

alternativa alla crittografia ed aumentare la sicurezza generale delle reti<br />

wireless. I risultati ottenuti finora sono stati ratificati come standard e si<br />

<strong>di</strong>vidono in due parti:<br />

76


2.3 Wireless Local Area Network (WLAN)<br />

1. specifiche crittografiche per l’uso <strong>di</strong> AES (Advanced Encryption Standard);<br />

2. IEEE 802.1X Port Based Network Authentication Standard: autenticazione<br />

e gestione delle chiavi nelle WLANs;<br />

802.11 n<br />

Gennaio 2004 si apre con la notizia, da parte dell’IEEE, <strong>di</strong> avere in<br />

cantiere lo stu<strong>di</strong>o <strong>di</strong> un nuovo standard per la realizzazione <strong>di</strong> reti wireless<br />

<strong>di</strong> <strong>di</strong>mensioni metropolitane. Tale standard, denominato 802.11n, dovrebbe<br />

supportare una velocità <strong>di</strong> trasmissione teorica <strong>di</strong> 250 Mbps (100 Mbps reale)<br />

<strong>di</strong>mostrandosi 5 volte più rapido dell’802.11g e 40 volte più dell’802.11b. Il<br />

lavoro <strong>di</strong> standar<strong>di</strong>zzazione prosegue convalidando a gennaio 2007 la Draft<br />

2.0.<br />

Una delle caratteristiche innovative del protocollo prevede la possibilità<br />

<strong>di</strong> utilizzare la tecnologia MIMO (Multiple Input Multiple Output). Ciò<br />

consentirà <strong>di</strong> utilizzare più antenne per trasmettere e ricevere, ampliando la<br />

banda <strong>di</strong>sponibile attraverso una multiplazione spaziale.<br />

2.3.2 Configurazioni<br />

Lo standard 802.11 gestisce sia reti “Ad Hoc” che reti ad “infrastruttura”.<br />

Queste ultime sono costituite da una o più celle in<strong>di</strong>pendenti, ognuna<br />

delle quali viene controllata da una stazione base, chiamata Access Point<br />

o AP. I vari AP sono connessi tra loro da una rete, tipicamente cablata,<br />

chiamata Distribution System.<br />

Modalità infrastruttura<br />

Nella modalità infrastruttura (Infrastructure Mode) è prevista la presenza<br />

<strong>di</strong> una struttura <strong>di</strong> base <strong>di</strong> supporto per la comunicazione. I componenti<br />

necessari alla progettazione sono:<br />

• un <strong>di</strong>spositivo chiamato “Punto <strong>di</strong> Accesso”, AP (Access Point);<br />

• “terminali wireless”, WT (Wireless Terminal), ovvero gli host della<br />

rete;<br />

L’AP coor<strong>di</strong>na la trasmissione dei dati e la comunicazione tra i clients, e<br />

generalmente svolge anche la funzione <strong>di</strong> ponte tra LAN wireless, eventuali<br />

reti fisse e la rete telefonica pubblica (quin<strong>di</strong> anche Internet). Tutto il<br />

traffico ra<strong>di</strong>o dei dati transita da e verso l’Access Point, sia che quest’ultimo<br />

sia connesso alla rete cablata o meno. Questa configurazione viene chiamata<br />

In<strong>di</strong>pendent Basic Service Set (BSS).<br />

77


Generalità delle reti Wireless<br />

Con il termine Extended Service Set (ESS) si intende una configurazione<br />

che prevede il collegamento <strong>di</strong> due o più BSS in una singola sotto rete:<br />

più access point comunicano tra loro, consentendo una ottimizzazione del<br />

traffico tra le stazioni.<br />

Modalità Ad-Hoc<br />

Esiste un’altra tipologia <strong>di</strong> reti wireless che non prevede l’utilizzo <strong>di</strong><br />

infrastrutture <strong>di</strong> supporto per la comunicazione. Questa tipologia viene<br />

definita “Ad-Hoc”. ali reti sono formate da un insieme <strong>di</strong> no<strong>di</strong> mobili, PDA<br />

o laptop, che comunicano fra loro attaraverso link wireless. Questi no<strong>di</strong><br />

possono liberamente e <strong>di</strong>namicamente organizzarsi in maniera arbitraria e<br />

temporanea permettendo agli utenti <strong>di</strong> collaborare in modo improvvisato<br />

ovunque essi si trovino. Essendo formate da no<strong>di</strong> mobili, le reti Ad-Hoc,<br />

sono note anche con il nome <strong>di</strong> MANET (Mobile Ad-hoc NETwork)[26].<br />

Le MANET si basano sulla comunicazione cooperativa tra no<strong>di</strong> paritetici,<br />

e senza la necessità <strong>di</strong> punti <strong>di</strong> accesso fissi permettono la formazione <strong>di</strong><br />

configurazioni <strong>di</strong>namiche sempre in mutamento, Ad-Hoc appunto. Ogni nodo<br />

non opera solamente come host, ma anche come router, provvedendo ad<br />

instradare quei pacchetti che, a causa del limitato range <strong>di</strong> trasmissione, non<br />

possono essere trasmessi <strong>di</strong>rettamente al destinatario. Le reti Ad Hoc non<br />

sono preconfigurate ma si formano per la sola presenza dei vari <strong>di</strong>spositivi<br />

in un dato territorio. Ogni <strong>di</strong>spositivo (un telefono cellulare, un palmare,<br />

un computer, ma anche un elettrodomestico o una automobile) si configura<br />

come un nodo della rete, capace <strong>di</strong> far rimbalzare automaticamente le<br />

informazioni verso un altro nodo che si trova più vicino alla destinazione<br />

prescelta. Per questo motivo le MANET sono reti “multi hop”: questa tecnologia<br />

non si limita a far comunicare <strong>di</strong>rettamente due no<strong>di</strong> che si trovano<br />

a breve <strong>di</strong>stanza ma è capace <strong>di</strong> far rimbalzare le informazioni attraverso<br />

<strong>di</strong>versi no<strong>di</strong> per inoltrarle a un destinatario finale che può essere anche<br />

molto lontano. I protocolli <strong>di</strong> routing Ad Hoc prevedono quin<strong>di</strong> una partecipazione<br />

<strong>di</strong> tutti i no<strong>di</strong> sia alla fase in cui un terminale cerca <strong>di</strong> “scoprire”<br />

percorsi nella rete, per stabilire connessioni (route <strong>di</strong>scovery), che a quella <strong>di</strong><br />

trasmissione vera e propria. In pratica, ogni nodo utilizza gli altri <strong>di</strong>spositivi<br />

presenti nell’area per far arrivare le informazioni al destinatario; se uno dei<br />

no<strong>di</strong> “cade”, per qualsiasi motivo, la rete è capace <strong>di</strong> riconfigurarsi e trovare<br />

comunque una via per far comunicare tra loro i vari no<strong>di</strong>. Le reti MANET<br />

mantengono tutti i tipici problemi delle reti wireless come l’ottimizzazione<br />

della banda, la necessità <strong>di</strong> limitare i consumi energetici, e in alcuni casi, la<br />

scarsa capacità <strong>di</strong> calcolo dei <strong>di</strong>spositivi. Inoltre altri problemi dovuti alle<br />

frequenti <strong>di</strong>sconnessioni, ai continui cambiamenti della topologia della rete<br />

e al routing multi hop [52].<br />

78


2.3 Wireless Local Area Network (WLAN)<br />

Le reti ad hoc sono note anche come Independent Basic Service Set<br />

Network (IBSS Network) schematizzate come in figura 2.2.<br />

Strato fisico<br />

Figura 2.2: Rete IBBS<br />

La figura 2.3 riassume le caratteristiche fisiche delle varianti 802.11 proposte:<br />

Figura 2.3: Caratteristiche fisiche dei protocolli 802.11<br />

La velocità viene adattata <strong>di</strong>namicamente sulla base del rapporto segnale/<strong>di</strong>sturbo.<br />

Per una <strong>di</strong>scussione dettagliata sulle tecniche <strong>di</strong> modulazione<br />

vedere [56]. In questa sede ci si limita a notare che, al fine <strong>di</strong> evitare interferenze<br />

fra <strong>di</strong>spositivi ra<strong>di</strong>o che sfruttano la stessa banda, si ricorre a tecniche<br />

<strong>di</strong> spread spectrum, che consistono nel <strong>di</strong>stribuire il segnale su una banda<br />

molto più larga del necessario in modo che esso appaia come rumore ai <strong>di</strong>spositivi<br />

non interessati. Le tecniche principali sono due: FHSS (Frequency<br />

Hopping Spread Spectrum) e Direct Sequence Spread Spectrum (DSSS).<br />

Frequency Hopping Spread Spectrum (FHSS)<br />

Nel sistema FHSS il segnale ad una data frequenza viene fatto “saltare”<br />

da una canale all’altro, <strong>di</strong>stribuendosi su una una banda <strong>di</strong> frequenze. Il vantaggio<br />

<strong>di</strong> tale sistema, quando il rapporto fra la larghezza <strong>di</strong> banda originale<br />

del segnale e la larghezza <strong>di</strong> banda del segnale <strong>di</strong> <strong>di</strong>ffusione è molto grande,<br />

consente <strong>di</strong> offrire una grande immunità all’interferenza. Tale tecnologia<br />

79


Generalità delle reti Wireless<br />

consente a più utenti <strong>di</strong> con<strong>di</strong>videre la stessa banda <strong>di</strong> frequenze cambiando<br />

automaticamente la frequenza <strong>di</strong> trasmissione fino a 1600 volte al secondo,<br />

al fine <strong>di</strong> una maggiore stabilità <strong>di</strong> connessione e <strong>di</strong> una riduzione delle interferenze<br />

tra canali <strong>di</strong> trasmissione. Lo spectrum sprea<strong>di</strong>ng consiste in una<br />

continua variazione <strong>di</strong> frequenza utilizzando una modulazione <strong>di</strong> frequency<br />

hopping. Gli hops corrispondono ai salti <strong>di</strong> frequenza all’interno della<br />

gamma assegnata (2.402 Ghz - 2.480 Ghz salti <strong>di</strong> 1 Mhz, complessivamente<br />

79 hops set). Viene impiegata una modulazione gaussiana <strong>di</strong> tipo FSK o<br />

GFSK.<br />

Nello specifico sono previste due tipologie <strong>di</strong> modulazione GFSK :<br />

• a 2 livelli con data rate 1 Mbps;<br />

• a 4 livelli con data rate 2 Mbps;<br />

Il sistema FHSS risulta molto sicuro contro le interferenza e l’intercettazione<br />

in quanto risulta statisticamente impossibile poter ostruire tutte<br />

le frequenze che possono essere usate. L’implementazione <strong>di</strong> sistemi <strong>di</strong> filtri<br />

selettivi su frequenze <strong>di</strong>verse dalla frequenza del segnale, con eccedenza 50<br />

dB, aumenta ulteriormente l’efficacia.<br />

Direct Sequence Spread Spectrum (DSSS)<br />

Il sistema DSSS è una tecnologia <strong>di</strong> trasmissione a “frequenza <strong>di</strong>retta”<br />

su banda larga. Ogni bit viene trasmesso come una sequenza ridondante,<br />

detta chip. Tale metodo adatto per la trasmissione e ricezione <strong>di</strong> segnali<br />

deboli. Consente l’interoperabilità tra le reti wireless attuali a 11 Mbps con<br />

le precedenti a 1-2 Mbps. L’interfaccia DSSS utilizza un sistema con <strong>di</strong>spersione<br />

in banda base utilizzando un chipping code (co<strong>di</strong>ce <strong>di</strong> <strong>di</strong>spersione)<br />

modulando il dato prima <strong>di</strong> trasmetterlo. Ogni bit trasmesso viene <strong>di</strong>sperso<br />

su una sequenza a 11 bit (sequenza Barker). Il segnale trasmesso consumerà<br />

una maggior larghezza <strong>di</strong> banda consentendo la ricezione <strong>di</strong> segnali deboli.<br />

I vantaggi che l’interfaccia DSSS offre contro l’interferenza sono piuttosto<br />

scarsi. Questa limitazione <strong>di</strong>minuisce significativamente l’utilizzo <strong>di</strong> DSSS<br />

come metodo <strong>di</strong> trasmissione nelle applicazioni reali delle WLan.<br />

Problema della stazione nascosta-esposta<br />

Una delle principali caratteristiche delle LAN wireless è l’inefficacia delle<br />

tecniche <strong>di</strong> Carrier Sensing nel determinare se il mezzo fisico risulta accessibile.<br />

Siano date tre stazioni A, B, C con i raggi d’azione raffigurati, e<br />

supponiamo che A stia trasmettendo a B:<br />

Se ora C ascolta il mezzo, lo troverà libero e sarà convinta <strong>di</strong> poter<br />

trasmettere a B. Cominciando a trasmettere <strong>di</strong>sturberà la trasmissione <strong>di</strong><br />

80


2.3 Wireless Local Area Network (WLAN)<br />

Figura 2.4: Problema della stazione nascosta<br />

A, impedendo a B <strong>di</strong> riceverla. Sia A che C saranno costrette a ritrasmettere.<br />

Questo è noto come il problema della stazione nascosta (Fig.2.4).<br />

Esiste anche il problema inverso. Si supponga che B stia trasmettendo<br />

ad A e che C voglia trasmettere a D:<br />

Figura 2.5: Problema della stazione esposta<br />

Ascoltando il mezzo, C sentirà la trasmissione <strong>di</strong> B e concluderà erroneamente<br />

<strong>di</strong> non poter trasmettere; invece, essendo D fuori della portata <strong>di</strong> B<br />

ed A fuori della portata <strong>di</strong> C, le due trasmissioni potrebbero avvenire parallelamente<br />

senza interferenze. Questo è noto come il problema della stazione<br />

esposta (Fig.2.5). Ragionamenti analoghi valgono per le tecniche <strong>di</strong> Collision<br />

Detection (ad ogni modo non applicabili alle trasmissioni ra<strong>di</strong>o, tipicamente<br />

half-duplex). Se ne conclude che non è possibile utilizzare lo stesso protocollo<br />

usato da Ethernet, ossia CSMA/CD, per il controllo dellaccesso al mezzo.<br />

Il protocollo utilizzato nelle reti wireless è CSMA/CA.<br />

Carrier Sensing Virtuale<br />

In risposta al problema della stazione nascosta, sono state elaborate delle<br />

eleganti tecniche <strong>di</strong> Collision Avoidance. L’idea <strong>di</strong> base consiste nello stimolare<br />

il destinatario nell’emettere un breve frame in modo da informare le<br />

stazioni ad esso vicine <strong>di</strong> non interferire per l’intera durata della trasmissione<br />

che sta per avvenire. Il protocollo è il seguente:<br />

81


Generalità delle reti Wireless<br />

Quando A vuole trasmettere un frame a B, prima invia un frame RTS<br />

(Request To Send) al quale B risponde con un frame CTS (Clear To Send).<br />

Alla ricezione <strong>di</strong> CTS, A può iniziare a trasmettere. Entrambi i frame RTS<br />

e CTS contengono il tempo mancante prima della fine della trasmissione.<br />

Ogni stazione nel raggio d’azione <strong>di</strong> A o B riceverà uno od entrambi i frame<br />

ed imposterà il proprio in<strong>di</strong>catore <strong>di</strong> Carrier Sensing Virtuale, chiamato<br />

NAV (Network Allocation Vector), per la durata in<strong>di</strong>cata dal frame. Il NAV<br />

è un contatore che viene decrementato nel tempo, fino a 0. Quando NAV<br />

ha un valore <strong>di</strong>verso da zero, vuol <strong>di</strong>re che una trasmissione è in atto nelle<br />

vicinanze.<br />

Carrie Sense Multiple Access (CSMA/CA)<br />

Il precedente protocollo funziona bene solo nel caso teorico in cui le<br />

stazioni abbiano tutte lo stesso raggio d’azione e i frame RTS e CTS possano<br />

essere scambiati in tempo infinitesimo. In caso contrario, le collisioni<br />

possono ancora avvenire, e quin<strong>di</strong> tale protocollo viene in genere affiancato<br />

a tecniche <strong>di</strong> Carrier Sensing tra<strong>di</strong>zionali e <strong>di</strong> acknowledgement a livello <strong>di</strong><br />

MAC sublayer. Il Carrier Sensing riduce la probabilità <strong>di</strong> collisioni dovute<br />

a tentativi <strong>di</strong> acquisizione contemporanea del mezzo, ed è tanto più efficace<br />

quanto più ci si avvicina alla situazione ideale, ma piuttosto frequente, <strong>di</strong><br />

stazioni tutte comprese nei rispettivi raggi d’azione. L’acknowledgement<br />

a livello <strong>di</strong> MAC sublayer ha lo scopo <strong>di</strong> ridurre i tempi <strong>di</strong> ritrasmissione<br />

dei frame danneggiati, anticipando notevolmente un compito normalmente<br />

affidato al livello <strong>di</strong> “Trasporto”.<br />

Il protocollo CSMA/CA (Carrier Sense Me<strong>di</strong>um Access with Collision<br />

Avoidance) funziona per una trasmissione da A a B, nel seguente modo:<br />

1. La stazione trasmittente A cerca <strong>di</strong> determinare lo stato del mezzo<br />

trasmissivo valutando il contenuto <strong>di</strong> NAV ed ascoltandolo. Il canale<br />

è considerato libero quando sia il Carrier Sensing Virtuale che quello<br />

reale non rilevano attività. I casi sono due:<br />

a) Se il canale rimane libero per un intervallo <strong>di</strong> tempo, salta al<br />

punto 3.<br />

b) Se invece il canale occupato (o viene occupato durante l’intervallo),<br />

prosegue al punto 2.<br />

2. A avvia la procedura <strong>di</strong> backoff (<strong>di</strong>scussa nel paragrafo successivo).<br />

3. A emette un RTS.<br />

4. Se entro un intervallo <strong>di</strong> tempo ben definito, A non riceve il CTS<br />

da B, vuol <strong>di</strong>re, molto probabilmente, che l’RTS ha colliso con un<br />

altro frame; spesso ciò significa che due stazioni hanno scelto lo stesso<br />

82


2.3 Wireless Local Area Network (WLAN)<br />

slot nella finestra <strong>di</strong> backoff. Per questo motivo, prima <strong>di</strong> ritentare<br />

la trasmissione, A raddoppia la <strong>di</strong>mensione della finestra <strong>di</strong> backoff<br />

(CW) e poi ripete dal punto 2. Lo scopo <strong>di</strong> tale raddoppio è quello<br />

<strong>di</strong> adattare la <strong>di</strong>mensione della finestra al numero <strong>di</strong> contendenti, in<br />

considerazione del fatto che le collisioni sono in<strong>di</strong>ce <strong>di</strong> “affollamento”.<br />

5. Quando B riceve un RTS, risponde con un CTS.<br />

6. Ricevuto il CTS, A può cominciare a trasmettere il frame contenente<br />

i dati veri e propri.<br />

7. Se entro un intervallo <strong>di</strong> tempo ben definito, A non riceve un ACK da<br />

B, vuol <strong>di</strong>re che il data frame non è stato ricevuto correttamente, e<br />

quin<strong>di</strong> A deve ritrasmetterlo ripetendo tutta la procedura.<br />

8. Una volta che B ha ricevuto correttamente il data frame, risponde con<br />

un ACK concludendo il protocollo.<br />

Il seguente esempio (Fig.2.6) mostra il comportamento <strong>di</strong> 4 stazioni durante<br />

la trasmissione da A a B; la stazione D si trova nel raggio d’azione <strong>di</strong><br />

B, ma non in quello <strong>di</strong> A, e quin<strong>di</strong> aggiorna il proprio NAV solo dopo aver<br />

ricevuto il CTS proveniente da B.<br />

Procedura <strong>di</strong> backoff<br />

Figura 2.6: Funzionamento CSMA/CA<br />

La procedura <strong>di</strong> backoff è stata inserita nelle fasi del protocollo CS-<br />

MA/CA in cui le collisioni sono più frequenti, e consiste nell’attesa <strong>di</strong> un<br />

tempo casuale, ma limitato, secondo l’algoritmo <strong>di</strong> binary exponential backoff.<br />

In questo modo si evita che più stazioni, in attesa che il canale si liberi,<br />

tentino <strong>di</strong> acquisire contemporaneamente il canale nell’istante in cui questo<br />

viene rilasciato.<br />

L’algoritmo è il seguente:<br />

1. A aspetta che il canale si liberi, e che rimanga libero per tutto l’intervallo.<br />

83


Generalità delle reti Wireless<br />

2. Solo se il contatore <strong>di</strong> backoff <strong>di</strong> A=0, sceglie un numero a caso compreso<br />

fra 0 e CW (larghezza corrente della finestra <strong>di</strong> contesa), altrimenti<br />

lo lascia al valore attuale (che è il residuo <strong>di</strong> una procedura <strong>di</strong> backoff<br />

precedentemente interrotta).<br />

3. Per ogni intervallo SlotTime che il canale rimane libero, il contatore<br />

viene decrementato; se il mezzo viene occupato, torna al punto 1.<br />

4. Quanto il contatore giunge a zero, la procedura <strong>di</strong> backoff termina.<br />

Un esempio in merito alla <strong>di</strong>mensione della finestra <strong>di</strong> backoff (CW):<br />

inizialmente CW è pari a 7 (CWmin). Le ritrasmissioni, come visto, implicano<br />

un raddoppio del numero <strong>di</strong> slot, portando CW a 15, 31, 63, 127,<br />

255. Arrivata a 255 (CWmax), la <strong>di</strong>mensione non cresce ulteriormente. Al<br />

corretto completamento <strong>di</strong> una trasmissione, CW viene riportato al valore<br />

7.<br />

Protocolli MAC<br />

Nello standard 802.11 sono previste due modalità <strong>di</strong> funzionamento:<br />

• DCF (Distributed Coor<strong>di</strong>nation Function), prevede che siano le stazioni<br />

a gestire, in modo <strong>di</strong>stribuito, l’accesso al mezzo trasmissivo, secondo<br />

il protocollo CSMA/CA.<br />

• PCF (Point Coor<strong>di</strong>nation Function) affida all’AP la coor<strong>di</strong>nazione <strong>di</strong><br />

tutte le stazioni nella sua cella.<br />

In DCF è prevista una tecnica <strong>di</strong> frammentazione dei frame: un frame<br />

può essere scomposto in più frammenti, ognuno numerato e riscontrato<br />

(ACK) separatamente. La motivazione è presto detta: le trasmissioni ra<strong>di</strong>o<br />

sono affette da un’elevata rumorosità, e se un frame è troppo grande,<br />

la probabilità che venga danneggiato <strong>di</strong>venta elevatissima. La frammentazione<br />

consente <strong>di</strong> restringere le ritrasmissioni ai soli frammenti danneg-<br />

giati, anzichè all’intero frame.<br />

È da notare che, una volta acquisito il canale<br />

con RTS e CTS, più frammenti possono essere inviati in sequenza dando<br />

origine a quello che viene chiamato un fragment burst (Fig.2.7):<br />

Figura 2.7: Fragment burst nel protocollo DCF<br />

84


2.3 Wireless Local Area Network (WLAN)<br />

In PCF, la stazione base interroga ciclicamente le altre stazioni (polling),<br />

le quali possono trasmettere solo quando si presenta il loro turno. Siccome<br />

l’or<strong>di</strong>ne delle trasmissioni è completamente controllato dalla stazione base,<br />

non si possono mai verificare collisioni. Tutte le stazioni devono supportare<br />

DCF, mentre PCF è opzionale, e raramente implementato. DCF e PCF<br />

possono coesistere all’interno <strong>di</strong> una stessa cella, grazie ad una ingegnosa<br />

assegnazione dei tempi d’attesa. Lo standard definisce 4 intervalli <strong>di</strong> tempo<br />

(Fig.2.8), i quali forniscono <strong>di</strong>versi livelli <strong>di</strong> priorità ai vari protocolli:<br />

Figura 2.8: Intervalli temporali<br />

1. SIFS (Short Inter Frame Space): è l’intervallo più breve, usato per<br />

separare i frame appartenenti ad una singola trasmissione. Ad esempio,<br />

gli intervalli tra i frame RTS, CTS, Frag ed ACK <strong>di</strong> un fragment<br />

burst, hanno tutti questa durata. Notare che una sola stazione ha il<br />

permesso <strong>di</strong> rispondere dopo un intervallo SIFS. In questo modo si<br />

impe<strong>di</strong>sce alle altre stazioni, le quali devono attendere per un periodo<br />

più lungo, <strong>di</strong> interrompere una trasmissione in corso.<br />

2. PIFS (PCF Inter Frame Space): trascorso un intervallo più lungo,<br />

PIFS, è il turno dall’AP (chiamato anche Point Coor<strong>di</strong>nator, in questo<br />

contesto).<br />

3. DIFS (DCF Inter Frame Space): se l’AP non ha nulla da trasmettere,<br />

trascorso l’intervallo DIFS, ogni stazione può tentare <strong>di</strong> acquisire il<br />

canale per iniziare una nuova trasmissione. A questo punto possono<br />

verificarsi le collisioni per accesso contemporaneo, ed infatti la finestra<br />

<strong>di</strong> contesa (slotted backoff window) comincia proprio dopo questo<br />

intervallo.<br />

4. EIFS (Extended Inter Frame Space): usato al posto <strong>di</strong> DIFS dalle<br />

stazioni che hanno ricevuto un frame incomprensibile, dal quale, quin<strong>di</strong>,<br />

non è stato possibile estrarre l’informazione necessaria all’aggiornamento<br />

dell’in<strong>di</strong>catore NAV. Questo intervallo è stato stu<strong>di</strong>ato in<br />

85


Generalità delle reti Wireless<br />

modo da consentire ad un’altra stazione <strong>di</strong> rispondere al frame ignoto,<br />

risincronizzando anche questa stazione.<br />

2.3.3 Formato dei frame<br />

Esistono 3 tipi <strong>di</strong> frame: Dati, Controllo e Gestione. A livello <strong>di</strong> MAC<br />

sublayer, i frame <strong>di</strong> tipo “Dati” (Data frame) hanno la struttura rappresentata<br />

in figura 2.9:<br />

Figura 2.9: Struttura Data frame<br />

Gli in<strong>di</strong>rizzi sono 4, in quanto, oltre agli in<strong>di</strong>rizzi delle stazioni <strong>di</strong> origine<br />

e <strong>di</strong> destinazione, sono presenti anche quelli <strong>degli</strong> AP <strong>di</strong> entrata ed uscita<br />

nelle comunicazioni fra celle <strong>di</strong>fferenti. Gli in<strong>di</strong>rizzi sono tutti nel formato<br />

standard IEEE 802 a 48 bit. Tramite una procedura <strong>di</strong> assegnazione<br />

globale si garantisce che ogni interfaccia abbia un in<strong>di</strong>rizzo univoco a livello<br />

mon<strong>di</strong>ale, consentendo ad una stazione <strong>di</strong> muoversi da una LAN all’altra<br />

senza rischio <strong>di</strong> collisioni. Il campo “Durata” consente, a tutte le stazioni<br />

che hanno ricevuto il frame, <strong>di</strong> prevedere per quanto tempo il mezzo rimarrà<br />

occupato. Il campo “Numero” consente <strong>di</strong> numerare i frammenti. Dei 16 bit<br />

<strong>di</strong>sponibili, 12 identificano il frame e 4 identificano il frammento. Il campo<br />

“Controllo”, a sua volta, viene sud<strong>di</strong>viso in 11 sottocampi (Fig.2.10):<br />

Figura 2.10: Sud<strong>di</strong>visione campo “Controllo” del Data frame<br />

Il primo ottetto viene sud<strong>di</strong>viso in 3 campi con il seguente significato:<br />

• Ver: Versione dello standard IEEE 802.11.<br />

• Tipo: Specifica il tipo del frame: Gestione, Controllo o Dati.<br />

• Sottotipo: RTS, CTS, ACK, . . .<br />

86


2.3 Wireless Local Area Network (WLAN)<br />

Gli 8 flag che seguono, quando impostati ad 1, hanno il seguente significato:<br />

• DS: il frame <strong>di</strong>retto al sistema <strong>di</strong> <strong>di</strong>stribuzione.<br />

• DS: il frame proviene dal sistema <strong>di</strong> <strong>di</strong>stribuzione.<br />

• Altri Frammenti: seguono altri frammenti appartenenti allo stesso<br />

frame.<br />

• Ripetizione: questo frammento la ripetizione <strong>di</strong> un frammento precedentemente<br />

trasmesso.<br />

• Risparmio energia: al termine del frame l’interfaccia della stazione<br />

modalità <strong>di</strong> basso consumo.<br />

• Altri Frame: il trasmettitore ha altri frame per il ricevitore.<br />

• WEP: il campo Dati è stato crittografato con l’algoritmo WEP (Wired<br />

Privacy).<br />

• Or<strong>di</strong>nati: frammento appartenente alla classe <strong>di</strong> servizio Strictly Ordered.<br />

I frame <strong>di</strong> tipo “Gestione” (management frame), hanno un formato simile,<br />

ma essendo confinati ad una singola cella, richiedono solo 3 in<strong>di</strong>rizzi.<br />

I frame <strong>di</strong> “Controllo” (control frame) sono ancora più brevi, richiedendo<br />

solo 1 o 2 in<strong>di</strong>rizzi, e non contenendo i campi “Dati” e “Numero”. Quelli<br />

più importanti hanno la seguente struttura e lunghezza (Fig.2.11):<br />

Figura 2.11: Struttura Control frame<br />

87


2.3.4 Servizi<br />

Generalità delle reti Wireless<br />

Ogni LAN wireless conforme allo standard 802.11 deve fornire i seguenti<br />

nove servizi:<br />

1. Associazione - Appena una stazione entra nel raggio d’azione <strong>di</strong> un<br />

AP, invoca questo servizio per informare la stazione base della sua<br />

presenza e delle sue necessità.<br />

2. Dissociazione - Sia le stazioni che gli AP possono terminare una<br />

precedente associazione.<br />

3. Riassociazione - Una stazione in moto può trasferire il controllo da<br />

un AP all’altro.<br />

4. Distribuzione - L’AP smista i frame che lo raggiungono verso le<br />

stazioni della propria cella (via ra<strong>di</strong>o) o verso gli altri AP, attraverso<br />

il sistema <strong>di</strong> <strong>di</strong>stribuzione.<br />

5. Integrazione - Questo servizio gestisce la traduzione dei frame 802.11<br />

verso altri formati.<br />

6. Autenticazione - Una stazione deve <strong>di</strong>mostrare <strong>di</strong> essere autorizzata<br />

ad usufruire del servizio <strong>di</strong> trasmissione.<br />

7. Deautenticazione - Una stazione che voglia abbandonare la rete deve<br />

“deautenticarsi” e “<strong>di</strong>ssociarsi”.<br />

8. Segretezza - I dati trasmessi via ra<strong>di</strong>o possono essere ascoltati da<br />

chiunque si trovi all’interno dell’area <strong>di</strong> <strong>di</strong>ffusione. Questo servizio<br />

gestisce la crittografia dei frame attraverso l’algoritmo RC4.<br />

9. Trasmissione - Scambio <strong>di</strong> frame, fra due stazioni, a livello <strong>di</strong> MAC<br />

sublayer.<br />

I primi cinque sono chiamati “servizi <strong>di</strong> <strong>di</strong>stribuzione” e sono forniti<br />

dall’AP, gli ultimi quattro sono detti “servizi host” e devono essere assolti<br />

da tutte le stazioni.<br />

88


Capitolo 3<br />

Meccanismi crittografici<br />

Introduzione<br />

Una qualsiasi trasmissione <strong>di</strong> rete, sia essa effettuata con connessioni<br />

cablate o senza fili, presenta da sempre <strong>di</strong>verse problematiche relative alla<br />

sicurezza. Ad esempio, in una LAN, essendo consentito accesso multiplo al<br />

canale <strong>di</strong> trasmissione, qualsiasi host che sia connesso alla rete ha la possibilità<br />

<strong>di</strong> intercettare una qualunque trasmissione effettuata all’interno della<br />

stessa. Le reti wireless però, trasmettendo dati per mezzo delle onde ra<strong>di</strong>o,<br />

presentano anche altri problemi <strong>di</strong>pendenti dalle caratteristiche del canale<br />

<strong>di</strong> comunicazione utilizzato. Quando una trasmissione avviene attraverso<br />

l’aria, l’intercettazione e la manipolazione dei dati <strong>di</strong>ventano operazioni banali<br />

da parte <strong>di</strong> chiunque possieda un’adeguata apparecchiatura. Si rende<br />

così necessario lo sviluppo <strong>di</strong> <strong>meccanismi</strong> aggiuntivi per la protezione delle<br />

comunicazioni[23]. In particolare i problemi principali che riguardano una<br />

WLAN possono essere sud<strong>di</strong>visi in tre categorie:<br />

• Riservatezza: è necessario impe<strong>di</strong>re che si possano intercettare i dati<br />

trasmessi attraverso il canale.<br />

• Controllo <strong>di</strong> accesso (Access Control): l’accesso alla rete deve essere<br />

consentito solamente agli host autorizzati.<br />

• Integrità dei dati: si deve evitare che si possano manomettere i messaggi<br />

trasmessi.<br />

Tutte le informazioni <strong>di</strong> questo capitolo sono descritte e rielaborate da<br />

[42, 15, 23, 25, 30, 31, 32, 33, 34, 39, 51].<br />

89


3.1 La crittografia dei dati<br />

Meccanismi crittografici<br />

Il processo <strong>di</strong> mo<strong>di</strong>fica dei dati, con lo scopo <strong>di</strong> nasconderne le informazioni<br />

contenute, viene chiamato “crittografia” (encryption). I dati che<br />

non vengono crittografati durante la trasmissione sono chiamati “testo in<br />

chiaro” (plaintext). Nella trattazione informatica <strong>degli</strong> algoritmi e dei <strong>meccanismi</strong><br />

crittografici, i dati in chiaro sono in<strong>di</strong>cati con la lettera P , mentre<br />

i dati cifrati (cyphertext) sono in<strong>di</strong>cati con C. Il processo inverso che permette<br />

<strong>di</strong> trasformare i dati cifrati in testo in chiaro è detto “decrittografia”<br />

(decryption). L’algoritmo <strong>di</strong> crittografia è una funzione matematica usata<br />

per cifrare o decifrare i dati. I moderni algoritmi utilizzano una chiave, in<strong>di</strong>cata<br />

con k, per mo<strong>di</strong>ficare il loro output. La funzione <strong>di</strong> cifratura E opera<br />

su P per produrre il messaggio cifrato C:<br />

Ek(P ) = C<br />

Nel processo inverso, invece, la funzione <strong>di</strong> decifratura D opera su C per<br />

produrre il testo in chiaro P :<br />

Dk(C) = P<br />

Si può notare che il processo <strong>di</strong> cifratura e decifratura è simmetrico.<br />

Infatti la stessa chiave k può essere usata in entrambe le operazioni:<br />

Dk(Ek(P )) = P<br />

3.2 Wired Equivalent Privacy (WEP)<br />

Le specifiche dello standard IEEE 802.11 definiscono un meccanismo per<br />

la riservatezza dei dati conosciuto con il nome <strong>di</strong> Wired Equivalent Privacy<br />

(WEP). Progettato come protocollo <strong>di</strong> sicurezza a livello “Data Link” della<br />

pila ISO-OSI, si pone l’obiettivo <strong>di</strong> raggiungere un livello <strong>di</strong> affidabilità pari<br />

alle reti cablate ethernet.<br />

Tale protocollo si avvale <strong>di</strong> due <strong>meccanismi</strong> aggiuntivi: l’algoritmo crittografico<br />

RC4 ed il sistema <strong>di</strong> controllo dell’integrità dei dati CRC-32.<br />

L’algoritmo alla base del WEP è una sequenza <strong>di</strong> operazioni che permette<br />

<strong>di</strong> mo<strong>di</strong>ficare un blocco <strong>di</strong> testo in chiaro (plaintext) calcolandone lo XOR bit<br />

a bit con una chiave pseudocasuale <strong>di</strong> uguale lunghezza (keystream). Questa<br />

sequenza pseudocasuale è generata dall’algoritmo stesso. Si può notare che<br />

tutto il processo <strong>di</strong> co<strong>di</strong>fica/deco<strong>di</strong>fica prevede la presenza <strong>di</strong> una chiave<br />

segreta che costituisce uno <strong>degli</strong> input fondamentali dell’algoritmo.<br />

Analizziamo ora nel dettaglio il protocollo nella sua fase <strong>di</strong> co<strong>di</strong>fica avvalendoci<br />

della figura 3.1. Immaginiamo una serie <strong>di</strong> client appartenenti<br />

ad una rete wireless. Per comunicare tra loro devono possedere tutti una<br />

chiave segreta. La stessa chiave segreta. La modalità con cui tale chiave<br />

90


3.2 Wired Equivalent Privacy (WEP)<br />

viene scelta e <strong>di</strong>stribuita agli host della rete non è specificata dal protocollo<br />

e dunque la gestione sarà <strong>di</strong> competenza dell’amministratore <strong>di</strong> rete<br />

attraverso opportuni <strong>meccanismi</strong>.<br />

Il primo passo dell’algoritmo prevede che nel data frame scambiato durante<br />

la comunicazione, la chiave segreta sia concatenata con un initialization<br />

vector (IV). Tale stringa costituirà l’input (seed) <strong>di</strong> un generatore pseudo<br />

casuale PRNG (pseudo-random number generator). L’output del generatore<br />

pseudo-casuale sarà una stringa denominata keystream k, la cui lunghezza<br />

è esattamente uguale a quella del messaggio che deve essere trasmesso in<br />

rete. Tale generatore, nel caso dell’WEP, è il famoso algoritmo crittografico<br />

RC4 (Rivest Chipher 4) analizzato meglio nel paragrafo 3.2.2.<br />

Figura 3.1: Fase <strong>di</strong> co<strong>di</strong>fica WEP<br />

Il plaintext che deve essere spe<strong>di</strong>to necessita come già detto <strong>di</strong> un controllo<br />

<strong>di</strong> integrità dei dati attraverso un meccanismo denominato CRC-32.<br />

Tale sistema vuole prevenire la manipolazione dei bit del messaggio durante<br />

la loro trasmissione. Il risultato <strong>di</strong> tale operazione viene denominato Integrity<br />

Check Value (ICV) e verrà concatenato al messaggio stesso nel data<br />

frame. Finalmente giunti a questo punto, il processo <strong>di</strong> cifratura termina<br />

calcolando l’operazione <strong>di</strong> XOR tra il keystream k ed il plaintext concatenato<br />

all’ICV, originando il testo cifrato denominato ciphertext. Il messaggio<br />

finale pronto alla trasmissione, collocato nell’opportuno segmento del data<br />

frame, sarà ottenuto unendo al ciphertext l’IV iniziale trasmesso in chiaro<br />

necessario per la deco<strong>di</strong>fica da parte del destinatario.<br />

La fase <strong>di</strong> deco<strong>di</strong>fica del protocollo WEP, schematizzata in figura 3.2,<br />

prevede una fase iniziale in cui verrà generato lo stesso keystream k utilizzato<br />

per la co<strong>di</strong>fica.<br />

Ciò avviene prendendo l’IV del messaggio ricevuto, concatenandolo alla<br />

chiave segreta in possesso del destinatario ed utilizzando tale seed come input<br />

91


Meccanismi crittografici<br />

del PRGN. Ovviamente avendo lo stesso input, l’algoritmo RC4 genererà lo<br />

stesso output.<br />

Figura 3.2: Fase <strong>di</strong> deco<strong>di</strong>fica WEP<br />

Una volta ottenuto lo stesso keystram k, viene eseguita l’operazione <strong>di</strong><br />

XOR con il ciphertext, sfruttando l’invertibilità dell’operazione ed ottenendo<br />

il plaintext. Viene ora calcolata l’integrità dei dati e confrontato il risultato<br />

del CRC-32 con l’ICV contenuto nel messaggio ricevuto. Se tale confronto<br />

ha esito positivo si accetta il messaggio.<br />

3.2.1 Cyclic Redundancy Check (CRC-32)<br />

Il CRC (Cyclic Redundancy Check) o co<strong>di</strong>fica polinomiale è un co<strong>di</strong>ce<br />

<strong>di</strong> rilevazione errori utilizzato per la trasmissione <strong>di</strong> messaggi. Un co<strong>di</strong>ce a<br />

rilevazione <strong>di</strong> errori ha lo scopo <strong>di</strong> permettere al destinatario <strong>di</strong> determinare<br />

se vi sono stati errori durante la trasmissione. Per ottenere ciò si aggiungono<br />

dei bit <strong>di</strong> controllo calcolati in funzione <strong>degli</strong> stessi bit del plaintext<br />

da inviare. Questi bit denominati ICV (Integrity Check Value) vengono<br />

concatenati al messaggio da inviare.<br />

Il CRC considera il plaintext sottoforma <strong>di</strong> polinomio, avente come coefficienti<br />

le cifre binarie del messaggio. Una sequenza <strong>di</strong> N bit può essere<br />

rappresentata tramite un polinomio a coefficienti binari, <strong>di</strong> grado pari a N-<br />

1, tale che i suoi coefficienti siano uguali ai valori dei bit della sequenza.<br />

Analizziamo il funzionamento nel dettaglio:<br />

Sia<br />

M(x) = b(N − 1) ∗ x N−1 + · · · + b1 ∗ x + b0<br />

il polinomio messaggio. Sia G(x) un polinomio generatore, a coefficienti binari,<br />

scelto in base a <strong>degli</strong> standard dettati dal CCITT (Comité Consultativ<br />

International Télégraphique et Téléphonique)(Tab.3.1). La sigla numerica<br />

92


3.2 Wired Equivalent Privacy (WEP)<br />

accanto all’acronimo CRC in<strong>di</strong>ca il numero <strong>di</strong> bit <strong>di</strong> controllo da aggiugere<br />

alla fine del messaggio. Nel caso del protocollo WEP, vista la criticità dei<br />

dati inviati, il grado <strong>di</strong> precisione del controllo deve essere elevato e dunque<br />

viene utilizzato un polinomio generatore a 32 bit.<br />

POLINOMI GENERATORI G(x)<br />

CRC-CCITT x 16 + x 12 + x 5 + 1<br />

CRC-12 x 12 + x 11 + x 3 + x 2 + x + 1<br />

CRC-16 x 16 + x 12 + x 2 + 1<br />

CRC-32 x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 +<br />

+x 10 + x 7 + x 5 + x 4 + x 2 + x + 1<br />

Tabella 3.1: Polinomi generatori definiti dal CCITT<br />

Vengono aggiunti bit ridondanti in coda al messaggio M(x) per renderlo<br />

sempre <strong>di</strong>visibile per G(x), ovvero tale che il resto R(x) della <strong>di</strong>visione sia<br />

sempre uguale a zero. È necessario ora moltiplicare il messaggio M(x) per un<br />

polinomio <strong>di</strong> grado 32, ovvero aggiungergli in coda 32 zeri. Chiamiamo tale<br />

messaggio allungato M’(x). Divi<strong>di</strong>amo ora M’(x) per il polinomio generatore<br />

a 32 bit definito dal CCITT in tabella 3.1. Ovvero:<br />

M ′ (x) = G(x) ∗ Q(x) + R(x)<br />

dove Q(x) è il quoziente della <strong>di</strong>visione e R(x) il resto. Dalla formula<br />

precedente si ricava il resto<br />

R(x) = M ′ (x) − G(x) ∗ Q(x)<br />

e si compone il definitivo messaggio T(x) che verrà trasmesso nel seguente<br />

modo:<br />

T (x) = M ′ (x)R(x)<br />

concatenando ad M’(x) il resto della <strong>di</strong>visione per G(x). Il destinatario<br />

del messaggio dovrà eseguire le stesse operazioni e confrontare il resto della<br />

<strong>di</strong>visone R(x) con quello ricevuto. Se tale resto risulterà <strong>di</strong>verso da zero,<br />

nel messaggio ricevuto si è verificato un errore, in caso contrario accetterà<br />

il pacchetto.<br />

3.2.2 Rivest Chipher 4 (RC4)<br />

Come anticipato nel paragrafo 2.3.4, analizziamo nel dettaglio il componente<br />

fondamentale del PRNG usato nel protocollo WEP, ovvero il cifrario<br />

a flusso RC4.<br />

Progettato da Ron Rivest nel 1987, rimase un segreto commerciale dell’azienda<br />

RSA Security c○ (Rivest-Chamir-Adleman) finché nel 1994 fu inviato<br />

anonimamente ad una mailing list su Internet, e da allora ampiamente<br />

93


Meccanismi crittografici<br />

stu<strong>di</strong>ato. Utilizzato anche in altri ambiti informatici, come nei protocolli<br />

T LS/SSL (Transport Layer Security / Secure Sockes Layer) per la trasmissione<br />

sicura <strong>di</strong> pagine web, è alla base del protocollo WEP all’interno dello<br />

standard 802.11b. L’RC4 si <strong>di</strong>vide in due parti fondamentali:<br />

1. KSA (Key Scheduling Algorithm)<br />

2. PRGA (Pseudo Random Number Generator)<br />

Questo cifrario può essere visto come una funzione che, a partire da una<br />

chiave, che nel nostro caso è formata dalla chiave segreta <strong>di</strong> 104 bit, più<br />

l’IV (Inizialization Vector) da 24 bit, genera una sequenza pseudocasuale<br />

(keystream) utilizzata per cifrare il flusso <strong>di</strong> dati in chiaro.<br />

L’algoritmo si basa su una caratteristica fondamentale: l’array swapping.<br />

Un array è un vettore, o variabile mono<strong>di</strong>mensionale, formato da un numero<br />

prefissato <strong>di</strong> scomparti (celle) identificati da in<strong>di</strong>ci e contenenti dei valori.<br />

L’operazione <strong>di</strong> swapping consiste nel cambiare l’or<strong>di</strong>ne <strong>di</strong> questi in<strong>di</strong>ci in<br />

modo tale da rendere impossibile a priori sapere l’esatta posizione <strong>di</strong> un<br />

valore all’interno dell’array.<br />

Passi del KSA (Key Scheduling Algorithm)<br />

Descriviamo i passi dell’algoritmo grazie all’uso dello pseudo co<strong>di</strong>ce,<br />

commentando le singole istruzioni:<br />

N=256 In<strong>di</strong>ce che determina il processo <strong>di</strong> rimescolanza<br />

dell’array.L’WEP usa un valore <strong>di</strong> 256<br />

K[...] Array che contiene la chiave segreta.<br />

Init Parte la fase <strong>di</strong> inizializzazione <strong>di</strong> un array con<br />

S[]=rand(0,255); valori random tra 0 e 255 e due in<strong>di</strong>ci<br />

i=0;<br />

j=0;<br />

for(i=0;i≤N-1;i++) Costrutto per incrementare la variabile i ad<br />

ogni ciclo dell’algoritmo<br />

S[i]=i I valori dell’array <strong>di</strong> posizione i saranno<br />

inizializzati con valore i<br />

Swap Inizio fase <strong>di</strong> rimescolanza.Creazione <strong>di</strong> in<strong>di</strong>ci<br />

pseudocasuali per l’array S[].<br />

for(i=0;i≤N-1;i++) Ciclo <strong>di</strong> controllo dello swap.Si accerta che<br />

venga eseguito lo swap 256 volte.<br />

94


3.2 Wired Equivalent Privacy (WEP)<br />

j=j+S[i]+K[i mod l] Equazione usata per creare le proprietà della<br />

chiave segreta usando i valori dell’array S[] per<br />

generare un numero pseudocasuale assegnato a j.<br />

Il valore l è la lunghezza della chiave WEP.<br />

swap(S[i],S[j]) Array swapping tra i valori contenuti in S[i] e<br />

quelli contenuti in S[j].<br />

Passi del PRNG<br />

Descriviamo i passi dell’algoritmo grazie all’uso dello pseudo co<strong>di</strong>ce,<br />

commentando le singole istruzioni:<br />

Init Parte la fase <strong>di</strong> inizializzazione <strong>di</strong> due in<strong>di</strong>ci<br />

i=0;<br />

j=0;<br />

Generate Inizio dei processi <strong>di</strong> generazione del flusso.<br />

L’algoritmo continua finché non ci sono più dati,<br />

che nel caso dell’WEP corrisponde alla fine <strong>di</strong><br />

un dataframe.<br />

i=i+1 L’in<strong>di</strong>ce i viene incrementato per mantenere un<br />

valore corrente usato nel processo <strong>di</strong> swap.<br />

Swap Inizio fase <strong>di</strong> rimescolanza.Creazione <strong>di</strong> in<strong>di</strong>ci<br />

pseudocasuali per l’array S[].<br />

j=j+S[i] La variabile j viene usata per memorizzare<br />

il numero pseudocasuale nella posizione S[i],<br />

con S[i] precedente aggiunto.<br />

swap(S[i],S[j]) Ulteriore operazione <strong>di</strong> rimescolanza<br />

Output L’output prodotto dall’algoritmo RC4 è un array z<br />

z=S[S[i]+S[j]] contenente nelle celle il valore localizzato della<br />

somma dei valori contenuti in S[i] ed S[j]<br />

Crypt Fase <strong>di</strong> criptazione del flusso.L’output dell’algoritmo<br />

cipher=z⊕plaintext viene xorato con il plaintext originando il ciphertext.<br />

95


Meccanismi crittografici<br />

3.3 Wireless Protected Access (WPA-WPA2)<br />

Cenni storici<br />

La <strong>di</strong>ffusione sempre più elevata <strong>di</strong> <strong>di</strong>spositivi senza fili, richiede la necessità<br />

<strong>di</strong> un continuo sviluppo <strong>di</strong> protocolli <strong>di</strong> sicurezza che mo<strong>di</strong>fichino,<br />

integrino e compensino le lacune delle precedenti soluzioni. Viene così istituita<br />

nell’aprile 2004 una task force denominata “Task Group i” con il<br />

compito <strong>di</strong> ridefinire le politiche <strong>di</strong> sicurezza dello standard IEEE 802.11.<br />

Il protocollo che nasce viene chiamato Wireless Protected Access (WPA)<br />

e rappresenta solo alcune delle funzioni presenti nello standard IEEE 802.11i.<br />

Il WPA viene implementato in due <strong>di</strong>verse configurazioni:<br />

• Modalità Personal (WPA-PSK)<br />

• Modalità Enterprise (WPA-EAP)<br />

La modalità Personal viene pensata per le applicazioni SOHO (Small Office<br />

Home Office) e piccole reti, mentre la modalità Enterprise per soluzioni<br />

aziendali ed infrastrutture <strong>di</strong> rete <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni. Successivamente nel<br />

giugno 2004 nasce un protocollo che sfrutta a pieno le funzionalità dell’IEEE<br />

802.11i. Viene chiamato Wireless Protected Access 2 (WPA2) ed ha le stesse<br />

caratteristiche del precedente <strong>di</strong>stinguendosi solo per il <strong>di</strong>verso meccanismo<br />

<strong>di</strong> cifratura dei dati (AES).<br />

Il protocollo WPA viene sviluppato dalla Wi-Fi Alliance su <strong>di</strong>spositivi<br />

basati su WEP, poiché la creazione <strong>di</strong> un protocollo ex novo avrebbe compromesso<br />

la compatibilità <strong>di</strong> milioni <strong>di</strong> <strong>di</strong>spositivi già immessi sul mercato.<br />

Quin<strong>di</strong> WPA viene rilasciato come upgrade <strong>di</strong> <strong>di</strong>spositivi WEP-based.<br />

3.3.1 Funzionamento<br />

Analizzando le principali caratteristiche del protocollo, notiamo che WPA<br />

introduce due fondamentali cambiamenti rispetto all’WEP:una migliore crittografia<br />

dei dati ed un sistema <strong>di</strong> autenticazione reciproco tra client e rete<br />

wireless. Rispetto al protocollo WEP, utilizza l’algoritmo RC4 con una chiave<br />

a 128 bit ed un vettore <strong>di</strong> inizializzazione (IV) a 48 bit per cifrare i dati.<br />

Inoltre fa uso <strong>di</strong> un nuovo protocollo denominato Temporary Key Integrity<br />

Protocol (TKIP) che permette <strong>di</strong> cambiare, dopo un certo numero <strong>di</strong> dati<br />

scambiati, le chiavi crittografiche utilizzate.<br />

Per il controllo dell’integrità dei dati viene abbandonato il sistema CRC-<br />

32 rimpiazzandolo con il più <strong>di</strong>namico Message Integrity Code (MIC), che<br />

analizzeremo approfon<strong>di</strong>tamente nel paragrafo successivo, la cui implementazione<br />

in WPA prende il nome <strong>di</strong> “Michael”. Non manca come ulteriore<br />

miglioria un meccanismo <strong>di</strong> mutua autenticazione tra Acces Point e client<br />

<strong>di</strong> rete, ulteriore funzione assente nel’WEP.<br />

96


3.3 Wireless Protected Access (WPA-WPA2)<br />

Il protocollo prevede una sud<strong>di</strong>visione netta tra la fase <strong>di</strong> crittografia dei<br />

dati e la fase <strong>di</strong> autenticazione dei client <strong>di</strong> rete. Analizziamo nel dettaglio<br />

la fasi crittografica e <strong>di</strong> autenticazione.<br />

3.3.2 WPA-WPA2: Crittografia e sicurezza dei dati<br />

La <strong>di</strong>stinzione tra WPA e WPA2 risiede nel <strong>di</strong>verso meccanismo crittografico<br />

utilizzato. WPA si affida all’algoritmo RC4 già <strong>di</strong>scusso nel capitolo<br />

precedente, mentre WPA2 si affida al noto algoritmo AES. La scelta<br />

<strong>di</strong> WPA <strong>di</strong> ricadere sull’uso <strong>di</strong> RC4 sta nel fatto che la Wi-fi Alliance<br />

decise <strong>di</strong> riutilizzare l’hardware dei <strong>di</strong>spositivi già <strong>di</strong>ffusi sul mercato che<br />

implementavano WEP.<br />

WPA (TKIP)<br />

La tecnica <strong>di</strong> cifratura WPA fa uso <strong>di</strong> un sistema <strong>di</strong> criptaggio e <strong>di</strong> sicurezza<br />

dei dati chiamato Temporary Key Integrity Protocol (TKIP). Pensato<br />

per sopperire alle debolezze dell’WEP, il TKIP viene progettato come<br />

“involucro” attorno al preesistente meccanismo WEP rendendolo così un<br />

sottocomponente del processo. Il TKIP viene implementato come software<br />

evitando mo<strong>di</strong>fiche hardware ai <strong>di</strong>spositivi. E’ composto dai seguenti<br />

elementi:<br />

1. Meccanismo <strong>di</strong> controllo dell’integrità dei dati crittografati.<br />

2. Sistema <strong>di</strong> sequenziamento dei pacchetti trasmessi.<br />

3. Sistema <strong>di</strong> rimescolamento delle chiavi.<br />

4. Meccanismo <strong>di</strong> ri-generazione casuale delle chiavi durante il processo.<br />

Il sistema TKIP non utilizza mai lo stesso valore IV più <strong>di</strong> una volta per<br />

ogni chiave <strong>di</strong> sessione. Regolarmente genera una nuova chiave <strong>di</strong> sessione<br />

casuale prima dell’esaurirsi delle combinazioni possibili per gli IV. Fornisce<br />

un più completo sistema <strong>di</strong> rimescolamento dell’IV con la chiave <strong>di</strong> sessione<br />

per ottenere il keystream da passare in input ad RC4. Il destinatario del<br />

flusso <strong>di</strong> dati scarta tutti i pacchetti il cui valore IV è minore od uguale<br />

all’ultimo pacchetto ricevuto con successo, e criptato con la stessa chiave.<br />

Controllo dell’integrità dei dati: MICHAEL (MIC)<br />

Il MIC è un <strong>di</strong>spositivo crittografico per rilevare la presenza <strong>di</strong> messaggi<br />

falsi nella comunicazione. Questi sistemi in letteratura vengono chiamati<br />

Message Authentication Codes (MAC), ma l’acronimo è già stato utilizzato<br />

dall’IEEE 802.11 con il significato <strong>di</strong> me<strong>di</strong>a access control dunque si è optato<br />

per l’attuale MIC.<br />

97


Meccanismi crittografici<br />

Il meccanismo classico include CBC-MAC [43], costituito da un cipher<br />

block ed ampiamente usato nelle applicazioni bancarie, e HMAC utilizzato<br />

da Internet Protocol Security (Ipsec). Il sistema è composto da tre componenti:<br />

una chiave segreta k (conosciuta solo da mittente e destinatario), una<br />

funzione <strong>di</strong> etichettatura ed un attributo <strong>di</strong> verifica.<br />

La funzione <strong>di</strong> etichettatura E prende in input la chiave k ed il messaggio<br />

M da inviare sulla rete. Genera come output un’etichetta T , chiamata anche<br />

“co<strong>di</strong>ce <strong>di</strong> integrità” del messaggio. Il protocollo protegge un messaggio<br />

da eventuali falsi inviando in rete il messaggio M ed il co<strong>di</strong>ce <strong>di</strong> integrità<br />

calcolato T . Il destinatario, ricevuto il messaggio M, lo introduce assieme<br />

alla chiave k ed al co<strong>di</strong>ce <strong>di</strong> integrità all’interno dell’attributo <strong>di</strong> verifica.<br />

Tale pre<strong>di</strong>cato calcola nuovamente il co<strong>di</strong>ce <strong>di</strong> integrità del messaggio e lo<br />

confronta con quello ricevuto T . In caso <strong>di</strong> matching positivo restituisce<br />

come risultato il valore logico TRUE, altrimenti FALSE presumendo che il<br />

messaggio ricevuto sia stato manipolato.<br />

Il protocollo MIC viene considerato sicuro se risulta impossibile per un<br />

attaccante scegliere un co<strong>di</strong>ce <strong>di</strong> integrità corretto per un messaggio ex novo<br />

M, senza conoscere la chiave k.<br />

“Michael” è un’adattamento <strong>di</strong> MIC completamente fatto su misura per<br />

TKIP e sviluppato interamente da Niels Ferguson. Analizziamolo nel dettaglio.<br />

La chiave segreta <strong>di</strong> “Michael”, formata da 64 bit, è rappresentata da<br />

due parole (k0, k1) ciascuna <strong>di</strong> 32 bit sequenziati Little-En<strong>di</strong>an. La funzione<br />

<strong>di</strong> etichettatura E completa un messaggio con valori esadecimali 0x5a e<br />

sufficienti 0 per ottenere una lunghezza multiplo <strong>di</strong> 32 bit.<br />

Successivamente viene sud<strong>di</strong>viso tale stream in una sequenza <strong>di</strong> parole<br />

<strong>di</strong> 32 bit M1M2 . . . Mn, e finalmente viene calcolato il co<strong>di</strong>ce <strong>di</strong> integrità<br />

utilizzando la chiave e seguendo il seguente algoritmo iterativo E:<br />

(L, R) ← (K0, K1)<br />

do i from 1 to n<br />

L ← L ⊕ Mi<br />

(L, R) ← b(L, R)<br />

return (L, R) come etichetta<br />

dove ⊕ denota l’OR esclusivo e b è una semplice funzione fatta per<br />

ruotare, sommare little-En<strong>di</strong>an ed effettuare lo swapping <strong>di</strong> bit. L’attributo<br />

<strong>di</strong> verifica in “Michael” ripete la funzione <strong>di</strong> etichettatura sul messaggio<br />

confrontando il risultato ottenuto bit a bit con l’etichetta ricevuta dal<br />

mittente.<br />

98


3.3 Wireless Protected Access (WPA-WPA2)<br />

Sistema <strong>di</strong> sequenziamento dei pacchetti trasmessi<br />

Una cosa che il protocollo MIC non riesce a rilevare è la ripetizione dei<br />

pacchetti trasmessi (replayed packet). Questo accade quando un attaccante<br />

intercetta un pacchetto valido durante una comunicazione e lo ritrasmette<br />

un numero imprecisato <strong>di</strong> volte. Il modo standard <strong>di</strong> affrontare il problema<br />

prevede <strong>di</strong> associare ai pacchetti uno spazio <strong>di</strong> numeri sequenziale attraverso<br />

la chiave MIC k, e reinizializzare lo spazio della sequenza ogni volta che la<br />

chiave segreta k viene cambiata. Questa strategia richiede che il mittente<br />

si astenga dal mandare dati protetti con la vecchia chiave, finché non viene<br />

esaurito lo spazio numerico a <strong>di</strong>sposizione. Quando questo accade le scelte<br />

a <strong>di</strong>sposizione del mittente sono:<br />

• interrompere definitivamente la comunicazione;<br />

• provare ad impostare una nuova chiave per MIC;<br />

• continuare ad inviare traffico senza alcuna protezione crittografica;<br />

Se non si adotta una <strong>di</strong> queste soluzioni, si rischia <strong>di</strong> esporre i dati già<br />

protetti con la chiave <strong>di</strong> sessione ad un <strong>attacco</strong>.<br />

Il protocollo TKIP segue con attenzione le linee guida dell’approccio<br />

classico. Per riconoscere i pacchetti replicati, TKIP riutilizza lo spazio <strong>di</strong><br />

valori <strong>degli</strong> Initialization Vector (IV) dell’WEP, come spazio numerico per il<br />

sequenziamento dei pacchetti. Sia il mittente che il destinatario inizializzano<br />

lo spazio <strong>di</strong> sequenziamento a zero quando si scambiano una nuova chiave<br />

k, e il mittente incrementa il numero sequenziale ad ogni pacchetto inviato.<br />

TKIP richiede che il destinatario osservi il giusto sequenziamento <strong>degli</strong> IV<br />

dei pacchetti in arrivo. Il protocollo TKIP definisce che un pacchetto è fuori<br />

sequenza, se il suo IV è uguale o minore <strong>di</strong> quello ricavato dal frammento<br />

<strong>di</strong> pacchetto Mac Protocol Data Unit (MPDU) precedente ricevuto correttamente<br />

ed associato alla stessa chiave. Se un pacchetto MPDU arriva non<br />

in or<strong>di</strong>ne, allora viene considerato “replicato”, ed il destinatario lo scarta<br />

incrementando un contatore per i pacchetti replicati.<br />

Riassumiamo le principali regole <strong>di</strong> protezione dalla replicazione <strong>di</strong> pacchetti<br />

implementati da TKIP:<br />

• TKIP <strong>di</strong>fferisce dalla usuale progettazione dell’approccio classico per<br />

il fatto che associa la sequenza numerica con la chiave <strong>di</strong> cifratura k<br />

invece che con la chiave MIC. Questa scelta deriva dal fatto che viene<br />

usato come sequenza lo spazio numerico <strong>degli</strong> IV dell’WEP sfruttando<br />

l’hardware ed il formato dei pacchetti preesistente. Lo standard<br />

IEEE 802.11 del 1999 associa il campo IV con il frammento <strong>di</strong> pacchetto<br />

denominato Mac Protocol Data Unit (MPDU), poiché il legame<br />

99


Meccanismi crittografici<br />

con i punti <strong>di</strong> accesso alla rete necessita il calcolo del co<strong>di</strong>ce <strong>di</strong> integrità<br />

TKIP sull’intero pacchetto denominato Mac Service Data Unit<br />

(MSDU).<br />

• Il sistema <strong>di</strong> rilevazione TKIP per la replicazione <strong>di</strong> pacchetti ha una<br />

serio limite. Non può essere definito, in accordo con l’IEEE 802.11<br />

e, strumento classificato Quality of Service (QoS), termine coniato<br />

per in<strong>di</strong>care i parametri usati per caratterizzare la qualità del servizio<br />

offerto dalla rete.<br />

Sistema <strong>di</strong> rimescolamento delle chiavi<br />

Diversamente dal MIC, dal sistema <strong>di</strong> rilevazione dei pacchetti replicati<br />

o dal meccanismo <strong>di</strong> costruzione <strong>di</strong> nuove chiavi, tutti elementi necessari per<br />

ogni protocollo che sostiene <strong>di</strong> offrire un servizio <strong>di</strong> sicurezza, la costruzione<br />

<strong>di</strong> una chiave per ogni pacchetto (per-packet key) è una caratteristica necessaria<br />

unicamente per correggere i <strong>di</strong>fetti dell’implementazione <strong>di</strong> RC4 nell’WEP.<br />

Ricor<strong>di</strong>amo che il protocollo WEP costruisce la chiave input per<br />

RC4 concatenando la chiave segreta k con l’IV del pacchetto. Tale chiave<br />

viene denominata “chiave temporanea” poiché ha un tempo <strong>di</strong> vita limitato<br />

e viene rimpiazzata frequentemente.<br />

Il nuovo meccanismo, inventato da Dought Whiting e Ron Rivest, e<br />

denominato funzione <strong>di</strong> rimescolamento chiavi TKIP, sostituisce il vecchio<br />

metodo implementato nell’WEP. Esso trasforma una chiave temporanea ed<br />

un contatore sequenziale <strong>di</strong> pacchetti in una chiave ed un IV per-packet.<br />

La funzione <strong>di</strong> rimescolamento opera in due fasi, ognuna delle quali corregge<br />

un <strong>di</strong>fetto dell’WEP. La prima fase impe<strong>di</strong>sce che la stessa chiave sia<br />

usata da tutti i collegamenti, mentre la seconda fase rompe il legame dell’IV<br />

pubblico dalla conoscenza della chiave.<br />

Fase 1 Questa fase combina l’in<strong>di</strong>zzo MAC dell’interfaccia 802.11 locale<br />

con la chiave temporanea attraverso operazioni <strong>di</strong> XOR (⊕) iterative,<br />

su ognuno dei loro byte passandoli come input ad una “S-Box” 1 per<br />

produrre una chiave interme<strong>di</strong>a. Mescolare in questo modo l’in<strong>di</strong>rizzo<br />

MAC alla chiave temporanea induce i <strong>di</strong>versi client in rete, e gli Access<br />

Points a generare chiavi interme<strong>di</strong>e <strong>di</strong>verse anche se a partire tutti dalla<br />

stessa chiave iniziale. Questa costruzione forza il flusso delle chiavi<br />

crittografiche ad essere sempre <strong>di</strong>verso per ogni stazione della rete.<br />

Questa fase deve essere eseguita solo quando la chiave temporanea k<br />

viene aggiornata.<br />

1 Con il termine “S-Box” si intende una tabella <strong>di</strong> sostituzioni non-lineari invertibili<br />

100


3.3 Wireless Protected Access (WPA-WPA2)<br />

Fase 2 In questa fase viene utilizzato un “mini” meccanismo <strong>di</strong> cifratura<br />

per criptare il numero <strong>di</strong> sequenza del pacchetto con la chiave temporanea,<br />

producendo una chiave Ad-Hoc per pacchetto da 128 bit. In realtà,<br />

i primi 3 byte dell’output della fase 2, corrispondono esattamente<br />

all’IV dell’WEP, e gli ultimi 13 byte alla chiave WEP poiché l’hardware<br />

esistente per il vecchio protocollo si aspetta la concatenazione<br />

della chiave k con l’IV per formare la chiave Ad-Hoc per pacchetto.<br />

Tale sistema sod<strong>di</strong>sfa il secondo scopo della progettazione delle funzioni<br />

<strong>di</strong> mixaggio delle chiavi, rendendo <strong>di</strong>fficoltoso ad un attaccante<br />

correlare gli IV con le chiavi create per ogni pacchetto. La cifratura<br />

utilizzata in questa fase viene detta struttura <strong>di</strong> Feistel 2 . Questa<br />

struttura nel suo ciclo interno esegue una trasformazione della forma<br />

(L, R) → (R, L ⊕ f(R)). Come per “Michael”, tali operazioni interne<br />

possono essere programmate utilizzando solamente costrutti elementari:<br />

XOR, shift, rotazioni ed altro, implementabili economicamente<br />

da un punto <strong>di</strong> vista computazionale su processori adatti per <strong>di</strong>spositivi<br />

802.11. La fase 2 rappresenta il numero <strong>di</strong> sequenza del pacchetto<br />

con una variabile <strong>di</strong> 16 bit Little-En<strong>di</strong>an. Assegna gli 8 bit più significativi<br />

<strong>di</strong> tale variabile al primo ed al secondo byte dell’IV WEP,<br />

ed i bit meno significativi al terzo byte dell’IV. Successivamente viene<br />

mascherato il bit più significativo del secondo byte dell’IV, per prevenire<br />

la concatenazione della chiave per pacchetto dell’WEP dal produrre<br />

una delle chiavi “deboli”, noto problema nell’implementazione<br />

<strong>di</strong> RC4. Nella progettazione delle funzioni <strong>di</strong> mixaggio delle chiavi,<br />

l’aspetto delle performance del sistema ha un ruolo fondamentale e<br />

dunque viene fissato un rigoroso limite al numero <strong>di</strong> cicli <strong>di</strong> CPU che<br />

vengono utilizzati.<br />

Meccanismo <strong>di</strong> ri-generazione casuale delle chiavi<br />

Questo sistema <strong>di</strong> ri-generazione delle chiavi fornisce chiavi sempre nuove<br />

utilizzate per i vari algoritmi TKIP. Analizziamo lo schema generale <strong>di</strong><br />

funzionamento.<br />

L’architettura TGi (Task Group i) per la generazione <strong>di</strong> chiavi <strong>di</strong>pende<br />

da una gerarchia <strong>di</strong> almeno tre tipi <strong>di</strong> chiave: chiavi temporanee, chiavi <strong>di</strong><br />

cifratura e chiavi “master”. Il livello più basso della gerarchia è occupato<br />

dalle chiavi temporanee utilizzate dal sistema <strong>di</strong> sicurezza <strong>di</strong> TKIP e dall’algoritmo<br />

<strong>di</strong> autenticazione. TKIP si serve <strong>di</strong> due <strong>di</strong> tipi <strong>di</strong> chiavi temporali:<br />

una chiave criptata a 128 bit ed una seconda chiave per il controllo <strong>di</strong> integrità<br />

dei dati da 64 bit. TKIP usa questo meccanismo per entrambe le<br />

<strong>di</strong>rezioni <strong>di</strong> comunicazione tra client ed Access Points, e dunque ogni <strong>di</strong>rezione<br />

<strong>di</strong> comunicazione ha una coppia <strong>di</strong> chiavi temporanee per un totale<br />

2 Sistema <strong>di</strong> cifratura a blocchi<br />

101


Meccanismi crittografici<br />

<strong>di</strong> 4 chiavi. Il protocollo identifica questo insieme <strong>di</strong> chiavi attraverso una<br />

variabile <strong>di</strong> 2 bit chiamata WEP keyid. Precedentemente abbiamo osservato<br />

che gli IV WEP non possono mai essere riutilizzati con la stessa chiave, per<br />

evitare <strong>di</strong> compromettere la garanzia <strong>di</strong> sicurezza <strong>di</strong> RC4, e che la funzione <strong>di</strong><br />

rimescolamento <strong>di</strong> TKIP può costruire al più 2 16 combinazioni <strong>di</strong> IV. Questo<br />

implica che TKIP richieda un meccanismo <strong>di</strong> aggiornamento delle chiavi che<br />

si attivi almeno ogni 2 16 pacchetti trasmessi. Per poter effettuare il passaggio<br />

da un insieme <strong>di</strong> chiavi ad un altro, ogni associazione tra client alloca due<br />

WEP keyid. Quando inizialmente viene stabilito un collegamento, un primo<br />

insieme <strong>di</strong> chiavi temporanee viene identificato da uno <strong>di</strong> questi WEP keyid.<br />

Quando vengono create nuove chiavi, i collegamenti rimbalzano tra i due<br />

keyid mantenedo legato il nuovo insieme <strong>di</strong> chiavi temporanee al più piccolo<br />

valore keyid. Dopo aver legato il nuovo insieme <strong>di</strong> chiavi temporanee, l’implementazione<br />

<strong>di</strong> TKIP riceve pacchetti associati al vecchio valore keyid ed<br />

alle sue chiavi temporanee, ma successivamente trasmette i nuovi pacchetti<br />

riferiti all’altro keyid ed alle nuove chiavi temporanee associate. I requisiti<br />

delle nuove chiavi temporanee sono due; che siano “fresh”, ovvero che non<br />

siano mai state usate in precedenza, anche in una sessione <strong>di</strong> comunicazione<br />

dello stesso livello o ad un riavvio del <strong>di</strong>spositivo, e che non ci siano legami<br />

algoritmici tra le chiavi dello stesso insieme. L’istanziazione <strong>di</strong> nuove chiavi<br />

temporanee richide un delicato coor<strong>di</strong>namento. TGi assolve a questo incarico<br />

utilizzando speciali messaggi. Questi messaggi <strong>di</strong> avviso <strong>di</strong> generazione <strong>di</strong><br />

nuove chiavi, forniscono informazioni dalle quali sia le stazioni (client) che<br />

gli Access Points ricavano il nuovo insieme <strong>di</strong> chiavi temporanee. Questo<br />

scambio <strong>di</strong> messaggi deve a sua volta essere sicuro altrimenti un attaccante<br />

può comprometterne il contenuto e <strong>di</strong> conseguenza falsare il protocollo.<br />

Il successivo livello <strong>di</strong> gerarchia occupato dalle chiavi <strong>di</strong> cifratura serve<br />

per proteggere le chiavi temporanee. Ci sono due tipi <strong>di</strong> chiavi <strong>di</strong> cifratura:<br />

una per criptare i messaggi contenenti informazioni sulle nuove chiavi, e<br />

l’altra per proteggere i messaggi dalla contraffazione. I requisiti per tali<br />

chiavi sono simili a quelli delle precedenti: i clients e gli APs devono stabilire<br />

un insieme nuovo <strong>di</strong> chiavi <strong>di</strong> cifratura ad ogni connessione.<br />

Una architettura progettata a tale scopo si affida al protocollo 802.1X,<br />

ed utilizza il server <strong>di</strong> autenticazione 802.1X per inviare un insieme con<strong>di</strong>viso<br />

<strong>di</strong> chiavi <strong>di</strong> cifratura ai cliente e a agli APs. La tecnologia 802.1X prevede<br />

che l’AP ed il server <strong>di</strong> autenticazione con<strong>di</strong>vidano una chiave che può proteggere<br />

la loro comunicazione. Tutto ciò <strong>di</strong> cui si ha bisogno è un modo<br />

per proteggere l’altra fase <strong>di</strong> comunicazione, tra il server <strong>di</strong> autenticazione<br />

ed i clients. Questo ci porta al più alto livello <strong>di</strong> gerarchia delle chiavi, la<br />

chiave “master”. Questa chiave è con<strong>di</strong>visa tra i clients della rete ed il server<br />

<strong>di</strong> autenticazione 802.1X. Questa è la chiave maggiormente legata all’autenticazione,<br />

e viene utilizzata per assicurare la <strong>di</strong>stribuzione delle chiavi <strong>di</strong><br />

cifratura. I requisiti per questa chiave sono i soliti con un occhio <strong>di</strong> riguardo<br />

al fatto che non ci sia nessuna relazione tra chiavi “master” <strong>di</strong> ogni altra<br />

102


3.3 Wireless Protected Access (WPA-WPA2)<br />

sessione <strong>di</strong> rete. Se tali con<strong>di</strong>zioni fossero violate, un attaccante può facilmente<br />

compromettere la chiave “master” e <strong>di</strong> conseguenza può banalmente<br />

risalire alle chiavi temporanee e <strong>di</strong> cifratura facendo crollare la pretesa <strong>di</strong><br />

sicurezza <strong>di</strong> TKIP.<br />

Questo meccanismo <strong>di</strong> rigenerazione delle chiavi presenta allo stato dell’arte<br />

una con<strong>di</strong>zione necessaria ma non sufficiente per garantire la sicurezza<br />

TKIP. Devono essere ancora risolti alcuni delicati problemi riguardanti l’efficienza<br />

<strong>di</strong> una rete reale. Per esempio uno dei problemi maggiori riguarda<br />

come supportare il roaming tra clients da un Access Point ad un altro in<br />

infrastrutture <strong>di</strong> rete estese. Una completa riautenticazione con il server<br />

802.1X potrebbe essere troppo lenta per gestire applicazioni real-time come<br />

il traffico voice over IP, che richiederebbero <strong>meccanismi</strong> più veloci.<br />

Assemblaggio dei componenti <strong>di</strong> TKIP<br />

Ora che abbiamo visto tutti i componenti che costituiscono il protocollo<br />

TKIP, dobbiamo vedere come organizzare il loro funzionamento assieme<br />

all’WEP per dare origine al protocollo <strong>di</strong> sicurezza previsto. Quando una<br />

stazione all’interno della rete vuole iniziare una connessione, utilizza il server<br />

802.1X per autenticarsi e per ottenere una nuova chiave “master”. Questa<br />

chiave la può utilizzare finché non viene <strong>di</strong>chiarata obsoleta o finché non<br />

raggiunge un timeout <strong>di</strong> scadenza. La chiave “master” è legata <strong>di</strong>rettamente<br />

alla fase <strong>di</strong> autenticazione, ed implicitamente tutte le chiavi da lei<br />

generate ed il traffico protetto prodotto viene autorizzato all’interno della<br />

comunicazione. Dopo aver stabilito la chiave “master”, il server <strong>di</strong> autenticazione<br />

<strong>di</strong>stribuisce nuove chiavi alle stazioni ed agli Access Points da cui<br />

derivare il primo insieme <strong>di</strong> chiavi <strong>di</strong> cifratura. In questa fase la chiave<br />

“master” protegge lo scambio <strong>di</strong> informazioni tra il server <strong>di</strong> autenticazione<br />

e le varie stazioni della rete. Il protocollo inoltre fornisce uno mezzo per le<br />

stazioni e gli AP <strong>di</strong> aggiornare le chiavi <strong>di</strong> cifratura dopo ogni tentativo <strong>di</strong><br />

riconnessione. L’AP utilizza le chiavi <strong>di</strong> cifrature ricevute per proteggere le<br />

nuove chiavi temporanee che invierà alle stazioni. L’AP ripete l’aggiornamento<br />

delle chiavi alle stazioni poco più frequentemente <strong>di</strong> una volta ogni<br />

2 16 pacchetti <strong>di</strong> dati trasmessi, in modo che la connessione abbia sempre<br />

nuove chiavi e spazio numerico per etichettare i pacchetti secondo gli obiettivi<br />

previsti da TKIP. Quando l’intero algoritmo <strong>di</strong> sicurezza si mette in<br />

moto, né gli Access Points né le stazioni permettono il passaggio del traffico<br />

<strong>di</strong> dati finché le chiavi temporanee non sono attive al loro posto. Una volta<br />

che ciò avviene, gli AP ed i clients possono utilizzare queste chiavi temporanee<br />

per proteggere i pacchetti trasmessi usando TKIP, ed entrambi scartare<br />

pacchetti ricevuti non protetti con lo stesso sistema.<br />

Descriviamo nel dettaglio i processi <strong>di</strong> incapsulamento e decapsulamento<br />

103


<strong>di</strong> TKIP.<br />

Meccanismi crittografici<br />

Come schematizzato nel <strong>di</strong>agramma a blocchi in figura 3.3 ve<strong>di</strong>amo che<br />

quando un client desidera trasmettere un Mac Service Data Unit (MSDU),<br />

l’implementazione TKIP utilizza la chiave temporanea come input per il <strong>di</strong>spositivo<br />

“Michael” per computare il MIC dell’in<strong>di</strong>rizzo MAC <strong>di</strong> sorgente e<br />

destinazione, come pure per il pacchetto Mac Protocol Data Unit (MPDU).<br />

TKIP concatena il MIC al campo “dati” estendendo così il pacchetto dati<br />

<strong>di</strong> 8 byte. Successivamente l’implementazione 802.11 frammenta l’MSDU in<br />

più MPDU come richiesto dai <strong>di</strong>spositivi seguenti. Una volta fatto questo,<br />

ad ogni frammento viene assegnato un numero sequenziale che viene utilizzato<br />

dalla funzione <strong>di</strong> mixaggio delle chiavi per creare una chiave Ad-Hoc<br />

per ogni pacchetto (per-packet key), rappresentata come un IV WEP ed una<br />

chiave segreta. A questo punto, i passi rimanenti sono essenzialmente quelli<br />

del protocollo WEP tra<strong>di</strong>zionale implementato nel <strong>di</strong>spositivo hardware. Il<br />

sistema elabora e concatena l’ICV appena calcolato al campo “dati” ICV<br />

<strong>di</strong> ogni frammento. La fase <strong>di</strong> criptaggio consuma l’IV e la chiave base,<br />

crittografa il campo “dati” compreso MIC e ICV, e co<strong>di</strong>fica l’IV ed il key id<br />

dell’insieme <strong>di</strong> chiavi temporanee nel campo IV WEP, completando il processo<br />

<strong>di</strong> incapsulamento. L’intero MPDU ora è protetto e pronto per essere<br />

trasmesso.<br />

Bisogna osservare che poiché TKIP utilizza una singola coppia <strong>di</strong> chiavi<br />

per calcolare il MIC e per crittografare ognuno dei frammenti, è necessario<br />

che il mittente abbia la capacità <strong>di</strong> pre<strong>di</strong>re il numero <strong>di</strong> frammenti che ogni<br />

MSDU genererà. In particolare se l’ammontare dei numeri <strong>di</strong> sequenza<br />

rimanenti non è sufficiente ad etichettare tutti i frammenti, allora il client<br />

dovrà utilizzare un nuovo insieme <strong>di</strong> chiavi temporanee prima dell’incapsulamento.<br />

L’interrelazione tra i componenti della fase <strong>di</strong> incapsulamento<br />

TKIP, è pensata per accrescere la sicurezza globale. TKIP utilizza l’algoritmo<br />

RC4 per crittografare MIC. Si ipotizza che questo <strong>di</strong>minuisca la quantità<br />

<strong>di</strong> informazione sulla chiave MIC <strong>di</strong>sponibile ad un attaccante. Un <strong>attacco</strong><br />

che cambi la chiave crittografica temporanea per ogni pacchetto, fa si che<br />

probabilmente l’ICV ed il MIC saranno decriptati in maniera errata. Poiché<br />

l’MPDU è protetto da errori <strong>di</strong> bit casuali sia dal protocollo 802.11 sia da<br />

ICV, un valore FCS ed ICV vali<strong>di</strong> ed un MIC non valido, implicano che il<br />

pacchetto sia quasi sicuramente falso. Il MIC protegge l’in<strong>di</strong>rizzo <strong>di</strong> sorgente<br />

e destinazione da eventuali cambiamenti, cosicchè pacchetti che hanno vita<br />

breve sono considerati non autorizzati o falsificati.<br />

In ricezione, i passi <strong>di</strong> decapsulamento sono in gran parte rovesciati. Osserviamo<br />

il <strong>di</strong>agramma in figura 3.4. Il destinatario utilizza l’in<strong>di</strong>rizzo del<br />

mittente ed il key id per identificare il corretto insieme <strong>di</strong> chiavi temporanee.<br />

Fatto questo, viene estratto il numero <strong>di</strong> sequenza dal pacchetto e<br />

controllato per riutilizzarlo. Se il numero è già stato utilizzato, il pacchetto<br />

104


3.3 Wireless Protected Access (WPA-WPA2)<br />

Figura 3.3: Fase <strong>di</strong> incapsulamento TKIP<br />

viene scartato. Se invece è un nuovo numero sequenziale, TKIP usa la funzione<br />

<strong>di</strong> mixaggio della chiave per combinarlo con la chiave <strong>di</strong> decriptaggio<br />

temporanea dando origine alla chiave WEP <strong>di</strong> decifratura per pacchetto.<br />

Quest’ultima viene passata al <strong>di</strong>spositivo hardware WEP, il quale decifra il<br />

campo “dati” controllandone il valore <strong>di</strong> integrità ICV. Se il controllo fallisce<br />

il pacchetto è scartato e viene incrementato un apposito contatore. In caso<br />

<strong>di</strong> successo viene incrementato il valore sequenziale e viene unito l’MPDU<br />

ad ogni altro frammento richiesto per ricostruire l’MSDU. Dopo che tutti<br />

i frammenti MPDU sono riaccorpati a formare l’MSDU, il protocollo usa<br />

“Michael” per verificarne l’autenticità. Se il controllo attraverso il pre<strong>di</strong>cato<br />

risulta falso, TKIP considera l’MSDU come contraffatto e richiama le contromisure.<br />

Altrimenti il pacchetto viene consegnato al livello superiore del<br />

protocollo <strong>di</strong> comunicazione <strong>di</strong> rete.<br />

3.3.3 WPA2 (AES)<br />

Come già anticipato il protocollo WPA2 sviluppato dal Task Group i<br />

(TGi) si basa sull’algoritmo <strong>di</strong> sicurezza più <strong>di</strong>ffuso al mondo: l’Advanced<br />

Encryption Standard (AES). AES rappresenta, allo stato dell’arte, l’algoritmo<br />

più adatto per la cifratura <strong>di</strong> dati <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni.Sviluppato dal<br />

Federal Government Encryption Standard nel novembre 2001 e descritto nel<br />

documento del Federal Information Processing Standard (FIPS) FIPS−197,<br />

sostituisce l’ormai obsoleto Data Encryprtion Standard (DES) del 1977.<br />

AES è definito come un algoritmo <strong>di</strong> cifratura a blocchi a chiave simmetrica.<br />

Tale algoritmo utilizza la stessa chiave sia per la co<strong>di</strong>fica che per<br />

la deco<strong>di</strong>fica dei dati. AES supporta lunghezze <strong>di</strong> chiavi pari a 128, 192 e<br />

105


Figura 3.4: Fase <strong>di</strong> decapsulamento TKIP<br />

Meccanismi crittografici<br />

256 bits. Chiavi <strong>di</strong> lunghezza maggiore assicurano un corrispettivo livello <strong>di</strong><br />

sicurezza se l’algoritmo viene usato propriamente. I crittografi ritengono che<br />

una lunghezza <strong>di</strong> chiave pari a 128 bit, sia sufficiente per garantire la sicurezza<br />

dei dati per uso commerciale o privato. Di conseguenza, la possibilità <strong>di</strong><br />

utilizzare chiavi <strong>di</strong> lunghezza superiore è da considerarsi una garanzia per il<br />

futuro piuttosto che una necessità pratica. Ve<strong>di</strong>amo in dettaglio il funzionamento<br />

<strong>di</strong> un algoritmo <strong>di</strong> cifratura a blocchi.<br />

Tale algoritmo opera con stringhe <strong>di</strong> bit <strong>di</strong> lunghezza predefinita al contrario<br />

<strong>degli</strong> algoritmi <strong>di</strong> cifratura a flusso, come RC4, che elaborano un<br />

singolo byte alla volta. Il numero <strong>di</strong> bit <strong>di</strong> un blocco viene chiamato <strong>di</strong>mensione<br />

del blocco <strong>di</strong> cifratura. AES utilizza blocchi <strong>di</strong> <strong>di</strong>mensione pari a<br />

128 bits, ovvero 16 byte. Se il pacchetto <strong>di</strong> dati trasmessi in rete che deve<br />

essere protetto non è un multiplo della <strong>di</strong>mensione del blocco, allora viene<br />

completato automaticamente fino a <strong>di</strong>ventarlo. Per poter applicare un algoritmo<br />

<strong>di</strong> cifratura a blocchi bisogna scegliere una “modalità operativa”.<br />

Una modalità operativa è una precisa “ricetta” per utilizzare l’algoritmo.<br />

Sbagliare qualche passo <strong>di</strong> tale “ricetta” può compromettere la garanzia <strong>di</strong><br />

sicurezza della cifratura. Le modalità operative più note sono:<br />

• Electronic Codebook (ECB)<br />

• Counter (CTR)<br />

• Cipher-Block Chaining (CBC)<br />

La modalità Electronic Codebook (ECB) prevede <strong>di</strong> sud<strong>di</strong>videre il mes-<br />

106


3.3 Wireless Protected Access (WPA-WPA2)<br />

saggio M in blocchi M1M2M3 . . . e cifrarne uno alla volta nel seguente<br />

modo:<br />

for i = 1 to n do Ci ← Ek(Mi)<br />

dove con Ek(·) si rappresenta la crittografia con chiave k.<br />

La sequenza risultante C1C2C3 . . . rappresenta il messaggio cifrato, dove<br />

ogni blocco è semplicemente il plaintext cifrato con chiave k.<br />

La fase <strong>di</strong> decriptaggio inverte il processo:<br />

for i = 1 to n do Mi ← Dk(Ci)<br />

dove con Dk(·) si rappresenta la decrittografia con chiave k.<br />

Questa modalità è insicura per flussi <strong>di</strong> messaggi che possono ripetere<br />

qualche informazione. Il motivo stà nel fatto che risulta banale determinare<br />

quando due blocchi <strong>di</strong> dati sono uguali. Supponiamo <strong>di</strong> avere due blocchi <strong>di</strong><br />

messaggio uguali M ed N. Allora la fase <strong>di</strong> criptaggio Ek(M) sarà uguale<br />

alla fase <strong>di</strong> criptaggio Ek(N) mostrando ad un eventuale attaccante quando<br />

due blocchi sono uguali o <strong>di</strong>fferenti.<br />

Perché una modalità operativa sia utile, non deve poter lasciar carpire<br />

alcuna informazione riguardo al testo in chiaro del messaggio. Le attuali<br />

modalità operative perdono informazioni stimate nell’or<strong>di</strong>ne <strong>di</strong> O(q 2 /2 b )<br />

dove q è il numero totale dei blocchi criptati usando la stessa chiave, e b<br />

la grandezza del blocco in bit. Per esempio, il vecchio DES utilizzava b = 64<br />

contro b = 128 <strong>di</strong> AES. In questo modo DES perdeva tutta la sua efficacia<br />

dopo aver criptato q = 2 32 blocchi con la stessa chiave mentre AES può raggiungere<br />

q = 2 64 blocchi. Poiché questo deca<strong>di</strong>mento è in<strong>di</strong>pendente dalla<br />

lunghezza della chiave, la grandezza del blocco è il secondo parametro che<br />

influisce sulla sicurezza dell’algoritmo.<br />

Sia la modalià Counter (CTR) che Cipher-Block Chaining (CBC) perdono<br />

informazioni nell’or<strong>di</strong>ne <strong>di</strong> O(q 2 /2 b ) e dunque risultano utilizzabili<br />

nella pratica. Entrambe operano avvalendosi <strong>di</strong> dati ausiliari per rendere<br />

il più casuale possibile l’operazione <strong>di</strong> criptaggio, prevenendo la per<strong>di</strong>ta <strong>di</strong><br />

informazioni che caratterizza ECB.<br />

La modalità CRT utilizza un contatore per i dati ausiliari. Se rappresentiamo<br />

nuovamente un messaggio M come una partizione <strong>di</strong> blocchi<br />

M1M2 . . . Mn, allora CRT può essere descritto in pseudo co<strong>di</strong>ce nel seguente<br />

modo:<br />

quando viene assegnata la chiave K, azzera il contatore<br />

set counter ← 0<br />

per ogni messaggio M = M1M2 . . . Mn<br />

initial counter ← counter<br />

107


for i = 1 to n do Ci ← Mi ⊕ Ek(counter)<br />

counter ← counter + 1<br />

encrypted message = initial counterC1C2 . . . Cn<br />

Meccanismi crittografici<br />

Cioè, il Counter Mode cifra un contatore ed incrementa la variabile<br />

counter ad ogni blocco criptato. Al valore criptato della variabile counter<br />

viene applicata l’operazione logica <strong>di</strong> XOR con il plaintext, per ottenere il<br />

messaggio cifrato. Di seguito viene allegato al pacchetto contenente il messaggio<br />

cifrato, il valore iniziale del contatore, in modo da comunicare alla<br />

fase <strong>di</strong> decriptaggio quale valore assegnare alla variabile counter.<br />

La fase <strong>di</strong> decriptaggio estrae il testo in chiaro nel seguente modo:<br />

per ogni messaggio cifrato C = initial counterC1C2 . . . Cn<br />

set counter ← initial counter<br />

for i = 1 to n do Mi ← Ci ⊕ Ek(counter)<br />

counter ← counter + 1<br />

M = M1M2 . . . Mn<br />

Da notare che la fase <strong>di</strong> decriptaggio richiede in input solamente i blocchi<br />

<strong>di</strong> testo cifrato e quin<strong>di</strong> risulta poco gravosa da implementare. Il Counter<br />

Mode (CRT) può fallire catastroficamente nel caso in cui il valore del contatore<br />

venga sempre manipolato con la stessa chiave k. In pratica, significa<br />

che risulta insicuro utilizzare CRT senza opportuni <strong>meccanismi</strong> <strong>di</strong> gestione<br />

delle chiavi che ne permettono l’aggiornamento ad ogni sessione.<br />

La modalità Cipher-Block Chaining (CBC) è la più largamente utilizzata.<br />

Essa sfrutta un Initialization Vector (IV) scelto casualmente per prevenire<br />

la per<strong>di</strong>ta <strong>di</strong> informazioni sensibili. La fase <strong>di</strong> criptaggio <strong>di</strong> un messaggio<br />

viene schematizzata in pseudo co<strong>di</strong>ce nel seguente modo:<br />

per ogni messaggio M = M1M2 . . . Mn<br />

IV ← randomly selected value<br />

initial IV ← IV<br />

for i = 1 to n do Ci ← Ek(Mi ⊕ IV )<br />

IV ← Ci<br />

encrypted message = initial IV C1C2 . . . Cn<br />

Cioè, la modalità CBC “copre” il testo in chiaro del messaggio applicandogli<br />

l’operazione <strong>di</strong> XOR con l’IV generato casualmente dalla fase <strong>di</strong><br />

criptaggio precedente. L’output dello XOR, criptato, <strong>di</strong>venta l’IV per crittografare<br />

il messaggio successivo. Questo processo viene ripetuto per ogni<br />

blocco <strong>di</strong> dati che compongono il messaggio da trasmettere. CBC sceglie un<br />

nuovo IV casuale per ogni messaggio, e può fallire miseramente se tale Initialization<br />

Vector non è effettivamente casuale. La fase <strong>di</strong> criptaggio appone<br />

108


3.3 Wireless Protected Access (WPA-WPA2)<br />

al pacchetto contenente il messaggio cifrato da trasmettere, l’IV iniziale scelto<br />

in modo da rendere possibile la fase <strong>di</strong> decriptaggio. Tale fase estrae il<br />

messaggio in chiaro invertendo l’algoritmo:<br />

per ogni messaggio criptato C = initial IV C1C2 . . . Cn<br />

IV ← initial IV<br />

for i = 1 to n do Mi ← IV ⊕ Dk(Ci)<br />

IV ← Ci<br />

M = M1M2 . . . Mn<br />

In aggiunta a questo, se si desidera aumentare la privacy si può introdurre<br />

nell’algoritmo il controllo <strong>di</strong> integrità dei dati MIC per offrire maggiori<br />

garanzie sulla trasmissione dei messaggi. Se la variabile known IV rappresenta<br />

un particolare IV, allora la versione CBC-MAC può essere schematizzata<br />

nel seguente modo:<br />

per ogni messaggio M = M1M2 . . . Mn<br />

IV ← known IV<br />

for i = 1 to n do MICi ← Ek(Mi ⊕ IV )<br />

IV ← MICi<br />

MIC = MICi;<br />

Cioè l’etichetta MICi rappresenta il valore del test MIC fatto sul blocco<br />

<strong>di</strong> dati, testandone l’autenticità. Se questo viene spe<strong>di</strong>to assieme al messaggio<br />

M, il destinatario (per esempio chi possiede la chiave k) può rilevare<br />

eventuali manomissioni ricalcolandone il valore MIC e confrontandolo con<br />

quello inviato. Proprio come la modalità CBC, la sicurezza <strong>di</strong> CBC-MAC si<br />

degrada intorno al valore O(q 2 /2 b ), così quando il sistema <strong>di</strong> cifratura utilizzato<br />

è AES, la <strong>di</strong>mensione del blocco è b = 128, e risulta sicuro utilizzare<br />

CBC-MAC con la stessa chiave k per almeno q = 2 64 blocchi <strong>di</strong> dati. Un<br />

numero enorme mai raggiunto da applicazioni pratiche ai giorni nostri.<br />

AES-CCM, AES-OCB: Incapsulamento dei dati nel protocollo 802.11<br />

Il Task Group i IEEE 802.11 propone due meto<strong>di</strong> <strong>di</strong> incapsulamento<br />

e cifratura dei dati basati sull’algoritmo AES. Il primo denominato Advanced<br />

Encryption Standard CBC-MAC Counter Mode (AES-CCM)[43] ed<br />

il secondo denominato Advanced Encryption Standard Offset CodeBook<br />

(AES-OCB)[55]. Analizziamone lo schema <strong>di</strong> funzionamento.<br />

AES-CCM<br />

Questo protocollo definito all’interno dello standard IEEE 802.16 è basato<br />

sull’algoritmo AES in “Counter Mode” per la cifratura dei dati, e su CBC-<br />

109


Meccanismi crittografici<br />

MAC per la loro autenticità. Lo sviluppo <strong>di</strong> questo protocollo viene attribuito<br />

a Ferguson, Housley, Lennache, Stanley e Whiting in [42] e [21].<br />

AES-CCM richiede due variabili <strong>di</strong> stato. Per prima cosa impiega una<br />

chiave singola per AES. Il protocollo CCM utilizza tale chiave per la cifratura<br />

e per elaborare MIC. Utilizzando la stessa chiave per due funzionalità <strong>di</strong>verse<br />

viene naturale pensare ad una debolezza del protocollo. Invece Jacob Jonsson<br />

<strong>degli</strong> RSA labs ha <strong>di</strong>mostrato che non è un problema quando il contatore<br />

“Couter Mode” ed i CBC-MAC IV sono implementati in AES-CCM.<br />

La seconda variabile all’interno dell’algoritmo, è un contatore sequenziale<br />

<strong>di</strong> pacchetti da 48 bit. Il protocollo AES-CCM utilizza tale contatore<br />

per costruire il contatore <strong>di</strong> cifratura “Counter Mode” ed il CBC-MAC IV.<br />

CCM costruisce sia il contatore “Counter Mode” sia il CBC-MAC IV come<br />

concatenazione dell’in<strong>di</strong>rizzo MAC della sorgente, del contatore sequenziale<br />

<strong>di</strong> pacchetti, un contatore <strong>di</strong> blocchi per ogni pacchetto da 16 bit ed una<br />

stringa <strong>di</strong> 16 bit <strong>di</strong> altri dati per <strong>di</strong>stinguere il contatore “Counter Mode” dal<br />

CBC-MAC IV. Il contatore <strong>di</strong> blocchi da 16 bit permette <strong>di</strong> costruire frammenti<br />

<strong>di</strong> pacchetto chiamati Message Protocol Data Unit (MPDU) costituiti<br />

da 2 16 blocchi. Poiché ogni blocco AES ha <strong>di</strong>mensione <strong>di</strong> 128 bit, ovvero 16<br />

byte, significa che il numero massimo <strong>di</strong> dati che il protocollo supporta è <strong>di</strong><br />

2 16 · 16 = 2 20 = 1048576 byte per ogni MPDU. Un numero estremamente<br />

superiore ai 2312 byte suppotati dal protocollo 802.11.<br />

Il protocollo AES-CCM incapsula gli MPDU, o frammenti <strong>di</strong> pacchetto<br />

802.11, in quattro passi:<br />

1. Costruisce il contatore “Counter Mode” e il CBC-MAC IV dal contatore<br />

sequenziale <strong>di</strong> pacchetti, incrementandolo <strong>di</strong> una unità.<br />

2. Utilizza la chiave AES e CBC-MAC IV per calcolare il MIC dell’in<strong>di</strong>rizzo<br />

sorgente e destinazione, la classe <strong>di</strong> traffico QoS (Quality of Service),<br />

la lunghezza dei dati e le informazioni MPDU. Tronca il valore<br />

MIC a 64 bit e concatena il risultato al valore MPDU.<br />

3. Utilizza la chiave AES ed il contatore “Counter Mode” per cifrare i<br />

dati MPDU utilizzando AES-CCM, aggiungendo il valore MIC precalcolato.<br />

4. Completa il pacchetto MPDU protetto inserendo il valore del contatore<br />

sequenziale del pacchetto tra l’header 802.11 e i dati criptati.<br />

In questo modo, il protocollo AES-CCM aumenta la lunghezza del payload<br />

MPDU <strong>di</strong> 14 byte, 6 byte per il valore del contatore sequenziale dei<br />

pacchetti ed 8 byte per il valore MIC criptato.<br />

La fase <strong>di</strong> estrazione dei dati, una volta ricevuto l’MPDU, inverte i passi<br />

precedenti:<br />

110


3.3 Wireless Protected Access (WPA-WPA2)<br />

1. Estrae il contatore sequenziale <strong>di</strong> pacchetti dall’MPDU ricevuto. Se il<br />

valore del contatore è già stato ricevuto con la chiave AES corrente,<br />

il pacchetto viene scartato. Altrimenti viene costruito il contatore<br />

“Counter Mode” e il CBC-MAC IV utilizzando tale informazione.<br />

2. Counter Mode decifra il pacchetto criptato usando la chiave AES ed<br />

il valore del contatore “Counter Mode” calcolato.<br />

3. Viene ricalcolato il MIC utilizzando la chiave AES ed il CBC-MAC IV,<br />

troncato a 64 bit e confrontato con il valore MIC opportunamente decriptato<br />

ricevuto nell’MPDU. Se i due valori sono <strong>di</strong>versi il pacchetto<br />

viene scartato come contraffatto, altrimenti viene accettato dal destinatario.<br />

Quando questo protocollo viene utilizzato con un sistema <strong>di</strong> gestione<br />

delle chiavi, è facile vedere che vengono sod<strong>di</strong>sfatti i requisiti richiesti<br />

<strong>di</strong> sicurezza. Il test MIC rende impossibile l’elaborazione dei pacchetti<br />

“falsi”, ed il controllo del numero sequenziale dei pacchetti ne previene<br />

la duplicazione. Lo schema non riutilizza mai lo stesso valore del<br />

contatore o lo stesso IV con la stessa chiave. Il MIC protegge l’in<strong>di</strong>rizzo<br />

sorgente e destinazione contro eventuali mo<strong>di</strong>fiche. Riduce il numero<br />

<strong>di</strong> funzioni crittografiche ad una soltanto - AES - la migliore tecnica<br />

oggi sul mercato. Sia “Counter Mode” che CBC-MAC possono essere<br />

facilmente implementati come programmi software.<br />

AES-OCB<br />

Il protocollo AES-OCB è basato su AES in modalità “Offset Codebook”<br />

(OCB). Questo sistema è un nuovo modo <strong>di</strong> operare inventato da Phil<br />

Rogaway [55]. L’implementazione del protocollo AES-OCB viene invece<br />

attribuita a Cam-Winget e Walker in [33] ed in [34].<br />

La modalità OCB è in grado <strong>di</strong> fornire sia la sicurezza dei dati che la loro<br />

autenticità, utilizzando una sola operazione sui dati ed una sola chiave <strong>di</strong><br />

cifratura. La modalità operativa prende il nome dal valore O = Ek(0 b ) - dove<br />

O denota il vettore cifrato formato da b bit <strong>di</strong> valore 0 criptato con chiave<br />

k che viene chiamato “offset”. L’offset rappresenta un valore casuale che il<br />

protocollo OCB utilizza per generare una sequenza <strong>di</strong> valori O1, O2, O3, . . .<br />

che si trovano alla massima <strong>di</strong>stanza <strong>di</strong> “Hamming” 3 possibile. La modalità<br />

OCB impiega un nonce per rendere casuale la fase <strong>di</strong> criptaggio invece del<br />

classico Initialization Vector IV, o <strong>di</strong> un contatore. Un nonce è un valore<br />

che viene utilizzato al massimo una volta nel contesto <strong>di</strong> una chiave. Se<br />

N denota tale valore per un messaggio M = M1M2 . . . Mn, OCB cifra l’iesimo<br />

blocco Mi come Ek(Mi ⊕ Oi ⊕ N) ⊕ Oi ⊕ N. Il blocco finale del<br />

3 Spiega Distanza <strong>di</strong> Hamming<br />

111


Meccanismi crittografici<br />

messaggio viene cifrato in maniera leggermente <strong>di</strong>versa, con un valore che<br />

viene chiamato Yn ma che non analizziamo in quanto la sua forma non incide<br />

sul funzionamento del protocollo. OCB calcola ora il valore per il controllo<br />

<strong>di</strong> integrità dei dati come Ek(M1 ⊕ · · · ⊕ Mn ⊕ Yn ⊕ On+1 ⊕ N).<br />

Una cosa molto interessante <strong>di</strong> questa modalità è che ne viene data una<br />

<strong>di</strong>mostrazione formale <strong>di</strong> sicurezza che delinea precisi confini riguardo alla<br />

per<strong>di</strong>ta <strong>di</strong> informazioni durante il funzionamento. Il teorema <strong>di</strong> sicurezza<br />

della modalità OCB afferma che, qualsiasi <strong>attacco</strong> contro il protocollo OCB<br />

può essere ricondotto ad un <strong>attacco</strong> per rompere il sistema <strong>di</strong> cifratura alla<br />

base del protocollo stesso. Ciò significa che se si ritiene sicura la cifratura<br />

AES, allora il suo utilizzo alla base <strong>di</strong> OCR a sua volta lo rende un protocollo<br />

sicuro. Il teorema calcola che la per<strong>di</strong>ta <strong>di</strong> informazioni in OCB riguarda<br />

i dati protetti in misura massima <strong>di</strong> 3 · q 2 /2 b+1 dove, come definito precedentemente,<br />

q è il numero totale <strong>di</strong> blocchi che utilizzano la chiave k, e b è<br />

la <strong>di</strong>mensione del blocco cifrato.<br />

Come AES-CCM anche AES-OCB richiede due variabili <strong>di</strong> stato. Primo,<br />

si avvale <strong>di</strong> una chiave AES k. Il protocollo utilizza questa chiave sia per<br />

la fase <strong>di</strong> incapsulamento che per quella <strong>di</strong> decapsulamento. La seconda<br />

variabile <strong>di</strong> stato è un contatore sequenziale <strong>di</strong> pacchetti da 28 bit. OCB<br />

utilizza questo contatore per costruire il valore nonce. Tale valore viene<br />

creato concatenando l’in<strong>di</strong>rizzo MAC <strong>di</strong> mittente e destinatario, la classe <strong>di</strong><br />

traffico QoS ed il contatore sequenziale <strong>di</strong> pacchetti trasmessi. Il protocollo<br />

opera sull’intero pacchetto 802.11 MSDU. La fase <strong>di</strong> incapsulamento richiede<br />

i seguenti passi:<br />

1. Viene costruito il valore nonce. Viene incrementato il contatore sequenziale<br />

<strong>di</strong> 1 per prevenire che futuri nonce siano riutilizzati con la<br />

stessa chiave.<br />

2. Il protocollo utilizza la chiave AES k ed il valore nonce per criptare i<br />

dati MSDU in modalità OCB, troncando il valore <strong>di</strong> integrità dei dati<br />

MIC a 64 bit.<br />

3. Il processo viene completato inserendo il valore del contatore ei pacchetti<br />

trasmessi tra l’header MSDU ed i dati criptati.<br />

AES-OCB accresce la <strong>di</strong>mensione del payload MSDU <strong>di</strong> 12 byte, 4 per<br />

il valore del contatore e 8 per il valore MIC.<br />

OCB decapsula l’MSDU ricevuto invertendo i passi:<br />

1. Estrae il contatore dall’MSDU ricevuto. Se tale valore è già stato<br />

ricevuto per la chiave AES k corrente allora il pacchetto viene scartato<br />

come replicato. Altrimenti vengono estratti gli in<strong>di</strong>rizzi MAC <strong>di</strong><br />

mittente e destinatario ed il valore nonce allegato.<br />

112


3.3 Wireless Protected Access (WPA-WPA2)<br />

2. Successivamente viene utilizzata la chiave k per decifrare i dati contenuti<br />

nel pacchetto MSDU. Se la fase <strong>di</strong> decifrtura fallisce, i dati<br />

vengono considerati falsificati; se invece la decifratura va a buon fine<br />

viene accettato il pacchetto come autentico.<br />

Questo schema sod<strong>di</strong>sfa i requisiti del problema della sicurezza quando<br />

viene utilizzato assieme ad un sistema <strong>di</strong> gestione delle chiavi. Il valore nonce<br />

protegge l’in<strong>di</strong>rizzo MAC <strong>di</strong> sorgente e destinazione, la classe <strong>di</strong> traffico<br />

QoS ed il numero <strong>di</strong> sequenza del pacchetto da mo<strong>di</strong>fiche intenzionali e da<br />

tentativi <strong>di</strong> falsificazione. Se un attaccante cerca <strong>di</strong> alterare ognuna <strong>di</strong> queste<br />

informazioni in un pacchetto, la fase <strong>di</strong> decifratura del destinatario fallisce.<br />

Il valore MIC rende le falsificazioni computazionalmente irrealizzabili, ed il<br />

controllo della sequenzialità dei pacchetti ne previene la replicazione a meno<br />

che un attaccante non sia in grado <strong>di</strong> crearne <strong>di</strong> falsi. OCB viene facilmente<br />

implementato come software, e risulta realmente più efficiente <strong>degli</strong> algoritmi<br />

convenzionali che richiedono due passi <strong>di</strong> elaborazione sui dati del pacchetto<br />

da trasmettere.<br />

AES-CCM vs AES-CCB<br />

Entrambi i protocolli AES-CCM ed AES-OCB sod<strong>di</strong>sfano i requisiti del<br />

problema della sicurezza e dell’integrità dei dati. Differiscono però su 4<br />

punti chiave che vorrei analizzare.<br />

Autenticità dei dati<br />

L’analisi <strong>di</strong> sicurezza della modalità OCB <strong>di</strong>mostra un preciso limite superiore<br />

(upper bound), 3 · q 2 /b b+1 , nell’avvantaggiare un qualsiasi possibile<br />

attaccante. Per AES, b vale 128 bit. Con uno spazio <strong>di</strong> sequenza <strong>di</strong> 2 28<br />

MSDU ed una <strong>di</strong>mensione massima del pacchetto <strong>di</strong> 2 12 byte = 2 8 blocchi,<br />

il numero massimo <strong>di</strong> blocchi protetti da una singola chiave <strong>di</strong>venta<br />

q = 2 8 · 2 28 = 2 36 , ed il massimo vantaggio che un attaccante può ottenere<br />

per manipolare un pacchetto è 3·(2 36 ) 2 /2 129 = 3/2 57 . Di certo una minaccia<br />

trascurabile.<br />

L’autenticità dei dati del protocollo AES-CCM non è così efficiente.<br />

Viene identificato un valore <strong>di</strong> sicurezza limitato da O(q 2 /2 b ) per CBC-<br />

MAC, ma si assume che tutti i pacchetti abbiano la stessa lunghezza. Per<br />

compensare questo, AES-CCM interviene proteggendo il campo della lunghezza<br />

dei dati includendolo nella computazione CBC-MAC, e verificandolo per<br />

vedere se i dati protetti hanno una lunghezza in byte corrispondente alle<br />

informazioni riportate nel pacchetto. I crittografi credono che questo comporti<br />

una garanzia <strong>di</strong> sicurezza, ma allo stato dell’arte non si può averne la<br />

certezza. Così la modalità OCB sembra essere meno adeguata per garantire<br />

l’autenticità dei dati.<br />

113


Meccanismi crittografici<br />

Dimensione dello spazio <strong>di</strong> sequenza dei pacchetti<br />

Uno dei motivi per aumentare lo spazio <strong>di</strong> sequenza del protocollo AES-<br />

CCM a 48 bit, è semplificare la gestione delle chiavi in 802.11. Il protocollo<br />

AES-OCB ha bisogno <strong>di</strong> essere mo<strong>di</strong>ficato da questo punto <strong>di</strong> vista. La<br />

costruizione dei valori nonce può essere utilizzata per proteggere un massimo<br />

<strong>di</strong> 128 bit. Il contatore <strong>di</strong> sequenza dei pacchetti da 28 bit del protocollo<br />

AES-OCB deriva dal fatto che questo è tutto ciò che rimane dei 128 bit del<br />

nonce dopo aver incluso l’in<strong>di</strong>rizzo del mittente del destinatario e la classe<br />

<strong>di</strong> traffico QoS.<br />

Un metodo per supportare un ampio spazio numerico per il sequenziamento<br />

dei pacchetti esiste ed è chiamato associated data construction. I dati<br />

associati sono dati “extra” che devono essere protetti dalle falsificazioni ma<br />

rimangono in chiaro. Si può proteggere questi dati “extra” computando il<br />

proprio CBC-MAC e applicando successivamente l’operazione <strong>di</strong> XOR tra il<br />

risultato ottenuto ed il valore OCB-MIC.<br />

E’ probabile che il protocollo AES-OCB venga adattato ad utilizzare<br />

uno spazio <strong>di</strong> sequenza a 48 bit nel seguente modo. Il nonce sarà costituito<br />

dal contatore sequenziale <strong>di</strong> pacchetti da 48 bit, dall’in<strong>di</strong>rizzo del mittente<br />

e completato con <strong>degli</strong> 0. I dati “extra” saranno costruiti dall’in<strong>di</strong>rizzo del<br />

destinatario, dalla classe <strong>di</strong> traffico QoS e completati con <strong>degli</strong> 0. Il CBC-<br />

MAC dei dati “extra” prevederà una ulteriore cifratura per ogni pacchetto.<br />

Il massimo vantaggio che ogni possibile attaccante potrà ottenere con questa<br />

soluzione aumenterà <strong>di</strong> 3 · (2 58 ) 2 /2 129 = 3 · 2 116 /2 129 = 3/2 13 . Questa non<br />

è una probabilità insignificante, ma <strong>di</strong> certo non è un problema pratico.<br />

Per sfruttare questo vantaggio, un attaccante dovrebbe essere in grado <strong>di</strong><br />

scegliere tutti i dati che sono stati protetti ed inoltre utilizzare 2 58 blocchi<br />

in totale.<br />

MSDU vs MPDU<br />

Il protocollo AES-CCM protegge gli MPDU ovvero i frammenti <strong>di</strong> pacchetto<br />

802.11, mentre AES-OCB protegge gli MSDU ovvero i veri e propri pacchetti<br />

802.11. La protezione dei pacchetti MSDU viene considerata architetturalmente<br />

“pura”. Ciò significa che si presta ad una implementazione più<br />

flessibile e maggiormente riutilizzabile. Qualsiasi protocollo che protegge<br />

interamente gli MSDU può essere utilizzato con <strong>di</strong>spositivi compatibili 802.<br />

Questo approccio inoltre minimizza l’overhead. Il protocollo AES-OCB aggiunge<br />

sempre 12 byte <strong>di</strong> overhead ad ogni pacchetto. Tuttavia, se un MSDU<br />

viene frammentato in n MPDU, AES-CCM aggiunge 16·n byte <strong>di</strong> overhead.<br />

D’altro canto la scelta <strong>di</strong> AES-CCM <strong>di</strong> applicare una protezione crittografica<br />

ai frammenti MPDU è più facile da implementare sull’architettura hardware<br />

802.11.<br />

114


3.3 Wireless Protected Access (WPA-WPA2)<br />

Performance<br />

Quando entrambi i protocolli sono implementati in hardware non vi è alcuna<br />

<strong>di</strong>fferenza sulle performance del sistema.<br />

Se invece si implementa tali protocolli in maniera software l’AES-OCB ha<br />

un vantaggio doppio rispetto all’antagonista AES-CCM. Questo è dovuto al<br />

fatto che AES-CCM richiede circa il doppio delle operazioni crittografiche<br />

dell’altro protocollo. Tali operazioni prevalgono su tutti gli altri costi <strong>di</strong><br />

implementazione. AES può essere implemetato via software al costo <strong>di</strong> circa<br />

20/30 cicli per byte. Il massimo “user data rate” per il protocollo 802.11a è<br />

<strong>di</strong> circa 4, 5 millioni <strong>di</strong> byte per secondo, mentre per l’802.11b scende a 875K<br />

byte per secondo. Ciò significa che, per un Access Point 802.11, il protocollo<br />

AES-OCB richiede una banda da un minimo <strong>di</strong> 90 ad un massimo <strong>di</strong> 135<br />

MHz per la fase <strong>di</strong> cifratura, mentre AES-CCM ne richiede da 180 a 270MHz.<br />

Per una Access Point 802.11b, AES-OCB richiede da 17 a 26, 5MHz mentre<br />

AES-CCM ha bisogno <strong>di</strong> un intervallo da 34 a 53MHz.In sostanza molto più<br />

<strong>di</strong>spen<strong>di</strong>oso.<br />

115


Capitolo 4<br />

Meccanismi <strong>di</strong> autenticazione<br />

Introduzione<br />

Nell’ambito informatico il termine autenticazione assume un preciso significato.<br />

In<strong>di</strong>ca (dal greco “αυθɛντικóς” ‘authentes’=‘autore’) il processo<br />

tramite il quale un computer, un software o un utente, verifica la corretta, o<br />

almeno presunta, identità <strong>di</strong> un altro computer, software o utente che vuole<br />

comunicare attraverso una connessione.<br />

Durante una comunicazione in Internet o l’accesso ad alcuni servizi messi<br />

a <strong>di</strong>sposizione in rete è importante per l’utente definire in modo univoco la<br />

propria identità, essere riconosciuto e per questo ottenere l’accesso ai propri<br />

servizi. Allo stesso modo è fondamentale anche conoscere l’identità <strong>di</strong> chi<br />

si trova dall’altra parte della “linea” della comunicazione ed essere certi<br />

che l’interlocutore con il quale si stanno scambiando delle informazioni sia<br />

veramente chi <strong>di</strong>ce <strong>di</strong> essere e non un impostore.<br />

Il termine autorizzazione viene spesso identificato con autenticazione: i<br />

protocolli per la sicurezza standard, ad esempio, si basano su questo presupposto.<br />

Vi sono casi in cui questi due azioni vengono affrontate con strategie<br />

<strong>di</strong>fferenti. Un esempio <strong>di</strong> tutti i giorni è la comune procedura <strong>di</strong> autenticazione<br />

che conosciamo come “login”. Un sistema <strong>di</strong> elaborazione, progettato<br />

per essere usato soltanto da utenti autorizzati, deve essere in grado<br />

<strong>di</strong> rilevare ed escludere i non autorizzati. L’accesso ad esso, dunque, viene<br />

garantito solo dopo aver eseguito con successo una procedura <strong>di</strong> autenticazione,<br />

<strong>di</strong> solito attraverso una “username” e una “password” personale.<br />

Le informazioni contenute e descritte in questo capitolo sono rielaborate da<br />

[15, 53, 39, 27, 60, 25, 22, 21, 35, 45, 51].<br />

117


4.1 Lo standard 802.11i<br />

Meccanismi <strong>di</strong> autenticazione<br />

L’Working Group, relativo al protocollo 802.11, istituì a meta <strong>degli</strong> anni<br />

’90 un nuovo gruppo <strong>di</strong> lavoro, chiamato “Task Group i”, il cui compito era<br />

ed è la definizione <strong>di</strong> un nuovo standard <strong>di</strong> sicurezza delle reti wireless. Il<br />

nuovo gruppo, attualmente attivo, lavora incessantemente alla stesura del<br />

protocollo definitivo. Ciò che si può notare dai draft pubblicati è che lo<br />

standard si occupa <strong>di</strong> due <strong>di</strong>fferenti aspetti. Il primo riguarda l’aumento<br />

della sicurezza dei protocolli per lo scambio e la gestione delle chiavi crittografiche,<br />

il secondo definisce migliorie per quanto riguarda la crittografia<br />

dei dati, l’accesso e l’autenticazione all’interno <strong>di</strong> una rete. Finora questo<br />

lavoro ha portato alla sostituzione del protocollo crittografico WEP con<br />

i più recenti e robusti WPA e WPA2 e ad una svolta nei <strong>meccanismi</strong> <strong>di</strong><br />

autenticazione con l’ausilio del protocollo 802.1X.<br />

4.2 Il Sistema <strong>di</strong> autenticazione 802.1X<br />

Nell’ambito della sicurezza delle reti wireless, la protezione WEP statica,<br />

oggi ancora molto utilizzata da privati ed aziende, si basa su un semplice<br />

“segreto” con<strong>di</strong>viso (password o chiave) per l’autenticazione nella WLAN.<br />

Chiunque <strong>di</strong>sponga <strong>di</strong> questa chiave segreta può accedere alla rete. Lo standard<br />

WEP non prevedere un metodo per l’automazione dell’aggiornamento o<br />

della <strong>di</strong>stribuzione <strong>di</strong> tali chiavi, quin<strong>di</strong> risulta estremamente <strong>di</strong>fficile mo<strong>di</strong>ficarle<br />

perio<strong>di</strong>camente. Un utente malintenzionato può sfruttare imperfezioni<br />

crittografiche in WEP per in<strong>di</strong>viduare le chiavi statiche me<strong>di</strong>ante strumenti<br />

elementari. Per garantire un metodo più affidabile <strong>di</strong> autenticazione e autorizzazione,<br />

l’IEEE 802.11i ha proposto una struttura <strong>di</strong> protezione WLAN<br />

basata sul protocollo 802.1X.<br />

802.1X è uno standard per l’autenticazione dell’accesso alla rete basato<br />

sulla gestione delle porte (Port based Network Access Control) che può anche<br />

essere utilizzato per la gestione delle chiavi <strong>di</strong> protezione del traffico <strong>di</strong><br />

rete. Il suo utilizzo non è limitato alle reti senza fili e si trova implementato<br />

in numerosi switch <strong>di</strong> fascia alta della rete LAN cablata. Il protocollo<br />

802.1X richiede la presenza dell’utente <strong>di</strong> rete (supplicant), <strong>di</strong> un <strong>di</strong>spositivo<br />

<strong>di</strong> accesso alla rete (o gateway) come un punto <strong>di</strong> accesso senza fili (authenticator)<br />

e un servizio <strong>di</strong> autenticazione, autorizzazione ed accesso (AAA)<br />

costituito generalmente da un server RADIUS (Remote Authentication Dial<br />

In User Service). Il server RADIUS (Authentication server), gestisce<br />

il processo <strong>di</strong> autenticazione delle credenziali dell’utente e <strong>di</strong> autorizzazione<br />

dell’accesso alla WLAN. Nel protocollo una “porta” viene definita come una<br />

connessione tra supplicant ed authenticator.<br />

In una architettura <strong>di</strong> rete che adotta l’uso <strong>di</strong> RADIUS, il punto <strong>di</strong><br />

accesso senza fili impe<strong>di</strong>sce l’inoltro del traffico dei dati a una rete cablata<br />

118


4.2 Il Sistema <strong>di</strong> autenticazione 802.1X<br />

o ad un altro client senza fili, senza una chiave <strong>di</strong> autenticazione valida.<br />

Di seguito viene riportato il processo per l’ottenimento <strong>di</strong> una chiave <strong>di</strong><br />

autenticazione valida (Fig.4.1):<br />

1. Quando un client senza fili entra nel raggio <strong>di</strong> azione <strong>di</strong> un punto <strong>di</strong><br />

accesso senza fili, quest’ultimo richiede la verifica del client.<br />

2. Il client wireless si identifica al punto <strong>di</strong> accesso, il quale inoltra le<br />

informazioni a un server RADIUS.<br />

3. Il server RADIUS richiede le credenziali del client per verificarne l’identità.<br />

Come parte della richiesta, il server RADIUS specifica il tipo<br />

<strong>di</strong> credenziali necessarie.<br />

4. Il client invia le proprie credenziali al server RADIUS.<br />

5. Il server RADIUS verifica le credenziali del client. Se le credenziali<br />

sono valide, il server RADIUS invia una chiave <strong>di</strong> autenticazione crittografata<br />

al punto <strong>di</strong> accesso.<br />

6. Il punto <strong>di</strong> accesso utilizza la chiave <strong>di</strong> autenticazione per trasmettere<br />

in modo protetto chiavi <strong>di</strong> autenticazione <strong>di</strong> sessione unicast per<br />

stazione, e multicast al client senza fili.<br />

Figura 4.1: Scambio <strong>di</strong> chiavi nel protocollo 802.1X<br />

La Wi-Fi Alliance, consorzio mon<strong>di</strong>ale <strong>di</strong> forniture Wi-Fi, ha utilizzato<br />

la prima versione definitiva della protezione 802.11i per commercializzare<br />

lo standard già analizzato in precedenza denominato WPA. Tale protezione<br />

include un ampio sottoinsieme <strong>di</strong> funzioni presenti in 802.1i. In questo modo<br />

il consorzio è riuscito ad aggiornare buona parte dell’hardware in commercio<br />

offrendo perlomeno un livello <strong>di</strong> protezione migliore dell’WEP.<br />

119


Meccanismi <strong>di</strong> autenticazione<br />

Lo standard WPA prevede due modalità: una basata su 802.1X e sull’autenticazione<br />

RADIUS, l’altra propone uno schema più semplice per ambienti<br />

SOHO (Small Office Home Office) che si avvale <strong>di</strong> una chiave precon<strong>di</strong>visa,<br />

denominato WPA-PSK. WPA combina un sistema crittografico avanzato<br />

con il meccanismo <strong>di</strong> autenticazione e autorizzazione affidabile <strong>di</strong> 802.1X.<br />

WPA-PSK consente alle piccole oraganizzazioni e ai privati <strong>di</strong> utilizzare<br />

una rete WLAN a chiave con<strong>di</strong>visa senza incappare nelle note vulnerabilità<br />

dell’WEP statico. Sempre ammettendo che la chiave scelta sia sufficientemente<br />

complessa per impe<strong>di</strong>rne attacchi <strong>di</strong> in<strong>di</strong>viduazione. Analogamente<br />

alla protezione WPA basata su RADIUS ed al WEP <strong>di</strong>namico, vengono generate<br />

singole chiavi per ogni client wireless. La chiave precon<strong>di</strong>visa viene utilizzata<br />

come credenziale <strong>di</strong> autenticazione. Quin<strong>di</strong> se si <strong>di</strong>spone della chiave,<br />

si è autorizzati ad usufruire della rete e ad ottenere una chiave crittografica<br />

per cifrare i dati trasmessi.<br />

4.3 Extensible Authentication Protocol (EAP)<br />

Lo standard 1X si basa su un protocollo IETF (Internet Engineering<br />

Task Force) denominato EAP (Extensible Authentication Protocol) [14] per<br />

gestire lo scambio <strong>di</strong> dati <strong>di</strong> autenticazione tra il client e il server RADIUS,<br />

inoltrati dal punto <strong>di</strong> accesso (Fig.4.2).<br />

Figura 4.2: Fasi del protocollo EAP<br />

120


4.3 Extensible Authentication Protocol (EAP)<br />

EAP fu originariamente proposto come fase <strong>di</strong> autenticazione opzionale<br />

per il protocollo PPP (Point-to-point Protocol)[58] dopo l’instaurarsi <strong>di</strong><br />

una connessione. Viene considerato un protocollo <strong>di</strong> autenticazione multiscopo.<br />

Supporta numerosi meto<strong>di</strong> <strong>di</strong> autenticazione come token card, Kerberos[17],<br />

one-time password, certificate, public key authentication e smart<br />

card. La figura 4.3 mostra la grande varietà <strong>di</strong> meto<strong>di</strong> <strong>di</strong> autenticazione che<br />

si possono utilizzare a livello “Autenticazione” (Authentication layer). Ogni<br />

meccanismo si basa su EAP e vi si adatta facilmente.<br />

Figura 4.3: Meto<strong>di</strong> <strong>di</strong> autenticazione EAP<br />

Durante il funzionamento <strong>di</strong> EAP non è necessario prenegoziare un particolare<br />

meccanismo <strong>di</strong> autenticazione. Solitamente, l’AP (authenticator)<br />

invia una richiesta <strong>di</strong> identificazione, request identity seguita da una o più<br />

richieste <strong>di</strong> autenticazione del client (supplicant). Un frame <strong>di</strong> richiesta contiene<br />

un campo “tipo”, per in<strong>di</strong>care quali sono le informazioni necessarie<br />

per l’autenticazione. Il client invia una risposta per ogni request settando<br />

il campo “tipo” con le informazioni necessarie. In base al meccanismo<br />

<strong>di</strong> autenticazione scelto, varia il numero <strong>di</strong> request-response che vengono<br />

scambiati dal protocollo. Il server <strong>di</strong> autenticazione, dopo aver analizzato le<br />

informazioni, invia al client una autorizzazione positiva o negativa <strong>di</strong> accesso<br />

alla rete. Analizziamo ora passo passo la tipica procedura <strong>di</strong> autenticazione<br />

EAP basandoci sulla figura 4.2:<br />

1. L’utente seleziona il client <strong>di</strong> rete che deve essere autenticato, per<br />

esempio un computer portatile con connessione wireless (NIC, network<br />

interface card). Inizia la fase <strong>di</strong> associazione all’AP. Entrambi i<br />

<strong>di</strong>spositivi si settano in uno stato CONNECTING.<br />

2. Il client invia un frame EAPOL-start all’AP per avviare il processo <strong>di</strong><br />

autenticazione.<br />

121


Meccanismi <strong>di</strong> autenticazione<br />

3. Quando l’AP riceve il frame, reinvia al client un frame EAP-Request�<br />

Identity per ottenere i dati relativi alla sua identità. Ovviamente ad<br />

ogni scambio <strong>di</strong> frame si attua il classico meccanismo <strong>di</strong> conferma <strong>di</strong><br />

avvenuta ricezione <strong>di</strong> ogni messaggio (acknoledgment).<br />

4. Il client inoltra all’AP le sue credenziali. A questo punto l’AP ed il<br />

server RADIUS avvieranno una comunicazione criptata in accordo con<br />

il meccanismo <strong>di</strong> autenticazione adottato. Si noti che lo scambio <strong>di</strong> informazioni<br />

iniziale sull’identità del client avviene in chiaro (plaintext).<br />

Visto il mancato uso della critografia, questa fase è opzionale in alcune<br />

implementazioni <strong>di</strong> EAP.<br />

5. Consideriamo il metodo MD5 come esempio. Quando il client riceve<br />

il frame EAP-Request-Authentication, il quale contiene a sua volta il<br />

frame RADIUS-access-challenge, si setta in uno stato AUTHENTI-<br />

CATING. Il client risponde a sua volta con un frame EAP-Response-<br />

Authentication che incapsula a sua volta un RADIUS-access-request.<br />

6. In base al risultato del metodo <strong>di</strong> autenticazione il server RADIUS decide<br />

se autorizzare o meno l’utente ai servizi <strong>di</strong> rete. Se viene concesso<br />

l’accesso alla rete il client riceve un frame EAP-success che lo setta<br />

in stato AUTHETICATED. In caso contrario un frame EAP-failure<br />

impe<strong>di</strong>sce l’accesso al client ai servizi <strong>di</strong> rete.<br />

4.3.1 EAP Message Digest 5 (EAP-MD5)<br />

Il metodo MD5 [50] si basa principalmente sull’uso <strong>di</strong> una funzione hash<br />

“one-way”. Nel linguaggio scientifico, l’hash è una funzione univoca operante<br />

in un solo senso (ossia, che non può essere invertita), atta alla trasformazione<br />

<strong>di</strong> un testo <strong>di</strong> lunghezza arbitraria in una stringa <strong>di</strong> lunghezza fissa, relativamente<br />

limitata. Tale stringa rappresenta una sorta <strong>di</strong> “impronta <strong>di</strong>gitale”<br />

del testo in chiaro, e viene detta valore <strong>di</strong> hash, checksum crittografico o message<br />

<strong>di</strong>gest. Quando si utilizza MD5, un server <strong>di</strong> autenticazione (RADIUS)<br />

può autenticare un utente senza memorizzarne la password in chiaro (cleartext).<br />

Nella creazione <strong>di</strong> un account l’utente <strong>di</strong>gita la propria password ed il<br />

server memorizza l’hash generato dalla funzione “one-way” che ha ricevuto<br />

la password come input. Ad ogni riautenticazione dell’utente nel sistema, il<br />

client elabora l’hash della password immessa, l’output viene immesso in rete<br />

e viene confrontato dal server <strong>di</strong> autenticazione con l’hash in suo possesso.<br />

Se il confronto da esito positivo, l’utente viene autenticato. Anche se un<br />

possibile attaccante viene in possesso dell’hash risulta computazionalmente<br />

<strong>di</strong>fficile risalire alla password da cui è stato generato. Il metodo EAP-MD5<br />

viene considerato tra i più <strong>di</strong>ffusi per la sua semplicità <strong>di</strong> utilizzo. Un utente<br />

viene associato al suo “username”. Un frame challenge�response viene utilizzato<br />

per autenticarlo. Il server <strong>di</strong> autenticazione chiede l’invio della pass-<br />

122


4.3 Extensible Authentication Protocol (EAP)<br />

word attraverso un RADIUS-access-challenge come mostrato in figura 4.2.<br />

L’hash viene poi inviato tramite EAP-Response�Authentication a sua volta<br />

incapsulato nel frame RADIUS-access-request. Questo meccanismo risulta<br />

essere una scelte semplice e ragionevole per le reti cablate in quanto sono<br />

poco soggette ad attacchi <strong>di</strong> password spoofing (furto <strong>di</strong> password). Nelle<br />

reti WLAN invece, eventuali intrusi possono facilmente “sniffare” (sniff )<br />

l’identità <strong>di</strong> un AP e l’hash generato da un password. Perciò MD5 risulta<br />

essere più vulnerabile rispetto ad altri meto<strong>di</strong> <strong>di</strong> autenticazione. Un <strong>attacco</strong><br />

specifico a questo metodo è il cosiddetto reply attack. Sferrando questo<br />

tipo <strong>di</strong> <strong>attacco</strong> un intruso può fingere <strong>di</strong> essere un utente autorizzato allo<br />

scopo <strong>di</strong> accedere alla rete anche quando la passoword è cifrata. Per esempio<br />

un attaccante potrebbe semplicemente intercettare l’identità <strong>di</strong> un<br />

punto <strong>di</strong> accesso intercettando e reinviando (reply) il traffico <strong>di</strong> rete per<br />

essere autenticato.<br />

4.3.2 EAP Transport Layer Security (EAP-TLS)<br />

La tecnica <strong>di</strong> autenticazione EAP-TLS si basa sul protocollo TLS [16],<br />

come <strong>di</strong>ce il nome stesso. L’obiettivo principale del protocollo TLS è quello<br />

<strong>di</strong> fornire privacy ed integrità dei dati tra due applicazioni in comunicazione.<br />

Il protocollo è composta da due livelli: il TLS Record Protocol e il TLS<br />

Handshake Protocol. Al livello più basso, posizionato su alcuni affidabili<br />

protocolli <strong>di</strong> trasporto (TCP), c’è il protocollo TLS Record. Esso fornisce<br />

connessioni sicure che sod<strong>di</strong>sfando due fondamentali proprietà:<br />

• La connessione è privata. La crittografia simmetrica viene utilizzata<br />

per nascondere i dati (DES, RC4). Le chiavi vengono generate univocamente<br />

per ogni connessione e sono basate su un “segreto” gestito<br />

da un altro protocollo (per esempio il protocollo TLS Handshake).<br />

Questo protocollo può essere utilizzato anche senza crittografia.<br />

• La connessione è affidabile. Il servizio <strong>di</strong> trasporto dei messaggi include<br />

un meccanismo <strong>di</strong> controllo <strong>degli</strong> stessi utilizzando l’univoco MAC<br />

del <strong>di</strong>spositivo <strong>di</strong> rete. Una funzione hash sicura (SHA, MD5) viene<br />

utilizzata per computarlo. Questo protocollo può operare senza un<br />

MAC ma viene generalmente utilizzato per negoziare una connessione<br />

con parametri affidabili.<br />

Il protocollo TLS Record viene usato per l’incapsulamento <strong>di</strong> vari protocolli<br />

<strong>di</strong> livello superiore. Uno <strong>di</strong> questi, il TLS Handshake Protocol, permette<br />

al server ed al client l’autenticazione reciproca e la negoziazione <strong>di</strong> un algoritmo<br />

crittografico e <strong>di</strong> cifratura delle chiavi prima che avenga il primo<br />

passo <strong>di</strong> ricezione o trasmissione <strong>di</strong> un dato. Il protocollo TLS Handshake<br />

fornisce una connessione sicura con tre caratteristiche base:<br />

123


Meccanismi <strong>di</strong> autenticazione<br />

• L’identità del livello può essere autenticata utilizzando crittografia<br />

asimmetrica o a chiave pubblica (RSA, DSS). Questa autenticazione è<br />

opzionale ma generalmente viene richiesta su almeno uno dei livelli in<br />

comunicazione.<br />

• Lo scambio <strong>di</strong> un segreto con<strong>di</strong>viso è sicuro: non è <strong>di</strong>sponibile ad orecchi<br />

“in<strong>di</strong>screti” e per ogni connessione autenticata non è <strong>di</strong>sponibile<br />

anche se viene adottata da un attaccante la tecnica Man in the Middle.<br />

• La negoziazione è affidabile: nessun attaccante può mo<strong>di</strong>ficare la comunicazione<br />

senza essere rilevato dalle parti in contatto.<br />

Un vantaggio <strong>di</strong> TLS sta nel fatto che si tratta <strong>di</strong> protocollo <strong>di</strong> applicazione<br />

in<strong>di</strong>pendente. Protocolli <strong>di</strong> alto livello possono collocarsi al <strong>di</strong> sopra<br />

<strong>di</strong> TLS in maniera trasparente. Lo standard tuttavia non specifica come<br />

aumentare la sicurezza attraverso l’uso <strong>di</strong> TLS. Le decisioni su come avviare<br />

la fase <strong>di</strong> handshaking e come interpretare lo scambio dei certificati <strong>di</strong> autenticazione<br />

vengono lasciate ai programmatori e ai progettisti dei protocolli<br />

che si basano su TLS.<br />

Dopo la che la fase <strong>di</strong> negoziazione EAP-TLS è avvenuta, le due entità<br />

in comunicazione possono scambiarsi dati attraverso il “tunnel” criptato<br />

TLS. Perciò le rispettive identità e password non saranno rivelate. Poiché<br />

TLS offre il modo <strong>di</strong> utilizzare certificati tra client e server per autenticarsi,<br />

un utente, dopo essere stato autenticato, può anche utenticare la rete. In<br />

questo modo, possono essere rilevati facilmente AP falsi. Sia i client che il<br />

server hanno bisogno durante l’uso <strong>di</strong> tale protocollo <strong>di</strong> essere in possesso <strong>di</strong><br />

certificati vali<strong>di</strong>.<br />

124


4.3 Extensible Authentication Protocol (EAP)<br />

La figura 4.4 mostra il processo <strong>di</strong> autenticazione e lo scambio <strong>di</strong> messaggi<br />

<strong>di</strong> EAP-TLS in una WLAN.<br />

Figura 4.4: Sequenza <strong>di</strong> messaggi EAP-TLS<br />

Dopo che l’AP ha ricevuto informazioni sull’identità del client attraverso<br />

un EAP-response�identity, inivia un RADIUS-access-request al server RA-<br />

DIUS. Il server <strong>di</strong> autenticazione fornisce il suo certificato al client, richiedendo<br />

il certificato <strong>di</strong> quest’ultimo. Il client verifica il certificato ricevuto e<br />

risponde inviando il proprio attraverso una EAP-response, avviando inoltre<br />

una negoziazione <strong>di</strong> dati cifrati. Dopo che il server ha convalidato il certificato<br />

del client, risponde inviando i dati crittografati necessari alla sessione <strong>di</strong><br />

autenticazione. Le chiavi <strong>di</strong> sessione possono ora essere utilizzate dai client<br />

per la cifratura del traffico scambiato.<br />

4.3.3 EAP Tunneled Transport Layer Security (EAP-TTLS)<br />

La modalità <strong>di</strong> autenticazione EAP-TTLS estende EAP-TLS permettendo<br />

lo scambio <strong>di</strong> informazioni aggiuntive tra client e server, utilizzando<br />

il tunnel <strong>di</strong> comunicazione stabilito con l’uso del protocollo TLS. Una<br />

negoziazione EAP-TTLS comprende due fasi:<br />

1. Fase TLS handshake.<br />

2. Fase tunnel.<br />

Durante la prima fase, TLS viene usato da parte del client per autenticare<br />

il server. Come opzione anche il server può autenticare il client. Analogamente<br />

a EAP-TLS, l’autenticazione avviene attraverso l’uso <strong>di</strong> certificati.<br />

Un tunnel TLS viene stabilito anche dopo la fase <strong>di</strong> handshaking.<br />

Nella fase due, tale tunnel può essere utilizzato per lo scambio <strong>di</strong> ulteriori<br />

informazioni, come chiavi <strong>di</strong> autenticazione ausiliarie, comunicazione <strong>di</strong><br />

125


informazioni <strong>di</strong> accesso ed altro.<br />

Meccanismi <strong>di</strong> autenticazione<br />

In ambiente WLAN, il protocollo EAP-TTLS viene utilizzato nel seguente<br />

modo. Nella fase uno, TLS viene usato come un client per autenticare il<br />

server RADIUS attraverso l’uso <strong>di</strong> un certificato. Effettuata l’operazione, il<br />

server autentica il client utilizzandone username e password nella fase due.<br />

Questi dati sono memorizzati come coppie <strong>di</strong> valori “attributi” all’interno<br />

del server AAA (Authentication, Authorization, and Accounting server) solitamente<br />

RADIUS o DIAMETER. Gli scambi <strong>di</strong> messaggi sono protetti dal<br />

tunnel TLS stabilito nella fase uno. L’autenticazione del client nella fase due<br />

può avvenire con qualsiasi protocollo non-EAP come per esempio protocolli<br />

PPP (PAP) o Microsoft c○ PPP CHAP Extension (MS-CHAPv2). Poiché<br />

solamente il server <strong>di</strong> autenticazione deve essere il possesso <strong>di</strong> un certificato<br />

valido, EAP-TTLS risulta più maneggevole del fratello EAP-TLS.<br />

4.3.4 Protected Extensible Authentication Protocol (PEAP)<br />

PEAP fornisce un tunnel <strong>di</strong> comunicazione criptato e autenticato come<br />

TLS. Pertanto, i messaggi EAP incapsulati all’interno del tunnel TLS sono<br />

protetti contro svariati attacchi. Analogamente a EAP-TTLS, questo metodo<br />

comprende due fasi.<br />

Nella prima, viene stabilita una sessione TLS ed il client autentica il<br />

server attraverso un certificato. Sempre, come opzione, il server può a sua<br />

volta autenticare il client. Nella seconda fase, i messaggi EAP sono criptati<br />

utilizzando la chiave ottenuta nella fase precedente. L’idea base <strong>di</strong> PEAP e <strong>di</strong><br />

EAP-TTLS è identica. Tuttavia, PEAP può utilizzare solamente protocolli<br />

EAP (EAP-MS-CHAPv2) nella seconda fase, mentre EAP-TTLS poteva<br />

utilizzare in<strong>di</strong>stintamente protocolli EAP o non. Quando si utilizza PEAP<br />

in una WLAN, <strong>di</strong> solito un server <strong>di</strong> autenticazione viene autenticato da un<br />

client grazie ad un certificato <strong>di</strong>gitale. Viene creato un tunnel TLS. Il client<br />

viene autenticato usando il proprio username e la propria password protette<br />

dal tunnel TLS.<br />

4.3.5 Microsoft c○ Challenge Handshake Authentication Protocol<br />

vers.2 (MS-CHAPv.2)<br />

Protocollo <strong>di</strong> autenticazione sviluppato dall’azienda Microsoft c○ , leader<br />

mon<strong>di</strong>ale nella produzione <strong>di</strong> software, basato sull’architettura del meccanismo<br />

CHAP (Challenge Handshake Authentication Protocol)<br />

Il CHAP è uno schema <strong>di</strong> autenticazione usato dai server PPP per convalidare<br />

l’identità dei client remoti. Il CHAP verifica perio<strong>di</strong>camente l’identità<br />

del client tramite un processo handshake. Ciò accade non appena viene stabilito<br />

il primo contatto e può accadere <strong>di</strong> nuovo in qualunque momento. La<br />

126


4.3 Extensible Authentication Protocol (EAP)<br />

verifica si basa su un segreto con<strong>di</strong>viso (come la password dell’utente). Ecco<br />

i passi fondamentali:<br />

1. Dopo aver stabilito una connessione, il client invia il proprio identificativo<br />

utente ed il server risponde con una domanda <strong>di</strong> “sfida”<br />

(challenge), costituita da un numero pseudocasuale.<br />

2. Il client esegue l’hash (per esempio MD5) del challenge assieme alla<br />

sua password e lo reinvia.<br />

3. Il server, che conosce la password, è in grado <strong>di</strong> eseguire lo stesso calcolo<br />

e quin<strong>di</strong> comparare i due valori verificando la correttezza del valore<br />

ricevuto. Se i valori non combaciano la connessione viene terminata.<br />

4. Ad intervalli casuali il server ripropone un challenge al client e vengono<br />

ripetuti i primi tre passi.<br />

In questo modo la chiave non circola sulla rete, ma rimane il problema<br />

della conoscenza della chiave che deve essere nota per entrambi i sistemi. Il<br />

CHAP offre però una protezione contro gli attacchi replay grazie all’uso <strong>di</strong><br />

un identificatore e <strong>di</strong> un challenge variabili. Questo protocollo necessita che<br />

il client conservi la password in formato testo.<br />

MS-CHAP versione 2 [24] deriva dal protocollo MS-CHAP. In MS-CHAPV2<br />

il processo <strong>di</strong> autenticazione è reciproco, il client e il server si presentano e il<br />

server deve <strong>di</strong>mostrare al client che è in grado <strong>di</strong> accedere al database dove<br />

è contenuta la password dell’utente che sta tentando la connessione.<br />

In linea <strong>di</strong> massima i passi compiuti dal processo <strong>di</strong> autenticazione sono:<br />

1. Il client contatta il server e stabilisce una sessione.<br />

2. Il server <strong>di</strong> autenticazione invia al client un messaggio composto da:<br />

• un identificatore della sessione (IdS);<br />

• una stringa pseudocasuale (A);<br />

3. Il client riceve il messaggio dal server e invia una risposta composta<br />

da:<br />

• username;<br />

• una stringa fittizia (B);<br />

• la stringa pseudocasuale (A), l’identificativo <strong>di</strong> sessione (IdS), la<br />

password utente, tutto cifrato;<br />

4. Il server riceve il messaggio dal client lo verifica e invia la relativa<br />

risposta composta da:<br />

127


• L’esito del tentativo <strong>di</strong> connessione.<br />

Meccanismi <strong>di</strong> autenticazione<br />

• La stringa fittizia(B) e la password utente tutto cifrato.<br />

5. Il client riceve la risposta e se è avvenuta l’autenticazione utilizza la<br />

sessione altrimenti interrompe la connessione.<br />

Rispetto al CHAP, l’MS-CHAP v2 è più sicuro perché:<br />

• Ogni volta che l’utente si collega viene generata una chiave per crittografare<br />

i dati, basata sia sulla password utente sia su una stringa<br />

casuale. Nel protocollo originale essendo la chiave generata solo a<br />

partire dalla password la chiave <strong>di</strong> crittografia è sempre la stessa.<br />

• I dati inviati e quelli trasmessi sono cifrati con chiavi generate separatamente<br />

e non come nella versione originale dove la chiave era sempre<br />

la stessa.<br />

128


Parte III<br />

Sicurezza delle reti Wireless


Capitolo 5<br />

Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

Introduzione<br />

In questo capitolo vengono descritti ed analizzati i principali meto<strong>di</strong> <strong>di</strong><br />

<strong>attacco</strong> alle reti wireless in funzione del loro meccanismo <strong>di</strong> sicurezza implementato.<br />

Vengono evidenziate così le vulnerabilità dei protocolli commerciali<br />

crittografici e <strong>di</strong> autenticazione, sottolineando la loro inadeguatezza a<br />

determinati requisiti <strong>di</strong> sicurezza. Le notizie riportate in questo capitolo<br />

sono prese e rielaborate da [23, 51, 49, 18, 41, 39, 45, 44].<br />

5.1 WEP: Insicurezza totale<br />

Abbiamo visto nei capitoli precedenti la storia e le caratteristiche dell’algoritmo<br />

<strong>di</strong> sicurezza per le reti wireless WEP (Wireless Equivalent Privacy).<br />

Dopo aver appreso le conoscenze tecniche relative all’implementazione dell’algoritmo,<br />

ora mostreremo come esso sia debole e facilmente attaccabile<br />

attraverso numerose tecniche <strong>di</strong> hacking. Il facile utilizzo, e la completa<br />

compatibilità con i prodotti hardware lo rendono tuttavia il meccanismo <strong>di</strong><br />

cifratura maggiormente utilizzato.<br />

5.1.1 Attacco “IV deboli”<br />

L’<strong>attacco</strong> agli IV (Inizialization Vector) deboli, denominato anche “Weak<br />

IV attack” o “FMS attack” dal nome dei famosi relaizzatori Fhurer, Mantin e<br />

Shamir, è <strong>di</strong> tipo statistico e dunque non garantisce il successo. Analizziamo<br />

in dettaglio i vari punti <strong>di</strong> vulnerabilità dell’algoritmo. Iniziamo col rivedere<br />

alcune informazioni in nostro possesso:<br />

• L’IV dell’algoritmo viene inviato sottoforma <strong>di</strong> plaintext allegato al ciphertext.<br />

Questa considerazione permette <strong>di</strong> affermare che utilizzando<br />

131


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

un software ad-hoc per la cattura <strong>di</strong> pacchetti wireless, un attaccante<br />

è in grado <strong>di</strong> conoscere i primi tre byte (24 bit) del PRGA.<br />

• Sia l’algoritmo KSA che PRGA, implementati in RC4, rilasciano informazioni<br />

durante le prime tre iterazioni. Nella la prima iterazione,<br />

la variabile i avrà sempre valore uguale a 1. La variabile j sarà sempre<br />

uguale a S[1]. In questo modo risulta possibile duplicare KSA<br />

durante le prime tre iterazioni in base al fatto che i primi tre caratteri<br />

vengono trasmessi in chiaro.<br />

• L’operatore matematico <strong>di</strong> XOR è una funzione invertibile. Infatti<br />

è possibile conoscere il valore <strong>di</strong> una stringa <strong>di</strong> bit “sconosciuta”<br />

semplicemente conoscendo gli altri due parametri in gioco.<br />

• Statisticamente vi è il 5% <strong>di</strong> probabilità che i valori che occupano<br />

l’array S nelle posizioni da S[0] a S[3] cambino dopo le prime quattro<br />

iterazioni <strong>di</strong> KSA. Quin<strong>di</strong> un attaccante potrebbe “indovinare”<br />

l’evoluzione <strong>di</strong> KSA con il 5% <strong>di</strong> possibilità <strong>di</strong> successo.<br />

• Il quarto byte del pacchetto crittografato è sempre un header SNAP<br />

corrispondente al valore esadecimale 0xAA equivalente al numero 170<br />

decimale. Dunque “sniffando” il primo byte del pacchetto cifrato e<br />

ponendolo in XOR con il numero 170 si ottiene in chiaro il quarto<br />

byte <strong>di</strong> output del PRGA.<br />

• Dall’esperienza dei numerosi attacchi effettuati nel corso <strong>degli</strong> anni<br />

durante penetration test <strong>di</strong> sicurezza, si è confermato che una determinata<br />

percentuale <strong>di</strong> IV denominati “deboli” rilascia informazioni su<br />

uno specifico byte della chiave segreta k. Su 16.000.000 IV, circa 9.000<br />

possono presentarsi come deboli. Il formato <strong>di</strong> tali frame è del tipo:<br />

B + 3, N − 1, X<br />

dove B è il byte della chiave segreta che l’IV mette a repentaglio<br />

rilasciando informazioni in modo da poterlo scoprire. N la lunghezza<br />

del frame e X un valore arbitrario. Per caratterizzare un IV come<br />

“debole” bisogna applicare la seguente equazione sulle permutazioni<br />

<strong>di</strong> S imme<strong>di</strong>atamente dopo l’algoritmo KSA:<br />

X = S{B + 3}[1] < B + 3<br />

X + S{B + 3}[X] = B + 3<br />

Questo sistema è in grado <strong>di</strong> scoprire un numero <strong>di</strong> IV deboli estremamente<br />

superiore della maggior parte delle applicazioni commerciali. Il<br />

problema principale nell’applicazione <strong>di</strong> tale sistema a tutti gli IV catturati<br />

risiede nel fatto che bisogna controllare almeno una volta tutti<br />

132


5.1 WEP: Insicurezza totale<br />

gli IV per ogni byte <strong>di</strong> chiave catturato. Per applicare tale tecnica si<br />

richiede la cattura <strong>di</strong> un elevato numero <strong>di</strong> IV, circa 2.000.000 e un<br />

costo computazionale complessivo piuttosto oneroso.<br />

Il <strong>di</strong>fetto principale dell’WEP sta nell’implementazione dell’algoritmo<br />

RC4. Le informazioni fornite dai byte che formano l’output del PRGA sono<br />

l’anello debole del sistema. Ve<strong>di</strong>amo come sfruttare tali debolezze per ottenere<br />

una chiave <strong>di</strong> sessione WEP.<br />

Dopo la cattura <strong>di</strong> un pacchetto cifrato viene utilizzato il corrispettivo<br />

IV per simulare le prime tre iterazioni del KSA. Definiamo alcuni valori:<br />

• 3, 255, 7 = IV utilizzato per l’esempio teorico<br />

• 2222 = valore della chiave WEP utilizzata. Tale valore viene definito in<br />

quanto utile per osservare il processo <strong>di</strong> “cracking” a scopo <strong>di</strong>dattico.<br />

• N = 256.<br />

• Per valori maggiori <strong>di</strong> N viene effettuata l’operazione <strong>di</strong> modulo %<br />

considerando esclusivamente il resto della <strong>di</strong>visione.<br />

• Array S inizializzato con 256 valori.<br />

L’immagine 5.1 rappresenta la struttura della chiave segreta nel registro<br />

K dopo la cattura dell’IV:<br />

I iterazione KSA<br />

Figura 5.1: Valori dell’array k dopo la cattura dell’IV<br />

Nell’immagine 5.2 viene schematizzato il contenuto dell’array <strong>di</strong> lavoro<br />

dell’algoritmo KSA alla sua prima iterazione. Gli in<strong>di</strong>ci i e j vengono<br />

inizializzati a 0.<br />

Figura 5.2: Array <strong>di</strong> lavoro KSA: I iterazione<br />

j = j+S[i]+K[i%l] = 0+S[0]+K[0] = 0+0+3 = 3 ⇒ j=3<br />

Nella precedente equazione si notano come i valori <strong>di</strong> i e j sono inizializzati<br />

a 0 e sono usati dall’array S (S[0]=0) e dall’array K (K[0]=3). Il<br />

133


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

risultato è costituito dai valori 0, 0 e 3 che sommati rilasciano il valore 3 che<br />

viene assegnato a j. Questo valore viene passato alla funzione <strong>di</strong> swap:<br />

quin<strong>di</strong> se<br />

ne segue che<br />

i=0; j=3; ⇒ Swap(S[i],S[j])<br />

S[0]=0, S[3]=3<br />

Swap(S[0],S[3]) = S[0]=3 ∧ S[3]=0<br />

Come detto precedentemente vi sono il 5% <strong>di</strong> probabilità che i valori<br />

compresi tra S[0] e S[3] non cambino dopo i primi 4 cicli KSA e PRGA.<br />

II iterazione KSA<br />

Figura 5.3: Array <strong>di</strong> lavoro KSA: II iterazione<br />

j = j+S[i]+K[i%l] = 3+S[1]+K[1] = 3+1+255 = 259%256 = 3 ⇒ j=3<br />

quin<strong>di</strong> se<br />

ne segue che<br />

i=0; j=3; ⇒ Swap(S[i],S[j])<br />

S[1]=1, S[3]=0<br />

Swap(S[1],S[3]) = S[1]=0 ∧ S[3]=1<br />

Si noti che in questo ciclo i è stata incrementata <strong>di</strong> 1 ed è stata effettuata<br />

un’operazione <strong>di</strong> modulo per determinare il valore <strong>di</strong> j.<br />

III iterazione KSA<br />

Figura 5.4: Array <strong>di</strong> lavoro KSA: III iterazione<br />

j = j+S[i]+K[i%l] = 3+S[2]+K[2] = 3+2+7 = 12 ⇒ j=12<br />

134


5.1 WEP: Insicurezza totale<br />

quin<strong>di</strong> se<br />

ne segue che<br />

i=2; j=12; ⇒ Swap(S[i],S[j])<br />

S[2]=2, S[12]=12<br />

Swap(S[2],S[12]) = S[2]=12 ∧ S[12]=2<br />

È da notare che fino a questo punto sono stati usati valori dell’IV, e quin<strong>di</strong><br />

valori conosciuti. Qualsiasi attaccante può riprodurre questo processo fino<br />

a questo punto. Nel prossimo ciclo però non si utilizzeranno più parametri<br />

conosciuti, quin<strong>di</strong> ci si dovrebbe aspettare un abbandono nel tentativo <strong>di</strong><br />

<strong>attacco</strong>.<br />

IV iterazione KSA<br />

Figura 5.5: Array <strong>di</strong> lavoro KSA: IV iterazione<br />

Nei seguenti calcoli viene in<strong>di</strong>cato il dato incognito con il simbolo ∗.<br />

quin<strong>di</strong> se<br />

ne segue che<br />

j = j+S[i]+K[i%l] = 12+S[3]+K[3] = 12+1+ ∗ = ∗<br />

i=3; j= ∗ ; ⇒ Swap(S[i],S[j])<br />

S[3]=1, S[j]=∗<br />

Swap(S[3],S[j]) = S[3]= ∗ ∧S[j]=1<br />

Esiste una via per determinare il valore <strong>di</strong> j? Si. Con una semplice<br />

operazione <strong>di</strong> XOR, un “cracker” 1 può determinare il valore dalla prima<br />

ripetizione del processo del PRGA.<br />

Conoscendo questo, bisogna ragionare sul processo <strong>di</strong> XOR che genera i<br />

dati cifrati. Il processo finale dell’RC4 consiste in un’operazione <strong>di</strong> XOR tra<br />

il PRGA ed il plaintext. Ora siccome lo XOR è invertibile, si può dedurre<br />

il primo byte del PRGA eseguendo l’operazione <strong>di</strong> XOR tra il primo byte<br />

del ciphertext con il primo byte del plaintext. Per un attaccante questa è<br />

un’operazione semplice grazie all’header SNAP ed all’uso <strong>di</strong> uno “sniffer”<br />

wireless.<br />

1 Attaccante o processo informatico che cerca <strong>di</strong> decifrare informazioni crittografate<br />

135


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

Nel seguente esempio viene mostrato il valore cifrato del primo byte<br />

del pacchetto catturato in sniffing (165 in decimale), ovviamente sempre<br />

<strong>di</strong>verso. La seguente equazione illustra il processo <strong>di</strong> XOR con il quarto<br />

byte del ciphertext <strong>di</strong> valore noto:<br />

0xAA 170 ⊕<br />

0xA5 165 =<br />

0x0F 015<br />

Dopo aver dedotto che il valore del byte utile del PRGA è 15 in base<br />

decimale, l’attaccante può utilizzare la tecnica <strong>di</strong> reverse engineering 2 del<br />

processo del PRGA per ricavare il valore <strong>di</strong> j. Per prima cosa bisogna<br />

ricordare i valori del quarto ciclo del KSA (Fig.5.6).<br />

Questi valori possono essere riprodotti facilmente me<strong>di</strong>ante l’uso dell’IV:<br />

1. Inizializzazione<br />

2. i=0<br />

3. j=0<br />

4. Generazione<br />

Figura 5.6: Array <strong>di</strong> lavoro KSA: IV iterazione (∗)<br />

5. i= i+1 = 0+1 = 1<br />

6. j = j+S[i] = 0+S[1] = 0+0 = 0<br />

7. Swap(S[i],S[j]), S[1]=0 ∧ S[0]=3 ⇒ S[1]=3 ∧ S[0]=0<br />

8. z = S[S[i]+S[j]] = S[S[1]+S[0]] = S[3+0] = S[3] =∗<br />

9. ∗=15 ⇒ S[3]=15 al 4 ciclo del KSA.<br />

Quin<strong>di</strong> i rimane sempre uguale a 1 per tutta la prima iterazione del<br />

PRGA. Ne segue che j sarà sempre uguale ad S[0]. I valori contenuti in S[i]<br />

e in S[j] vengono rimescolati (swapping), ottenendo S[1] = 3 ed S[0] = 0.<br />

Questi valori poi vengono sommati, ed il risultato, viene utilizzato per localizzare<br />

un valore nell’array. In questo caso la combinazione dei valori <strong>di</strong> S[i]<br />

ed S[j] è uguale a 3. Tuttavia il valore <strong>di</strong> S[3] proviene dal completamento<br />

del quarto ciclo del KSA, che rimane sconosciuto. Fortunatamente, grazie al<br />

2 Processo <strong>di</strong> inversione <strong>di</strong> un algoritmo con lo scopo <strong>di</strong> risalire a valori <strong>di</strong> variabili<br />

mo<strong>di</strong>ficati<br />

136


5.1 WEP: Insicurezza totale<br />

processo <strong>di</strong> XOR, si conosce che z=15 e che quin<strong>di</strong> S[3] alla fine del quarto<br />

ciclo del KSA sarà uguale a 15. Conoscendo questo, un attaccante deve solo<br />

invertire il processo del quarto ciclo del KSA per conoscere il valore del byte<br />

relativo alla chiave.<br />

Ricaviamo il valore della chiave<br />

Ripren<strong>di</strong>amo ancora una volta i dati relativi alla quarta iterazione <strong>di</strong><br />

KSA (Fig.5.7):<br />

Figura 5.7: Array <strong>di</strong> lavoro KSA: IV iterazione (∗∗)<br />

L’ultimo passaggio dell’algoritmo KSA consiste nell’operazione <strong>di</strong> swap<br />

dei valori. Grazie allo XOR si sa che S[3] sarà uguale a 15, quin<strong>di</strong> un<br />

attaccante ipotizza che S[15] avrà come valore quello contenuto in S[3] prima<br />

del quarto ciclo, in questo caso 1. Alla fine si deduce che, dopo l’operazione<br />

<strong>di</strong> swap, S[3] sarà uguale a 15 ed S[15] sarà uguale a 1.<br />

S[3]=1 ∧ S[15]=3 ⇒ Swap(S[3],S[15]) ⇒ S[3]=15 ∧ S[15]=1<br />

Giunti a questo punto, l’attaccante scambia (swap) i valori presenti in<br />

queste posizioni, lasciando S[3] uguale a 1.<br />

j = j+S[i]+K[i%l] = 12+S[3]+K[3] = 12+1+K[3] = 15<br />

Siamo giunti alla fine dell’<strong>attacco</strong>. Si aggiugono i valori all’equazione<br />

ricavando il valore segreto della chiave j.<br />

K[3] = 15-12-1 = 2<br />

Grazie ad un calcolo inverso “relativamente” semplice è stato ricavato il<br />

valore 2, ovvero il primo byte della chiave segreta k.<br />

Uno dei problemi principali per eseguire quest’<strong>attacco</strong> sta nel determinare<br />

se un IV fornisce informazioni su una parte della chiave segreta in<br />

un particolare byte <strong>di</strong> output, e se le probabilità sono buone per prenderlo<br />

in considerazione.<br />

Attraverso questa tecnica l’algoritmo <strong>di</strong> cifratura WEP può essere eluso,<br />

ma quest’operazione richiede la cattura <strong>di</strong> molti IV che, a seconda della<br />

rete e della chiave, può richiedere davvero molto tempo. In funzione della<br />

grandezza e della lunghezza della chiave bisogna catturare un quantitativo<br />

<strong>di</strong> IV alto. Per una chiave da 40 bit bisogna catturare circa 250.000<br />

IV mentre per una chiave da 104 bit a volte non bastano 800.000 IV. La<br />

137


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

natura probabilistica dell’<strong>attacco</strong> non ne assicura comunque la riuscita. I<br />

software sviluppati a tale scopo riproducono e mo<strong>di</strong>ficano gli algoritmi del<br />

meccanismo al fine <strong>di</strong> trarre maggiori informazioni possibili ed aumentare la<br />

probabilità <strong>di</strong> successo.<br />

Un intervento utile rende possibile in<strong>di</strong>viduare un IV vulnerabile mo<strong>di</strong>ficando<br />

l’algoritmo PRGA nel seguente modo:<br />

Attacco ARP request injection<br />

Questo tipo <strong>di</strong> <strong>attacco</strong> è possibile effettuarlo poiché l’WEP non offre<br />

alcun tipo <strong>di</strong> protezione contro i “reply attack” lavorando a livello <strong>di</strong> “Data<br />

Link”, non tenendo conto del livello 802.3 MAC nel processo <strong>di</strong> crittazione.<br />

Effettuare questo assalto è molto semplice. L’attaccante “sniffa” pacchetti<br />

nell’etere e concentra la sua attenzione a quelli inviati in broadcast. Un ARP<br />

request ha sempre una lunghezza fissa <strong>di</strong> 68 byte. Quando un client vuole<br />

uscire dalla rete invia un ARP request in broadcast per conoscere l’in<strong>di</strong>rizzo<br />

138


5.1 WEP: Insicurezza totale<br />

MAC del default gateway settato. Il gateway risponde con un ARP reply,<br />

e quin<strong>di</strong> con un nuovo pacchetto contenente un nuovo IV. Se il “cracker”<br />

cattura l’ARP request può reiniettarla forzando continuamente il gateway a<br />

generare nuove ARP reply contenenti ovviamente nuovi IV. A questo punto<br />

il “cracker” si limita a sniffare e catturare tutti i pacchetti per poi iniziare<br />

il processo <strong>di</strong> cracking.<br />

5.1.2 Attacco <strong>di</strong> Klein<br />

Il famoso “Klein’s attack” viene inserito com opzione nei principali software<br />

tools per l’hacking delle reti wireless. Esso si basa sul fatto che esiste<br />

un ulteriore correlazione tra i valori assunti da i ed S[(S[i] + S[j])].<br />

Questo legame porta ad un secondo <strong>attacco</strong> crittoanalitico che non verrà <strong>di</strong>mostrato.<br />

Come analizato in precedenza, quando un host vuole contattare<br />

un altro host invia una ARP request al destinatario che risponde con una<br />

ARP reply. I primi 16 byte <strong>di</strong> un pacchetto ARP sono costanti ed hanno<br />

lunghezza fissa. Risulta facile localizzarli ed inoltre <strong>di</strong>fferiscono soltanto <strong>di</strong><br />

un byte che prevede l’invio in broadcast o ad un destinatario ben preciso.<br />

Quin<strong>di</strong> “xorando” il pacchetto cifrato con i byte si risale ai primi 16 byte del<br />

keystream. L’<strong>attacco</strong> ovviamente viene velocizzato con un injection continuo<br />

<strong>di</strong> pacchetti, utilizzando l’“ARP request injection attack” descritto nella<br />

sezione precedente. Con questo <strong>attacco</strong> ogni byte della chiave viene calcolato<br />

in modo in<strong>di</strong>pendente. Le statistiche <strong>di</strong>mostrano che nel 50% dei casi<br />

si riesce a rompere una chiave da 104 bit in circa 60 secon<strong>di</strong> con un numero<br />

irrisorio <strong>di</strong> pacchetti ARP catturati, circa 40.000. Questo <strong>attacco</strong> è molto<br />

più veloce dell’<strong>attacco</strong> FMS, non richiede un numero elevato <strong>di</strong> prestazioni<br />

da parte della CPU e risulta statisticamente molto efficiente. Il tool realizzato<br />

per mettere in atto questo <strong>attacco</strong> è stato sviluppato dai ricercatori<br />

dell’Università <strong>di</strong> Darmstard e prende il nome <strong>di</strong> aircrack-ptw.<br />

5.1.3 Attacco “a frammentazione”<br />

Sferrare un <strong>attacco</strong> “weak IV” col fine <strong>di</strong> recuperare la chiave WEP,<br />

abbiamo visto che può rivelarsi un processo molto lungo, anche ore o giorni,<br />

a seconda della rete vittima. In ogni caso è stato <strong>di</strong>mostrato come il WEP<br />

può essere eluso.<br />

L’<strong>attacco</strong> spiegato in questa sezione prende il nome <strong>di</strong> <strong>attacco</strong> <strong>di</strong> frammentazione<br />

o “fragmentation attack”. Viene utilizzato per generare molto<br />

più velocemente IV nella rete della vittima allo scopo <strong>di</strong> ridurre i tempi <strong>di</strong><br />

cattura in pochi minuti per poi effettuare il tentativo <strong>di</strong> rottura della chiave.<br />

Il “weak IV attack” si basa su dati statistici calcolando la chiave più<br />

probabile. Siccome vi è una probabilit del 5% che una congettura fatta<br />

per un byte <strong>di</strong> chiave sia corretta, risulta necessario catturare un numero<br />

notevolmente alto <strong>di</strong> pacchetti prima che un byte <strong>di</strong> chiave can<strong>di</strong>dato rag-<br />

139


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

giunga una probabilità ragionevole per essere ritenuto corretto. A seconda<br />

della <strong>di</strong>mensione della chiave WEP (non nota a priori) può essere necessario<br />

catturare anche oltre 1.000.000 <strong>di</strong> IV prima <strong>di</strong> riuscire a risalire alla chiave.<br />

Il tempo <strong>di</strong> cattura è particolarmente alto e più pacchetti si hanno a <strong>di</strong>sposizione,<br />

maggiore sarà la probabilità <strong>di</strong> successo nel processo <strong>di</strong> “cracking”.<br />

Un utente me<strong>di</strong>o in genere utilizza per il 90% il servizio Internet per navigare<br />

tra i vari siti web. Questo tipo <strong>di</strong> traffico non favorisce la produzione <strong>di</strong><br />

numerosi IV can<strong>di</strong>dati al nostro scopo. Un <strong>attacco</strong> come l’“weak IV ” risulta<br />

fattibile in una rete formata da 3, 4 o più client che trasferiscono sempre<br />

numerosi file. L’utilizzo costante <strong>di</strong> software peer to peer (p2p) o il continuo<br />

scambio <strong>di</strong> file in rete intranet sono uno scenario ideale.<br />

Vi sono altri meto<strong>di</strong> atti a generare IV, come il “replay <strong>di</strong> ARP request”,<br />

ma questo metodo nella maggior parte delle volte richiede una macchina che<br />

cattura i pacchetti e l’altra che invia ripetutamente ARP request.<br />

L’ARP request, Address Resolution Protocol (ARP RFC826) è utilizzato<br />

per tradurre un in<strong>di</strong>rizzo IP a 32 bit in un in<strong>di</strong>rizzo Ethernet a 48<br />

bit, usato anche dalle reti wireless. Quando un host A (192.168.1.1) vuole<br />

comunicare con un host B (192.168.1.2), un in<strong>di</strong>rizzo IP noto deve essere<br />

tradotto in un in<strong>di</strong>rizzo MAC utilizzando il protocollo ARP. Per fare ciò,<br />

l’host A invia un messaggio broadcast contenente l’in<strong>di</strong>rizzo IP dell’host B<br />

(Who has 192.168.1.2? Tell 192.168.1.1). Il client destinatario riconosce il<br />

proprio in<strong>di</strong>rizzo IP ed invia una risposta contenente il proprio MAC address<br />

(192.168.1.2 is at 01:23:45:67:89:0A). Questo messaggio finale viene<br />

solitamente cifrato.<br />

L’utilizzo <strong>di</strong> hardware sempre più sofisticato come processori dual core<br />

favorisce questi tipi <strong>di</strong> approccio. Come già descritto, per conoscere il PRGA<br />

bisogna conoscere il plaintext. È noto che il primo byte <strong>di</strong> un pacchetto<br />

contiene l’header SNAP raffigurato <strong>di</strong> seguito in figura 5.8:<br />

Figura 5.8: Struttura header SNAP<br />

L’header SNAP, è lungo 8 byte e contiene costanti in tutti i campi tranne<br />

per l’Ethernet type che denifisce il protocollo che segue nello stack. I can<strong>di</strong>dati<br />

ad occupare quest’ultimo campo sono IP o ARP. Il valore per entrambi i<br />

protocolli comincia con 0x08, il quale fa conoscere i primi 7 byte del plaintext<br />

sempre con un elevato grado <strong>di</strong> probabilità. Se i pacchetti IP sono <strong>di</strong>stinguibili<br />

da quelli ARP allora i primi 8 byte del PRGA sono da considerarsi<br />

conosciuti. Tutti i pacchetti ARP hanno una lunghezza fissa:<br />

140


5.1 WEP: Insicurezza totale<br />

8 byte (header SNAP) + 8 byte (header ARP)+<br />

+ 8 byte (dati ARP) = 36 byte<br />

Tali pacchetti in caso <strong>di</strong> ARP request sono <strong>di</strong> tipo broadcast. Ogni pacchetto<br />

<strong>di</strong> <strong>di</strong>mensioni maggiori <strong>di</strong> 36 byte viene considerato come pacchetto<br />

IP. Vi è un’eccezione: alcuni <strong>di</strong>spositivi hardware completano (pad<strong>di</strong>ng) i<br />

pacchetti ARP a 54 byte. In tal caso, i pacchetti più gran<strong>di</strong> <strong>di</strong> 54 byte possono<br />

essere considerati come pacchetti IP ed i pacchetti broadcast <strong>di</strong> 54 byte<br />

come pacchetti ARP. Comunque, per ovviare a questo problema, è possibile<br />

creare una lista <strong>di</strong> <strong>di</strong>spositivi hardware che effettuano questo “pad<strong>di</strong>ng” e<br />

dedurre dal MAC address se tali <strong>di</strong>spositivi sono presenti in rete.<br />

Statisticamente almeno 8 byte <strong>di</strong> plaintext sono noti e analogamente<br />

vengono scoperti anche i primi 8 byte del PRGA. A questo punto, possono<br />

essere inviati arbitrariamente dati <strong>di</strong> 8 byte, anche se in realtà lo scenario<br />

non si <strong>di</strong>mostra così semplice in quanto solamente 4 byte <strong>di</strong> dati utili possono<br />

essere inviati poiché 4 byte sono necessari per il checksum.<br />

Con solo 4 byte <strong>di</strong>sponibili, un attaccante non può sperare <strong>di</strong> ottenere<br />

molto. L’header SNAP è lungo 8 byte. Quello IP molto <strong>di</strong> più.<br />

Lo standard 802.11 definisce la frammentazione a livello MAC. Durante<br />

la frammentazione, il processo <strong>di</strong> crittografia del WEP viene applicato in<strong>di</strong>pendentemente<br />

su ogni frammento. Niente impe<strong>di</strong>sce ad ogni frammento<br />

<strong>di</strong> avere lo stesso IV. È quin<strong>di</strong> possibile trasmettere i dati in pezzi da 4 byte<br />

con gli 8 byte del PRGA che è stato precedentemente catturato. Il numero<br />

<strong>di</strong> campo del frammento è <strong>di</strong> 4 bit permettendo un massimo <strong>di</strong> 24 frammenti,<br />

ovvero 16 frammenti. Questo permette ad un attaccante <strong>di</strong> iniettare<br />

4 · 16 = 64 byte <strong>di</strong> dati arbitrari. Un pacchetto IP minimo richiede:<br />

8 byte (header SNAP) + 20 byte (header IP) = 28 byte <strong>di</strong> dati.<br />

È quin<strong>di</strong> possibile trasmettere 64 − 28 = 36 byte <strong>di</strong> dati IP sulla rete.<br />

Si noti che in questa fase la frammentazione IP può essere utilizzata se devono<br />

essere trasmessi più dati. Un attaccante può scoprire più <strong>di</strong> un PRGA.<br />

Poiché vengono iniettati dati arbitrari, si può inviare un lungo frame in<br />

broadcast che l’AP trasmetterà come un singolo frame, in quanto non ha<br />

motivo <strong>di</strong> <strong>di</strong>viderlo in tanti piccoli pezzi. Il plaintext ora è definitivamente<br />

conosciuto ed il frame trasmesso può essere catturato banalmente, rivelando<br />

una porzione più grande <strong>di</strong> PRGA. Questa azione può essere ripetuta fino<br />

ad ottenere un PRGA abbastanza grande, prossimo alla grandezza <strong>di</strong> un<br />

MTU (Maximum Transmission Unit). Successivamente la frammentazione<br />

non è più necessaria per trasmettere frame.<br />

Non essere in grado <strong>di</strong> ricevere dati è una notevole limitazione nella maggior<br />

parte dei casi. Esiste una tecnica che può essere applicata per decrittare<br />

un pacchetto arbitrario in un tempo accettabile, rispettando la lunghezza<br />

del pacchetto. Si supponga che un pacchetto sia stato catturato e che un<br />

141


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

attaccante abbia il bisogno <strong>di</strong> decrittarlo. Se il PRGA per l’IV usato in quel<br />

pacchetto fosse conosciuto, il plaintext sarebbe recuperato effettuando un<br />

XOR con il ciphertext. Come detto precedentemente, si conoscono i primi 8<br />

byte del PRGA che sono usati per trasmettere i dati. Per esempio può essere<br />

inviato un frame in broadcast che l’access point ripeterà. Si noti comunque<br />

che, se gli 8 byte del PRGA recuperato non fossero stati corretti, l’access<br />

point non avrebbe ripetuto il pacchetto.<br />

Un attaccante può indovinare il nono byte del PRGA e provare a trasmettere<br />

un frame in broadcast <strong>di</strong> 9 campi. Se l’access point ripeterà il pacchetto<br />

vuol <strong>di</strong>re che il valore presente nel nono campo risulta corretto. Quin<strong>di</strong>, dopo<br />

255 congetture, il nono byte del PRGA verrà rivelato. A questo punto anche<br />

il nono byte del plaintext può essere rivelato (PRGA XOR ciphertext). Il<br />

prossimo byte del PRGA può finalmente essere indovinato. Questo processo<br />

continua finché non sarà decrittato tutto il frame.<br />

Una banale implementazione <strong>di</strong> questa tecnica (script) potrebbe far uso<br />

<strong>di</strong> un “timeout” per decidere se l’access point non ha trasmesso il frame a<br />

causa <strong>di</strong> un’errata congettura del PRGA. Un’esecuzione più rapida potrebbe<br />

sfruttare il fatto che i multicast frame ed i MAC address sono trasmessi in<br />

chiaro negli header 802.11.<br />

Se la congettura corrente del PRGA è 0xAB, può essere trasmesso un<br />

multicast frame destinato a 01:00:5E:00:00:AB corrispondente all’in<strong>di</strong>rizzo<br />

IP 224.0.0.x. Effettivamente tutte le congetture (0 − 255) possono essere inviate<br />

in parallelo e soltanto una verrà ritrasmessa. Quest’ultima può essere<br />

letta dagli in<strong>di</strong>rizzi <strong>di</strong> destinazione multicast presenti nel frame trasmesso.<br />

Questa tecnica permette <strong>di</strong> rivelare il prossimo byte del PRGA ed in<br />

poco tempo (qualche minuto) il processo <strong>di</strong> decrittazione verrà effettuato<br />

sull’intero pacchetto.<br />

Pacchetti utili e semplici da decrittare sono i pacchetti ARP. La loro<br />

decrittazione porta alla scoperta <strong>degli</strong> in<strong>di</strong>rizzi IP presenti nella rete. La<br />

seguente figura 5.9 rappresenta un header ARP:<br />

Figura 5.9: Struttura header ARP<br />

Il primo valore realmente conosciuto in un pacchetto ARP è l’in<strong>di</strong>rizzo<br />

IP, quin<strong>di</strong> non occorre spendere tempo a decrittare informazioni inutili. Ciò<br />

che si sa è che se il pacchetto viene trasmesso in broadcast si tratta <strong>di</strong> un<br />

ARP request, in caso contrario si tratta <strong>di</strong> un ARP reply. Il MAC address è<br />

anch’esso conosciuto (viene trasmesso in chiaro negli header 802.11). L’in<strong>di</strong>rizzo<br />

IP è composto da 4 byte (xxx.xxx.xxx.xxx) ma è necessario solo la<br />

142


5.1 WEP: Insicurezza totale<br />

decrittazione dei primi 3 byte per permettere ad un attaccante <strong>di</strong> assegnarsi<br />

un in<strong>di</strong>rizzo IP e <strong>di</strong> comunicare con gli altri host presenti nella rete. Per<br />

recuperare la chiave WEP si deve contare sempre sul “weak IV attack” che<br />

richiede sempre molti pacchetti. Poter iniettare arbitrariamente dati può<br />

accelerare <strong>di</strong> molto il processo <strong>di</strong> cattura <strong>di</strong> IV. Invece <strong>di</strong> replicare pacchetti<br />

ARP, un “cracker” può scegliere <strong>di</strong> pingare l’in<strong>di</strong>rizzo IP broadcast. Questo<br />

causerà inevitabilmente un <strong>attacco</strong> <strong>di</strong> tipo Denial Of Service (DOS).<br />

Un altro metodo è quello <strong>di</strong> tentare <strong>di</strong> stabilire un collegamento con<br />

un host su Internet. Per fare questo bisogna conoscere il MAC address del<br />

router che nella maggior parte dei casi corrisponde a quello dell’access point.<br />

In casi fortuiti, sfruttando la completa ingenuità dell’utente, si riesce ad accedere<br />

<strong>di</strong>rettamente al client vittima attraverso un browser. Su determinati<br />

sistemi operativi sono facilmente circuibili implementazioni <strong>di</strong> firewall.<br />

Un’altra tecnica consiste nella trasmissione <strong>di</strong> ARP request agli in<strong>di</strong>rizzi<br />

IP che finiscono terminanti con .1 e .254.<br />

5.1.4 Meto<strong>di</strong> alternativi <strong>di</strong> <strong>attacco</strong><br />

IP re<strong>di</strong>rection<br />

La capacità <strong>di</strong> alterare un ciphertext senza essere rilevato può essere<br />

sfruttata anche per decrittare i messaggi che transitano in etere. Dal punto<br />

<strong>di</strong> vista <strong>di</strong> un “eavesdropper” (colui che ascolta lo scambio <strong>di</strong> messaggi wireless),<br />

attaccare <strong>di</strong>rettamente RC4 è un’ipotesi da scartare imme<strong>di</strong>atamente.<br />

Quin<strong>di</strong> se non può decrittare i messaggi, c’è chi può farlo per lui: l’access<br />

point.<br />

L’idea è quella <strong>di</strong> ingannare l’access point al momento della decrittazione<br />

<strong>di</strong> un ciphertext. Un <strong>attacco</strong> simile si chiama “IP re<strong>di</strong>rection attack” e viene<br />

utilizzato quando l’access point funziona da router per la connessione ad<br />

Internet. Questo è un piano fattibile poiché WEP viene utilizzato principalmente<br />

per permettere l’accesso alla rete ad utenti forniti <strong>di</strong> laptop. In questo<br />

caso bisogna “sniffare” un pacchetto e mo<strong>di</strong>ficarlo in modo che abbia un nuovo<br />

in<strong>di</strong>rizzo <strong>di</strong> destinazione: uno controllato dall’attaccante. A questo punto<br />

l’AP decritta il pacchetto e lo invia alla nuova destinazione, al “cracker”,<br />

che potrà leggerne in chiaro il contenuto. Si noti che il pacchetto mo<strong>di</strong>ficato<br />

verrà trasmesso dalla rete wireless verso Internet. Il modo più semplice per<br />

mo<strong>di</strong>ficare l’in<strong>di</strong>rizzo IP <strong>di</strong> destinazione è determinare dall’esterno quale sia<br />

l’in<strong>di</strong>rizzo IP <strong>di</strong> destinazione originale, ed applicare il “packet injection” per<br />

cambiarlo in quello desiderato.<br />

Determinarlo dall’esterno non risulta particolarmente <strong>di</strong>fficile. Infatti<br />

tutto il traffico viene destinato ad un in<strong>di</strong>rizzo IP nella sottorete wireless,<br />

il quale non dovrebbe essere <strong>di</strong>fficile da determinare. Una volta decrittato<br />

il traffico, gli in<strong>di</strong>rizzi IP delle altre estremità dei collegamenti possono essere<br />

rilevati, e tutto il traffico può allora essere decrittato allo stesso modo.<br />

143


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

Affinché quest’<strong>attacco</strong> abbia successo, bisogna non solo mo<strong>di</strong>ficare l’in<strong>di</strong>rizzo<br />

IP <strong>di</strong> destinazione ma controllare anche che il checksum del pacchetto<br />

mo<strong>di</strong>ficato risulti essere corretto, altrimenti verrà scartato dall’access point.<br />

Ora, siccome il pacchetto mo<strong>di</strong>ficato <strong>di</strong>fferisce dall’originale solo per l’in<strong>di</strong>rizzo<br />

IP <strong>di</strong> destinazione, e poiché i vecchi ed i nuovi valori per l’in<strong>di</strong>rizzo IP <strong>di</strong><br />

destinazione sono conosciuti, è possibile calcolare il cambiamento richiesto<br />

per il checksum dell’in<strong>di</strong>rizzo IP causato dalla variazione <strong>di</strong> quest’ultimo.<br />

Supponendo <strong>di</strong> voler cambiare i valori alti e bassi dell’in<strong>di</strong>rizzo IP <strong>di</strong> destinazione<br />

DH e DL, 16 bit ognuno, in D 1 H e D 1 L, bisogna calcolare anche<br />

il checksum. Se il vecchio checksum era X, il nuovo dovrebbe essere:<br />

X 1 = X + D 1 H + D 1 L − DH − DL<br />

L’astuzia sta nell’applicare solo un’operazione <strong>di</strong> XOR per mo<strong>di</strong>ficare<br />

il pacchetto, e non è necessario conoscere con quale valore “xorare” X per<br />

ottenere X 1 . Vi sono tre mo<strong>di</strong> per provare a correggere il checksum <strong>di</strong> un<br />

in<strong>di</strong>rizzo IP <strong>di</strong> un pacchetto mo<strong>di</strong>ficato:<br />

1. Si conosce il checksum dell’in<strong>di</strong>rizzo IP del pacchetto originale:<br />

Se si conosce X, basta calcolare semplicemente X 1 come riportato<br />

sopra e mo<strong>di</strong>ficare il pacchetto xorando X con X 1 , che cambierà il<br />

checksum dell’in<strong>di</strong>rizzo IP in un valore corretto: X 1 .<br />

2. Non si conosce il checksum dell’in<strong>di</strong>rizzo IP del pacchetto originale: Se<br />

non si conosce X, l’operazione è ardua. Dato ε = X 1 − X è necessario<br />

calcolare ∆ = X 1 ⊕ X. Infatti non ci sono abbastanza informazioni<br />

per calcolare ∆ dato solo ε. Per esempio, se ε = 0xCAF E potrebbe<br />

essere:<br />

X 1 = 0xCAF E, X = 0x0000 → ∆ = 0xCAF E<br />

X 1 = 0xD00D, X = 0x050F → ∆ = 0xD502<br />

X 1 = 0x1EE7, X = 0x53E8 → ∆ = 0x4D0F<br />

. . .<br />

Tuttavia non sono possibili tutti 2 16 i valori per ∆, ed alcuni sono molto<br />

più probabili <strong>di</strong> altri. Si possono effettuare tutti i tentativi possibili<br />

ed ogni congettura errata verrà silenziosamente scartata dall’access<br />

point. Dipendendo dal valore <strong>di</strong> ε, un piccolo numero <strong>di</strong> tentativi può<br />

riuscire con alta probabilità. Infine, la decrittazione <strong>di</strong> un pacchetto<br />

può essere usata per avviare la decrittazione <strong>di</strong> altri pacchetti.<br />

3. Pre<strong>di</strong>sporre X = X 1 :<br />

Un’altra possibilità prevede <strong>di</strong> compensare il cambiamento nel campo<br />

<strong>di</strong> destinazione da un cambiamento in un altro campo, tale che il<br />

144


5.1 WEP: Insicurezza totale<br />

checksum del pacchetto rimanga identico. Assumendo per esempio il<br />

sorgente dell’in<strong>di</strong>rizzo IP del pacchetto da decrittare, basta sottrarre<br />

ε dai 16 bit più bassi del sorgente dell’in<strong>di</strong>rizzo IP, ed il pacchetto<br />

risultante avrà lo stesso checksum dell’in<strong>di</strong>rizzo IP originale. Tuttavia,<br />

è possibile che, mo<strong>di</strong>ficando il sorgente dell’in<strong>di</strong>rizzo IP in questo modo<br />

il pacchetto venga scartato.<br />

Packet injection<br />

Un attaccante in possesso <strong>di</strong> una coppia plaintext/ciphertext può calcolare<br />

il checksum senza conoscere la chiave WEP. Questo come conseguenza<br />

della seconda proprietà del CRC:<br />

P ⊕ C = keystream<br />

Avendo a <strong>di</strong>sposizione il keystream è possibile creare dei pacchetti crittati<br />

vali<strong>di</strong> da inviare in rete. Infatti qualsiasi plaintext in XOR con il keystream<br />

utilizzato nella WLAN origina un ciphertext valido. A questo punto il pacchetto<br />

ottenuto può essere inviato all’access point. Questa tecnica viene<br />

denominata “packet injection”, poiché è possibile inviare arbitrariamente<br />

pacchetti in rete aumentandone <strong>di</strong> fatto il traffico. L’unico problema sta nel<br />

recupero <strong>di</strong> un plaintext corrispondende ad un ciphertext.<br />

Attacco a <strong>di</strong>zionario e <strong>attacco</strong> a forza bruta<br />

Questi due attacchi, “<strong>di</strong>ctionay attack” e “bruteforce attack”, sono molto<br />

utilizzati in ambito informatico soprattutto quando si ha a <strong>di</strong>sposizione hardware<br />

molto potente. Come si è visto fin ora, il plaintext <strong>di</strong> un messaggio<br />

può essere ottenuto o analizzando gli IV ripetuti, o utilizzando altri mezzi.<br />

L’attaccante inoltre si avvale dei keystream utilizzati per cifrare i messaggi<br />

inviati, per decrittare altri messaggi con lo stesso IV (“IV replay attack-<br />

”). Col tempo, un attaccante può costruirsi una tabella contenente tutti i<br />

keystream corrispondenti ad ogni IV. La tabella richiede un gran numero<br />

<strong>di</strong> spazio, circa 1500 byte per ogni 2 24 possibili IV, circa 24 GB. Dato che<br />

le chiavi vengono cambiate molto raramente, il “cracker” può avere tutto il<br />

tempo <strong>di</strong> costruirsi un <strong>di</strong>zionario completo che consente con poco lavoro <strong>di</strong><br />

decrittare un ciphertext.<br />

Questo <strong>attacco</strong> è limitato solo dalle risorse e dal tempo <strong>di</strong>sponibile per<br />

costruire un <strong>di</strong>zionario completo. L’algoritmo WEP non è stato progettato<br />

per resistere a simili attacchi. Una chiave da 40 bit può essere recuperata anche<br />

con un <strong>attacco</strong> “bruteforce” (un <strong>attacco</strong> che prova tutte le combinazioni<br />

<strong>di</strong> password possibili, chiavi in questo caso) senza nemmeno utilizzare molte<br />

risorse e tempo. Tuttavia nal corso del tempo è stato migliorato con il supporto<br />

per l’utilizzo <strong>di</strong> chiavi <strong>di</strong> maggiore lunghezza, ma questo non limita<br />

l’utilizzo dell’<strong>attacco</strong> <strong>di</strong>zionario la cui potenza non <strong>di</strong>pende dalla lunghezza<br />

della chiave ma solo dalla lunghezza dell’IV, 24 bit.<br />

145


Attacco bit flipping<br />

Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

Il “bit flipping attack” è un <strong>attacco</strong> il cui scopo è alterare il ciphertext in<br />

modo da provocare un cambiamento preve<strong>di</strong>bile in un plaintext. Esso non<br />

attacca <strong>di</strong>rettamente l’algoritmo come si potrebbe pensare, <strong>di</strong> questo se ne<br />

occupa la crittoanalisi, ma attacca un particolare messaggio o una serie <strong>di</strong><br />

messaggi. Per effettuarlo un “cracker” sniffa un frame via etere, “flippa”<br />

(lancia) bit random nel payload del frame, mo<strong>di</strong>fica il checksum e trasmette<br />

il frame mo<strong>di</strong>ficato. L’access point riceve il frame, controlla il checksum<br />

e accetta il frame mo<strong>di</strong>ficato. Il destinatario decritta il frame ed accede<br />

al terzo strato del pacchetto. Siccome i bit sono stati lanciati negli strati<br />

superiori al terzo, il checksum risulta invalido e viene generato un errore<br />

ICMP. L’attaccante continua a sniffare i pacchetti aspettando il messaggio<br />

d’errore crittato. Quando riceve il messaggio <strong>di</strong> errore, risale al keystream<br />

come l’“IV replay attack”.<br />

Attacco <strong>di</strong> reazione<br />

Il “reaction attack” non richiede la connessione ad Internet ma funziona<br />

solo con il protocollo TCP. Altri protocolli IP non possono essere decrittati.<br />

Ogni volta che un host invia all’access point un pacchetto TCP, ne viene<br />

esaminato il checksum. Se risulta essere integro, l’access point risponde<br />

con un pacchetto <strong>di</strong> nome acknowledgement (ACK), facilmente identificabile<br />

grazie alla propria <strong>di</strong>mensione. L’<strong>attacco</strong> ha inizio con l’intercettazione <strong>di</strong><br />

un ciphertext v, C e <strong>di</strong> un plaintext P sconosciuto:<br />

A → (B) : v, C<br />

Successivamente bisogna lanciare alcuni bit in C e memorizzare <strong>di</strong> conseguenza<br />

il CRC crittato per ottenere un nuovo ciphertext C 1 con un valido<br />

checksum. Dopo <strong>di</strong> che bisogna trasmettere C 1 in un nuovo pacchetto<br />

all’access point:<br />

A(B) : v, C 1<br />

Infine, bisogna vedere se il destinatario risponde con un pacchetto TCP<br />

ACK. Questo permetterà <strong>di</strong> capire se il controllo del checksum viene superato<br />

con successo e se il pacchetto è stato accettato dal destinatario. Viene<br />

sfruttata quin<strong>di</strong> una vulnerabilità del CRC: dato in input un blocco <strong>di</strong> testo<br />

ed il suo corrispettivo checksum risulta possibile generare un altro blocco <strong>di</strong><br />

testo che abbia lo stesso checksum del primo:<br />

P i ⊕ P [i + 16] = 1<br />

con P = plaintext sconosciuto, i = posizione <strong>di</strong> un bit.<br />

Ora bisogna porre C 1 = C ⊕ ∆, dove ∆ specifica i bit <strong>di</strong> posizione da<br />

“flippare”. Bisogna scegliere ∆ secondo il seguente proce<strong>di</strong>mento:<br />

146


5.1 WEP: Insicurezza totale<br />

Si seleziona i arbitrariamente. Si settano a 1 i bit <strong>di</strong> posizione i e i + 16<br />

<strong>di</strong> ∆ ponendo ∆ a zero. Vi è una proprietà che afferma che:<br />

Pi ⊕ ∆ = P %(2 16 − 1) se Pi ⊕ P [i + 16] = 1<br />

Dato che il checksum assunto dal pacchetto originale è valido, significa che<br />

risulterà valido solo se:<br />

Pi ⊕ P [i + 16] = 1<br />

Questo fornisce informazioni sul plaintext.<br />

Attacco Chop-chop<br />

Un’altra vulnerabilità del CRC applicato al WEP permette <strong>di</strong> decrittare<br />

i pacchetti senza conoscere la chiave. Questo <strong>attacco</strong>, la cui traduzione<br />

prende il nome <strong>di</strong> “taglio-taglio”, è stato ipotizzato da un “hacker” il cui<br />

nickname è Korek. Applicando questo <strong>attacco</strong> si taglia l’ultimo byte del<br />

pacchetto, presupponendo che il corrispettivo valore sia uguale a 0, si corregge<br />

il pacchetto e lo si invia all’access point. Se il presupposto risulta<br />

essere corretto, l’access point invierà il pacchetto in broadcast, mentre se<br />

il presupposto non risulta corretto, l’access point scarterà il pacchetto. Lo<br />

stesso ciclo si ripete ponendo i valori che vanno da 0 a 255, ovvero è un<br />

ciclo che si ripete per 256 volte ponendo 256 possibili valori. Questo <strong>attacco</strong><br />

<strong>di</strong>spone <strong>di</strong> un controllo per verificare che la congettura fatta per il valore<br />

posto sia esatta, altrimenti continuerebbe inutilmente il ciclo <strong>di</strong> tentativi.<br />

Authentication spoofing<br />

Si noti come nell’autenticazione WEP <strong>di</strong> un client, molti sono i dati<br />

trasmessi in chiaro e subito dopo i corrispondenti crittati. Questo significa<br />

che un attaccante che sniffa una sequenza <strong>di</strong> autenticazione entra in possesso<br />

<strong>di</strong> coppie plaintext-ciphertext corrispondenti. A questo si punto può<br />

calcolare il keystream.<br />

Man in the Middle<br />

L’attaccante sferra un <strong>attacco</strong> DoS contro la macchina vittima. Quest’ultima<br />

si associa ad un AP finto: la macchina del “cracker”. Quest’ultimo si<br />

associa all’access point e si comporta da smistatore, trasmettendo i pacchetti<br />

dall’AP al client e viceversa. Da questa configurazione il nome Man In<br />

The Middle.<br />

147


IV replay attack<br />

Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

L’IV replay attack sfrutta la vulnerabilità del limite massimo per risalire<br />

al keystream. Per effettuare questo <strong>attacco</strong> occorre uno, <strong>di</strong> due o più pacchetti<br />

crittati con lo stesso IV. A questo punto si può xorare plaintext e<br />

ciphertext per ottenere il keystream.<br />

5.2 WPA: Vulnerabilità nascoste<br />

Il protocollo WPA, evoluzione dell’WEP, ne risolve tutti i problemi <strong>di</strong><br />

sicurezza fornendo all’apparenza una comunicazione sicura. Tuttavia, ogni<br />

nuovo meccanismo presenta ulteriori problematiche, ed il WPA non fa<br />

eccezione.<br />

Prima <strong>di</strong> tutto è stata aggiunta la possibilità <strong>di</strong> autenticare una connessione<br />

non solo in base al client ma anche in base all’utenza, ovvero<br />

tramite un nome utente ed una password. Questi due tipi <strong>di</strong> autenticazione<br />

sono chiamati rispettivamente personal ed enterprise. Il secondo metodo<br />

viene ritenuto maggiormente sicuro, ma anche più complicato da implementare<br />

in quanto richiede un server esterno che gestisca le utenze e<br />

<strong>di</strong>aloghi con l’AP per autorizzare o meno le connessioni. Esistono <strong>di</strong>versi<br />

tipi <strong>di</strong> server, il più famoso dei quali viene denominato RADIUS. La <strong>di</strong>citura<br />

per l’implementazione personal viene invece denominata PSK (Pre-Shared<br />

Key).<br />

5.2.1 Attacco combinato <strong>di</strong>zionario/forzabruta<br />

Il sistema a chiave pre con<strong>di</strong>visa PSK, presenta delle debolezze intrinseche.<br />

Esso si basa su una chiave chiamata tecnicamente PMK (Pairwise<br />

Master Key), derivata tramite un semplice calcolo dalla chiave pre con<strong>di</strong>visa<br />

utilizzata per l’autenticazione al sistema e non per la cifratura dei dati<br />

come nel caso dell’WEP. Questo meccanismo si svolge in quattro passaggi,<br />

chiamati four way hand shake descritto in figura 5.10:<br />

1. L’AP invia un valore casuale (ANonce) al client.<br />

2. Il client può a questo punto calcolarsi un pezzo <strong>di</strong> chiave interme<strong>di</strong>a,<br />

chiamata PTK (Pairwise Transient Key), utilizzando la PMK in suo<br />

possesso, l’ANounce, l’SNounce (numero casuale prodotto dal client)<br />

ed il MAC address proprio e dell’AP. A questo punto il client invia<br />

all’AP l’SNounce in modo che anch’esso si possa calcolare la PTK.<br />

3. L’AP si calcola la PTK e invia un ultimo messaggio al client contenente<br />

la GTK (Group Temporal Key).<br />

4. Il client risponde con un pacchetto per assicurare l’AP <strong>di</strong> aver ricevuto<br />

tutti i dati.<br />

148


5.2 WPA: Vulnerabilità nascoste<br />

Figura 5.10: Four way handshake<br />

La PTK corrisponde a quella che nella crittazione WEP era la chiave inserita<br />

dall’utente (la prima parte della chiave interme<strong>di</strong>a) e viene utilizzata<br />

insieme all’IV per la formazione della chiave che andrà a cifrare i pacchetti<br />

unicast, ovvero quelli rivolti ai client. La GTK è simile alla PTK ma viene<br />

utilizzata per i pacchetti multicast e broadcast. Questo sistema <strong>di</strong> autenticazione<br />

e formazione della chiave colma una delle più gran<strong>di</strong> lacune dell’WEP<br />

creando chiavi sempre <strong>di</strong>fferenti per ogni pacchetto trasmesso. Innanzitutto<br />

crea una chiave interme<strong>di</strong>a <strong>di</strong>fferente per ogni sessione <strong>di</strong> autenticazione,<br />

moltiplicandone in modo esponenziale il numero. La PMK, infatti, viene utilizzata<br />

una sola volta, per l’autenticazione e per la creazione della PTK, che<br />

grazie all’utilizzo dei due numeri casuali ANounce e SNounce sarà sempre<br />

<strong>di</strong>versa. All’inteno della stessa sessione, l’impossibilità <strong>di</strong> avere due chiavi<br />

interme<strong>di</strong>e uguali viene assicurata dall’aumento delle <strong>di</strong>mensioni dell’IV a<br />

48 bit e dal continuo incrementare del suo valore anche in corrispondenza <strong>di</strong><br />

collisioni o interferenze. Ulteriore importante mo<strong>di</strong>fica è l’innalzamento del<br />

numero <strong>di</strong> bit minimi per la PTK fino ad un valore <strong>di</strong> 128 bit (40 nell’WEP).<br />

Tutte queste migliorie vanno sotto il nome <strong>di</strong> TKIP, gia visto.<br />

Se una rete LAN wireless non utilizza un meccanismo <strong>di</strong> autenticazione<br />

server, deve ottenere la sua chiave principale dalla cosiddetta chiave precon<strong>di</strong>visa<br />

(PSK). Esiste dunque una gerarchia <strong>di</strong> chiavi (Fig.5.11) nella quale<br />

il valore <strong>di</strong> ognuna <strong>di</strong> esse è legato alle altre. La chiave PMK <strong>di</strong>pende dal<br />

metodo <strong>di</strong> autenticazione utilizzato:<br />

149


Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

• se viene utilizzata la chiave PSK allora PMK=PSK. PSK viene generata<br />

da una password (da 8 a 63 caratteri), o una stringa da 256 bit<br />

fornendo una buona soluzioni per ambienti SOHO (Small Office, Home<br />

Office).<br />

• se viene utilizzato un server <strong>di</strong> autenticazione la chiave PMK viene<br />

derivata dalla Master Key (MK) del protocollo 802.1X.<br />

La chiave PMK non viene mai utilizzata ne per la cifratura dei dati ne<br />

per il controllo <strong>di</strong> integrità. Serve invece per generare la chiave <strong>di</strong> cifratura<br />

temporanea PTK. La lunghezza <strong>di</strong> quest’ultima <strong>di</strong>pende dal protocollo <strong>di</strong><br />

cifratura: 512 bit per TKIP e 384 bit per CCMP. PTK è un miscuglio <strong>di</strong><br />

<strong>di</strong>verse chiavi temporanee:<br />

• KCK (Key Confirmation Key): Chiave per l’autenticazione dei messaggi<br />

(MIC) durante la fase 4-way handshake.<br />

• KEK (Key Encryption Key, 128 bit): Chiave per garantire la riservatezza<br />

dei dati durante la fase 4-way handshake.<br />

• TK (Temporary Key, 128 bit): Chiave per la cifratura dei dati (utilizzata<br />

da TKIP o CMMP).<br />

• TMK (Temporary MIC Key, 2 · 64 bit): Chiave per l’autenticazione<br />

dei dati (utilizzata esclusivamente dal sistema “Michael” con TKIP).<br />

Viene utilizzata una chiave de<strong>di</strong>cata per ogni lato della comunicazione.<br />

Figura 5.11: Gerarchia chiavi<br />

150


5.2 WPA: Vulnerabilità nascoste<br />

La chiave PSK viene utilizzata per generare un valore <strong>di</strong> controllo MIC<br />

necessario per convalidare un pacchetto four way handshake per l’autenticazione<br />

del client all’AP. Il primo punto debole del sistema stà nel fatto che<br />

le informazioni richieste per generare il MIC sono comunicate come plaintext<br />

durante il four way handshake. Un cracker può tentare <strong>di</strong> forzare la chiave<br />

PSK utilizzando una tecnica <strong>di</strong> bruteforce o un <strong>attacco</strong> a <strong>di</strong>zionario. Dopo<br />

aver scovato tale chiave ha la possibilità <strong>di</strong> connettersi alla rete.<br />

Naturalmente l’<strong>attacco</strong> viene fatto dopo aver catturato il pacchetto four<br />

way handshake facilmente ottenibile durante una fase <strong>di</strong> autenticazione <strong>di</strong><br />

un client, oppure forzandolo a riconnettersi iniettando pacchetti <strong>di</strong> deautenticazione.<br />

Inoltre l’attaccante deve generare un <strong>di</strong>zionario contenente<br />

le chiavi da provare. Se l’amministratore della WLAN avrà impostato una<br />

chiave <strong>di</strong> almeno 20 caratteri, la probabilità <strong>di</strong> successo dell’<strong>attacco</strong> sarà tendente<br />

a zero. Solitamente viene preferito l’<strong>attacco</strong> a <strong>di</strong>zionario, in quanto<br />

il testing <strong>di</strong> tutte le chiavi può rivelarsi oneroso in termini <strong>di</strong> tempo e risorse.<br />

Un secondo problema sta nel meccanismo <strong>di</strong> integrità dei dati MIC.<br />

Quest’ultimo viene generato usando il sistema “Michael” che include dei<br />

<strong>meccanismi</strong> <strong>di</strong> sicurezza atti ad impe<strong>di</strong>re attacchi bruteforce. Di conseguenza<br />

ogni <strong>attacco</strong> al valore del MIC, provocherà una <strong>di</strong>sconnessione <strong>di</strong> tutti i<br />

<strong>di</strong>spositivi wireless per un minuto ed il cambio della chiave <strong>di</strong> sessione. Il<br />

rovescio della medaglia, è che questa per avere questa risposta all’<strong>attacco</strong>,<br />

bastano solamente due valori errati <strong>di</strong> chiave in un minuto. Se l’<strong>attacco</strong> risulta<br />

essere molto <strong>di</strong>fficile, <strong>di</strong>venta possibile come alternativa per un cracker,<br />

realizzare una continua <strong>di</strong>sconnessione dei <strong>di</strong>spositivi dalla rete effettuando<br />

così un Denial Of Service.<br />

La debolezza dei <strong>meccanismi</strong> WPA/WPA2 siano essi implementati con<br />

metodo PSK o authentication server risiede nella gerarchia delle chiavi utilizzate.<br />

Una debolezza in un anello della catena <strong>di</strong> generazione ne preclude<br />

la sicurezza. Ovviamente una scelta consapevole e accurata <strong>di</strong> una buona<br />

password <strong>di</strong> sistema, <strong>di</strong> certo rallenta in maniera significativa ogni tentativo<br />

<strong>di</strong> <strong>attacco</strong>.<br />

151


5.2.2 Meto<strong>di</strong> alternativi <strong>di</strong> <strong>attacco</strong><br />

Temporal Key Hash Attack<br />

Vulnerabilità e tipi <strong>di</strong> <strong>attacco</strong><br />

Con il termine Temporal Key Hash viene denominata la funzione, integrata<br />

nei <strong>meccanismi</strong> WPA, <strong>di</strong> cambio <strong>di</strong>namico della chiave. Un meccanismo<br />

che come abbiamo già detto migliora le problematiche dell’WEP,<br />

anche se non è immune da attacchi specifici. Ricor<strong>di</strong>amo che la chiave WEP<br />

<strong>di</strong> sessione, lunga 128 bit, viene generata da a partire da altri componenti.<br />

Non ci addentriamo nella descrizione dettagliata del meccanismo descrivendo<br />

solamente i principali elementi necessari per illustrare l’<strong>attacco</strong>.<br />

Dalla figura sottostante 5.12 si possono elencare i seguenti input in<br />

ingresso alla Key Hash Function:<br />

Figura 5.12: Schema <strong>di</strong> funzionamento della Key Hash Function<br />

• la chiave temporanea TK, lunga 16 byte ottenuta dal meccanismo <strong>di</strong><br />

amministrazione della password durante la fase <strong>di</strong> autenticazione;<br />

• la stringa che co<strong>di</strong>fica l’in<strong>di</strong>rizzo del mittente, Transmission Address<br />

TA, <strong>di</strong> lunghezza 6 byte;<br />

• 48 bit <strong>di</strong> Initialization Vector IV, chiamato contatore <strong>di</strong> sequenza TKIP;<br />

La Key Hash Function, restituisce 16 byte <strong>di</strong> chiave RC4, dove l’IV viene<br />

utilizzato come un contatore che progre<strong>di</strong>sce, pacchetto dopo pacchetto, per<br />

<strong>di</strong>fendere la rete da attacchi <strong>di</strong> tipo injection. Essa riceve in input TK, TA<br />

e l’IV <strong>di</strong> 48 bit, restituendo in output una chiave WEP da 128 bit. I 16<br />

bit meno significativi dell’IV vengono denotati IV 16, mentre i restanti 32<br />

vengono denotati IV 32. Questi ultimi partecipano attivamente alla crazione<br />

delle chiavi temporanee <strong>di</strong> sessione.<br />

È possibile attaccare la Temporal Key Hash presupponendo che il cracker<br />

sia a conoscenza <strong>di</strong> alcune (meno <strong>di</strong> 10) chiavi RC4 calcolate attraverso<br />

lo stesso IV 32. Di fronte al cracker si presenta una complessità <strong>di</strong> circa<br />

2 32 semplici operazioni, che su un moderno calcolatore richiedono qualche<br />

152


5.2 WPA: Vulnerabilità nascoste<br />

minuto <strong>di</strong> elaborazione. L’<strong>attacco</strong> viene effettuato eseguendo reverse engineering<br />

su alcune operazioni booleane e cercando <strong>di</strong> “indovinare” i valori<br />

<strong>di</strong> TK. Successivamente, si può controllare se una congettura risulta essere<br />

esatta o errata, poiché si sa che i valori <strong>di</strong> una parte dell’algoritmo utilizzato<br />

non cambiano prima del cambiamento dell’IV 32. L’<strong>attacco</strong> si basa<br />

sul fatto che 8 bit <strong>di</strong> TK possono essere calcolati <strong>di</strong>rettamente dalle chiavi<br />

RC4 catturate. Lo schema <strong>di</strong> <strong>attacco</strong> procede con la tecnica “<strong>di</strong>vide et<br />

impera” nei passi successivi dell’algoritmo, scoprendo ricorsivamente il contenuto<br />

delle celle dell’array che memorizza la chiave. L’idea è <strong>di</strong> applicare<br />

la tecnica bruteforce su due chiavi RC4 <strong>di</strong>stinte con 104 bit sconosciuti, per<br />

recuperare la chiave temporanea <strong>di</strong> 128 bit e la chiave d’autenticazione del<br />

messaggio <strong>di</strong> 64 bit. Questo <strong>attacco</strong>, però, non è ancora praticabile a causa<br />

della complessitè <strong>di</strong> tempo necessario.<br />

Cracking LEAP Attack<br />

LEAP o Lightweight EAP, è una soluzione <strong>di</strong> autenticazione proprietaria 3<br />

basata su protocollo 802.1X, che autentica i client facendo uso <strong>di</strong> un server<br />

RADIUS, username e password. Questa soluzione adotta un protocollo<br />

molto simile a MSCHAPv2 per la parte challenge/authentication. Per autenticarsi<br />

su un server RADIUS utilizza la password dell’utente. La password<br />

<strong>di</strong> LEAP viene data in input a RC4 per generare un output da 16 byte.<br />

Quest’ultimo poi viene paddato a 21 byte con 5 byte NULL. Infine viene<br />

<strong>di</strong>viso in tre parti da 7 byte ed ognuna <strong>di</strong> queste viene utilizzata per cifrare<br />

un challenge. Quin<strong>di</strong> ci si ritrova nella seguente situazione:<br />

• A, B e C sono le tre parti da 7 byte;<br />

• F a (challenge) +F b (challenge) +F c (challenge);<br />

• F c ha solamente 2 byte variabili a causa dei NULL → 7 − 5 = 2;<br />

Quin<strong>di</strong> vi sono solo 2 16 combinazioni, e lo spazio delle chiavi viene ridotto<br />

a 1/2 16 delle possibili. Questo rappresenta una possibile via <strong>di</strong> <strong>attacco</strong>.<br />

3 Soluzione <strong>di</strong> proprietà <strong>di</strong> Cisco System c○ , leader mon<strong>di</strong>ale nelle tecnologie <strong>di</strong> rete.<br />

153


Capitolo 6<br />

Test <strong>di</strong> penetrazione effettuati<br />

Premessa<br />

Gli esperimenti effettuati e descritti in questo capitolo sono<br />

stati realizzati unicamente a fini <strong>di</strong>dattici per la stesura <strong>di</strong> questa<br />

tesi, e sempre su esplicita autorizzazione verbale dei legittimi<br />

proprietari del sistema vittima. Non sono mai stati commessi<br />

reati come in<strong>di</strong>cato dagli articoli 615-ter, 615-quinquies, 635-bis e<br />

640-ter del Co<strong>di</strong>ce Penale. La pubblicazione delle tecniche e dei<br />

risultati ha scopo unicamente informativo in ambito scientifico.<br />

Ogni utilizzo <strong>di</strong> tali informazioni per azioni illegali o antisociali<br />

non è <strong>di</strong> responsabilità dell’autore <strong>di</strong> questa tesi.<br />

6.1 Scelta del sistema operativo (OS)<br />

La scelta del sistema operativo per compiere dei test sulla sicurezza<br />

<strong>di</strong> rete è un’operazione fondamentale. La decisione ricade inevitabilmente<br />

su due fronti commerciali: “open source” oppure “proprietario”. I sistemi<br />

operativi proprietari hanno due caratteristiche sostanzialmente negative.<br />

Sono costosi e, visto che sono prodotti commerciali, anche la loro evoluzione<br />

viene gestita come tale. In sostanza l’aggiornamento delle loro funzionalità<br />

<strong>di</strong>pende strettamente dalle prospettive economiche della casa produttrice,<br />

restando legato alla crescita economica più che all’evoluzione tecnologica.<br />

Ecco perché, il co<strong>di</strong>ce del sistema operativo e delle applicazioni non viene<br />

reso noto e non viene data alcuna possibilità <strong>di</strong> mo<strong>di</strong>ficarlo se non fino ad<br />

un certo livello. D’altro canto non bisogna sottovalutare la semplicità d’uso<br />

e l’imme<strong>di</strong>atezza delle applicazioni proprietarie che rendono banali anche<br />

operazioni teoricamente complesse.<br />

Il mondo “open source” offre prospettive completamente <strong>di</strong>verse. A <strong>di</strong>scapito<br />

della semplicità d’uso, la completa manipolazione del co<strong>di</strong>ce del sis-<br />

155


Test <strong>di</strong> penetrazione effettuati<br />

tema operativo e delle sua applicazioni rendono questo software il vessillo<br />

della ricerca informatica, come simbolo <strong>di</strong> libertà espressiva.<br />

Per raggiugere gli obiettivi prefissati in questa tesi, ho optato dunque<br />

per un sistema operativo “open source” e nello specifico:<br />

• Linux Ubuntu 7.04, Feisty Fawn-i386 (kernel version 2.6.20 − 15<br />

generic)<br />

Leggero e versatile, presenta caratteristiche necessarie agli obiettivi preposti.<br />

Immune da virus, la <strong>di</strong>fficoltà della gestione hardware si compensa<br />

con la sicurezza <strong>di</strong> una struttura centrale (kernel) affidabile che attraverso<br />

un delicato meccanismo <strong>di</strong> privilegi assicura la completa possibilità <strong>di</strong><br />

manipolazione del co<strong>di</strong>ce.<br />

Tale scelta si è <strong>di</strong>mostrata vincente alla luce dei risultati ottenuti.<br />

6.2 Scelta dell’hardware <strong>di</strong> rete<br />

Il problema maggiore riscontrato durante i test effettuati è stato relativo<br />

alla scelta <strong>di</strong> un hardware <strong>di</strong> rete adeguato allo scopo, completamente<br />

gestibile dal sistema operativo e con caratteristiche particolari. Purtroppo<br />

non è stato facile ottenere peculiarità simili allo stesso tempo. Dopo<br />

un’ampia gamma <strong>di</strong> prove con prodotti commercialmente noti e dalle caratteristiche<br />

standard ho preso coscienza del fatto che fosse necessario manipolare<br />

i driver originali del <strong>di</strong>spositivo.<br />

La scelta sulle schede <strong>di</strong> rete wireless utilizzate per i test è ricaduta su<br />

due modelli:<br />

• Linksys c○ WPC54G ver.1.2 Chipset Broadcom<br />

• T P Link c○ TL-WN610G eXtended Range 108Mbps<br />

Chipset Atheros<br />

Entrambi le NIC (Network Interface Card) lavorano in banda 2, 4GHz<br />

e sono conformi ai protocolli IEEE 802.11b/g. I driver nativi delle schede<br />

sono sviluppati esclusivamente per sistemi operativi W indows c○ . La scheda<br />

Linksys c○ è stata scelta per le sue eccezionali caratteristiche <strong>di</strong> ricezione<br />

del segnale ed è stata utilizzata esclusivamente per la scansione e lo sniffing<br />

delle reti con segnale limitato. La scheda T P Link c○ offre oltre alle tra<strong>di</strong>zionali<br />

funzionalità anche la possibilità <strong>di</strong> lavorare in modalità “promiscua”<br />

(monitor mode) che descriverò in seguito.<br />

6.3 Scelta del software<br />

Avere un buon toolkit software, significa per questo tipo <strong>di</strong> operazioni,<br />

avere a <strong>di</strong>sposizione ottimi “ferri del mestiere”. Dopo numerosi tentativi,<br />

156


6.3 Scelta del software<br />

adattamenti e test ho finalmente scelto le “armi” con le quali effettuare<br />

gli attacchi. La selezione è avvenuta tenendo in considerazione numerosi<br />

aspetti tra cui la necessità <strong>di</strong> avere sofware prevalentemente “open source”,<br />

per poterne all’occorrenza mo<strong>di</strong>ficare il co<strong>di</strong>ce in base alle proprie esigenze.<br />

Ovviamente le caratteristiche <strong>di</strong> alcune applicazioni hanno prevalso rispetto<br />

ad altre per efficienza, semplicità d’uso e affidabilità. Ulterirore motivo <strong>di</strong><br />

scelta è stato l’uso <strong>di</strong> librerie compatibili con il S.O. ed il relativo kernel.<br />

Ecco il toolkit utilizzato, e la descrizione delle singole applicazioni:<br />

• aircrack-ng 0.6.2: Applicazione per la decifratura <strong>di</strong> chiavi WEP e<br />

WPA-PSK per protocollo 802.11 [1]. L’algoritmo utilizzato implementa<br />

l’<strong>attacco</strong> FMS (Fluhrer-Mantin-Shamir), assieme con alcuni<br />

nuovi attacchi inventati da un famoso hacker noto come “KoreK”.<br />

Quando vengono catturati un numero sufficiente <strong>di</strong> pacchetti criptati,<br />

aircrack-ng può quasi istantaneamente recuperare la chiave WEP.<br />

Sintassi:<br />

aircrack-ng [options] <br />

Possono essere utilizzate anche estensioni .ivs nel caso vengano catturati<br />

esculsivamente pacchetti contenenti IV. Per le opzioni del comando<br />

vedere il manuale all’in<strong>di</strong>rizzo web: http://www.aircrack-ng.org.<br />

Versione aggiornata del software open source creato originariamente da<br />

Christophe Devine.<br />

• airdecap-ng 0.6.2: Software appartenente al tool <strong>di</strong> aircrack-ng.<br />

Necessario per decifrare pacchetti WEP-WPA catturati con estensione<br />

.pcap. Necessita in input della relativa chiave precedentemente catturata,<br />

permettendo <strong>di</strong> visualizzare le informazioni trasmesse in rete.<br />

Sintassi:<br />

airdecap-ng [options] <br />

Software open source. Le opzioni sono sempre elencate all’in<strong>di</strong>rizzo<br />

in<strong>di</strong>cato nel punto precedente.<br />

• airodump-ng 0.6.2: Applicazione appartenente al tool aircrack-ng.<br />

Ha il compito <strong>di</strong> catturare i pacchetti “sniffati” da una interfaccia <strong>di</strong><br />

rete wireless e salvarli nei formati .pcap o .ivs, adatti per aircrack.<br />

Quando si utilizza tale software, la videata principale offre in elenco<br />

i MAC address <strong>degli</strong> AP attivi e le relative informazioni su i client<br />

ad essi associati. Questo permette una conoscenza esaustiva delle<br />

caratteristiche della rete WLAN presa in esame.<br />

157


Sintassi:<br />

Test <strong>di</strong> penetrazione effettuati<br />

airodump-ng [options] <br />

Software open source. Opzioni e caratteristiche al sito precedente.<br />

• aireply-ng 0.6.2: Software appartenente al tool <strong>di</strong> aircrack-ng. Essenziale<br />

per la messa in atto <strong>di</strong> alcuni attacchi, permette <strong>di</strong> scegliere<br />

tra:<br />

– deauth, deautentica una o più stazioni in ascolto;<br />

– fakeauth, falsa l’autenticazione con l’AP;<br />

– interactive, seleziona frame in maniera selettiva;<br />

– arp-reply, attua un <strong>attacco</strong> ARP-reply;<br />

– chopchop, effettua un <strong>attacco</strong> <strong>di</strong> tipo “taglia-taglia” decifrando i<br />

pacchetti simultaneamente;<br />

Sintassi:<br />

aireplay-ng <br />

Il comando permette inoltre <strong>di</strong> gestire <strong>di</strong>verse tipologie <strong>di</strong> packet injection<br />

dei pacchetti inviati dall’interfaccia <strong>di</strong> rete specificata. Software<br />

open source. Per le opzioni fare riferimento sempre al sito internet già<br />

citato.<br />

• airmon-ng: Script appartenente alla suite <strong>di</strong> aircrack-ng che permette<br />

<strong>di</strong> settare l’interfaccia <strong>di</strong> rete in modalità “monitor”, per l’ascolto<br />

passivo del traffico <strong>di</strong> rete. È in grado <strong>di</strong> identificare automaticamente<br />

l’interfaccia presente ed utilizzare i coman<strong>di</strong> necessari per settarne la<br />

modalità desiderata in base ai driver specifici caricati nel kernel.<br />

Sintassi:<br />

airmon-ng [channel]<br />

Tra le varie opzioni consultabili al sito internet precedente, si può<br />

specificare <strong>di</strong>rettamente da comando il canale <strong>di</strong> trsmissione e ricezione<br />

del segnale.<br />

• Wireless Tools packet: Suite per la gestione delle reti wireless che<br />

comprende la seguente serie <strong>di</strong> programmi:<br />

⋄ iwconfig: per manipolare i parametri wireless <strong>di</strong> base della propria<br />

scheda.<br />

158


6.3 Scelta del software<br />

⋄ iwlist: Esegue uno scanning per determinare le frequenze, i bit<br />

rate, la presenza <strong>di</strong> <strong>meccanismi</strong> <strong>di</strong> cifratura ed altre informazioni.<br />

⋄ iwspy: per verificare la qualità del collegamento.<br />

⋄ iwpriv: Permette <strong>di</strong> manipolare le Wireless Extension specifiche<br />

dei driver utilizzati per una determinata scheda.<br />

⋄ ifrename: Permette <strong>di</strong> rinominare le interfacce <strong>di</strong> rete.<br />

⋄ Kismet: Software in grado <strong>di</strong> funzionare come sniffer ed IDS pre<br />

reti wireless.<br />

Per un elenco completo delle opzioni ad ogni comando consultare gli<br />

appositi manuali dopo l’installazione, con il comando:<br />

man <br />

• Kwifimanager 3.5.6: Software per la rilevazione e la gestione delle<br />

connessioni con le reti wireless. Sviluppato da Stefan Winter, permette<br />

la scansione dei canali <strong>di</strong> trasmissione al fine <strong>di</strong> rilevare le reti<br />

wifi presenti, elencando alcune caratteristiche come la potenza del segnale<br />

misurata in dB e la presenza o meno <strong>di</strong> un segnale cifrato. Tra<br />

le varie opzioni vi è la possibilità <strong>di</strong> interfacciare il software con un<br />

antenna GPS (Global Position System) per rilevare automaticamente<br />

la posizione geografica delle reti Wifi, al fine <strong>di</strong> creare una mappa<br />

territoriale.<br />

È un’applicazione open source KDE-based, che si adat-<br />

ta ottimamente al sistema operativo prescelto in quanto Ubuntu, nel<br />

kernel prevede un modulo <strong>di</strong> emulazione KDE.<br />

• Wifi-Radar: Software per la scansione delle reti wireless. Permette<br />

la gestione <strong>di</strong> <strong>di</strong>versi profili associati una rete wifi, in base al’hardware<br />

utilizzato. Utilizza una interfaccia grafica basata su librerie<br />

PyGTK2 installate nel sistema operativo utilizzato. Invocato senza<br />

parametri visualizza, aggiornandosi automaticamente durante il movimento,<br />

<strong>di</strong>verse informazioni relative alle reti rilevate. Può funzionare<br />

in modalità daemon in ambiente Linux, implementando <strong>di</strong>versi <strong>meccanismi</strong><br />

<strong>di</strong> crittografia e autenticazione, come WEP-TKIP e WPA-PSK,<br />

sfruttando il modulo wpa supplicant.<br />

Sintassi:<br />

wifi-radar [options] . . .<br />

Software open source. Per le opzioni vedere il manuale integrato nel<br />

sistema operativo dopo l’installazione.<br />

159


Test <strong>di</strong> penetrazione effettuati<br />

• Wireshark 0.99.4: Analizzatore professionale <strong>di</strong> rete sviluppato da<br />

Gerald Combs[12]. Sviluppato per funzionare su kernel Linux versione<br />

2.6.20-15-generic, associato a libpcap v. 0.9.5. Installato con compilatore<br />

gcc 4.1.2 presente in Ubuntu 7.04. Questa applicazione offre<br />

numerosissime funzionalità per l’analisi del traffico, l’interpretazione<br />

dei protocolli <strong>di</strong> rete a vari livelli della pila ISO-OSI, la possibilità <strong>di</strong><br />

memorizzare e manipolare i pacchetti catturati in parallelo con le altre<br />

applicazioni già viste. Software open source essenziale per l’attività <strong>di</strong><br />

cracking. Per tutta la sintassi e le opzioni fare riferimento al manuale<br />

ufficiale alla pagina web http://www.wireshark.org/docs/man-pages.<br />

• macchanger: Script open source specifico per le schede utilizzate, che<br />

rende possibile il settaggio manuale o automatico del MAC address<br />

dell’interfaccia <strong>di</strong> rete. Questo al fine <strong>di</strong> poter bypassare aluni filtri<br />

sugli AP e rendere impossibile l’in<strong>di</strong>viduazione dell’hardware ad un<br />

sistema <strong>di</strong> rilevamento <strong>di</strong> intrusioni (IDS).<br />

6.4 Gestione kernel e driver<br />

Per poter effettuare i test durante il lavoro <strong>di</strong> tesi, dopo una accurata<br />

ricerca, si è giunti alla conclusione che fosse necessario adottare, oltre al sistema<br />

operativo Linux, anche delle schede <strong>di</strong> rete basate su chipset in grado<br />

<strong>di</strong> poter essere manipolati in ogni loro caratteristica. Una volta effettuata la<br />

scelta delle sopracitate NIC, si è riscontrato il problema <strong>di</strong> dover utilizzare<br />

driver nativi purtroppo sviluppati esclusivamente per ambienti Windows c○ .<br />

È stato necessario perciò eseguire due operazioni fondamentali: il riadattamento<br />

del kernel, e la ricompilazione dei driver per l’ambiente Linux. Attraverso<br />

il modulo n<strong>di</strong>swrapper, integrato nel sistema operativo, si sono poi<br />

potuti caricare i driver nel kernel per l’utilizzo della scheda. Tale lavoro ha<br />

richiesto un notevole tempo necessario per conoscere la struttura interna del<br />

S.O. adottato, e per acquisire manualità con le procedure <strong>di</strong> installazione e<br />

gestione dei driver (circa 250 ore). Tutto questo impegno ha portato ad una<br />

profonda conoscenza con i principali componenti della gestione delle schede<br />

<strong>di</strong> rete senza fili in ambiente Linux, accrescendomi notevolmente il bagaglio<br />

tecnico.<br />

Per la NIC basata su chipset “Broadcom”, è stato utilizzato un driver<br />

(bcm43xx) integrato in Ubuntu 7.04. Questo driver ha permesso <strong>di</strong> manipolare<br />

la scheda Linksys c○ in molte funzionalità necessarie soprattutto al<br />

rilevamento delle reti attraverso i software radar. La potenza dell’antenna in<br />

fase <strong>di</strong> ricezione è stata incrementata grazie a precise istruzioni in<strong>di</strong>rizzate<br />

al chipset. Questo ha reso tale NIC preferenziale per l’in<strong>di</strong>viduazione delle<br />

reti vittima.<br />

160


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Il lavoro maggiormente complesso ha riguardato la scheda T P Link c○<br />

TL-WN610G eXtended Range 108Mbps, Chipset Atheros. Questa scheda<br />

<strong>di</strong> rete ha manifestato caratteristiche fondamentali per l’esecuzione <strong>di</strong> alcuni<br />

attacchi. Il chipset Atheros può essere manipolato nella sua completezza<br />

dal driver “MadWifi-ng” Patch (Multimode Atheros Driver for WiFi on<br />

Linux)[10]. Questo driver permette il settaggio <strong>di</strong> moltissimi parametri della<br />

scheda rendendola personalizzabile in base al tipo <strong>di</strong> test da effettuare. Il<br />

driver supporta la gestione <strong>di</strong> client, AP e modalità <strong>di</strong> funzionamento “adhoc”<br />

e “monitor” delle schede che controlla. I driver per chipset “Atheros”<br />

sono stati creati da un gruppo <strong>di</strong> sviluppatori open source appartenenti<br />

alla comunità “NetBSD” 1 , che ha implementato in maniera in<strong>di</strong>pendente<br />

il protocollo 802.11 per tali <strong>di</strong>spositivi. I driver funzionano come un normale<br />

<strong>di</strong>spositivo <strong>di</strong> rete ed utilizzano le Wireless Extension API. Laddove<br />

queste procedure non riescono a manipolare alcuni parametri, vengono utilizzate<br />

procedure ioctls private. Sono supportati <strong>di</strong>spositivi PCI, MiniPCI e<br />

CardBus (PCMCIA). Inoltre viene contemplata la gestione della crittografia<br />

WEP e WPA attraverso il caricamento <strong>di</strong> moduli opportuni denominati<br />

wlan wep, wlan tkip, wlan ccmp e la gestione della procedura <strong>di</strong> autenticazione<br />

802.1X con i moduli wlan auth, wlan ra<strong>di</strong>us.<br />

La principale peculiarità <strong>di</strong> MadWifi è la possibilità <strong>di</strong> creare AP “Virtuali”<br />

(VAP) multipli e concorrenti, oltre che interfacce funzionanti sia come<br />

AP che come client. Per manipolare i VAP, il driver mette a <strong>di</strong>sposizione una<br />

funzione denominata wlanconfig utilizzata per creare e <strong>di</strong>struggere questi<br />

Ap virtuali in vari mo<strong>di</strong>. Questa funzione è necessaria per poter utilizzare<br />

al meglio i software precedentemente descritti.<br />

Siamo ora in possesso <strong>di</strong> tutto l’occorrente per effettuare i penetration<br />

test.<br />

6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Questa sezione rappresenta in termini pratici tutto il lavoro svolto durante<br />

questi otto mesi <strong>di</strong> simbiosi con le reti lan wireless. Uno stu<strong>di</strong>o<br />

approfon<strong>di</strong>to sulla loro tecnologia mi ha permesso <strong>di</strong> poter compiere, in<br />

maniera mirata, questi attacchi a <strong>di</strong>mostrazione del fatto che una buona<br />

preparazione tecnico teorica <strong>di</strong> livello accademico rappresenta una solida<br />

base per affrontare complesse problematiche <strong>di</strong> carattere informatico. Vengono<br />

<strong>di</strong> seguito analizzati alcuni attacchi <strong>di</strong>dattici a reti private o create<br />

appositamente per l’occasione da amici e parenti. Successivamente viene<br />

descritto e analizzato il test <strong>di</strong> penetrazione effettuato sulla rete wireless<br />

universitaria del Dipartimento <strong>di</strong> Informatica dell’Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong><br />

1 NetBSD: Comunità in<strong>di</strong>pendente <strong>di</strong> sviluppo per piattaforma in ambiente Linux.<br />

161


Test <strong>di</strong> penetrazione effettuati<br />

<strong>Verona</strong>, gentilmente concessa come banco <strong>di</strong> prova dagli amministratori del<br />

SIA (Servizi Informatici <strong>di</strong> Ateneo).<br />

6.5.1 Pentesting a reti private<br />

Esistono in rete numerosi articoli sulle vulnerabilità dell’WEP e del<br />

WPA, ma in quanti effettivamente le sanno sfruttare? Per un utente comune<br />

potrebbe rivelarsi un’impresa ardua. Questo a causa delle numerose schede<br />

<strong>di</strong> rete in commercio, della scelta e della manipolazione del Sistema Operativo,<br />

dei coman<strong>di</strong> da utilizzare e dal software principalmente sviluppato per<br />

ambiente Linux. Ve<strong>di</strong>amo ora due attacchi a reti private, dalle caratteristiche<br />

generali standard, che rappresentano realisticamente la maggior parte<br />

delle reti implementate in esercizi commerciali, stu<strong>di</strong> privati e me<strong>di</strong>ci, associazioni<br />

ed enti pubblici oltre che nelle case delle migliaia <strong>di</strong> persone comuni.<br />

Ci proponiamo in entrambi i casi <strong>di</strong> decfrare una chiave WEP/WPA <strong>di</strong><br />

lunghezza compresa tra 40 e 104 bit presenti nella quasi totalità delle reti<br />

private protette.<br />

TEST 1: Cracking chiave WPA-PSK<br />

Attori Ve<strong>di</strong>amo gli attori coinvolti durante l’esperimento:<br />

• Attaccati<br />

⋆ Access Point [AP]: AP del quale vogliamo conoscere la chiave<br />

per entrare nella rete.<br />

⋆ Target Client [TC]: Client collegato all’access point.<br />

• Attaccanti<br />

⋆ Sniffing Client [SC]: Computer dell’attaccante. Si occupa <strong>di</strong><br />

“sniffare” la maggior quantità <strong>di</strong> traffico possibile e registrarlo su<br />

hard <strong>di</strong>sk. Svolge una azione passiva.<br />

⋆ Attacking Client [AC]: Software sul pc dell’attaccante che ha<br />

il compito <strong>di</strong> stimolare il traffico <strong>di</strong> rete nel giusto modo. Svolge<br />

un ruolo attivo.<br />

Eseguiremo un test denominato ZeroKnowledge (Conoscenza Zero) in<br />

quanto non abbiamo nessuna informazione sull’hardware e sulle caratteristiche<br />

della rete vittima.<br />

162


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

La macchina utilizzata fungerà ovviamente sia da Sniffing Client che da<br />

Attacking Client, possiede le seguenti caratteristiche hardware e software:<br />

Processore Intel c○ Pentium c○ 4 2.8 GHz<br />

Memoria RAM 512 MB<br />

Scheda Wifi TPLink TL-WN610G<br />

S.O. Ubuntu 7.04 Feisty Fawn<br />

Vers. kernel 2.6.20-15 generic i386<br />

Driver MadWifi Patch 1.2<br />

La procedura <strong>di</strong> collaudo inizia con l’avvio del sistema operativo e con<br />

l’inserimento dell’interfaccia <strong>di</strong> rete nell’apposita porta PCMCIA del pc portatile.<br />

Successivamente mi autentico nei terminali con privilegi <strong>di</strong> amministratore<br />

per poter utilizzare determinati coman<strong>di</strong>. Mi assicuro del corretto<br />

riconoscimento della NIC da parte del driver con il comando iwconfig come<br />

mostrato in figura 6.1:<br />

Figura 6.1: Controllo caricamento NIC<br />

Questa applicazione, integrata nell’Wireless Tools Packet, mi permetterà<br />

successivamente <strong>di</strong> settare alcuni parametri <strong>di</strong> connessione tra cui frequenza<br />

e canale <strong>di</strong> trasmissione del segnale<br />

Utilizzo dal toolkit il radar Kwifimanager, per scansionare l’etere e rilevare<br />

informazioni sulla rete vittima.<br />

163


Test <strong>di</strong> penetrazione effettuati<br />

Lancio il comando kwifimanager, visualizzando (Fig.6.2) le informazioni<br />

necessarie:<br />

Figura 6.2: Kwifimanager radar<br />

In<strong>di</strong>viduo la rete prescelta, denominata “Alicexxx”, caratterizzata da un<br />

ottimo segnale e protetta con meccanismo WPA-PSK.<br />

Ora, prima <strong>di</strong> entrare nella fase avanzata dell’analisi, mo<strong>di</strong>fico l’in<strong>di</strong>rizzo<br />

MAC della scheda <strong>di</strong> rete per due motivi:<br />

1. Mi assicuro l’anonimato nella fase <strong>di</strong> test, rendendo <strong>di</strong> fatto impossibile<br />

un legame tra l’attaccante “persona” e la scheda <strong>di</strong> rete utilizzata.<br />

2. Bypasso eventuali controlli sull’in<strong>di</strong>rizzo MAC in base alla marca del<br />

produttore della scheda, implementati su alcuni AP avanzati.<br />

Dopo aver momentaneamente <strong>di</strong>sabilitato la NIC con il comando ifconfig<br />

ath0 down eseguo l’operazione voluta con il comando macchanger (Fig.6.3)<br />

passando come parametro l’in<strong>di</strong>rizzo MAC desiderato.<br />

164


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Figura 6.3: Mo<strong>di</strong>fica del MAC address<br />

Garantito l’anonimato, posso avviare il software Airodump-ng per carpire<br />

ulteriori informazioni dell’obiettivo ed in particolare visualizzare i MAC address<br />

relativi all’AP ed eventuali client associati alla rete vittima.<br />

Apro un terminale, mi autentico in modalità amministratore e setto l’interfaccia<br />

in “Monitor mode” (Fig.6.4). Questa modalità è l’equivalente della<br />

modalità promiscua nelle reti cablate. Permette alla scheda <strong>di</strong> rete <strong>di</strong> <strong>di</strong>sabilitare<br />

il proprio MAC address, e vedere tutto il traffico <strong>di</strong> rete scambiato<br />

sul mezzo trasmissivo.<br />

Figura 6.4: NIC in “Monitor mode”<br />

La potenza <strong>di</strong> Airodump-ng viene subito messa in risalto permettendomi<br />

<strong>di</strong> visualizzare in pochi istanti numerose informazioni. Come rappresentato<br />

165


Test <strong>di</strong> penetrazione effettuati<br />

in figura 6.5 il software mostra due aree <strong>di</strong>stinte. L’area nella parte superiore<br />

permette <strong>di</strong> visualizzare:<br />

• BSSID: Mac address dell’AP associato alla rete vittima “Alicexxx”.<br />

• PWR: la potenza del segnale (ogni software ha una scala propria).<br />

• Beacons: frame trasmessi in broadcast ad intervalli regolari dall’AP<br />

per segnalare la presenza della rete.<br />

• #/Data, #/s: numero pacchetti trasmessi e frequenza.<br />

• CH, MB, ENC, CIPHER, AUTH: Informazioni <strong>di</strong> trasmissione del<br />

segnale relative al canale, velocità protocollo, algoritmo crittografico e<br />

<strong>di</strong> autenticazione.<br />

• ESSID: Nome associato alla rete.<br />

Mentre nella parte inferiore vengono in<strong>di</strong>cati:<br />

• STATION: la presenza <strong>di</strong> un client e relativo MAC address associato<br />

all’AP obiettivo.<br />

• Lost: Pacchetti perduti durante la trasmissione.<br />

• Packets: Pacchetti trasmessi.<br />

Figura 6.5: Output <strong>di</strong> Airodump<br />

166


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

A questo punto dell’analisi sono in possesso delle seguenti informazioni:<br />

- Nome della rete obiettivo.<br />

- MAC address dell’AP.<br />

- MAC address del client associato e in trasmissione.<br />

Questi dati sono stati ottenuti tutti i maniera “passiva” esclusivamente<br />

dall’ascolto del segnale trasmesso nell’aria. I MAC address non autorizzati<br />

sono stati opportunamente oscurati. In base a queste informazioni decido<br />

<strong>di</strong> impostare la seguente procedura:<br />

La scheda <strong>di</strong> rete utilizzata, grazie ai driver opportunamente mo<strong>di</strong>ficati,<br />

mi permette <strong>di</strong> gestire due interfacce identificate con ath0 e wifi0. L’interfaccia<br />

ath0 posta in “monitor mode” è in grado <strong>di</strong> inoltrare pacchetti in rete<br />

mentre, simultaneamente, l’interfaccia wifi0 viene utilizzata per catturarne.<br />

Sfrutto le debolezze del protocollo WPA-PSK cercando <strong>di</strong> catturare informazioni<br />

<strong>di</strong> autenticazione nella fase denominata four way handshake. Lo<br />

scopo del collaudo è quello <strong>di</strong> forzare il client a riautenticarsi. La <strong>di</strong>sconnessione<br />

dalla rete, oltre alla per<strong>di</strong>ta dell’autenticazione, mi permette lo spoof<br />

del MAC address del client.<br />

Inizio il processo <strong>di</strong> deautenticazione con il comando:<br />

aireplay-ng -0 1 -a xx:xx:xx:A9:85:CB -c xx:xx:xx:6D:50:1D<br />

ath0<br />

che <strong>di</strong>sconnette regolarmente il client dall’AP. Contemporaneamente lancio<br />

in un altro terminale Airodump-ng con l’opzione -w <strong>attacco</strong>1-01 per poter<br />

salvare in un file i pacchetti catturati (Fig.6.6).<br />

Figura 6.6: Cattura dei pacchetti<br />

167


Test <strong>di</strong> penetrazione effettuati<br />

A questo punto avvio contemporaneamente al packet injection ed alla<br />

cattura, il software Aircrack-ng con il comando<br />

aircrack-ng -a 2 -a xx:xx:xx:A9:85:CB -w /etc/<strong>di</strong>ctionary/words<br />

/home/<strong>attacco</strong>1-01.cap<br />

Aircrack-ng inizia ad analizzare i pacchetti catturati sfruttandone le informazioni<br />

contenute per scovare la parola chiave grazie ad un particolare<br />

<strong>di</strong>zionario selezionato attraverso il parametro -w. L’uso <strong>di</strong> un <strong>di</strong>zionario<br />

comune risulta inefficace nella maggior parte dei casi. Ecco che per questo<br />

test ho utilizzato un <strong>di</strong>zionario “mo<strong>di</strong>ficato”, unendo un vocabolario della<br />

lingua italiana ed uno <strong>di</strong> lingua inglese, in base ad un algoritmo, che permette<br />

un’analisi statistica oltre che <strong>di</strong> singole parole anche <strong>di</strong> coppie, triple e<br />

quadruple <strong>di</strong> lettere qualsiasi. In questo modo si aumenta la probabilità <strong>di</strong><br />

scoprire chiavi non <strong>di</strong> senso compiuto.<br />

Figura 6.7: Aircrack-ng trova la chiave<br />

Dopo circa un paio d’ore <strong>di</strong> test, e <strong>di</strong> analisi simultanea, Aircrack-ng<br />

trova la chiave (Fig.6.7) grazie alla quale possiamo autenticarci alla rete<br />

“Alicexxx”.<br />

L’analisi ha termine qui, con la <strong>di</strong>mostrazione pratica delle vulnerabilità<br />

<strong>di</strong> questo tipo <strong>di</strong> configurazione <strong>di</strong> sicurezza. Al termine dell’operazione,<br />

il legittimi proprietari hanno provveduto a cambiare la password <strong>di</strong> rete,<br />

ridefinendo le policy <strong>di</strong> sicurezza del loro sistema.<br />

168


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

TEST 2: Cracking chiave WEP<br />

Per questo secondo test, ho potuto usufruire <strong>di</strong> una rete wireless creata<br />

“su misura” da un amico per testare l’efficacia <strong>di</strong> una offensiva nei confronti<br />

del protocollo <strong>di</strong> sicurezza WEP. Le fasi dell’esperimento denotano poche<br />

<strong>di</strong>fferenze rispetto al precedente. In pratica risulta sempre necessario che<br />

il cracker si autentichi in modalità <strong>di</strong> amministratore al proprio sistema,<br />

attivi la scheda <strong>di</strong> rete correttamente e utilizzi i driver specifici per settarla<br />

in modalità promiscua dopo essersi garatito l’anonimato dell’azione con un<br />

“fake MAC”.<br />

In<strong>di</strong>viduo la rete vittima (Fig.6.8) come nella fase precedente:<br />

Figura 6.8: Airodump-ng<br />

I MAC address non autorizzati sono stati opportunamente cancellati.<br />

Ricavo dalla schermata l’SSID della rete “belking54” che corrisponde alla<br />

marca del produttore dell’AP, i MAC address dell’AP e del TC. Inoltre posso<br />

vedere che la trasmissione avviene sul canale 11 con autenticazione <strong>di</strong> tipo<br />

WEP.<br />

A questo punto, l’azione consiste nel cercare <strong>di</strong> stimolare il traffico tra<br />

il Target Client (TC) e l’AP attraverso l’interfaccia <strong>di</strong> rete ath0, Attacking<br />

Client (AC), utilizzando le opzioni <strong>di</strong> Aireply-ng per effettuare un packet<br />

injection mirato alla produzione <strong>di</strong> IV deboli (Fig. 6.9).<br />

169


Figura 6.9: Deautenticazione<br />

Test <strong>di</strong> penetrazione effettuati<br />

Attraverso l’interfaccia virtuale wifi0 della NIC catturo il traffico generato,<br />

grazie ad uno spoofing del client vittima dovuto alla deautenticazione<br />

costante. Memorizzo i pacchetti contenenti gli IV in un file denominato<br />

/home/mike/belkin54g.ivs.<br />

Passo il file in input ad Aircrack-ng, che in questa fase analizza simultaneamente<br />

i dati senza l’uso <strong>di</strong> un <strong>di</strong>zionario in quanto, attraverso il meccanismo<br />

spiegato nel capitolo 5 al paragrafo 5.1.1, viene calcolato il valore<br />

i-esimo della chiave attraverso un algoritmo statistico (Fig. 6.10).<br />

Figura 6.10: Analisi pacchetti<br />

La probabilità <strong>di</strong> successo del test è strettamente legata alle caratteristiche<br />

della rete. Operazioni del client <strong>di</strong> navigazione in Internet, download,<br />

utilizzo <strong>di</strong> software peer2peer 2 (p2p), uso <strong>di</strong> servizi SMTP, POP, SSL, Telnet,<br />

aumentano il traffico prodotto favorendo la cattura <strong>degli</strong> IV necessari<br />

2 P2p: Software <strong>di</strong> con<strong>di</strong>visione <strong>di</strong>retta dei file a livello “Applicazione”.<br />

170


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

al cracking della chiave. Volutamente per questo esperimento il TC è stato<br />

connesso alla rete e lasciato in stato <strong>di</strong> inattività.<br />

Si è resa necessaria allora una decisa fase <strong>di</strong> stimolo della rete che ha<br />

richiesto un tempo non trascurabile pur avendo a <strong>di</strong>sposizione un processore<br />

a singolo core <strong>di</strong> 2.8 GHz <strong>di</strong> frequenza. Solamente dopo quasi 2.000.000 <strong>di</strong><br />

IV catturati si è riusciti a decifrare la chiave necessaria all’accesso alla rete.<br />

Una volta autenticato in rete l’esperimento è proseguito prefiggendomi<br />

altri due obiettivi, a <strong>di</strong>mostrazione della pericolosità dell’incursione e della<br />

assoluta negligenza dei legittimi proprietari.<br />

Il primo obiettivo consiste nel furto <strong>di</strong> un servizio come la navigazione<br />

Internet, mentre il secondo nell’accesso al router (AP) <strong>di</strong> configurazione della<br />

rete.<br />

Gli obiettivi sono stati raggiunti in or<strong>di</strong>ne inverso; per prima cosa ho<br />

ottenuto l’accesso all’AP e successivamente mi sono spianato la strada per<br />

l’accesso ad Internet. Ve<strong>di</strong>amo come:<br />

Accesso al router <strong>di</strong> configurazione (AP)<br />

Il toolkit Aircrack-ng non finisce mai <strong>di</strong> stupire. Attraverso l’uso <strong>di</strong><br />

Aireply-ng utilizzo l’opzione -3 per effettuare una ARP reply attack che<br />

come risultato obbliga l’AP ad inviare in rete alcuni pacchetti ARP contenenti<br />

informazioni sugli in<strong>di</strong>rizzi <strong>di</strong> rete dei <strong>di</strong>spositivi. Memorizzati in<br />

un file, grazie alla chiave WEP precedentemente scoperta, sono in grado<br />

<strong>di</strong> decifrarli scoprendo informazioni essenziali come gli in<strong>di</strong>rizzi IP del<br />

router (192.168.2.1) e del TC (192.168.2.2), scoprendo che l’AP ha abilitato<br />

il servizio DHCP, e che l’host con cui è connesso non ha un servizio firewall<br />

attivo.<br />

Procedo ora utilizzando il radar Kwifimanager cercando <strong>di</strong> stabilire una<br />

connessione con l’AP. Lancio uno script denominato dhclient, passandogli<br />

come parametro l’interfaccia <strong>di</strong> rete ath0 non più in monitor mode. Effettuate<br />

queste operazioni sono autenticato e connesso alla rete (Fig.6.11). Grazie<br />

allo script dhclient, l’AP mi ha assegnato come IP l’in<strong>di</strong>rizzo 192.168.2.3.<br />

171


Figura 6.11: Accesso alla rete WLAN<br />

Test <strong>di</strong> penetrazione effettuati<br />

Una volta connesso accedo in remoto alla configurazione del router (AP)<br />

<strong>di</strong>gitando il suo in<strong>di</strong>rizzo IP, 192.168.2.1 <strong>di</strong>rettamente sulla barra <strong>degli</strong> in<strong>di</strong>rizzi<br />

del browser web Mozilla. Mi trovo <strong>di</strong> fronte ad una schermata <strong>di</strong><br />

autenticazione al servizio <strong>di</strong> configurazione del router (Fig.6.12). Come prima<br />

impressione si potrebbe pensare <strong>di</strong> essere giunti ad un vicolo cieco, ma<br />

da una statistica piuttosto veritiera risulta che più del 50% dei router wifi<br />

vengono installati e configurati lasciando inalterati i dati <strong>di</strong> autenticazione<br />

forniti all’acquisto.<br />

Figura 6.12: Autenticazione alla configurazione del router<br />

172


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Consultiamo dunque in rete un apposito sito, che fornisce coppie Username&Password<br />

<strong>di</strong> fabbrica dei <strong>di</strong>versi <strong>di</strong>spositivi, classificati in base al<br />

produttore, scoprendo che nel nostro caso dovrebbero essere:<br />

Username: none Password: Administrator<br />

Effettivamente l’inaccortezza dell’amministratore <strong>di</strong> rete è stata confermata.<br />

Ora ho preso possesso della configurazione del router. Posso verificare<br />

la mia presenza nella “DHCP client list” del router accertadomi<br />

dell’avvenuto fake del’in<strong>di</strong>rizzo MAC (Fig.6.13).<br />

Figura 6.13: Verifica della nostra presenza<br />

A questo punto posso svolgere qualsiasi azione nei confronti della rete e<br />

del client vittima.<br />

Accesso al servizio Internet<br />

Dopo aver preso pieno possesso del router (AP) l’ho configurato inserendo<br />

il MAC address della mia scheda <strong>di</strong> rete nella maschera <strong>di</strong> controllo <strong>degli</strong><br />

accessi. Mi sono così garantito l’accesso per un imme<strong>di</strong>ato futuro alle risorse<br />

della rete, compreso il servizio <strong>di</strong> navigazione (Fig.6.14).<br />

173


Figura 6.14: Accesso al servizio Internet<br />

Test <strong>di</strong> penetrazione effettuati<br />

Ho successivamente <strong>di</strong>sabiltato ogni configurazione firewall sull’AP garantendomi<br />

l’accesso in remoto <strong>di</strong>rettamente al TC potendo accedere così all’intero<br />

sistema. Questo test mi ha permesso <strong>di</strong> ottenere l’intero controllo<br />

della rete e <strong>di</strong> tutti i <strong>di</strong>spositivi presenti fornendomi l’opportunità <strong>di</strong> compiere<br />

qualsiasi azione <strong>di</strong> sabotaggio nei confronti del sistema o dell’identità<br />

del legittimo proprietario.<br />

Ovviamente, l’incursione ha avuto termine a questo punto, <strong>di</strong>mostrando<br />

nuovamente la vulnerabilità anche <strong>di</strong> questo meccanismo <strong>di</strong> <strong>di</strong>fesa. Il legittimo<br />

proprietario della rete, ha provveduto imme<strong>di</strong>atamente al ripristino <strong>di</strong><br />

una nuova password. Inoltre ha protetto l’accesso al router (AP), attraverso<br />

una password robusta dopo aver riabilitato firewall e policy <strong>di</strong> accesso alla<br />

rete.<br />

174


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

6.5.2 Pentesting alla rete wireless del Dipartimento <strong>di</strong> Informatica<br />

dell’Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> <strong>Verona</strong><br />

Eccomi giunto, dopo tutta questa esperienza accumulata, ad effettuare<br />

il test più importante. Grazie alla collaborazione del S.I.A. (Servizi Informatici<br />

<strong>di</strong> Ateneo) che mi ha dato la possibilità <strong>di</strong> compiere il collaudo, posso<br />

verificare sul campo le tecniche fino a quì acquisite, <strong>di</strong>rettamente su una rete<br />

wireless con un livello <strong>di</strong> sicurezza decisamente robusto.<br />

Informazioni preliminari<br />

Il progetto denominato “UNIVaiR”, nato nel giugno 2006, prevede la<br />

messa a punto <strong>di</strong> un servizio <strong>di</strong> connettività wireless a <strong>di</strong>sposizione <strong>di</strong> studenti,<br />

personale e frequentatori dellAteneo, (<strong>di</strong>fferenziato per ciascuna categoria<br />

<strong>di</strong> utenti), tramite il quale poter fruire dei medesimi servizi <strong>di</strong>sponibili<br />

attraverso la Intranet, nonchè costituire una piattaforma <strong>di</strong> supporto ai laboratori<br />

<strong>di</strong>dattici, alla <strong>di</strong>dattica on-line attraverso le piattaforme <strong>di</strong> e-learning<br />

ed ai servizi <strong>di</strong> consultazione banche dati e ricerca bibliografica, erogati dalle<br />

biblioteche centralizzate. La WLAN ha subito alcune mo<strong>di</strong>fiche fino ai giorni<br />

nostri, sia nell’architettura che nelle tecnologie implementate, garantendo<br />

sempre un servizio efficiente ed affidabile. La rete wireless presa in esame per<br />

il test si trova nella sede della della Facoltà <strong>di</strong> Matematica, Fisica e Scienze<br />

Naturali (MM.FF.NN.) dell’Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> <strong>Verona</strong>, nel quartiere<br />

Borgo Roma (<strong>Verona</strong>). La copertura della rete riguarda il Dipartimento <strong>di</strong><br />

Informatica e, anche se non ancora operativa, l’e<strong>di</strong>ficio del coso <strong>di</strong> laurea in<br />

Biotecnologie e Bioinformatica. Nella figura 6.15 vengono raffigurati l’area<br />

<strong>di</strong> copertura ed il punto dove è stato effettuato l’esperimento.<br />

Figura 6.15: Copertura WLAN e punto <strong>di</strong> <strong>attacco</strong><br />

175


Test <strong>di</strong> penetrazione effettuati<br />

La fase <strong>di</strong> progettazione ha privilegiato gli aspetti relativi alla sicurezza.<br />

Una scelta obbligata dettata dalla tipologia <strong>di</strong> utenza. La scelta <strong>di</strong><br />

<strong>di</strong>fferenziare le utenze in categorie ha reso necessario l’uso <strong>di</strong> <strong>meccanismi</strong><br />

centralizzati <strong>di</strong> autenticazione basati su server, e le informazioni sensibili in<br />

transito (materiale <strong>di</strong> ricerca, dati personali ed anagrafici <strong>degli</strong> studenti e del<br />

personale <strong>di</strong>pendente) hanno determinato la scelta <strong>di</strong> innalzare il livello <strong>di</strong><br />

sicurezza della rete. L’esperimento è stato effettuato avendo a <strong>di</strong>sposizione<br />

alcune informazioni riguardo la struttura e le tecnologie <strong>di</strong> rete impiegate.<br />

Questo per evitare danni o interruzioni del servizio della rete durante la fase<br />

<strong>di</strong> test. Tuttavia tali informazioni non hanno invalidato il test, in quanto<br />

si sono <strong>di</strong>mostrate utili accelerando la fase <strong>di</strong> ricerca delle caratteristiche<br />

della WLAN, che un eventuale malintenzionato avrebbe dovuto effettuare<br />

impiegando una quantità maggiore <strong>di</strong> tempo.<br />

Dal punto <strong>di</strong> vista tecnologico, i protocolli utilizzati (PEAP-MSCHAPv2,<br />

802.1x, WPA) permettono <strong>di</strong> massimizzare la sicurezza e centralizzare la<br />

gestione <strong>degli</strong> accessi. Alle <strong>di</strong>verse categorie <strong>di</strong> utenti (studenti, personale,<br />

ospiti) sono associati privilegi <strong>di</strong>fferenti, ACL (Access Control List) customizzate<br />

e VLAN3 (Virtual LAN) separate non comunicanti tra loro. Il<br />

traffico HTTP e HTTPS viene filtrato da un proxy server. Tutti i dati sono<br />

crittografati utilizzando l’algoritmo <strong>di</strong> cifratura RC4 con chiavi a 128 bit<br />

(WEP), in quanto l’unico ancora compatibile con tutti i <strong>di</strong>spositivi hardware<br />

in commercio.<br />

È stato pre<strong>di</strong>sposto un meccanismo <strong>di</strong> rotazione delle chiavi<br />

ogni 60 minuti. Gli access point sono solitamente nascosti nel controsoffitto,<br />

non sono facilmente raggiungibili e sono assicurati con un lucchetto<br />

alla struttura portante. Gli apparati sono inoltre collocati in una VLAN <strong>di</strong><br />

amministrazione non raggiungibile dalla Intranet.<br />

L’esperimento<br />

Come detto in precedenza, per poter effettuare il pentesting ho ricevuto<br />

esplicita autorizzazione dal SIA, organo <strong>di</strong> gestione e controllo delle<br />

reti <strong>di</strong> ateneo, ed inoltre ho richiesto ed ottenuto l’autorizzazione da parte<br />

<strong>di</strong> un collega, <strong>di</strong> poter effettuare il collaudo utilizzando il suo computer<br />

portatile come Target Client (TC). Ovviamente questo comporta la pubblicazione<br />

<strong>di</strong> una parte dei dati privati, come i MAC address (incompleti)<br />

dei <strong>di</strong>spositivi coinvolti e le credenziali <strong>di</strong> autenticazione (username e password)<br />

della vittima, i quali sono stati opportunamente cambiati al termine<br />

dell’esperimento. Tutte le informazioni catturate e non autorizzate,<br />

NON sono state pubblicate, oscurandole volutamente dagli screenshots.<br />

3 Insieme <strong>di</strong> tecnologie che permettono <strong>di</strong> segmentare il dominio <strong>di</strong> broadcast, che si crea<br />

in una rete locale (tipicamente IEEE 802.3) basata su switch, in più reti non comunicanti<br />

tra loro.<br />

176


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Mi propongo come obiettivo <strong>di</strong> accedere alla rete privata <strong>degli</strong> studenti<br />

della facoltà attraverso le credenziali della vittima e successivamente<br />

usufruire <strong>di</strong> un servizio interno come la navigazione<br />

Internet.<br />

Avvicinamento all’obiettivo<br />

Munito <strong>di</strong> computer portatile, completamente accessoriato <strong>di</strong> tutto l’occorrente,<br />

mi sono posizionato all’interno dell’e<strong>di</strong>ficio (pubblico), in un laboratorio<br />

per tesisti (Fig.6.15). La posizione non influisce sul risultato in<br />

quanto avrei potuto collocarmi all’esterno dell’e<strong>di</strong>ficio, all’interno <strong>di</strong> un automobile<br />

o all’aperto, utilizzando antenne omni<strong>di</strong>rezionali e apparati <strong>di</strong> amplificazione<br />

per intercettare il segnale <strong>di</strong> rete, peraltro già potente. La macchina<br />

utilizzata per l’esperimento ha caratterisitiche hardware e software già<br />

descritte negli attacchi alle reti private.<br />

Rilevamento della rete ed in<strong>di</strong>viduazione della vittima<br />

Acceso il pc ed autenticato come amministratore inizio la fase <strong>di</strong> rilevamento<br />

della rete wireless. Ovviamente, una volta inserita la scheda <strong>di</strong> rete<br />

PCMCIA, mi garantisco l’anonimato grazie all’uso del software macchanger<br />

precedentemente descritto. Dopo una fase <strong>di</strong> inizializzazione dei software<br />

necessari ed il settaggio della NIC in monitor mode, avvio Airodump-ng,<br />

mettendomi in ascolto della rete (Fig.6.16).<br />

Figura 6.16: Airodump-ng<br />

177


Test <strong>di</strong> penetrazione effettuati<br />

Come si nota dalla figura sono presenti numerose reti, <strong>di</strong>versificate per<br />

categorie:<br />

• Guest: rete aperta, che permette l’accesso ad una pagina web per lo<br />

scaricamento del certificato <strong>di</strong>gitale necessario all’autenticazione e a<br />

file <strong>di</strong> configurazione del proprio sistema.<br />

• Visitor: rete protetta “a tempo”, destinata a persone che hanno bisogno<br />

<strong>di</strong> un accesso occasionale ai servizi forniti. Viene fornito un co<strong>di</strong>ce<br />

<strong>di</strong> accesso “usa e getta”.<br />

• Univr: rete protetta, destinata al personale interno.<br />

• Stud: rete protetta, <strong>di</strong> uso esclusivo <strong>degli</strong> studenti dell’ateneo.<br />

Ogni AP dunque è in grado <strong>di</strong> gestire SSID multipli trasmettendo sullo<br />

stesso canale informazioni relative a reti <strong>di</strong>verse. In<strong>di</strong>viduiamo il nostro<br />

obiettivo autenticato ed in funzione sul canale 8, protetto con cifratura WEP,<br />

connesso alla rete privata “Stud” ad una velocità <strong>di</strong> 11 Mbps. Airodumpng<br />

mi fornisce l’associazione MAC address del TC con l’AP a cui si trova<br />

collegato:<br />

MAC TC xx:xx:xx:86:4C:C6<br />

MAC AP xx:xx:xx:1E:8E:B1<br />

Avendo queste preziose informazioni e conoscendo la struttura della rete<br />

decido <strong>di</strong> effettuare un’azione <strong>di</strong> tipo misto:<br />

• Authentication spoofing<br />

• Weak IV<br />

• Fragmentation attack<br />

• Packet injection<br />

Tale scelta viene fatta in considerazione dell’hardware <strong>di</strong> cui <strong>di</strong>spongo e del<br />

tempo <strong>di</strong> rotazione delle chiavi impostato a 60 minuti.<br />

Inizia il test<br />

In un file <strong>di</strong> testo deauth.sh scrivo imme<strong>di</strong>atamente uno script <strong>di</strong> bash,<br />

sudo aireplay-ng -0 1 -a xx:xx:xx:1E:8E:B1 -c<br />

xx:xx:xx:86:4C:C6 -x 1000 ath0 sleep 1 ./deauth.sh<br />

necessario per l’esecuzione automatica <strong>di</strong> una deautenticazione costante<br />

del TC.<br />

178


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Tale script avvia Aireply-ng che inizia a svolgere il suo lavoro (Fig.6.17)<br />

Figura 6.17: Deautenticazione con Aireply-ng<br />

Durante questa fase, Airodump-ng sempre attivo, si occupa <strong>di</strong> catturare<br />

tutti i pacchetti generati durante la deautenticazione e la contemporanea<br />

iniezione <strong>di</strong> ICMP allo scopo <strong>di</strong> generare una esponenziale crescita del traffico<br />

contenente plaintext e ciphertext.<br />

Gli effetti della continua <strong>di</strong>sconnessione e della cattura dei pacchetti si<br />

possono vedere utilizzando l’analizzatore <strong>di</strong> rete Wireshark, dove si evidenzia<br />

nella finestra delle interfacce NIC il traffico in entrata sullo Sniffing Client<br />

(SC), wifi0 (Fig.6.18).<br />

Figura 6.18: Wireshark<br />

179


Vittima inconsapevole<br />

Test <strong>di</strong> penetrazione effettuati<br />

La vittima, come un utente qualsiasi, si è autenticato alla rete grazie<br />

alle credenziali fornite dall’Ateneo, ovvero una coppia (matricola, password).<br />

Durante il suo lavoro, resta completamente inconsapevole dell’accaduto. Anche<br />

se subisce una continua <strong>di</strong>sconnessione dalla rete, il software che la produce<br />

controlla il traffico generato dal TC, e da il tempo al protocollo 802.11<br />

<strong>di</strong> ristabilire la connessione mantenendo un minimo bit rate garantito. Ecco<br />

che allora la vittima può notare un leggero rallentamento in alcune operazioni<br />

particolarmente onerose <strong>di</strong> banda, ma del tutto “normale” in una<br />

connessione WiFi. La continua caduta e ricaduta <strong>di</strong> rete risulta ben visibile<br />

in una immagine presa dal computer attaccato (Fig.6.19) in cui si notano i<br />

picchi <strong>di</strong> riconnessione.<br />

Figura 6.19: Effetti della caduta <strong>di</strong> rete sul TC<br />

Analisi dei dati catturati<br />

Dopo alcuni minuti dall’inizio dell’analisi, decido <strong>di</strong> avviare Aircrackng<br />

passandogli come input il file <strong>di</strong> cattura dei pacchetti contenenti gli IV,<br />

punto debole della cifratura WEP (Fig.6.20).<br />

L’uso <strong>di</strong> coman<strong>di</strong> simultanei del software, mi permette l’analisi e l’utilizzo<br />

<strong>di</strong> <strong>di</strong>verse informazioni che normalmente venigono gestite separatamente<br />

in base alla selezione <strong>di</strong> un <strong>di</strong>verso tipo <strong>di</strong> test. Unendo tali dati aumento<br />

notevolmente la probabilià <strong>di</strong> successo dell’algoritmo statistico alla base del<br />

programma. Ricordo che non viene utilizzato un <strong>di</strong>zionario, ma dedotto l’iesimo<br />

valore dell’array contenente la chiave secondo formulazioni statistiche<br />

in base al confronto tra pacchetti trasmessi in chiaro e pacchetti cifrati.<br />

180


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Obiettivo raggiunto!<br />

Figura 6.20: Analisi dei pacchetti con Aircrack-ng<br />

Dopo un tempo <strong>di</strong> 43 minuti circa <strong>di</strong> analisi, e un milione <strong>di</strong> chiavi analizzate,<br />

Aircrack-ng restituisce il valore esadecimale della WEP key <strong>di</strong> cifratura<br />

dei dati (Fig.6.21), grazie alla quale si possono ora decifrare i pacchetti <strong>di</strong><br />

autenticazione catturati e contenenti le credenziali della vittima.<br />

Figura 6.21: Aircrack-ng trova la chiave!<br />

Il tempo necessario al cracking è stato inferiore al tempo impostato <strong>di</strong> rotazione<br />

delle chiavi. Questo nonostante fossi munito <strong>di</strong> un processore ormai<br />

datato (2.8 GHz), ma che è risultato sufficiente grazie ad una evoluzione<br />

nell’ottimizzazione dei software <strong>di</strong> analisi e test, impensabile fino a pochi<br />

anni fa. Si immagini dunque un’incursione effettuata con recenti computer<br />

portatili dal costo <strong>di</strong> poche centinaia <strong>di</strong> euro, equipaggiati con processori a<br />

181


Test <strong>di</strong> penetrazione effettuati<br />

doppio core e capaci <strong>di</strong> frequenze ben superiori a 3 GHz. Strumenti che, se<br />

utilizzati in maniera adeguata, possono mettere in seria <strong>di</strong>fficoltà <strong>meccanismi</strong><br />

<strong>di</strong> sicurezza robusti.<br />

Decifrati i pacchetti <strong>di</strong> autenticazione, estraggo le credenziali della vittima,<br />

e avendo precedentemente scaricato il certificato pubblico ed il file <strong>di</strong><br />

configurazione per l’accesso con Linux dalla rete “Guest”, vado a completare<br />

quest’ultimo inserendo i dati richiesti (Fig.6.22).<br />

Figura 6.22: Inserimento dati autenticazione vittima<br />

Per poter accedere alla rete devo ora risettare la NIC in modalità “managed”<br />

e caricare il file <strong>di</strong> configurazione con i dati <strong>di</strong> autenticazione attraverso<br />

il modulo wpa supplicant integrato in Ubuntu.<br />

Come per magia mi ritrovo autenticato alla rete privata <strong>degli</strong> studenti del<br />

Dipartimento <strong>di</strong> Informatica, e grazie al certificato installato, le mie credenziali<br />

mi garantiscono pieno accesso ai servizi offerti. Posso così raggiungere<br />

l’obiettivo preposto accedendo ad una pagina web (Fig.6.23).<br />

182


6.5 Casi <strong>di</strong> stu<strong>di</strong>o<br />

Figura 6.23: Accesso al servizio Internet<br />

L’esperimento ha avuto esito positivo anche per una buona dose <strong>di</strong> fortuna.<br />

Catturare pacchetti ricchi <strong>di</strong> informazioni, riuscire ad analizzare una<br />

notevole quantità <strong>di</strong> traffico generato artificialmente e non incappare mai in<br />

interferenze ra<strong>di</strong>o, statisticamente non capita spesso. Un eventuale monitoraggio<br />

della rete attraverso l’uso <strong>di</strong> un IDS (Intrusion Detection System)<br />

<strong>di</strong>fficilmente avrebbe potuto evitare un <strong>attacco</strong> reale. Questi strumenti devono<br />

essere configurati appositamente per poter intuire una generazione <strong>di</strong><br />

traffico anomala o il tentativo <strong>di</strong> spoofing da parte <strong>di</strong> un attaccante <strong>di</strong> sostituirsi<br />

al server RADIUS (Man in the Middle). Allorchè questo accada, un<br />

malintenzionato raggiungerebbe parzialmente il proprio obiettivo, in quanto<br />

tali <strong>di</strong>spositivi <strong>di</strong> sicurezza, optano spesso per una <strong>di</strong>sconnessione totale<br />

<strong>degli</strong> access point. Si provocherebbe così una <strong>attacco</strong> Denial of Service<br />

(DoS). L’incursione, dopo l’ottenimento dell’obiettivo, è stata abbandonata<br />

e le credenziali della vittima sono state rigenerate. Durante il test non<br />

sono stati commessi sabotaggi a <strong>di</strong>spositivi o dati privati o <strong>di</strong> proprietà<br />

dell’Ateneo scaligero.<br />

Esito del penetration test<br />

Il pentest ha avuto esito positivo. Purtroppo la rete ha <strong>di</strong>mostrato una<br />

falla attraverso la quale un attaccante può accedere indebitamente a servizi<br />

protetti. La debolezza non è insita nella progettazione della rete stessa,<br />

ma nell’implementazione dei protocolli standard utilizzati. La tecnologia<br />

sempre più evoluta a <strong>di</strong>sposizione <strong>di</strong> tutti, si rivela nemica della incessante<br />

ricerca della sicurezza informatica. Purtroppo, la ricerca in questo campo è<br />

ancora lontana dal poter garantire un livello <strong>di</strong> sicurezza assoluto per questo<br />

tipo <strong>di</strong> comunicazioni.<br />

183


Parte IV<br />

Normative giuri<strong>di</strong>che e<br />

conclusioni


Capitolo 7<br />

Legalità e reti Wireless<br />

In questo capitolo si vogliono descrivere gli aspetti legali <strong>di</strong> azioni compiute<br />

e legate alle reti wireless. In particolare chi utilizza tali <strong>di</strong>spositivi<br />

si pone dei quesiti fondamentali: posso con<strong>di</strong>videre la mia rete con altre<br />

persone? Sono obbligato a regolamentare l’accesso a servizi <strong>di</strong> rete come<br />

Internet? L’attività <strong>di</strong> wardriving 1 fino a che punto è lecita? In Italia sono<br />

state emanate numerose leggi a riguardo, denotando comunque una tendenza<br />

all’interpretazione <strong>di</strong> tali normative. Le informazioni riportate <strong>di</strong> seguito<br />

sono citate da [11].<br />

7.1 Normativa dal 2001 al luglio 2005<br />

Fino al 2001 il riferimento legislativo per l’utilizzo <strong>di</strong> apparecchiature<br />

operanti nelle bande <strong>di</strong> frequenza [2, 4 - 2, 4835] GHz (comunemente detta<br />

banda a 2, 4 GHz), [5, 15 - 5, 350] GHz e [5, 47 - 5, 725] GHz (comunemente<br />

dette bande a 5 GHz), utilizzate per la trasmissione wireless LAN, era dato<br />

dal DPR 447 del 5 Ottobre 2001 [3]. Il decreto stabiliva che tali frequenze<br />

potessero essere impiegate solo nell’ambito <strong>di</strong> LAN ad uso privato, mentre<br />

per connettere una WLAN alla rete pubblica occorreva un’autorizzazione<br />

generale del Ministero nonché il pagamento <strong>di</strong> un canone.<br />

A partire dal gennaio 2002, il regolamento <strong>di</strong> attuazione dello stesso<br />

DPR 447 del 5 Ottobre 2001 consente l’utilizzo <strong>di</strong> <strong>di</strong>spositivi <strong>di</strong> WLAN che<br />

operano sulle bande <strong>di</strong> frequenza appositamente assegnate, senza più la necessità<br />

<strong>di</strong> richiedere alcuna concessione. Il quadro regolamentare definitivo<br />

per l’utilizzo della tecnologia Wi-Fi in ambito pubblico è dato dal cosiddetto<br />

“decreto Gasparri” del 28 Maggio 2003 [4], che regola le con<strong>di</strong>zioni per il<br />

1 Wardriving: attività che consiste nell’intercettare reti Wi-Fi, in automobile o a pie<strong>di</strong><br />

con un laptop, solitamente abbinato ad un ricevitore GPS per l’in<strong>di</strong>viduazione delle<br />

coor<strong>di</strong>nate geografiche al fine <strong>di</strong> produrre una mappa.<br />

187


Legalità e reti Wireless<br />

rilascio delle autorizzazioni generali per la fornitura al pubblico dell’accesso<br />

Ra<strong>di</strong>o-LAN alle reti ed ai servizi <strong>di</strong> telecomunicazioni.<br />

La delibera dell’Autorità per le Garanzie nelle Comunicazioni (num.<br />

102/03/CONS) [8] precisa che non è necessario <strong>di</strong>sporre <strong>di</strong> licenza o autorizzazione<br />

per l’erogazione <strong>di</strong> servizi <strong>di</strong> connettività <strong>di</strong> rete nel caso l’attività<br />

commerciale non abbia come oggetto sociale principale l’attività <strong>di</strong><br />

telecomunicazioni (es. bar, alberghi, centri commerciali).<br />

7.2 Il Decreto Pisanu (luglio 2005)<br />

Con il decreto “Misure urgenti per il contrasto del terrorismo internazionale”,<br />

noto come decreto Pisanu, del 27 luglio 2005 [6], (mo<strong>di</strong>ficato con<br />

la legge 31 luglio 2005, n.155) [9] alcune delle norme citate precedentemente<br />

sono state variate. Le norme si applicano ai fornitori <strong>di</strong> una rete pubblica<br />

<strong>di</strong> comunicazioni o <strong>di</strong> un servizio <strong>di</strong> comunicazione elettronica accessibile al<br />

pubblico.<br />

• L’articolo 6, comma 1, impone la non cancellazione <strong>di</strong> tutti i dati<br />

relativi al traffico telematico, escluso il contenuto delle comunicazione<br />

e limitatamente alle informazioni che consentono la tracciabilità <strong>degli</strong><br />

accessi e dei servizi.<br />

• L’articolo 6, comma 3, mo<strong>di</strong>fica alcuni articoli del Decreto Legislativo<br />

30 giugno 2003, n.196 (“Co<strong>di</strong>ce in materia <strong>di</strong> protezione dei dati<br />

personali”) e stabilisce che i dati relativi alle telecomunicazioni telematiche<br />

devono essere essere conservati per sei mesi e poi per ulteriori<br />

sei mesi.<br />

• L’articolo 7 invalida la delibera dell’Autorità per le Garanzie nelle Comunicazioni<br />

(num. 102/03/CONS), in<strong>di</strong>cando che è necessario richiedere<br />

un’autorizzazione al questore per chi mette a <strong>di</strong>sposizione terminali<br />

telematici. L’autorizzazione va richiesta per chi ne fa attività prevalente<br />

o esclusiva, o per chi ha più <strong>di</strong> 3 terminali installati. Inoltre<br />

richiede la “preventiva acquisizione <strong>di</strong> dati anagrafici riportati su un<br />

documento <strong>di</strong> identità dei soggetti che utilizzano postazioni pubbliche<br />

non vigilate per comunicazioni telematiche, ovvero punti <strong>di</strong> accesso ad<br />

Internet utilizzando tecnologia senza fili”.<br />

Il successivo decreto attuativo [2] fissa in modo rigido le modalità <strong>di</strong> acquisizione<br />

dei dati anagrafici dei soggetti utilizzatori. In particolare vengono<br />

richieste:<br />

• l’acquisizione dei dati riportati su un documento <strong>di</strong> identità, “nonché<br />

il tipo, il numero e la riproduzione del documento presentato dall’utente”;<br />

188


7.3 Il Decreto Landolfi (ottobre 2005)<br />

• la raccolta e l’archiviazione <strong>di</strong> tali dati “con modalità informatiche”<br />

(l’archiviazione cartacea è possibile solo in presenza <strong>di</strong> non più <strong>di</strong> tre<br />

terminali);<br />

• la vali<strong>di</strong>tà massima <strong>di</strong> 12 mesi, dall’ultima operazione <strong>di</strong> identificazione,<br />

per gli abbonamenti, forniti anche me<strong>di</strong>ante credenziali <strong>di</strong> accesso<br />

prepagate o gratuite, nel caso che il fornitore renda <strong>di</strong>sponibili apparecchi<br />

terminali collocati in aree non vigilate;<br />

• la conservazione dei dati stessi fino al 31 <strong>di</strong>cembre 2007;<br />

• lo stesso obbligo <strong>di</strong> identificazione imposto ai titolari o gestori <strong>di</strong> un<br />

esercizio pubblico o <strong>di</strong> un circolo privato che mettono a <strong>di</strong>sposizione<br />

<strong>di</strong> clienti o soci apparecchi terminali, ai soggetti che offrono accesso<br />

alle reti telematiche utilizzando tecnologia senza fili in aree messe a<br />

<strong>di</strong>sposizione del pubblico;<br />

7.3 Il Decreto Landolfi (ottobre 2005)<br />

Il decreto del Ministero delle Comunicazioni [5] liberalizza l’erogazione<br />

<strong>di</strong> servizi Wi-Fi nel territorio nazionale, mo<strong>di</strong>ficando il precedente decreto<br />

Gasparri 28 Maggio 2003.<br />

• L’articolo 1 liberalizza il servizio su tutto il territorio nazionale, eliminando<br />

l’obbligo <strong>di</strong> fornire il servizio in aree a frequentazione pubblica<br />

o locali aperti al pubblico.<br />

• L’articolo 2 obbliga i soggetti autorizzati a consentire l’accesso in<strong>di</strong>pentemente<br />

dalla tecnologia utilizzata, favorendo <strong>di</strong> fatto gli accor<strong>di</strong><br />

<strong>di</strong> roaming tra operatori <strong>di</strong>versi. Inoltre questo articolo si introduce<br />

il cosiddetto “Diritto d’antenna”: l’installazione <strong>di</strong> apparati e antenne<br />

deve essere garantita a con<strong>di</strong>zioni “eque, trasparenti e non <strong>di</strong>scriminatorie”.<br />

Non ci potranno essere quin<strong>di</strong> installazioni <strong>di</strong> apparati in<br />

esclusiva per alcuni operatori.<br />

• L’articolo 3 in<strong>di</strong>ca in 60 giorni il termine della sperimentazione per i<br />

soggetti che stanno già fornendo un servizio in maniera sperimentale.<br />

• L’articolo 4, riprendendo il decreto legislativo 1 agosto 2003 n.259,<br />

mantiene il regime <strong>di</strong> autorizzazione generale per i soggetti che vogliono<br />

fornire servizi ra<strong>di</strong>olan. Tale autorizzazione è da richiedere alla Direzione<br />

generale per i servizi <strong>di</strong> comunicazione elettronica e ra<strong>di</strong>o<strong>di</strong>ffusione<br />

del Ministero delle Comunicazioni.<br />

189


Legalità e reti Wireless<br />

7.4 Il Decreto Legge n.248 (<strong>di</strong>cembre 2007)<br />

Il decreto legge n.248 del 28 <strong>di</strong>cembre 2007 [7], pubblicato sulla Gazzetta<br />

Ufficiale n.302 del 31 <strong>di</strong>cembre 2007 mo<strong>di</strong>fica il decreto Pisanu del 27 luglio<br />

2005, prorogandone i termini. In particolare:<br />

• l’articolo 34 mo<strong>di</strong>fica gli articoli 6 e 7 del citato decreto Pisanu, postponendo<br />

il termine per la conservazione dei dati al 31 <strong>di</strong>cembre 2008.<br />

7.5 Wardriving<br />

Questa sezione riporta una completa analisi fatta da [13].<br />

Spesso si sente parlare <strong>di</strong> Wardriving come condotta più o meno lecita.<br />

Ma in realtà cosa è il wardriving? Il wardriving non è altro che una ricerca<br />

noma<strong>di</strong>ca <strong>di</strong> reti wireless. Il che, tradotto in soldoni, significa andare in giro<br />

per le città, con computer alla mano (o altri strumenti <strong>di</strong> ricerca), a cercare<br />

reti wireless (WLan). Ebbene tale tipo <strong>di</strong> pratica sembra molto <strong>di</strong>ffusa, e se<br />

prima si trattava <strong>di</strong> un’attività <strong>di</strong> cui si parlava solo nei convegni e tra addetti<br />

ai lavori, ora pare che anche la polizia postale abbia rivolto l’attenzione verso<br />

i wardriver.<br />

Occorre quin<strong>di</strong> fare un po’ <strong>di</strong> chiarezza sulla liceità o meno del wardriving.<br />

Innanzi tutto va <strong>di</strong>fferenziata l’attività del wardriver che fa una ricerca<br />

fine a se stessa, ossia solo per vedere se ci siano reti wireless in un determinato<br />

posto e se queste sieano protette o meno (un ricerca fine a se stessa),<br />

da quella <strong>di</strong> ricerca <strong>di</strong> una rete wireless non protetta (libera) al fine <strong>di</strong> utilizzare<br />

le risorse <strong>di</strong> connessione per navigare in rete gratis o fare altre attività.<br />

Nel primo caso, appare chiaro, che la condotta sia penalmente irrilevante,<br />

tant’è che il soggetto ricerca alla cieca un access point che poi risulta essere<br />

presente o meno. Il tutto finisce qui, con un interrogazione dell’access<br />

point che, dal canto suo risponderà, secondo il tipo <strong>di</strong> rete a cui da accesso.<br />

Tale pratica a volte è del tutto involontaria ed a maggior ragione priva<br />

<strong>di</strong> rilevanza penale: infatti spesso quando si accende un computer portatile<br />

che supporti tecnologia wireless questo automaticamente riconosce e avverte<br />

l’utente che nella zona ci sono una o più reti wireless e in<strong>di</strong>ca se le stesse<br />

reti sono libere o protette. In questo caso nessuno soggetto umano interagisce<br />

con le reti Wlan e le informazioni che si ricevono sono il risultato <strong>di</strong><br />

un colloquio fra macchine. A volte succede che le WLAn aperte quando<br />

interrogate da un computer <strong>di</strong>ano ad<strong>di</strong>rittura automaticamente un numero<br />

IP alla macchina accre<strong>di</strong>tandola così presso <strong>di</strong> sè. Anche in questo caso la<br />

responsabilità penale dell’utente è nulla.<br />

Diverso è il caso <strong>di</strong> questi soggetti che una volta trovata una rete, libera<br />

o protetta che sia, vi accedano navigando in essa o sfruttandone la banda.<br />

190


7.5 Wardriving<br />

In tale ipotesi la responsabilità penale rileva, seppur in <strong>di</strong>verso modo, a<br />

seconda dell’attività posta in essere.<br />

Se la rete è libera (quin<strong>di</strong> non protetta) il soggetto agente potrà andare<br />

incontro a sanzioni, anche gravi, previste dal co<strong>di</strong>ce penale. In questo caso,<br />

vista la libertà <strong>di</strong> accesso alla rete, non si potrà configurare il reato <strong>di</strong><br />

accesso abusivo a sistema informatico o telematico in quanto la rete non<br />

prevede misure <strong>di</strong> sicurezza attive (art.615 ter cp), mentre a seconda dell’ulteriore<br />

attività posta in essere una volta entrato nella rete le ipotesi <strong>di</strong><br />

reato configurabili possono essere molteplici. Si va dai reati previsti dagli<br />

artt.617 quater e quinques che riguardano l’intercettazione abusiva <strong>di</strong> comunicazioni:<br />

in questo caso il soggetto che entra nella rete spia quelle che<br />

sono le comunicazione del titolare della rete violando così la segretezza della<br />

comunicazione stessa, al reato previsto dall’art.167 del D.Lgs 196/2003, in<br />

quanto il wardriver si troverà a trattare dati senza il consenso dell’/gli interessato/i<br />

(art.23 D.Lgs 196/2003), passando per la frode informatica (art.640<br />

ter cp), la sostituzione <strong>di</strong> persona (art.494 cp), il danneggiamento <strong>di</strong> sistemi<br />

informatici o telematici <strong>di</strong> art.635 bis.<br />

Infatti se una volta entrato, il wardriver si “<strong>di</strong>verte” a <strong>di</strong>struggere quello<br />

che trova, manda in tilt il sistema, o anche solo parte <strong>di</strong> esso, incorrerà<br />

nella sanzione prevista per il danneggiamento, se invece utilizzerà l’IP della<br />

rete per inviare mail o per commettere altri reati sarà responsabile sia della<br />

sostituzione <strong>di</strong> persona sia del reato compiuto a mezzo rete wireless <strong>di</strong><br />

altri. Un’ulteriore attività si potrebbe concretizzare anche nell’inserimento<br />

<strong>di</strong> co<strong>di</strong>ci malvagi (malware-virus) condotta che rientra nella previsione normativa<br />

dell’art.615 quinques. Oppure, se utilizza la banda per scaricare o<br />

<strong>di</strong>ffondere in rete materiale pedopornografico o comunque materiale protetto<br />

dal <strong>di</strong>ritto d’autore, si troverà a rispondere rispondere dei reati <strong>di</strong>sciplinati<br />

dagli artt.600 ter e quater del co<strong>di</strong>ce penale e 171 legge sul <strong>di</strong>ritto d’autore.<br />

Altro <strong>di</strong>scorso merita la forzatura della rete, quando questa è protetta (ad<br />

esempio con il sistema <strong>di</strong> cifratura WEP o WPA). In tal caso il wardriver si<br />

troverà, per il solo fatto <strong>di</strong> averla violata superando le misure <strong>di</strong> sicurezza,<br />

nella posizione <strong>di</strong> chi è entrato abusivamente nel “domicilio informatico”<br />

altrui. Si applicherà a tale ipotesi l’art. 615 ter. Una volta entrato, il<br />

wardriver potrebbe porre in essere tutte le azione che sono state descritte,<br />

per cui si troverebbe a rispondere <strong>di</strong> tutti i reati consumati.<br />

Insomma la condotta del wardriver va valutata sempre in concreto secondo<br />

una scala <strong>di</strong> infrazioni che vanno dall’accesso abusivo, prima in senso<br />

cronologico, alle altre che in base alla volontà dello stesso soggetto saranno<br />

poste in essere.<br />

191


Legalità e reti Wireless<br />

Riportiamo per esteso da [20], senza citare le pene, il testo dei principali<br />

articoli menzionati:<br />

⋄ Art.615-ter - “Accesso abusivo ad un sistema informatico o<br />

telematico”: “Chiunque abusivamente si introduce in un sistema<br />

informatico o telematico protetto da misure <strong>di</strong> sicurezza ovvero vi<br />

si mantiene contro la volontà espressa o tacita <strong>di</strong> chi ha <strong>di</strong>ritto <strong>di</strong><br />

escluderlo, è punito con la reclusione fino a tre anni”.<br />

⋄ Art.615-quinques - “Diffusione <strong>di</strong> programmi <strong>di</strong>retti a danneggiare<br />

o interrompere un sistema informatico”: “Chiunque<br />

<strong>di</strong>ffonde, comunica o consegna un programma informatico da lui stesso<br />

o da altri redatto, avente per scopo o per effetto il danneggiamento <strong>di</strong><br />

un sistema informatico o telematico, dei dati o dei programmi in esso<br />

contenuti o ad esso pertinenti, ovvero l’interruzione, totale o parziale,<br />

o l’alterazione del suo funzionamento, è punito con la reclusione sino<br />

a due anni e con la multa sino a lire venti milioni”.<br />

⋄ Art.635-bis - “Danneggiamento <strong>di</strong> sistemi informatici e telematici”:<br />

“Chiunque <strong>di</strong>strugge, deteriora o rende, in tutto o in parte,<br />

inservibili sistemi informatici o telematici altrui, ovvero programmi,<br />

informazioni o dati altrui, è punito, salvo che il reato costituisca più<br />

grave reato, con la reclusione da sei mesi a tre anni. Se ricorre una o<br />

più delle circostanze <strong>di</strong> cui al secondo comma dell’articolo 635, ovvero<br />

se il fatto è commesso con abuso della qualità <strong>di</strong> operatore del sistema,<br />

la pena è della reclusione da uno a quattro anni”.<br />

⋄ Art.640-ter - “Frode informatica”: “Chiunque, alterando in qualsiasi<br />

modo un sistema informatico o telematico o intervenendo senza<br />

<strong>di</strong>ritto con qualsiasi modalità su dati, informazioni o programmi contenuti<br />

in un sistema informatico o telematico o ad esso pertinenti,<br />

procura a sé o ad altri un ingiusto profitto con altrui danno, è punito<br />

con la reclusione da sei mesi a tre anni e con la multa da lire centomila<br />

a duemilioni. La pena è della reclusione da uno a cinque anni e della<br />

multa da lire seicentomila a tre milioni se ricorre una delle circostanze<br />

previste dal numero 1 del secondo comma dell’articolo 640, ovvero se<br />

il fatto è commesso con abuso delle qualità <strong>di</strong> operatore del sistema. Il<br />

delitto è punibile a querela della persona offesa, salvo che ricorra taluna<br />

delle circostanze <strong>di</strong> cui al secondo comma o un’altra circostanza<br />

aggravante”.<br />

192


Capitolo 8<br />

Conclusioni<br />

L’introduzione <strong>di</strong> una nuova tecnologia, quali le reti wireless all’interno<br />

della società, rappresenta una sfida importante per i ricercatori e gli addetti<br />

ai lavori. Dall’indagine svolta in questa tesi, si è visto come il processo<br />

<strong>di</strong> <strong>di</strong>ffusione ed adattamento <strong>di</strong> un nuovo standard (802.11) sia un’impresa<br />

<strong>di</strong>fficile e lunga. Dopo aver analizzato attentamente gli aspetti tecnici dell’architettura<br />

delle reti wi-fi, si è <strong>di</strong>mostrata la loro inefficienza per quanto<br />

riguarda i <strong>meccanismi</strong> atti a garantire sicurezza nelle comunicazioni. Una<br />

tecnologia <strong>di</strong> comunicazione, soprattutto nell’epoca multime<strong>di</strong>ale nella quale<br />

viviamo, deve poter garantire un livello <strong>di</strong> sicurezza adeguato al valore delle<br />

informazioni trasmesse.<br />

Come <strong>di</strong>mostrato nella stesura <strong>di</strong> questo scritto, tale principio per le reti<br />

senza fili non viene sempre rispettato. Il limite osservato, dall’utilizzo <strong>di</strong> un<br />

mezzo <strong>di</strong> trasmissione fisico come le onde ra<strong>di</strong>o, si scontra con le tecniche<br />

attualmente sviluppate per la tutela dei propri dati e della propria identità.<br />

Tali <strong>meccanismi</strong>, sui quali ci si è soffermati a lungo, compensano la<br />

loro efficacia con un proporzionale degrado delle prestazioni <strong>di</strong> rete. Questo<br />

comporta la ricerca costante <strong>di</strong> un punto <strong>di</strong> equilibiro tra livello <strong>di</strong> sicurezza<br />

implementato e “performance” <strong>di</strong> rete. Situazione, ben lontana dal confermare<br />

una garanzia <strong>di</strong> affidabilità nell’uso <strong>di</strong> una tale tecnologia. I <strong>di</strong>spositivi<br />

hardware ed i protocolli crittografici e <strong>di</strong> autenticazione analizzati e <strong>di</strong>scussi<br />

in questa tesi (Capp. 5 e 6), hanno rivelato limiti tecnologici potenzialmente<br />

sfruttabili da in<strong>di</strong>vidui malintenzionati, interessati ad impossessarsi <strong>di</strong> dati<br />

e credenziali altrui.<br />

Dopo un costante lavoro pratico, affiancato da un meticoloso stu<strong>di</strong>o teorico<br />

sulle tecnologie wireless, vengono presentati dei test effettuati su reti reali,<br />

con lo scopo <strong>di</strong> argomentare l’effettiva pericolosità <strong>di</strong> tali anomalie tecniche.<br />

Grazie al permesso debitamente concesso da amici e dal consenso dell’organo<br />

<strong>di</strong> amministrazione e gestione della rete informatica dell’Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong><br />

<strong>di</strong> <strong>Verona</strong>, è stato possibile effettuare alcuni test <strong>di</strong> penetrazione su reti<br />

193


Conclusioni<br />

wireless domestiche, ed un penetration test sulla rete wireless del Dipartimento<br />

<strong>di</strong> Informatica della Facoltà <strong>di</strong> Matematica, Fisica e Scienze Naturali<br />

dell’ateneo scaligero, allo scopo <strong>di</strong> evidenziare eventuali migliorie da attuare<br />

nelle metodologie utilizzate per garantire la sicurezza.<br />

I sitemi <strong>di</strong> sicurezza e le policy <strong>di</strong> accesso alle reti <strong>di</strong> uso domestico, attuabili<br />

con gli o<strong>di</strong>erni <strong>di</strong>spositivi commerciali, si sono rivelati insicuri. Dai test<br />

effettuati, prendendo in esame implementazioni usuali e presenti nella maggior<br />

parte delle reti installate in uffici pubblici, stu<strong>di</strong> privati e commerciali,<br />

nonché nelle abitazioni dei singoli citta<strong>di</strong>ni, si è <strong>di</strong>mostrata la possibilità <strong>di</strong><br />

accedere con esito positivo alla privacy <strong>di</strong> tali vittime. Tali <strong>meccanismi</strong> si<br />

sono rivelati vulnerabili a test specifici, compiuti in maniera mirata su alcune<br />

debolezze <strong>di</strong> carattere tecnico, rendendo palese il loro apparente grado<br />

<strong>di</strong> affidabilità.<br />

Il pentesting, effettuato sulla rete <strong>di</strong> ateneo, è risultato piuttosto complesso,<br />

richiedendo un tempo <strong>di</strong> preparazione molto più lungo. Questo a causa<br />

delle tecnologie impiegate che si sono <strong>di</strong>mostrate robuste ed adeguate ad un<br />

sistema informatico critico. Questa rete gestisce un’utenza numerosa, con<br />

policy <strong>di</strong> autenticazione sofisticate e deve garantire un livello <strong>di</strong> sicurezza dei<br />

dati adeguato al valore delle informazioni trasmesse. Pertanto, i <strong>di</strong>spositivi<br />

utilizzati sono proporzionati a tali requisiti, anche se, per motivi <strong>di</strong> compatibilità<br />

con apparecchiature commerciali potenzialmente utilizzate dagli utenti,<br />

si è reso necessario adottare l’utilizzo <strong>di</strong> un protocollo precedentemente<br />

<strong>di</strong>mostrato insicuro. Pur implementando un meccanismo <strong>di</strong> rotazione delle<br />

chiavi crittografiche <strong>di</strong> sessione, impostato ogni 60 minuti, grazie a mezzi <strong>di</strong><br />

potenza sempre crescente dotati <strong>di</strong> processori dalle prestazioni sempre più elevate<br />

e a software de<strong>di</strong>cati con tecniche innovative costantemente aggiornati,<br />

si è <strong>di</strong>mostrata una debolezza intrinseca al sistema.<br />

Con un test mirato si sono riuscite ad ottenere le credenziali <strong>di</strong> autenticazione<br />

<strong>di</strong> un utente collegato, in un tempo limite inferiore a 60 minuti.<br />

Questo porta a due considerazioni. La prima prevede un abbassamento del<br />

tempo <strong>di</strong> “refresh” delle chiavi, in funzione della potenza massima stimata<br />

del miglior processore in commercio. La seconda porta all’idea che, per contrastare<br />

eventuali attacchi, sia necessario adottare tecnologie che supportino<br />

esclusivamente protocolli con livelli <strong>di</strong> affidabilità superiori.<br />

Durante i test effettuati e le conoscenze acquisite si è resa necessaria la<br />

scrittura <strong>di</strong> alcuni script che hanno automatizzato alcune operazioni o configurazioni<br />

dei <strong>di</strong>spositivi hardware e software. Non sono comunque stati<br />

prodotti software in grado <strong>di</strong> eseguire le procedure complete descritte nella<br />

tesi allo scopo <strong>di</strong> automatizzare tali operazioni. Questo per evitare la <strong>di</strong>ffusione<br />

<strong>di</strong> strumenti automatici “pericolosi” che potrebbero entrare in possesso<br />

<strong>di</strong> persone malintenzionate.<br />

194


Dai risultati ottenuti nei test e dalle considerazioni sin qui fatte, si perviene<br />

all’idea che l’incessante sviluppo, in questo campo dell’informatica,<br />

debba essere sempre alla costante ricerca <strong>di</strong> un “protocollo sicuro”, per<br />

garantire la sicurezza delle informazioni e delle credenziali, proporzionato<br />

all’affidabilità ed alle prestazioni della rete cui viene applicato.<br />

Ad oggi, gli strumenti implementati sui <strong>di</strong>spositivi commerciali risultano<br />

sufficienti a garantire un livello <strong>di</strong> sicurezza delle comunicazioni <strong>di</strong>screto, in<br />

funzione <strong>di</strong> un utilizzo pubblico <strong>di</strong> tali tecnologie.<br />

Cionostante, da una statistica effettuata sulla città <strong>di</strong> <strong>Verona</strong> (Fig.8.1),<br />

la maggior parte delle persone comuni e dei servizi pubblici e privati, non<br />

rispetta nemmeno le più elementari misure <strong>di</strong> sicurezza proposte.<br />

Figura 8.1: Rilevamenti statistici nella città <strong>di</strong> <strong>Verona</strong><br />

Da un rilevamento statistico effettuato su più <strong>di</strong> 400 reti nel centro storico<br />

<strong>di</strong> <strong>Verona</strong>, è risultato che il 40% della popolazione adotta un protocollo<br />

considerato insicuro, più del 18% si affida ad un protocollo maggiormente<br />

robusto, ma sempre affetto da debolezze, mentre più del 38% non si affida a<br />

nessuna tecnica <strong>di</strong> protezione, lasciando totalmente vulnerabile la propria<br />

rete (Fig.8.2).<br />

195


Figura 8.2: Livelli <strong>di</strong> sicurezza delle reti rilevate<br />

Conclusioni<br />

Tale situazione si presenta simile anche in altre città italiane, <strong>di</strong>mostrando<br />

una superficialità in questo ambito estesa su ampia scala. Alla luce <strong>di</strong><br />

tali risultati, questo lavoro <strong>di</strong> tesi vuole lanciare un monito <strong>di</strong> allarme, per<br />

far si che si <strong>di</strong>ffonda un atteggiamento più responsabile nell’uso <strong>di</strong> tecnologie<br />

<strong>di</strong>ffuse e fondamentali quali le reti wireless.<br />

196


Ringraziamenti<br />

Scrivere i ringraziamenti alla fine <strong>di</strong> una tesi significa purtroppo chiudere<br />

un capitolo della propria vita che ha lasciato dei ricor<strong>di</strong> indelebili.<br />

Lo voglio fare in maniera concisa, senza tralasciare nessuno e ricordando le<br />

motivazioni che mi hanno legato a tutti quelli che ho incontrato in questa<br />

splen<strong>di</strong>da esperienza universitaria.<br />

Il ringraziamento più grande va ovviamente alla mia famiglia. Qualsiasi<br />

lavoro comporta dei sacrifici, ma la scelta <strong>di</strong> intraprendere una carriera<br />

scolastica fino al raggiungimento <strong>di</strong> una laurea scientifica può comportare<br />

una serie <strong>di</strong> <strong>meccanismi</strong> psicologici <strong>di</strong>fficili da sostenere. Avere accanto una<br />

famiglia stabile, comprensiva e costantemente presente giorno dopo giorno,<br />

rappresenta una forza inimmaginabile che permette <strong>di</strong> superare qualsiasi <strong>di</strong>fficoltà.<br />

Devo tutto quello che ho ottenuto a loro, alla presenza costante delle<br />

mie sorelle e delle loro famiglie, ai sorrisi felici e spensierati dei miei nipoti<br />

che mi hanno sempre dato un motivo in più per proseguire e a alla mia cara<br />

nonna Gemma.<br />

È stato un sacrificio anche per tutti loro avermi accanto,<br />

alternando stati d’animo <strong>di</strong>versi. A volte poco partecipe e <strong>di</strong>staccato dalla<br />

vita familiare a causa <strong>degli</strong> impegni e delle <strong>di</strong>fficoltà universitarie, altre<br />

volte euforico per i risultati ottenuti. Sappiate comunque che tutto questo<br />

lo de<strong>di</strong>co a voi.<br />

Un ringraziamento speciale ad Elisa, sempre presente in tutte le situazioni<br />

e con la quale ho con<strong>di</strong>viso questo lungo cammino. Grazie alla sua<br />

semplicità, alla sua gioia <strong>di</strong> vivere e ai consigli che ha saputo darmi ho affrontato<br />

tutti gli impegni con più decisione e maggior fiducia in me stesso.<br />

Una compagna <strong>di</strong> viaggio insostituibile e stupenda. Grazie alla sua famiglia,<br />

Marisa, Ida e Chiara, persone per me speciali.<br />

Ed ora un grazie agli amici e colleghi più cari. Grazie a Roberto “Paglia”,<br />

persona speciale capace <strong>di</strong> trasmettere allegria e serenità <strong>di</strong>mostrando<br />

livelli straor<strong>di</strong>nari <strong>di</strong> professionalità e passione per l’informatica. Grazie ad<br />

197


Ringraziamenti<br />

Andrea “Guspo”, per le splen<strong>di</strong>de avventure passate insieme e per la sua<br />

amicizia sincera. Grazie a Silvia, ragazza eccezionale, conosciuta il primo<br />

giorno e rimasta sempre presente anche se le <strong>di</strong>stanze ci hanno separato.<br />

Grazie ad Elisa ed Alex per i giorni felici passati insieme, ad Ermanno per<br />

la sua simpatia ed i suoi appunti inestimabili, a Umberto “Umbe” e a Nicola<br />

“Gulfio” per la loro immancabile gioia e a Matteo per il suo carattere<br />

scontroso. Un abbraccio a tutti i “Butei del tavolo”, persone sincere e <strong>di</strong>vertenti,<br />

punto <strong>di</strong> riferimento costante dopo esami e lezioni. Un grazie speciale<br />

a Francesco, Enrico, Cristina, Daniele ed il “Raffa” per le notti i<strong>di</strong>menticabili<br />

da “Campioni del Mondo”. Grazie a tutti gli amici del laboratorio<br />

SPY, ambiente professionale e serio, luogo ideale per la stesura <strong>di</strong> una tesi.<br />

Grazie a Michele “Pette” per i preziosi consigli e per amare la musica come<br />

me, ad Alessio per l’aiuto in varie occasioni, ad Andrea per le sue battute<br />

irripetibili e al “polifasico” per non esserci mai stato <strong>di</strong> giorno.<br />

Grazie a Cristian “e<strong>di</strong>colante”, amico sincero e confidente che con la sua<br />

saggezza mi ha sempre aiutato a far luce nei momenti più bui. Grazie al<br />

“maestro” Germano, amico prezioso, per avermi insegnato i segreti ed i valori<br />

del vero aeromodellismo e per ricordarmi sempre che le passioni vanno<br />

coltivate con amore. Grazie a Livia, amica speciale, per aver sopportato<br />

le mie lamentele ed essersi sempre occupata meravigliosamente della mia<br />

schiena restituendomi sollievo nei momenti <strong>di</strong> tensione. Grazie a Leonardo,<br />

amico d’infanzia sincero e leale, sempre. Un grazie a tutti quelli che non ho<br />

citato ma che sono stati presenti ed hanno contribuito a questo mio traguardo.<br />

Un ringraziamento speciale al Prof. Roberto Segala per avermi seguito<br />

durante il lavoro <strong>di</strong> tesi con passione e professionalità sapendo interpretare<br />

al meglio le mie idee, regalandomi la più grande sod<strong>di</strong>sfazione della mia vita.<br />

198


Bibliografia<br />

[1] Aircrack. http://download.aircrack-ng.org. Opensource license.<br />

[2] Decreto del ministero dell’interno del 16 agosto 2005, misure <strong>di</strong><br />

preventiva acquisizione <strong>di</strong> dati anagrafici dei soggetti che utilizzano<br />

postazioni pubbliche non vigilate per comunicazioni telematiche<br />

ovvero punti <strong>di</strong> accesso ad internet utilizzando tecnologia senza fili<br />

[. . . ]. http://www.interno.it/legislazione/pages/pagina.php?<br />

idlegislazione=650.<br />

[3] Decreto del presidente della repubblica n. 447 del 05 ottobre 2001,<br />

regolamento recante <strong>di</strong>sposizioni in materia <strong>di</strong> licenze in<strong>di</strong>viduali e<br />

<strong>di</strong> autorizzazioni generali per i servizi <strong>di</strong> telecomunicazioni ad uso<br />

privato. http://www.ipzs.it/Pubblicazioni_ministeri/Min_<br />

comunicazioni/Bollettino/pdf/2002/02_2002/02_2002_3s/02_<br />

2002_3s.pdf.<br />

[4] Decreto gasparri 28 maggio 2003, regolamentazione dei servizi wi-fi ad<br />

uso pubblico. http://www.comunicazioni.it/it/index.php?IdPag=<br />

699.<br />

[5] Decreto landolfi 4 ottobre 2005, decreto sul wi-fi. http://www.<br />

comunicazioni.it/it/index.php?IdPag=1039.<br />

[6] Decreto legge 27 luglio 2005, n.144, misure urgenti per il contrasto<br />

del terrorismo internazionale. http://www.comunicazioni.it/it/<br />

DocSupp/1028/DecretoLegge27luglio2005.pdf.<br />

[7] Decreto legge n.248 28 <strong>di</strong>cembre 2007, proroga <strong>di</strong> termini previsti<br />

da <strong>di</strong>sposizioni legislative e <strong>di</strong>sposizioni urgenti in materia<br />

finanziaria. http://www.governo.it/Governo/Provve<strong>di</strong>menti/<br />

dettaglio.asp?d=37921.<br />

199


BIBLIOGRAFIA<br />

[8] Delibera n. 102/03/cons, <strong>di</strong>sposizioni regolamentari in materia <strong>di</strong> autorizzazioni<br />

generali. http://www.agcom.it/provv/d_102_03_CONS.<br />

htm.<br />

[9] Legge 31 luglio 2005, n. 155, conversione in legge, con mo<strong>di</strong>ficazioni,<br />

del decreto-legge 27 luglio 2005, n. 144, recante misure urgenti per il<br />

contrasto del terrorismo internazionale. http://www.parlamento.it/<br />

leggi/05155l.htm.<br />

[10] Madwifi. http://madwifi.org/. MadWifi driver.<br />

[11] Wireless lan: la normativa italiana. http://equars.com/wireless_<br />

normativa.html#normwifi2. Online - Creative Commons License.<br />

[12] Wireshark. http://www.wireshark.org/. Opensource license.<br />

[13] Avv.A.D’Agostini. http://www.overlex.com/leggiarticolo.asp?<br />

id=1471.<br />

[14] D.Stanley J.Walker B.Aboba. “Extensible authentication protocol<br />

(EAP) method requirements for wireless LANs”. RFC 4017, March<br />

2005.<br />

[15] B.Eugenio. Wpa, generalità e principi <strong>di</strong> funzionamento. Università<br />

<strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Catania.<br />

[16] T.Dierks C.Allen. “The TLS protocol version 1.0”. RFC 2246, January<br />

1999.<br />

[17] J.Kohl C.Neuman. “The kerberos network authentication service (V5)”.<br />

RFC 4120, September 1993.<br />

[18] C.Sanders. Practical Packet Analysis - Using Wireshark to solve realworld<br />

network problems. No Starch Press Inc., 2007.<br />

[19] D.Plummer. “Ethernet address resolution protocol: Or converting network<br />

protocol addresses to 48.bit ethernet address for transmission on<br />

ethernet hardware”. RFC 826, STD 37, November 1982.<br />

[20] D.Rocca. Attacchi informatici: gli strumenti <strong>di</strong> tutela. Rubrica legale -<br />

ICT Seurity, Ottobre 2003.<br />

[21] O.Letanche D.Stanley. Proposed TGi D 1.9 Clause 8 AES-CTR CBC-<br />

MAC (CCM) text. IEEE 802.11 doc, 02 − 144r0, 2002.<br />

[22] G.Lehembre. Wi-fi security: Wep, wpa and wpa2. hakin9, (2), 2006.<br />

[23] A.Caprari F.Iezzi G.R.Maffini. Aspetti <strong>di</strong> sicurezza dei protocolli per<br />

wireless (WEP/WPA/TKIP). 2004.<br />

200


BIBLIOGRAFIA<br />

[24] G.Zorn. “Microsoft PPP CHAP extensions, version 2”. RFC 2759,<br />

January 2000.<br />

[25] B.A.Meletis J.Dahlberg. Tightening security in wireless solutions. Dell<br />

Power Solutions, (2), 2004.<br />

[26] M.S.Corson J.P.Maker J.H.Cornicione. Internet-based mobile ad hoc<br />

networking. IEEE Internet Computing, pages 63–70, 1999.<br />

[27] N.Aboudagga D.Giry J.J.Quisquater. Wireless security overview. IEEE<br />

Ra<strong>di</strong>o Communications, 2005.<br />

[28] J.Postel. “Internet protocol”. RFC 791, STD 5, September 1981.<br />

[29] J.Geiger J.Barrett D.Ed Lamprecht J.Roth. Wireless Network First-<br />

Step. Mondadori Informatica. A.Mondadori, Novembre 2004.<br />

[30] J.Walker. 802.11 key management series: Part I:key management for<br />

WEP and TKIP. Intel Corporation.<br />

[31] J.Walker. 802.11 security series: Part II: The temporal key integrity<br />

protocol (TKIP). Intel Corporation.<br />

[32] J.Walker. 802.11 security series: Part III: AES-based encapsulation of<br />

802.11 data. Intel Corporation.<br />

[33] J.Walker. Unsafe at any key size: an analisys of the WEP encapsulation.<br />

IEEE 802.11 doc, 00 − 362r0, 2000.<br />

[34] N.Cam-Winget J.Walker. Motions to resolve comments on AES<br />

algorithms. IEEE 802.11 doc, 01 − 382r0, 2001.<br />

[35] T.Karygiannis L.Owens. Wireless Network Security: 802.11, Blootooth<br />

and Handheld Devices. NIST National Institute of Standards and<br />

Technology, special publication 800-48 e<strong>di</strong>tion.<br />

[36] Mascella. http://www.apav.it/mascella/in<strong>di</strong>ce.htm, 2003. Dispense<br />

del Corso <strong>di</strong> Sistemi <strong>di</strong> Elaborazione delle Informazioni.<br />

[37] M.Benvegnù. Panoramica sulle reti wireless e standard 802.11.<br />

Università <strong>degli</strong> <strong>Stu<strong>di</strong></strong> <strong>di</strong> Padova, A.A.2002/2003.<br />

[38] M.D.Yacoub. Wireless Technology - Protocols, Standards, and<br />

Techniques. CRC Press, 2002.<br />

[39] M.Klein. Executive briefing: Wireless network security. Interlink<br />

Networks Inc., 2003.<br />

[40] R.Finlayson T.Mann J.Mogul M.Theimer. “A reverse address resolution<br />

protocol”. RFC 903, STD 38, June 1984.<br />

201


BIBLIOGRAFIA<br />

[41] T.Thomas M.Birkner A.Brown C.Riddock M.Zimmerman. Network<br />

Security First-Step. Mondadori Informatica. A.Mondadori, Gennaio<br />

2005.<br />

[42] D.Whiting R.Housley N.Ferguson. AES encryption and authentication<br />

using CTR mode and CBC-MAC. IEEE 802.11 doc, 02 − 001r1, 2002.<br />

[43] D.Whiting R.Housley N.Ferguson. “Counter with CBC-MAC (CCM)”.<br />

RFC 3610, September 2003.<br />

[44] C.Barnes T.Bautts D.Lloyd E.Ouellet J.Posluns D.M.Zendzian<br />

N.O’Farrell. Hack Proofing your Wireless Network. Syngress Publishing<br />

Inc., 2002.<br />

[45] Y.S.Kang K.H.Oh B.H.Chung K.Chung D.H. Nyang. Analysis and<br />

countermeasure on vulnerability of WPA key exchange mechanism.<br />

ICOIN 2004 LNCS 3090, pages 915–924, 2004.<br />

[46] P.Gralla. How the Internet Works. Mondadori Informatica.<br />

A.Mondadori, 7th e<strong>di</strong>tion, Novembre 2006.<br />

[47] P.McCann. “Mobile IPv6 fast handovers for 802.11 networks”. RFC<br />

4260, November 2005.<br />

[48] R.Prakash R.Baldoni. Architecture for group communication in mobile<br />

systems. Symposium on Reliable Distributed Systems, 1998.<br />

[49] M.Stamp R.M.Low. Applied Cryptoanalysis - Breacking Ciphers in the<br />

Real World. John Wiley & Sons Inc., 2007.<br />

[50] R.Rivest. “The MD5 message-<strong>di</strong>gest algorithm”. RFC 1321, April 1992.<br />

[51] S.Fresta. L’insicurezza della standard IEEE 802.11. GNU Free<br />

Documentation License, 2007.<br />

[52] M.Conti S.Giordano. Special issue on mobile ad hoc networking. Cluster<br />

Computing Journal, 2002.<br />

[53] T.Alexander. Optimizing and Testing WLANs. Elsevier Inc., 2007.<br />

[54] T.G.Zimmerman. Wireless network devices: a new para<strong>di</strong>gm for<br />

computing and communication. IBM Systems Journal, (38), 1999.<br />

[55] P.Rogaway M.Bellare J.Black T.Krovetz. OCB mode.<br />

http://www.cs.ucdavis.edu/rogaway/ocb, 2002.<br />

[56] T.S.Rappaport. Wireless Communications: principles and practice.<br />

Upper Saddle River, 2002.<br />

202


BIBLIOGRAFIA<br />

[57] W.Odom. Computer Networking First-Step. Mondadori Informatica.<br />

A.Mondadori, Ottobre 2004.<br />

[58] W.Simpson. “The point-to-point protocol (PPP)”. RFC 1661,<br />

December 1993.<br />

[59] W.Stallings. Crittografia e sicurezza delle reti. Mc Graw Hill, 2004.<br />

[60] J.C.Chen Y.P.Wang. Extensible authentication protocol (EAP) and<br />

IEEE802.11x: Tutorial and empirical experience. IEEE Ra<strong>di</strong>o<br />

Communications, December 2005.<br />

203


Elenco delle figure<br />

1.1 Segnale <strong>di</strong>gitale . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.2 Modalità comunicazione . . . . . . . . . . . . . . . . . . . . . 6<br />

1.3 Segnale reale ed ideale . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.4 Onda sinusoidale . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

1.5 Modulazione d’ampiezza . . . . . . . . . . . . . . . . . . . . . 8<br />

1.6 Modulazione <strong>di</strong> frequenza . . . . . . . . . . . . . . . . . . . . 8<br />

1.7 Modulazione <strong>di</strong> fase . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.8 Schema <strong>di</strong> collegamento dei modem . . . . . . . . . . . . . . . 9<br />

1.9 Datagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

1.10 Circuito virtuale . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

1.11 Multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

1.12 Frequency Division Multiplexing . . . . . . . . . . . . . . . . 17<br />

1.13 Time Division Multiplexing . . . . . . . . . . . . . . . . . . . 17<br />

1.14 Comportamento <strong>di</strong> una rete al variare del traffico in ingresso<br />

per intervalli temporali . . . . . . . . . . . . . . . . . . . . . . 20<br />

1.15 Struttura <strong>di</strong> collegamento <strong>di</strong> rete a livelli . . . . . . . . . . . . 21<br />

1.16 Funzionamento del software <strong>di</strong> rete . . . . . . . . . . . . . . . 23<br />

1.17 Automatic Repeat-Request . . . . . . . . . . . . . . . . . . . 29<br />

1.18 Sli<strong>di</strong>ng window . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

1.19 Corrispondenza struttura <strong>di</strong> rete - livelli OSI . . . . . . . . . 32<br />

1.20 Principali campi <strong>di</strong> un frame . . . . . . . . . . . . . . . . . . 33<br />

1.21 Principali campi <strong>di</strong> un frame LLC . . . . . . . . . . . . . . . 33<br />

1.22 Campi frame 802.3 . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

1.23 Campi frame Token Ring . . . . . . . . . . . . . . . . . . . . 37<br />

1.24 Cammino minimo tra i e k . . . . . . . . . . . . . . . . . . . 41<br />

1.25 Reti <strong>di</strong> router multiprotocollo . . . . . . . . . . . . . . . . . . 44<br />

1.26 Tunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

1.27 Mappatura livelli TCP/IP - OSI . . . . . . . . . . . . . . . . 50<br />

1.28 Incapsulamento dati TCP/IP . . . . . . . . . . . . . . . . . . 52<br />

1.29 Struttura Internet . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

205


ELENCO DELLE FIGURE<br />

1.30 Struttura frame IPv4 . . . . . . . . . . . . . . . . . . . . . . . 54<br />

1.31 Incapsulamento datagram IP . . . . . . . . . . . . . . . . . . 54<br />

1.32 Frammentazione datagram IP . . . . . . . . . . . . . . . . . . 55<br />

1.33 Composizione in<strong>di</strong>rizzi IP . . . . . . . . . . . . . . . . . . . . 57<br />

1.34 Subnet addressing . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

1.35 Struttura frame TCP . . . . . . . . . . . . . . . . . . . . . . . 64<br />

2.1 Classificazione topologica delle reti wireless . . . . . . . . . . 70<br />

2.2 Rete IBBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

2.3 Caratteristiche fisiche dei protocolli 802.11 . . . . . . . . . . . 79<br />

2.4 Problema della stazione nascosta . . . . . . . . . . . . . . . . 81<br />

2.5 Problema della stazione esposta . . . . . . . . . . . . . . . . . 81<br />

2.6 Funzionamento CSMA/CA . . . . . . . . . . . . . . . . . . . 83<br />

2.7 Fragment burst nel protocollo DCF . . . . . . . . . . . . . . . 84<br />

2.8 Intervalli temporali . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

2.9 Struttura Data frame . . . . . . . . . . . . . . . . . . . . . . . 86<br />

2.10 Sud<strong>di</strong>visione campo “Controllo” del Data frame . . . . . . . . 86<br />

2.11 Struttura Control frame . . . . . . . . . . . . . . . . . . . . . 87<br />

3.1 Fase <strong>di</strong> co<strong>di</strong>fica WEP . . . . . . . . . . . . . . . . . . . . . . 91<br />

3.2 Fase <strong>di</strong> deco<strong>di</strong>fica WEP . . . . . . . . . . . . . . . . . . . . . 92<br />

3.3 Incapsulamento WPA . . . . . . . . . . . . . . . . . . . . . . 105<br />

3.4 Decapsulamento WPA . . . . . . . . . . . . . . . . . . . . . . 106<br />

4.1 Scambio <strong>di</strong> chiavi nel protocollo 802.1X . . . . . . . . . . . . 119<br />

4.2 Fasi del protocollo EAP . . . . . . . . . . . . . . . . . . . . . 120<br />

4.3 Meto<strong>di</strong> <strong>di</strong> autenticazione EAP . . . . . . . . . . . . . . . . . . 121<br />

4.4 Sequenza <strong>di</strong> messaggi EAP-TLS . . . . . . . . . . . . . . . . . 125<br />

5.1 Valori dell’array k dopo la cattura dell’IV . . . . . . . . . . . 133<br />

5.2 Array <strong>di</strong> lavoro KSA: I iterazione . . . . . . . . . . . . . . . . 133<br />

5.3 Array <strong>di</strong> lavoro KSA: II iterazione . . . . . . . . . . . . . . . 134<br />

5.4 Array <strong>di</strong> lavoro KSA: III iterazione . . . . . . . . . . . . . . . 134<br />

5.5 Array <strong>di</strong> lavoro KSA: IV iterazione . . . . . . . . . . . . . . . 135<br />

5.6 Array <strong>di</strong> lavoro KSA: IV iterazione (∗) . . . . . . . . . . . . . 136<br />

5.7 Array <strong>di</strong> lavoro KSA: IV iterazione (∗∗) . . . . . . . . . . . . 137<br />

5.8 Struttura header SNAP . . . . . . . . . . . . . . . . . . . . . 140<br />

5.9 Struttura header ARP . . . . . . . . . . . . . . . . . . . . . . 142<br />

5.10 Four way handshake . . . . . . . . . . . . . . . . . . . . . . . 149<br />

5.11 Gerarchia chiavi . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

5.12 Schema <strong>di</strong> funzionamento della Key Hash Function . . . . . . 152<br />

6.1 Controllo caricamento NIC . . . . . . . . . . . . . . . . . . . 163<br />

6.2 Kwifimanager radar . . . . . . . . . . . . . . . . . . . . . . . 164<br />

6.3 Mo<strong>di</strong>fica del MAC address . . . . . . . . . . . . . . . . . . . . 165<br />

206


ELENCO DELLE FIGURE<br />

6.4 NIC in “Monitor mode” . . . . . . . . . . . . . . . . . . . . . 165<br />

6.5 Output <strong>di</strong> Airodump . . . . . . . . . . . . . . . . . . . . . . . 166<br />

6.6 Cattura dei pacchetti . . . . . . . . . . . . . . . . . . . . . . . 167<br />

6.7 Aircrack-ng trova la chiave . . . . . . . . . . . . . . . . . . . 168<br />

6.8 Airodump-ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

6.9 Deautenticazione . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

6.10 Analisi pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

6.11 Accesso alla rete WLAN . . . . . . . . . . . . . . . . . . . . . 172<br />

6.12 Autenticazione alla configurazione del router . . . . . . . . . 172<br />

6.13 Verifica della nostra presenza . . . . . . . . . . . . . . . . . . 173<br />

6.14 Accesso al servizio Internet . . . . . . . . . . . . . . . . . . . 174<br />

6.15 Copertura WLAN e punto <strong>di</strong> <strong>attacco</strong> . . . . . . . . . . . . . . 175<br />

6.16 Airodump-ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

6.17 Deautenticazione con Aireply-ng . . . . . . . . . . . . . . . . 179<br />

6.18 Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

6.19 Effetti della caduta <strong>di</strong> rete sul TC . . . . . . . . . . . . . . . 180<br />

6.20 Analisi dei pacchetti con Aircrack-ng . . . . . . . . . . . . . . 181<br />

6.21 Aircrack-ng trova la chiave! . . . . . . . . . . . . . . . . . . . 181<br />

6.22 Inserimento dati autenticazione vittima . . . . . . . . . . . . 182<br />

6.23 Accesso al servizio Internet . . . . . . . . . . . . . . . . . . . 183<br />

8.1 Rilevamenti statistici nella città <strong>di</strong> <strong>Verona</strong> . . . . . . . . . . . 195<br />

8.2 Livelli <strong>di</strong> sicurezza delle reti rilevate . . . . . . . . . . . . . . 196<br />

207


Elenco delle tabelle<br />

1.1 Classificazione geografica delle reti . . . . . . . . . . . . . . . 14<br />

1.2 Struttura <strong>di</strong> rete: modello OSI . . . . . . . . . . . . . . . . . 24<br />

1.3 Comitati IEEE per reti locali . . . . . . . . . . . . . . . . . . 31<br />

1.4 Connection oriented vs Connectionless . . . . . . . . . . . . . 40<br />

1.5 Classi <strong>di</strong> in<strong>di</strong>rizzi IP . . . . . . . . . . . . . . . . . . . . . . . 57<br />

1.6 Porte dei servizi well-know . . . . . . . . . . . . . . . . . . . 63<br />

3.1 Polinomi generatori definiti dal CCITT . . . . . . . . . . . . 93<br />

209

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!