• Nie Znaleziono Wyników

Index of /rozprawy2/11545

N/A
N/A
Protected

Academic year: 2021

Share "Index of /rozprawy2/11545"

Copied!
177
0
0

Pełen tekst

(1)Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie Wydział Informatyki, Elektroniki i Telekomunikacji. Grzegorz Sułkowski. Implementacja mechanizmów wyszukujących wzorce do akceleracji przetwarzania pakietów sieci Ethernet w  układach rekonfigurowalnych FPGA Rozprawa doktorska Promotor. prof. dr hab. inż. Kazimierz Wiatr. Kraków, 2019.

(2) Moim Rodzicom. Pragnę wyrazić serdeczne podziękowania Panu Profesorowi Kazimierzowi Wiatrowi za inspirację, mobilizację oraz nieocenioną pomoc w powstaniu tej rozprawy.. Serdeczne podziękowania Wszystkim, Którzy swoją cierpliwością i życzliwością Przyczynili się do powstania tej rozprawy.. 2.

(3) Spis treści Wykaz Skrótów...........................................................................................................................5 1. Wstęp.......................................................................................................................................9 1.1. Motywacja.......................................................................................................................9 1.2. Cel i teza pracy..............................................................................................................11 1.3. Organizacja pracy..........................................................................................................11 2. Algorytmy wyszukiwania wzorców......................................................................................13 2.1 Wstęp..............................................................................................................................13 2.2 Podstawowy algorytmów przetwarzania tekstu i wyszukiwania wzorców....................13 2.2.1 Algorytm Aho-Corasic................................................................................................15 2.2.2 Algorytm Morris'a-Pratt'a............................................................................................17 2.2.3 Algorytm Knuth'a-Morris'a-Pratt'a..............................................................................19 2.2.4 Algorytm Boyer'a-Moore'a..........................................................................................20 2.3 Podsumowanie algorytmów wyszukiwania wzorców....................................................24 3. Systemy zabezpieczeń sieciowych........................................................................................26 3.1 Wstęp..............................................................................................................................26 3.2 Podstawy sieci Ethernet..................................................................................................26 3.3 Podstawy protokołu TCP/IP w wersji 4.........................................................................30 3.3.1 Model TCP/IP..............................................................................................................30 3.3.2 Protokół IP...................................................................................................................33 3.3.3 Protokół TCP...............................................................................................................35 3.3.4 Protokół UDP..............................................................................................................37 3.3.5 Protokół ICMP............................................................................................................38 3.4 Systemy zabezpieczeń sieciowych typu firewall...........................................................39 3.4.1 Klasyfikacja implementacyjna systemu zabezpieczeń typu firewall..........................42 3.4.2 Klasyfikacja funkcjonalna systemu zabezpieczeń typu firewall.................................43 3.4.3 Taksonomia klasyfikatorów pakietów sieciowych w systemach zabezpieczeń firewall ........................................................................................................................................46 3.4.4 Podsumowanie zaproponowanego przeglądu taksonomii klasyfikatorów pakietów sieciowych......................................................................................................................58 4. Algorytmy wyszukiwania wzorców implementowane w  układach FPGA..........................60 4.1 Wstęp..............................................................................................................................60. 3.

(4) 4.2 Układy FPGA.................................................................................................................60 4.3 Mechanizmy wyszukiwania wzorców implementowane w układach FPGA................64 4.4 Podsumowanie zaproponowanego przeglądu mechanizmów wyszukiwania wzorców implementowanych w układach FPGA..........................................................................74 5. Implementacja mechanizmów wyszukujących wzorce do  akceleracji przetwarzania pakietów sieci Ethernet w  układach rekonfigurowalnych FPGA......................................76 5.1 Wstęp..............................................................................................................................76 5.2 Wprowadzenie................................................................................................................76 5.3 Proponowane rozwiązanie wyszukiwania wzorców nagłówków TCP/IP na  potrzeby akceleracji przetwarzania pakietów sieci Ethernet w  sprzętowej implementacji systemu bezpieczeństwa typu firewall...........................................................................80 5.3.1 Modułu komunikacji sieciowej ETH_MAC sieci Ethernet........................................83 5.3.1.1 Interfejs odbiorczy modułu ETH_MAC – moduł RX – eth_rx................................84 5.3.1.2 Interfejs nadawczy modułu ETH_MAC – moduł TX – eth_tx................................90 5.3.1.3 Jednostka kontrolna – moduł Control – eth_control................................................94 5.3.1.4 Wyniki implementacji modułu ETH MAC sieci Ethernet.......................................94 5.3.2 Kontroler pamięci – ram_ctrl......................................................................................96 5.3.2.1 Moduł pamięci RAM..............................................................................................101 5.3.2.2 Kolejki deskryptorów.............................................................................................104 5.3.2.3 Wyniki implementacji kontrolera pamięci.............................................................106 5.3.3 Klasyfikator pakietów sieciowych............................................................................107 5.3.3.1 Moduł wyszukiwania adresacji IP – fw_ac............................................................122 5.3.3.2 Moduł wyszukiwania portów TCP/UDP – fw_ports..............................................129 5.3.3.3 Moduł wyszukiwania protokołu IP – fw_protocol.................................................132 5.3.3.4 Moduł wyszukiwania VLAN – fw_vlan................................................................134 5.3.3.5 Moduł pamięci cache – fw_cache..........................................................................136 5.3.3.6 Wyniki implementacji klasyfikatora pakietów.......................................................158 5.4 Wyniki implementacji mechanizmów wyszukujących wzorce do akceleracji przetwarzania pakietów sieci Ethernet w układach rekonfigurowalnych FPGA.........160 6. Podsumowanie....................................................................................................................166 Literatura.................................................................................................................................170 Dodatki....................................................................................................................................177 A. Zawartość załączonej płyty CD.....................................................................................177. 4.

(5) Wykaz ważniejszych skrótów ABV. – dekompozycyjny algorytm klasyfikatora pakietów sieciowych będący rozwinięciem algorytmu Parallel Bit-Vectors (ang. Aggregated Bit Vector). AC. – algorytm wyszukiwania wzorców Aho-Corasic. ACL. – lista kontroli dostępu (ang. Access Control List). ASIC. – specjalizowane układy scalone (ang. Application-Specific Integrated Circuit). ATM. – szerokopasmowy standard komunikacji, realizujący przesył pakietów poprzez łącza wirtualne (ang. Asynchronous Transfer Mode). BF. – siłowy algorytm wyszukiwania wzorców Brute Force. BM. – algorytm wyszukiwania wzorców Boyer'a-Moore'a. bmBc. – tablica skoków/przesunięć z błędnym znakiem dla algorytmu Boyer'aMoore'a. bmGs. – tablica skoków/przesunięć z pasującym sufiksem dla algorytmu Boyer'aMoore'a. BV. – algorytm dekompozycyjny wykorzystujący mapy bitowe do wyliczania reguł bezpieczeństwa (ang. Parallel Bit-Vectors). BV-TCAM. – 5-wymiarowy mechanizm klasyfikacji pakietów sieciowych wykorzystujący pamięci TCAM oraz zmodyfikowany algorytm BV na potrzeby systemu NISD (ang. TCAM and Bit Vector algorithm). CAM. – pamięć adresowana zawartością (ang. Content Addressable Memory). CLB. – blok logiki konfigurowalnej (ang. Configurable Logic Block). CRA. – algorytm (polityka) zarządzania wykorzystaniem zasobami wewnętrznymi pamięci podręcznej (cache) (ang. cache replacement policy/algorithm). CRC. – suma kontrolna CRC kodu cyklicznego (ang. Frame Check Sequence). CSMA/CD. – wielodostęp ze śledzeniem nośnej i wykrywaniem kolizji (ang. Carrier Sense Multiple Access/Collision Detection). DAG. – algorytm wielopoziomowy trie bazujący na Directed Acyclic Graph (ang. Directed Acyclic Graph). DCFL. – dekompozycyjny algorytm klasyfikowania pakietów sieciowych wykorzystujący technikę labelowania wyników pośrednich (ang. Distributed Crossproducting of Field Labels). 5.

(6) DCM. – zarządzanie sygnałem zegarowym (ang. Digital Clock Manager). DEI. – 1 bitowe pole identyfikatora TCI (ang. Drop Eligible Indicator). DFA. – deterministyczny automat skończony (ang. Deterministic Finite Automaton). DSP. – procesor przetwarzania sygnałowego (ang. Digital Signal Processor). EGT. – rozszerzenie algorytmu GOT o przeszukiwanie tuple space (ang. Extended Grid-of-Tries). EPTSMP. – algorytm przestrzeni krotek z markerami (ang. Entry-Pruned Tuple Search with Markers and Precomputation). FCS. – pole sumy kontrolnej CRC-32 (ang. Frame Check Sequence). FIS-tree. – algorytm klasyfikacji pakietów wykorzystujący zmodyfikowaną wersję drzewa odcinków (ang. Fat Inverted Segment (FIS) Trees). FPGA. – układy reprogramowalne (ang. Field Programmable Gate Array). FSM. – automat skończony (ang. Finite State Machine). GOT. – algorytm bazujący na siatce drzew (ang. Grid-of-Tries). HiCuts. – algorytm przeszukiwania d-wielowymiarowego wykorzystujący przestrzenie przeszukiwania (ang. Hierarchical Intelligent Cuttings). HyperCuts. – algorytm przeszukiwania d-wielowymiarowego bazujący na algorytmie HiCuts. ICMP. – internetowy protokół komunikatów kontrolnych (ang. Internet Control Message Protocol). IP. – protokół komunikacyjny warstwy sieciowej modelu TCP/IP (ang. Internet Protocol). KMP. – algorytm wyszukiwania wzorców Knuth'a-Morris'a-Pratt'a. kmpNext. – tablica skoków/przesunięć algorytmu Knuth'a-Morris'a-Pratt'a. L/T. – 2 bajtowe pole długość/typ w ramce Ethernet. LAN. – lokalna sieć komputerowa (ang. Local Area Network). LUT. – generator funkcji logicznej (ang. Look-Up Table). MAC. – adres karty sieciowej Ethernet (ang. Media Access Control). MP. – algorytm wyszukiwania wzorców Morris'a-Pratt'a. mpNext. – tablica skoków/przesunięć algorytmu Morris'a-Pratt'a. MTU. – maksymalna długość ramki (ang. Maximum Transmission Unit). NFA. – niedeterministyczny automat skończony (ang. Nondeterministic Finite Automata). NIC. – karta interfejsu sieciowego (ang. Network Interface Card) 6.

