MACsec – szyfrowanie w warstwie drugiej

Jakub Krawczyk
Jakub Krawczyk Skomentuj

Rozwój środowiska sieciowego nieustannie stawia przed inżynierami nowe wyzwania. Przenoszenie danych do chmury czy korzystanie z platform streamingowych sprawia, że zapotrzebowanie na łącza zapewniające coraz większe przepustowości nieustannie rośnie. Jednocześnie coraz większego znaczenia nabierają kwestie związane z bezpieczeństwem i ochroną danych. MACsec jest jedną z technologii, która stawia czoła tym wyzwaniom.

Czym jest MACsec?

MACsec (ang. Media Access Control Security) to protokół, który służy do ochrony połączeń w warstwie 2 modelu OSI, czyli warstwie łącza danych. Zdefiniowany został w 2006 roku w ramach standardu IEEE 802.1ae.

MACsec zapewnia trzy istotne elementy z punktu bezpieczeństwem transmisji danych:

  • Szyfrowanie danych – chroni przesyłane dane przed niepowołanym dostępem. Domyślnie wykorzystywany jest standard szyfrowania GCM-AES-128 (Galois/Counter Mode – Advanced Encryption Standard o długości klucza 128 bitów), aktualne wersje wykorzystują również klucze o długości 256 bitów;
  • Integralność danych – dzięki wbudowanemu w ramkę polu Integrity Check Value możliwe jest sprawdzenie czy dane w trakcie komunikacji nie zostały naruszone;
  • Uwierzytelnianie, autoryzacja i kontrola dostępu (ang. AAA – Authentication, Authorization, and Accounting) – funkcje te realizowane są poprzez integrację z protokołem 802.1X.

MACsec powstał z myślą o zapewnieniu bezpieczeństwa w sieciach lokalnych. Dlatego też pierwsza wersja protokołu skupiała się na zapewnieniu bezpiecznej komunikacji punkt-punkt (ang. point-to-point). Ze względu na budowę ramki miała ona swoje ograniczenia i nie zapewniała pełnej ochrony, gdy dane były przesyłane w ramach sieci WAN. Obecnie MACsec oferuje dużo większe możliwości w zakresie ochrony danych end-to-end, co przedstawię bardziej szczegółowo przy omawianiu budowy ramki.

Jak zapewne dobrze wiesz, MACsec nie jest pierwszym protokołem umożliwiającym szyfrowanie komunikacji w sieciach. Zadanie to może być realizowane w różnych warstwach modelu ISO/OSI.

Najbardziej powszechnym sposobem ochrony transmisji danych jest protokół TLS, czyli Transport Layer Security. TLS działa pomiędzy warstwą transportową, a warstwą aplikacji. Stosowany jest do zabezpieczenia komunikacji w aplikacjach internetowych, takich jak przeglądarki internetowe, poczta elektroniczna czy komunikatory internetowe.

IPsec z kolei to zestaw protokołów działających w warstwie sieciowej. Jest on zazwyczaj wykorzystywany do budowy sieci VPN. Umożliwia ochronę end-to-end, dlatego też za jego pomocą można zabezpieczyć połączenia np. pomiędzy oddalonymi geograficznie oddziałami firmy lub zapewnić zdalny dostęp pracownikom, którzy łączą się z siecią firmową za pośrednictwem Internetu.

MACsec vs IPsec i TLS

Jaki jest więc sens stosowania kolejnego protokołu szyfrowania? Czy nie wprowadza on tylko dodatkowych komplikacji w budowaniu i zarządzaniu siecią?

MACsec w odróżnieniu od innych protokołów służących do szyfrowania transmisji danych jest zaimplementowany w hardware, a nie software. Dodatkowo nagłówek MACsec, tzw. SecTag jest mniejszy niż nagłówek wykorzystywany w IPsec. To znacząco poprawia wydajność i sprawia, że działa on z dużo mniejszymi opóźnieniami. Dla bardzo szybkich łączy to właśnie IPsec może okazać się wąskim gardłem. MACsec natomiast w zasadzie działa z maksymalną prędkością danego łącza.

Sieci LAN są narażone na wiele ataków typu man-in-the-middle lub DDoS, przed którymi nie chroniły dotychczasowe rozwiązania. MACsec dzięki temu, że szyfruje dane w warstwie drugiej umożliwia zabezpieczenie protokołów takich jak ARP, DHCP, LACP czy LLDP. W odróżnieniu od IPsec i TLS jako jedyny chroni więc przed atakami ARP Spoofing, DHCP Starvation czy VLAN Hopping.

Dodatkowo protokół MACsec zapewnia autentyczność pochodzenia danych. Dzięki temu mamy pewność, że każda z odebranych ramek została wysłana tylko i wyłącznie przez uwierzytelnione urządzenie. Dzięki indywidualnemu numerowaniu wszystkich ramek chroni on również dane przed ponownym odtwarzaniem.

Pamiętaj, że każde z rozwiązań służących do zabezpieczania sieci ma swoje wady i zalety, ale oczywiście żadne z nich nie jest w pełni skuteczne. Niezbędne jest więc stosowanie wielu metod i narzędzi, które współpracują ze sobą w celu zapewnienia jak najwyższego poziomu bezpieczeństwa. Szczególnie istotne jest to w sieciach, w których zapewnienie ochrony danych jest priorytetem. MACsec nie powinien być więc traktowany jako zamiennik IPSec czy TLS, ale raczej jako kolejny zestaw narzędzi, zapewniający wielowarstwową ochronę przed atakami.

