IEEE 802.1x e Wireless LAN
Lo standard IEEE 802.1x é nato soprattutto per sopperire alla mancanza di autenticazione delle reti Wireless, ma i loro creatori hanno esteso il concetto di autenticazione anche per le reti tradizionali. Si pensi ad esempio ad un visitatore che entra nell’azienda e collega il suo portatile ad una presa ethernet: questa persona non deve avere gli stessi diritti di accesso alla rete di un amministratore di sistema. Il sistema 802.1x é un “Port-based access control mechanism”, ovvero un sistema in grado di autenticare un utente collegato ad una determinata porta ethernet.
Al fine di poter identificare e autorizzare l’utente finale IEEE ha scelto di incapsulare su ethernet il protocollo Extensible Autentication Potocol. EAP é un framework di autenticazione inizialmente pensato per il Point-to-Point Protocol (PPP) che supporta differenti schemi di autenticazione. EAP non definisce uno specifico metodo di autenticazione, bensì permette di negoziare il protocollo di autenticazione tra i due interlocutori, ovvero l’utente e il server di autenticazione (tipicamente Radius). Sono stati definiti alcuni schemi di autenticazione EAP, i più famosi dei quali sono: MD5, TLS, TTLS, LEAP, PEAP, SecurID, SIM e AKA. Vediamone alcuni in dettaglio.
- EAP-MD5. Si tratta di un’autenticazione basata su MD5, molto simile al protocollo CHAP, dove un algoritmo di hash one-way viene usato in combinazione ad uno shared secret e un challenge. Il suo uso é sconsigliabile in ambiente Wireless perché gli hash delle password possono essere soggetti ad un attacco di tipo “dictionary attack”. Se un potenziale intruso riesce ad ottenere il challenge e l’hash fornito come riposta, questo può provare a ricavare la password off-line con appositi programmi. Inoltre, EAP-MD5 fornisce solo un’autenticazione del client non verificando la rete a cui ci si sta autenticando. In questo caso é possibile che un potenziale intruso, attraverso l’uso di un falso Access Point, possa redirigere l’utente in una falsa rete e prendere informazioni preziose.
- EAP-TLS. Il Transport Layer Security (TLS) offre un’autenticazione sicura, che sostituisce le password con una autenticazione basata sui certificati digitali X.509. Al contrario di EAP-MD5, EAP-TLS supporta la “mutual authentication”, ovvero sia il client che il server vengono verificati, evitando frodi relative all’inserimento di falsi Access Points. EAP-TLS é un’ottima scelta per la sicurezza dell’autenticazione in 802.1x quando una Public Key Infrastructure (PKI) é già stata adottata. Il grosso svantaggio di EAP-TLS é il costo elevato generato dalla manutenzione di una PKI: essa infatti richiede licenze software, personale qualificato e corsi di formazione. Tra i vari meccanismi EAP, il TLS é lo standard più diffuso per l’autenticazione basata su 802.1x.
- EAP-LEAP. Light EAP (LEAP), chiamato anche Cisco EAP, é una implementazione proprietaria di Cisco che permette la “mutual authentication” e permete di usare username e password come meccanismo di autenticazione. Anche se una buona politica delle password può fare di LEAP un protocollo sicuro, esso é soggetto ad attacchi di tipo “dictionary attack”, così come EAP-MD5. Nonostante LEAP sia un protocollo proprietario di Cisco Systems, la casa di San Francisco si sta orientando verso i protocolli EAP-TLS e EAP-PEAP.
- EAP-TTLS. Tunneled Transport Layer Security (TTLS) é un estensione di EAP-TLS che é stata creata per evitare la necessità di certificati per i client. Come per altri sistemi di autenticazione “tunneling” (PEAP é l’altro attualmente disponibile), TTLS é basato su un autenticazione a due fasi. Nella prima fase un algoritmo assimmetrico basato sulla chiave del server é usato per verificare le credenziali del server e la creazione di un tunnel sicuro. Nella seconda fase, il client viene riconosciuto usando un secondo metodo di autenticazione che verrà fatto passare attraverso il tunnel sicuro (da qui il termine “tunneling”) creato precedentemente. Può essere usato un qualsiasi schema di autenticazione per la seconda fase, sia esso EAP-MD5, EAP-MSCHAPv2 o anche sistemi legacy quali PAP, CHAP, MS-CHAP o MS-CHAPv2.
- EAP-PEAP. Il Protected EAP (PEAP) é un Internet Draft di Cisco, Microsoft e RSA. PEAP é simile al TTLS, in quanto sono gli unici due protocolli EAP di tipo “tunneling”. Come per TTLS, viene creato un tunnel sicuro tra il server e il client in cui viene incapsulata l’autenticazione del client. Al contrario di TTLS, PEAP non supporta i sistemi legacy (PAP, CHAP, ecc…).
Attraverso EAP, lo standard IEEE 802.1x permette la distribuzioni di chiavi WEP attraverso la frame EAPOL-Key: questo tipo di messaggio EAP permette di inviare una o più chiavi WEP al client. Grazie a EAPOL-Key é possibile, su alcuni Access Point, usare chiavi WEP totalmente differenti per ogni sessione, ridimensionando il problema relativo alla derivazione delle chiavi WEP.
IEEE 802.1x é un ottimo protocollo, in quanto risolve problematiche relative all’autenticazione degli utenti e al cambio delle chiavi WEP, tuttavia i problemi relativi alla privacy dei dati inviati via Wireless rimangono. WEP ha una crittografia debole ed é possibile comunque derivare le chiavi su una sessione Wireless di lunga durata, pertanto sarebbe comunque necessaria una crittografia aggiuntiva quale IPSec. Inoltre é sempre possibile mandare pacchetti di disassociazione agli Access Point, falsificando gli header 802.11b.
Come funziona EAP-TLS
Come menzionato precedentemente, EAP-TLS é attualmente lo schema di autenticazione più diffuso per 802.1x/EAP. I componenti che svolgono un ruolo durante l’autenticazione 802.1x sono il supplicant, ovvero il computer dell’utente, l’authenticator (l’Access Point) ed infine l’authentication server, ovvero il RADIUS server. Durante l’autenticazione, sia il supplicant che il RADIUS devono supportare EAP-TLS, mentre l’Access Point deve supportare solamente 802.1x/EAP: l’AP non é a conoscenza del tipo di schema di autenticazione EAP.
Nella figura in basso é illustrato come funziona il processo di autenticazione 802.1x con EAP-TLS. É da notare che sia LEAP che MD5 usano lo stesso processo di autenticazione.
In dettaglio, durante la conversazione EAP, il RADIUS server manda il proprio certificato al client e richiede il certificato del client. Il client valida il certificato del server e risponde con un messaggio EAP contenente il suo certificato. Il client inizia contestualmente anche la negoziazione per la crittografia, ovvero algoritmi di cifratura e compressione. Dopo che il certificato del client viene validato, il server risponde con le specifiche crittografiche della sessione. Nella figura 5.2 viene illustrata in dettaglio questa sequenza.
Derivazione della chiave WEP in EAP-TLS
Durante l’handshake TLS tra client e server, il client genera un pre-master secret che viene crittografato con la chiave pubblica del server e lo manda successivamente al server. Il pre-master secret, dei valori casuali tra client e server e il master secret vengono usati per generare una chiave per la sessione. La pseudo-random function (PRF), che serve per generare la chiave della sessione é definita nel RFC 2246 (TLS), mentre l’RFC 2716 specifica come derivare la chiave della sessione. Successivamente viene riusata la funzione PRF insieme al master secret, congiuntamente a dei valori casuali (del server e del client) e alla stringa relativa al tipo di crittografia EAP proposta dal client per generare le chiavi di sessione, le chiavi Message Authentication Code (MAC) e il vettore di inizializzazione (IV). É importante sottolineare che sia il client che il RADIUS server derivano le chiavi di sessione in modo indipendente, anche se la lunghezza della chiave di sessione é determinata dall’Access Point ed é inviata attraverso un messaggio di tipo EAPOL-Key. La figura sottostante riassume le fasi di derivazione della chiave WEP.
Uso della PRF per derivare le chiavi WEP