(7) NIDS. – system wykrywania zagrożeń sieciowych (ang. Network Intrusion Detection System). P2C. – dekompozycyjny, współbieżny algorytm klasyfikacji pakietów sieciowych o  zredukowanym zapotrzebowaniu na zasoby pamięciowe (ang. Parallel Packet Classification). PCP. – 3 bitowe pole priorytetu ramki IEEE 802.1Q (ang. Priority Code Point). PHY. – urządzenie warstwy fizycznej w modelu ISO/OSI odpowiedzialne za obsługę połączenia z medium komunikacyjnym w sieci Ethernet (ang. Physical Layer Device). QoS. – całość charakterystyk umożliwiająca implementowanie mechanizmów jakości usług (ang. Quality of Service). RFC. – dekompozycyjny, wielostopniowy, współbieżny i potokowy algorytm klasyfikacji pakietów (ang. Recursive Flow Classification). RFC. – zbiór technicznych dokumentów w formie memorandum, związanych z  Internetem i sieciami komputerowymi (ang. Request for Comments). SFD. – pole startu ramki IEEE 802.3/Ethernet (ang. Start of Frame Delimiter). Split-AC. – dzielony algorytm Aho-Corasick pod kątem 3/5-wielowymiarowych reguł implementowanych w postaci AC FSM (ang. Split Aho-Corasick Algorithm). SRL. – rejestr przesuwny (ang. Shift Register). TCAM. – pamięć CAM z możliwością wyszukiwania trójwartościowego (ang. Ternary Content Addressable Memory). TCI. – 16 bitowe pole nagłówka IEEE 802.1Q (ang. Tag Control Information). TCP. – strumieniowy protokół komunikacyjny warstwy transportowej modelu TCP/IP (ang. Transmission Control Protocol). TP+. – 2-wymiarowy algorytm przestrzeni krotek z tablicą przeszukiwania prefiksów sieciowych (ang. Tuple Pruning+). TPA. – algorytm przestrzeni krotek o zredukowanej liczbie pozycji przeszukiwania (ang. Tuple Pruning Algorithm). TPID. – 16 bitowy identyfikator nagłówka IEEE 802.1Q (ang. Tag Protocol Identifier). TSS. – algorytm klasyfikatora pakietów sieciowych bazujący na idei przestrzeni krotek (ang. Tuple Space Search). UDP. – protokół komunikacyjny warstwy transportowej modelu TCP/IP (ang. User Datagram Protocol) 7.

(8) VHDL. – język opisu sprzętu (ang. Very High Speed Integrated Circuits Hardware Description Language). VID. – 12 bitowy identyfikator sieci VLAN (ang. VLAN Identifier). VLAN. – wirtualne sieci LAN (ang. Virtual LANs). WAN. – globalna sieć rozległa (ang. Wide Area Network). 8.

(9) 1. Wstęp. 1.1. Motywacja. Dynamiczny rozwój systemów teleinformatycznych doprowadził do sytuacji, w której trudno wyobrazić sobie funkcjonowanie współczesnej organizacji lub firmy bez posiadania przez nią systemów komputerowych, korzystających z zasobów sieci lokalnych lub publicznych. Systemy informatyczne stały się integralną, w niektórych sytuacjach nieodzowną, częścią infrastruktury organizacji, obejmując swoim zasięgiem niejednokrotnie obszary o znaczeniu strategicznym. Doprowadziło to do sytuacji, w której zarówno systemy teleinformatyczne, jaki i dane przesyłane poprzez sieć wymagają odpowiednich zabezpieczeń przed nieautoryzowanym dostępem. Zaistniała sytuacja wymusiła stworzenie odpowiednich rozwiązań zabezpieczających krytyczne systemy i zasoby, z których dwoma podstawowymi są systemy typu firewall oraz NIDS (ang. Network Intrusion Detection System). Wymienione środki. ochrony. systemów. teleinformatycznych. opierają. swoje. działanie. głównie. na specjalizowanych rozwiązaniach programowych, które w dobie zwiększających się przepływności sieci teleinformatycznych oraz ilości przesyłanych danych, wymagają ogromnej mocy obliczeniowej, zapewnianej głównie przez coraz szybsze procesory ogólnego przeznaczenia. To doprowadziło do sytuacji, w której jednym z głównych zadań systemów teleinformatycznych stała się szeroko pojęta analiza ruchu, pochłaniająca praktycznie cały dostępny czas obliczeniowy procesora. W świetle przedstawionych faktów, celowym jest poszukiwanie alternatywnych rozwiązań,. pozwalających. utrzymać. wysoki. stopień. zabezpieczeń. i. jednocześnie. odciążających systemy komputerowe z analizy ruchu sieciowego. Alternatywa taka pojawia się, jeśli zrezygnujemy z dotychczasowych rozwiązań programowych i zastąpimy je rozwiązaniami. w. pełni. sprzętowymi,. dla. których. wręcz. idealną. platformą. są reprogramowalne układy FPGA (ang. Field Programmable Gate Array). Należy zauważyć, że ostatnie lata przyniosły bardzo dynamiczny rozwój technologii układów FPGA. Nieustannie zwiększająca się szybkość dostępnej logiki oraz coraz większa. 9.

(10) liczba dostępnych zasobów sprzętowych, otwierają przed logiką reprogramowalną nowe obszary zastosowań. Oferowana przez układy FPGA elastyczność w zakresie zmian konfiguracji, zarówno statycznych jak i dynamicznych, pozwala budować wydajne i szybkie systemy o dużym współczynniku skalowalności, jakimi są niewątpliwie systemy zabezpieczeń sieciowych typu firewall. Podstawą działania każdego systemu firewall, są wydajne mechanizmy analizy i  przeszukiwania pakietów sieciowych pod kątem występowania określonych ciągów danych, które wyszukuje się za pomocą algorytmów wyszukiwania wzorców. Celem naukowym niniejszej rozprawy doktorskiej jest nie tylko poszukiwanie sposobu implementacji istniejących metod wyszukiwania wzorców całkowicie sprzętowo z  wykorzystaniem. układów. logiki. programowalnej. FPGA,. ale. także. rozbudowa. i  optymalizacja realizowanych obecnie rozwiązań na drodze programowej oraz ich integracja z mechanizmami i prymitywami sprzętowymi oferowanymi przez logikę układów FPGA. Bezpośrednie przeniesienie istniejących algorytmów programowych do platformy sprzętowej jest bezcelowe i wynika z faktu, iż algorytmy te z założenia pracują w sposób szeregowy i  jednotorowy. Koniecznym jest taka ich adaptacja, by operacje dotychczas przeprowadzane w sposób szeregowy maksymalnie zrównoleglić. Wiąże się to ze zmianą struktury analizowanych danych, w tym przypadku pakietów sieciowych analizowanych pod kątem określonych wzorców przez system zabezpieczeń sieciowych typu firewall, w taki sposób by  operacje wyszukiwania można było wykonać w sposób zrównoleglony. Opracowanie rozwiązań winno mieć także na uwadze, aby zaadoptowane algorytmy można było skonsolidować z prymitywami logiki dostępnymi w układach FPGA w sposób, który umożliwia by czas propagacji sygnałów w logice reprogramowalnej był najmniejszy, co przekłada się na dużą częstotliwość taktowania zaprojektowanego rozwiązania a tym samym na możliwość pracy z bardzo dużą szybkością przetwarzania. Wymiarem użytkowym realizowanych badań ma być opracowanie jądra systemu zabezpieczeń sieciowych typu firewall, odpowiadającego wymaganiom stawianym przez transmisje sieciowe w dużych ośrodkach obliczeniowych, takich jak ACK Cyfronet AGH.. 10.

(11) 1.2. Cel i teza pracy. W wyniku prowadzonych prac badawczych, autor zamierza udowodnić następującą tezę: „Implementacja mechanizmów wyszukujących wzorce wykorzystujące pamięci CAM wspomagane algorytmem Aho-Corasick pozwala na znaczące przyśpieszenie przetwarzania pakietów sieci Ethernet o wielkich przepływnościach przez systemy zabezpieczeń typu firewall implementowane w rekonfigurowalnych układach FPGA.”. 1.3. Organizacja pracy. Niniejsza praca podzielona została na 6 rozdziałów omawiających kolejno poruszane przez autora zagadnienia: Rozdział 1. Wstęp – to ogólne wprowadzenie do tematyki poruszanej w pracy autora. Rozdział przedstawia tezę, główne cele oraz motywację podjętej pracy. Rozdział 2. Algorytmy wyszukiwania wzorców – wyjaśnia podstawowe pojęcia i  definicje leżące u podstaw metod przetwarzania tekstu oraz wyszukiwania wzorców; omawia wybrane algorytmy oraz wykorzystywane definicje istotne z punktu widzenia prowadzonych rozważań. Ostatni podrozdział przedstawia zwięzłe podsumowanie przedstawionego materiału wraz z wyszczególnieniem aspektów istotnych dla dalszej pracy autora. Rozdział 3. Systemy zabezpieczeń sieciowych – przedstawia niezbędne zagadnienia związane z infrastrukturą sieci Ehternet, modelem TCP/IP i protokołami sieciowymi. Przedstawiono wybrane systemy zabezpieczeń sieciowych typu firewall stosowane dla przedstawionych technologii, implementowane zarówno jako rozwiązania programowe (ang. sfotware) jak i sprzętowe (ang. hardware). W dalszych podrozdziałach, zawarto klasyfikację funkcjonalną i implementacyjną platform firewall oraz przedstawiono podział wybranych algorytmów klasyfikatorów.. 11.