Budowa ramki MACsec

Ramka MACsec jest rozszerzeniem ramki Ethernet. Tworzona jest przez dodanie tagu bezpieczeństwa (SecTAG) oraz pola ICV (Integrity Check Value).

Ramka MACsec

W skład SecTAG wchodzą następujące pola:

  • ETYPE – pole to ma stałą wartość 0x88e5 i wskazuje, że ta ramka jest ramką MACsec;
  • TCI – 1-bajtowe pole TAG Control Information (TCI), które zawiera dodatkowe szczegółowe informacje na temat ramki;
  • SL – pole Short Lenght służy do oznaczania ramki, której wartość między ostatnim bajtem SecTAG, a pierwszym bajtem ICV wynosi mniej niż 48 bajtów. W przeciwnym razie wartość SL wynosi zero;
  • PN – pole to zawiera unikalny numer ramki (Packet Number), służy ono do ochrony przed atakami typu „replay” polegającymi na retransmisji danych przez sieć;
  • SCI – 8 bajtowe pole Secure Channel Identifier może służyć do identyfikacji Secure Association (SA) do którego należy ruch sieciowy.

Pole ICV zapewnia integralność docelowego i źródłowego adresu MAC, SecTAG oraz danych użytkownika. Długość ICV zależy od pakietu szyfrów i wynosi od 8 do 16 bajtów. Gdy do urządzenia MACSec trafia ramka z danymi, MACSec deszyfruje ją. Następnie oblicza wartość ICV i porównuje ją z wartością ICV zawartą w ramce. Jeśli obie są identyczne, ramka jest akceptowana. W przeciwnym razie pakiet jest odrzucany.

W tej wersji ramki MACsec pole VLAN jest zaszyfrowane. Przy przesyłaniu danych ruch pomiędzy urządzeniami był szyfrowany, jednak każde urządzenie znajdujące się na trasie musiało na porcie wejściowym odszyfrować dane, odczytać nagłówek VLAN, a następnie zaszyfrować dane, by przesłać je dalej. Rozwiązanie to nie mogło być więc stosowane poza sieciami lokalnymi, w których administrator miał pełną kontrolę nad urządzeniami sieciowymi. Aby obsługiwać komunikację typu end-to-end w sieciach WAN, VLAN tag musi pozostać niezaszyfrowany. MACsec obecnie umożliwia stosowanie ramki, w której VLAN może opcjonalnie znajdować się poza nagłówkiem szyfrowania.

Ramka MACsec bez szyfrowania VLAN

Jak działa MACsec?

Sesja między urządzeniami wspierającymi MACsec nawiązywana jest za pomocą protokołu MACsec Key Agreement (MKA) zdefiniowanego w standardzie 802.1X. Odpowiada on za odnajdywanie urządzeń wspierających MACsec, a następnie ich identyfikację i autoryzację. Dodatkowo zarządza on procesem negocjowania kluczy szyfrujących. Klucze mogą być zdefiniowane przez administratora (Pre-Shared Key) lub generowane przez serwer uwierzytelniający (np. RADIUS).

Urządzenia, które nawiążą ze sobą bezpieczną łączność ustanawiają tzw. CA, czyli Connectivity Association. CA definiuje bezpieczne relacje między dwoma lub wieloma urządzeniami MACsec. Urządzenie, które będzie odpowiedzialne za zarządzanie kluczami sesji wybierane jest ramach CA. W przypadku braku możliwości zestawienia szyfrowanej sesji połączenie jest zrywane, dzięki czemu łącze jest zawsze chronione.

W ramach CA ustanawiane są jednostronne (oddzielne dla transmisji i odbioru danych) szyfrowane kanały SC (Secure Channel). Kanały te nie wygasają i trwają przez całą transmisję.

Szyfrowanie ramek pomiędzy członkami CA realizowane jest za pomocą relacji bezpieczeństwa, czyli Secure Association (SA). Podczas transmisji każda ramka jest przypisywana do SA. MACsec nie przesyła dodatkowych ramek, takich jak Keepalive.

Do zabezpieczenia łącza używane są dwa rodzaje kluczy. Connectivity Association Key (CAK) to główny klucz używany do zabezpieczenia control plane i zarządzania ruchem między członkami CA. Na jego bazie tworzone są klucze Secure Association Key (SAK), które służą do szyfrowania ruchu data plane dla danej sesji. Klucze te są krótkotrwałe i mają swój określony czas życia. Są automatycznie odnawiane po przesłaniu określonej ilości ramek lub po rozłączeniu i ponownym nawiązaniu połączenia.

Zastosowanie MACsec

Protokół MACsec został zaprojektowany, by zapewnić bezpieczną komunikację w sieciach LAN. Dzięki swoim cechom znajduje on dziś dużo szersze zastosowanie. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.

Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSletterze 27. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.

Zostaw komentarz
Otrzymuj powiadomienia z tej dyskusji
Powiadom mnie o
guest

0 - Ilość komentarzy
Inline Feedbacks
View all comments