Bezpieczeństwo sieci działających w standardzie WiFi
Wielokrotnie miałem okazje czytać artykuły, w których autorzy pisali o lekkomyślności administratorów sieci bezprzewodowych. Wytyka im się często, że poziom zabezpieczeń w ich sieciach jest bardzo niski, czym stwarzają możliwość podsłuchania ruchu w sieci lub nawet uzyskania nieautoryzowanego dostępu. Są to poważne zarzuty, ale jeszcze poważniejsze mogą być konsekwencje działań potencjalnych "włamywaczy". Różnorodność usług, jakie możemy już dziś wykonywać za pośrednictwem Internetu jest ogromna: zakupy, transakcje bankowe, wymiana informacji. Chyba każdy zadrży na myśl, że ktoś mógłby uzyskać dostęp do jego rachunku bankowego i wykonać kilka przelewów. Przy obecnym standardzie zabezpieczeń sieci radiowych jest to bardzo prawdopodobny scenariusz. Czy taka sytuacja jest tylko winą administratorów? Może to sam standard nie zapewnia należytego bezpieczeństwa jego użytkownikom? Na to pytanie jak i na wiele innych spróbuję dać jednoznaczną odpowiedz.
Prawie jak zabezpieczenia.
Przegląd zabezpieczeń sieci bezprzewodowych zacznę może od dwóch mniej istotnych z punktu widzenia bezpieczeństwa, ale często stosowanych ze względu na swoją prostotę. Pierwszym z nich jest wyłączenie rozgłaszania nazwy sieci przez punkt dostępowy (ang. Access Point). Każdy Access Point (AP - o tej pory będę posługiwał się tym skrótem) pracujący w normalnej konfiguracji niejako przedstawia się swoim potencjalnym klientom rozgłaszając wszem i wobec swoją nazwę. Wyłączenie rozgłaszania powoduje, że klient, mimo że zaobserwuje fakt dostępności sieci nie pozna jej nazwy, co z kolei nie pozwoli mu na uzyskanie połączenia. Można powiedzieć, że nazwa sieci służy jako hasło - kto jej nie zna ten się nie podłączy.
Drugim "zabezpieczeniem", bardzo lubianym przez administratorów, jest wprowadzenie filtracji adresów MAC1. Administrator sieci podłączając nowego klienta wpisuje adres MAC karty sieciowej klienta do pamięci AP. Przy próbie połączenia klienta z punktem dostępowym, AP sprawdza adres MAC klienta i porównuje go z adresami zapisanymi w pamięci. Jeśli adresu nie ma na liście klient nie uzyskuje połączenia.
Oba te "zabezpieczenia" nie stwarzają większej trudności potencjalnemu intruzowi. Do poznania, skrzętnie ukrytej przez administratora, nazwy sieci perfekcyjnie nadaje się narzędzie o nazwie Aircrack. Jest to jedno z najlepszych narzędzi służących do podsłuchiwania i przeprowadzenia ataku na sieci bezprzewodowe, jakie do tej pory powstało. Opis pakietu Aircrack jak również jego użycia znacznie wybiega poza zakres tego artykułu. Zainteresowanych odsyłam do strony domowej pakietu http://www.aircrack-ng.org/. Dodam tylko, że złamanie tego zabezpieczenia zajmuje kilka sekund. W celu przełamania drugiego zabezpieczenia musimy zarezerwować sobie nieco więcej czasu - kilku minut. Schemat ataku jest prosty. Musimy poznać adres MAC jednego z legalnych użytkowników sieci a następnie zamaskować prawdziwy adres naszej karty sieciowej adresem klienta. Wyłapanie adresów MAC z sieci jest możliwe dzięki programom takim jak wspomniany wyżej Aircrack, Kismet (http://www.kismetwireless.net) oraz CommView for WiFi (http://www.tamos.com/products/commwifi/). Jeśli znamy już adresy to wystarczy tylko mała zamiana adresu naszej sieciówki. W zależności od systemu operacyjnego możemy to zrobić na kilka sposobów. W systemie Windows wystarczy zastąpić jeden z kluczy w rejestrze systemowym "nowym" adresem MAC. Jest to operacja dość czasochłonna, ale z pomocą przychodzi program SMAC (http://www.klcconsulting.net/smac/). Spotkałem się również z sytuacją, że sterowniki kart radiowych posiadają opcję zmiany adresu MAC. Co do systemu Linux to sprawa zamyka się w wykonaniu trzech komend z poziomy powłoki, korzystając z programu ifconfig. Po tych kilku operacjach można swobodnie korzystać z Internetu. Technika podszywania staje się ostatnio coraz bardziej popularna a walka z nią, ze względu na specyfikę sieci bezprzewodowych (brak kabla), niezmiernie trudna.
Pierwsze danie.
Tym, co miało zapewnić należyte bezpieczeństwo sieciom w standardzie 802.11 jest protokół łącza danych WEP (Wired Equivalent Privacy). Ma on zapewnić sieci bezprzewodowej bezpieczeństwo nieodbiegające poziomem od standardowego bezpieczeństwa przewodowej sieci LAN. Trafnie ujął ten zamysł Andrew S. Tanenbaum w swojej książce "Sieci komputerowe":
"Wspaniele powiedziane: standardowym poziomem bezpieczeństwa w przewodowej sieci LAN jest brak jakichkolwiek mechanizmów zabezpieczających, więc zadanie postawione prze protokołem WEP nie jest specjalnie wygórowane (�) protokól ten radzi sobie z nim całkiem nieźle."
Czym jest więc WEP? Czy naprawdę jest aż tak słaby, czy może to tylko docinki złośliwych, którzy zawsze mają coś do powiedzenia? WEP został wprowadzony w roku 1999 wraz z pierwszym standardzem IEEE2 802.11. Protokół ten działa w oparciu o algorytm szyfrujący RC4. Sądzę, że dla pełniejszego zrozumienia działania (słabości) WEP konieczne staje się omówienie RC4, który przecież jest jego fundamentem. RC4 jest algorytmem opracowanym przez Ronalda Rivesta już w roku 1987. Jednak światło dzienne ujrzał on dopiero w roku, 1994 kiedy to w Intranecie pojawiła się jego implementacja w języku C. Jest to prosty algorytm strumieniowy generujący liczby pseudolosowe.
Długość klucza dla RC4 to 40 lub 104 bitów. W zależności od długości generowany jest strumień bajtów (key-stream), który jest wykorzystywany do zaszyfrowania pojedynczej wiadomości. Szyfrowanie odbywa się poprzez połączenie tekstu wiadomości z wygenerowanym kluczem za pomocą operacji logicznej XOR1 (różnica symetryczna). W efekcie otrzymujemy zaszyfrowaną wiadomość. Aby rozszyfrować tekst należy wygenerować ten sam klucz-strumień i używając go wykonać operację XOR na zaszyfrowanej wiadomości.
Rysunek 1. Działanie RC4
Dzięki swojej prostocie i łatwej implementacji algorytm RC4 zyskał ogromną popularność. Jednak prostota działa także na jego niekorzyść. Operacja XOR jest operacją zamienną, co oznacza, że porównanie tekstu oryginalnego i zaszyfrowanego daje nam możliwość poznania klucza.
Rysunek 2. Zamienność operacji XOR
Jak można przypuszczać siła RC4 zależy głównie od generatora liczb pseudolosowych. Musi on produkować ciąg w dużym przybliżeniu losowy, który nie zdradzi wykorzystywanego klucza i o możliwie jak największej liczbie iteracji, po której ciąg zaczyna się powtarzać. Niestety WEP przejął wszystkie słabości algorytmu RC4, które zostały ujawnione już w roku 1995 przez Wagnera. Do tego pojawiły się również dodatkowe luki w samej implementacji standardu. WEP korzysta z 40- lub 104-bitowych kluczy oraz 24-bitowego wektora inicjującego IV (Initialization Vector). W efekcie klucz kodujący ma długość 64 lub 128 bitów. Klucz WEP jest rozwijany przez algorytm RC4 na nieskończony pseudolosowy strumień kluczy. Aby zapobiec szyfrowaniu pakietów tym samym kluczem RC4, generowanym "losowo" na podstawie tego samego klucza, używane są różne wektory inicjalizacji. Przed wysłaniem pakietu obliczana jest jeszcze suma kontrolna ICV (Integrity Check Value) oryginalnej wiadomości M. Ostatecznie zaszyfrowany pakiet danych P ma postać wyrażoną wzorem:
P = [M+IVC(M)] XOR [RC4(IV+WEP)]
Widać tu wyraźnie, że ogromne znaczenie w procesie szyfrowanie na wektor IV. Im większa jego losowość i niepowtarzalność w czasie tym pewniejsze zabezpieczenie.
Rysunek 3. Zasada działania protokołu WEP
Niestety dla standardu ilość niepowtarzających się wektorów IV jest skończona. Problem "zużywania" IV-sów opisał bardzo dokładnie Walker (2000) w dokumencie "Unsafe at any key size; An analisis of the WEP encapsulation". Możemy w nim przeczytać, że przy stosowaniu 40 bitowego klucza WEP prawdopodobieństwo kolizji, czyli powtórzenia IV wynosi 50% przy zgromadzeniu około 4826 ramek a 99% przy zgromadzeniu 12430 ramek. Tak, więc na kolizję IV nie trzeba długo czekać. Jedynym sposobem zapobiegnięcia kolizjom jest bardzo częsta zmiana klucza WEP. Jest to jednak rozwiązanie niewygodne i czasochłonne. Co gorsza problem przybiera poważniejszą formę jeśli dodamy do tego brak zdefiniowanego przez standard sposobu generowania IV-sów. Często zdarza się, że karty sieciowe restartują (zerują) licznik inkrementujący IV-sy i wtedy kolizje występują dużo częściej. W swoim dokumencie Walker nie omieszkał wspomnieć również o słabości algorytmu szyfrującego RC4. Po tej publikacji ruszyła lawina innych opracowań, w których wykazano, że WEP nie spełnia dobrze swojej roli. W roku 2001 Nikita Borisov, Ian Goldberg i Dawid Wagner opisali szereg zależności, które pozwalają na "oszukanie" sumy kontrolnej CRC-32 stojącej na straży autentyczności przesyłanych danych. W swojej pracy "Intercepting Mobile Communications: The Insecurity of 802.11" wskazują możliwość zmiany zawartości zaszyfrowanego pakietu oraz wstrzyknięcia dodatkowych informacji. To z kolei pozwala na fałszywą autoryzację jak też na przekierowanie adresu IP. Kolejną publikacją, która ukazała się również tego samego roku była praca �Weaknesses In Key Sheduling Algorithm of RC4�. Scott Fluhrer, Itsik Mantin, Adi Shamir wykazują kolejne słabości algorytmu RC4. Po takiej �papierowej� burzy nadeszła pora na sprawdzenie tych wszystkich zarzutów pod względem WEP w praktyce.
W sierpniu 2001 roku pojawił się program AirSnort (http://airsnort.shmoo.com/), który na podstawie zebranych pakietów potrafi odtworzyć klucz WEP. Po tych wydarzeniach przyjęto że WEP nadaje się jedynie do zastosowań domowych, ponieważ jego poziom bezpieczeństwa dyskwalifikuje go w zastosowaniach komercyjnych. Przez następne 3 lata metody ataków były dopracowywane a efektem tych prac było pojawienie się dwóch nowych programów umożliwiających poznanie klucza WEP na podstawie analizy zebranych pakietów: Aircrack autorstwa Christophera Devine oraz WepLab autorstwa Jose Sancheza (http://weplab.sourceforge.net).
Dzięki tym programom możliwe stało się złamanie 128 bitowego klucza WEP w kilka minut. Dodanie opcji wstrzykiwania pakietów pozwoliło znacznie skrócić czas łamania zabezpieczeń WEP. Dzięki temu nie potrzeba już było milionów przechwyconych pakietów, ale około 150000 dla klucza 64 bitowego i 500000 dla klucza 128 bitowego.
Drugie danie. Już na początku roku 2001 powstała w ramach IEEE grupa projektowa, mająca na celu udoskonalenie zabezpieczeń protokołu 802.11. W kwietniu 2003 roku oficjalnie rozpoczęły się prace mające na celu certyfikację i implementację nowego standardu bezpieczeństwa. Pełny standard oznaczony jako 802.11i został przyjęty w czerwcu 2004 roku a jego wersja komercyjna otrzymała nazwę WPA2 (WiFi Alliance4). Nowy standard wprowadził wiele zmian, jak chociaż by całkowite oddzielenie uwierzytelniania użytkownika od zapewnienia integralności i poufności danych. Był to krok w kierunku stworzenia niezawodnej i łatwej w rozbudowie architektury bezpieczeństwa. Dzięki temu sieci bezprzewodowe mogły znowu wypłynąć na szerokie wody. Nowa architektura sieci powstałych w oparciu o 802.11i została nazwana Robust Security Network (RSN). Wykorzystano w niej uwierzytelnianie z protokołem 802.1X (Port Based Network Access Control). Postaram się nieco przybliżyć ten protokół. Domyślnie powstał on dla sieci przewodowych. Gwarantuje on mechanizmy uwierzytelniania, autoryzacji, dystrybucji klucza i kontroli dostępu użytkowników dołączających do sieci. Architektura 802.1X wymaga obecności trzech elementów: klienta sieci, punktu dostępowego oraz serwera uwierzytelniania. Każdy port wirtualny sieci bezprzewodowej jest rozdzielony na dwa porty logiczne. Porty logiczne tworzą obiekt dostępu do portu o nazwie PAE (Port Access Entity). Port PAE, który odpowiada za uwierzytelnianie jest zawsze otwarty i przepuszcza ramki uwierzytelniania natomiast port usług dostępny jest dopiero po udanym uwierzytelnieniu. Decyzję o dopuszczeniu klienta do portu usług na ogół podejmuje trzeci element architektury, czyli serwer uwierzytelniający. Taką rolę może spełniać serwer Radius jak również odpowiednio przygotowany proces działający na zasobach AP (zastosowania domowe).
Rysunek 4. Model architektury 802.11i
Na potrzeby sieci bezprzewodowych wprowadzono drobne zmiany w IEEE 802.1X. Wprowadzono dodatkowe uwierzytelnianie wiadomości, które daje pewność, że klient i AP znają tajne klucze oraz że włączyli szyfrowanie przed rozpoczęciem transmisji. Komunikacja między klientem a AP odbywa się z wykorzystaniem protokołu EAP, który określa jedynie ogólne zasady transportu różnego rodzaju metod uwierzytelniania. Sam EAP dopuszcza jedynie jedynie cztery komunikaty Request, Response, Success i Failture. Pozostałe komunikaty są uzależnione od wybranego sposobu uwierzytelniania: EAP-SIM, Kerberos itp. Po zakończeniu tego procesu klient jak i serwer uwierzytelniający mają już własny, tajny klucz nadrzędny. Komunikacja pomiędzy AP a serwerem uwierzytelniającym odbywa się poprzez protokół EAPOL (EAP over LAN).
Nawiązanie komunikacji w standardzie 802.11i wymaga wykonania czterech etapów:
Rysunek 5. Etapy protokołu 802.11i
Pierwszym z nich jest uzgodnienie polityki bezpieczeństwa miedzy klientem a AP. Punkt dostępowy rozgłasza obsługiwane polityki jako parametr Beacon lub odsyła ją do klienta w komunikacie Probe Response (odpowiedz na Probe Request wysłany przez klienta). Potem następuje standardowe uwierzytelnianie. Odpowiedz klienta jest dołączona do żądania skojarzenia (Association Request) i zatwierdzana za pomocą odpowiedzi odsyłanej przez AP (Association Response). Polityka bezpieczeństwa jest przesyłana w polu IE (Information Element) ramki RSN. Pole IE zawiera informacje określające obsługiwane metody uwierzytelniania (PSK, 802.1X), protokoły bezpieczeństwa dla transmisji pojedynczej i grupowej (CCMP, TKIP) oraz obsługę wstępnego uwierzytelniania (możliwość płynnej zmiany AP przez klienta w tej samej sieci).
Rysunek 6. Uzgodnienie polityki bezpieczeństwa
Rysunek 7. Uwierzytelnianie 802.1X
Trzeci etap to ustalenie hierarchii kluczy oraz ich dystrybucja. Klucze w architekturze RSN posiadają swój okres ważności. Ta faza ma na celu wygenerowanie i wymianę kluczy. Do wygenerowania kluczy wykorzystywane są dwie metody negocjacji: czteroetapowa (4 way hanshake), której celem jest ustalenie pojedynczych (PTK) i grupowych (GTK) kluczy tymczasowych; negocjacja klucza grupowego dla odnowienia GTK.
Proces generowania pojedynczego klucza głównego PMK (Pairwise Master Key) jest zależny od zastosowanej metody uwierzytelniania. Jeśli używany jest PSK (Pre-Shared Key) to PMK jest wtedy równe PSK5. Jeśli natomiast sieć posiada serwer uwierzytelniający (Radius) to PMK jest wyliczane na podstawie klucza głównego MK (802.1X). Na podstawie PMK generowany jest tymczasowy klucz szyfrujący. Dla transmisji pojedynczej będzie to PTK. Jego długość jest uzależniona od protokołu szyfrującego i wynosi odpowiednio: dla TKIP 512 bitów, dla CCMP 384 bity.
PTK składa się z kilku tymczasowych kluczy o różnych zastosowaniach. KCK (Key Confirmation Key) jest kluczem 128 bitowym i służy do generowania kodu uwierzytelniającego wiadomości (MIC). KEK (Key Encryption Key) ma również 128 bitów i służy do zapewnienia poufności danych w czasie negocjacji czteroetapowej i negocjacji klucza grupowego. TK (Temporary Key) o długości 128 bitów służy do szyfrowania danych (używany przez TKIP i CCMP). TMK (Temporary MIC Key) ma długość 2*64 bity i służy do uwierzytelniania danych. Jest używany wyłącznie przez algorytm Michael. Każda z komunikujących się stron posiada swój własny klucz.
Podczas negocjacji czteroetapowej klient i AP wymieniają cztery komunikaty EAPOL-Key. Klucz PTK wyliczany jest na podstawie klucza PMK, stałego ciągu znaków, adresów MAC klienta i AP i dwóch losowych wartości generowanych przez klienta i serwer Radius. Cały proces inicjowany jest przez AP, który wysyła do klienta losową wartość ANonce. Wysyłana wartość nie jest w żaden sposób zabezpieczona. Klient generuje własną wartość SNonce i znając ANonce wylicza PTK oraz tymczasowe klucze pochodne. Następnie odsyła SNonce oraz kod MIC uzyskany z klucza KCK drugiej wiadomości. Radius odbiera SNonce i wylicza PTK oraz klucze tymczasowe oraz sprawdza poprawność kodu MIC w drugiej wiadomości. Jeśli Radius otrzymał poprawne MIC to oznacza, że klient zna klucz i poprawnie wyliczył poprawną wartość klucza PTK oraz kluczy pochodnych. W trzecim komunikacie, jaki jest wysyłane do klienta znajduje się klucz GTK i jest on zaszyfrowany kluczem KEK. GTK wyliczony jest na podstawie losowego GMK i wartości GNonce. Wysyłany jest również kod MIC dla trzeciego komunikatu uzyskany za pomocą klucza KCK. Klient sprawdza MIC trzeciej wiadomości, aby upewnić się, że AP zna PTK oraz poprawnie wyliczył klucze pochodne tymczasowe. W ostatnim komunikacie klient przesyła do AP wiadomość, że instaluje klucze szyfrujące, których będzie używał. AP sprawdza kod MIC i jeśli jest on poprawny instaluje uzgodnione klucze i przechodzi w tryb szyfrowania. Do ochrony transmisji grupowych stosowany jest klucz tymczasowy GTK (Group Transient Key). Jest on generowany na podstawie GMK (Group Master Key), stałego ciągu znaków, adresu MAC punktu dostępowego oraz losowej wartości GNonce. Długość GTK jest zależna od protokołu szyfrującego i dla TKIP wynosi 256 bitów a dla CCMP 128 bitów. Z GTK możemy wydzielić dwa specjalizowane klucze tymczasowe: GEK (Group Encryption Key) służy do szyfrowania danych i jest używany przez TKIP lub CCMP; GIK (Group Integrity Key) służy do uwierzytelniania danych i jest używany przez algorytm Michael w TKIP.
Podczas negocjacji klucza grupowego między AP i klientem wymieniane są dwa komunikaty EAPOL-Key. W tym czasie wykorzystywane są dwa klucze tymczasowe KCK i KEK wygenerowane podczas 4-way handshake. Celem, dla którego przeprowadzana jest negocjacja klucza grupowego jest anulowanie połączenia klienta i odnowienie klucz GTK. Serwer Radius wybiera losową liczbę GNonce i ponownie generuje klucz GTK. Następnie klucz GTK jest szyfrowany kluczem KEK i wraz z wyliczonym numerem sekwencyjnym GTK oraz kodem MIC wiadomości wyliczonym za pomocą KCK wysyłany do klienta. Po otrzymaniu wiadomości klient sprawdza kod MIC po czym odszyfrowuje klucz GTK. Wówczas klient odsyła komunikat zawierający potwierdzenie negocjacji klucza grupowego. Wraz z potwierdzeniem wysyłany jest jeszcze numer sekwencyjny klucza GTK oraz kod MIC dla wiadomości. Serwer uwierzytelniający po sprawdzeniu MIC instaluje nowy klucz GTK.
Rysunek 8. Generowanie i dystrybucja kluczy
Rysunek 9. Negocjacja czteroetapowa
Rysunek 10. Negocjacja klucza grupowego
Czwarty etap ma na celu zapewnienie poufności i integralności danych. Wszystkie klucze wygenerowane w poprzednich etapach będą teraz wykorzystywane do zapewnienia poufności i integralności danych (TKIP, CCMP, WRAP). Konieczne teraz staje się opisane poszczególnych protokołów, które były już wcześniej wspomniane a na tym etapie będą podstawą działania.
Protokół TKIP (wymagany do uzyskania certyfikacji WPA) jest bardzo zbliżony do WEP, ponieważ również wykorzystuje algorytm RC4. TKIP otrzymał nowe mechanizmy, które chronią go przed atakami, na jakie narażony był WEP. CRC-32 został tu zastąpiony przez nowy kod integralności (MIC) o nazwie Michael. Opracowano dokładne reguły generacji wektora IV, co zapobiega jego powtórzeniom i uodparnia cały standard przed atakami z wykorzystaniem kolizji wektora inicjalizacji. Wprowadzono także mieszanie klucza dla pojedynczych pakietów oraz nowy mechanizm zarządzania kluczami i ich wymianą. Na proces mieszania klucza TKIP składają się dwie fazy. W pierwszej fazie wykorzystywane są: tajny klucz sesji TEK, adres MAC nadawcy oraz starsze 32 bity IV. Druga faza opiera się na wynikach otrzymanych z fazy poprzedzającej oraz na młodszych 16 bitach IV, zmieniając wszystkie bity klucza dla pojedynczych pakietów. Wartość IV zaczyna się od 0 i jest inkrementowana dla każdego kolejnego pakietu. Na tym etapie odrzucane są wszystkie pakiety, których wartość licznika powtórzeń IV jest mniejsza od wartości poprzedniego pakietu. Wynik drugiej fazy mieszania oraz dodatkowy bit są danymi wejściowymi dla algorytmu RC4. Wygenerowany w ten sposób strumień klucza jest poddany operacji XOR z MPDU6 tekstu jawnego, kodem MIC wyliczonym dla MPDU oraz starym ICV protokołu WEP. Do wyliczania kodu MIC wykorzystywany jest algorytm Michael autorstwa Nielsa Fergusona. Zabezpieczeniem przed fałszowaniem kodu MIC jest zawieszenie komunikacji na 60 sekund oraz konieczność powtórnego wyliczenia GTK i PTK w przypadku dwóch lub więcej błędów weryfikacji kodu.
Rysunek 11. Mieszanie i szyfrowanie TKIP
Algorytm Michael wylicza ośmiooktetową wartość kontrolną, która jest dołączona do każdego MSDU7 przed jego wysłaniem. MIC wyliczany jest na podstawie adresu nadawcy, adresu odbiorcy, nieszyfrowanego MSDU i klucz TMK.
Rysunek 12. Obliczanie MIC
Protokół CCMP oparty jest na szyfrowaniu blokowym AES8 (Advanced Encryption Standard) z kluczem i blokami o długości 128 bitów. CCMP jako zupełnie nowy protokół wprowadził wiele innowacji jak na przykład wykorzystanie samego IV do szyfrowania i uwierzytelniania czy też objęcie uwierzytelnianiem danych niezaszyfrowanych. CCMP rozszerza MDPU o dodatkowych 16 bajtów (po osiem bajtów na nagłówek CCMP i kod MIC). Nagłówek CCMP w postaci nieszyfrowanej jest umieszczany między nagłówkiem MAC a danymi szyfrowanymi. Zawiera on 48 bitowy numer pakietu oraz pole klucz grupowego KeyId. Numer pakietu jest inkrementowany dla każdego kolejnego MPDU. Obliczanie MIC odbywa się z wykorzystaniem algorytmu CBC-MAC9. Wyliczony MIC jest dołączany do tekstu jawnego a całość zostaje zaszyfrowana AES w trybie licznikowym. Protokół WRAP oparty jest na AES, ale stosuje szyfrowanie uwierzytelniania w trybie OCB (Offset Codebook Mode), które pozwala jednocześnie szyfrować i uwierzytelniać.
Rysunek 13. Szyfrowanie CCMP
Podsumowanie.
Od czasu pojawienia się standardu 802.11i wykryto już kilka jego słabości. Największe zagrożenie pojawia się w momencie stosowania klucza PSK. W tym przypadku siła zabezpieczenia zależy bezpośrednio od siły zastosowanego hasła. Istnieje możliwość poddania drugiej wiadomości, wysyłanej podczas negocjacji czteroetapowej, atakowi słownikowemu i siłowemu. Do wykorzystania tej słabości stworzono narzędzie o nazwie Cowpatty (http://sourceforge.net/projects/cowpatty), którego ulepszoną wersję zaimplementował autor pakietu Aircrack. Jednak przy stosowaniu haseł powyżej 20 znaków atak taki staje się bardzo czasochłonny a czasem wręcz niemożliwy. Przeprowadzenie ataku wymaga przechwycenia przez napastnika pakietów podczas przeprowadzania negocjacji czteroetapowej. Dokładnie potrzebne są pierwsze dwa pakiety, z których napastnik może poznać wartość ANonce oraz wartość SNonce. Znając te wartości można rozpocząć zgadywanie klucza PSK, którego prawidłowe odgadnięci pozwoli wyliczyć PTK i tymczasowe klucze pochodne.
Drugą słabością WPA jest podatność na atak typy DOS (Denial of Service). Pierwszy komunikat negocjacji czteroetapowej nie jest uwierzytelniany, więc klient musi składować każdy pierwszy komunikat aż do moment otrzymania poprawnego komunikatu trzeciego. W tym przypadku bardzo możliwe jest wyczerpanie zasobów klienta. Napastnik może fałszować pierwszy komunikat AP do momentu zapchania klienta.
Również w implementacji kodu Michael wykryto kilka słabości. Algorytm ten przez swoją odwracalność podatny jest na ataki ze znanym tekstem jawnym. Do wyliczenia tajnego klucza MIC potrzebna jest jedynie jedna oryginalna wiadomość oraz jej kod MIC. Widzimy, że kluczowe znaczenie ma utrzymanie kodu MIC w tajemnicy.
Czas pokaże na ile skuteczne okażą się zabezpieczenia standardu 802.11i. Jak się przekonaliśmy WEP, który miał wystarczyć do zabezpieczenia transmisji bezprzewodowej nie wystarczył. Czy podobny los czeka WPA i WPA2? Aktualnie coraz więcej administratorów wdraża zabezpieczenie pośrednie, czyli WPA-PSK. Jest ono o tyle wygodne, ponieważ nie wymaga zmian sprzętu a co za tym idzie nie niesie za sobą dodatkowych kosztów. Jednak zapewne już niedługo standardem w sieciach o znaczeniu krytycznym stanie się WPA2.
Mimo starań krypylogów i analityków sieci bezprzewodowe od samego początku podatne są na ataki niskopoziomowe takie jak zagłuszanie częstotliwości. Wydaje się, więc uzasadnione dla sieci o znaczeniu krytycznym jest posiadanie innego, bardziej niezawodnego łącza zapasowego (np. łącze kablowe).
1 Adres MAC (Media Access Control) jest unikalnym numerem każdej karty sieciowej. Adres na 48 bitów i zapisywany jest heksadecymalnie (szesnastkowo). Pierwsze 24 bity oznaczają producenta karty sieciowej, pozostałe 24 bity są identyfikatorem danego egzemplarza karty. 2 IEEE (Institute of Electrical and Electronics Engineers - Instytut Inżynierów Elektryków i Elektroników). Jest to organizacja typu non-profit skupiająca profesjonalistów. Jednym z podstawowych jej zadań jest ustalanie standardów konstrukcji, pomiarów itp. dla urządzeń elektronicznych, w tym standardów dla urządzeń i formatów komputerowych. Standardy, które publikuje IEEE oznaczane są często dodatkowo literkami - np. 802.11X, 802.1D czy 802.11a. Wielka litera oznacza standard ratyfikowany, mała - jeszcze nie ratyfikowany. Strona domowa organizacji: http://www.ieee.org/ 3 Operacja logiczna XOR wygląda następująco: 0 XOR 0 = 0 1 XOR 1 = 0 0 XOR 1 = 1 1 XOR 0 = 1 4 Jest to przemysłowe stowarzyszenie liczące ponad 250 osób, w tym producentów sprzętu i oprogramowania. Jego rolą jest promowanie sprzętu 802.11 oraz dbanie o wzajemną zgodność urządzeń. Strona domowa stowarzyszenia: http://www.wi-fi.org/ 5 PSK jest generowane na podstawie hasła (8-63 znaków) lub ciągu 256 bitowego. 6 Jest to część pierwotnego pakietu danych po fragmentacji. 7 Jest to pakiet danych przed fragmentacją. 8 Jest to symetryczny szyfr blokowy. Dokładny opis można znaleźć na http://e-handel.mm.com.pl/crypto/aes.htm. 9 Algorytm CBC-MAC szyfruje początkową wartość jednorazową, po czym ta wartość jest poddawana operacji XOR z kolejnymi blokami aż do momentu uzyskania ostatecznego 64 bitowego kodu MIC.
UWAGI LUB PYTANIA DO ARTYKUŁÓW:
BBCODE:
[b] pogrubiony tekst [/b] [u] podkreślony tekst [/u] [i] pochylony tekst [/i] [img] http://adres.do.obrazka/obrazek.jpg [/img] [code] kod [/code] [quote] cytat [/quote]
Autor: Treść:
Autor: blackno wkońcu można coś ciekawego poczytać :) wielki + proponuję zalożenie tematu o słownikach generatorach słowników itp.