(12) Rozdział 4. Algorytmy wyszukiwania wzorców implementowane w  układach FPGA – wprowadza do układów FPGA, z wyszczególnieniem najważniejszych elementów budowy wykorzystywanego w pracy układu Xilinx Vertex II Pro. oraz przedstawia wybrane, z punktu widzenia pracy autora, algorytmy i mechanizmy wyszukiwania wzorców implementowane w układach FPGA. Rozdział 5. Implementacja mechanizmów wyszukujących wzorce do  akceleracji przetwarzania pakietów sieci Ethernet w  układach rekonfigurowalnych FPGA – podsumowuje wnioski z przeprowadzonych przez autora eksperymentów i testów, uzasadniających motywację prowadzonej pracy i prowadzących do postawionej tezy. Przedstawia. proponowany. model. mechanizmów. wyszukiwania. wzorców. implementowanych w logice reprogramowalnej FPGA, wraz z otrzymanymi wynikami implementacji dowodzącymi postawioną tezę, a także porównuje uzyskane wyniki w  odniesieniu do istniejących rozwiązań. Rozdział 6. Podsumowanie – stanowi podsumowanie przeprowadzonej przez autora pracy, w szczególności podsumowanie uzyskanych rezultatów badań, eksperymentów i  testów oraz wyników w odniesieniu do istniejących rozwiązań, a także odnosi uzyskane wyniki do aktualnych obecnie technologii.. 12.

(13) 2. Algorytmy wyszukiwania wzorców. 2.1 Wstęp. Podstawą dla prowadzonej przez autora pracy są zaadoptowane i zmodyfikowane na potrzeby implementacji w układach FPGA algorytmy wyszukujące wzorce. Dlatego istotnym jest przedstawienie podstaw teoretycznych związanych z analizą tekstu oraz wykorzystywanych w pracy algorytmów. W rozdziale przedstawiono podstawowe pojęcia i definicje leżące u podstaw metod przetwarzania tekstu oraz wyszukiwania wzorców. Omówiono wybrane algorytmy oraz uszczegółowiono wykorzystywane definicje istotne z punktu widzenia prowadzonych rozważań. W ostatnim podrozdziale przedstawiono zwięzłe podsumowanie przedstawionego materiału wraz z wyszczególnieniem aspektów istotnych dla dalszej pracy autora.. 2.2 Podstawowy algorytmów przetwarzania tekstu i wyszukiwania wzorców. Wyszukiwanie wzorców jest istotną częścią współczesnych technik będących fundamentem przetwarzania i edycji tekstu, który jest złożoną formą reprezentacji informacji. Przez pojęcie tekstu T w niniejszej pracy będzie rozumiany skończony ciąg symboli, będących elementami z góry zadanego, skończonego zbioru. ∑,. o mocy. |∑ |,. zwanego. alfabetem [1]. Przykładem zbioru będącego alfabetem jest zbiór liter i cyfr, jednakże w  przypadku uogólnionym może to być dowolny skończony zbiór symboli. Przez łańcuch s (ang. string), o długości N równej mocy zbioru s, będzie rozumiany dowolny podciąg tekstu T . Element s [i] reprezentuje i-ty symbol łańcucha s taki, że  i∈{0…n }, gdzie n=∣s∣−1 i s [i]∈ ∑ . Łańcuchem pustym (ang empty string) jest łańcuch s o zerowej długości tj. N =0. Fragmentem. łańcucha. s. (ang.. substring). będzie. łańcuch. s [i : j],. taki. że  0⩽i⩽ j⩽∣s∣−1 [2]. Prefiksem łańcucha s (ang. prefix) o długości i jest fragment łańcucha. 13.

(14) s [0:i−1] [2]. Sufiksem łańcucha (ang. suffix) o długości k jest fragment łańcucha s [n−k + 1: n] [2]. Przez wzorzec p (ang. pattern) będzie rozumiany dowolny łańcuch, taki że symbole p[i] są elementami zbioru ∑ . Dwa symbole s [i] oraz s [ j ] łańcucha s są sobie równe s [i]=s [ j], jeśli j , i∈{0… N },. s [i] , s [ j]∈∑ , oraz s [i] jest tożsame z s [ j ], s [i]≡s [ j]. W ogólnym przypadku, dla algorytmów wyszukiwania wzorców, zdefiniowany jest symbol wieloznaczny ?, nie będący symbolem alfabetu ∀. s[i ]∈∑. ∑,. dla którego zachodzi. s [i] = ?. Jednocześnie definiuje się łańcuch wieloznaczny ∗, którego elementy ∗[i]. ∀ ∗[i] = ?. są  równe ?, i ∈∣∗∣ Porównanie dwóch elementów s [i] oraz s [ j ] to operacja weryfikująca równość s [i]=s [ j]. Prefiks v łańcucha s można zobrazować jako łańcuch, dla którego istnieje łańcuch w taki, że s=vw. Podobnie można zobrazować sufiks u łańcucha s jako łańcuch z, dla którego zachodzi s=zu. Przez prefikso-sufiks (ang. border) w będzie rozumiany łańcuch, dla którego istnieją łańcuchy u i v, takie że zachodzi s=uw=wv [2]. Przez wyszukanie wzorca będzie rozumiany proces polegający na porównywaniu kolejnych elementów wzorca p z elementami s [i]∈T taki, że: for j=0 until j⩽∣s∣−∣p∣ do for i=0 until i<∣ p∣ && p[i]=s [ i+ j ] do if i⩾∣s∣ OK i++ end j++ end FAIL Listing 1. Wyszukanie wzorca zapisane w pseudokodzie. Wynikiem operacji wyszukiwania jest informacja czy żądany wzorzec p znajduje się w  tekście wejściowym T . Bardzo często algorytmy wyszukiwania oprócz informacji. 14.

(15) potwierdzającej znalezienie wzorca p podają także informacje o położeniu p względem T . Istotnym podkreślenia jest fakt, że proces wyszukiwania zależy od opracowanego algorytmu wyszukiwania. Przyjęty w niniejszej pracy za definicje wyszukiwania proces to algorytm siłowy (ang. Brute Force algorithm – BF) o pesymistycznej złożoności obliczeniowej O(∣p∣∗∣T∣) [2]. Dopasowanie (znalezienie) (ang. match) wzorca p w T to wynik wyszukiwania, dla którego w tekście T istnieje s [i : j] którego kolejne elementy odpowiadają (są równe) kolejnym elementom p; co można zapisać jako k ∈{0…∣ p∣−1}, p [k ]=s [i+ k ]. W myśl wprowadzonych pojęć i oznaczeń na potrzeby prowadzonej pracy przyjęto dodatkowo następujące definicje i oznaczenia. Elementami zbioru alfabet będzie podzbiór zbioru liczb całkowitych w przedziale { 0…255 } . Kolejne elementy zbioru T będą oznaczane jako t [i ]. Dodatkowo przyjmuje się, że symbole przyjętego alfabetu kodowane są na 8 bitach danych oraz wprowadza się uproszczenia zapisu poniższych oznaczeń: s [i]≡s i , p[i]≡ pi , t [i]≡t i .. (2.1). 2.2.1 Algorytm Aho-Corasic. W 1975r. Alfred V. Aho wraz z Margaret J. Corasick [3] przedstawili algorytm wyszukiwania wzorców, nazwany od nazwisk autorów algorytmem Aho-Corasic (AC). Opisany algorytm bazuje w swoim działaniu na automatach stanów [4], [5] i umożliwia jednoczesne dopasowywanie więcej niż jednego żądanego łańcucha w analizowanym tekście wejściowym. Zaproponowana przez autorów procedura miała za zadanie przyśpieszyć wyszukiwanie zadanych wzorców w zbiorach bibliotecznych, co w konsekwencji pozwoliło na przyśpieszenie operacji przeszukiwania od 5 do 10 razy szybciej w stosunku do  stosowanych wówczas mechanizmów [3]. Celem algorytmu AC jest znalezienie każdego wzorca pl , z zadanego zbioru K ={ p0 … p n } w tekście wejściowym T . Algorytm w podstawowej wersji operuje na trzech funkcjach: GO, FAIL, OUTPUT, które poprzez wzajemne współdziałanie są składowymi automatu stanu, w obrębie którego następuje współbieżne wyszukiwanie żądanych łańcuchów pl ∈K . Współbieżne dopasowywanie wzorców pl do tekstu T polega na dopasowywaniu 15.

(16) elementów łańcucha s [0: j] do elementów pl . Operacja porównywania kolejnych elementów pli z elementami T realizowana jest przez funkcje GO, która z zadanego zbioru K buduje automat stanów. GO ( f i , t j ) = f i+1, którego stany wewnętrzne f i reprezentują przejścia. (ang. transitions) pomiędzy elementami pli w drzewie wzorców K , w zależności od bieżącego stanu automatu oraz wejściowego symbolu t j. Stany funkcji GO reprezentowane są poprzez liczby naturalne, spośród których umownie wyróżnia się liczbę 0 reprezentującą stan początkowy f 0. Dodatkowo, dla funkcji GO, zdefiniowany jest stan błędu fail, oznaczany jako f. fail. i  reprezentujący stan, dla którego przy zadanych symbolach f i, t i nie istnieje stan. następny f i+ 1 (GO ( f i , t j ) = f. fail. ). Za wyliczenie f i+ 1 dla stanu f i przy GO ( f i , t j ) = f. fail. odpowiada funkcja FAIL, której wynik f i+ 1 jest stanem bieżącym ( f i) dla funkcji GO przy zadanym t i. Rezultatem wyszukiwania K ={ p0 … p n } w T jest wynik zwracany przez funkcję OUTPUT, która dekoduje f i+ 1 na znaleziony pl ∈ K . Funkcje GO, FAIL, OUTPUT są  generowane przed wykonaniem głównego algorytmu wyszukiwania, przy czym złożoność czasowa algorytmu generującego funkcję GO jest rzędu O( n). Należy zaznaczyć, że siłą algorytmu AC jest jednoczesne przeszukiwanie { p0 … p n } wzorców w tekście T ze złożoność czasową O(n+∣T∣) przy całkowitej liczbie transakcji funkcji GO nie większej niż 2n [3], [6]. Zapis algorytmu AC w pseudokodzie przedstawiony został na listingu 2. Dla zadanych T = { t 0 …t N }, K ={ p0 … p n }, GO, FAIL, OUTPUT wykonuj: begin f ←0 for i ← 0 until N do begin while GO( f , t i) = f. fail. do f ← FAIL( f ). f ← GO( f , t i) if OUTPUT( f ) print OUTPUT( f ) end end Listing 2. Algorytm Aho-Corasic zapisany w pseudokodzie. 16.

