Reading Time: 8 minutes

WEP

Il protocollo WEP prevede tre distinte modalità di funzionamento.

Se riservatezza e integrità non sono requisiti fondamentali può essere configurato per non utilizzare alcuna forma di encryption nell’invio di frame contenenti dati.

L’utilizzo degli algoritmi crittografici è in tal caso riservato esclusivamente alla fase iniziale d’autenticazione.

In caso contrario WEP può far ricorso a uno schema di codifica simmetrico con una chiave KWEP a 40 bit o a 104 bit.

WEP prevede l’uso dell’algoritmo RC4 per la codifica bit a bit dei dati da trasferire.

Il processo di codifica WEP può essere così descritto:
per ogni messaggio da trasmettere il primo passo prevede il calcolo di una checksum di 32 bit che viene concatenata al messaggio stesso.

La checksum non è calcolata tramite una funzione di digest crittografica, ed è stata introdotta al solo scopo di poter individuare errori casuali nella trasmissione del messaggio (funzione simile al CRC di molti altri standard IEEE).

Una volta allegata la checksum, il messaggio risultante viene passato al blocco codificatore RC4.

L’algoritmo prevede che venga effettuata una operazione di XOR bit a bit tra il messaggio di ingresso e il materiale crittografico generato a partire da KWEP e da un vettore di inizializzazione denominato IV (initialization vector).

Il materiale crittografico prodotto, denominato keystream, risulta dipendere in maniera complessa esclusivamente da KWEP e IV.

Una volta cifrato il messaggio, il vettore IV viene inserito in chiaro in testa al frame cifrato e il tutto spedito all’altro partecipante.

L’invio del vettore IV è indispensabile al ricevente (che è al corrente di KWEP) di ricostruire lo stesso keystream, e provvedere alla decodifica del frame.

Lo standard RC4 prevede l’uso di una chiave segreta KWEP a 40 bit.

Esistono comunque versioni di WEP che sono dichiarate a 128 bit.

Tali implementazioni in realtà usano un KWEP a 104 bit per guidare il processo di generazione del keystream (il valore 128, riferito anche come indice di robustezza della soluzione, viene raggiunto solo sommando la lunghezza della chiave KWEP al vettore di inizializzazione IV, che sia pur utilizzato per la generazione del keystream, è da ritenersi noto).

A parte questi sottili accorgimenti di marketing, anche per il protocollo WEP vale il principio generale per cui la soluzione crittografica da preferire è quella che prevede la chiave più lunga, in quanto rende eventuali tentativi di attacco per forza bruta più complessi.

Adottare lo schema crittografico a 128 bit, non si traduce automaticamente nel conseguire un livello di sicurezza appropriato alla criticità dei dati.

Occorre ricordare che, esistono numerose vulnerabilità insite nel protocollo WEP che non consentono di usufruire a pieno dei vantaggi computazionali derivanti dall’uso di una chiave più lunga.

Delle lacune attribuite allo standard, la più critica è quella di non prevedere alcun meccanismo per la negoziazione iniziale e la rinegoziazione successiva delle chiavi WEP utilizzate.

Per di più, ogni stazione connessa a uno stesso AP deve essere configurata con la stessa chiave WEP.

Solo negli apparati di recente costruzione è possibile utilizzare chiavi crittografiche distinte per poter realizzare più reti virtuali (VLAN).

La chiave WEP può essere utilizzata anche per l’autenticazione dei partecipanti. La stazione richiedente (supplicant) che implementa il protocollo WEP, può ricorrere a due distinte forme d’autenticazione WEP_based:

  • Open Authentication;
  • Shared key Authentication.

Nel primo caso ogni stazione provvista di chiave WEP è intrinsecamente autenticata dall’access point.

Il richiedente invia un messaggio denominato Authentication Request che viene automaticamente riscontrato positivamente dall’AP tramite invio di un messaggio denominato Authentication Response.

A questo punto, se la chiave WEP condivisa non coincide con quella memorizzata nell’AP, la stazione autenticata non riuscirà di fatto a comunicare con il resto della rete.

I frame trasmessi dalla stazione verranno scartati dall’AP che li riceve, in quanto la checksum non può essere verificata.

I frame trasmessi dall’AP invece non potranno essere decodificati dalla stazione, in quanto questa non dispone della chiave corretta.

Questo approccio impedisce a un soggetto che non conosce la chiave WEP di iniettare messaggi agli altri utenti legittimi ma non impedisce di effettuare altre forme di attacco (probing, Replay Attack).

