# IEEE 802.1x

IEEE 802.1x è uno standard IEEE basato sul controllo delle porte di accesso alla rete LAN e MAN. Fa parte dell'insieme di standard IEEE 802. Fornisce un meccanismo di autenticazione ai dispositivi che vogliono collegarsi tramite uno switch o un access point wifi ad una rete LAN o WLAN, stabilendo un collegamento punto a punto e impedendo collegamenti non autorizzati alla rete locale. Viene utilizzato dalle reti locali wireless per gestire le connessioni agli access point.
IEEE 802.1X si basa su EAP, (Extensible Authentication Protocol RFC 2284) incapsulando lo standard IEEE 802, detto anche protocollo “EAP over LAN” o EAPOL. In origine, EAPOL era stato concepito per IEEE 802.3 Ethernet in 802.1X-2001 ma il suo utilizzo è stato poi allargato ad altre tecnologie IEEE 802 LAN, come IEEE 802.11 wireless e Fiber Distributed Data Interface (ISO 9314-2) in 802.1X-2004. Il protocollo EAPOL è stato anche modificato per l'utilizzo con IEEE 802.1AE (“MACsec”) e IEEE 802.1AR (Secure Device Identity, DevID), in 802.1X-2010, per supportare i servizi identificativi e, nel caso, di criptaggio punto a punto sul segmento della rete locale LAN.
L'802.1x è oramai supportato dalla maggioranza dei nuovi switch e può effettuare l'autenticazione in congiunzione con un programma installato sul computer, supplicant, eliminando la possibilità di un accesso non autorizzato tramite collegamento al livello fisico della rete.
Molti produttori stanno implementando il protocollo 802.1x negli access point wireless per risolvere le insicurezze del protocollo WEP (vedi 802.11i); infatti i moderni metodi EAP sono in grado di fornire un meccanismo di autenticazione sicura e negoziare una chiave privata sicura (PMK) tra il client e l'access point o Network Access Server (NAS) che possono poi essere utilizzati per una sessione di crittografia wireless utilizzando TKIP o CCMP (basata su AES). Normalmente, l'autenticazione è fatta da una terza parte, come un server RADIUS. Questo fornisce l'autenticazione del client o l'autenticazione forte mutua.

## Quadro generale

L'autenticazione tramite 802.1X coinvolge tre attori principali: un supplicant, un authenticator un authentication server. Il supplicant è un dispositivo client (come ad esempio un laptop) che desidera connettersi alla rete LAN/WLAN. Il termine supplicant è anche usato in modo intercambiabile in riferimento al software in esecuzione sul client che fornisce le proprie credenziali all'autenticatore. L'authenticator è un network device, come un switch Ethernet o un wireless access point. L'authentification server solitamente consiste in un host sul quale è eseguito un software supportante i protocolli RADIUS e EAP.
L'authenticator agisce come una guardia di sicurezza a protezione della rete. Finché la sua identità non è stata validata e autenticata, il supplicant non è autorizzato ad accedere attraverso l'authenticator alla parte protetta della rete. Con l'autenticazione 802.1X, il supplicant fornisce le credenziali (username/password oppure certificato digitale) all'authenticator, che a sua volta le inoltra all'authentication server per la verifica. Se quest'ultimo determina che le credenziali sono valide, al supplicant è permesso l'accesso.

## Dettagli di funzionamento