(17) Działanie funkcji GO, FAIL oraz OUTPUT algorytmu AC zarysowane zostało na  następującym przykładzie [3]. Dany jest zbiór wzorców K ={he , she , his , hers}. Dla tak zdefiniowanych danych działanie funkcji GO przedstawia graf przejść (Rys.1), reprezentujący automat stanów. Funkcja FAIL dla zadanego zbioru wzorców, determinowanego postacią funkcji GO  z  rysunku Rys. 1, dekodowana będzie zgodnie z następującym zapisem: f : 1 2 3 4 5 6 7 8 9 FAIL( f ) : 0 0 0 1 0 0 3 0 3 Dla przyjętego K oraz wynikającej funkcji GO funkcja OUTPUT zdekoduje wynik wyszukiwania zgodnie z zapisem: f → output ( f ) 2 {he} 5 {she , he} 7 {his} 9 {hers }. 0. h. 0 1. e. 0 2. r. 8. s. 9. !{h,s} i s. 0 3. h. 6 4. s e. 7 5. Rys. 1: Graf przejścia funkcji GO algorytmu AC dla wzorców {he, she, his, hers}. 2.2.2 Algorytm Morris'a-Pratt'a. Zaproponowany przez J. H. Morris'a i V. R. Pratt'a w 1977 roku algorytm (MP) bazuje na wnioskach z analizy algorytmu siłowego [2]. Głównym spostrzeżeniem jest fakt, 17.

(18) że  długość skoku c o jaki przesunięty zostanie wzorzec p względem tekstu t w przypadku gdy p[i] ≠ t [ j+i ] może zostać zwiększona z wartości c = 1, dla procedury siłowej, do  wartości c ≥ 1 jeśli łańcuch p[0 … n−1] posiada prefikso–sufiks w. Wtedy długość skoku c, do tórego można przesunąć p będzie równa wartości odczytanej z pomocniczej tablicy mpNext dla wartości i. Dla teoretycznych p, w i t, rozpatrując przypadek p[i] ≠ t [ j+i ] operacja przesunięcia dla algorytmu MP przebiegać będzie zgodnie z krokami przedstawionymi na  rysunku Rys. 2.. Krok 1: porównanie t[j+i] = b ≠ p[i] = a t[j]. t[j+i]. t: p:. w. w. b. w. a p[i]. Krok 2: przesunięcie (skok) p do wartości odczytanej z tablicy mpNext[i] = |w| t[j]. t[j+i]. t:. w p:. w. b w. a p[i]. Rys. 2: Wyliczenie pozycji wzorca p względem analizowanego tekstu t na podstawie wartości z tablicy mpNext. W celu wyliczenia długości skoku c, algorytm Morris'a-Pratt'a korzysta z tablicy mpNext, generowanej w procedurze preprocessingu przed wykonaniem głównego algorytmu wyszukiwania. Wyliczona tablica mpNext umożliwia przeszukiwanie bez operacji cofania indeksu wyszukiwania j w wyszukiwanym tekście – indeks wyszukiwania jest zwiększany z  każdą operacją porównania, co pozwala na analizowanie łańcuchów bez potrzeby wcześniejszego ich zapamiętywania oraz wykonanie co najwyżej 2n−1 operacji porównań na  przeszukiwanym tekście t [2]. Przytoczone właściwości są szczególnie istotne w przypadku przetwarzania danych sekwencyjnych takich jak strumienie. TCP/IP.. Dodatkowo, istotnym zaznaczenia jest fakt, że wyliczana w złożoności czasowej O(∣ p∣) pomocnicza tablica mpNext pozwala na uzyskanie złożoności obliczeniowej O(∣ p∣+∣t∣). 18.

(19) głównego algorytmu wyszukującego, co umożliwia znaczne przyspieszenie procesu wyszukiwania w stosunku do  metody BF o złożoności obliczeniowej O(∣ p∣∗∣t∣).. 2.2.3 Algorytm Knuth'a-Morris'a-Pratt'a. Zaproponowany przez D. Knuth'a, J. H. Morris'a i V. R. Pratt'a algorytm (KMP) jest rozwinięciem przedstawionym przez D. Knuth'a omówionego wcześniej algorytmu MP  (strona 17). Analizując procedurę wyszukiwania MP, D. Knuth zauważył, że można wydłużyć długość skoku c w przypadku niezgodności p[i] ≠ t [ j+i ]. Rozpatrując przypadek. z. Rys.. 3,. przyjmijmy,. że. niedopasowanie. wystąpiło. w. miejscu. a = p[i] ≠ t [ j+i] = b, wtedy p[0 :i−1] = t [ j : j+i−1] = u. W takim przypadku, podczas skoku można oczekiwać, że istnieje prefikso-sufix w dla łańcucha u i dodatkowo wymagać by symbol następujący po prefiksie w był różny od p[i] = a. Przyjęcie dodatkowego. warunku. postaci. x = p [∣w∣+1] ≠ p [i ] = a. pozwala. uniknąć. natychmiastowego niedopasowania po skoku.. Krok 1: porównanie t[j+i] = b ≠ p[i] = a t[j]. t[j+i]. t: p:. w. x. w. b. w. a p[i]. Krok 2: przesunięcie p do wartości odczytanej z tablicy kmpNext[i] = |w| przy jednoczesnym zagwarantowaniu że, p[i] ≠ p[|w|+1] = x t[j]. t[j+i]. t: p:. w. b. w. x. w. a p[i]. Rys. 3: Wyliczenie pozycji wzorca p względem analizowanego tekstu t na podstawie wartości z tablicy kmpNext. Dla powyższych spostrzeżeń D. Knuth zaproponował tablice skoków kmpNext, dla której kmpNext [i ] będzie równe długości najdłuższego prefikso-sufiksu w w łańcuchu 19.

(20) p[0 :i−1] poprzedzającym symbol x różny od p[i] lub −1 gdy taki prefikso-sufiksu nie istnieje. Dla tak zdefiniowanej tablicy kmpNext, następne porównania, po skoku dla niezgodności p[i] ≠ t [ j+i ], mogą być kontynuowane pomiędzy symbolami p[kmpNext [i]] i  t [ j+i] = b. Dla teoretycznych p, w i t, rozpatrując przypadek p[i] ≠ t [ j+i ] operacja przesunięcia dla algorytmu KMP przebiegać będzie zgodnie z krokami przedstawionymi na  rysunku Rys. 3 na stronie 19. Algorytm. Knuth'a-Morris'a-Pratt'a. generuje. tablice. kmpNext, w. procedurze. preprocessingu przed wykonaniem głównego algorytmu wyszukiwania [2]. Schemat KMP, podobnie jak MP przypisuje tablicy przesunięć stałą wartość −1 dla indeksu i = 0 – knpNext[0] = −1 wynikającą z warunków brzegowych algorytmu. Wyliczona tablica umożliwia przeszukiwanie bez operacji cofania indeksu j w wyszukiwanym tekście oraz wykonanie co najwyżej 2 n−1 operacji porównań na przeszukiwanym tekście t [2]. Istotnym zaznaczenia jest fakt, że wyliczana w złożoności czasowej O(|p|) pomocnicza tablica kmpNext pozwala na uzyskanie złożoności obliczeniowej O(|p|+|t|) głównego algorytmu wyszukującego, co umożliwia znaczne przyspieszenie procesu wyszukiwania w stosunku do  metody BF o złożoności obliczeniowej O(|p|∗|T |). Dodatkowo na korzyść KMP przemawia fakt, że maksymalna liczba porównań dla pojedynczego symbolu tekstu jest 1+ √5 ograniczona przez wartość log Φ (|p|) , gdzie Φ = [2], co czyni KMP szczególnie 2 przydatnym w przetwarzaniu danych sekwencyjnych takich jak strumienie TCP/IP.. 2.2.4 Algorytm Boyer'a-Moore'a. Zaproponowane przez D. Knuth'a usprawnienie procedury MP pozwala na szybkie przeszukiwanie tekstu pod względem zadanego wzorca co czyniło KMP efektywnym narzędziem w pracach nad przetwarzaniem tekstu. Dalszy rozwój prac badawczych nad technikami edycji i analizy tekstu doprowadził do opracowania i opublikowania w 1977 roku przez Robert S. Boyer'a i J. Strother Moore'a nowego mechanizmu nazwanego od nazwisk autorów algorytmem Boyer'a-Moore'a (BM) [7]. Opracowana procedura jest obecnie uważana za najszybszą praktyczną funkcję wyszukiwania wzorców i często stosowana w edytorach tekstu jako komenda „Znajdź/Zamień” [2].. 20.

(21) Największą różnicą pomiędzy BM a omawianymi wcześniej algorytmami jest sposób w jaki schemat BM wykonuje operacje porównania symboli tekstu i wzorca. Wszystkie omówione do tej pory algorytmy wykonywały operacje porównywania tekstu ze wzorcem od  lewej do prawej strony wzorca przesuwając wzorzec od lewej do prawej strony tekstu w  przypadku wystąpienia niezgodności. Schemat BM operacje porównania zaczyna od  ostatniego symbolu wzorca i kontynuuje dopasowanie od prawej do lewej strony wzorca przesuwając wzorzec od lewej do prawej strony tekstu w przypadku wystąpienia niezgodności. Możliwość operowania na tekście w dwóch kierunkach jest możliwa dzięki dwóm a nie jednej, jak w przypadku algorytmów MP i KMP, tablicom skoku – bmGs i bmBc, które operują na dwóch funkcjach przesunięcia/skoku. Indeksy przesunięcia są odczytywane z  bmGs w przypadku skoku z pasującym sufiksem (ang. good suffix shift), indeksy z bmBc odczytywane są gdy występuje skok z błędnym znakiem (ang. bad character shift) [2]. Poglądowe działanie algorytmu z tablicami bmGs i bmBc zostanie zobrazowane na  teoretycznym przypadku. Przyjmijmy, że niedopasowanie wystąpiło w miejscu a = p[i] ≠ t [ j+i] = b, wtedy p[i+1:∣ p∣−1] = t[i+ j+1 : j +∣p∣−1] = w . W takiej sytuacji mogą zajść dwa przypadki użycia tablicy bmGs: 1. Dopasowany łańcuch w występuje jako sufiks wzorca p i dodatkowo symbol poprzedzający sufiks w jest różny od p[i] = a. Wtedy proces przeszukiwania może być kontynuowany po przesunięciu wzorca p do pozycji dopasowania sufiksu w odczytanej z tablicy bmGs. Sytuację taką przedstawia Rys. 4,. t:. b. w. kierunek porównywania. p: p:. c. w. a. w. c. w. przesunięcie wzorca. a. w. Rys. 4: Wyliczenie pozycji wzorca p względem analizowanego tekstu t na podstawie wartości z tablicy bmGs w przypadku wystąpienia sufiksu w. 21.

