WEP (In)Security

Data: 7 Giugno 2005
Autore: Claudio Bortone

Lo scopo del documento è mostrare le debolezze e le tipologie di attacco possibili su reti WiFi che implementano WEP (Wired Equivalent Privacy).


Indice

1 - Introduzione

2 - Debolezza degli stream cipher

3 - Attacco FMS

4 - Sfruttare la debolezza degli stream cipher

5 - Dizionario di decrittazione

6 - Problemi di CRC

7 - Authentication spoofing

8 - Conclusioni

9 - Bibliografia


1 - Introduzione

Lo standard IEEE802.11 prevede due implementazioni di WEP:

Esistono anche versioni proprietarie con chiavi a 256 bit, ma che sono fuori standard.
La versione estesa rende praticamente impossibile ricavare la chiave attraverso attacchi brute-force.

Gli obiettivi del protocollo WEP sono:

In tutti e tre i casi la sicurezza risiede nella difficolta di ricerca della chiave attraverso attacchi brute-force.
Vedremo che indipendentemente dal tipo di implementazione WEP utilizzata gli obiettivi di sicurezza prefissati non vengono garantiti.


2 - Debolezza degli stream cipher

Ricordiamo che WEP utilizza l'algoritmo di crittazione di tipo stream cipher: l' RC4. Questo tipo di algoritmi operano tramite l'espansione di una chiave "corta" (in WEP è formata dalla concatenazione dell'IV e della shared key) in un flusso infinito di bit pseudo-random (key stream). Lo XOR tra il key stream e ed il messaggio in chiaro (plaintext), effettuato dal trasmettitore, produce il testo cifrato (ciphertext).
Una ben nota debolezza degli algoritmi stream cipher evidenzia che crittando 2 messaggi diversi con lo stesso key stream, dal conseguente ciphertext si possono ricavare facilmente informazioni riguardanti i due messaggi.

Supponiamo che P1 e P2 siano due messaggi in chiaro (plaintext), e che K sia la chiave (keystream) con cui vengono crittografati i due messaggi, ricordando che:



potremmo dedurre che:



ottenendo così lo XOR del plaintext.
Supponendo di conoscere uno dei due plaintext si potremmo ottenere l'altro con un semplice XOR:



Inoltre supponendo di conoscere un plaintext ed il corrispondente ciphertext si può ottenere la chiave di cifratura:



La conoscenza della chiave K permette di effettuare attacchi statistici per il recupero del testo in chiaro.


3 - Attacco FMS

Fluhrer Mantin e Shamir sono stati i primi a dimostrare la vulnerabilità del KSA (key scheduling algorithm) dell'RC4 utilizzato nell'implementazione WEP. Il loro attacco si basa sull'utilizzo del solo primo byte della sequenza pseudo-random prodotto dall'output generator di RC4. L'equazione associata a questo byte è:



Dopo la fase di setup, questo byte dipende unicamente da 3 valori dell'array di stato:



L'attacco consiste nel ricavare informazioni sulla chiave osservando questo valore.
Utilizzando la terminologia di Fluhrer e altri chiameremo resolved il pacchetto che assume il particolare stato in cui "il suo IV è tra quelli che portano l'algoritmo KSA a rilasciare informazioni sulla chiave"
L'attacco è statistico per sua natura, ogni pacchetto resolved ci dà una probabilità del 5% associata all' ipotesi di chiave corretta ed una probabilità di 95% di ipotesi di chiave errata. L'osservazione di un numero sufficiente di pacchetti "resolved" porta sicuramente alla rivelazione della shared key utilizzata da WEP.


4 - Sfruttare la debolezza degli stream cipher

Abbiamo visto, nella sezione 2, che perchè sia possibile sfruttare le debolezze degli stream cipher devono essere soddisfatte almeno 2 condizioni:

Vediamo come sia possibile soddisfare la prima.

Sappiamo che il key stream K utilizzato in WEP è generato dalla concatenazione dell' inizialization vector v e della WEP key k:



quindi K dipende unicamente da v e da k.
Generalmente k è una chiave fissa (viene cambiata raramente dall'amministratore di rete), quindi il key stream effettivamente dipende solamente da v. Inoltre considerando che:

potremmo effettuare una stima sull'intervallo di tempo massimo prima del riutilizzo di un IV:



Ovvero nella versione classica di WEP dovremmo attendere al massimo 5 ore prima di vedere un IV duplicato.
Se questo non bastasse ricordiamo che:

Il malintenzionato, sfruttando queste particolarità, riuscirà ad ottenere pacchetti con lo stesso IV molto prima di cinque ore.

La prima condizione è stata soddisfatta, siamo risusciti a capire quando il key stream viene riutilizzato, vediamo di soddisfare la seconda, cerchiamo di risalire ad un plaintext noto.

Una tecnica potrebbe essere quella di utilizzare il traffico IP, quest'ultimo infatti utilizza pacchetti con header ben noto. Un'altro sistema è quella di sfruttare i messaggi "ricorrenti" di sistemi come:

Una modo più raffinato sfrutta invece l'invio di e-mail di spam, di cui si conosce il contenuto, e che sicuramente non desterebbero allarmi.


5 - Dizionario di decrittazione

Abbiamo visto come ottenere la key stream K a partire da un plaintext P1 e dal suo corrispondente ciphertext C1:



Con questa key stream K si può evidentemente decrittare qualsiasi pacchetto che sia stato crittato lo stesso IV.
E' quindi possibile creare una tabella che metta in relazione un pacchetto con il corrispondente IV la quale nel WEP classico richiederà  uno spazio di:



Il vantaggio nell'utilizzo di questo sistema è nella velocità  di decrittazione dei pacchetti, lo svantaggio invece è nel tempo di necessario alla creazione della tabella completa. Questo approccio è risulta sconveniente nel caso di utilizzo di chiavi WEP di lunghezza maggiore di 40 bit


6 - Problemi di CRC

Il protocollo WEP utilizza un campo di controllo di integrità (o checksum) che dovrebbe assicurare che i pacchetti non vengano modificati durante il transito. Il meccanismo checksum CRC (Ciclic Redundant Code) applicato allo stream cipher utilizzato in WEP, garantisce solo l'integrità di pacchetti che siano stati modificati da errori nel canale e non contro attacchi maliziosi. Vediamo come sfruttare questa debolezza.

Mostriamo come un messaggio possa essere modificato in transito senza che questo venga rilevato, utilizziamo la proprietà di linearità dei checksum CRC:



Ora supponiamo che:

allora otterremo che :



con <P,c(P)> pari alla concatenazione del plaintext con il suo checksum.
E' possibile trovare un nuovo ciphertext C' associato al plaintext P':



con delta scelto arbitrariamente dal malintenzionato; quindi sfruttando la linearità del CRC:



è possibile ottenere C':



Mostriamo ora come il WEP non fornisca un valido controllo di acesso, per fare questo utilizzamo un'altra proprietà del checksum: il checksum WEP è funzione del messaggio.
Un malintenzionato conoscendo un plaintext P e il corrispondente ciphertext C potrebbe inviare un nuovo messaggio P' da lui generato (injection):



il nuovo pacchetto utilizzerà lo stesso IV dell'originale, ma questo non è un problema poiché, come è stato già detto, lo standard non specifica come debbano essere variati gli IV


7 - Authentication spoofing

Descriviamo brevemente il meccanismo di associazione di una stazione mobile ad un access point:

  1. la stazione mobile, all'accensione, invia all'access point una richiesta di autenticazione;
  2. l'access point risponderà  con una stringa random di 128 bit inviata in chiaro (challenge);
  3. la stazione mobile cifrerà  la stringa con la chiave WEP e la reinvierà all'access point;
  4. l'access point verificherà se la stringa ricevuta è stata cifrata con la chiave WEP corretta.

Un malintenzionato sniffando un una sequenza di autenticazione leggittima potrebbe facilmente ricavare una coppia plaintext/ciphertext valida da cui ricavare il corrispondente key stream sufficiente per inviare la risposta corretta al challenge (inviato in chiaro) lanciato dall'access point


8 - Conclusioni

Riprendendo lo schema che descrive gli obiettivi di sicurezza del protocollo WEP riportato nella sezione 1, alla luce di quando detto nel presente documento, notiamo che :

  1. confidenzialità: con la conoscenza della shared key e tramite il dizionario di decrittazione, il messaggio scambiato tra 2 interlocutori non è segreto;
  2. autenticazione: il meccanismo di authentication spoofing permette l'autenticazione di qualsiasi malintenzionato;
  3. integrità dei dati: i problemi relativi al CRC permettono la contraffazione e l'inserimento di pacchetti all'interno della rete in modo leggittimo.

e quindi che il protocollo WEP non è sufficiente per garantire la sicurezza di una rete WiFi.


9 - Bibliografia

Nikita Borisov, Ian Goldberg, David Wagner
- Intercepting Mobile Communications: The Insecurity of 802.11 -

Scott Fluhrer, Itsik Mantin, Adi Shamir
- Weaknesses in the Key Scheduling Algorithm of RC4 -

Adam Subblefield, John Ioannidis, Aviel D. Rubin
- Using the Fluhrer, Mantin and Shamir Attack to Break WEP -