Porte di rete
802.1X-2001 definisce due porte logiche per una porta autenticata, di cui una è controllata e l'altra no. La porta controllata è gestita dal 802.1X PAE (Port Access Entity), il quale permette o vieta l'ingresso e l'uscita del traffico di rete dalla porta. La porta non controllata è utilizzata dal 802.1X PAE per trasmettere e ricevere i frame EAPOL.
802.1X-2004 definisce le stesse porte per il supplicant: in questo modo, il supplicant che implementa 802.1X-2004 può evitare che vengano usati protocolli di livello superiore nel caso l'autenticazione non fosse completata con successo. Questo diventa particolarmente utile quando viene utilizzato un protocollo EAP che preveda una reciproca autenticazione: il supplicant così può impedire la sottrazione di dati durante la connessione ad un network non protetto.
Procedura di autenticazione
* Initialization Quando viene rilevato un nuovo supplicant, la porta dell'authenticator è attiva e impostata sullo stato “unauthorized”, nel quale solo il traffico 802.1X è consentito. Altro traffico basato su protocolli Internet (TCP e UDP) è respinto.
* Initiation Per avviare la fase di autenticazione, l'authenticator trasmetterà ad intervalli regolari “EAP-Request Identity” frames ad uno specifico indirizzo “Layer 2” sulla rete locale. Il supplicant rimane in ascolto in questo indirizzo e in risposta invia un “EAP-Response Identity” frame, contenente un User ID, con la funzione di identificatore per il supplicant. L'authenticator in seguito incapsula questo ID in un pacchetto “RADIUS Access-Request” e lo inoltra all'authentication server. Anche il supplicant può avviare o riavviare l'autenticazione inviando un “EAPOL-Start” frame all'authenticator, il quale a sua volta risponderà tramite un “EAP-Request Identity” frame.
* Negotiation (“EAP Negotiation”) L'authentication server invia una risposta (incapsulata in un pacchetto “RADIUS Access-Challenge”) all'authenticator, contenente una EAP Request specificante l'EAP Method (ovvero il tipo di authentication EAP che il supplicant dovrebbe utilizzare). L'authenticator incapsula l'EAP Request in un EAPOL frame e lo trasmette al supplicant. A questo punto, il supplicant può cominciare ad usare l'EAP method oppure rispondere con un NAK (Negative Acknowledgement) e successivamente con l'EAP method che può utilizzare.
* Authentication Se l'authentication server e il supplicant concordano l'EAP method, comincia lo scambio di EAP Request e EAP Response (codificate dall'authenticator), finché l'authentication server risponderà con un messaggio “EAP-Success” (incapsulato in un pacchetto RADIUS Access-Accept) o con un messaggio “EAP-Failure” (incapsulato in un pacchetto RADIUS Access-Rejected). Se l'autenticazione ha successo, l'authenticator imposta la porta sullo stato “authorized” permettendo il traffico; se l'autenticazione non ha successo, la porta rimane sullo stato “unauthorized”. Quando il supplicant esegue il logoff invia un messaggio “EAPOL-Logoff” all'authenticator, il quale di conseguenza imposta la porta sullo stato “unauthorized”, bloccando ancora una volta tutto il traffico che non sia EAP.
Perché viene chiamata autenticazione basata sulle porte? L'autenticatore ha a che fare con porte controllate e non controllate. Entrambi i tipi di porta sono entità logiche (porte virtuali), ma utilizzano la medesima connessione fisica alla LAN. Prima dell'autenticazione, è aperta soltanto la porta non controllata. L'unico traffico consentito è EAPOL. Dopo che il supplicant è stato autenticato, viene aperta la porta controllata, e garantito l'accesso alle risorse. 802.1x non fornisce dunque alcuna autenticazione; tutto ciò che fa è dare all'access point la capacità di inoltrare le credenziali del client al server RADIUS e la relativa risposta verso il client stesso. Questa funzionalità trova compimento implementando i protocolli RADIUS e EAP.
EAPOL opera al livello data link; in un Frame Ethernet è indicato da un valore del campo EtherType di 0x888E.

## Implementazioni
### Supporto per Windows

Microsoft ha implementato il supporto nativo per il protocollo di autenticazione 802.1x in Windows XP e per tutte le successive versioni. Windows 2000 include il supporto con l'ultimo aggiornamento. Nelle versioni più recenti è presente un software client separato, ma anche i driver della scheda di rete hanno supporto per 802.1X.
A seguito di una fallita richiesta di autenticazione, Windows è impostato in default per rispondere solo dopo 20 minuti alla richiesta successiva e ciò può causare alcuni inconvenienti al client. Il periodo di blocco può essere configurato mediante il valore del BlockTime nel registro. Nel caso di Windows XP SP3 e Windows Vista SP2 per la configurazione è richiesto un hotfix. I certificati wildcard server non sono supportati dal EAPhost, il componente Windows che fornisce assistenza EAP nel sistema operativo.
Un problema noto dei sistemi operativi Microsoft da Windows XP a Windows 7 è l'autenticazione tramite IP mobile a VLAN, spesso la presenza di più configurazioni sul client, è causa di problemi comportano la connessione alla VLAN sbagliata, un hotfix è disponibile per correggere il problema. Un altro hotfix deve essere scaricato e installato quando un client su Windows XP non può utilizzare l'autenticazione IEEE 802.1X in quanto utilizzatore di PEAP con PEAP-MSCHAPv2 in un dominio.

### Mac OS X

Nel 2008, Mac OS X ha offerto supporto nativo a partire dalla versione 10.3, mentre per i dispositivi Apple mobile dalla versione iOS 2.0.

### Altri sistemi operativi

Linux implementa il protocollo 802.1X per entrambe le reti, sia cablate che wireless. Android lo supporta dal rilascio di 1.6 Donut; Chrome OS da metà del 2011
Un progetto open source conosciuto come Open1X ha prodotto un client denominato Xsupplicant, disponibile attualmente sia per Linux che per Windows. Tra i principali aspetti negativi del client Open1X vi è il fatto che questo non fornisce una comprensibile e esaustiva documentazione per l'utente, oltre al fatto che la maggior parte dei vendor di Linux non fornisce il pacchetto di installazione. Il più diffuso wpa_supplicant può essere usato per connessioni wireless 802.11 e cablate. Entrambe supportano un ampio range di protocolli EAP.
Avenda Systems fornisce un supplicant per Windows, Linux e Mac OS X, oltre ad avere un plugin per Microsoft NAP framework, di cui offre un health check.

### Utilizzi

Eduroam (EDUcation ROAMing) è un servizio internazionale di roaming per personale che lavorano nella ricerca e nell'istruzione, basato su rete wifi, permette gli utenti registrati di utilizzare l'autenticazione 802.1X per un accesso sicuro alle reti, quando visitano istituzioni diverse da quella in cui lavorano.

## Estensioni proprietarie

MAB
Non tutti i dispositivi supportano l'autenticazione tramite 802.1X. Tra questi: stampanti di rete, dispositivi elettronici ethernet-based come sensori ambientali, telecamere e VOIP, per i quali, dovendo essere usati in ambienti a connessione protetta, devono essere forniti meccanismi alternativi per l'autenticazione.
Un'opzione sarebbe quella di disabilitare 802.1X su quella porta ma ciò lascerebbe la porta non protetta e aperta ad un possibile attacco. Un'altra un po' più affidabile consisterebbe nell'utilizzo del MAB. Quando MAB viene configurato in una porta, questa proverà subito a controllare se il dispositivo collegato è compatibile a 802.1X e, in caso negativo, essa proverà a connettersi con il server utilizzando l'indirizzo MAC del dispositivo, username e password. Al fine dell'autenticazione, l'amministratore di rete provvede ad agire sul server RADIUS, aggiungendo gli indirizzi come utenti abilitati o inserendoli in un registro. Molti Ethernet switch offrono questo servizio.

## Vulnerabilità

Nell'estate del 2005, Steve Riley (Microsoft) pubblica un dettagliato articolo sulla vulnerabilità del protocollo 802.1X, riguardante la tecnica di attacco man in the middle. In poche parole, il problema riguarda il fatto che l'atto di autenticazione avviene solo all'inizio della connessione, dopo il quale però è possibile per un attaccante usare la porta se in grado di inserirsi fisicamente tra il computer autenticato e la stessa. Per le reti cablate, Riley suggerisce l'utilizzo di IP sec o una combinazione di IP sec e 802.1X, quali soluzioni più sicure.
I frame di tipo EAPOL-Logoff trasmessi dal supplicant 802.1X sono inviati in chiaro e non contengono dati derivanti dallo scambio di credenziali che ha permesso inizialmente l'autenticazione del client. Essi sono quindi facilmente falsificabili e possono essere usati in un attacco mirato DoS sia su reti cablate che wireless. In un attacco EAPOL-Logoff un terzo attore malintenzionato che ha accesso ad un dispositivo a cui l'autenticatore è collegato manda continuamente EAPOL-Logoff frame alterati dall'indirizzo MAC del dispositivo mirato. Supponendo che il dispositivo mirato desideri completare la fase di autenticazione, l'autenticatore chiude la sessione dell'obiettivo, bloccando così il traffico in ingresso, respingendo l'accesso al network.
La specifica tecnica dell'802.1X-2010 (in cui è confluito poi 802.1af) affronta le vulnerabilità delle specifiche precedenti 802.1X, usando il protocollo MACSec IEEE 802.1AE per criptare i dati tra le porte logiche (eseguite al di sopra della porta fisica) e dispositivi autenticati IEEE 802.1AR (Secure Device Identity / DevID).
Come soluzione temporanea nell'attesa di un'ampia diffusione di queste misure, alcuni fornitori hanno esteso i protocolli 802.1X-2001 e 802.1X-2004, permettendo molteplici sessioni di autenticazione simultanea su una singola porta. Tuttavia, mentre questo impedisce il traffico da dispositivi entranti, dotati di indirizzo MAC non autenticato, la misura non prevede l'arresto di dispositivi autenticati malintenzionati che spiino il traffico e non fornisce protezione contro il MAC spoofing o attacchi EAPOL-Logoff.
L'alternativa fornita dall'IETF è il Protocol for Carrying Authentication for Network Access (PANA), anch'esso supportante EAP, sebbene funzioni a livello 3 utilizzando UDP e quindi non legato all'infrastruttura 802.