WIRELESS SECURITY DI ULTIMA GENERAZIONE Politecnico di Milano Polo Regionale di Como Fondamenti di Crittografia Anno Accademico 2004 - 2005 Autore: Aldo Puglisi 674641 [email: [email protected]] Docenti: Prof. Luca Breveglieri Prof.ssa Alessandra Cherubini Indice Generale Introduzione ........................................................................................................................... 4 1.0 Principi Fondamentali ................................................................................................ 5 1.1 Lo standard IEEE 802.11 ...................................................................................... 6 1.1.1 Cosa rende lo standard differente? ..................................................... 6 1.1.2 802.11b............................................................................................................... 7 1.1.3 802.11g............................................................................................................. 10 1.1.4 802.11a............................................................................................................. 13 1.2 Funzionalità e componenti di rete ................................................................. 17 1.2.2 Tipologie di Reti Wireless ....................................................................... 17 1.2.2 Access Point ................................................................................................... 18 1.3 Wireless security .................................................................................................... 21 1.3.1 Wireless versus Wired ................................................................................. 21 1.3.2 Cosa deve essere protetto?....................................................................... 21 1.3.3 Requisiti di sicurezza.................................................................................... 22 2.0 Opzioni di Sicurezza.................................................................................................. 25 2.1 Wired Equivalent Privacy (WEP)................................................................. 26 2.1.1 Debolezze di WEP........................................................................................ 28 2.2 802.11i...................................................................................................................... 30 2.2.1 TKIP.................................................................................................................... 31 2.2.2 Framework – 802.1X ................................................................................. 35 2.2.3 Authentication Framework - EAP........................................................ 36 2.2.4 EAP Authentication Methods ................................................................. 37 2.3 Wi-Fi Protected Access (WPA) ..................................................................... 39 2.3.1 Benefici di WPA ............................................................................................ 39 2.3.2 WPA Deployment Issues ......................................................................... 39 3.0 Advanced Encryption Standard ....................................................................... 40 3.1 Convenzioni............................................................................................................ 41 3.2 Operazioni su campi finiti............................................................................... 43 3.3 Descrizione dell’algoritmo.............................................................................. 48 3.4 Key Schedule ......................................................................................................... 54 3.6 Implementazione software efficiente ...................................................... 56 4.0 Protocolli Wireless basati su AES................................................................... 60 4.1 AES encapsulation data ................................................................................... 61 4.1.1 Modes of operation..................................................................................... 61 4.1.2 802.11 Encapsulations based on AES............................................... 66 4.2 Confronto tra Encapsulations data................................................................ 72 4.2.1 Data Authenticity............................................................................................ 72 4.2.2 Packet sequence space size...................................................................... 72 4.2.3 MSDU vs. MPDU ............................................................................................... 73 4.2.4 Performance...................................................................................................... 73 4.2.5 La Situazione dei Brevetti .......................................................................... 73 4.3 Wi-Fi Protected Access 2.................................................................................... 74 5.0 Conclusioni e sviluppi futuri ................................................................................. 76 6.0 Riferimenti ..................................................................................................................... 78 Appendice: Acronimi e abbreviazioni....................................................................... 80 _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 2 di 82 _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 3 di 82 Introduzione Negli ultimi anni l’uso dei dispositivi wireless in ambito aziendale e domestico è diventato sempre più comune, infatti, la possibilità di condividere files o connessioni Internet tra computer senza l’uso di scomodi cavi, è stata determinante nel favorire l’ascesa di soluzioni tecnologiche basate sulle onde radio. La strada che ha portato allo sviluppo di reti non è stata priva di problemi, in particolare si è avvertita l’esigenza di garantire sicurezza e confidenzialità a dati che viaggiano su un mezzo trasmissivo, l’aria, che per sua natura non è confinabile. L’istituto IEEE e la Wireless Alliance nell’elaborazione dello standard attualmente in uso, IEEE 802.11, hanno deciso di considerare alcuni aspetti critici delle comunicazioni senza fili, focalizzando la loro attenzione su: - Autenticazione - Integrità dei Dati - Confidenzialità Attualmente sul mercato sono presenti diverse soluzioni atte a garantire sicurezza nelle reti wireless, prime fra tutte quelle basate su algoritmi con bassi costi computazionali, per cercare di limitare il consumo di risorse di periferiche che spesso e volentieri sono installate su dispositivi mobili e quindi alimentati a batteria. Lo scopo di questo documento è quello di analizzare i protocolli di sicurezza wireless, focalizzando l’attenzione su le nuove implementazioni basate su Advanced Encryption Standard (AES). Nel primo Capitolo verrà presentata una panoramica della situazione attuale nell’ambiente wireless, analizzando lo standard IEEE 802.11, e le sue diverse estensioni, ovvero 802.11b, 802.11g e 802.11a. Lo scopo del Capitolo non è dare una descrizione esaustiva dei concetti, ma solo di fornire il background specifico al contesto wireless. Nel secondo Capitolo verranno presentate le opzioni di sicurezza attualmente disponibili per garantire sicurezza nelle WLAN, in particolare verrà analizzato il protocollo WEP e lo standard 802.11i. Lo scopo del capitolo è quello di presentare la nuova specifica 802.11i e tutte le sue componenti. Nel terzo Capitolo verrà analizzato l’algoritmo Rijndael, noto come Advanced Encrytpion Standard [1]. L’esposizione partirà dagli aspetti algebrici necessari per comprendere l’algoritmo, proseguirà con la descrizione dei passaggi compiuti ad ogni iterazione dell’algoritmo [2]. Il capitolo si concluderà con la descrizione di una implementazione software efficiente di Rijndael [4]. Nel quarto Capitolo verranno analizzati i modes of operation di AES. In particolare verranno analizzati i protocolli AES-OCB ed AES-CCM, che permettono di impiegare la cifratura AES sui i frames 802.11. Infine, nell’ultimo Capitolo concluderemo l’approfondimento con le considerazioni e gli sviluppi futuri. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 4 di 82 1.0 Principi Fondamentali In questo capitolo analizzeremo brevemente i concetti che stanno alla base del contesto wireless, focalizzando l’attenzione sulla specifica IEEE 802.11, nelle sue diverse estensioni e sui componenti di rete necessari per implementare una rete senza fili. Come precedentemente sottolineato, lo scopo del capitolo non è quella di dare una descrizione esaustiva delle caratteristiche dello standard, ma è quello di fornire gli elementi necessari per comprendere a fondo il contesto in cui i protocolli di sicurezza vengono impiegati. In seguito analizzeremo i requisiti di sicurezza delle reti WLAN, delineando le differenze tra ambienti wired e wireless, e descrivendo i principali attacchi che possono essere sferrati. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 5 di 82 1.1 Lo standard IEEE 802.11 Il primo tentativo di sviluppare una rete commerciale Wireless LAN è stato presentato da Motorola nell’anno 1990, ma la soluzione presentava numerose problematiche: interferenze, un basso data rate, frequenze radio proprietarie e costi molto alti. Nello stesso anno l’IEEE (Institute of Electrical and Electronics Engineers) iniziava un progetto di standardizzazione con lo scopo di creare una specifica per reti senza fili. La fase di progettazione si concluse nel 1997, quando IEEE creò il primo standard per WLAN, chiamato IEEE 802.11, dal nome del gruppo designato al suo sviluppo, il quale definiva un Medium Access Control (MAC) e tre Physical Layer (PHY) per connessioni wireless (Infrared, Frequency Hoping Spread Spectrum Radio e Direct Sequence Spread Spectrum Radio). Lo schema sottostante descrive i livelli fisici definiti per 802.11. Data Link Layer PHY Layer Medium Access Control FHSS DSSS IR Benché lo standard abbia segnato una svolta nel campo wireless, esso supportava un data rate massimo di 2 Mbps, troppo poco per molte applicazioni. Per cercare di risolvere questo problema, in seguito furono aggiunte delle estensioni con lo scopo di supportare data rates più alti: 802.11b, 802.11a e 802.11g. In seguito analizzeremo le principali caratteristiche delle estensioni di 802.11, con riferimento alle tecnologie chiave che maggiormente influenzano le differenti tra le diverse specifiche. 1.1.1 Cosa rende lo standard differente? Per mantenere la compatibilità tra i dispositivi e cercare di massimizzare il riuso delle tecnologie, le modifiche, con ciascuna delle nuove estensioni, sono state apportate principalmente agli strati fisici (PHY) della specifica 802.11. Dunque, alti trasmission rates sono stati accompagnati dall’utilizzo di efficienti tecnologie di trasmissione, e dall’uso di efficienti tecniche di signal encoding. La Tabella 1.1 mostra le tecnologie di encoding e trasmissione utilizzate ad ogni trasmission rates delle diverse estensioni di 802.11. In particolare, le tecniche di modulazione introdotte nei diversi standard sono sostanzialmente tre: CCK, PBCC OFDM. Nelle sezioni successive verranno presentati ulteriori dettagli e verrà spiegato come queste modifiche influiscano positivamente sulle diverse specifiche. Rate (Mbps) Encoding 802.11b Obbligatorio 1 DBPSK 2 DQPSK 5.5 DBPSK 6 BPSK 9 BPSK BarkerDSSS BarkerDSSS CCK DSSS Opzionale PBCC 802.11g Obbligatorio BarkerDSSS BarkerDSSS CCK DSSS OFDM Opzionale 802.11a Obbligatorio Opzionale PBCC CCKOFDM OFDM, OFDM OFDM _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 6 di 82 CCKOFDM 11 DQPSK 12 QPSK 18 QPSK 22 8PSK 24 16 QAM 33 8PSK 36 16 QAM 48 64 QAM 54 64 QAM CCK DSSS PBCC CCK DSSS OFDM OFDM PBCC CCKOFDM OFDM, CCKOFDM PBCC CCKOFDM PBCC OFDM, CCKOFDM OFDM, CCKOFDM OFDM, CCKOFDM OFDM OFDM OFDM OFDM OFDM OFDM Tabella 1.1 – Tecniche di encoding e modulazione degli standard 802.11 1.1.2 802.11b Nel 1999 un gruppo di lavoro dell’IEEE ha presentato lo standard 802.11b, una evoluzione di 802.11, in modo particolare una estensione High Rate del livello fisico DSSS dalle velocità 1 o 2Mbps alle 5.5 o 11Mbps nel nuovo standard. L’obbiettivo principale era quello di avvicinare la velocità di trasmissione a quella via cavo mantenendo la compatibilità con la tecnologia wireless già esistente. Sostanzialmente si dovevano mantenere la stessa banda (80MHz) a 2.4GHz, la stessa occupazione spettrale e lo stesso formato del frame DSSS. • • Vantaggi di 802.11b – costi bassi; raggio d’azione ampio e difficilmente ostacolato. Svantaggi di 802.11b – velocità massima relativamente bassa; supporta pochi utenti simultanei; altre apparecchiature possono provocare interferenze. La Tabella 1.2 le principali caratteristiche dello standard, che verranno approfondite nei paragrafi seguenti. Caratteristica Radio Technology (Bandwidth Utilization Mode) Modulation Noise Sensing Technology Media Access Method Frequency Band Supported Rates Channels Descrizione Obbligatorio: DSSS, FHSS, IR Obbligatorio CCK (Complementary Code Keying) Opzionale PBCC (Packet Binary Convolutional Code) Clear Channel Assessment (CCA) capability Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) 2400 ~ 2483.5 MHz per U.S., Canada, e ETSI 2400 ~ 2497MHz per Giappone 1, 2, 5.5 e 11 Mbps 1-11 U.S., Canada 1-13 ETSI _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 7 di 82 1-14 Giappone 10-11 Spagna 10-13 - Francia Indoors: 75-100 ft. Outdoors: ~ 1,000 ft. Range Tabella 1.2 – Caratteristiche base di 802.11b 1.1.2.1 Tecniche di modulazione Per aumentare la velocità di trasmissione è stato introdotto un tipo diverso di modulazione chiamata CCK (Complementary Code Keying) che, al posto della sequenza di 11 chip (Barker chipping code) utilizzata nel DSSS, si serve di una sequenza di 8 chip con un chipping rata di 11Mchip/s. La codifica CCK a 11Mbit/s non usa una sequenza pseudo noise (PN) statica, bensì calcola una differente sequenza di spreading basandosi sui dati da trasmettere. I dati vengono suddivisi in simboli di 8 bit sui quali vengono generate le sequenze PN su 8 chip, ogni chip viene poi mappato su una costellazione DQPSK ed infine trasmesso. Lo standard 802.11b definisce anche un'altra tecnica di modulazione, conosciuta come Packet Binary Convolutional Coding (PBCC), proposto da Texas Instruments e largamente sponsorizzata, ma infine definita come opzionale. 1.1.2.2 Canali Lo standard 802.11b lavora attorno ad una banda di 2.4 GHz ISM (Industrial Scientific e Medical). Gli 80 MHz disponibili sono suddivisi in 14 canali. Domini Regolatori governano i canali utilizzati nei differenti paesi per le comunicazioni 802.11b. La Tabella 1.3 riassume i canali consentiti per ogni dominio regolatore. Dominio Regolatore U.S. (FCC)/Canada (IC) Europa (ETSI) eccetto Francia e Spagna Francia Spagna Giappone (MKK) Canali Consentiti 1-11 in 2.412 - 2.462 GHz 1-13 in 2.412 - 2.472 GHz 10-13 in 2.457 - 2.472 GHz 10-11 in 2.457 2.462 14 in 2.484 GHz Tabella 1.3 – Canali dei domini regolatori Canali adiacenti sono separati da soli 5 MHz e la maggior parte dell’energia di ogni canale misura, come da progetto, una banda di 22 MHz. Questo significa che esistono delle interferenze tra i canali. La Figura 2.1 mostra che questa allocazione dei canali permette di avere solo tre canali non sovrapposti. Ad esempio per gli Stati Uniti questi canali non sovrapposti sono 1, 6 e 11. Per l’Europa, causa i canali aggiuntivi (12 e 13), 1, 7 e 13 sono le locazioni migliori per i canali non sovrapposti. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 8 di 82 Figura 1.1 – Locazioni canali USA La Figura 4.2 mostra le locazioni migliori per i canali non sovrapposti in Europa. Figura 1.2 – Locazioni canali Europa 1.1.2.3 Trasmission Rates 802.11b aggiunge due nuovi rates operativi alla specifica originale 802.11, 5.5 Mbps e 11 Mbps. Come precedentemente citato, alti trasmission rates sono ottenuti utilizzando la tecnologia di trasmissione Height Rate DSSS (HR/DS) e la modulazione CCK. La specifica supporta inoltre il dynamic rate switching con l’obiettivo di migliorare le prestazioni. L’algoritmo per l’implementazione del rate switching è al di fuori dello scopo dello standard, ma in generale l’idea di base è che quando il segnale degrada o a causa della lunga distanza tra client wireless e Access Point (AP) o a causa di rumore, il trasmission rate decade, ma i dispositivi continuano a comunicare. A livello fisico, lunghe onde viaggeranno ulteriori distanze, e per questo motivo il decadimento del segnale permette all’ AP di comunicare con il client wireless anche se questo si sta allontanando. Per assicurare coesistenza ed interoperabilità fra i produttori differenti, lo standard definisce un insieme delle regole che devono essere seguite da tutte le stazioni mobili. I trasmission rates possono anche essere selezionati come aspetto della scelta. Per esempio è possibile programmare la maggior parte del AP per negoziare soltanto determinati trasmission rates con i client. Le ragioni che spingono a controllare i rates includono il controllo del range di funzionamento degli AP o per permettere che soltanto determinati data rates accertino il livello specifico di qualità. La Tabella 1.4 mostra un approssimazione delle velocità di trasmissione in funzione della distanza supportate dallo standard 802.11b. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 9 di 82 Rate Max Range 1 Mbps 350 ft. 2 Mbps 250 ft. 5.5 Mbps 180 ft. 11 Mbps 150 ft. Tabella 1.4 – Rate vs Range Approssimato 1.1.2.4 Range Il range 802.11b è fortemente influenzato dall’ambiente circostante. In ambienti chiusi, dove i segnali RF trasmessi dall’AP viaggiano attraverso ostacoli o rimbalzano sugli stessi, la ricezione da parte del client wireless è più bassa che in ambienti aperti. Per ovviare il problema, è possibile installare repeater per rigenerare il segnale ed aumentare il range d’azione dell’AP. La Tabella 1.5 mostra tipici valori per tre diversi ambienti, ambienti aperti, uffici ed ambiente domestico. Si noti che i valori massimi specificati possono essere raggiunti soltanto al basso data rate di 1 Mbps. La tabella mostra inoltre che distanza può essere raggiunta alla velocità di 11 Mbps. Environment/Setting Maximum Range at 1 Mbps Maximum Range at 11 Mbps Ambiente aperto 750-1,000 ft 150-350 ft Ufficio 250-350 ft 100-150 ft Ambiente domestico 125-200 ft 60-80 ft Tabella 1.5 – Range massimi dei diversi ambienti 1.1.3 802.11g IEEE ha approvato lo standard 802.11g nel 2001. 802.11g lavora nella stessa banda di 802.11b, 2.4 GHz. Alti rates sono, ancora una volta, ottenuti effettuando modifiche allo strato PHY (chiamato Extendend Rate Phy – ERP) della specifica iniziale 802.11. Le modifiche più importanti sono quelle apportate alle tecnologie di trasmissione ed alla tecniche di encoding adottate. Per un migliore utilizzo della banda a disposizione, 802.11g usa Orthogonal Frequency Division Multiplexing (OFDM) come tecnica di modulazione, ed aggiunge ulteriori encoding modes (BSK3, QPSK, QPSK1, CCK, 16 QAM, 64 QAM). Con OFDM il messaggio da trasmettere, ad alta velocità, viene suddiviso in diversi sottosegnali a bassa velocità, trasmessi in parallelo tra loro (vengono trasmessi e sono ricevuti in modo simultaneo) e a diverse frequenze. Ogni sottoportante è ortogonale all’altra, in questo modo possono tutte essere ricevute senza interferenze reciproche. Per garantire compatibilità con 802.11b include un protocollo di handshake, che permette alle stazioni 802.11b di determinare quando altre unità stanno per trasmettere i pacchetti usando 802.11g a più alti data rates. Ulteriori informazioni riguardo l’interoperabilità verranno fornite nella prossima sezione. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 10 di 82 • • Vantaggi di 802.11g – velocità massima abbastanza alta; supporta molti utenti simultanei; raggio d’azione più ampio e difficilmente ostacolato; possibilità di implementare reti WLAN multimodo. Svantaggi di 802.11g – costi più alti dell’802.11b; altre apparecchiature possono provocare interferenze. La Tabella 1.6 mostra le principali caratteristiche dello standard 802.11g. Caratteristica Descrizione Radio Technology (Bandwidth Utilization Mode) Obbligatorio - DSSS, FHSS, IR Obbligatorio Noise Sensing Technology CCK per garantire compatibilità 802.11b OFDM per alti data rates Opzionale PBCC (Packet Binary Convolutional Code) Clear Channel Assessment (CCA) capability Media Access Method Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) Modulation Banda Supported Rates Canali Range 2400 ~ 2483.5 MHz per USA, Canada, e ETSI 2400 ~ 2497MHz per Giappone Obbligatorio 1, 2, 5.5, 11, 12, 24 Mbps Opzionale 9, 18, 22, 33, 36, 48, 54 Mbps 1-11 USA, Canada 1-13 ETSI 1-14 Giappone 10-11 Spagna 10-13 - Francia Indoors: 75-100 ft. Outdoors: ~ 1,000 ft. Tabella 1.6 – Caratteristiche base di 802.11g 1.1.3.1 Trasmission Rates 802.11g è stato costruito sulla base dei quattro trasmission rate di 802.11b (1, 2 5.5 e 11) aggiungendo altri dieci nuovi rates. Dei quattordici rates totali, solo sette sono obbligatori (1, 2, 5.5, 11, 6, 12 e 24 Mbps), gli altri sette sono opzionali. Dei sette rates opzionali, due, 22 e 33, usano la modulazione PBCC. Normalmente, la maggior parte dei dispositivi supportano tutti i rates opzionali tranne quelli basati su PBCC. La ragione è da ricercare soprattutto in decisioni di business, orientate al taglio dei costi, da parte dei costruttori di periferiche wireless. 1.1.3.2 Coesistenza di 802.11b e 802.11g Una delle caratteristiche di 802.11g è relativa al supporto di rates superiori rispetto a 802.11b (fino a 54 Mbps). Un’ulteriore caratteristica di 802.11g è quella di essere retro-compatibile con i dispositivi 802.11b. Sfortunatamente, questa retro-compatibilità ha il suo prezzo, infatti per raggiungere elevati trasmission rates, 802.11g ricorre all’uso di OFDM (ed opzionalmente PBCC) combinato con una serie di schemi di encoding dipendenti dal rates. In altre parole, ciò significa che i dispositivi 802.11g, mentre comunicano nella stessa banda di 802.11b, ovvero 2.4 GHz, comunicano in una “lingua” o in un “modo” che i dispositivi 802.11b non capiscono. Quindi, i dispositivi 802.11b, non potendo _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 11 di 82 capire la comunicazione 802.11g, non possono partecipare al handshaking richiesto per permettere a più stazioni comunicare allo stesso tempo. Allora, com’è possibile per un AP 802.11g mantenere simultaneamente la comunicazione con entrambi tipi di clients 802.11b e 802.11g, senza che questi si disturbino a vicenda? La risposta si trova nell’uso di un protocollo di handshake che definito per con lo standard 802.11b, il protocollo RTS/CTS handshake (Request to Send / Clear to Send). Questo handshake è stato sviluppato affinché le stazioni lo usino a loro discrezione quando rilevano un degrado della comunicazione o il mezzo è sovraffollato. Piuttosto che richiedere la ritrasmissione dei pacchetti non ricevuti, la stazione (STA) può ripulire il canale di trasmissione inviando un messaggio RTS all’ Access Point. Se l’AP determina che la STA può trasmettere, invia un messaggio CTS broadcast alla stazione richiedente. Entrambi i messaggi RTS e CTS contengono informazioni riguardo il tempo che il client necessita per trasportare il pacchetto in questione. Tutti i clienti che ricevono il CTS assegnano il canale alla STA richiedente, assicurando di non trasmettere durante il periodo di tempo richiesto. Le stazioni 802.11b sono in grado di capire le richieste RTS/CTS della unit 802.11g perchè questi messaggi sono inviati utilizzando uno schema di modulazione utilizzato nella specifica 802.11b, ovvero CCK. Una volta che una STA 802.11g ha ricevuto il canale, può commutare di nuovo ad OFDM se necessario. Questa interoperabilità genera un overhead tale da diminuire il throughtput del 50% circa. Per cercare di limitare gli effetti negativi del protocollo RTS/CTS è stato allora specificato un secondo metodo per riservare il canale. Questo metodo è chiamato CTS-to-Self e consiste nell’invio di un messaggio CTS soltanto, saltando l’invio del messaggio RTS. Tutte le stazioni che “sentono” questo messaggio si asterranno dal trasmettere, ripulendo il canale. Questo metodo di prenotazione del canale riduce l’overhead, aumentando il throughtput. 1.1.3.3 Canali 802.11g funziona allo stessa banda di 802.11b, 2.4 GHz, e supporta lo stesso numero di canali, 14. Come tale, 802.11g ha le stesse limitazioni di 802.11b, ovvero ha soltanto tre canali non sovrapposti. I canali 1, 2 , 5.5 e 11 sono implementati come nella specifica 802.11b, ovvero con la stessa tecnologia di trasmissione e modulazione. I canali 6, 9, 12, 18, 22, 24, 36, 48 e 54 sono implementati utilizzando OFDM e più efficienti tecniche di encoding. A causa dei vantaggi che ha OFDM rispetto DSSS, questi rates possono essere raggiunti a distanze che sono comparabili con alcuni dei rates più bassi di 802.11b. Per esempio, i 6 Mbps in 802.11g possono essere supportati a distanze superiori che i 2 Mbps in 802.11b. 1.1.3.4 Range Ci sono diversi fattori che influenzano il range di comunicazione tra dispositivi wireless. Alcuni di questi fattori includono l’ostruzione del segnale da parte degli oggetti posti nell’ambiente, rumori in RF, distanza tra AP e client mobile, tasso di trasmissione, tecnologia di trasmissione, radio-input sensitivity e potenza di trasmissione. La maggior parte della letteratura tende ad elencare soltanto una o due range. Questi range generalmente si riferiscono alla distanza massima, indoor e outdoors, in cui l’AP è in grado di comunicare con il dispositivo mobile usando il più basso rate che esso supportati. Sul mercato è possibile trovare dispositivi che specificano range massimi di 600 ft. outdoors ed altri che dicono 1000 ft. Ci si può dunque domandare, qual è il range specificato da 802.11? _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 12 di 82 Lo standard non specifica esattamente la distanza massima per ogni rate supportato. Invece, esso specifica piuttosto la sensibilità del ricevitore e la massima potenza di trasmissione. Inoltre, quando specifica la massima potenza di trasmissione, lo standard 802.11 dice che i dispositivi wireless devono aderire ai requisiti specificati dalle istituzioni regolatrici competenti nei loro rispettivi domini regolatori. Questo significa che non esiste una distanza precisa in cui la comunicazione si arresta o si ha una commutazione di rate. La distanza è influenzata dalla maturità della tecnologia (i dispositivi di prima generazione tendono ad arrivare a distanze minori), dell’ambiente, dalle condizioni imposte dagli enti competenti, ed in alcuni casi dalle modifiche apportate allo standard da parte delle aziende. Una componente che ha contribuito a migliorare le distanze, in attesa che la tecnologia maturasse, è stata la sensibilità del ricevente. La sensibilità del ricevente può significare che la differenza tra 600 e 1000ft varia come annunciato da alcuni prodotti. La tabella 1.7 mostra i rates supportati da 802.11g vs un approssimato massimo range indoor. Le righe in grigio mostrano i i rates originali supportati da 802.11b e le righe bianche i nuovi rates aggiunti nella specifica 802.11g. 1 Mbps Max Indoor Range Approssimato 350 ft. 2 Mbps 250 ft. 5.5 Mbps 180 ft. 6 Mbps 300 ft. 9 Mbps 250 ft. 11 Mbps 150 ft. 12 Mbps 200 ft. 18 Mbps 170 ft. 24 Mbps 140 ft. 36 Mbps 100 ft. 48 Mbps 95 ft. 54 Mbps 90 ft. Rate Tabella 1.7 - 802.11g Rate vs. Max Range Approssimato 1.1.4 802.11a IEEE ha approvato lo standard 802.11a nel 1999. Lo scopo principale era quello di utilizzare una banda poco affollata, e di innalzare i data rates. La modifica principale indotta con 802.11a è stata quella di utilizzare una frequenza (5GHz) non influenzata da telefoni cordless, forni a microonde e da attrezzature industriali, e di supportare un numero maggiore di canali non sovrapposti, 8 contro i 3 supportati da 802.11b e 802.11g, per avere una capacità di rete superiore. Nonostante ciò, 802.11a è stato lento nel guadagnare i consensi del mercato. Uno dei motivi è stata la mancanza di interoperabilità con l’attuale 802.11b causa diverse frequenze di funzionamento, ed il fatto che lo standard 802.11g prometteva interoperabilità con 802.11b e data rates paragonabili con 802.11a. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 13 di 82 • • Vantaggi di 802.11a – velocità massima abbastanza alta; supporta molti utenti simultanei; le frequenze sottoposte a regolamentazione prevengono il rischio di interferenza da parte di altre apparecchiature. Svantaggi di 802.11a – costi più alti dell’802.11b; raggio d’azione limitato a causa del segnale facilmente ostacolabile. La Tabella 1.8 mostra alcune delle caratteristiche principali dello standard 802.11a. Le prossime sezioni forniscono ulteriori dettagli su queste caratteristiche. Caratteristica Descrizione Radio Technology (Bandwidth Utilization Mode) Obbligatorio - DSSS, FHSS, IR Modulation Obbligatorio: OFDM Opzionale: Nessuno Noise Sensing/Media Busy Technology Clear Channel Assessment (CCA) capability Media Access Method Frequenza Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) 5 GHz band - Conforme alle autorità responsabili dei domini regolatori geografici specifici. Rates Supportati Tutti: 6, 9, 12, 18, 24, 36, 48, 54 Obbligatorio: 6, 12, 24 Canali U.S. 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161 Europa 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,116, 120, 124, 128, 132, 136, 140 Giappone 34, 38, 42, 46 Tabella 1.8 – Caratteristiche base di 802.11a 1.1.4.1 Trasmission Rates & Range Lo standard 801.11a supporta alti trasmission rates, da 6Mbps a 54Mbps. L’abilità di raggiungere rates più alti rispetto a 802.11b deriva dall’uso di OFDM, uno dei più efficienti trasmission mode. Tuttavia, l’utilizzo di una banda più elevata in frequenza, ha come conseguenza un range più corto. La Tabella 1.9 mostra i rate supportati ed i rispettivi range approssimati. 6 Mbps Max Indoor Range Approssimato 180 ft. 9 Mbps 165 ft. 12 Mbps 155 ft. 18 Mbps 130 ft. 24 Mbps 120 ft. 36 Mbps 105 ft. 48 Mbps 90 ft. 54 Mbps 60 ft. Rate Tabella 1.9 Rate vs. Max Range Approssimato _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 14 di 82 1.1.4.2 Canali 802.11a I canali definiti per l’uso della specifica 802.11a dipendono dai piani regolatori dei diversi paesi. Ad esempio, negli Stai Uniti, 802.11a utilizza 12 canali, sparsi su tre bande (inferiore, centrale e superiore). 8 canali di questi sono ristretti per uso indoors e 4 (52-64) possono essere utilizzati sia indoors che outdoors. La Tabella 1.10 mostra la distribuzione dei canali per banda negli USA. Dominio Regolatore Banda (GHz) Operating Channel Numbers Frequenza Centrale (MHz) Stati Uniti U-NII banda inferiore (5.15-5.25) 36 40 44 48 5180 5200 5220 5240 Stati Uniti U-NII banda centrale (5.25-5.35) 52 56 60 64 5260 5280 5300 5320 Stati Uniti U-NII banda superiore (5.725-5.835) 149 153 157 161 5745 5765 5785 5805 Tabella 1.10 – Canali Operativi validi negli USA 1.1.4.3 802.11a/bg Throughtput Il throughput è ovviamente un parametro molto importante nell’analisi degli ambienti wireless e non solo. E’ risaputo che avere throughput elevati, significa avere la possibilità di servire un maggior numero di utenti, di offrire servizi migliori e di una certa complessità quali quelli multimediali. E’ chiaro che elevati data rates forniscono elevati throughput. Cosi, 802.11g e 802.11a hanno throughput superiori di 802.11b. Che cosa non può essere chiaro è che ci sono altre parti della specifica che interessano il throughput. La più importante è la retrocompatibilità tra 802.11g e 802.11b. La specifica 802.11g richiede che AP di tipo 802.11g supportino la comunicazione con i client 802.11b. Come citato in precedenza, questo supporto causa una perdita di throughput sia per i client 802.11b che per quelli 802.11g cosi come per gli AP. La Tabella 1.11 mostra i throughput approssimativi che possono essere ottenuti con tutte le tecnologie 802.11, come pure i rendimenti ottenuti da un AP 802.11g mentre funziona in mix-mode usando RTS/CTS e CTS-to-Self packet protection. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 15 di 82 11 6 Throughput come percentuale del Throughput di 802.11b 100% 54 8 133% 54 12 200% 802.11g senza client 802.11b 54 22 367% 802.11a 54 26 430% Data Rate (Mbps) Tecnologia 802.11b 802.11g con client 802.11b usando CTS/RTS protection 802.11g con client 802.11b usando CTS-to-self protection Throughput Approssimato (Mbps) Tabella 1.11 – Confronto del Throughput per 802.11b, 802.11g e 802.11a _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 16 di 82 1.2 Funzionalità e componenti di rete E’ possibile riassumere le aspettative di un utente WLAN come la possibilità di poter accedere ad Internet e di desiderare i benefici aggiunti di un collegamento senza fili. In questa sezione verranno brevemente analizzati gli aspetti tecnici degli ambienti WLAN e le funzionalità che queste tipologie di reti devono offrire per soddisfare le aspettative dell'utente. Verranno inoltre brevemente analizzati i componenti hardware e software della rete necessari a fornire queste funzioni. 1.2.2 Tipologie di Reti Wireless Esistono fondamentalmente due tipologie di reti wireless: A. Ad-hoc o peer-to-peer Consiste di un certo numero di calcolatori ciascuno dotata di scheda di rete wireless. Ogni calcolatore può comunicare direttamente con tutti i altri calcolatori wireless abilitati. I calcolatori possono condividere files e stampanti in questo senso, ma non possono potere accedere alle risorse della wired LAN, a meno che uno dei calcolatori non funga da bridge alla wired LAN usando un software speciale (che è chiamato “bridging”). Come possiamo notare dalla Figura 1.3 ogni computer della rete wireless può comunicare direttamente con gli altri computer. Figura 1.3 – Rete Wireless Ad-hoc B. Access Point Based L’integrazione di una rete wireless con una rete cablata avviene grazie a particolari dispositivi detti Access Point (AP), che fungono da Bridge tra i due diversi tipi di rete. Lo scopo di questi dispositivi è quello di fornire accesso alla rete wireless a client mobili, quali notebook o palmari, garantendo un livello di sicurezza adeguato. Nella prossima sezione analizzeremo le caratteristiche di questa tipologia di dispositivi. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 17 di 82 1.2.2 Access Point Un AP deve essere posizionato in modo tale che la portata utile del segnale possa essere massimizzata, ad esempio utilizzando opportune antenne direzionali che permettono di definire l’angolazione del lobo di radiazione, ed a condizione di specificare l’area di connettività wireless. Tale area prende il nome di cella, e la sua dimensione solitamente varia tra 90 e 150 metri. Per servire aree più grandi occorre installare più Access Point, con un certo grado di sovrapposizione (overlap). 1.2.2.1 Tipologie di Access Point Esistono due tipologie di Access Point: 1. Hardware access points (HAP) Offrono un supporto completo delle principali caratteristiche delle reti senza fili, ma è necessario controllare i requisiti con attenzione. Figura 1.4 – Hardware Access Point 2. Software Access Point Funzionano su un calcolatore dotato di una scheda di rete senza fili della rete come quella usata in una rete ad-hoc o peer-to-peer wireless. Figura 1.5 Software Access Point _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 18 di 82 1.2.2.2 Caratteristiche importanti degli Access Point Questa sezione descrive le caratteristiche e le funzionalità più importanti di un AP da considerare quando si implementa una rete wireless. Lo scopo non è quello di dare una lista esaustiva delle caratteristiche, ma di fornire un background necessario per comprendere i concetti relativi alla sicurezza delle reti wireless. A. Fornire informazioni sullo stato della rete ai client mobili Uno dei servizi che un Access Point deve offrire è quello di mantenere i client informati sullo stato generale della rete senza fili. Per fare ciò, l’AP invia in broadcast sulla rete wireless dei parametri attraverso messaggi chiamati beacon. Lo scopo di questa tipologia di messaggi è quello di semplificare il processo di associazione alla rete da parte degli utenti finali, ovvero determinare a quale rete si possono connettere, e di fornire informazioni sulle caratteristiche della rete stessa (canale in uso, …). Un altro metodo utilizzato per l’associazione dei dispositivi è l’advertising, in cui un AP invia in broadcast un messaggio che include il Service Set Identifier (SSID) della rete (in aggiunta all’informazione inviata con il beacon). L’advertising non è obbligatorio o necessario per stabilire una connessione tra AP e mobile station, ma se non è attivo è necessario che il client conosca lo SSID della rete per potersi connettere. Questo è uno dei più semplici metodi di sicurezza implementabile, benché poco affidabile. B. Rispondere alle richieste di informazione da parte delle Mobile Station La stazione mobile non deve attendere l’AP per pubblicizzare la sua presenza, ma non può connettersi a reti che non sono pubblicizzate. La mobile station può proattivamente prendere informazioni da un AP in uno dei seguenti modi: può trasmettere una richiesta per scoprire qual è la rete 802.11 più vicina o può trasmettere una richiesta per associazione ad un AP specifico. In entrambi i casi, l’AP include le informazioni necessarie riguardo la rete wireless in risposta alla mobile station. C. Privacy e Sicurezza 802.11 può fornire data privacy cifrando i frames prima di trasmetterli sulla rete senza fili. La prima specifica per cifrare i dati in 802.11 è WEP. Usando WEP, l’amministratore di un AP inserisce una chiave, e gli utenti devono programmare la stessa chiave nei client. Una volta che i due sono abbinati, i pacchetti possono essere scambiati. Siccome le chiavi devono essere modificate manualmente, è necessario informare tutti i client ogni qualvolta che la chiave segreta viene cambiata. Nelle prossime sezioni verranno analizzate le problematiche relative a questo approccio e verranno descritte le soluzioni alternative proposte come standard. D. Autenticazione di utenti e dispositivi 802.11 utilizza WEP in due modi: per autenticare i dispositivi e per fornire confidenzialità cifrando i pacchetti di dati. E’ importante capire la distinzione, infatti solitamente si fa confusione su questo aspetto. E’ possibile utilizzare o meno WEP per autenticazione e cifratura dei dati ma esistono dei semplici ruoli: è possibile utilizzare WEP per l’autenticazione solo se viene usato anche per la cifratura. Il contrario non è vero. E’ possibile invece utilizzare WEP per la _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 19 di 82 cifratura e non per l’autenticazione. Nel contesto di 802.11, non utilizzare WEP per l’autenticazione è detto “Open Authentication” mentre utilizzare WEP per l’autenticazione è detto “Pre-shared-key Authentication”. Anche questi aspetti verranno analizzati nella sezione dedicata al protollo WEP. E. Autorizzazione dei dispositivi Autorizzare la mobile station (MS) a connettersi alla rete significa rendere la MS in grado di associarsi con un AP ed inviare e ricevere pacchetti attraverso l’associazione (connessione). Nello standard 802.11, l’autenticazione è richiesta per l’autorizzazione, ed un autorizzazione positiva abilita l’associazione. Nelle reti wireless WEP-enabled, l’autorizzazione è il lavoro dell’AP F. Fornire accesso alla rete locale Una volta che la MS è associata all’AP, essa può inviare e ricevere data frames nella rete wireless. L’AP funge da ponte tra la rete wireless e la rete wired, fornendo l’accesso alle risorse poste nella porzione cablata. 1.2.2 Altri componenti Authentication Authorization and Accounting (AAA) Server Authentication Authorization and Accounting (AAA) Server è un termine generico per identificare un componente di rete che offre questa tipologia di servizi: • Authentication è un processo per identificare un unità (device o user) che intende agganciarsi ad una transazione network-based. L’autenticazione può essere reciproca e può avvenire utilizzando uno dei protocolli di autenticazione quali EAP-TTLS o PEAP. • Authorization è un permesso (enablement) di accesso ad una risorsa specifica una volta che un’unità (device o user) è stata autenticata. Ad esempio, l’authorization può essere implementata abilitando una porta di uno switch, e fornendo quindi accesso ad una risorsa quale database, web services, ... • Accounting si riferisce al tracking dell’utilizzo delle risorse. RADIUS (Remote Authetincation Dial In User Service) è un protocollo standard utilizzato per la comunicazione tra un AAA server ed un AAA agent. Il supporto per questo protocollo è ampliamente disponibile nell’industria. Alcuni AAA server supportano protocolli proprietari, che possono essere più efficienti che RADIUS, ma possono presentare limiti di interoperablità tra i componenti. Authentication Database Questo componente è necessario per autenticare gli utenti che accedono alla rete e per gestire in modo efficiente le credenziali di tutti i clients registrati. Solitamente l’authentication database è gestito dall’authentication server. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 20 di 82 1.3 Wireless security 1.3.1 Wireless versus Wired In una rete wired, il primo metodo di autenticazione è implementato dalle barriere fisiche che un utente deve attraversare per accedere alla rete. Per esempio, è ovvio che un utente che può collegare un computer ad una LAN aziendale all'interno dell’edificio della società debba passare attraverso controlli di identità per avere accesso all’edificio. Tali barriere non sono disponibili in una rete senza fili in cui i segnali possono viaggiare oltre le pareti dell’edificio. E’ stato necessario implementare un meccanismo di sicurezza per custodire una rete Wi-Fi. 802.11 includono una specifica per le reti Wi-Fi che si è evoluta dal relativo primo standard come la Wireless Equivalent Privacy (WEP) all'ultima specifica 802.11i, come Robust Secure Network (RSN). Il resto di questa sezione descrive le caratteristiche principali della sicurezza wireless. Ma in primo luogo, guardiamo che cosa stiamo provando a proteggere. 1.3.2 Cosa deve essere protetto? La sicurezza definita dalla specifica 802.11 indirizza la protezione soltanto verso il link radio di comunicazione tra la mobile station e l’AP. Lo standard 802.11 non specifica la sicurezza di rete oltre l’AP. In seguito viene riportata una breve lista di tipologie di attacchi che possono essere effettuati via rete wireless. Nota che questa non è una lista esaustiva di attacchi, ma soltanto una lista dei più comuni. • Associazione non autorizzata ad un AP, ovvero quando client non appartenenti al contesto in cui la rete è installata (ad es. azienda) si connettono per usufruire impropriamente della banda o, nel caso peggiore per accedere ad informazioni sensibili. Un fenomeno tipico è detto Wardriving, in cui individui dotati di computer portatili e antenna si muovono in auto per la città con lo scopo di connettersi alle reti aziendali, ed utilizzare la banda. • Rogue AP, ovvero Access Point non autorizzati all’interno della rete wireless che possono presentarsi al client come “ufficiali”. Anticipiamo che il framework di autenticazione 802.1X evita questa tipologia di problematiche, imponendo l’autenticazione dell’AP oltre a quella del client, inoltre esistono tools che permettono di monitorare la rete per individuare Rogue AP (ad es. aptools.sourceforge.net). • Man-in-the-middle, ovvero utenti che si pongono tra sorgente e target per catturare informazioni sensibili. • Eavesdropping, ovvero la possibilità da parte di un malintenzionato di intercettare passivamente i segnali radio e decodificare i dati trasmessi. Il tutto utilizzando delle comuni apparecchiature da poche centinaia di euro. Tutte le periferiche wireless devono disporre di componenti hardware in grado di trasmettere e ricevere dati. Le stesse possono essere modificate in modo da intercettare il traffico trasmesso su di un particolare canale o frequenza della rete. Di conseguenza basta che un malintenzionato si trovi nel raggio di copertura del segnale wireless perché gli sia estremamente facile ricevere tutti i dati durante la trasmissione. Questo tipo di attacco è molto pericoloso, basti pensare che in una fase di test è stato possibile catturare dati anche a 16 Km di _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 21 di 82 distanza. La cosa sconvolgente, e che ci deve far riflettere sull’importanza dei sistemi di sicurezza di cui dovremo dotare la nostra rete, è che questo tipo di attacco è quasi impossibile sia da rilevare che da impedire. • Jamming, ovvero la possibilità di creare delle interferenze atte a rendere praticamente inutilizzabile il canale di comunicazione. Inoltre, considerato che queste tecnologie wireless utilizzano frequenze senza licenza, oltre ad attacchi intenzionali, è possibile che queste interruzioni siano causate anche da periferiche che si trovano in casa o in ufficio, come telefoni cordless, sistemi di controllo, forni a microonde... • MAC spoofing, un attacco che consiste nel servirsi illecitamente dell’indirizzo MAC di host illegittimi. Ad esempio, su reti wireless gli host malintenzionati si spacciano per un host legittimo, o per il network access point, per superare meccanismi di controllo degli accessi. È relativamente semplice effettuare lo spoofing degli indirizzi MAC ed esiste una quantità di tools disponibili per lanciare questi attacchi, tra i quali AirJack e FakeAP. • Denial of Service (DoS), un genere di attacco nel quale i cosiddetti pirati (crackers) attivano un numero elevatissimo di false richieste da più macchine allo stesso server consumando le risorse di sistema e di rete del fornitore del servizio. In ambito wireless un attacco DoS può essere messo in atto contro un AP, con l’obiettivo di saturare lo stesso e metterlo fuori uso. La conoscenza di questa tipologie di attacchi aiuta nelle decisioni riguardanti il set-up della rete e della sicurezza. 1.3.3 Requisiti di sicurezza I requisiti primari per una rete sicura includono tra gli altri il controllo degli accessi, il mantenimento della privacy e dell’integrità dei dati, e la protezione contro le tipologie di attacchi noti. Per soddisfare questi requisiti, la rete deve necessariamente fornire tecnologie (hardware e software) che implementano le seguenti funzioni: • • • • • • • Struttura generale per riunire l'esecuzione delle funzioni citate sotto Autenticazione Autorizzazione Confidenzialità Integrità dei dati Gestione delle chiavi Protezione contro le tipologie di attacchi noti: MAC spoofing, man-in-themiddle, … Di seguito verrà data una breve descrizione delle funzionalità sopra citate. 1.3.3.1 Access Control Framework L’access control framework fornisce il “collante” per l’implementazione di tutti gli altri servizi. La specifica originale di WEP non includeva un framework per l’autenticazione e autorizzazione. Con l’avvento dei nuovi protocolli WAP, WAP2, il Task Group 802.11i introdusse l’uso di 802.1X come framework di autenticazione e autorizzazione di tutti _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 22 di 82 gli attori che partecipano alla rete. Il framework 802.1X verrà descritto nelle prossime sezioni. 1.3.3.2 Autenticazione Autenticazione si riferisce alla verifica delle credenziali fornite da un entità che cerca l’autenticazione sulla rete. I metodi di autenticazione utilizzati in un’implementazione di rete dipendono da diversi fattori, quale ad esempio il contesto d’uso della rete (aziendale o pubblico), l’intento della rete nei confronti degli utenti, … Per questo motivo, è necessario un modo per supportare metodi di autenticazione multipli. 802.1X utilizza Extensible Authentication Protocol (EAP) per supportare metodi di autenticazione multipli. EAP ed i metodi di autenticazione verranno analizzati nelle prossime sezioni. 1.3.3.3 Autorizzazione Questa funzione si riferisce alla possibilità di fornire, alla particolare unità autenticata, la possibilità di accedere alla specifica risorsa. 802.1X specifica l’autorizzazione portbased. Una volta che un client autorizzato (laptop o componente di rete) è stato autenticato, vengono abilitate soltanto le porte per accedere a risorse di rete permesse. Meccanismi di accesso elaborati possono essere derivati da queste funzionalità base, utilizzando VLAN-enabled (Virtual LAN) switches. 1.3.3.4 Confidenzialità Questa funzione si riferisce a come tenere segrete le informazioni scambiate tra o due o più unità comunicanti. In altre parole, solo le unità a cui i messaggi diretti sono abilitate a leggere i messaggi. Questa funzione è accompagnata dalla cifratura dei frames wireless con un forte algoritmo di encryption. WEP utilizza una chiave precondivisa per cifrare i dati, mentre 802.11i utilizza Advanced Encryption Standard (AES). E’ importante notare che questo aspetto è fondamentale in qualsiasi tipologia di rete, ma in particolare nelle reti senza fili. La causa è da ricercare nella natura delle reti senza fili, infatti i dati viaggiano per aria, e sono maggiormente soggetti ad intercettazioni da parte di individui non autorizzati. L’uso di algoritmi di cifratura sicuri è fondamentale per l’ascesa di questi standard, infatti la tendenza comune è quella di non fidarsi di dati che viaggiano su di un mezzo confinabile. Ad esempio, la maggior parte delle persone non è incline ad utilizzare dispositivi mobili per transazioni bancarie o per maneggiare dati sensibili. Con l’avvento di soluzioni basate su AES, sicuramente il gap di sicurezza tra reti wireless e wired verrà colmato, ma si assisterà ad un periodo di transizione, in cui le periferiche e le reti si adatteranno a questa ottima soluzione. Torneremo su questo aspetto nelle prossime sezioni, quando analizzeremo in dettaglio l’algoritmo AES ed i protocolli basati su quest’ultimo. 1.3.3.5 Integrità dei dati Questa funzione si accerta che il destinatario di un messaggio abbia modo di rilevare se un messaggio è stato alterato nella trasmissione o meno. In WEP, l’integrità dei dati è implementata attraverso l’uso di Cyclic Redundancy Check (CRC), il quale non è crittograficamente sicuro, poiché i suoi risultati sono prevedibili, e quindi si può _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 23 di 82 predire matematicamente il CRC quando uno o più bit del messaggio vengono modificati. WPA e WPA2 utilizzano “Message Integrity Check” (MIC), 802.11i utlizza Counter Mode con CCB MAC (CCM). 1.3.3.6 Gestione delle chiavi Gestione delle chiavi si riferisce alla capacità di automatizzare il modo in cui autenticazione e chiave di cifratura sono generati, trasferiti, ed utilizzati nel sistema per assicurare sicurezza nel link di comunicazione. Con WEP, 802.11 fornisce un sistema non automatizzato per la gestione delle chiavi. In WEP, una chiave precondivisa rimane la stessa fino a quando non è modificata manualmente sull’AP e su tutte le mobile stations che utilizzano il particolare AP. Ovviamente questa mancanza è una lacuna per la specifica. 802.11i colma questa lacuna delegando a 802.1X le funzioni di gestione delle chiavi. Per fornire un percorso di migrazione per l’hardware esistente, 802.11i specifica l’uso di WEP come uno dei due nuovi protocolli definiti in 802.11i. Per poter utilizzare WEP in 802.11i, sono stati fatte alcuni cambiamenti al protocollo. Questi cambiamenti risiedono nel protocollo Temporal Key Integrity Protocol (TKIP). Ulteriori dettagli relativi a TKIP e 802.11i verranno forniti nelle prossime sezioni. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 24 di 82 2.0 Opzioni di Sicurezza In questo capitolo descriveremo le principali soluzioni atte a garantire la sicurezza delle reti senza fili. In primo luogo verrà analizzato il protocollo WEP, lo standard de-facto attuale, sottolineando le debolezze che questa soluzione presenta. In seguito analizzeremo lo standard 802.11i, la soluzione proposta da IEEE e Wi-Fi Alliance per colmare le lacune presentate da WEP. L’analisi di 802.11i proposta in questo capitolo si concentra fondamentalmente sugli aspetti di base dello standard, introducendo i protocolli basati su AES che verranno approfonditi nei capitoli 3 e 4. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 25 di 82 2.1 Wired Equivalent Privacy (WEP) Wired Equivalent Privacy (WEP) è la specifica originale per la sicurezza in 802.11. Esso è stato progettato per rendere sicuro il link radio e proteggere i dati che attraversano la porzione wireless della rete. WEP non fornisce protezione oltre l’AP e si applica ugualmente a 802.11a, a 802.11b ed a 802.11g. I limiti di WEP risiedono non solo nell’assenza di un metodo sicuro di cifratura, ma anche nella mancanza di un pratico protocollo per la gestione delle chiavi. WEP si basa sulla conoscenza di una chiave segreta da parte delle entità comunicanti. La chiave segreta può essere utilizzata come credenziale in una fase di autenticazione, e può inoltre cifrare i pacchetti per fornire confidenzialità. La chiave deve essere impostata manualmente nell’AP e su tutti i clients che vogliono comunicare con l’AP. Una volta che la chiave di cifratura è impostata, essa rimane la stessa fino a quando non modificata manualmente in ognuno dei dispositivi di rete che utilizza la rete wireless in questione. Questa mancanza di gestione automatica delle chiavi, rende WEP una preda facile di hackers che osservano per scoprire e sfruttare risorse altrui o chiavi segrete di cifratura. WEP ha fondamentalmente tre obiettivi di sicurezza: fornire autenticazione dei dispositivi, confidenzialità, e integrità dei messaggi. L’autenticazione deve avvenire prima che la stazione mobile sia in grado di associarsi e trasmettere traffico con un AP. Questa autenticazione non è reciproca: solo alla stazione mobile è richiesto di autenticarsi con l’AP. L’autenticazione è fornita attraverso due diversi modi di funzionamento: Open Authentication e Shared-Key Authentication. Open Authentication permette ad una dispositivo qualsiasi di associarsi con l’AP. Con Shared-Key Authentication, l’AP invia una stringa alla Mobile Station (MS) in un challenge message. La MS è tenuta a cifrare la stringa usando la relativa chiave WEP ed a trasmetterla di nuovo all’AP. La chiave di cifratura usata dalla mobile station è la stessa chiave che è utilizzata per il traffico regolare quando lavora in WEP mode. Una volta che la mobile station è stata autenticata, è pronta ad associarsi con l’AP e successivamente a scambiare messaggi con altre entità sulla rete. La figura 2.1 mostra la Shared-Key Authentication Sequence. Figura 2.1 – Shared key Authentication Sequence _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 26 di 82 Quando WEP è abilitato, esso fornisce confidenzialità cifrando i messaggi scambiati sul link wireless tra mobile station e AP. Per cifrare i messaggi, l’unità di trasmissione in genera un Inizialization Vector (IV) di 24-bit che viene concatenato con la chiave segreta di 40-bit o 104-bit per formare la chiave di cifratura di WEP estesa. La chiave estesa è data in input ad un engine RC4 per generare un keystream di cifratura della stessa lunghezza del frame data più la lunghezza dell’IV, 64 o 128 bit rispettivamente (24 bits + 40 bits = 64 bits oppure 24 bits + 104bits = 128 bits). Infine, viene effettuato lo XOR tra il keystream, il corpo dei frame (l’header è escluso) e l’IV per generare lo stream cifrato. Siccome l’IV è generato dall’unità trasmettente, esso deve essere inviato al ricevitore al di fuori dell’area cifrata del frame. La figura 2.2 mostra il processo di cifratura. Per dettagli sulla composizione del frame si veda la figura 2.3. Figura 2.2 – Il processo di cifratura di WEP L'obiettivo dell’integrità di WEP è di fornire un modo al ricevente del frame per determinare se il frame è stato alterato durante la trasmissione o meno. Per raggiungere questo obiettivo, al mittente del frame è richiesto di computare un hash value (32-bit CRC) del data frame e di appenderlo prima del frame cifrato. L’hash value è chiamato Integrità Check Value (ICV). Siccome l’ICV è cifrato, esso non è visibile da un osservatore casuale o attacker. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 27 di 82 Figura 2.3 – Zone di fame cifrate e in chiaro 2.1.1 Debolezze di WEP I ben divulgati problemi di sicurezza di 802.11 provengono dall'uso di WEP come mezzo primario per la protezione del collegamento senza fili. Come citato precedentemente, WEP è stato progettato per fornire autenticazione, confidenzialità, ed integrità, ma sfortunatamente esso fallisce in tutte queste aree. La prima area di debolezza deriva dall’incapacità di WEP di mantenere segreta la chiave condivisa. Le ragioni di questo problema sono la mancanza di una gestione automatizzata delle chiavi. La distribuzione delle chiavi di WEP è manuale: ogni utente necessita di conoscere la stessa chiave segreta. Una volta che la chiave è stata distribuita ad una larga comunità di user, cambiarla significa aggiornare ogni utente conosciuto: soluzione poco pratica. Il risultato è che nella maggior parte degli ambienti dove è utilizzato WEP, la chiave rimane la stessa per periodi di tempo molto lunghi. Quando una larga comunità conosce la chiave segreta, è sicuro che la chiave non rimane segreta molto a lungo. Un ulteriore problema di WEP è che la chiave segreta può essere facilmente scoperta da pacchetti sniffati. Questo è possibile perché WEP riusa la stessa chiave di cifratura dopo circa 20.000 pacchetti scambiati e fa sapere quando il riuso sta avvenendo. L'esposizione accade perché parte della chiave, l’IV, è trasmessa in chiaro. Un attacker può quindi sapere quando sta avvenendo riuso della chiave tenendo semplicemente traccia dell’IV. Sapere quando la chiave è riutilizzata fa si che un hackers ottenga i pacchetti multipli che sono stati cifrati con la stessa chiave. Con il processo di XOR dei messaggi catturati, l’attacker può quindi recuperare la chiave di cifratura. Un secondo modo per rompere la chiave WEP è quando questa è utilizzata in fase di autenticazione. Come citato, la specifica 802.11 descrive due modi di autenticarsi: Shared Key e Open Authentication. Quando si utilizza Shared Key, la chiave usata per l’autenticazione è la stessa chiave utilizzata per cifrare i pacchetti. Sfortunatamente, questo modo di funzionamento espone il testo utilizzato nel challenge message sia in chiaro che cifrato, fornendo ad un hacker abbastanza informazioni per spezzare la chiave. Un terzo caso in cui le chiavi WEP sono esposte, accade quando certe chiavi, chiamate chiavi deboli, sono utilizzate nell’algoritmo RC4. Le chiavi deboli hanno patterns nei primi e terzi byte della chiave che causano pattern corrispondenti nei primissimi byte _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 28 di 82 del flusso chiave generato RC4. Munito con questa informazione, un hacker può usare l’IV ed il flusso chiave esposto per identificare le potenziali chiavi deboli. Possiamo concludere dicendo che le informazioni sopra riportate sono sufficienti per dichiarare che WEP è un protocollo insicuro, ed in quanto tale va sostituito. Il problema della sostituzione di un protocollo utilizzato in larga scala come WEP non è banale, infatti è necessario aggiornare o sostituire le periferiche che lo utilizzano, ed alcune volte il numero delle periferiche può essere davvero elevato. Questo è stato il punto di partenza per la progettazione degli standard sostitutivi di WEP da parte di IEEE Task Group “i” (IEEE 802.11i). L’idea base è stata quella di fornire un periodo di transizione, in cui gli utenti potevano continuare ad utilizzare l’hardware in loro possesso, in attesa che il mercato si aggiornasse all’uso dell’algoritmo di sicurezza per eccellenza: Advanced Encryption Standard (AES). Dunque nella nuova specifica 802.11i vennero inclusi due algoritmi, Wi-Fi Protected Access (WPA) e la soluzione definitiva Wi-Fi Protected Access 2 (WPA2), con i relativi protocolli di supporto. Nella prossima sezione analizzeremo lo standard 802.11i con WPA, e tutti i protocolli di supporto alla nuova architettura (framework di autenticazione, …). Nei capitoli 3 e 4 invece analizzeremo in dettaglio i protocolli wireless basati su AES, e la soluzione WPA2. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 29 di 82 2.2 802.11i IEEE 802.11i è uno standard sviluppato da IEEE per fornire uno strato di sicurezza alle comunicazioni basate sullo standard IEEE 802.11. Come abbiamo precedentemente notato infatti, le comunicazioni protette da WEP non sono molto sicure, in quanto il protocollo presenta diversi difetti, anche dal punto di vista progettuale. La specifica IEEE 802.11i è stata ratificata il 24 giugno 2004 e rappresenta un superset (estensione) del precedente standard WEP. L'architettura dell'802.11i fondamentalmente comprende due protocolli, il primo chiamato Wi-Fi Protected Access (WPA), che utilizza il framework 802.1X per l’autenticazione e TKIP per l’integrità dei dati, ed il secondo WPA2, che utilizza il framework 802.1X per l’autenticazione ed il protocollo AES per la cifratura. In questa sezione analizzeremo le basi di 802.11i e il protocollo WPA, rimandando ai capitoli 3 e 4 i dettagli sull’algoritmo AES ed il protocollo WPA2. La Tabella 2.1 mostra alcune caratteristiche di WEP e delle opzioni di sicurezza che presenteremo in questa sezione: WPA e WPA2. CARATTERISTICA Access Control Framework Authentication Framework Encryption Algorithm Key Size WEP WPA WPA2 Nessuno 802.11i 802.11i Nessuno EAP EAP RC4 RC4 AES 40 / 140bit 128bit Packet Key Concatenation 128 bit Encrypt. 64 bit Authent. Mixing Function Key Management Static 802.1X + TKIP 802.1X + CCMP Key Lifetime 24 bit IV 48 bit IV 48 bit IV Authentication Methods Shared Key (PSK) Shared Key (PSK), Metodi EAP-based Shared Key (PSK), Metodi EAP-based Header Integrity Data Integrity Pre-Authentication Roaming Nessuno CRC32 NO Limitato (solo AP stesso produttore) Michael Michael NO Limitato (solo AP stesso produttore) Michael Michael NO Limitato (solo AP stesso produttore) Non necessario Tabella 2.1 – Le opzioni di sicurezza wireless _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 30 di 82 2.2.1 TKIP Progettato come “wrapper” intorno a WEP, TKIP è stato sviluppato da TGi (IEEE 802.11 “Task Group i”) per risolvere le debolezze di WEP e per fornire un percorso di espansione WLANs più sicuro usando l’hardware esistente. TKIP è utilizzato dal protocollo WPA per la privacy dei dati. TKIP comprende fondamentalmente quattro elementi che vengono aggiunti al WEP: 1. Message Integrity Check o MIC, chiamato Michael, come protezione contro le falsificazioni 2. Un nuovo Initialization Vector di 48 bit 3. Un per-packet key mixing function, per scorrelare l’IV pubblico dalle chiavi deboli 4. Un Meccanismo di Rekeying, per fornire chiavi di integrità e di crittografia sempre nuove, prevenendo minacce di attacchi che provengono dal riutilizzo della chiave. TKIP è l’acronimo di “Temporary Key Integrity Protocol”. Il meccanismo di rekeying aggiorna quelle che sono dette temporary keys, che sono consumate dall’engine WEP e dalla funzione di integrità Michael. Nelle prossime sezioni analizzeremo le componenti di TKIP. 2.2.1.1 Sconfitta dei falsi: Michael MIC è un meccanismo di autenticazione dei dati. La letteratura denomina questi message authenitcation code, o MACs, ma poiché IEEE 802 aveva già utilizzato l’acronimo MAC per identificare il “Media Access Control", TGi decise di utilizzare il termine MIC. Ogni MIC ha tre componenti: una chiave segreta K (condivisa soltanto fra il mittente e destinatario), una tagging function e un predicato di verifica. La tagging function prende la chiave K e un messaggio M come input e genera un tag T, denominato message integrità code, come output. Un protocollo protegge un messaggio M dal falso, facendo si che il mittente computi il tag T e lo trasmetta assieme al messaggio M. Per verificare la presenza di falso, il ricevente da in input K, M e T al predicato di verifica. Se il predicato restituisce TRUE, allora il messaggio è autentico, altrimenti viene scartato. Un MIC è considerato sicuro se è impossibile per un attacker selezionare modifiche corrette per qualche nuovo, mai visto prima, messaggio M senza conoscere la chiave K. Michael è il nome del message integrity check utilizzato da TKIP. Esso è un nuovo MIC progettato dal signor Niels Ferguson. La chiave di Michael è a 64-bit, ed è rappresentata come due parole a 32-bit littleEndian (K0, K1). La tagging function di Michael prima riempie un messaggio con il valore hex 0x5a ed abbastanza zero pad per portare la lunghezza totale del messaggio ad un multiplo di 32-bits, poi partiziona il risultato in una sequenza di parole a 32-bit M1 M2... ed infine computa il tag dalla chiave e dalle parole del messaggio usando una struttura iterativa semplice: (L,R) (K0,K1) do i from 1 to n L L ⊕ Mi (L,R) b(L,R) return (L,R) as the tag _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 31 di 82 dove il simbolo ⊕ denota una operazione sviluppata da rotazioni, little-Endian additions Il predicato di verifica del Michael, ripete la restituisce il risultato di un confronto bit-wise il tag ricevuto assieme al messaggio. di XOR e b è una semplice funzione e bit swap. tagging function sopra il messaggio, e di questo tag localmente computato con 2.2.1.2 Initialization Vector Sfortunatamente, MIC non può rilevare un pacchetto ripetuto. Ciò accade ad esempio quando un avversario registra un pacchetto valido durante la comunicazione e poi successivamente lo ritrasmette. Il modo standard per risolvere questo problema è di associare un packet sequence number space con una chiave MIC e re-inizializzare lo spazio di sequenza ogni volta che la chiave MIC è sostituita. Questa strategia richiede che il trasmettitore si astenga dal trasmettere dati protetti dalla vecchia MIC key una volta il sequence number space è esaurito. Le scelte disponibili al trasmettitore per gestire l’esaurimento sono (a) comunicazione di fermata complessiva, (b) prova il rekey del MIC con una chiave nuova, o (c) trasmissione del traffico successivo senza alcuna protezione crittografica. Non riuscire ad adottare una di queste strategie rischia esporre i dati già protetti sotto la chiave. TKIP segue molto attentamente questo design classico. Per sconfiggere ripetizioni, TKIP usa il campo IV di WEP come packet sequence number. Sia il trasmettitore che il ricevente inizializzano il packet sequence number space a zero ogni volta che le nuove chiavi di TKIP sono impostate ed il trasmettitore incrementa il sequence number con ogni pacchetto trasmesso. TKIP richiede al ricevente di rispettare un ordine adeguato della sequenza IV dei pacchetti arrivanti. TKIP definisce un pacchetto come fuori-sequenza se il relativo IV è lo stesso o più piccolo di un MPDU (frammento di pacchetto) correttamente ricevuto precedente associato con la stessa chiave di crittografia. Se un MPDU è fuori ordine, allora è considerato come una ripetizione ed il ricevente lo scarta ed incrementa un contatore di ripetizione. TKIP devia dal design usuale associando il sequence number con la chiave di crittografia di TKIP, non con la relativa chiave MIC. Questo vincolo deriva dalla scelta del campo di WEP IV come sequence space. Ciò è stata fatto per poter riutilizzare l’hardware WEP attuale e quindi i formati di pacchetto. 2.2.1.3 Sconfitta degli attacchi alle chiavi deboli: Key Mixing TKIP key mixing function è stata inventata da Doug Whiting e Ron Rivest. Essa trasforma una chiave temporale ed il contatore di sequenza del pacchetto in una per-packet key ed IV. La mixing function agisce in due fasi, in ogni fase compensa un particolare difetto di design di WEP, in particolare la Fase 1 elimina l’uso della stessa chiave in tutti i collegamenti, mentre la Fase 2 de-correla l’IV pubblico dalla perpacket key. La Fase 1 combina il MAC address 802 dell'interfaccia wireless locale e la chiave temporanea, effettuando iterativamente l’operazione di XOR con una S-box (tabella di sostituzione non lineare invertibile), per produrre una chiave intermedia. La mescolatura del MAC address locale nella chiave temporale in questo modo, induce stazioni ed Access Point differenti a generare chiavi intermedie differenti, anche se cominciano dalla stessa chiave temporale. Questa costruzione conduce alla generazione di per-packet key differenti per ogni stazioni, soddisfacendo i requisiti minimi imposti. Inoltre, la chiave intermedia della Fase 1 deve essere computata soltanto quando la chiave temporale è aggiornata, così la maggior parte delle esecuzioni porta ad avere un ottimizzazione di prestazioni. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 32 di 82 La Fase 2 usa un tiny cipher per "cifrare" il numero progressivo del pacchetto sotto la chiave intermedia, producendo una per-packet key di 128-bit. Nella realtà, i primi 3 byte dell’output della fase 2 corrispondono esattamente al WEP IV e gli ultimi 13 alla chiave base di WEP, come per WEP, l’IV e la base key sono concatenati per formare la chiave per-packet key di 128-bit. Questo design soddisfa il secondo obiettivo della mixing function, rendendo difficile per un avversario correlare gli IV e le per-packet key. Il tiny cipher definito per la fase 2 ha una struttura di Fiestel, il che significa che i loop interni implementano una trasformazione nella forma (L,R)à(R,L ⊕ f(R)). Come con Michael, il loop interni del tiny cipher possono essere implementati usando solo operazioni semplici: XOR, rotazioni, tabelle di look-up – tutte operazioni poco costose per i processori dei dispositivi 802.11. La fase 2 rappresenta il packet sequence number come un contatore a 16-bit little-Endian. La fase 2 assegna gli 8-bit più significativi del counter al primo e secondo byte del WEP IV, ed i bit meno significativi del counter al terzo byte dell’IV. Esso dunque maschera i bit più significativi del secondo byte per impedire che la concatenazione WEP per-packet key produca una delle chiavi deboli di RC4. 2.2.1.4 Rekeying La definizione di ultimo elemento di TKIP, rekeying, non è ancora completa, ma sostanzialmente esso consiste nella generazione di chiavi di cifratura ed intergità nuove ogniqualvolta che queste vengono “consumate” dai diversi algoritmi TKIP. L’architettura di rekey di 802.11i dipende da una gerarchia di tre chiavi: temporali, di cifratura e master keys. Le master sono nella parte superiore della gerarchia ed autorizzano tutte le chiavi del processo. Le chiavi di cifratura sono a metà della gerarchia e vengono utilizzate per proteggere le chiavi temporali scambiate tra AP e stazione mobile, infine le chiavi temporali occupano il livello più basso della gerarchia e sono consumate da TKIP nelle procedure di privacy ed authentication. 2.2.1.5 Processo Completo Ora che abbiamo visto tutte le componenti di TKIP, possiamo vedere come collaborano con WEP per fornire la sicurezza. Quando una stazione fa uno scambio iniziale con un'infrastruttura, usa il framework 802.1X (descritto nella prossima sezione) per autenticare e derivare una chiave master nuova. La chiave master rimane in uso fino a che non espiri o sia revocata. La chiave master è legata direttamente allo step di autenticazione, e questa chiave autorizza implicitamente tutte le chiavi successive e tutto il traffico proteggono. Dopo la stabilizzazione della chiave master, l’authentication server distribuisce fresh keying material alla stazione ed all’Access Point per derivare un primo insieme delle chiavi di cifratura. La chiave master protegge lo scambio fra authentication server e la stazione. Il protocollo inoltre fornisce a stazione ed AP i mezzi per aggiornarsi con chiavi di cifratura nuove dopo ogni riassociazione. L’Access Point usa le chiavi di cifratura stabilite per proteggere le chiavi temporali nuove che trasmette alla stazione. L’Access Point ripete un messaggio di refresh key circa una volta ogni 216 pacchetti di dati, di modo che l'associazione abbia sempre le chiavi ed associati packet sequence spaces concordanti con i presupposti dell’algoritmo. Quando la sicurezza è in uso, né l’Access Point né la stazione consentono il traffico normale dei dati fino a che le chiavi temporali non sono stabilite. Una volta che questo è compiuto, l’Access Point e la stazione possono usare le chiavi temporali per _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 33 di 82 proteggere i pacchetti usando TKIP ed entrambi scartano il traffico non protetto da TKIP se ne ricevono. Il processo di encapsulation di TKIP è semplice da descrivere. Quando la stazione desidera trasmettere un MSDU (MAC Service Data Unit – pacchetto intero), l’implementazione TKIP usa la chiave temporale Michael per computare il MIC dei MAC address di destinazione e sorgente, così come per il payload MSDU. TKIP appende il MIC al campo dati, estendendo il payload di dati del pacchetto di 8 byte. In seguito 802.11 divide MSDU in frammenti MPDU. Una volta che ciò è fatto, assegna ad ogni frammento un numero progressivo di pacchetto ed impiega la key mixing function per generare una chiave di cifratura per-packet per ciascuno, rappresentata come WEP IV e una chiave base. A questo punto, i restanti step sono puro WEP, e sono effettuati in hardware. Il sistema computa e collega il campo dati ICV (Intergrity Check Value) ad ogni frammento. La cifratura consuma l’IV e la chiave base, cifra il campo dati, includendo MIC ed ICV, e codifica IV ed il key id dell'insieme delle chiavi temporali nel campo di WEP IV, completando cosi il processo di encapsulation. L'intero MPDU ora è protetto e pronto per essere trasmesso. La Figura 2.4 descrive il processo. Figura 2.4 – Processo di encapsulation di TKIP _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 34 di 82 2.2.2 Framework – 802.1X 802.1X è la specifica che descrive un framework architetturale per un meccanismo di autorizzazione ed autenticazione basato su port access control. 802.1X è parte della famiglia di standard per local e metropolitan area network ed è stato adottato da IEEE 802.11 Task Group “i” come base per il nuovo modello di sicurezza di Wi-Fi. 802.1X è basato su Extensible Authentication Protocol (EAP). EAP permette agli amministratori di rete di scegliere fra parecchi metodi di autenticazione in base alle esigenze del loro ambiente. La figura 2.4 mostra uno schema semplice di architettura 802.1X. Figura 2.5 – L’architettura 802.1X Per garantire autenticazione e autorizzazione, 802.1X fornisce le seguenti specifiche: • Come funziona il meccanismo di access control • Livelli di access control supportati ed il port behavior ad ogni livello • Requisiti per il protocollo tra supplicant ed authenticator • Requisiti per il protocollo tra authenticator ed authenticator server • Come l'autenticazione e l'autorizzazione sono usate supportare il network access control • Codifiche di Protocol Data Units (PDUs) utilizzate nello scambio di informazioni tra protocolli di autenticazione e autorizzazione • Requisiti per la gestione dell’access control port-based • Requisiti per gestione remota usando SMT (Station Management) • Requisiti di conformità allo standard 802.1X da parte dell’apparecchiatura usata 2.2.2.1 Port-Based Network Access Control 802.1X controlla gli accessi ad una rete limitando i servizi che un client (ad es. un notebook computer) può accedere da un altro sistema (ad es. un AP) attraverso la porta specifica. In questo contesto, una porta è un punto di collegamento alla LAN. Nelle reti wired, un esempio di porta sono le porte fisiche di un router. In una rete wireless, un esempio di una porta è una “associazione” tra una stazione (notebook) ed un AP. Esempi di servizi che possono essere ristretti attraverso un access control portbased includono le funzioni di routing nel network layer e l’accesso al DHCP server. Controllando tali funzioni, un dispositivo collegato ad una porta specifica può essere limitato a servizi che effettuano solo autenticazione ed autorizzazione. Una volta che il dispositivo/utente è stato autenticato, la porta può essere abilitata per avere accesso ad altri servizi quali ad esempio l’accesso alla rete Internet. La Figura 2.5 illustra un accesso port-based. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 35 di 82 Figura 2.6 – 802.1X port-based access control 2.2.3 Authentication Framework - EAP Extensible Authentication Protocol (EAP) è un framework generico di autenticazione che, come suggerisce il nome, supporta un'ampia varietà di protocolli di autenticazione. La Figura 2.6 mostra un diagramma a blocchi del framework EAP. EAP è stato sviluppato originariamente per l’uso in PPTP (Point-to-Point Tunneling Protocol) ed è attualmente usato da 802.1X come parte del meccanismo di controllo di accesso per le reti wireless, ovvero EAP può essere utilizzato su un’ampia varietà di data links (802.3, 802.11, …). Figura 2.7 –Il Framework EAP _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 36 di 82 Il metodo reale di autenticazione impiegato è determinato attraverso un processo di negoziazione fra MS da autenticare ed il server di autenticazione. Nelle prossime sezioni analizzeremo i diversi metodi di autenticazione supportati da EAP. 2.2.4 EAP Authentication Methods Come citato precedentemente, EAP è framework che supporta un’ampia varietà di protocolli di autenticazione. Il protocollo attuale di autenticazione da usare per l’autenticazione è selezionato attraverso un processo di negoziazione tra mobile station e AP. I dispositivi selezionano il metodo di autenticazione in base ai protocolli che supportano ed alle politiche che possono essere configurate nel dispositivo da un amministratore. Un esempio di una politica potrebbe essere la selezione di un protocollo di autenticazione specifico per i collegamenti all'interno della rete aziendale, ed un altro protocollo per i collegamenti fuori della rete aziendale. Esistono diversi protocolli di autenticazione EAP, i più importanti sono: MD5, LEAP, TLS, TTLS, e PEAP. 2.2.4.1 MD5 - Message Digest 5 MD5 è il più semplice dei metodi di autenticazione EAP, ma quando utilizzato su una rete wireless è il meno sicuro. MD5 è un metodo di autenticazione unidirezionale di supplicant (stazione mobile) alla rete (AP) che usa un hash della password e challenge string per fornire prova di identità. Gli svantaggi principali di MD5 includono il salvataggio della password in chiaro per l’authenticator ed il fatto di essere un metodo di autenticazione unidirezionale. Inoltre, MD5 non fornisce key management, e quindi esiste la possibilità che attackers sniffino la rete per rompere le chiavi. 2.2.4.2 LEAP – Lightweight EAP LEAP è un metodo di autenticazione EAP sviluppato da Cisco System, che supporta autenticazione reciproca. Esso utilizza l’username e la password della MS e le credenziali dell’AP per l’autenticazione con i server RADIUS. Sull'autenticazione, LEAP genera chiavi WEP one-time per uso di sessione. Usando LEAP, ogni utente connesso alla rete wireless usa una chiave WEP univoca. Le chiavi di sessione possono essere rinnovate utilizzando il timeout RADIUS, il quale causa il la necessità di ri-effettuare il login da parte di un utente (re-login). I re-login possono avvenire senza l’intervento o la conoscenza dell’utente. La vulnerabilità di LEAP sta nell’uso di MS-CHAPv1 per l’autenticazione reciproca. MSCHAPv1 è risaputo essere vulnerabile ad attacchi. Lo svantaggio di LEAP è che funziona end-to-end solo su reti Cisco-based. 2.2.4.3 TLS - Transport Level Security TLS è un metodo di autenticazione IETF (Internet Engineering Task Force) standardizzato che utilizza i certificati X.509 per fornire autenticazione reciproca. La generazione del TLS, la distribuzione e l'amministrazione generale dei certificati richiede una Public Key Infrastructure (PKI). Per trasmettere informazioni di PKI, TLS si appoggia su Secure Sockets Layer (SSL). _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 37 di 82 TLS genera per le chiavi di sessione WEP e provvede alla re-autenticazione della MS ed al re-keying senza intervento dell'utente. Lo svantaggio principale di TLS sta nel fatto che il client deve avere un certificato. Gestire certificati per un largo numero di client può essere un task molto difficile, e per questo motivo TLS non è molto usato in pratica. 2.2.4.4 TTLS – Tunneled TLS TTLS, sponsorizzato da Funk Software, ed ora diventato uno standard IETF, è uno dei due metodi (l’altro è PEAP analizzato nel prossimo paragrafo) sviluppato per sormontare l’esigenza di TLS di avere certificati sul client. In TTLS, la mobile station si identifica con username/password mentre l’AP continua ad utilizzare certificati come in TLS. TTLS è in grado di trasmettere credenziali (username/password) in maniera sicura utilizzando un tunnel SSL stabilito tra il client ed l’authentication server. In quanto utilizza questo tunnel sicuro, TTLS è capace di supportare meccanismi multipli di challenge-response (PAP, CHAP, MS-CHAPv1, MS-CHAPv2, PAP/Token Card or EAP). TTLS implementa i differenti metodi di autenticazione scambiando “attribute-valuepairs” (AVPs) che è simile a ciò che è usato nel protocollo RADIUS. Un altro vantaggio di TTLS rispetto TLS è che l’identità utente non è esposta agli attacker mentre queste informazioni sono trasmesse al server sopra il tunnel sicuro stabilito. TTLS è considerato molto sicuro, è stato implementato da parecchi vendor ed è ampiamente schierato. Tuttavia, non è stato impiegato da tutti come metodo definitivo di autenticazione 802.11. Il rivale principale delle TTLS è Protected EAP (PEAP) che verrà discusso nella prossima sezione. 2.2.4.5 Protected EAP - PEAP PEAP, sponsorizzato da Microsoft, Cisco, e RSN, è ora uno standard IETF, ed è uno dei due metodi di autenticazione (l’atro è TTLS) sviluppato per sormontare l’esigenza di TLS di avere certificati sul client. In PEAP, come in TTLS, la mobile station si identifica con username/password mentre l’AP continua ad utilizzare i certificati. La differenza principale tra TTLS e PEAP è che PEAP utilizza il client-to-RADIUS tunnel per stabilire un secondo scambio EAP. Questo permette a PEAP di supportare tutti i metodi di autenticazione di EAP. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 38 di 82 2.3 Wi-Fi Protected Access (WPA) Mentre 802.11i risolveva tutti i problemi di sicurezza incontrati con WEP, il completamento di queste nuove specifiche di sicurezza non rispondevano alle esigenze di tempo nell'industria WLAN. La Wi-Fi Alliance, utilizzando le specifiche preliminari per lo standard 802.11i, allora decise di sviluppare la specifica Wi-Fi Protected Access (WPA) come soluzione ad interim. WPA è un subset dello standard 802.11i, dal quale differisce soltanto per le specifiche di Indipendent Basic Service Set, pre-authentication, e per l’algoritmo di cifratura. Per cifrare, WPA supporta WEP con TKIP, entrambi implementabili in software e/o firmware. Per l’autenticazione, WAP supporta due modi di funzionamento: Enterprise e Pre-Shared Key (PSK). Il modo Enterprise richiede un server RADIUS, ovvero il framework 802.1X, per l’autenticazione e la distribuzione della chiave. PSK è stato introdotto come un mezzo di autenticazione in ambienti wireless ristretti (domestici, piccoli hotspot, …) che non hanno a disposizione un server di autenticazione. In PSK mode, la chiave pre-condivisa è usata solo per l’autenticazione e non per la cifratura dei pacchetti. Per la privacy dei dati, WPA utilizza TKIP. Le chiavi di sessione sono generate a partire dalla chiave (master) pre-condivisa e rinnovata in maniera regolare per cercare di evitare attacchi da parte di hackers. Per-packet keys a loro volta sono generate dalle chiavi di sessione usando una funzione di mixing. Da settembre 2003, un dispositivo per essere certificato Wi-Fi deve obbligatoriamente includere una implementazione del protocollo WPA. Per l’integrità dei dati, WPA aggiunge un message integrità check (MIC) chiamato Michael. Queste feature sono garantite grazie all’uso del protocollo TKIP. 2.3.1 Benefici di WPA WPA • • • • ha parecchi benefici importanti rispetto a WEP: Fornisce una sicurezza maggiore rispetto a WEP Richiede di modificare solo il software/firmware Fornisce una soluzione che può essere implementata con l’hardware esistente Permette ai clients WEP-based di operare in reti miste WEP/WPA (tuttavia, questo rischia di compromettere la sicurezza) • Il supporto è o sarà al più presto integrato nella maggior parte dei sistemi operativi. Il supporto per Microsoft Windows XP è disponibile da Giugno 2003. 2.3.2 WPA Deployment Issues Alcune dei problemi più noti devono necessariamente essere considerati quando si utilizza WPA includono: • Necessità di upgrade del firmware negli AP e nelle stations. • WPA non supporta la pre-autenticazione • WPA non supporta il roaming e le stazioni devono essere riautenticate, quando si muovono connettendosi tra diversi AP. Questo può richiedere qualche secondo. I produttori cercano di supportare il roaming effettuando la cache delle credenziali, ma questa soluzione non funziona correttamente con vendor di hardware differenti. • Richiede nuove capacità nel client (802.1X e WPA) _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 39 di 82 3.0 Advanced Encryption Standard Advanced Encription Standard (AES), conosciuto anche come Rijndael, è un algoritmo simmetrico di cifratura a blocchi utilizzato come standard dal governo USA per proteggere dati sensibili. L’algoritmo è stato sviluppato da due crittografi Belgi, John Daemen e Vincent Rijmen, che lo hanno presentato al processo di selezione per l’AES con il nome di Rijndael. A differenza del predecessore DES, Rijndael è una rete a sostituzione e permutazione, non una rete di Feistel (struttura particolare in cui cifratura e decifratura sono operazioni molto simili inventata da uno sviluppatore IBM). AES è veloce sia sviluppato in software che in hardware, è relativamente semplice da implementare, e richiede poca memoria. Rijndael è un algoritmo di cifratura sviluppato sfruttando le migliori conoscenze della crittografia, ed è ritenuto un algoritmo molto sicuro. AES è stato progettato per avere un’elevata resistenza contro i classici attacchi, quali cripto-analisi lineare, criptoanalisi differenziale, … Nelle sezioni successive verranno analizzati i concetti algebrici che stanno alla base dell’algoritmo e verrà fornita una descrizione degli step necessari per implementare l’algoritmo in software [1] [2] [3]. Nella parte finale del capitolo verrà presentata una implementazione efficiente di AES [4] con le relative considerazioni sui limiti imposti dai dispositivi wireless, ovvero limitata capacità di calcolo, dimensioni ridotte e batteria. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 40 di 82 3.1 Convenzioni Iniziamo la descrizione dell’algoritmo AES con alcune considerazioni sulle convenzioni adottate per la rappresentazione dei dati. 3.1.1 Input & Output L’input, l’output e la chiave di cifratura di Rijndael sono sequenze contenenti 128, 192 o 256 bit, con il vincolo che le sequenze di input e output abbiano la stessa lunghezza. In generale la lunghezza delle sequenze di input e output può essere uno dei tre valori sopra elencati, ma per Advanced Encryption Standard (AES) l’unica lunghezza permessa è di 128 bit. Tuttavia, entrambi, Rijndael e AES, permettono una chiave di cifratura di tutte e tre le dimensioni. I singoli bit all’interno di una sequenza sono enumerati partendo da zero e arrivando fino a un unità meno della lunghezza della sequenza, ovvero il numero i associato con un bit (il suo indice) quindi deve essere in uno dei tre ranges 0 i < 128, 0 i < 192 oppure 0 i < 256, in base alla sequenza in questione. 3.1.2 Bytes Un byte in Rijndael è un gruppo di 8 bit ed è l’unità base per ogni operazione. Tutti i bytes in Rijndael sono interpretati come elementi di un campo finito, utilizzando la rappresentazione in cui ogni byte b con i bit b0 b1 … b7 rappresenta il polinomio, ovvero in rappresentazione polinomiale: b7x7+ b6x6+ b5x5+ b4x4+ b3x3+ b2x2+ b1x+ b0 = ∑ bixi con 0 i 7 Il valori dei bytes saranno rappresentati in binario come concatenazione dei loro bits (0 o 1) fra i loro sostegni. Quindi, {011000011} identifica un elemento specifico del campo finito, in cui il bit di maggiore peso sta all’estrema sinistra. E’ inoltre conveniente denotare il valore di un byte utilizzando una notazione esadecimale, con ognuno dei due gruppi di quattro bits rappresentati da un carattere, quindi ad esempio il valore {011000011} può essere scritto come {63}, dove il carattere che denota il gruppo di 4-bit contenente i bit di maggiore peso sta ancora a sinistra. Alcune operazioni sui campi finiti coinvolgono un bit aggiuntivo, (b8) alla sinistra del byte di 8-bit e dove questo extra bit è presente, esso appare immediatamente alla sinistra del sostegno di sinistra, come ad esempio 1{1b}. 3.1.3 Array di Bytes Tutte le sequenze di input, output e della chiave di cifratura sono rappresentati come arrays di bytes mono-dimensionali, dove il byte n consiste nei bit da 8n a 8n+7 della sequenza e con il bit 8n+i nella sequenza corrispondente al bit 7-i nel byte, con 0 i < 8. Per esempio una sequenza denotata dal simbolo a, l’ennesimo byte sarà riferito utilizzando tutte e due le notazioni come an oppure a[n], dove n è in uno dei tre ranges 0 n < 16, 0 n < 24 oppure 0 n < 32. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 41 di 82 3.1.4 Gli stati di Rijndael Le operazioni interne di Rijndael sono compiute su array di bytes bidimensionali chiamati state, che consistono in 4 righe di bytes, ognuna della quale contiene Nb bytes, dove Nb è la sequenza di input divisa per 32. Nello state array denotato con il simbolo s, ogni singolo byte ha due indici: il numero di riga r, nel range 0 r < 4, e il suo numero di colonna c, nel range 0 c < Nb, in notazione compatta possiamo dunque scrivere sr,c oppure s[r,c]. Per AES il range di c è 0 c < 4, in quanto Nb è fisso ad un valore 4. Alla partenza (fine) delle operazioni di cifratura o decifratura i bytes del cipher in input (output) sono copiati sullo (dallo) state array come illustrato in Figura 3.1. Cipher input bytes in0 in4 in8 in12 … in1 in5 in9 in13 … in2 in6 in10 in14 … in3 in7 in11 in15 … Cipher state array à s0,0 s0,1 s0,2 s0,3 … s1,0 s1,1 s1,2 s1,3 … s2,0 s2,1 s2,2 s2,3 … s3,0 s3,1 s3,2 s3,3 … Cipher output bytes à out0 out4 out8 out12 … out1 out5 out9 out13 … out2 out6 out10 out14 … out3 out7 out11 out15 … Figura 3.1 - L’input sullo state array e l’output da esso Dunque alla partenza della cifratura o decifratura, l’input array in è copiato sullo state array secondo lo schema: s[r,c]= in[r+4c] con 0 r<4e0 c < Nb e quando la cifratura è completa, lo state è copiato sull’output array out secondo lo schema: out[r+4c]= s[r,c] con 0 r<4e0 c < Nb 3.1.5 Array di parole a 32-bit I quattro bytes in ogni colonna dello state array possono essere considerati sia come un array di quattro bytes indicizzati con il numero di riga r oppure come una singola parola a 32-bit. Lo state può dunque essere considerato come un array mono-dimensionale di parole per il quale il numero della colonna c fornisce l’indice dell’array. Il key schedule per Rijndael (donato con w) è un array di parole a 32-bit che è inizializzato con la chiave di cifratura nell’ordine dettato dall’indice r, cosi che il byte 4n+r della chiave di cifratura è copiato all’interno del byte r del key schedule word w[n]. La cifratura itera attraverso una serie di cicli ognuno dei quali utilizza Nk parole da questo key schedule. In ultimo, può dunque essere considerato come un array di round keys, ognuna contenente Nk parole. Il key schedule sarà approfondito nelle sezioni successive. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 42 di 82 3.2 Operazioni su campi finiti In questa sezione analizzeremo l’algebra dei campi finiti utilizzata da Rijndael. 3.2.1 Addizione su campi finiti L’addizione tra due elementi di un campo finito è effettuata sommando i coefficienti a pari potenza nella rappresentazione polinomiale. Questa operazione è effettuata in GF(2), ovvero, in modulo 2, dove 1+1=0. Conseguentemente, addizione e sottrazione sono equivalenti ad un or-esclusivo su bytes che rappresentano gli elementi del campo. L’operazione di addizione per un elemento di un campo finito è denotata con il simbolo ⊕. Ad esempio, la seguenti espressioni sono equivalenti: (x6 + x4 + x2 + x +1) + (x7 + x +1) = x7 + x6 + x4 + x2 {01010111} ⊕ {10000011} = {11010100} {57} ⊕ {83} = {d4} (notazione polinomiale) (notazione binaria) (notazione esadecimale) 3.2.2 Moltiplicazione su campi finiti La moltiplicazione su un campo finito è più complessa che un’addizione, ed è ottenuta moltiplicando i due polinomi per i due elementi interessati e raccogliendo a pari esponente di x nel risultato. In quanto ogni polinomio può avere una potenza inferiore a 7, il risultato può avere al massimo una potenza di 14, ciò significa che non è possibile utilizzare un singolo byte. Questa situazione è gestita rimpiazzando il risultato con il polinomio resto dopo la divisione per uno speciale polinomio irriducibile di ordine 8. Un polinomio si dice irriducibile se non ha altri divisori oltre uno e se stesso. Per Rijndael il polinomio irriducibile è chiamato m(x) ed è definito come: m(x)=x8 + x4 + x3 + x + 1 Poiché questo polinomio ha una potenza di x fino ad un massimo di 8, non può essere rappresentato da un singolo byte. Come indicato precedentemente, questo verrà scritto come 1{00011011} oppure come 1{1b}. Per esempio, utilizzando il simbolo • per rappresentare la moltiplicazione in un campo finito, il prodotto {57} • {83} procede come segue: (x6 (x6 (x6 (x6 + + + + x4 x4 x4 x4 + + + + x2 x2 x2 x2 + + + + x x x x +1) • (x7 + x +1) à +1) • x7 = x13 + x11 + x9 + x8 + x7 + +1) • x = x7 +x5 + x3 + x2 + x 6 4 +1) = x +x + x2 + x + 1 ____________________________________________________ x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 Questo risultato intermedio è diviso per m(x): 8 4 3 5 (x + x + x + x + 1) • x = Sottrai per avere il resto intermedio (x8 + x4 + x3 + x + 1) • x3 = Sottrai per avere il resto finale x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 13 9 8 x +x +x + x6 + x5 ____________________________________________________ x11 + x4 + x3 +1 x11 + x7 + x6 + x4 + x3 ____________________________________________________ x7 + x6 +1 _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 43 di 82 quale fornisce come risultato {11000001} ovvero {c1}. La moltiplicazione definita sopra è associativa, e esiste un elemento neutro {01}; per qualsiasi polinomio binario b(x) di grado inferiore di 8, l’algoritmo esteso di Euclide può essere utilizzato per computare i polinomi a(x) e c(x), tale che: b(x) • a(x) ⊕ m(x) • c(x) = 1 a(x) • b(x) mod m(x) = 1 quale indica che i polinomi a(x) e b(x) sono inversi reciproci. Ancora: a(x) • (b(x) ⊕ c(x)) = a(x) • b(x) ⊕ a(x) • c(x) Quindi, segue che l’insieme di 256 valori di byte, con lo XOR come addizione e la moltiplicazione come definita sopra, ha la struttura del campo finito GF(256). 3.2.3 Moltiplicazione tramite repeated shifts L’elemento del campo finito {00000010} è il polinomio x, che significa che moltiplicando un altro elemento per questo le sue potenze di x aumentano tutte di 1. Questo è equivalente a shiftare la sua rappresentazione in byte di un bit cosicché il bit in posizione i si sposti in posizione i+1. Se il bit superire è settato prima di questo movimento, verrà generato un termine x8, ed allora il polinomio modulare sarà sommato per annullare questo bit supplementare ed avere un risultato che “entra” in un byte. Ad esempio, quando {11001000} è moltiplicato per x, {00000010}, il risultato iniziale è 1{10010000}. Il bit di overflow è rimosso sommando il polinomio modulare, 1{00011011}, utilizzando un operazione exclusive-or per avere il risultato finale {10001011}. Ripetendo questo processo, un elemento di un campo finito può essere moltiplicato per tutte le potenze di x che vanno da 0 fino a 7. La moltiplicazione di questo elemento per un altro elemento del campo finito può quindi essere ottenuta sommando i risultati per un appropriata potenza di x. Ad esempio, la Tabella 3.1 mostra questi calcoli per il prodotto degli elementi del campo {57} e {83} per dare {c1}, ovvero moltiplica {01010111} • {10000011} per dare {11000001}, oppure in notazione polinomiale moltiplica (x6 + x4 + x2 + x +1) • (x7 + x +1) per dare x7 + x6 + 1. Se consideriamo la riga con n=1, abbiamo che: 1. {57} • x = {10101110} 2. Non è necessario fare lo XOR con m(x) 3. Siccome esiste un elemento di {83} con potenza di x pari a 1, viene tenuto il risultato {10101110} 4. Viene effettuato lo XOR tra {10101110} ed il risultato della precedente iterazione, quindi: {10101110} ⊕ {01010111} = {11111001} e si ottiene il risultato dell’iterazione attuale. Il procedimento continua fino a n=7. n {57} • xn 0 {01010111} 1 {10101110} 2 1{01011100} 3 {10001110} ⊕ m(x) 1{00011011} {83} ⊕ to result result {01010111} 1 {01010111} {01010111} {10101110} 1 {10101110} {11111001} {01000111} 0 {10001110} 0 {57} • xn _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 44 di 82 4 1{00011100} {00000111} 0 5 {00001110} 1{00011011} {00001110} 0 6 {00011100} {00011100} 0 7 {00111000} {00111000} 1 {00111000} {11000001} Tabella 3.1 – Moltiplicazione {57} • {83} 3.2.4 Moltiplicazione su campi finiti tramite tabelle Quando determinati elementi del campo finito (conosciuti come generatori) sono moltiplicati ripetutamente per elaborare una lista delle loro potenze, gn, generano progressivamente tutti e 255 elementi non-zero del campo. Quando la n raggiunge 256 l'elemento originale del campo ricorre con g255 quindi che è uguale a {01}. I valori di n per ogni elemento del campo possono pensarsi come logaritmi e ciò fornisce un modo per convertire la moltiplicazione in somma. Quindi i due elementi a = gα e b = gβ hanno come prodotto a • b = gα+β . Con una tabella “logaritmica” che mostra le potenze del generatore per ogni elemento del campo finito, è possibile quindi determinare le potenze α e β corrispondenti agli elementi a e b e sommare questi due valori per trovare la potenza di g per il risultato. Una tabella di inversione può essere utilizzata per determinare gli elementi del prodotto. Poiché i due valori iniziali di potenza sono alti quanto 255, la loro somma potrebbe essere più grande di 255, ma se questo accade è possibile sottrarre 255 dal valore per arrivare nel range delle tabelle perché g255 = {01}. Anche se fino ad ora sono stati utilizzati esponenti decimali in questa spiegazione, tutti gli esponenti in ciò che segue sono esadecimale. N(xy) x 0 1 2 3 4 5 6 7 8 9 a b c d e f Y 0 64 7d 65 96 66 7e 2b af 2c 7f cc 97 53 44 67 1 00 04 c2 2f 8f dd 6e 79 58 d7 0c bb b2 39 11 4a 2 19 e0 1d 8a db fd 48 0a a8 75 f6 3e 87 84 92 ed 3 01 0e b5 05 bd 30 c3 15 50 7a 6f 5a 90 3c d9 de 4 32 34 f9 21 36 bf a3 9b f4 eb 17 fb 61 41 23 c5 5 02 8d b9 0f d0 06 b6 9f ea 16 c4 60 be a2 20 31 6 1a 81 27 e1 ce 8b 1e 5e d6 0b 49 b1 dc 6d 2e fe 7 c6 ef 6a 24 94 62 42 ca 74 f5 ec 86 fc 47 89 18 8 4b 4c 4d 12 13 b3 3a 4e 4f 59 d8 3b bc 14 b4 0d 9 c7 71 e4 f0 5c 25 6b d4 ae cb 43 52 95 2a 7c 63 a 1b 08 a6 82 d2 e2 28 ac e9 5f 1f a1 cf 9e b8 8c b 68 c8 72 45 f1 98 54 e5 d5 b0 2d 6c cd 5d 26 80 c 33 f8 9a 35 40 22 fa f3 e7 9c a4 aa 37 56 77 c0 d ee 69 c9 93 46 88 85 73 e6 a9 76 55 3f f2 99 f7 e df 1c 09 da 83 91 3d a7 ad 51 7b 29 5b d3 e3 70 f 03 c1 78 8e 38 10 ba 57 e8 a0 b7 9d d1 ab a5 07 Tabella 3.2 – N tale che {xy} = {03}N per un elemento {xy} del campo finito _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 45 di 82 E(xy) x 0 1 2 3 4 5 6 7 8 9 a b c d e f y 0 01 5f e5 53 4c 83 b5 fe fb c3 9f 9b fc 45 12 39 1 03 e1 34 f5 d4 9e c4 19 16 5e ba b6 1f cf 36 4b 2 05 38 5c 04 67 b9 57 2b 3a e2 d5 c1 21 4a 5a dd 3 0f 48 e4 0c a9 d0 f9 7d 4e 3d 64 58 63 de ee 7c 4 11 d8 37 14 e0 6b 10 87 d2 47 ac e8 a5 79 29 84 5 33 73 59 3c 3b bd 30 92 6d c9 ef 23 f4 8b 7b 97 6 55 95 eb 44 4d dc 50 ad b7 40 2a 65 07 86 8d a2 7 ff a4 26 cc d7 7f f0 ec c2 c0 7e af 09 91 8c fd 8 1a f7 6a 4f 62 81 0b 2f 5d 5b 82 ea 1b a8 8f 1c 9 2e 02 be d1 a6 98 1d 71 e7 ed 9d 25 2d e3 8a 24 a 72 06 d9 68 f1 b3 27 93 32 2c bc 6f 77 3e 85 6c b 96 0a 70 b8 08 ce 69 ae 56 74 df b1 99 42 94 b4 c a1 1e 90 d3 18 49 bb e9 fa 9c 7a c8 b0 c6 a7 c7 d f8 22 ab 6e 28 db d6 20 15 bf 8e 43 cb 51 f2 52 e 13 66 e6 b2 78 76 61 60 3f da 89 c5 46 f3 0d f6 f 35 aa 31 cd 88 9a a3 a0 41 75 80 54 ca 0e 17 01 Tabella 3.3 – Data una potenza (xy), l’elemento {E} del campo tali che {E} = {03}(xy) Per i campi utilizzati con Rijndael {03} è il generatore che produce la Tabella 3.2 e la Tabella 3.3. Utilizzando l’esempio precedente, la Tabella 3.2 mostra che {57}={03}(62) e che {83}={03}(50), dove l’esponente è rappresentato in esadecimale. Questo da come risultato {57} • {83} = {03}(62)+(50) e siccome (62)+(50)=(b2) in esadecimale, la Tabella 3.3 da come risultato {c1}, come prima. Queste tabelle possono inoltre essere utilizzate per determinare l’inverso di un elemento del campo in quanto g(x) ha un inverso rappresentato da g(ff) – (x) . Dunque l’elemento {af} = {03}(b7) ha come inverso g(ff) – (b7) = g(48) = {62}. Tutti gli elementi, eccetto {00}, ammettono inverso. 3.2.5 Polinomi con coefficienti in GF(28) I polinomi possono essere definiti con i coefficienti in GF(28). In questo modo, un vettore di 4-byte corrisponde ad un polinomio di grado inferiore a 4. I polinomi con quattro termini possono essere definiti con coefficienti che sono elementi del campo finito come: a(x) = a3 x3 + a2 x2 + a1 x + a0 dove i quattro coefficienti sono denotati come una parola nella forma [a0 , a1 , a2 , a3] (nota che gli indici crescono da sinistra a destra in questa notazione). Con un secondo polinomio: b(x) = b3 x3 + b2 x2 + b1 x + b0 l’addizione può essere effettuata sommando i coefficienti del campo finito a parità di potenza di x, che corrisponde ad una operazione di XOR tra i bytes corrispondenti in ciascuna delle parole o uno XOR dei valori completi di parola (nota che la variabile x qui non è la stessa utilizzata precedentemente nella definizione di un elemento singolo del campo finito). _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 46 di 82 La moltiplicazione è realizzata algebricamente espandendo il prodotto polinomiale e raccogliendo a pari potenza di x per avere: c(x) = c6 x6 + c5 x5 + c4 x4 + c3 x3 + c2 x2 + c1 x + c0 dove: c0 c1 c2 c3 c4 c5 c6 = = = = = = = a0 a1 a2 a3 a3 a3 a3 • • • • • • • b0 b0 b0 b0 b1 b2 b3 ⊕ ⊕ ⊕ ⊕ ⊕ a0 a1 a2 a2 a2 • • • • • b1 b1 ⊕ a0 • b2 b1 ⊕ a1 • b2 ⊕ a0 • b3 b2 ⊕ a1 • b3 b3 e • e ⊕ sono la moltiplicazione su campi finiti e l’addizione (XOR) rispettivamente. Questo risultato richiede sei bytes per rappresentare i suoi coefficienti, ma può essere ridotto (modulo) in un polinomio di grado 4 per fornire un risultato che è di grado inferiore a 4. In Rijndael il polinomio utilizzato è M(x)=x4 + 1 e la riduzione produce i seguenti coefficienti polinomiali: d0 d1 d2 d3 = = = = a0 a1 a2 a3 • • • • b0 b0 b0 b0 ⊕ ⊕ ⊕ ⊕ a3 a0 a1 a2 • • • • b1 b1 b1 b1 ⊕ ⊕ ⊕ ⊕ a2 a3 a0 a1 • • • • b2 b2 b2 b2 ⊕ ⊕ ⊕ ⊕ a1 a2 a3 a0 • • • • b3 b3 b3 b3 Se uno dei polinomi è fissato, questo può convenientemente essere scritto in forma matriciale: In quanto x4 + 1 non è un polinomio irriducibile in GF(256), non tutte le moltiplicazioni polinomiali sono invertibili. Per Rijndael è stato selezionato un polinomio che ha inverso: a(x) ={03} x3 + {01} x2 + {01} x + {02} a- 1 (x) ={0b} x3 + {0d} x2 + {09} x + {0e} Un altro polinomio che Rijndael utilizza ha a0 = a2 = a3 = {00} e a1 = {01}, ovvero è il polinomio x. Un ispezione della forma matriciale precedentemente illustrata, mostrerà che il suo effetto è quello di formare la parole di output ruotando i bytes della parola di input cosicché [b0 b1 b2 b3] sarà trasformato in [b3 b2 b1 b0], con i byte che si muovono verso le posizioni più alte ed il byte superiore che sposta (ruotando) nella posizione più bassa. Le più alte potenze della x corrispondono alle altre permutazioni cicliche dei quattro byte all'interno della parola. La funzione RotWord che è utilizzata nel key schedule corrisponde a x3. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 47 di 82 3.3 Descrizione dell’algoritmo Alla partenza della cifratura, l’input è copiato nello stato interno utilizzando le convenzioni precedentemente esposte. Una round key iniziale è sommata e lo state è trasformato iterando una round function in un certo numero di cicli. Al completamento il final state è copiato nell’ output utilizzando le stesse convenzioni. La round function è parametrizzata utilizzando un key schedule, che consiste in un array monodimensionale di parole a 32-bit per cui le parole basse 4, 6 o 8 sono inizializzate con la chiave di cifratura utilizzando la convenzione utilizzata nella sezione 3.1.3. In generale, la lunghezza dell’input, dell’output e dello state, misurato in multipli di 32 bits (Nb) è 4, 6 o 8 ma AES utilizza soltanto la lunghezza 4. Le lunghezze della chiave di cifratura, misurate in multipli di 32 (Nk), sono anch’esse di 4, 6 o 8, tutte e tre autorizzate sia da AES che da Rijndael. La cifratura è descritta nello pseudo codice sottostante. Le singole trasformazioni ed il key schedule sono descritti nelle prossime sezioni. Cipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr + 1)]) begin byte state[4,Nb] state = in AddRoundKey(state, w) for round = 1 step 1 to Nr 1 SubBytes(state) ShiftRow(state) MixColumns(state) AddRoundKey(state, w + round * Nb) end for SubBytes(state) ShiftRow(state) AddRoundKey(state, w + Nr * Nb) out = state end Il numero di cicli per la cifratura (Nr) varia con la lunghezza del blocco e della chiave come mostrato nella seguente Tabella 3.4. 4 4 10 Nb 6 12 8 14 6 8 12 14 12 14 14 14 Nr Tabella 3.4 – Numero di cicli in funzione del block size e key size Per cifrare, ogni ciclo dell'AES (eccetto l'ultimo) consiste nei seguenti quattro passaggi: • SubBytes — Sostituzione non lineare di tutti i byte che vengono cambiati secondo una specifica tabella. • ShiftRows — Spostamento dei byte di un certo numero di posizioni in maniera dipendente dalla riga di appartenenza • MixColumns — Combinazione dei byte con un operazione lineare, i byte vengono trattati una colonna per volta. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 48 di 82 • AddRoundKey — Ogni byte della tabella viene combinato con la chiave di sessione, la chiave di sessione viene calcolata dal gestore delle chiavi. L'ultimo round salta il MixColumns. In seguito analizzeremo in dettaglio i quattro passaggi compiuti in ogni round. 3.3.1 SubBytes La trasformazione SubBytes è una sostituzione non lineare che agisce sul singolo byte della state matrix per produrre un nuovo valore di byte utilizzando una tabella di sostituzione chiamata S-box. Questa trasformazione è illustrata nella Figura 3.2. s0,0 s0,1 s0,2 s0,3 s0,4 s0,5 s1,0 s1,1 s1,2 s1,4 s1,5 Sr,c s2,0 s2,1 s2,2 s2,3 s2,4 s2,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 Trasformazione Sub Bytes s0,0 s0,1 s0,2 s0,3 s0,4 s0,5 s1,0 s1,1 s1,2 s1,4 s1,5 Sr,c s2,0 s2,1 s2,2 s2,3 s2,4 s2,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 Figura 3.2 – La trasformazione SubBytes Questa sostituzione invertibile, è costruita componendo due trasformazioni: 1. L’inverso moltiplicativo nel campo finito come descritto in precedenza, con l’elemento {00} mappato su se stesso. 2. La trasformazione affine su GF(2) definita da: bi’ = bi ⊕ b(i+4)mod8 ⊕ b(i+5)mod8 ⊕ b(i+6)mod8 ⊕ b(i+7)mod8 ⊕ ci per 0 i < 8 dove bi è il bit i del byte, e ci è il bit i di un byte c con valore {63} o {01100011}. In forma matriciale la trasformazione affine di questa S-box può essere espressa con la seguente matrice: La trasformazione completa è fornita dalla seguente tabella. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 49 di 82 hex x 0 1 2 3 4 5 6 7 8 9 a b c d e f y 0 63 ca b7 04 09 53 d0 51 cd 60 e0 e7 ba 70 e1 8c 1 7c 82 fd c7 83 d1 ef a3 0c 81 32 c8 78 3e f8 a1 2 77 c9 93 23 2c 00 aa 40 13 4f 3a 37 25 b5 98 89 3 7b 7d 26 c3 1a ed fb 8f ec dc 0a 6d 2e 66 11 0d 4 f2 fa 36 18 1b 20 43 92 5f 22 49 8d 1c 48 69 bf 5 6b 59 3f 96 6e fc 4d 9d 97 2a 06 d5 a6 03 d9 e6 6 6f 47 f7 05 5a b1 33 38 44 90 24 4e b4 f6 8e 42 7 c5 f0 cc 9a a0 5b 85 f5 17 88 5c a9 c6 0e 94 68 8 30 ad 34 07 52 6a 45 bc c4 46 c2 6c e8 61 9b 41 9 01 d4 a5 12 3b cb f9 b6 a7 ee d3 56 dd 35 1e 99 a 67 a2 e5 80 d6 be 02 da 7e b8 ac f4 74 57 87 2d b 2b af f1 e2 b3 39 7f 21 3d 14 62 ea 1f b9 e9 0f c fe 9c 71 eb 29 4a 50 10 64 de 91 65 4b 86 ce b0 d d7 a4 d8 27 e3 4c 3c ff 5d 5e 95 7a bd c1 55 54 e ab 72 31 b2 2f 58 9f f3 19 0b e4 ae 8b 1d 28 bb f 76 c0 15 75 84 cf a8 d2 73 db 79 08 8a 9e df 16 Tabella 3.5 – La substitution table – Sbox [xy] (in esadecimale) Lo pseudo codice per questa trasformazione: SubBytes(byte state[4,Nb]) begin for r = 0 step 1 to 3 for c = 0 step 1 to Nb - 1 state[r,c] = Sbox[state[r,c]] end for end for end 3.3.2 ShiftRows La trasformazione ShiftRows opera individualmente su ognuna delle ultime tre righe della state matrix, shiftando ciclicamente i bytes nella riga cosicché: s’r,c = sr, (c+h[r, Nb])modNb per 0 c < Nb e 0 < r < 4 dove lo shift h[r, Nb] dipende dal numero di riga (r) e dalla dimensione del blocco nel modo seguente: h[r, Nb] Nb row (r) 1 2 3 4 1 2 3 6 8 1 1 2 3 3 4 Tabella 3.6 – Shift Offset per differenti block lenghts (Nb) e righe (r) Questo ha l’effetto di spostare i bytes verso le posizioni di indice più basso della riga eccetto quelli che appartengono ad un indice inferiore della riga stessa che vengono riportati in posizione di indice superiore (nella parte superiore della riga). Questa _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 50 di 82 azione di trasformazione è illustrata nella Figura 3.3 per un cipher block di dimensione 6. ShiftRows s0,0 s0,1 s0,2 s0,3 s0,4 s0,5 s1,0 sS1,2 sS1,3 sr,4 sS1,5 Sr,0 Ss1,1 r,1 r,2 r,3 S1,4 r,5 1. Non cambia s0,0 s0,1 s0,2 s0,3 s0,4 s0,5 2. ß Shift 1 s1,1 sr,4 s1,5 1,0 S 1,4 S Ssr,0 Ss1,2 S1,3 r,1 r,2 s r,3 S r,5 s2,0 s2,1 s2,2 s2,3 s2,4 s2,5 3. ß Shift 2 s2,0 s2,1 s2,2 s2,3 s2,4 s2,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 4. ß Shift 3 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 Figura 3.3 – ShiftRows agisce indipendentemente sulle righe della state matrix Lo pseudo codice per questa trasformazione è il seguente: ShiftRow(byte state[4,Nb]) begin byte t[Nb] for r = 1 step 1 to 3 for c = 0 step 1 to Nb - 1 t[c] = state[r, (c + h[r,Nb]) mod Nb] end for for c = 0 step 1 to Nb 1 state[r,c] = t[c] end for end for end 3.3.3 MixColumns La trasformazione MixColumns agisce indipendentemente su ogni colonna della state matrix e tratta ogni colonna come un polinomio a quattro termini come descritto nelle sezioni precedenti. Nella forma matriciale la trasformazione utilizzata è illustrata dalla equazione sottostante, dove tutti i valori sono elementi del campo finito come discusso nella sezione 3.2. per 0 c < Nb Questa trasformazione è illustrata in Figura 3.4 per un cipher block di 6. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 51 di 82 s0,0 s0,1 s0,2 S0,c s0,3 s0,4 s0,5 s1,0 s1,1 s1,2 S1,c s1,3 s1,4 s1,4 s2,0 s2,1 S 0,c s0,0 s0,1 s0,2 s0,3 s0,4 s0,5 s1,0 s1,1 s1,2 S1,c s1,3 s1,4 s1,4 Trasformazione Mix Columns s2,2 s2,3 s2,4 s2,5 S2,c s2,0 s2,1 s2,2 S2,c s2,3 s2,4 s2,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 S3,c S3,c Figura 3.4 – MixColumns agisce indipendentemente su ogni colonna della state matrix Lo pseudo codice per questa trasformazione è il seguente, dove la funzione FFmul (x,y) ritorna il prodotto di due elementi del campo finito x e y. begin byte t[4] for c = 0 step 1 to Nb 1 for r = 0 step 1 to 3 t[r] = state[r,c] end for for r = 0 step 1 to 3 state[r,c] = FFmul(0x02, t[r]) xor FFmul(0x03, t[(r + 1) mod 4]) xor t[(r + 2) mod 4] xor t[(r + 3) mod 4] end for end for end 3.3.4 AddRoundKey Nella trasformazione AddRoundKey, Nb parole dal Key Scheduler (descritto di seguito) sono sommate (XOR) nelle colonne della state matrix in modo che: [ b’0c , b’1c , b’2c , b’3c ] = [ b0c , b1c , b2c , b3c ] ⊕ [wround * Nb+c] per 0 c < Nb dove [wi] è la parola del key schedule e round è il numero di ciclo nel range 1 round < Nr. Il numero di ciclo parte a 1 perché c’è l'aggiunta di una chiave di iniziale prima della round function. l = round * Nb s0,0 s0,1 s0,2 Ss0,c 0,3 s0,4 s0,5 s1,0 s1,1 s1,2 Ss1,c 1,3 s1,4 s1,4 s2,0 s2,1 s3,0 s3,1 s2,2 s3,2 s2,4 s2,5 2,3 Ss2,c s3,3 S3,c s3,4 s3,5 ⊕ wl wl+1 wl+2 wl+c wl+3 wl+4 s0,0 s0,1 s0,2 Ss0,c 0,3 s0,4 s0,5 s1,0 s1,1 s1,2 Ss1,3 1,c s1,4 s1,4 s2,0 s2,1 s2,2 s2,3 s2,4 s2,5 s3,0 s3,1 s3,2 s3,3 s3,4 s3,5 wl+5 S2,c S3,c Figura 3.5 - Le parole del key shedule sono in XOR con la colonna della state matrix _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 52 di 82 Questa trasformazione è illustrata in Figura 3.5 per un cipher block size di 6 (dove l= round * Nb). Il byte address all’interno di ogni parola del key schedule è quello descritto nella sezione 3.1. Lo pseudo codice per questa trasformazione è la seguente, dove xbyte (r,w) estrae il byte r dalla parola w. AddRoundKey(byte state[4,Nb], word rk[]) // rk = w + round * Nb begin for c = 0 step 1 to Nb 1 for r = 0 step 1 to 3 state[r,c] = state[r,c] xor xbyte(r, rk[c]) end for end for end _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 53 di 82 3.4 Key Schedule Le chiavi di round sono derivate dalla chiave di cifratura per mezzo di un key schedule. Questo consiste fondamentalmente di due componenti: Key Expansion e Round key selection. Il principio base è il seguente: • Il numero totale dei bit della Round key è uguale alla lunghezza del blocco moltiplicata per il numero di round più uno (ad esempio per un blocco di 128 bit e 10 round, sono necessari 1048 Round key bit). • La chiave di cifratura è espansa in una Expanded Key • Le Round Key sono prese da questo Expnaded Key nel seguente modo: la prima Round Key consiste nelle prime Nb parole, la seconda delle seguenti Nb parole, e cosi via… Il key schedule consiste in un array lineare di parole da 4-byte denotate con la lettera wi o w[i] con i nel range 0 i < Nb(Nr+1). L’espansione dell’input key nel key schedule procede in accordo con lo pseudo codice seguente, dove la funzione SubWord(x) fornisce una parola di output, in cui la sostituzione S-box è stata applicata individualmente a ciascuno dei quattro byte del relativo input x. La funzione RotWord(x) prende una parola [b0, b1, b2, b3] come input e ritorna una parola [b1, b2, b3, b0]. L’array di parole Rcon[i] contiene i valori dati da [xi-1, 0, 0, 0] con xi-1 potenza di x nel campo GF(256) (nota che i parte da 1, non da 0). KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk) begin i=0 while (i < Nk) w[i] = word[ key[4*i], key[4*i+1], key[4*i+2], key[4*i+3] ] i=i+1 end while i = Nk while (i < Nb * (Nr + 1)) word temp = w[i - 1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i / Nk] else if ((Nk = 8) and (i mod Nk = 4)) temp = SubWord(temp) end if w[i] = w[i - Nk] xor temp i=i+1 end while end Nota che questo key schedule, per Nk=4 e Nb=6 può essere generato ‘on-the-fly’ se necessario, utilizzando un buffer di max(Nb, Nk) parole. Esso può inoltre essere diviso in key schedules separati per Nk<8 e Nk=8 rispettivamente. Figura 3.6 – Il key schedule ed il round key selection per Nk=4 e Nb=6 _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 54 di 82 Dunque, la procedura di encryption di Rijndael consiste in un'applicazione iniziale dell’operazione di AddRoundKey, seguita da (numero di cicli - 1) cicli e conclusa con un ciclo finale. La procedura di decryption di Rijndael funziona applicando l'inverso di tutte le trasformazioni descritte precedentemente, nell'ordine inverso, per ritornare al plaintext; per ulteriori dettagli si veda [1]. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 55 di 82 3.6 Implementazione software efficiente Quando si implementa un algoritmo è importante considerare alcuni aspetti che vanno al di fuori della specifica funzione che il sistema deve svolgere, in particolare, ed in maniera fortemente dipendente dal contesto, è importante analizzare in dettaglio l’efficienza. In un contesto mobile, quale quello wireless, l’efficienza è cruciale per alcuni motivi. In primo luogo, è necessario minimizzare il numero di istruzioni che il processore deve svolgere per una data funzionalità perchè molto spesso i dispositivi mobili sono di piccole dimensioni, e quindi la dissipazione che devono avere deve essere proporzionata ai parametri fisici che li caratterizzano. In secondo luogo, perché i dispositivi wireless funzionano spesso e volentieri a batteria, quindi un elevato consumo di potenza causato da una mancata o poco curata ottimizzazione, porterebbe ad avere una autonomia ridotta. Altri aspetti da considerare sono la potenza di calcolo limitata dei dispositivi, la memoria, ... In seguito analizzeremo una implementazione ottimizzata dell’algoritmo AES [4], focalizzando l’attenzione su due aspetti: ottimizzazione dell’algoritmo nella State matrix e modifica del key schedule. In entrambi i casi, la linea base consiste nella trasposizione della State matrix, e nella conseguente modifica del key schedule. s12 s0 s1 s2 s3 s13 s4 s5 s6 s7 s2 s6 s10 s14 s8 s9 s10 s11 s3 s7 s11 s15 s12 s13 s14 s15 s0 s4 s8 s1 s5 s9 È possibile aumentare il throughput di una implementazione AES modificando il modo in cui i dati vengono presentati al software. In particolare, le trasformazioni interne di un ciclo possono essere implementate utilizzando delle tabelle di look-up. Una possibile scelta è quella di tabulare soltanto la S-Box diretta ed inversa, calcolando normalmente tutte le altre trasformazioni. In particolare, questo significa che dobbiamo effettuare parecchie moltiplicazioni di GF soltanto per mezzo di tecniche software. Come detto, tutte le primitive considerate si comportano in maniera particolare operando sulla State matrix trasposta. Ciò implica che tutti gli step dell’algoritmo devono essere modificati per preservare la funzionalità globale mentre operano con la State matrix trasposta. In particolare: La trasformazione SubBytes non viene modificata, perché come precedentemente enunciato essa opera sul singolo bytes, indipendentemente dalla posizione sulla State matrix. La trasformazione ShiftRows non sposta affatto più lungamente le righe della State matrix; invece, ora funziona nello stesso senso sulle colonne. La trasformazione di AddRoundKey rimane pressoché immutata, poiché è costituita da un semplice XOR bit a bit fra la State matrix e le chiavi di round. Naturalmente, dobbiamo accertarci che le chiavi di round siano trasposte prima di essere impiegate. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 56 di 82 La trasformazione MixColums è profondamente rivista. Essa è accelerata grazie alla trasposizione della State matrix. Nel vecchio MixColumns, la trasformazione avveniva, come indicato precedentemente, con un prodotto matriciale in GF(28) delle colonne della State matrix, ovvero: s’0,c 02 03 01 01 s0,c 01 02 03 01 s1,c s’2,c 01 01 02 03 s2,c s’3,c 03 01 01 02 s3,c s’1,c = I costi per ogni colonna per effettuare il MixColumns sono: un raddoppio, 4 addizioni (XOR), e 3 rotazioni (tutte le operazioni lavorano in 32-bit). s’0,c s’1,c s0,c = 02 s1,c s’2,c s2,c s’3,c s3,c s3,c ⊕ 03 s0,c s1,c s2,c ⊕ s2,c s3,c s0,c s1,c s1,c ⊕ s2,c s3,c s0,c Per la MixColumns completa abbiamo invece 4 raddoppi, 16 addizioni e 12 rotazioni. Ogni raddoppio significa 4 moltiplicazioni in GF(28) di ogni byte della parola a 32-bit. Nella nuova e più efficiente versione di MixColumns, è possibile invece lavorare con la State matrix trasposta, e quindi processare la State array per righe anziché per colonne. s'0 s'4 s’8 s’12 s’1 s'5 s’9 s’13 s’2 s’6 s’10 s’14 01 01 02 03 s’3 s’7 s’11 s’15 03 01 01 02 s'0 s'4 s’8 s’12 02 03 01 01 = = 01 02 03 01 02 03 01 01 ⊗ s0 s4 s8 s12 s1 s5 s9 s13 s2 s6 s10 s14 s3 s7 s11 s15 ⊗ s0 s 4 s8 s12 s1 s5 s9 s13 s2 s6 s10 s14 s3 s7 s11 s15 _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 57 di 82 La nuova trasformazione MixColumns allora diventa: y0 = {02} * x0 ⊕ {03} * x1 ⊕ x2 ⊕ x3 y1 = x0 ⊕ {02} * x1 ⊕ {03} * x2 ⊕ x3 y2 = x0 ⊕ x1 ⊕ {02} * x2 ⊕ {03} * x3 y3 = {03} * x0 ⊕ x1 ⊕ x2 ⊕ {02} * x3 Dove, i simboli xi e yi (0 i 3) indicano le righe a 32-bit della State array prima e dopo la nuova operazione di MixColumns rispettivamente. La parola a 32-bit xi contiene 4 byte che vengono da 4 colonne differenti (similmente per yi). L’operazione {02}* xi o raddoppio consiste di 4 moltiplicazioni in GF(28) di ogni byte della parola 32bits. Di conseguenza la trasformazione di MixColumns è computata in soli 3 passaggi: uno step di somma, uno step di raddoppio ed uno step finale di somma. La Tabella 3.7 mostra i tre steps. Primo Secondo Terzo y0 = x1 ⊕ x2 ⊕ x3 x0 = 02 x0 y0 ⊕ = x0 ⊕ x1 y1 = x0 ⊕ x2 ⊕ x3 x1 = 02 x1 y1 ⊕ = x1 ⊕ x2 y2 = x0 ⊕ x1 ⊕ x3 x2 = 02 x2 y2 ⊕ = x2 ⊕ x3 x3 = 02 x3 y3 = x0 ⊕ x1 ⊕ x2 y3 ⊕= x0 ⊕ x3 Tabella 3.7 – Gli steps necessari per computare MixColumns Comparando i costi abbiamo 4 raddoppi, 16 XOR, 12 rotazioni nella implementazione standard, e 4 raddoppi, 16 XOR , nessuna rotazione e zero variabili intermedie, ovvero la nuova implementazione migliora le performance. Per la decifratura, viene utilizzata la trasformazione InvMixColumns, ovvero l’inversa di MixColumns. Anche in questo caso la trasformazione può essere resa più efficiente utilizzando la matrice trasposta. Inoltre, causa la complessa struttura dei coefficienti della matrice di InvMixColumns, il miglioramento ottenuto è superiore a quello della trasformazione diretta. Come possiamo notare nella formula sottostante, i coefficienti della matrice di InvMixColumns contengono un più grande numero di 1 che quelli della matrice di MixColumns. s'0,c 0e 0b 0d 09 s0,c 09 0e 0b 0d s1,c s’2,c 0d 09 0e 0b s2,c s’3,c 0b 01 09 0e s3,c s’1,c = Nel caso di InvMixColumns il metodo “double-and-add” può essere migliorato considerando i valori particolari dei coefficienti costanti. Questi coefficienti sono usati congiuntamente agli operandi x0 e x2 ha contenuti sia nella prima fila che nella terza fila e congiuntamente agli operandi x1 e x3 contenuti sia nella seconda che nella quarta fila. Per risparmiare l’operazione di raddoppio possiamo sommare queste due coppie di operandi e salvare il risultato in x0 e x1 rispettivamente. Invece di computare la sotto-espressione 04 * x0 ⊕ 04 * x2, possiamo calcolare la sotto-espressione 04 * _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 58 di 82 (x0 ⊕ x2), poiché non dobbiamo immagazzinare esclusivamente l’uno o l’altro addendo. Quindi possiamo sommare i valori precedentemente computati x0 e x1, che sono 04 * (x0 ⊕ x2) e 04 * (x1 ⊕ x3) rispettivamente, ed allora raddoppiarli, cosi da ottenere la sotto-espressione 08*( x0 ⊕ x1 ⊕ x2 ⊕ x3), che deve essere accumulata in ogni operando yi. La nuova trasformazione InvMixColumns è mostrata nella formula sottostante. s'0 s'4 s’8 s’12 = 0e 0b 0d 09 ⊗ s 0 s4 s8 s12 s1 s5 s9 s13 s2 s6 s10 s14 s3 s7 s11 s15 L’uso della State matrix trasposta conduce dunque ad un miglioramento considerevole delle prestazioni, in particolare si riduce il numero di operazioni elementari necessarie per portare a termine il passo MixColumns ed il suo inverso InvMixColumns. Confrontando l’implementazione efficiente con l’implementazione standard di AES, è possibile notare che, nel passaggio di InvMixColumns, permette di ridurre il numero di operazioni che è necessario compiere e consente di eliminare completamente il numero di variabili intermedie. Come mostra la Figura 3.7, l’implementazione standard (State matrix non trasposta) necessita di 12 doubling, 32 somme, 12 rotazioni e 4 variabili intermedie per InvMixColumns, mentre l’implementazione efficiente (con State matrix trasposta) richiede soltanto 7 somme e 27 raddoppi, eliminando completamente le variabili intermedie ed azzerando il numero di rotazioni. 35 30 25 numero 20 occorrenze 15 Efficiente 10 Standard 5 0 doubling sums rotations variabili intermedie tipo parametro Figura 3.7 – Confronto tra implementazioni AES per l’operazione di InvMixColumns Generalizzando, è possibile affermare che l’implementazione [4] esposta lavora meglio dell’implementazione standard di AES soprattutto nell’operazione di decifratura dei dati. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 59 di 82 4.0 Protocolli Wireless basati su AES In questo capitolo esamineremo tecniche AES-based per l’implementazione di protocolli di sicurezza nelle reti wireless. In primo luogo analizzeremo i modes of operation. L’algoritmo AES, come qualsiasi block cipher, deve essere utilizzato con un modes of operation, ovvero un algoritmo che impiega il cipher per produrre ciphertext partendo da plaintext, e viceversa. I modes of operation analizzati nel seguente capitolo sono: Electronic Codebook (ECB) mode, Counter (CTR) mode e Cipher-Block Chaining (CBC) mode. In seguito analizzeremo i diversi 802.11 encapsulation data basati su AES, ovvero i protocolli proposti per incapsulare i pacchetti (MPDU) o frammenti di pacchetto (MSDU) nelle reti senza fili, utilizzando i diversi mode of operation. Le soluzioni esaminate e confrontate secondo diversi parametri nel seguente capitolo sono: AES-CCM e AES-OCB. Concluderemo il capitolo con una descrizione di WPA2, il protocollo che si propone come standard ufficiale per la sicurezza di IEEE 802.11. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 60 di 82 4.1 AES encapsulation data 4.1.1 Modes of operation AES è cipher a blocchi a chiave simmetrica. Un cipher a chiave simmetrica utilizza la stessa chiave per l’operazione di cifratura e decifratura. AES supporta chiavi da 128-, 192-, 256-bit. Chiavi più lunghe possono assicurare maggiore sicurezza se propriamente utilizzate. Attualmente si sostiene che chiavi da 128 bit garantiranno una sicurezza adeguata in qualsiasi tipo di applicazione commerciale e privata per qualche decade, quindi il supporto per le chiavi a 192 e 256 bit è destinato ad usi futuri, piuttosto che ad attuali implementazioni pratiche. Un block cipher opera su una stringa di bytes di dimensione fissa, mentre uno stream cipher, come RC4 utilizzato in WEP, trasforma un singolo byte alla volta. Il numero di bit in un blocco è detto cipher block size. AES utilizza blocchi da 128-bit, ovvero 16 bytes. Se i dati che devono essere protetti dal block cipher non sono multipli del block size, allora si utilizza uno schema di padding (riempimento) prima di applicare l’algoritmo ai dati. Per utilizzare un block cipher si impiegano diversi mode of operation. Un mode of operation è un algoritmo che utilizza il cipher per produrre ciphertext partendo da un plaintext e viceversa. Alcuni esempi di mode of operation includono Electronic Codebook (ECB) mode, Counter (CTR) mode, e Cipher-Block Chaining (CBC) mode. E’ importante notare che la cifratura fornisce soltanto la privacy dei dati, in particolare non fornisce alcuna protezione contro la modifica dei dati. Per garantire l’autenticità dei dati è necessario utilizzare un meccanismo di autenticazione dei dati (ad es. MIC). Ricordiamo inoltre che la letteratura denomina questi message authenitcation code, o MACs, ma poiché IEEE 802 aveva già utilizzato l’acronimo MAC per identificare il “Media Access Control", TGi decise di utilizzare l’acronimo MIC. 4.1.1.1 Electronic Codebook (ECB) mode ECB mode è utilizzato nativamente dai block cipher. Per utilizzare questo modo di funzionamento, si partiziona il messaggio M in blocchi M1 M2 …Mm e si cifrano uno alla volta: for i = 1 to n do Ci EK(Mi) dove Ek(.) denota la funzione di encryption con la chiave K. La sequenza di blocchi risultante C1 C2 … Cm è il messaggio cifrato, dove ogni blocco è semplicemente il corrispondente al blocco di plaintext cifrato con la chiave. Il decryption è il processo inverso: for i = 1 to n do Mi DK(Ci) dove Dk (.) denota il la funzione di decryption con la chiave K. La Figura 4.1 mostra il funzionamento di ECB mode. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 61 di 82 Mi-1 Mi Ek Ci-1 Mi+1 Ci-1 Ci Ci+1 Ek Ek Dk Dk Dk Ci Ci+1 Mi-1 (a) ECB encryption Mi Mi+1 (b) ECB decryption Figura 4.1 – ECB mode ECB mode è insicuro per stream di messaggi che potrebbero avere dati ripetuti, infatti supponendo di avere due blocchi di dati identici M e N, allora si avrebbe che Ek (N) = Ek (M). Cosi un protocollo basato su ECB pubblicherebbe quando due blocchi sono identici o meno, e questo può essere di gran aiuto per un attacker. Definiamo con perdita di funzionamento un parametro che tiene conto delle informazioni che un attacker è in grado di ricavare grazie al funzionamento improprio del modes of operation. Le informazioni utili riguardo plaintext, ricavabili grazie alla perdita di funzionamento, si possono ottenere molto più lentamente in altri mode of operation che in ECB mode. Operation mode conosciuti fruiscono informazione al rate di O(q2/2b), dove q è il numero totale di blocchi cifrati utilizzando la stessa chiave, e b è la dimensione del blocco espressa in bit. Ad esempio, il vecchio Data Encryption Standard (DES) usa b=64, mentre AES utilizza b=128. Cosi DES perde tutta la sua sicurezza dopo che ha cifrato circa q=232 blocchi utilizzando la stessa chiave, mentre i metodi AES sono sicuri fino a q=264 blocchi cifrati con la stessa chiave. Poiché la degradazione è indipendente dalla lunghezza della chiave, la lunghezza del blocco è un secondo parametro che interessa la sicurezza. Una delle motivazioni principali considerate per la definizione AES, era che il formato di blocco 64-bit usato da DES è troppo piccolo per fornire oggi una sicurezza sufficiente. 4.1.1.2 Counter (CTR) mode Sia Counter mode che CBC mode (presentato nel prossimo paragrafo) fuoriescono le informazioni al rate di O(q2/2b), quindi sono modi pratici per implementare block cipher. Entrambi funzionano utilizzando dati ausiliari per “randomizzare” l’operazione di encryption, ovviando il problema di perdita di funzionamento che si presenta con il ECB mode. Il Counter mode usa un counter incrementale per i dati ausiliari. Se rappresentiamo ancora un messaggio M come dei blocchi M1 M2 …Mn, allora il Counter mode può essere a descritto come: when the key K is assigned, set counter 0 for each message M = M1 M2 Mn initial-counter counter for i = 1 to n do Ci Mi ⊕ EK(counter), counter counter + 1 encrypted-message = initial-counter C1 C2 Cn _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 62 di 82 Ovvero, Counter mode cifra il counter, ed incrementa il valore dello stesso di uno per ogni blocco cifrato. In seguito viene effettuato lo XOR tra il valore del counter cifrato ed il plaintext, per produrre il ciphertext. L’encryptor appende all’inizio del blocco di ciphertext il valore iniziale del counter, per dire al decryptor a che valore inizializzare il counter. Il decryptor allora estrae così il plaintext: for an encrypted message C = initial-counter C1 C2 Cn counter initial-counter for i = 1 to n do Mi Ci ⊕ DK(counter), counter counter + 1 M = M1 M2 Mn La Figura 4.2 mostra CTR mode, il simbolo T indica il counter, Mi indica il blocco del messaggio, EK e DK le funzioni di encryption e decryption rispettivamente. Figura 4.2 – CTR mode E’ importante notare che il Counter mode fallisce catastroficamente se il valore del counter è ripetuto con la stessa chiave. In pratica, questo significa che è rischioso usare il Counter mode senza gestione della chiave per fornire una nuova chiave ad ogni sessione. 4.1.1.3 Cipher-Block Chaining (CBC) mode CBC mode è il mode of operation più utilizzato. CBC utilizza un vettore di inizializzazione (IV) casuale per impedire la perdita di funzionamento. La cifratura di CBC mode su un messaggio M può essere descritta come: _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 63 di 82 for each message M = M1 M2 Mn IV randomly selected value initial-IV IV for i = 1 to n do Ci EK(Mi ⊕IV), IV encrypted-message = initial-IV C1 C2 Ci Cn Ovvero, CBC mode maschera il plaintext effettuando una operazione di XOR tra il vettore di inizializzazione (IV) casualmente generato e il plaintext prima di essere cifrato. Il valore cifrato risultante diventa l’IV da utilizzare nel passo successivo per mascherare il plaintext successivo. CBC mode ripete questo procedimento per ogni blocco di dati presente nel messaggio. E’ importante notare che CBC seleziona un IV casuale ad ogni passo, e fallisce catastroficamente se ciò non avviene. L’encryptor appende all’inizio del blocco di ciphertext il valore iniziale del IV, per comunicare al decryptor a che valore inizializzare l’IV. Il decryptor allora estrae il plaintext con il processo inverso: for an encrypted message C = initial-IV C1 C2 IV initial-IV for i = 1 to n do Mi IV ⊕ DK(Ci), IV M = M1 M2 Cn Ci Mn La Figura 4.3 mostra schematicamente CBC mode. Mi-1 Mi Mi+1 Ci-1 Ci Ci+1 Dk Dk Dk IV Ek Ek Ek IV Ci-1 Ci (a) CBC encryption Ci+1 Mi-1 Mi Mi+1 (b) CBC decryption Figura 4.3 – CBC mode Oltre che fornire la segretezza di dati, il modo di CBC può anche essere usato per computare un codice di integrità del messaggio, o MIC (Message Integrità Check), per fornire l'autenticità (authentication) dei dati. Se Known-IV denota un valore di IV noto, il CBC-MAC è definito come: _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 64 di 82 for a message M = M1 M2 Mn IV Known-IV for i = 1 to n do MICi EK(Mi ⊕ IV), IV MICi MIC = MICn; Ovvero, il tag MICn diviene il MIC per verificare l’integrità dei dati. Se il MIC è trasmesso con il messaggio M, il ricevente autorizzato del messaggio — cioè, quello che tiene la chiave K — può rilevare i falsi recomputing calcolando il MIC sul messaggio ricevuto confrontandolo con quello inviato. Come CBC mode, la sicurezza CBC-MAC decade al rate di O(q2/2b), cosi quando il block cipher è AES, il block size è b=128, ed è sicuro utilizzare CBC-MAC con la stessa chiave al più con q=264 blocchi — un numero enorme che non sarà raggiunto mai oggi dalle applicazioni pratiche. Di seguito la Figura 4.4 mostra il calcolo del MIC con CBC. Flag Nonce Dlen AES_E(K) CBC-MAC AES_E(K) AES_E(K) AES_E(K) AES_E(K) AES_E(K) 0 padded 0 padded Rty=0 Hlen FC Dur A1 A2 A3 SC A4 QC PN Clear text frame Data MIC Dlen Figura 4.4 – Processo di calcolo di MIC con CBC, ovvero CBC-MAC _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 65 di 82 4.1.2 802.11 Encapsulations based on AES IEEE 802.11 TGi (Task Group i) ha ricevuto due proposte di encapsulation basate sui modes of operation di AES, la prima è chiamata AES-CCM e la seconda AES-OCB. In seguito analizzeremo in dettaglio questo due protocolli, ed effettueremo alcuni confronti atti a mettere in luce pregi e difetti dei due protocolli. 4.1.2.1 AES-CCM encapsulation Il protocollo AES-CCM è basato sull’AES in Counter (CTR) mode per la privacy dei dati e CBC-MAC per l’autenticità. Il protocollo AES-CCM richiede due variabili di stato. La prima, impiega una single-key AES. Il protocollo CCM utilizza questa chiave sia per cifrare che per calcolare il MIC. L’utilizzo della stessa chiave per due funzioni differenti è normalmente considerato una pratica poco consona. Tuttavia, Jacob Jonson di RSA Labs ha provato che questo non è un problema concreto quando Counter mode counter e CBC-MAC IV sono costruiti come fatto nel protocollo AES-CCM. La seconda variabile è un packet counter di 48 bit. Il protocollo AES-CCM utilizza questo packet sequence counter per costruire sia il CTR counter che il CBC-MAC IV. CCM costruisce CTR counter e CBC-MAC IV come concatenazione del MAC address della macchina mittente, il packet counter, un 16 bit zero per-packet block counter, e 16 bits di altri dati necessari a distinguere il Counter mode counter da CBC-MAC IV. La costruzione del Counter mode encryption counter e del CBC-MAC IV da parte del protocollo CCM a partire dal packet counter fornisce la key separation necessaria per usare la stessa chiave sia per cifrare che per il MIC. Il protocollo AES-CCM incapsula i MPDU di 802.11, o i frammenti di pacchetto, in quattro passi: 1. Costruisce il CTR counter e CBC-MAC IV a partire dal packet counter, ed allora incrementa il counter di uno. 2. In seguito, utilizza la chiave AES e il CBC-MAC IV per calcolare il MIC sopra l’indirizzo sorgente e di destinazione, il QoS traffic class, il data length, e il MPDU data. Tronca il valore MIC a 64-bits ed allega il risultato ai dati di MPDU. 3. Utilizza la chiave AES ed il Counter mode counter per cifrare il dati MPDU utilizzando l’AES Counter mode, includendo il MIC appeso. 4. Completa l’MPDU protetto inserendo il valore del packet counter tra l’header 802.11 ed i dati cifrati. Quindi, il protocollo di AES-CCM sviluppa il carico utile di dati di MPDU da 14 byte — 6 per il valore del packet sequence counter e 8 per il MIC cifrato. La Figura 4.5 mostra AES-CCM. La Figura deve essere letta dall’alto verso il basso, e da sinistra verso destra. Come possiamo notare, la parte superiore si riferisce al calcolo del MIC. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 66 di 82 IV Flag Nonce Dlen CBC-MAC AES_E(K) AES_E(K) AES_E(K) AES_E(K) AES_E(K) AES_E(K) 0 padded 0 padded Clear text frame Hlen FC Dur A1 A2 A3 SC A4 QC PC Data MIC Counter preload Flag Nonce Cnt Pl(1) Pl(2) Pl(C) Pl(0) AES_E(K) AES_E(K) AES_E(K) AES_E(K) Transmitted encrypted frame FC Dur A1 A2 A3 SC A4 QC PC Data MIC FCS Figura 4.5 - Cifratura ed Autenticità AES-CCM Il processo di decapsulation di un MPDU ricevuto avviene con i seguenti passi: 1. Estrae il packet counter dal MPDU ricevuto. Se questo valore è già stato ricevuto per la chiave AES corrente, il pacchetto viene scartato come replica. Altrimenti, costruisce il CTR counter ed il CBC-MAC IV a partire dal packet sequence counter. 2. In seguito, Counter-mode decifra il payload cifrato, utilizzando la chiave AES ed il CTR counter precedentemente ricostruito. 3. In fine, ricompiuta il MIC utilizzando la chiave AES ed il CBC-MAC IV, tronca il valore a 64-bits, e confronta il risultato con il valore del MIC decifrato nel MPDU ricevuto. Se i due valori differiscono, il pacchetto ricevuto viene scartato come non valido, altrimenti il pacchetto viene accettato come buono. IV Flag Nonce Dlen AES_E(K) CBC-MAC AES_E(K) AES_E(K) AES_E(K) AES_E(K) AES_E(K) 0 padded Decrypted frame Hlen FC Dur A1 A2 A3 SC A4 QC PC MIC check Data Counter preload Flag Nonce Cnt Pl(1) Pl(2) Pl(C) Pl(0) AES_E(K) AES_E(K) AES_E(K) AES_E(K) Received encrypted frame FC Dur A1 A2 A3 SC A4 QC PC Data MIC FCS Figura 4.6 –Decifratura ed Autenticità AES-CCM _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 67 di 82 Quando utilizzato con uno schema di gestione della chiave, questo procedimento soddisfa i requisiti di sicurezza. Il controllo su MIC rende i falsi computazionalmente non praticabili, ed il controllo sul packet counter evita le ripetizioni, a meno che un attacker possa generare i falsi. Lo schema non riusa mai il counter value o IV con la stessa chiave. Il MIC protegge gli indirizzi di sorgente e destinazione da modifiche. In questo contesto viene minimizzato il numero di primitivi crittografici ad uno — AES — ed AES è il migliore primitivo crittografico corrente. Infine, è importante sottolineare che sia il Counter mode che il CBC-MAC possono essere implementati efficientemente in software. 4.1.2.2 AES-OCB encapsulation Il protocollo AES-OCB è basato su AES in Offset Codebook mode, abbreviato OCB. OCB è un nuovo mode of operation inventato da Phil Rogaway, un crittografo dell’Università della California. Il protocollo AES-OCB è invece da attribuire ai signori Cam-Winget e Walzer. OCB mode garantisce sia data privacy che data authenticity con un singolo passaggio sopra i dati ed usando una sola chiave. Il mode of operation deriva il relativo nome dal b valore O = EK(0 ) , che è chiamato offset codebook e denota il vettore di b-bit a zero cifrato con la chiave K. OCB mode impiega un nonce (valore qualsiasi che è utilizzato al più una volta nel contesto della stessa chiave) invece che un IV o un counter per “randomizzare” l’encrytpion. L’offset codebook ed il nonce N sono utilizzati per computare l’offset come EK(Oi ⊕ N). L’offset viene aggiornato opportunamente ad ogni ciclo. Se N denota il nonce per il messaggio M = M1 M2 …Mn, OCB mode cifra l’i-esimo blocco Mi come EK(Mi ⊕ Offseti) ⊕ Offseti; OCB mode cifra il blocco finale del messaggio in un modo un po’ differente, come un valore Yn, la cui forma non è importante per capire il funzionamento. Infine, OCB mode computa il MIC come EK(M1 ⊕ … ⊕ Mn ⊕ Yn ⊕ Offsetn+1). Poiché OCB mode usa un singolo passaggio sia per cifrare che per autenticare i dati, implementazioni software sono circa due volte più veloci dei metodi classici, come quelli usati dal protocollo di AES-CCM. La cosa ancor più interessante è che OCB mode da una prova di sicurezza dando i limiti precisi circa la sua perdita di funzionamento. Il teorema sulla sicurezza di OCB mode afferma che ogni attacco su OCB mode può essere trasformato in un attacco per rompere l’algoritmo di cipher. Quindi, se si crede AES sicuro, allora anche l’uso di AES in OCB è sicuro. Il calcolo del teorema ribadisce che OCB mode perde funzionamento 2 b+1 ad un tasso massimo di 3 q /2 — come prima q è il numero totale di blocchi cifrati con la stessa chiave, e b il cipher block size. Come AES-CCM, il protocollo AES-OCB richiede due variabili di stato. La prima impiega una chiave AES singola K. Il protocollo AES-OCB utilizza questa chiave sia per l’encapsualtion che per la decapsulation. La seconda variabile di stato è un packet sequence counter a 28-bit. Il protocollo AESOCB utilizza il packet sequence counter per costruire il nonce di OCB mode. Il protocollo costruisce il nonce di OCB mode come concatenazione dell’indirizzo MAC di sorgente e di destinazione, il QoS traffic class, ed il packet sequence counter. Il protocollo AES-OCB opera su pacchetti interi di 802.11 (MSDU). L’encapsulation richiede i seguenti passi: 1. Come prima cosa, costruisce il nonce di OCB mode, ed incrementa il counter di uno. In questo modo impedisce il riuso di nonce futuri con la stessa chiave. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 68 di 82 2. Una volta che questo è fatto, usa la chiave di AES, il nonce e l’offset codebook per creare l’offeset e per cifrare in OCB-mode i dati di MSDU. 3. Completa il MSDU protetto inserendo il valore del counter tra MSDU header ed i suoi dati cifrati. Come mostra la Figura, 4.7 AES-OCB aggiunge 12 byte al MSDU utilizzato, 8 per il MIC OCB e 4 per il valore del counter. Encrypted Counter 4 Data (PDU) >=1 MIC 8 Figura 4.7 – OCB aggiunge 12 byte al MSDU Di seguito è riportato lo pseudo codice per OCB [5]. Come possiamo notare, M rappresenta il messaggio che desideriamo cifrare dopo averlo scomposto in blocchi M[1]M[2]…M[n] da 128 bit ciascuno tranne l’ultimo, che infatti ha meno di 128 bit. K è la chiave di cifratura, ovvero una chiave AES. N rappresenta il nonce a 128bit, O rappresenta il vettore di offset cifrato con la chiave K. C[n]0* rappresenta il padding per l’ultimo blocco. function ocb-aes-encrypt(K, M, Nonce) begin Offset = AES(K, Nonce xor O) Checksum = 0 for i = 1 to n-1 do begin Offset = Offset xor O(ntz(i)) Checksum = Checksum xor M[i] C[i] = Offset xor AES(K, M[i] xor Offset) end Offset = Offset xor O(ntz(n)) Pad = AES (K, len(M[n]) xor O(-1) xor Offset) C[n] = M[n] xor (the first |M[n]| bits of Pad) Checksum = Checksum xor Pad xor C[n]0* FullTag = AES(K, Checksum xor Offset) Tag = a prefix of FullTag (of the desired length) return C[1]... C[n-1] C[n] Tag end La Figura 4.8 mostra invece una rappresentazione grafica di OCB. La figura deve essere letta da sinistra a destra: in primo luogo computiamo l’offset, poi utilizziamo l’offset in ogni blocco del messaggio, aggiornando l’offset di volta in volta. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 69 di 82 Figura 4.8 – Cifratura AES-OCB Il protocollo AES-OCB decapsula un MSDU ricevuto con i seguenti passi: 1. Estrae il counter dal MSDU ricevuto. Se questo valore è già stato ricevuto per la chiave AES corrente, il pacchetto viene scartato come replica. Altrimenti estrae l’indirizzo di sorgente e destinazione, il QoS traffic class e ricostruisce il nonce di OCB mode. 2. In seguito, usa la chiave AES per decifrare in OCB-mode i dati MSDU. Se la decifratura fallisce, i dati sono trattati come non validi, se ha successo, il pacchetto viene accettato come buono. Figura 4.9 – Decifratura AES-OCB _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 70 di 82 Quando utilizzato con uno schema di gestione della chiave, questo procedimento soddisfa i requisiti di sicurezza. La costruzione del nonce protegge gli indirizzi di sorgente e destinazione, il QoS traffic class, ed il packet sequence number da modifiche o perdite. Se un attacker prova a modificare un pacchetto buono, il processo di decifratura in ricezione fallisce. Il MIC OCB rende le falsificazioni computazionalmente non praticabili, ed il packet sequence evita ripetizioni, salvo il caso in cui un attacker sia in grado di generare dei falsi. Lo schema non riusa mai il valore del packet sequence counter con la stessa chiave, quindi i nonces costruiti sono tutti unici. Minimizza il numero di primitivi crittografici ad uno, AES, il primitivo crittografico migliore nella pratica corrente. Infine, OCB mode può essere implementato efficientemente in software, in maniera più efficiente delle procedure convenzionali che fanno due passaggi sopra i dati del pacchetto. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 71 di 82 4.2 Confronto tra Encapsulations data Entrambi i protocollo basati su AES soddisfano i requisiti di sicurezza richiesti. Essi si differenziano per una serie di punti che in seguito verranno analizzati. 4.2.1 Data Authenticity La prova di sicurezza per OCB mode dimostra un limite superiore esatto sul vantaggio 2 b+1 che un attacker può avere, 3 q /2 , dove q è il numero totale di blocchi cifrati con la stessa chiave, e b è il numero totale di bit nel cipher block size. Per AES, b = 128. Con un sequence space di 228 MSDU ed un packet size massimo di 212 bytes = 28 8 28 blocchi, il massimo numero di blocchi protetti con la stessa chiave diventa q = 2 2 36 = 2 , ed il massimo vantaggio che un qualsiasi attacker può avere nel manipolare un 36 2 129 72 129 57 pacchetto è 3 (2 ) /2 = 3 2 /2 = 3/2 . Ciò non è una minaccia significativa. L’autenticità dei dati del protocollo AES-CCM non è tanto definita. Una prova che rende O(q2/2b) un limite di sicurezza esiste anche per CBC-MAC, ma suppone che tutti i messaggi abbiano la stessa lunghezza. Per compensare ciò, il protocollo AES-CCM protegge il campo di lunghezza dei dati 802.11 includendolo nel calcolo del CBC-MAC ed effettua test per verificare se i dati protetti coincidono realmente con il numero di byte specificati. I crittografi ritengono che questo assicuri una costruzione sicura, ma non tutti sono concordi con questa affermazione. Quindi OCB mode sembra essere superiore per il data authentication. 4.2.2 Packet sequence space size Uno dei motivi per aumentare il sequence space del protocollo AES-CCM a 48-bit è per semplificare il keying 802.11. Il protocollo AES-OCB deve essere modificato per accomodare questa semplificazione. Tuttavia, per procedere su questa strada, sono necessarie nuove tecniche, poiché il metodo corrente basato sulla costruzione di nonce non è sufficiente. La costruzione del nonce può essere utilizzata per proteggere al massimo 128-bit. Il packet sequence counter di 28-bit del protocollo AES-OCB deriva dal fatto che questo è tutto quello che rimane dai 128-bit del nonce dopo aver incluso gli indirizzi di sorgente e destinazione ed il QoS traffic class. Un metodo per supportare sequence space più grandi esiste, ed è chiamato associated data construction. I dati associati sono dati “supplementari” che devono essere protetti da falsificazioni, ma rimanere in chiaro. Un modo per proteggere i dati associati è quello di computare il CBC-MAC ed effettuare lo XOR del risultato nel OCB MIC. È probabile che il protocollo di AES-OCB sarà adattato per usare packet sequence space a 48-bit nel modo seguente. Il nonce sarà costruito dal packet sequence counter di 48-bit, l’indirizzo sorgente, e lo zero pad. I dati associati saranno costruiti a partire dall’indirizzo di destinazione, il QoS traffic class, e lo zero pad. Il CBC-MAC dei dati associati aggiungerà una extra encryption per packet. Il vantaggio massimo di un 58 2 129 116 129 13 attacker potrà avere con questa soluzione arriverà a 3 (2 ) /2 = 3 2 /2 = 3/2 , che non è più una probabilità insignificante, ma neanche un problema in pratica. Per raggiungere questo vantaggio un attacker dovrà scegliere tutti i dati da proteggere, e deve anche scegliere 258 blocchi in totale. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 72 di 82 4.2.3 MSDU vs. MPDU Il protocollo AES-CCM protegge i MPDU, i frammenti di pacchetto 802.11, mentre il protocollo AES-OCB protegge MSDU, i pacchetti 802.11. Proteggere i MSDU è architetturalmente la soluzione migliore, ovvero conduce ad una implementazione più flessibile e riutilizzabile. Un protocollo che lavora con i MSDU può infatti essere utilizzato con qualsiasi media 802. Inoltre, questo approccio minimizza l’overhead, infatti il protocollo AES-OCB aggiunge sempre 12 bytes di overhead ad ogni pacchetto. Tuttavia, se un MSDU è frammentato in n MPDU, il protocollo AES-CCM aggiunge 16 n bytes di overhead. In favore del protocollo AES-CCM è possibile affermare che applicare protezioni crittografiche a MPDU è più semplice da fare all’interno delle implementazioni hardware dell’architettura 802.11. 4.2.4 Performance Non esistono differenze di performance tra i due approcci quando entrambi sono implementati in hardware. Quando però è usato il software, il protocollo AES-OCB ha circa un vantaggio di prestazioni di 2:1 rispetto al protocollo AES-CCM. Questo è dovuto al fatto che AESCCM richiede il doppio delle operazioni crittografiche rispetto ad AES-OCB, ed il costo delle operazioni crittografiche domina il costo di tutte le altre operazioni. AES può essere implementato in software con un costo di corca 20 o 30 cicli per byte. Il data rate massimo di un utente 802.11a è circa 4.5 milioni di bytes per secondo, ed il data rate massimo di un utente 802.11b è circa 875 K bytes per secondo. Questo significa che, per un Access Point 802.11, il protocollo AES-OCB richiede la dedica di circa 90 135 MHz alla crittografia ed AES-CCM richiede circa 180 - 270 MHz. Per un Access Point 802.11b, AES-OCB richiede 17 – 26.5 MHZ e AES-CCM richiede 34 – 53 MHz. 4.2.5 La Situazione dei Brevetti Il motivo primario per lo sviluppo del protocollo AES-CCM è stato evitare i reclami di proprietà intellettuale. Tre brevetti sono stati archiviati che potrebbero applicarsi a OCB mode. Phil Rogaway, l’inventore di OCB mode, ha archiviato un brevetto. Il punto di partenza di Rogaway è stato un mode inventato da Charanjint Jutla e chiamato IAPM, per cui l’IBM ha depositato un brevetto. In fine, Virgil Gligor dell’Università di Maryland ha inventato un nuovo mode of operation che utilizza tecniche simili ed ha anch’esso depositato un brevetto che OCB mode può infrangere. Una fazione presso il comitato 802.11 desidera evitare interamente tutti gli ostacoli derivanti dai meccanismi di brevetto e sta combattendo per inserire AES-CCM nella security draft. Questa fazione ha voti sufficienti per bloccare lo standard fino a che AES-CCM non è incorporato. Questa fazione ha voti sufficienti per ostruire il campione fino ad incorporare AES-CCM. D'altra parte, una seconda fazione dei fornitori ha ultimato i lavori sufficienti su AES-OCB e questa fazione ha voti sufficienti per impedire la rimozione AES-OCB dallo standard finale. Quindi, sembra che l'unico compromesso possibile sia quello di implementare entrambi. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 73 di 82 4.3 Wi-Fi Protected Access 2 Dopo aver presentato i mode of operation di AES impiegati nell’ambito delle reti 802.11, analizzeremo WPA2, un protocollo recentemente implementato che fa uso di queste soluzioni per cercare di risolvere, in via definitiva, le problematiche riscontrate con l’uso dei protocolli basati su RC4 come WEP. Lanciato nel Settembre 2004 da parte della Wi-Fi Alliance, WPA2 è un protocollo certificato interoperabile con la specifica 802.11i. Come WPA, WPA2 supporta l’autenticazione IEEE 802.1X/EAP e la tecnologia pre-shared-key (PSK). Esso include un nuovo meccanismo di cifratura avanzato, ovvero AES-CCM. E’ possibile dunque affermare che WPA2 è una implementazione evoluta del framework 802.11i precedentemente esposto, in quanto fa uso delle componenti del framework stesso ed utilizza AES per cifrare i pacchetti di dati. Come mostra la Tabella 4.2 ci sono due modi di certificazione per WPA e WPA2, Enterprise e Personal. Entrambi forniscono autenticazione e cifratura. Tutti i dispositivi certificati Wi-Fi, sono nella versione Personal per default. Mode Enterprise Mode (Business and Government) Personal Mode (SOHO/personal) WPA WPA2 Authentication: IEEE 802.1X/EAP Authentication: IEEE 802.1X/EAP Encryption: TKIP/MIC Encryption: AES-CCMP Authentication: PSK Authentication: PSK Encryption: TKIP/MIC Encryption: AES-CCMP Tabella 4.2 – WPA e WPA2 mode types Enterprise mode opera in un modo controllato per fare fronte a richieste di sicurezza stringenti. Esso fa leva sul framework di autenticazione IEEE 802.1X ed usa un Extensible Authentication Protocol (EAP) con un server di autenticazione per fornire autenticazione reciproca forte fra client e server di autenticazione via access point. In questo modo, ad ogni utente è assegnato un meccanismo chiave unico per accedere alla WLAN. Ciò permette un elevato livello di privacy. Per WPA, è utilizzato TKIP per la cifratura dei pacchetti. Come precedentemente detto, TKIP impiega un algoritmo di cifratura che cambia la chiave di cifratura frequentemente, rendendo il codice crittografico estremamente difficile da rompere. Per WPA2 è invece impiegata la cifratura AES. AES è molto più sicuro di TKIP, quindi fornisce una protezione di rete addizionale. Personal mode è stato invece progettato per ambienti domestici ed utenti small office/home office (SOHO), che non hanno installato un server di autenticazione. Esso opera impiegando una autenticazione pre-shared-key (PSK) invece che IEEE 802.1X. Questo modo applica una autenticazione in cui una frase pre-condivisa è immessa manualmente nell’AP per generare la chiave di cifratura. In enterprise mode l’autenticazione reciproca inizia quando l’utente si associa con l’Access Point. L’AP blocca l’accesso alla rete fino a quando l’utente non è stato autenticato. L’utente fornisce le credenziali che vengono comunicate al server di autenticazione. Il processo di autenticazione è gestito dal framework IEEE 802.1X/EAP. Con EAP, 802.1X crea un framework in cui i client ed i server sono entrambi autenticati. L’autenticazione reciproca garantisce che solo i client autorizzati accedano alla rete, e conferma che i client si stanno autenticando su di un server autorizzato. Questo protegge contro attacchi di tipo “rogue” AP. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 74 di 82 Una volta che l’utente è stato autenticato, il server di autenticazione ed il client simultaneamente generano un Pairwise Master Key (PMK). A questo punto avviene un handshake 4-way tra client e AP, per completare definitivamente il processo di autenticazione, di stabilizzazione e di inizializzazione delle chiavi di cifratura AES. Quando il client comincia a comunicare sulla LAN, l’encryption protegge i dati scambiati tra il client e AP. Come precedentemente esposto, con AES i bit sono cifrati in blocchi di plaintext che sono computati indipendentemente. I blocchi AES hanno una dimensione di 128-bit, con tre possibili dimensioni per la chiave, 128, 192 e 256-bit come specificato nello standard. Per l’implementazione di AES con WPA2/802.11i vengono utilizzate chiave di 128-bit. La cifratura AES include 4 stadi che compongono un ciclo. Ogni ciclo è ripetuto 10, 12 o 14 volte in base alla dimensione della chiave. Per l’implementazione di AES con WPA2/802.11i ogni ciclo è iterato 10 volte. AES utilizza Counter-Mode/CBC-Mac (CCM). CCM è un nuovo mode of operation per i block cipher che abilita una singola chiave per essere utilizzata sia per la cifratura che per l’autenticità. CTR effettua la cifratura dei dati, mentre CBC-MAC fornisce autenticità. Dunque, Wi-Fi Protected Access è il protocollo che presumibilmente risolverà tutte le problematiche legate alla sicurezza delle reti wireless, basandosi su AES, in particolare sul protocollo AES-CCM per cifrare i dati e sull’infrastruttura 802.1X per la gestione delle chiavi. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 75 di 82 5.0 Conclusioni e sviluppi futuri In ambiente wireless, la sicurezza è una componente particolarmente delicata, in quanto, come precedentemente citato, oltre alle problematiche tradizionali, entrano in gioco aspetti legati alla natura del mezzo trasmissivo, l’aria. Un attacker potrebbe ad esempio posizionarsi all’esterno di un edificio e manipolare i pacchetti che vengono scambiati tra le stazioni e gli access point senza che nessuno se ne accorga, o quasi. L’integrazione di nuove soluzioni atte a garantire la privacy dei dati sono molto importanti per lo sviluppo dei servizi wireless. L’uso di un sistema di comunicazione innovativo deve necessariamente essere accompagnato da sistemi di crittografia forti, ed allo stesso tempo efficienti, capaci di fornire almeno quella protezione che viene offerta in ambienti consolidati come quelli tradizionali wired. L’algoritmo AES, quindi i protocolli wireless AES-based, si propongono come soluzione alle problematiche riscontrate negli ultimi anni con l’uso di WEP. Come abbiamo citato precedentemente, AES è veloce sia sviluppato in software che in hardware, è relativamente semplice da implementare, e richiede poca memoria. Tuttavia, i dispositivi che utilizzano le onde radio sono molto spesso di dimensioni ridotte, e non hanno sempre una capacità di elaborazione sufficiente per supportare alcune tipologie di calcoli. Ad esempio WPA2 sarà entro qualche anno la soluzione standard per la sicurezza delle reti wireless, ma alcuni palmari non potranno supportarlo causa ridotta potenza di calcolo. Le comunicazioni che si basano sulle onde radio devono dunque essere implementate con soluzioni particolarmente efficienti. Soprattutto, perché negli ultimi anni il numero di dispositivi embedded che fanno uso di comunicazioni wireless sta aumentando, e la possibilità di avere un’interfaccia wireless in dispositivi sempre più piccoli sta diventando un luogo comune. Gli sviluppi futuri si incentreranno sullo studio di implementazioni efficienti, per riuscire a fornire soluzioni utilizzabili da qualunque dispositivo wireless, da palmare a notebook, da Access Point di bassa fascia a dispositivi cellulari, e non solo, con la consapevolezza che lo sviluppo di un algoritmo crittografico non permette da solo di risolvere tutti i problemi. Il funzionamento di un codice sofisticato richiede un microprocessore potente. Di conseguenza ogni volta che l'utente desidera un sistema affidabile, ne ottiene uno che sarà sì più sicuro, ma anche più lento; solo i computer più veloci potranno eseguire il processo di codifica e decodifica in tempi ragionevoli. Il problema si complica quando i sistemi di sicurezza devono essere incorporati in dispositivi mobili che presentano una serie di fattori limitanti in termini di dimensione, costi, microprocessori e decodifica in tempi ragionevoli. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 76 di 82 Possiamo affermare dunque che la sicurezza assoluta non esiste, ma è certo che questi passi da parte della Wi-Fi Alliance procedono sicuramente nella direzione ideale. Per un definitivo e completo decollo di queste apparecchiature è necessario che le imprese si sentano sufficientemente sicure nel far viaggiare i propri dati, anche i più confidenziali, utilizzando la tecnologia Wireless. Concludiamo l’indagine conoscitiva della sicurezza wireless ricordando che è importante che la Ricerca, soprattutto in Italia, venga finanziata per poter studiare e testare nuove soluzioni, atte a migliorare quelle attuali. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 77 di 82 6.0 Riferimenti [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] J. Daemen, V. Rijmen , ”AES Proposal: Rijndael”, http://csrc.nist.gov/encryption/aes/, 1999 NIST, “Announcing the ADVANCED ENCRYPTION STANDARD (AES),” Federal Information Processing Standards Publication, n. 197, Novembre 2001. B. Gladman, “A Specification for Rijndael, the AES Algorithm” http://fp.gladman.plus.com/, 2001. G. Bertoni, L. Breveglieri, P. Fragneto, M. Macchetti, S. Marchesin “Efficient Software Implementation of AES on 32-bits Platforms”, 2002 Rogaway, P., M. Bellare, J. Black, and T. Krovetz, “OCB Mode,” Aprile 2001, http://www.cs.ucdavis.edu/~rogaway/ocb/ocb.htm Intel Ltd. website, http://www.intel.com IEEE Std 802.11, Standards for Local and Metropolitan Area Networks: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, 1999. CSRC - Proposed Modes of Operation http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/ Stanley, D., “IV Sequencing Requirements Summary,” IEEE 802.11 doc 02006r2, Gennaio 2002. http://grouper.ieee.org/groups/802/11/ Housely, R., and D. Whiting, “Temporal Key Hash,” IEEE 802.11 doc 01-550r1 Ottobre 2001. http://grouper.ieee.org/groups/802/11/ Wi-Fi Alliance website, www.wi-fi.org LEAP: http://home.jwu.edu/jwright/presentations/asleap-defcon.pdf J. Walker, “Unsafe at any key size: an analysis of WEP encapsulation”, IEEE 802.11-00/362, IEEE Press, 2000 E. Danyelyan, “802.11”: http://www.isoc.org/pubs/int/cisco-1-1.html Security in Wireless Networks: http://rr.sans.org/wireless/wireless_net3.php DRAFT Special Publication 800-48, Wireless Network Security: 802.11, Bluetooth, and Handheld Devices: http://csrc.nist.gov/publications/drafts/draft-sp800-48.pdf A Technical Comparison of TTLS and PEAP by Matthew Gast: http://www.oreillynet.com/pub/a/wireless/2002/10/17/peap.html Attack to Break WEP: http://www.cs.rice.edu/~astubble/papers.html Ferguson, N., “Michael: an improved MIC for 802.11 WEP,” IEEE Press 2002 http://grouper.ieee.org/groups/802/11/ IEEE Std 802.11, Standards for Local and Metropolitan Area Networks: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, 1999. Ferguson, N., “Michael: an improved MIC for 802.11 WEP,” IEEE Press 2002 http://grouper.ieee.org/groups/802/11/ Stanley, D., “IV Sequencing Requirements Summary,” IEEE Press 2002 http://grouper.ieee.org/groups/802/11/ Housely, R., and D. Whiting, “Temporal Key Hash,” IEEE Press 2001 http://grouper.ieee.org/groups/802/11/ Cam-Winget, N., and J. Walker, “Motions to resolve comments on AES algorithms,” IEEE 802.11 doc 01-382r0, July 9, 2001 Walker, J., “Unsafe at any key size: an analysis of the WEP encapsulation,” IEEE 802.11 doc 00-362, October 27, 2000 Letanche, O., and D. Stanley, “Proposed TGi D1.9 Clause 8 AES-CTR CBC-MAC (CCM) text,” IEEE 802.11 doc 02-144r0, Febbraio 2002. Funk, P., Blake-Wilson, S., “EAP Tunneled TLS Authentication Protocol (EAPTTLS),” draft-ietf-pppext-eap-ttls-01.txt, Febbraio 2002. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 78 di 82 [29] [30] [31] [32] Blunk, O., Vollbrecht, J., RFC 2284, “Extensible Authentication Protocol”, Marzo 1998 Aboba, B., Simon, D., RFC 2716, “PPP EAP TLS Authentication Protocol,” Ottobre 1999. Moore, T., “Suggested Changes to Robust Security Network (RSN) for 802.11,” IEEE doc. 02/298, Maggio 2002. Andersson, H., Josefsson, S., Zorn, G., Simon, D., Palekar, A., “Protected EAP Protocol,” draft-josefsson-pppext-eap-tls-eap-02.txt, Febbraio 2002. _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 79 di 82 Appendice: Acronimi e abbreviazioni Acronimo ADSL Descrizione Authentication, Authorization and Accounting Asynchronous DSL AES Advanced Encryption Standard AIM AoL Instant Messenger AP Access Point CAT5 Category 5 CCM Counter Mode with CBC-MAC CIR Committed Information Rate CRC Cyclic Redundancy Check DCC Direct Client Communication DES Data Encryption Standard Dynamic Host Configuration Protocol Dynamic Key Exchange AAA DHCP DKE DSL GHz Digital Subscriber Line Digital Subscriber Line Access Multiplexer Extensible Authentication Protocol Federal Information Processing Standard GigaHertz GRE Generic Routing Encapsulation HTTP HyperText Transfer Protocol HTTPS IAPP HTTP Secure Internet Assigned Numbers Authority Inter Access Point Protocol ICMP Internet Control Message Protocol ICV IETF Integrity Check Value Institute of Electrical and Electronics Engineers Internet Engineering Task Force IPSec Internet Protocol Security IRC Internet Relay Chat ISP Internet Service Provider IV Initialization Vector Kbps Kilobits per second L2TP Layer Two Tunneling Protocol LAN Local Area Network LEAP LoS Lightweight EAP Line of Sight DSLAM EAP FIPS IANA IEEE _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 80 di 82 Acronimo Descrizione MAC Media Access Controller Mbps Megabits per second MD5 Message Digest 5 MIC Message Integrity Check MS Mobile Station NAC Network Access Controller NAPT Network Address Port Translator NAT Network Address Translator NIC NNTP Network Interface Card National Institute of Standards and Technology Network News Transfer Protocol OEM Original Equipment Manufacturer PAE Port Access Entity PDA Personal Digital Assistant PDU Protocol Data Units PEAP Protected EAP PKI Public Key Infrastructure PoE Power over Ethernet POP3 Post Office Protocol 3 PPTP Point-to-Point Tunneling Protocol PSK Pre-Shared Key QoS RDP Quality of Service Remote Authentication Dial-In User Service Remote Desktop Protocol RF Radio Frequency RSN Robust Security Network RTP Real-Time Protocol SIP Session Initiation Protocol SMT Station Management SMTP SOHO Simple Mail Transfer Protocol Simple Network Management Protocol Small Office Home Office SSH2 Secure Socket Shell version 2 SSID Service Set Identifier SSL Secure Sockets Layer SST Shiva Secure Technology Transmission Control Protocol/Internet Protocol Temporal Key Integrity Protocol Transport Layer Security NIST RADIUS SNMP TCP/IP TKIP TLS _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 81 di 82 Acronimo Descrizione TTLS Tunneled TLS UDP User Datagram Protocol VLAN Virtual LAN VoIP Voice over IP VPN Virtual Private Network WAN Wide Area Network WEP Wired Equivalent Privacy WISP Wireless ISP WLAN Wireless LAN WM Windows Messenger WPA Wi-Fi Protected Access XOR YM Exclusive OR Yahoo Messenger Nomi, marchi, loghi, codice, ed immagini appartengono ai rispettivi proprietari _____________________________________________________________________________________________ Wireless Security di Ultima Generazione Pagina 82 di 82