(22) 2. Dopasowany łańcuch w nie występuje jako sufiks wzorca p ale istnieje pasujący łańcuch cc w łańcuchu w będący prefikso–sufiksem wzorca p. Wtedy proces przeszukiwania może być kontynuowany po przesunięciu wzorca p do pozycji dopasowania prefikso–sufiksu cc odczytanej z tablicy bmGs. Sytuację taką przedstawia poglądowo Rys. 5.. t:. b. wcc. kierunek porównywania. p:. a. cc. p:. wcc. przesunięcie wzorca. a. cc. wcc. Rys. 5: Wyliczenie pozycji wzorca p względem analizowanego tekstu t na podstawie wartości z tablicy bmGs w przypadku wystąpienia prefikso-sufiksu cc. W przypadku gdy skorzystanie z tablicy bmGs nie przynosi oczekiwanych rezultatów [2], [7] wykorzystuje się tablicę bmBc, którą weryfikuje się pod kątem wystąpienia (z  największym indeksem) w p[0 :∣ p∣−2] symbolu aktualnego niedopasowania t [ j+i] , wtedy przeszukiwanie może być kontynuowane po przesunięciu do pozycji odczytanej z  tablicy bmBc (Rys. 6).. t:. b. w. kierunek porównywania. p: p:. b. a b. w. przesunięcie wzorca. a. w. Rys. 6: Wyliczenie pozycji wzorca p względem analizowanego tekstu t na podstawie wartości z tablicy bmBc w przypadku wystąpienia we wzorcu p symbolu niedopasowania. 22.

(23) Jeśli symbol niedopasowania t [ j+i] nie występuje we wzorcu p, wtedy bez straty jakiegokolwiek wystąpienia p, w aktualnym oknie przeszukiwania, wzorzec p zostanie przesunięty tak że, pozycja p[0] względem t będzie równa j+i+1 co poglądowo zostało przedstawione na Rys. 7.. t:. b. w. kierunek porównywania. p:. a. w. przesunięcie wzorca. p:. a. w. Rys. 7: Wyliczenie pozycji wzorca p względem analizowanego tekstu t w przypadku braku wystąpienia we wzorcu p symbolu niedopasowania. Należy zaznaczyć, że wyliczane na podstawie tablicy bmBc przesunięcie wzorca p (Rys. 6 strona 22) może posiadać wartość ujemną w przypadku gdy symbol niedopasowania t [ j+i] znajduje się na prawo od aktualnie porównywanego symbolu p[i] [2], [7]. Dlatego też, algorytm BM wylicza przesunięcie analizując jednocześnie tablice bmGs oraz. bmBc. i. na. tej. podstawie. wyznacza. wartość. przesunięcia. jako. max { bmGs ,bmBc } dla zadanych i , j , p[i ], t [ j +i ] . Formalny zapis algorytmu BM przedstawiono w pozycjach [2], [7]. Tablice bmGs oraz bmBc są wyliczane w procedurze preprocessingu przed wykonaniem głównego algorytmu wyszukiwania BM [2]. Złożoność obliczeniowa dla procedur preprocesingu wynosi O(∣ p∣+ ∂) gdzie ∂=|∑ |. Dodatkowo należy zaznaczyć, że  zaproponowany przez Boyer'a-Moore'a schemat posiada następujące właściwości [2], [7]: 1. Pesymistyczna złożoność obliczeniowa postaci O(∣ p∣∗∣t∣) , 2. Optymistyczna złożoność obliczeniowa postaci O. ( ). |t| , |p|. 3. 3n porównań dla wzorców nie posiadających sufiksów (brak powtórzeń łańcuchów we  wzorcu), 4. Kierunek porównywania od prawej do lewej strony wzorca.. 23.

(24) Z punktu widzenia prowadzonej pracy determinująca dalsze wykorzystanie algorytmu jest właściwość 4. W przeciwieństwie do omówionych wcześniej procedur – AC (strona 15), MP (strona 17), KMP (strona 19) – schemat BM przetwarza wzorzec od prawej do lewej strony i wymaga by aktualnie dopasowywany łańcuch tekstu wejściowego był zbuforowany. Konsekwencją kierunku przeszukiwania wzorców przez algorytm BM jest brak bezpośredniej możliwości wykorzystania algorytmu w przetwarzaniu danych sekwencyjnych takich jak strumienie TCP/IP. Z drugiej strony, szybkość działania procedury BM w przypadku optymistycznym (właściwość 2) stanowi istotną cechę wyróżniającą schemat BM na tle innych algorytmów.. 2.3 Podsumowanie algorytmów wyszukiwania wzorców. W poprzednich rozdziałach przedstawiono podstawowe pojęcia i definicje leżące u  podstaw metod przetwarzania tekstu oraz wyszukiwania wzorców. Omówiono wybrane algorytmy istotne z punktu widzenia prowadzonej pracy oraz uszczegółowiono definicje wykorzystywanych przez autora. Tabela 1 na stronie 24 przedstawia podsumowanie omówionych procedur wraz z wyszczególnieniem najważniejszych parametrów.. Algorytm. Kierunek przeszukiwania. Kierunek dopasowania. Złożoność obliczeniowa. Jednoczesne wyszukiwanie wielu wzorców. BF. z lewej do prawej. z lewej do prawej. O(∣ p∣∗∣t∣). NIE. AC. z lewej do prawej. z lewej do prawej. O(n+∣t∣). TAK. MP. z lewej do prawej. z lewej do prawej. O(∣ p∣+∣t∣). NIE. KMP. z lewej do prawej. z lewej do prawej. O(∣ p∣+∣t∣). NIE. O(|p|∗|t|) pesymistyczna BM. z lewej do prawej. z prawej do lewej. O. ( ). |t| optymistyczna |p|. NIE. Tabela 1: Podsumowanie przedstawionych algorytmów. W. tabeli. nie. uwzględniono. charakterystyk. procedur. preprocesingu,. które. są  wykonywane przed głównym algorytmem wyszukiwania. Jest to  powodowane faktem, jak będzie przedstawione w dalszych rozdziałach, że preprocesing nie jest wykonywany w  środowisku pracy zaimplementowanych przez autora algorytmów a  tym samym złożoność 24.

(25) obliczeniowa preprocesingu nie jest głównym kryterium decyzyjnym przy wyborze i  adaptacji implementowanych przez autora algorytmów. Dodatkowo należy zwrócić uwagę na możliwość przeszukiwania przez omówione rozwiązania wielu wzorców jednocześnie. Tylko przedstawiony algorytm Aho-Corasic posiada tę właściwość co czyni go głównym kandydatem do adaptacji w implementacji mechanizmów wyszukujących wzorce do  akceleracji przetwarzania pakietów w sieci Ethernet.. 25.

(26) 3. Systemy zabezpieczeń sieciowych. 3.1 Wstęp. Autor pracy prowadził badania w oparciu o pakiety sieci Ethernet wraz z analizą protokółów TCP/IP. Istotnym jest zatem ustalenie uwagi na technologiach będących przedmiotem rozważań autora. W rozdziale przedstawiono podstawy sieci Ethernet wraz z  wykorzystywanym obecne najpopularniejszym protokołem komunikacyjnym TCP/IP w  wersji 4 z uwzględnieniem modelu TCP/IP. W dalszych podrozdziałach, omówione zostały podstawy systemu zabezpieczeń sieciowych typu firewall, wraz z wyszczególnioną klasyfikacją funkcjonalną i implementacyjną. W ostatnim podrozdziale przedstawiono podział (taksonomię) oraz wybrane algorytmy klasyfikatorów implementowanych dla potrzeb wyszukiwania wzorców pakietów sieciowych stosowanych w systemach firewall.. 3.2 Podstawy sieci Ethernet. Najpopularniejszą obecnie fizyczną infrastrukturą sieci lokalnej (LAN (ang. Local Area Network)) jest infrastruktura typu Ethernet. Standard zapoczątkowany został przez amerykańskiego informatyka Roberta Metcalfe w ośrodku badawczym Xerox PARC w  1976 roku [8]. Idea zaproponowana przez Metcalfa inspirowana była na pomyśle sieci ALOHAnet (sięgającej początkami roku 1971) i bazowała na wspólnym dostępie stacji roboczych (komputerów, serwerów, stacji roboczych) do medium transmisyjnego. Stworzona w ten sposób infrastruktura LAN działała w oparciu o przesyłanie pomiędzy stacjami, poprzez medium dostępowe, ustandaryzowanych komunikatów w postaci ramek sieciowych (ang. frames). Każda stacja posiadała niepowtarzalny adres sieciowy MAC (ang. Media Access Control) pozwalający na wymianę ramek pomiędzy stacją nadawczą i odbiorczą. Standard Ethernet ewaluował na przestrzeni lat definiując standardy ramek różniące się między sobą długością nagłówków, maksymalną długością ramki (MTU (ang. Maximum Transmission Unit)) czy innymi szczegółami. Jednym z szeroko wykorzystywanych obecnie. 26.