Nel secondo caso, dopo il messaggio la ricezione di Authentication Request, l’access point trasmette una sfida in chiaro (challenge) che deve essere restituita cifrata dal richiedente (Response) utilizzando la propria chiave WEP.

L’AP decodifica la Response ricevuta e se il risultato della decodifica coincide con la sfida inviata, ritiene conclusa con successo l’autenticazione.

Solo a questo punto l’AP invia un messaggio Authentication Response positivo.

In caso contrario lo stesso messaggio sarà negativo.

Poiché durante la Shared Key Authentication la stazione legittima è chiamata a trasformare bit a bit (utilizzando un keystream derivato da KWEP e da un dato IV) un messaggio trasmesso in chiaro dall’AP, per un attaccante diventa estremamente proficuo raccogliere le informazioni scambiate durante questa fase per ricavarne successivamente il keystream e il vettore IV da cui questa sequenza chiave è stata generata.

Poiché ciascun vettore IV genera un solo keystream di una data lunghezza, dall’intercettazione del Challenge e della Response, l’attaccante può derivare banalmente (applicanto la funzione XOR bit a bit) il keystream.

L’osservazione dell’autenticazione diviene quindi un modo efficace per avviare il collezionamento di keystream validi.

Il numero di keystream validi, derivati dall’osservazione dei messaggi scambiati tra soggetti legittimi durante la fase di autenticazione, può essere accresciuto unendo all’analisi passiva dei messaggi scambiati un attacco attivo di De-Authentication (descritto di seguito).

Purtroppo la soluzione WEP presenta limitazioni e vulnerabilità ben più gravi di quelle fin qui descritte.

Il problema fondamentale del protocollo WEPè associato al riuso della stessa coppia (KWEP, IV). L’algoritmo RC4 è pressochè inviolabile se il keystream ha le caratteristiche di un one time pad.

Purtroppo usando la stessa coppia (KWEP, IV) per produrre due messaggi cifrati distinti, C1 e C2, si viene a creare la possibilità per l’attaccante di ricavare banalmente (C1 XOR C2) = (M1 XOR M2).

Poiché molto spesso i messaggi trasmessi posseggono molteplici elementi ridondanti (intestazioni con parametri ripetuti) o deducibili dal contesto, risulta relativamente semplice per un crittoanalista poter ricavare M1 e M2 a partire dalla conoscenza di (M1 XOR M2).

Per prevenire questa forma di attacco il protocollo WEP prevede di utilizzare un vettore IV diverso per ogni singolo pacchetto trasmesso.

Il problema è che tale protocollo rimane piuttosto vago sulle modalità per scegliere i vettori IV, e sul processo per controllare il loro riutilizzo da parte di una stessa stazione in momenti successivi.

Molti costruttori per semplicità hanno implementato soluzioni wireless nelle quali il vettore IV viene inizializzato a zero ogni volta che il sistema locale viene riavviato, e il valore corrente incrementato di una quantità fissa prestabilita a ogni pacchetto successivo.

Questa scelta implementativa rende i valori di IV bassi più frequenti degli altri.

Inoltre il protocollo definisce che il valore IV deve essere un numero a 24 bit.

Pertanto le possibili combinazioni sono solo 224. Deve quindi essere considerato relativamente frequente il riuso di uno stesso IV, e in caso di una chiave KWEP mantenuta fissa, la generazione della stessa sequenza keystream.

In condizioni di traffico consistenti lo stesso keystream può essere riutilizato anche più volte nell’arco di una singola giornata di operatività dalla stessa stazione.

Poiché per ogni valore di IV ( con KWEP fisso) si ha un diverso keystream, per conservare tutte le informazioni necessarie all’attacco un hacker necessita di una memoria pari a 224 record.

Ipotizzando che ogni messaggio trasmesso possegga la massima lunghezza consentita ai pacchetti su rete cablata (MTU = 1500 byte), questo si traduce nella necessità di disporre di una memoria fissa di almeno 24 GB.

Un requisito tecnologico che non impensierisce sicuramente un attaccante motivato. Una volta memorizzati tutti i possibili keystream, l’attaccante è in grado di decifrare ogni messaggio trasmesso con una data chiave KWEP e/o inserire falsi messaggi nel flusso dati.

Il modo più semplice per popolare il database dei keystream è attendere messaggi cifrati di cui si conosce il corrispondente messaggio in chiaro (cleartext attack).

