Różnice między wybraną wersją a wersją aktualną.
Nowa wersja | Poprzednia wersja | ||
sk2:wlan:sec [2023/12/06 23:44] jkonczak utworzono |
sk2:wlan:sec [2023/12/13 23:59] (aktualna) jkonczak |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
===== Zabezpieczenia sieci bezprzewodowych ===== | ===== Zabezpieczenia sieci bezprzewodowych ===== | ||
- | Zabezpieczenia sieci bezprzewodowych: | + | ==== WEP ==== |
- | * WEP – nie zapewnia bezpieczeństwa | + | |
- | * WPA (Wi-Fi Protected Access) – implementacja 802.11i zanim powstało 802.11i, w tym szyfrowanie używając: | + | |
- | * [[https://pl.wikipedia.org/wiki/Temporal_Key_Integrity_Protocol|TKIP]] | + | |
- | * <html><small> opcjonalnie CCMP AES </small></html> | + | |
- | * [[https://en.wikipedia.org/wiki/IEEE_802.11i-2004|802.11i]] – standard opisujący skuteczne zabezpieczanie sieci bezprzewodowych | + | |
- | * **WPA2** – "handlowa" nazwa implementacji 802.11i, w tym szyfrowanie używając: | + | |
- | * <html><small> opcjonalnie TKIP</small></html> | + | |
- | * [[https://en.wikipedia.org/wiki/CCMP_(cryptography)|CCMP (AES)]] | + | |
- | * **WPA3** - ogłoszony w czerwcu 2018 standard, jego obsługa jest wymagana w nowych urządzeniach [[https://www.wi-fi.org/news-events/newsroom/wi-fi-alliance-introduces-wi-fi-certified-wpa3-security|[1]]] [[https://www.wi-fi.org/discover-wi-fi/security|[2]]] [[https://www.wi-fi.org/file/wpa3-security-considerations|[3]]] | + | |
- | * <html><small></html>uniemożliwia znane ataki na WPA2 (m. inn. [[https://en.wikipedia.org/wiki/KRACK|KRACK]], lista innych na [[https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access#Security_issues|Wikipedii]])<html></small></html> | + | |
- | * <html><small></html>uniemożliwia słownikowe ataki offline na sieci zabezpieczone hasłem ([[https://en.wikipedia.org/wiki/Simultaneous_Authentication_of_Equals|SAE]], [[https://www.rfc-editor.org/rfc/rfc7664.html|RFC 7664]])<html></small></html> | + | |
- | * <html><small></html>umożliwia użycie silniejszej kryptografii (dłuższe klucze i silniejsze protokoły – [[https://en.wikipedia.org/wiki/Galois/Counter_Mode|GCMP]] i oparte na krzywych eliptycznych)<html></small></html> | + | |
- | * <html><small></html>wymaga zabezpieczania ramkek typu management ([[https://en.wikipedia.org/wiki/IEEE_802.11w-2009|802.11w]])<html></small></html> | + | |
- | * <html><small></html>w WPA3 odkryto już podatności na inne rodzaje ataków ([[https://wpa3.mathyvanhoef.com/|dragonblood]])<html></small></html> | + | |
- | * <html><small></html>wraz z WPA3 próbowano wprowadzić rozwiązanie pozwalające tworzyć bezpieczne sieci nie wymagające hasła do połączenia ([[https://www.wi-fi.org/news-events/newsroom/wi-fi-certified-enhanced-open-delivers-data-protection-in-open-wi-fi-networks|Wi-Fi Enhanced-Open]], [[https://www.rfc-editor.org/rfc/rfc8110|RFC 8110]])<html></small></html> | + | |
- | * Uwierzytelnianie: | + | |
- | * WPA-Personal | + | |
- | * w WPA i WPA2 – **PSK** ([[https://en.wikipedia.org/wiki/Pre-shared_key|Pre-shared Key]]) \\ <html><small></html>znając PSK i słuchając pełnej komunikacji (od nawiązania połączenia) można deszyfrować transmisję<html></small></html> | + | |
- | * w WPA3 – **SAE** ([[https://en.wikipedia.org/wiki/Simultaneous_Authentication_of_Equals|Simultaneous Authentication of Equals]]) | + | |
- | * WPA-Enterprise – **[[https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol|EAP]]**, [[https://en.wikipedia.org/wiki/IEEE_802.1X|EAPOL]] | + | |
- | * PSK | + | |
- | * TLS | + | |
- | * [[https://en.wikipedia.org/wiki/Protected_Extensible_Authentication_Protocol|PEAP]], TTLS, FAST | + | |
- | * <html><small></html> Scentralizowane uwierzytelnianie – [[https://en.wikipedia.org/wiki/RADIUS|RADIUS]] [[http://wiki.freeradius.org/guide/WPA-HOWTO|konfiguracja przykładowego serwera]] \\ Otwarta dokumentacja dla sieci Eduroam – przykład wdrożenia sfederalizowanego uwierzytelniania: [[https://wiki.geant.org/pages/viewpage.action?pageId=121346286|en]], [[https://www.eduroam.pl/index.php?page=doc&lang=pl|pl]]<html></small></html> | + | |
- | * **[[https://en.wikipedia.org/wiki/Wi-Fi_Protected_Setup|WPS]]** – rozwiązania mające ułatwić osobom nietechnicznym korzystanie z zabezpieczeń WPA-PSK \\ <html><small></html> część implementacji WPS (np. //pin//) nie zapewnia bezpieczeństwa sieci<html></small></html> | + | |
+ | Pierwsze rozwiązania dotyczące zabezpieczania sieci funkcjonowały pod mylącą | ||
+ | nazwą WEP (//wired equivalent privacy//). | ||
+ | |||
+ | WEP jest słaby kryptograficznie i praktycznie nie zapewnia bezpieczeństwa. | ||
+ | |||
+ | ==== WPA (Wi-Fi Protected Access) ==== | ||
+ | |||
+ | === WPA i WPA2 === | ||
+ | |||
+ | <small> | ||
+ | WEP stało się za słabe do zabezpieczania sieci zanim opracowano oficjalny | ||
+ | standard IEEE 802.11i mający być jego następcą. | ||
+ | </small> | ||
+ | |||
+ | Na podstawie szkicu standardu IEEE 802.11i organizacja Wi-Fi Alliance przyjęła | ||
+ | w 2003 roku nowe rozwiązania zapewniające bezpieczeństwo pod nazwą **WPA** | ||
+ | (Wi-Fi Protected Access). | ||
+ | |||
+ | Po przyjęciu ostatecznej wersji standardu [[https://en.wikipedia.org/wiki/IEEE_802.11i-2004|IEEE 802.11i]] | ||
+ | w 2004 roku organizacja Wi-Fi Alliance określiła jego rozwiązania jako **WPA2** | ||
+ | (Wi-Fi Protected Access 2). | ||
+ | <small>Sam standard 802.11i nie używa nazwy WPA2, tylko RSN (Robust Security Network).</small> | ||
+ | |||
+ | WPA i WPA2 nie różnią się od siebie istotnie. | ||
+ | |||
+ | === WPA3 === | ||
+ | |||
+ | Po kilkunastu latach, głównie na skutek odkrycia | ||
+ | [[https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access#Security_issues|podatności]] | ||
+ | mechanizmów WPA/WPA2, opracowano i ogłoszono przyjęcie w 2018 roku kolejnej wersji | ||
+ | WPA – **WPA3**. | ||
+ | |||
+ | WPA3 wprowadza istotne zmiany w zabezpieczeniach w porównaniu do WPA2. | ||
+ | <small> | ||
+ | [[https://www.wi-fi.org/news-events/newsroom/wi-fi-alliance-introduces-wi-fi-certified-wpa3-security|[1]]] | ||
+ | [[https://www.wi-fi.org/discover-wi-fi/security|[2]]] | ||
+ | [[https://www.wi-fi.org/file/wi-fi-protected-access-security-considerations|[3]]] | ||
+ | </small> | ||
+ | |||
+ | ==== Uwierzytelnianie w WPA/2/3 ==== | ||
+ | |||
+ | Uwierzytelnianie (//authentication//) to proces w którym sprawdza się czy osoba | ||
+ | podająca się za uprawnioną do łączenia się z siecią jest osobą za którą się | ||
+ | podaje. | ||
+ | |||
+ | WPA/2/3 określa dwa profile uwierzytelniania: **WPA-Personal** i **WPA-Enterprise**. \\ | ||
+ | WPA3 dodatkowo pozwala tworzyć sieci otwarte (bez uwierzytelniania). | ||
+ | |||
+ | Mechanizmy uwierzytelniania w WPA/2/3: | ||
+ | <html><div style="margin-top:-1.2em"/></html> | ||
+ | | ^ <small>//brak uwierzytelniania//</small> ^ WPA-Personal ^ WPA-Enterprise ^ | ||
+ | ^ WPA | <html><div style="margin-top:1em"/>—</div></html> | <html><div style="margin-top:1em"/>PSK</div></html> | <html><div style="margin-top:2em"/>EAP</div></html> | | ||
+ | ^ WPA2 | ::: | ::: | ::: | | ||
+ | ^ WPA3 | OWE | SAE | ::: | | ||
+ | |||
+ | === OWE === | ||
+ | |||
+ | Od standardu WPA3 możliwe jest tworzenie sieci szyfrowanych __bez__ uwierzytelniania. | ||
+ | W takich sieciach do wygenerowania potrzebnych kluczy używa się | ||
+ | [[https://en.wikipedia.org/wiki/Opportunistic_Wireless_Encryption|OWE]] | ||
+ | ([[https://datatracker.ietf.org/doc/html/rfc8110|RFC 8110]]), rozwiązania które na bazuje | ||
+ | protokole [[https://pl.wikipedia.org/wiki/Protok%C3%B3%C5%82_Diffiego-Hellmana|Diffiego-Hellmana]]. | ||
+ | \\ | ||
+ | <small>Protokół DH pozwala wygenerować tajny klucz bez żadnego wspólnego sekretu | ||
+ | znanego osobom generującym klucz.</small> | ||
+ | |||
+ | <small>Sieci wykorzystujące [[https://en.wikipedia.org/wiki/Opportunistic_Wireless_Encryption|OWE]] | ||
+ | są nazywane przez Wi-Fi Alliance [[https://www.wi-fi.org/news-events/newsroom/wi-fi-certified-enhanced-open-delivers-data-protection-in-open-wi-fi-networks|Wi-Fi Enhanced-Open]]</small> | ||
+ | |||
+ | === WPA-Personal === | ||
+ | |||
+ | **PSK** ([[https://en.wikipedia.org/wiki/Pre-shared_key|Pre-shared Key]]), | ||
+ | używane przez WPA i WPA2, wymaga znajomości przez klienta i AP | ||
+ | **wspólnego sekretu** – ciągu 256 bitów. Zwykle taki ciąg jest skrótem | ||
+ | kryptograficznym z **"hasła"** o długości od 8 do 63 znaków. | ||
+ | |||
+ | Wady uwierzytelniania WPA-PSK/WPA2-PSK: | ||
+ | * podatność na słownikowe ataki offline, | ||
+ | * siła zabezpieczenia zależy od siły hasła, | ||
+ | * znane (i częściowo niezałatane) podatności, np. [[https://en.wikipedia.org/wiki/KRACK|KRACK]], | ||
+ | * <small>znając PSK i słuchając pełnej komunikacji (od nawiązania połączenia) można deszyfrować transmisję.</small> | ||
+ | |||
+ | **SAE** ([[https://en.wikipedia.org/wiki/Simultaneous_Authentication_of_Equals|Simultaneous Authentication of Equals]]), | ||
+ | używane w WPA3, jest rozwinięciem protokołu Diffiego-Hellmana w którym strony | ||
+ | muszą dodatkowo znać wspólny sekret (tworzony z **hasła**). W SAE podsłuchanie | ||
+ | komunikacji nie pozwala poznać tego sekretu, nie pozwala na ataki słownikowe na | ||
+ | przechwyconej komunikacji i nie pozwala znając sekret wygenerować klucza z | ||
+ | podsłuchanej komunikacji. | ||
+ | \\ | ||
+ | Przez brak możliwości dopasowania hasła do przechwyconej komunikacji SAE | ||
+ | uznaje się za odporne na ataki słownikowe, stąd nie wprowadzono dolnych | ||
+ | ograniczeń na długość hasła. | ||
+ | |||
+ | <small>Matematyczne podstawy działania SAE: https://asecuritysite.com/encryption/dragonfly</small> | ||
+ | |||
+ | Na skutek zignorowania w trakcie tworzenia WPA-3 znanych wcześniej, | ||
+ | zgłaszanych i załatanych w innych zastosowaniach podatności wymiany | ||
+ | dragonfly([[https://datatracker.ietf.org/doc/html/rfc7664#section-3.3|RFC 7664]]) | ||
+ | na ataki czasowe, w niektórych implementacjach WPA3-SAE możliwe jest | ||
+ | przeprowadzenie ataków pozwalających odkryć hasło ([[https://wpa3.mathyvanhoef.com/|dragonblood]]). | ||
+ | |||
+ | | ||
+ | === WPA-Enterprise === | ||
+ | | ||
+ | Profil WPA-Enterprise używa mechanizmu wcześniej zdefiniowanego dla sieci | ||
+ | przewodowych – [[https://en.wikipedia.org/wiki/IEEE_802.1X|802.1X]]. | ||
+ | \\ | ||
+ | W uwierzytelnianiu biorą udział trzy urządzenia: stacja (suplikant), AP i **serwer | ||
+ | uwierzytelniający**. | ||
+ | \\ | ||
+ | Główną cechą WPA/2/3-EAP jest **scentralizowane uwierzytelnianie**. | ||
+ | \\ | ||
+ | <small>Do uwierzytelniania wykorzystywany jest serwer implementujący protokół | ||
+ | [[https://en.wikipedia.org/wiki/RADIUS|RADIUS]].\\ | ||
+ | Jednym z wiodących implementacji takiego serwera jest FreeRADIUS | ||
+ | ([[http://wiki.freeradius.org/guide/WPA-HOWTO|przykładowa konfiguracja]]). \\ | ||
+ | Otwarta dokumentacja dla sieci Eduroam – przykład wdrożenia sfederalizowanego uwierzytelniania: | ||
+ | [[https://wiki.geant.org/pages/viewpage.action?pageId=121346286|en]], | ||
+ | [[https://www.eduroam.pl/index.php?page=doc&lang=pl|pl]]</small> | ||
+ | |||
+ | |||
+ | W WPA/2/3-EAP, stacja i AP wymieniają się wiadomościami protokołu EAP (opakowanymi w protokół EAPOL). | ||
+ | \\ | ||
+ | AP i serwer uwierzytelniający wymieniają się wiadomościami protokołu EAP (opakowanymi w protokół RADIUS). | ||
+ | \\ | ||
+ | <html><div style="margin-top:-1.2em"/></html> | ||
+ | - stacja i AP wymieniają się tożsamościami | ||
+ | - AP wysyła żądanie dostępu od stacji do serwera uwierzytelniającego | ||
+ | - serwer uwierzytelniający proponuje sposób uwierzytelniania i wysyła za pośrednictwem AP żądanie o dane uwierzytelniające do stacji | ||
+ | - stacja za pośrednictwem AP odpowiada serwerowi uwierzytelniającemu((lub żąda innego sposobu uwierzytelniania, co cofa proces do poprzedniego kroku)) | ||
+ | - serwer uwierzytelniający wysyła do AP zgodę na dostęp (lub odmowę) | ||
+ | - AP wpuszcza do sieci stację | ||
+ | |||
+ | Protokół **[[https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol|EAP]]** | ||
+ | pozwala uzgodnić jeden z wielu dostępnych sposobów uwierzytelniania i przekazać dane | ||
+ | uwierzytelniające. Wiadomości protokołu EAP (ani EAPOL) nie są szyfrowane. | ||
+ | \\ | ||
+ | Dostępne metody uwierzytelniania to między innymi: | ||
+ | * <small>PSK (uwierzytelnianie oparte o pre-shared key) i PWD (uwierzytelnianie oparte o hasło)</small> | ||
+ | * TLS (uwierzytelnianie oparte o certyfikat klienta) | ||
+ | * przesłanie kolejnych danych uwierzytelniających wewnątrz szyfrowanego tunelu – [[https://en.wikipedia.org/wiki/Protected_Extensible_Authentication_Protocol|PEAP]], TTLS, FAST, wewnątrz którego można stosować: | ||
+ | * uwierzytelnianie oparte o nazwę użytkownika i hasło | ||
+ | * uwierzytelnianie oparte o certyfikat klienta | ||
+ | |||
+ | === WPS === | ||
+ | | ||
+ | **[[https://en.wikipedia.org/wiki/Wi-Fi_Protected_Setup|WPS]]** to zbiór | ||
+ | rozwiązań mających ułatwiać osobom nietechnicznym korzystanie z zabezpieczeń | ||
+ | WPA2-PSK / WPA3-SAE. | ||
+ | \\ | ||
+ | Część implementacji WPS (np. //pin//) nie zapewnia bezpieczeństwa sieci. | ||
+ | \\ | ||
+ | Inne (jak np. powszechny dzisiaj //push button//) są uważane za bezpieczne. | ||
+ | |||
+ | === Klucz PMK === | ||
+ | |||
+ | **W wyniku uwierzytelnienia((każdego – zarówno PSK, EAP, OWE, SAE jak i EAP)) | ||
+ | klient i access point generują identyczny klucz PMK (Pairwise Master Key) | ||
+ | używany później na potrzeby szyfrowania.** | ||
+ | |||
+ | ==== Szyfrowanie w WPA/2/3 ==== | ||
+ | |||
+ | **Działanie szyfrowania nie zależy od zastosowanego w sieci uwierzytelniania.** | ||
+ | |||
+ | Do szyfrowania ramek wysłanych między AP a jednym odbiorcą wykorzystuje się | ||
+ | klucz PTK (Pairwise Transient Key). **Klucz PTK jest** generowany z klucza PMK | ||
+ | i powinien być **regularnie zmieniany**. Stąd szyfrowanie używane w WPA/2/3 | ||
+ | określa się jako używający kluczy dynamicznych. | ||
+ | |||
+ | Ramki wysłane przez AP do wielu odbiorców (rozgłoszeniowych bądź multicastowych) | ||
+ | są szyfrowane używając klucza GTK (group temporal key), klucza generowanego | ||
+ | przez AP, regularnie zmienianego i wysłanego klientom. | ||
+ | |||
+ | <small>Wszystkie klucze używane do szyfrowania są symetryczne.</small> | ||
+ | |||
+ | Podłączone stacje muszą na żądanie AP zmieniać klucze szyfrujące na karcie | ||
+ | sieciowej. | ||
+ | |||
+ | Do generowania kluczy i szyfrowania można używać algorytmów: | ||
+ | * [[https://pl.wikipedia.org/wiki/Temporal_Key_Integrity_Protocol|TKIP]] (wymagane wsparcie w WPA, opcjonalnie wspierane w WPA2, zabronione w WPA3) | ||
+ | * [[https://en.wikipedia.org/wiki/CCMP_(cryptography)|CCMP (AES)]] (opcjonalnie wspierane w WPA, wymagane wsparcie w WPA2 i WPA3) | ||
+ | * [[https://en.wikipedia.org/wiki/Galois/Counter_Mode|GCMP]] (wprowadzone w WPA3) | ||
+ | |||
+ | <small> | ||
+ | Klucze używane do szyfrowania mają długość 128, 192 bądź 256 bitów. | ||
+ | </small> | ||
+ | | ||
+ | ==== Zabezpieczenie ramek zarządzających ==== | ||
+ | |||
+ | Dostępny do dawna, ale wymagany dopiero w WPA3 i od tego momentu powszechnie | ||
+ | implementowany standard [[https://en.wikipedia.org/wiki/IEEE_802.11w-2009|802.11w]] | ||
+ | wymaga zabezpieczania ramek zarządzających, co zapobiega podrabianiu ramek | ||
+ | m. inn. rozłączających klienta od AP([[https://en.wikipedia.org/wiki/Wi-Fi_deauthentication_attack|deauth attack]]). | ||
+ | |||
+ | <small>Zabezpieczenie polega na szyfrowaniu (ramki do jednego odbiorcy) lub kryptograficznym podpisywaniu (ramki do wielu odbiorców) ramek przez ich nadawcę</small> | ||
+ | |||
+ | ==== (Stare) linki ==== | ||
+ | | ||
+ | <small> | ||
WEP, WPA{,2,3} dobrze opisuje artykuł: https://www.nastykusieci.pl/wpa3/ i https://www.cyberbajt.pl/raport/377/0/378/ | WEP, WPA{,2,3} dobrze opisuje artykuł: https://www.nastykusieci.pl/wpa3/ i https://www.cyberbajt.pl/raport/377/0/378/ | ||
+ | </small> | ||