[[PageOutline(1-6)]] = IEEE 802.11 - Autenticazione e privacy = == Servizio di autenticazione == Il concetto di autenticazione permette di stabilire un rapporto fidato grazie al mutuo riconoscimento fra due stazioni (e.g. fra due STA all'interno di un BSS indipendente o fra una STA e un AP in un BSS ad infrastruttura). Lo standard 802.11, nella versione del 1999, definisce due differenti sottotipi di autenticazione disponibili alle stazioni: * a '''sistema aperto''' (''open system''); * a '''chiave condivisa''' (''shared key''). La stazione, in relazione alle disponibilita' della sua stessa implementazione e della rete di riferimento, adotta uno dei due sottotipi specificandolo nell'attributo interno `authenticationType`. Dal momento che il sottotipo di autenticazione necessita di essere comune alle due parti, esso deve essere palesato nel corpo del ''frame'' di gestione dedicato a questo servizio. === Autenticazione a sistema aperto === L'autenticazione a sistema aperto (''open system'') e' basata sull'algoritmo di autenticazione piu' semplice tra quelli disponibili: l'algoritmo nullo. L'algoritmo consta di un semplice scambio di ''frame'' fra le due parti: prima il richiedente trasmette la domanda d'autenticazione specificando il proprio identificativo, l'altra stazione, poi, rispondera' aggiungendo al ''frame'' ricevuto l'esito della richiesta. Se il processo va a buon fine le due STA saranno reciprocamente autenticate. === Autenticazione a chiave condivisa === L'autenticazione a chiave condivisa (''shared key'') utilizza come prova del riconoscimento fra STA la conoscenza di una chiave segreta la cui distribuzione avviene tramite canali sicuri. La scelta della chiave e dei canali attraverso i quali distribuirla non rientra fra gli scopi dello standard 802.11. La segretezza della chiave deve essere protetta e non viene quindi scambiata mai in chiaro durante il processo di autenticazione; inoltre viene custodita nel livello MAC in un attributo della MIB, accessibile dall'esterno in sola scrittura. Questo sottotipo di autenticazione sfrutta la crittografia offerta da WEP per far si' che due STA possano dimostrare vicendevolmente la conoscenza della chiave; lo standard impone quindi l'implementazione di WEP alle stazioni che intendano fare uso di questo meccanismo. Il processo di autenticazione avviene tramite gli scambi di ''frame'' descritti di seguito: Durante il processo di autenticazione tra due stazioni vengono inviati un challenge e un encrypted challenge e questo processo e' diviso in quattro fasi (un frame inviato per ogni fase): 1. il richiedente invia la domanda di autenticazione con i relativi dettagli; 2. il rispondente risponde con una "sfida" (o ''challenge''), una stringa di cui richiede la cifratura tramite la chiave segreta; 3. il richiedente provvede a rispondere alla sfida cifrando tramite WEP; 4. il rispondente verifica la correttezza della risposta e ne notifica l'esito. La corretta conclusione dello scambio appena descritto rende le due stazioni mutuamente autenticate. == Algoritmo Wired Equivalent Privacy (WEP) == WEP e' un particolare meccanismo utilizzato nelle reti wireless per proteggere gli utenti autorizzati da azioni di ''sniffing'' e intrusione da parte di malintenzionati. Il servizio fornito da WEP si prefigge l'obiettivo di fornire un livello di sicurezza pari alla protezione intrinseca offerta da reti cablate. L'affidabilita' di WEP dipende, in larga misura, dalla sicurezza delle chiavi utilizzate per la cifratura/decifratura dei dati e della loro gestione da parte di entita' esterne. Prima di addentrarsi nei dettagli del funzionamento di WEP, e' importante sottolineare che e': * ragionevolmente sicuro, perche' e' difficile trovare la chiave giusta mediante un attacco di forza bruta, a causa della lunghezza della chiave e dalla frequenza di cambio di chiave. * autonomo, in quanto WEP e' in grado di gestire in autonomia i problemi di sincronismo legati al livello ''data-link'' e alla sua scarsa affidabilita' (''best effort''); * efficiente, in quanto e' implementabile sia via hardware che via software * esportabile, poiche' usa algoritmi crittografici esportabili fuori dai confini statunitensi; * opzionale, visto che la sua implementazione e' facoltativa. === Funzionamento di WEP === WEP e' una sorta di cifrario, nel quale ogni blocco del testo in chiaro viene messo in XOR (bit a bit) con una chiave generata della stessa lunghezza e di origine pseudo-casuale. La chiave segreta viene distribuita tra tutte le stazioni cooperanti da un gestore esterno ed e' utilizzata simmetricamente da WEP sia per il processo di cifratura che di decifratura dei dati. La chiave segreta viene concatenata con un '''vettore di inizializzazione''' (''Initialization Vector'' o IV) e data in pasto come seme a un generatore di numeri pseudo-casuali (''Pseudo Random Number Generator'' o PRNG). Il PRNG (nella fattispecie l'RC4 definito in RSA) genera, ottetto dopo ottetto, una sequenza che costituira' la nuova '''chiave generata'''. Per garantire l'integrita' dei dati cifrati, il testo in chiaro viene concatenato ad un codice di controllo CRC-32 denominato ICV (''Integrity Check Value''). La STA spedisce quindi un ''frame'' il cui corpo contiene: * il vettore di inizializzazione; * il volume dei dati cifrati (tramite XOR con la chiave generata), costituiti dall'MSDU e l'ICV. L'uso del PRNG permette, a partire da chiavi di lunghezza fissata, la generazione di chiavi di lunghezza arbitraria, composte dalla sequenza di numeri pseudo casuali da esso prodotta. La sequenza e', ovviamente, riproducibile dall'altro lato della connessione fidata, a patto di conoscere la chiave segreta e l'IV. [[BR]] Un altro componente di grande rilievo in WEP e' pure l'IV, nonostante debba essere esposto in chiaro. Infatti esso consente non solo di allungare la lunghezza dell'input del PRNG, ma di renderlo mutevole (e meno prevedibile) dal momento che l'IV stesso deve essere cambiato il piu' spesso possibile. Ulteriore affidabilita' di WEP dipende dall'indipendenza fra la chiave segreta e l'IV, scongiurando pertanto la possibilita' di conoscere la prima a partire dal secondo.