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 ...
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