La raccolta di messaggi cifrati generati a partire da un testo noto può essere indotta dallo stesso attaccante (come risposta a una prestabilita sollecitazione), o può essere il risultato di un ascolto passivo delle informazioni trasferite sul mezzo trasmissivo dall’AP.

È purtroppo molto frequente trovare AP configurati per inviare uno stesso messaggio (di solito frame di natura multicast o broadcast) in due diverse modalità: una in chiaro, per gli utenti wireless crittograficamente non abilitati e una seconda versione cifrata, riservata per una stazione finale che invece prevede l’uso esplicito della crittografia.

Una volta noto un keystream di una data lunghezza N (byte) è inoltre relativamente semplice derivare il keystream di lunghezza pari alla MTU (1500 byte).

Il processo di accrescimento del keystream è composto di più passi.

Per ricavare il keystream di lunghezza N+1 viene generato un frame di tale lunghezza, specificando, quale indirizzo MAC destinazione, quello della scheda di rete di una stazione connessa allo stesso AP utilizzato dall’attaccante (può essere anche il MAC address del PC dell’attaccante).

Per semplicità si ipotizza che il frame trasmesso dall’attaccante contenga un datagramma IP che non è filtrato dall’AP, ma che viene da questo solo verificato e ritrasmesso alla stazione localmente connessa destinataria.

Se il keystream derivato non è valido (28-1 probabilità su 28) l’access point scarterà il messaggio ricevuto e non si assisterà ad alcuna ritrasmissione.

Se il keystream derivato è valido (1 sola probabilità su 28) si assisterà alla ritrasmissione del messaggio via rete wireless.

Anche se tale frame è cifrato con un keystream non noto all’attaccante, egli può dedurre che si tratta del proprio messaggio ritrasmesso analizzando gli indirizzi MAC specificati nell’intestazione.

La cattura, l’accrescimento e la memorizzazione di tutti i keystream è un processo reso possibile dalla limitata lunghezza del vettore IV.

Attacchi di sostituzione e di violazione della data privacy, generati a partire da un set di keystream noti, non sono influenzati dalla particolare lunghezza di KWEP.

Risulta pertanto abbastanza poco proficuo seguire la filosofia, a lungo adottata da molti costruttori, di rendere WEP più affidabile tramite l’introduzione di chiavi comuni più lunghe, mantenendo però inalterato il processo di gestione dei vettori IV.

Per risolvere davvero il problema è indispensabile progettare una soluzione in cui il riuso dello stesso keystream sia impossibile (o per lo meno staticamente impossibile).

Noti infatti tutti i possibili keystream è sufficiente applicare la funzione XOR bit a bit per ricavare il messaggio in chiaro, a partire da un generico testo cifrato.

Questo risultato può essere teoricamente ottenuto in due modi:

  • aumentando considerevolmente la lunghezza del vettore IV (magari aggiungendo la possibilità di ottenere ciascun vettore tramite generazione random) in modo da rendere estremamente improbabile la generazione di uno stesso keystream;
  • rimuovendo una chiave WEP una volta che è esaurito lo spazio di tutti i keystream generabili con quella chiave.

La memorizzazione dell’intero database di keystream non è condizione necessaria per iniettare falsi messaggi nella rete.

Le procedure di controllo previste dallo standard sull’integrità dei messaggi trasmessi possono essere facilmente aggirate anche conoscendo un set ridotto di keystream.

In condizioni standard, ciascuna stazione wireless è configurata solo per scartare un messaggio per il quale non è possibile calcolare una checksum coincidente con quella allegata in coda al messagio ricevuto.

Per superare questo controllo e inserire un singolo messaggio falso sulla rete, la stazione di un hacker ha bisogno di un singolo keystream valido. Noto il keystream FRC4 (KWEP, IV), e il corrispondente vettore IV associato (facilmente determinabile anche senza conoscere la chiave WEP, in quanto trasmesso in chiaro in testa al messaggio prodotto da un utente legittimo), è possibile codificare un messaggio sorgente arbitrario senza che il ricevente dubiti della sua originalità.

Ciò accade perché la decodifica e il calcolo della checksum è funzione del messaggio spedito e della keystream FRC4 (K, IV) utilizzata e non della chiave WEP.

Tale approccio permette all’attaccante di calcolare la checksum e produrre l’ingresso al blocco di codifica RC4, indipendentemente dalla conoscenza di KWEP.

Un attacco per iniezione di messaggi falsi, riutilizzando più volte uno stesso keystream ha molte probabilità di successo a causa dell’assenza di controlli efficaci sull’eventuale riuso di uno stesso vettore IV.

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.