(27) standardów jest zaproponowany w 1980 roku, a zdefiniowany przez IEEE w 1983 roku format IEEE 802.3 [9] bazujący na pierwowzorze Ethernet i  wykorzystujący technikę CSMA/CD (ang. Carrier Sense Multiple Access/Collision Detection) – wielodostęp ze  śledzeniem nośnej i wykrywaniem kolizji. Drugim, najczęściej obecnie spotykanym, jest zaproponowany przez konsorcjum firm DEC, Intel, Xerox w  1978 roku format Ethernet II. Oba standardy różnią się, między innymi, znaczeniem dwu bajtowego pola Length/Type. Format ramki dla IEEE 802.3 przedstawiony został na rysunku Rys. 8.. Preambuła. SFD. 7 bajtów. 1 bajt. MAC docelowy 6 bajtów. MAC źródłowy. Długość ramki. 6 bajtów. 2 bajty. Pole danych 46-1500 bajtów. Suma CRC 4 bajty. Rys. 8: Format ramki IEEE 802.3. Poszczególne pola ramki IEEE 802.3 posiadają następujące znaczenie [8], [9]: 1. Preambuła – (ang. Preamble) – Predefiniowane pole danych długości 7 bajtów i stałej wartości każdego bajtu wynoszącej 0xAA. Pole to służy do synchronizacji warstwy fizycznej i posiada wspólny format dla IEEE 802.3 i Ethernet II, 2. SFD – (ang. Start of Frame Delimiter) – Pole określające początek ramki. Wartość pola jest stała i wynosi 0xAB i posiada wspólny format dla IEEE 802.3 i  Ethernet II, 3. MAC docelowy – (ang. MAC destination) – 6 bajtowy adres fizyczny karty sieciowej stacji odbiorczej i posiada wspólny format dla IEEE 802.3 i Ethernet II (IEEE 802.3 dopuszcza adresacje 2 bajtową ale 6 bajtowa jest powszechnie spotykana [8]), 4. MAC źródłowy – (ang. MAC source) – 6 bajtowy adres fizyczny karty sieciowej stacji nadawczej i posiada wspólny format dla IEEE 802.3 i Ethernet II (IEEE 802.3 dopuszcza adresacje 2 bajtową ale 6 bajtowa jest powszechnie spotykana [8]), 5. Długość/Typ ramki (L/T) – (ang. Length (IEEE 802.3) lub Ethertype (Eternet II)): •. Dla sieci IEEE 802.3 wartość wyraża długość Pola danych (ang. payload) i zawiera się w przedziale 46–1500,. •. Dla sieci Ethernet II wartość pola określa typ ramki (typ protokołu klienta MAC) i musi być niemniejsza niż 1536,. Przyjęcie powyższego rozwiązania przez projektantów pozwala na jednoczesne współdziałanie wymienionych powyżej standardów w obrębie pojedynczego medium. 27.

(28) transmisyjnego, oraz jednoznaczne określenie typu protokołu w przypadku odebrania przez stacje ramki Ethernet II, 6. Pole danych – (ang. Payload) – Pole danych ramki zawierające dane stacji nadawczej, 7. Suma CRC (FCS) – (ang. Frame Check Sequence) – 32 bitowa suma kontrolna CRC kodu cyklicznego wyliczana z pominięciem pól Preambuły i SFD. Do wyliczenia CRC wykorzystywany jest wielomian CRC-32 o następującej postaci [9], [8]: G( x)=x 32+ x 26+ x 23+ x 22+ x 16+ x12 + x 11 + x 10+ x 8+ x 7+ x 5+ x 4 + x 2 + x+1. (3.1). Z powyższego zestawienia wynika, że całkowita liczba bajtów ramki dekodowana przez stacje zawiera się w przedziale 64–1518 bajtów. Wszystkie bajty ramki transmitowane są poprzez medium dostępowe w kolejności występowania w ramce, przy czym poszczególne bity bajtów ramki MAC (pola adresów MAC, L/T, pole danych) transmitowane są od bitu najmłodszego (LSB (ang. Least Significant Bit)) do bitu najstarszego (MSB (ang. Most Significant Bit)) [9]. Rysunek Rys. 9 przedstawia przykładowe odwrócenie bajtu 0xAC do  postaci bajtu podczas transmisji ramki przez medium transmisyjne.. Numer bitu:. MSB 7. 6. 5. 4. 3. 2. 1. LSB 0. Kolejność bitów w ramce przed transmisją:. 1. 0. 1. 0. 1. 1. 0. 0. Kolejność bitów w ramce podczas transmisji:. 0. 0. 1. 1. 0. 1. 0. 1. Rys. 9: Przykład odwrócenia kolejności bitów w bajcie podczas transmisji w sieciach Ethernet. Gwałtowny postęp technologiczny przyczynił się do dynamicznego rozwoju omawianych standardów, a przede wszystkim umożliwił zwiększenia przepustowości sieci opartych o rodzinę standardów Ethernet do wartości 10Gb/s i więcej – opracowywany od  2007 roku standard IEEE P802.3ba przewiduje zwiększenie prędkości transmisji danych do 100Gb/s [10]. Zwiększanie prędkości przesyłania danych nie było jednym kierunkiem rozwoju sieci Ethernet. Powstało wiele rozszerzeń standardu IEEE 802.3, z których najważniejszym, z  punktu prowadzonej pracy, jest opisany w dokumencie IEEE 802.1Q i definiujący działanie wirtualnych sieci LAN (ang. Virtual LANs) – VLAN [11], [12]. Standard definiuje, między 28.

(29) innymi, nagłówek IEEE 802.1Q (ang. 802.1Q Header) – dwa dodatkowe, dwu bajtowe, pola ramki (TPID i TCI) następujące bezpośrednio po 6  bajtowym bloku adresu źródłowego stacji (MAC. źródłowy/MAC. source).. Zastosowanie. dodatkowego. nagłówka. pozwala. na  znakowanie ramek – tagowanie (ang. Tagged Frame) – co w konsekwencji umożliwia urządzeniom. przełączającym. (przełącznikom,. switchom). na. przypisywanie. ramek. posiadających ten sam nagłówek do jednej sieci VLAN. Rysunek Rys. 10 przedstawia format ramki VLAN wraz z wyszczególnionym polami (TPID, TCI) nagłówka IEEE 802.1Q.. Preambuła. SDF. MAC docelowy. MAC źródłowy. 7 bajtów. 1 bajt. 6 bajtów. 6 bajtów. TPID. TCI. 2 bajty 2 bajty. Typ ramki 2 bajty. Pole danych 42-1500 bajtów. Suma CRC 4 bajty. Rys. 10: Format ramki standardu IEEE 803.1Q. Dwu bajtowy identyfikator TPID (ang. Tag Protocol Identifier) – występuje dokładnie w miejscu bloku L/T dlatego też standard definiuje dla tego pola stałą wartość 0x8100 będącą jednoznacznym identyfikatorem ramki IEEE 802.1Q. Kolejne dwa bajty to pole TCI (ang. Tag Control Information) składające się z trzech identyfikatorów (PCP, DEI, VID) [12]: •. PCP – (ang. Priority Code Point), 3 bitowe pole informujące o priorytecie transmitowanej. ramki,. umożliwiające. implementowanie. mechanizmów. QoS. (ang. Quality of Service) – wartość 1 reprezentuje najniższy priorytet, wartość 7  najwyższy priorytet, •. DEI – (ang. Drop Eligible Indicator), jednobitowa flaga, interpretowana samodzielnie lub wraz z polem PCP, informująca o priorytecie upuszczenia ramki (ang Drop Precedence) przez port przełącznika [12],. •. VID – (ang. VLAN Identifier), 12 bitowe pole definiujące identyfikator wirtualnej sieci. LAN. (VLAN).. Standard. definiuje. kilka. wartości. zarezerwowanych/zastrzeżonych dla pola VID. Wartość 0x000 informuje o braku przynależności do sieci VLAN, a jedynie o priorytecie ramki. Wartość 0x001 jest zalecana dla warstwy zarządzania przełącznikami. Wartość 0xFFF jest zarezerwowana na. potrzeby. zarządzania. oraz. może. służyć. do. implementowania. masek. w  mechanizmach filtrujących [12].. 29.

(30) Rysunek Rys. 11 przedstawia format rozmieszczenia poszczególnych bitów w 16 bitowym polu TCI.. Kolejne bity 16 bitowego pola TCI. 15 14 13 12 11 10 9. 8. 7. 6. 5. 4. 3. 2. 1. 0. Kolejne bity bajtów ramki. 8. 1. 8. 7. 6. 5. 4. 3. 2. 1. 7. 6. 5. PCP. DEI. 3 bity. 1 bit. 4. 3. 2. VID 12 bitów. Rys. 11: Format pola TCI w nagłówku IEEE 802.1Q. Wprowadzenie nagłówka 802.1Q wymusza ponowne przeliczenie sumy kontrolnej CRC za każdym razem gdy informacje o sieciach VLAN są wprowadzane lub usuwane z  ramki sieci Ethernet.. 3.3 Podstawy protokołu TCP/IP w wersji 4. Autor pracy wykorzystuje zaadoptowane i zmodyfikowane algorytmy wyszukiwania wzorców analizujące wartości bajtów w pakietach sieci Ethernet i TCP/IP. Zasadnym jest zatem krótkie przedstawienie formatu ramek poszczególnych protokołów stosu/modelu TCP/IP wraz z wzajemnym usytuowaniem. Dodatkowo przedstawiono podstawy protokołu IP  w wersji 4, omówiono 4 warstwowy model TCP/IP oraz przedstawiono najważniejsze, z  punktu widzenia prowadzonej pracy, parametry protokołów IP, TCP, UPD oraz ICMP.. 3.3.1 Model TCP/IP. Współczesne infrastruktury informatyczne wykorzystują do komunikacji system, który został zapoczątkowany przez rządowe projekty badawcze w 1960 roku. Wynikiem prowadzonych głównie na potrzeby wojskowe prac jest dzisiejsza globalna sieć (ang. WAN – Wide Area Network) Internet, łącząca setki milionów komputerów na całym świecie [13].. 30.

(31) ISO/OSI. TCP/IP. Aplikacji Application Prezentacji Presentation. Aplikacji Application. Sesji Session Transportowa Transport. Transportowa Transport. Sieciowa Network. Internetu Internet. Łącza danych Data link Fizyczna Physical. Dostępu do sieci Link. Rys. 12: 4 warstwowy model TCP/IP w odniesieniu do modelu ISO/OSI. Komunikacja. pomiędzy. poszczególnymi. stacjami. końcowymi. –. hostami. (komputerami, serwerami, ruterami) w powstałej w ten sposób infrastrukturze możliwa jest dzięki wzajemnej wymianie danych zorganizowanych w pakiety sieciowe – datagramy, których standard określany jest, w ogólności, przez 7 warstwowy (ang. layers) format modelu ISO/OSI. Na potrzeby sieci Internet zdefiniowany został uproszony model 4  warstwowy TCP/IP [13]. Rysunek Rys. 12 przedstawia poszczególne warstwy stosu TCP/IP wraz z  odpowiadającymi im warstwami ISO/OSI. Poszczególne warstwy modelu TCP/IP są przedmiotem prowadzonej w dalszych rozdziałach analizy pod kątem występowania zadanych wzorców będących polami nagłówków protokołów TCP/IP omówionych w dalszej części rozdziału. Dlatego też warstwy stosu TCP/IP zostały, krótko scharakteryzowane na poniższym zestawieniu: •. Warstwa Dostępu do sieci – Jest najniższą warstwą stosu TCP/IP i odpowiada za  przekazywanie datagramów przez fizyczne łącza infrastruktury sieciowej. Do  warstwy tej zalicza się także oprogramowanie interfejsów sieciowych w postaci sterowników (ang. drivers) oraz mikrokodu (ang. firmware) odpowiedzialnych za  pośredniczenie do warstw wyższych,. 31.

(32) •. Warstwa Internetu – Znajduje się nad warstwą Dostępu do sieci i odpowiada za  przekazywanie datagramów protokołu IP poprzez topologie sieci. Dostarcza mechanizmy enkapsulacji (kapsułkowania) (ang. encapsulation) warstw wyższych (Transportowej, Aplikacji). W warstwie Internetu przetwarzane są między innymi protokoły IPv4 i ICMP,. •. Warstwa Transportowa – Odpowiada za przepływ danych protokołów warstw wyższych pomiędzy stacjami końcowymi (komputerami, przełącznikami, ruterami). W warstwie Transportowej przetwarzane są protokoły TCP oraz UDP odpowiedzialne za enkapsulację warstwy Aplikacji,. •. Warstwa Aplikacji – Najwyższa, czwarta warstwa stosu TCP/IP dostarczająca model komunikacyjny dla protokołów aplikacji transportujących dane użytkownika takich jak WWW, FTP, SMTP, SSH. W procesie komunikacji pomiędzy stacjami końcowymi poszczególne warstwy. modelu TCP/IP są kapsułkowane od warstwy najwyższej – Aplikacji, do warstwy najniższej – Dostępu do sieci. Z punktu widzenia prowadzonej pracy istotnym jest zaznaczenie jak wygląda. proces. enkapsulacji. na. przykładzie. ramek. sieci. Ethernet.. Rysunek. Rys. 13 przedstawia poglądowy proces kapsułkowania, dla którego dane warstw wyższych są  umieszczane w polu danych warstw niższych, gdzie z dołączonym nagłówkiem warstwy bieżącej, stają się danymi dla pola warstw niższych.. enkapsulacja w modelu TCP/IP Dane aplikacji. Aplikacji Application. Nagłówek TCP. Dane aplikacji. Transportowa Transport. Nagłówek IP. Nagłówek TCP. Dane aplikacji. Internetu Internet. Nagłówek IP. Nagłówek TCP. Dane aplikacji. kierunek enkapsulacji. Nagłówek MAC. model TCP/IP. CRC. Dostępu do sieci Link. Rys. 13: Kapsułkowanie danych warstw modelu TCP/IP dla ramki sieci Ethernet. 32.

(33) 3.3.2 Protokół IP. Najpopularniejszym obecnie protokołem wykorzystywanym w sieci Internet jest protokół IP w wersji 4 – IPv4. Na przestrzeni lat protokół IP zmieniał się i ewaluował by  w  wersji 4 ostatecznie zostać opisanym dokumencie RFC 791 w 1980 roku [14]. IP jest protokołem komunikacyjnym warstwy Internet modelu TCP/IP [13], [14]. Zadaniem protokołu IP jest przenoszenie pakietów (datagramów) poprzez topologie sieci od  stacji nadawczej do stacji odbiorczej bazując na 32 bitowych adresach IP – adresie docelowym i adresie źródłowym. IPv4 jest protokołem bezpołączeniowym – nie jest zestawiana wirtualna sesja komunikacyjna pomiędzy stacjami (hostami) – i zawodnym – nie gwarantuje, że pakiety dotrą do odbiorcy [13], [14]. Pakiet protokołu IPv4 składa się z nagłówka (ang. header), pola danych i  opcjonalnie pola opcji. Rysunek Rys. 14 przedstawia nagłówek IPv4 wraz ze zdefiniowanymi w  RFC 2474 oraz RFC 3168 zmianami [15], [16]. Offsets Oktet 0 1 2 3 Oktet Bit 0 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 29 30 31 0 0 Version IHL DSCP ECN Total Length 4 32 Identification Flags Fragment Offset 8 64 Time To Live Protocol Header Checksum 12 96 Source IP Address 16 128 Destination IP Address 20 160 Options (jeśli IHL > 5). Rys. 14: Format nagłówka protokołu IPv4. Analiza pól nagłówka protokołu IP jest jednym z kluczowych aspektów w  zaproponowanych przez autorach algorytmach i mechanizmach wyszukiwania wzorców. Dlatego też istotnym jest scharakteryzowanie poszczególnych pól nagłówka: •. Version (4 bity) – pole opisujące wersje protokołu IP,. •. IHL (4 bity) – określa długość nagłówka IP wyrażoną w liczbie 32 bitowych słów (ang. Internet Header Length),. •. DSCP (6 bitów) – pierwotnie wraz z 2 bitowym polem ECN tworzyło 8 bitowe pole Typ usługi – TOS (ang. Type of Service) określające jaki priorytet powinien mieć pakiet IP. Aktualnie pole zdefiniowane w RFC 2474 z przeznaczeniem dla usług wymagających strumieni czasu rzeczywistego (ang. Differentiated Services Code Point), 33.

(34) •. ECN (2 bity) – pole zdefiniowane w RFC 3168 w miejsce pola TOS do wymiany informacji pomiędzy stacjami końcowymi o utrudnieniach w sieci (ang. network congestion) celem wyeliminowania gubienia pakietów (ang. Explicit Congestion Notification),. •. Total Length (16 bitów) – zawiera długość pakietu IP wyrażona w bajtach.. •. Identyfication (16 bitów) – numer identyfikacyjny wykorzystywany podczas fragmentacji pakietu do określenia przynależności poszczególnych fragmentów do  datagramów,. •. Flags (3 bity) – pole do obsługi fragmentacji pakietów IP,. •. Fragment Offset (13 bitów) – pole przesunięcia fragmentów umożliwiające określenie miejsca fragmentu w oryginalnym datagramie,. •. Time To Live (8 bitów) – czas życia pakietu w sieci, informujący o liczbie przeskoków przez które datagram może przejść zanim zostanie zniszczony,. •. Protocol (8 bitów) – pole określające protokół warstwy wyższej (według modelu TCP/IP) kapsułkowany przez protokół IP,. •. Header Checksum (16 bitów) – suma kontrolna nagłówka protokołu IP, przeliczana i  weryfikowana przy każdym przejściu pakietu przez router,. •. Source IP Address (32 bity) – pole określające adres źródłowy stacji, która wysłała pakiet. Pole interpretowane jest jako 4 oktety (bajty) zapisywane w porządku Big Endian i tworzące logiczny ciąg postaci A.B.C.D gdzie A, B, C, D są interpretowane niezależnie jako 8 bitowe liczby dziesiętne,. •. Destination IP Address (32 bity) – pole określające adres docelowy stacji, do której pakiet jest adresowany. Format adresu docelowego Destination IP Address jest identyczny z formatem adresu źródłowego Source IP Address,. •. Options (32 bity) – opcjonalne pole, występujące w przypadku gdy wartość pola IHL jest większa od 5 i definiujące dodatkowe parametry nagłówka. Całkowita długość pakietu jest określona polem Total Length i może wynosić. maksymalnie 65535 bajtów. Minimalna długość datagramu IP jaką musi obsłużyć każdy host wynosi 576 bajtów. Najistotniejszymi polami nagłówka IP, będącymi głównym kryterium decydującym o  wynikach dopasowania w zaproponowanych przez autora rozwiązaniach są 32 bitowe pola adresacji – źródłowej oraz docelowej a także 8 bitowe pole definiujące protokół warstw wyższych modelu TCP/IP. 34.

(35) Kolejne podrozdziały krótko scharakteryzują najczęściej wykorzystywane obecnie protokoły warstwy transportowej (TCP, UDP) a także protokół warstwy Internet ICMP.. 3.3.3 Protokół TCP. Transmission Control Protocol, w skrócie TCP, jest jednym z dwóch głównych protokołów transportowych modelu TCP/IP, kopertowanym w protokole IP. TCP został zdefiniowany w RFC 793 w 1981 roku, z późniejszymi zmianami i poprawionymi błędami, jako. połączeniowy,. niezawodny. i. strumieniowy. protokół. komunikacyjny. służący. do  przesyłania danych, działający w trybie klient – serwer [13], [17]. Format pakietu protokołu TCP jest podobny do pakietu IP – składa się z nagłówka, opcjonalnego pola opcji wstępującego za nagłówkiem oraz pola danych. Dane warstw wyższych modelu TCP/IP, podobnie jak w protokole IP, kopertowane są w polu danych pakietu TCP. Rysunek Rys. 15 przedstawia format nagłówka TCP uwzględniający zmiany wprowadzone w dokumentach RFC 3168 oraz RFC 3540 [13], [16],[17], [18]. Offsets Oktet 0 1 2 3 Oktet Bit 0 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 29 30 31 0 0 Source port Destination port 4 32 Sequence number 8 64 Acknowledgment number (jeśli ACK = 1) C E U A P R S F Reserve N 12 96 Data Offset W C R C S S Y I Windows Size d (000) S R E G K H T N N 16 128 Checksum Urgent pointer (jeśli URG = 1) 20 160 Options (jeśli Data Offset > 5). Rys. 15: Format nagłówka protokołu TCP. Pola nagłówka protokołu TCP, podobnie jak pola nagłówka IP, są analizowane w  zaproponowanych przez autorach algorytmach i mechanizmach wyszukiwania wzorców. Poniższe zestawienie przedstawia charakterystykę poszczególnych pól nagłówka: •. Source port (16 bitów) – Port źródłowy klienta który wysłał pakiet.. •. Destination port (16 bitów) – Port docelowy serwera, na który klient wysłał pakiet.. •. Sequence number (32 bity) – Jeśli wartość pola SYN = 0, identyfikator określa numer sekwencyjny pierwszego oktetu danych w bieżącym pakiecie, jeśli SYN = 1, określa początkowy numer sekwencyjny. 35.

(36) •. Acknowledgment number (32 bity) – Pole reprezentujące numer potwierdzenia otrzymania pakietu przez odbiorcę.. •. Data offset (4 bity) – Określa długość nagłówka wyrażoną w liczbie słów 32  bitowych.. •. Reserved (3 bitys) – Zarezerwowane do przyszłego użycia.. •. Flags (9 bitów) – pole flag: ◦ NS (1 bit) – Suma flag CWR i ECE weryfikująca ich integralność. ◦ CWR (1 bit) – Flaga potwierdzenia odebrania pakietu z ustawiona flagą ECE [16]. ◦ ECE (1 bit) – Flaga ustawiana przez odbiorcę w przypadku odebrania pakietu z  ustawioną flagą CE [16]. ◦ URG (1 bit) – Informuje o ważności pola Urgent pointer. ◦ ACK (1 bit) – Informuje o ważności pola Acknowledgment number. ◦ PSH (1 bit) – Wymusza przesłanie zbuforowanych danych do odbiorcy. ◦ RST (1 bit) – Resetuje połączenie. ◦ SYN (1 bit) – Synchronizuje numery sekwencyjne. Flaga wykorzystywana przy ustanawianiu sesji TCP. ◦ FIN (1 bit) – Informuje o zakończeniu przesyłania danych.. •. Window size (16 bitów) – Szerokość okna informująca ile danych może aktualnie przyjąć odbiorca.. •. Checksum (16 bitów) – Suma kontrolna wyliczana dla nagłówka z opcjami i pola danych.. •. Urgent pointer (16 bitów) – Wskaźnik priorytetu uwzględniany w przypadku ustawienia flagi URG.. •. Options (wielokrotność 32 bitów) – Dodatkowe pole opcji. Komunikacja pomiędzy stacjami – klientem i serwerem odbywa się poprzez. przesyłanie datagramów adresowanych na podstawie portów źródłowego oraz docelowego i  ustanawiana jest przez procedurę three-way handshake mającą na celu zestawienie logicznego kanału komunikacyjnego według poniższego schematu:. 1. Klient wysyła do serwera pakietu SYN (SYN = 1) oraz ustawionym polem Sequence number na wartość losową A.. 36.

(37) 2. Serwer odpowiada klientowi pakietem SYN-ACK (SYN = 1, ACK = 1). Pole Acknowledgment number przybiera wartość A+1, pole Sequence number wartość losową B. 3. Klient kończy zestawianie połączenia przez wysłanie do serwera pakietu ACK (ACK = 1). Pole Sequence number przybiera wartość A+1, pole Acknowledgment number wartość B+1. Po nawiązaniu sesji hosty uczestniczące w komunikacji przechodzą w stan ESTABLISHED. W stanie tym następuje wymian danych pomiędzy klientem i serwerem do  momentu zakończenia sesji. Pełną specyfikacja stanów sesji oraz procedur związanych z  jej obsługą przedstawiają pozycje [13], [17]. Protokół TCP jest enkapsulowany w polu danych protokołu IP i jest najczęściej wykorzystywanym obecnie protokołem transportowym. Z punktu widzenia bezpieczeństwa sieciowego kluczowe znaczenie mają pola adresacji portów – źródłowego i docelowego, a  także pola flag. Dlatego też analiza nagłówka TCP jest istotną kwestią prowadzonej pracy.. 3.3.4 Protokół UDP. User Datagram Protocol (UDP) jest drugim obok TCP protokołem transportowym modelu TCP/IP i został zdefiniowany w 1980 roku w dokumencie RFC 768 [19]. UDP, w przeciwieństwie do TCP, jest protokołem bezpołączeniowym, zorientowanym na datagramy, bez mechanizmów kontroli transmisji i retransmisji. UDP jest protokołem mniej skomplikowanym niż TCP i również format pakietu protokołu UDP jest uproszczony – składa się z nagłówka oraz pola danych. Dane warstw wyższych modelu TCP/IP, kopertowane są w polu danych UDP. Format nagłówka protokołu UDP przedstawiony zostały na rysunku Rys. 16. Offsets Oktet 0 1 2 3 Oktet Bit 0 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 29 30 31 0 0 Source port Destination port 4 32 Length Checksum. Rys. 16: Format nagłówka protokołu UDP. 37.

(38) Ze względu na przeznaczenie protokołu UDP liczba pól nagłówka jest zredukowana w  stosunku do nagłówka TCP. Charakterystyka poszczególnych pól została przedstawiona poniżej: •. Source port (16 bitów) – Port źródłowy klienta który wysłał pakiet. Domyślną wartością pola jest 0 i wykorzystywane jest w przypadku przesyłania pakietów przez serwer.. •. Destination port (16 bitów) – Port docelowy serwera, na który klient wysłał pakiet.. •. Length (16 bitów) – Długość pakietu UDP (nagłówka i danych) liczona w bajtach. Minimalna długość pakietu to 8 będąca jednocześnie długością nagłówka.. •. Checksum (16 bitów) – Suma kontrolna wyliczana dla nagłówka i pola danych zgodnie ze schematem zdefiniowanym w RFC 768. Protokół IP kopertuje pakiety protokołu UDP w polu danych podobnie jak protokół. TCP, jednakże UDP jest zorientowany na przesyłanie komunikatów (ang. message oriented) i  dlatego wykorzystywany jest w usługach nie wymagających potwierdzenia takich jak DNS czy SNMP. Z punktu widzenia bezpieczeństwa sieciowego kluczowe znaczenie mają pola adresacji portów – źródłowego i docelowego, które są głównym przedmiotem analizy dla opracowanych mechanizmów wyszukiwania wzorców dla protokołu UDP.. 3.3.5 Protokół ICMP. Ostatnim protokołem istotnym z punktu prowadzonej pracy jest protokół ICMP (ang. Internet Control Message Protocol) w wersji 4 zdefiniowany w RFC 792 w 1981 roku [20]. W przeciwieństwie do przedstawionych w poprzednich rozdziałach protokołach ICMP nie jest protokołem transportowym a głównym zadaniem protokołu jest przesyłanie komunikatów diagnostycznych, kontrolnych lub odpowiedzi na błędy protokołu IP. Ramka protokołu ICMP występuje bezpośrednio za nagłówkiem IP i posada nagłówek o  minimalnym rozmiarze 8  Struktura nagłówka została przedstawiona na rysunku Rys. 17 na stronie 39.. 38.

(39) Offsets Oktet 0 1 2 3 Oktet Bit 0 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 29 30 31 0 0 Type Code Checksum 4 32 Rest of Header. Rys. 17: Format nagłówka protokołu ICMP. Pierwsze trzy pola (Type, Code, Checksum – 4 początkowe bajty) nagłówka ICMP posiadają zawsze ten sam format. Struktura kolejnego pola/pól – począwszy od bajtu piątego – zależy od typu komunikatu [20]. Poniższe zestawienie charakteryzuje poszczególne pola nagłówka ICMP: •. Type (8 bitów) – Typ komunikatu ICMP.. •. Code (8 bitów) – Podtyp komunikatu zależny od wartości pola Type.. •. Checksum (16 bitów) – Suma kontrolna wyliczana dla całego pakietu ICMP – nagłówka oraz danych.. •. Rest of Header (nie mniej niż 32 bity) – Długość i wartość pola zależna jest od  wartości pól Type oraz Code. 8 bitowe wartości pól Type oraz Code pozwalają na zapisanie 256 możliwych typów. komunikatów dla każdego z pól – standard RFC 792 definiuje w sumie około 40. Specyfika protokołu ICMP – brak obecnych w TCP i UPD pól adresacji portów, charakter zorientowany na komunikaty – wymaga specjalnego traktowania ICMP przez hosty jednakże nie zmienia to  sposobu przetwarzania nagłówka IP-ICMP przez algorytmy przeszukiwania wzorców pod kątem adresacji IP.. 3.4 Systemy zabezpieczeń sieciowych typu firewall. Ostanie lata przyniosły gwałtowny rozwój systemów teleinformatycznych, który doprowadził do sytuacji, gdzie trudno wyobrazić sobie funkcjonowanie jakiegokolwiek podmiotu bez szeroko pojętych systemów teleinformatycznych, korzystających z zasobów sieci Internet. Systemy informatyczne stały się tym samym integralną częścią infrastruktury organizacji, obejmując swoim zasięgiem niejednokrotnie obszary międzynarodowe. Doprowadziło to do sytuacji, w której zarówno systemy teleinformatyczne, jaki i dane przesyłane poprzez sieć wymagają odpowiednich zabezpieczeń przed nieautoryzowanym dostępem. Skalę niebezpieczeństwa ze strony Internetu obrazują liczne raporty opublikowane 39.

Cytaty

Powiązane dokumenty

Kluczowym czynnikiem dynamizujacym rozwój eko-rolnictwa było wstąpienie Polski do Unii Europejskiej, w latach 2003-2005 nastąpił ponad 3-krotny wzrost liczby gospodarstw

Teatr, w którym - jak pisze doskonały znawca teatru lalkowego, dr Henryk Jurkowski - tworzywo sceniczne poddane jest prawom kompozycji poetyckiej, kompozycji, która rządzi

intensywnie rozwijający się nurt literatury popularnej, który po 1989 roku mocno zakorzenił się na polskim rynku wydawniczym i czytelniczym 5 , zdążył już

Kornel Ujejski jako tłumacz utworów muzycznych : wokół.. &#34;Wniebowzięcia&#34; z cyklu

To characterize the stabilization, we monitor the fre- quency fluctuation of the QCL by the output of the lock-in amplifier, the amplitude fluctuation of the incident power by the

Prócz tego z podobieranych fragmentów górnej części innych kilku naczyń udało mi się obrachować dokładnie przy- najmniej średnicę przy krawędzi.. Sposobu ozdabiania

Pojawia się więc zasadne pytanie, jak to się stało, że w teologii chrześcijańskiej ten fakt nie został w sposób należyty zauważony, a nawet więcej - od początku da

Pamięć NVRAM jest używana przez routery jako trwała pamięć dla pliku z konfiguracją początkową (startup- config). Wszystkie zmiany w