• Nie Znaleziono Wyników

Mechanizmy wyszukiwania wzorców implementowane w układach FPGA

W dokumencie Index of /rozprawy2/11545 (Stron 64-74)

4. Algorytmy wyszukiwania wzorców implementowane w układach FPGA

4.3 Mechanizmy wyszukiwania wzorców implementowane w układach FPGA

Rosnąca liczba wbudowanych zasobów logicznych, pojemność implementowanej pamięci RAM, a przede wszystkim coraz wyższa częstotliwość z jaką mogą pracować układy FPGA zaowocowały zintensyfikowanym poszukiwaniem możliwości adaptacji istniejących oraz projektowaniem nowych algorytmów i mechanizmów umożliwiających przeprowadzanie operacji całkowicie sprzętowego wyszukiwania wzorców, z ukierunkowaniem prac na zastosowania sieciowe. Uzyskane w tym zakresie wyniki oraz prowadzone badania, skupiają swoją uwagę na konstrukcji specjalizowanych jednostek – silników (ang. engines), przeznaczonych do wyszukiwania wzorców, implementowanych w postaci klasyfikatorów pakietów sieciowych, mających zastosowanie w szeroko pojętych systemach zabezpieczeń – firewallach, podsystemach NIDS czy systemach trasowania ruchu sieciowego [58], [59].

Ośrodki naukowe-badawcze szukają sprzętowych rozwiązań opierających swoje działanie głównie na trzech rodzinach algorytmów z omówionych w rozdziale 3.4.3

Taksonomia klasyfikatorów pakietów sieciowych w systemach zabezpieczeń firewall

na stronie 46:

Tabela 4: Podsumowanie zasobów sprzętowych dostępnych w rodzinie układów Xilinix Virtex II Pro

Układ Logic Cells

CLB (1=4 slices = max 128bits)

Liczba bloków 18 Kb XC2VP2 44 12 4 XC2VP4 94 28 4 XC2VP7 154 44 4 XC2VP20 290 88 8 XC2VPX20 306 88 8 XC2VP30 428 136 8 XC2VP40 606 192 8 XC2VP50 738 232 8 XC2VP70 323 8 XC2VPX70 308 8 XC2VP100 444 12

Liczba bloków pamięci SelectRAM+ Liczba bloków DCMs Liczba bloków Slice Maksymalny rozmiar pamięci DistributedRAM (Kb) 3 168 1 408 6 768 3 008 11 088 4 928 20 880 9 280 22 032 9 792 30 816 13 696 43 632 19 392 53 136 23 616 74 448 33 088 1 034 74 448 33 088 1 034 99 216 44 096 1 378

• Pełnego przeszukiwania,

• Algorytmów drzew przeszukiwań, • Algorytmów dekompozycyjnych.

Można zauważyć, że projektowane przez zespoły badawcze rozwiązania nie są bezpośrednim przeniesieniem jednej z wyżej wymienionych metodologii postępowania do konstrukcji konkretnego algorytmu lecz bardzo często stanowią połączenie kilku przedstawionych technik w celu uzyskania pożądanych mechanizmów wyszukujących wzorce [36], [49], [58], [60]. Literatura anglojęzyczna charakteryzuje przedstawioną ideę projektowania silników używając najczęściej następujących pojęć: „pattern matching

techniques”, „rule processing systems”, „packet classification alhorithms”.

Z przeanalizowanej przez autora literatury można wywnioskować, że adaptowane do sprzętowego wdrożenia pomysły posiadają w głównej mierze silniki, których klasyfikatory bazują na algorytmach i mechanizmach (pełniących funkcję wyszukiwania wzorców), których implementacja w układach FPGA realizowana jest z wykorzystaniem następujących metod wyszukiwania wzorców:

• Wyszukiwanie wzorców z wykorzystaniem deterministycznych automatów skończonych – DFA (ang. Deterministic Finite Automaton) [5], [61],

• Wyszukiwanie wzorców z wykorzystaniem niedeterministycznych automatów skończonych – NFA (ang. Nondeterministic Finite Automata) [5], [61],

• Wyszukiwanie wzorców z wykorzystaniem pamięci CAM i TCAM.

Dodatkowo należy zaznaczyć, że autorzy rozszerzają opracowane pomysły o dodatkowe mechanizmy wspomagające wyszukiwanie, jak na przykład filtry Blooma [62], lub kombinację kilku silników działających jednocześnie – równolegle lub szeregowo.

Rozwiązanie bazujące na DFA przedstawia Moscola et al. [60]. Opracowana przez autorów implementacja wykorzystuje wyszukiwanie wzorców do skanowaniu ruchu TCP/IP na potrzeby systemu zabezpieczeń typu firewall (moduł analizy spam). Autorzy prezentują rozwiązanie hybrydowe (sprzętowo-programowe), w którym jądro klasyfikatora zaprojektowane zostało pod kątem wyrażeń regularnych indywidualnie konwertowanych do postaci współbieżnie analizujących jednostek DFA – dane wejściowe pojawiające się na wejściu klasyfikatora są równolegle kierowane do wszystkich modułów weryfikujących.

W przedstawionym rozwiązaniu przepustowość przetwarzania skaluje się liniowo wraz ze wzrostem liczby implementowanych klasyfikatorów, gdzie pojedyncze jądro klasyfikatora, przy zajętości zasobów SLICE dla układu VCX2000E na poziomie 27%, pracuje z częstotliwością 37MHz dla zadanych 20 wyrażeń regularnych (20 jednostek DFA). Jak zaznaczają autorzy słabą stroną opracowanego projektu jest szerokość magistrali danych klasyfikatora – 8 bitów – co w konfiguracji czterech niezależnie analizujących klasyfikatorów pozwala osiągnąć przepustowość przetwarzania na poziomie 1,184Gbps.

Koncepcja wyszukiwania przy użyciu deterministycznych automatów skończonych jest podstawą opracowanego przez Lockwooda sub-modułu klasyfikatora [63]. Opracowane przez autora rozwiązanie, ma za zadanie analizę pakietów w sieciach ATM pod kątem występowania zadanych wzorców i po poprawnej klasyfikacji, modyfikację zawartości przetwarzanego pakietu. Wykorzystywany do przeszukiwania automat kodowany jest wprost z żądanego wzorca – poszczególne stanu automatu odpowiadają poszczególnym symbolom do porównania i odpowiada bezpośrednio algorytmowi BF (strona 15). Jądro zaprojektowanego klasyfikatora jest częścią opracowanego przez Lockwooda rekonfigurowalnego systemu FPX (ang. Field Programable Port Extender) składającego się z modułu logiki programowej RAD (ang. Reprogrammable Application Device) – implementowanego w układzie Xilinx Virtex 1000E oraz modułu komunikacji sieciowej NID (ang. Network Interface Device) – implementowanego w układzie Xilinx Virtex 600E. Przedstawione rozwiązanie pozwala na pracę z częstotliwością 119MHz dla 32 bitowej magistrali danych przy zajętości zasobów SLICE na poziomie 49, co przy nominalnej częstotliwości pracy całego systemu wynoszącej 100MHz, pozwoliło autorowi oszacować przepustowość klasyfikatora na 7,1Mpps (ang. Million Packets per Second). Niestety zaprezentowane rezultaty nie wyszczególniają liczby możliwych do zaimplementowania w klasyfikatorze reguł – analizowanych wzorców. Lockwood nie podaje także całkowitej liczby możliwych do zaimplementowania dla systemu FPX sub-modułów klasyfikatora, czy też funkcjonalności pozwalającej na współbieżne przetwarzanie.

Platformę NIDS, wykorzystującą deterministyczne automaty stanów, zaprojektowaną na potrzeby współbieżnego wyszukiwania wzorców sygnatur zagrożeń Internetowych bazy SNORT, przedstawił w swojej pracy Gerald Tripp [64]. Autor zaprezentował sprzętowe rozwiązanie umożliwiające równoległe przetwarzanie n bajtów danych w równocześnie wyszukujących wzorce modułach, działających jako specjalizowane jednostki FSM (ang. Finite State Machine). Dla zaproponowanej w pracy architektury, z odebranego na wejściu systemu pakietu sieciowego, kierowany jest do równoległego wyszukiwania

string o długości n bajtów, w n identycznych jednostkach FSM, dla których zastały specjalnie

przygotowane wzorce sygnatur zagrożeń Internetowych z bazy SNORT. Każdy moduł FSM przetwarza kolejny substring danych wejściowych o długości 1/n. Dodatkowo z każdą jednostką wyszukującą wzorce, skojarzony jest wektor dopasowania (ang. match vector) o długości n bitów informujący o dopasowaniu substring'u w jednostce FSM z uwzględnieniem pozycji substring'u względem analizowanych danych. Końcowy wynik dopasowania wzorca sygnatury do analizowanego string'u jest rezultatem przeliczenia cząstkowych wektorów dopasowania. Autor przedstawia wyniki implementacji zaproponowanej platformy w układzie Xilinx XC2V250 dla 4 równolegle przetwarzających instancji modułów FSM, analizujących dane o długości 8 bitów z wektorem dopasowania o długości 108 bitów. Zastosowanie wejściowej magistrali danych o długości 32 bitów oraz wektora wyniku wyszukiwania o długości 27 bitów pozwala na jednoczesne przeszukiwanie 27 wzorców sygnatur zagrożeń Internetowych bazy SNORT. Implementacja zaproponowanej architektury wykorzystaniem dla każdego modułu FSM dostępnych w rodzinie Xilinx XC2V250 zasobów pamięci block RAM, pozwala na pracę przedstawionego systemu z częstotliwością 149MHz co przy zajętości zasobów układu FPGA na poziomie 12 block

RAM i 250 modułów SLICE umożliwia, w opinii autora, na wyszukiwanie wzorców

z przepustowością 4,7Gbps.

System bezpieczeństwa sieciowego oparty na współbieżnie przetwarzających klasyfikatorach DFA przedstawił Dimopoulos V et al. [65]. Autorzy zaproponowali bazujące na algorytmie AC (strona 15) rozwiązanie Split-AC, zaprojektowane na potrzeby sprzętowej platformy NIDS, wyszukującej wzorce sygnatur zagrożeń Internetowych bazy SNORT. Podstawą przedstawionej platformy bezpieczeństwa jest algorytm Split-AC transformujący pojedynczy klasyfikator NIDS, będący rozwiązaniem bazy polityki SNORT dla algorytmu AC, na szereg mniejszych modułów AC FSM, wspomaganych pamięciami RAM i CAM. Autorzy, poprzez analizę wygenerowanego dla sygnatur Internetowych SNORT klasyfikatora AC, wyliczają częstości przejść (transakcji) f(c) poszczególnych symboli wzorców (ang.

frequency of character c in transitions), które służą do alokowania zasobów RAM i CAM.

Dla arbitralnie zdefiniowanego progu Tf , symbole o liczbie transakcji 0< f (c)<Tf umieszczane są w pamięci RAM, symbole o liczbie transakcji f(c)⩾Tf umieszczane są w pamięci CAM. Dodatkowo, by zminimalizować liczbę stanów jednostek AC FSM oraz zredukować zasoby sprzętowe zajęte przez pamięć CAM, wzorce podlegają translacji do postaci skompresowanej. Celem zminimalizowania liczby wygenerowanych z bazy SNORT jednostek wyszukujących FSM, autorzy grupują reguły polityki bezpieczeństwa dla

sygnatur zagrożeń pod kątem 3- lub 5-wymiarowych klasyfikatorów, według których następnie generowane są docelowe moduły AC FSM. Funkcjonalnie, architektura Split-AC podzielona zastała na trzy współpracujące potokowo jednostki, gdzie pierwsza odpowiedzialna jest za translacje symboli wejściowych do postaci skompresowanej, druga za obsługę RAM i CAM w równoległym wyszukiwaniu wzorca przez moduły AC FSM, trzecia za decyzje o kolejnych stanach pamięci RAM i CAM oraz generowanie końcowego wyniku wyszukiwania wzorca dla klasyfikacji pakietu. Autorzy przedstawili wyniki implementacji bazy zagrożeń Internetowych SNORT dla algorytmu Split-AC z 8 bitową magistralą do odczytywania danych z pakietów sieciowych w układzie FPGA Xilinx Virtex 4. Zaproponowana konfiguracja, przy arbitralnie ustalonej wartości Tf= 0,01 oraz implementacji zasobów pamięciowych rozwiązania w blokach block RAM, pozwoliła na pracę systemu z częstotliwością 116MHz przy jednoczesnej zajętości zasobów układu FPGA na poziomie 243 bloków pamięci block RAM oraz 8970 modułów SLICE, co sumarycznie przekłada się na wyszukiwanie wzorców z przepustowością 927Mbps.

Odmienne rozwiązanie dla platformy wyszukiwania wzorców na potrzeby systemu NIDS przedstawił Sourdis et al. [66]. Autorzy zaproponowali klasyfikator wykorzystujący mechanizmy pamięci CAM, zaprojektowany na potrzeby analizy wzorców sygnatur zagrożeń Internetowych SNORT, wykorzystujący dedykowane rejestry przesuwne SRL16 (strona 61) dostępne w układzie Xilinx Virtex II. Przedstawione rozwiązanie jest potokowym, współbieżnym systemem, pozwalającym równolegle przetwarzać wiele bajtów danych z pakietów sieciowych jednocześnie. Podstawą zaproponowanej platformy jest mechanizm pojedynczego 8 bitowego modułu wyszukującego DCAM (ang. Decoded CAM), realizowanego w postaci rzędu, 8 bitowych komparatorów symboli wzorca, których wyjścia wyników cząstkowych dopasowania (dla przetwarzania indywidualnego), połączone są z synchronizującymi rejestrami przesuwnymi, podłączonymi następnie, do funkcji generatora wyniku wzorca. Zarówno przedstawione przez autorów komparatory symboli, jak i rejestry przesuwne, implementowane są z wykorzystaniem dostępnych w układach Xilinx Virtex II elementów bibliotecznych LUT oraz SRL16 odpowiednio. Funkcjonalnie przedstawiony system bezpieczeństwa, podzielony jest na trzy współpracujące potokowo bloki, z których pierwszy stanowią jednostki DCAM, zgrupowane w równolegle przetwarzające moduły DEC, odpowiedzialne za wyszukiwanie wzorców sygnatur zagrożeń Internetowych bazy SNORT, których wyjścia kierowane są na blok synchronizujący rejestrów przesuwnych, podłączonych do funkcji generatora wyników wyszukiwania. Dzięki zastosowaniu w projekcie mechanizmu współbieżnie przetwarzających wzorce jednostek

DEC, przedstawione rozwiązanie pozwala równolegle wyszukiwać wzorce w strumieniu danych pakietów sieciowych, będącego wielokrotnością 8 bitów. Autorzy przedstawili wyniki implementacji przedstawionej architektury dla układu Xilinx Virtex II (Virtex2-3000) z 8 bitowym wejściem danych i wdrożonymi 64 regułami bazy SNORT. Zaproponowana konfiguracja umożliwiała, w opinii autorów, na pracę z częstotliwością 385MHz przy zajętości zasobów sprzętowych na poziomie 11614 bloków SLICE, co umożliwia wyszukiwanie wzorców z przepustowością 3Gbps.

Klasyfikator pakietów sieciowych, wykorzystujący mechanizmy pamięci TCAM oraz zmodyfikowany algorytm BV, zaprojektowany na potrzeby systemu NIDS przedstawił Song H. et al. [67]. Zaproponowana przez autorów architektura BV-TCAM jest dwu-modułowym, potokowym mechanizmem wyszukiwania wzorców dla 5-wymiarowej polityki bezpieczeństwa. Wykorzystane w projekcie pamięci TCAM, będące pierwszym modułem proponowanego rozwiązania, służą mechanizmowi klasyfikacji nagłówków pakietów sieciowych pod kątem prefiksów adresów źródłowego i docelowego, oraz typu protokołu IP. Wynik cząstkowy wyszukiwania w pamięci TCAM jest wektorem bitowym (ang. Bit Vector), reprezentującym reguły bezpieczeństwa, dla których dopasowano żądane pola do wzorców polityki bezpieczeństwa. Drugi blok funkcjonalny stanowią dwie jednostki wyszukiwania zakresów portów sieciowych – źródłowych i docelowych – będące zmodyfikowanym przez autorów algorytmem BV/ABV (ang. multi-bit trie algorithm), dla którego zakresy portów sieciowych transformowane są do listy prefiksów wyszukiwania. Na podstawie wyliczonych list prefiksów, generowane jest drzewo algorytmu binarnego, którego węzły są wektorami bitowymi odzwierciedlającymi dopasowanie do reguły. Wyniki cząstkowe, dla modułów TCAM oraz BV, są potokowo przeliczane w funkcji generatora wyniku końcowego klasyfikacji. Dla konfiguracji bazy sygnatur zagrożeń Internetowych SNORT o 222 unikalnych regułach nagłówków pakietów sieciowych, z których wyodrębniono 33 reguły dla modułu TCAM, 87 reguł portów źródłowych i 177 reguł portów docelowych dla modułów BV oraz wektory bitowe TCAM i BV o długości 222 bitów, autorzy przedstawili wyniki implementacji zaproponowanego mechanizmu klasyfikacji w układzie Xilinx XCV-2000E, uzyskując maksymalną częstotliwość pracy klasyfikatora 100MHz, przy zajętości zasobów logicznych na poziomie 10% i zajętości zasobów pamięci block RAM na poziomie 20%. Niestety, autorzy nie podają maksymalnej przepustowości dla jakiej przedstawiony klasyfikator jest w stanie pracować, sugerując jedynie, że proponowana architektura implementowana w układach Virtex-II Pro lub Virtex-4 mogłaby pracować z przepustowością 10Gpbs.

Przykładem projektu opartego na współpracy kilku mechanizmów wyszukujących wzorce jednocześnie jest system przedstawiony w pracy Hongbin et al. [68]. Autorzy przedstawiają rozwiązanie realizujące zadanie skanowania zawartości pakietów sieciowych, pod kątem występowania sygnatur zagrożeń Internetowych, mające zastosowanie w systemach NIDS. Podstawę silnika klasyfikatora jest specjalnie opracowany moduł TDP-DFA (ang. Transition-Distributed Parallel DFAs), stanowiący trzy równolegle przetwarzające, przesunięte względem danych wejściowych o szerokość magistrali danych, jednostki DFA, z których każda posiada cztero-symbolową magistralę danych i umożliwia, według autorów, na trzy-symbolowe okno skoku silnika względem danych wejściowych. Konfiguracja rozwiązania uzupełniona jest o filtry Blooma, pełniące funkcję mechanizmów klasyfikujących pakiety na podstawie reguły wynikającej z wyniku dopasowania przez TDP-DFA wzorca do danych wejściowych. Autorzy w przedstawionym rozwiązaniu główny nacisk położyli na optymalizację liczby transakcji w module TDP-DFA wynikający z przyjętego sposobu kodowania wzorców w jednostkach DFA. Niestety, pomimo zaprezentowania w pracy szczegółowej architektury rozwiązania, przedstawiona publikacja nie zawiera wyników implementacji rozwiązania dla układów FPGA – autorzy ograniczają się do przedstawienia wyników dla konfiguracji wykorzystującej dedykowane pamięci CAM i RAM (pracujących z częstotliwością 800MHz i będących bazą dla sub-modułów DFA), która pozwala, w opinii autorów, skalować się do przepustowości 128Gbps.

Systemem bazującym na wykorzystaniu filtrów Blooma jest praca Dharmapurikar et al. [69]. Opracowane rozwiązanie ma za zadanie analizę ruchu sieciowego w warstwie 7 modelu ISO/OSI na potrzeby systemu detekcji sygnatur zagrożeń Internetowych. Ideą opracowanego silnika jest równoległe przetwarzanie strumienia danych wejściowych przez filtry Blooma, kategoryzowane pod względem długość wyszukiwanych wzorców – wszystkie wzorce o identycznej liczbie analizowanych elementów kodowane są do jednego filtru. Dharmapurikar et al. uzupełnili rozwiązanie o dodatkowy moduł analizatora weryfikujący poprawność detekcji sygnatury i eliminujący zjawisko false-positive [62]. Zestaw filtrów Blooma wraz z analizatorem stanowi pojedynczy silnik klasyfikatora – w przedstawionym systemie autorzy zaprojektowali cztery równolegle przetwarzające silniki celem zwiększenia przepustowości przetwarzania. Filtry Blooma realizowane są sprzętowo w postaci funkcji/tablic haszujących (ang. function/hash table), które są implementowane bezpośrednio w pamięci block RAM (Block SelectRAM+) w wykorzystywanym układzie Xilinx XCV2000E. Autorzy przedstawiają teoretyczną maksymalną przepustowość opracowanego rozwiązania wynoszącą 2,46Gbps dla systemu w postaci 4 silników klasyfikatora, każdy

z siedmioma filtrami Blooma, o maksymalnej pojemności 1434 sygnatur dla pojedynczego filtru i wykorzystaniu zasobów pamięci block RAM XCV2000E na poziomie 140 bloków. Dodatkowo w pracy przedstawiono wyniki dla implementacji z pojedynczym silnikiem klasyfikatora korzystającego z pojedynczego filtru Blooma. Uzyskana w tym przypadku przepustowość przetwarzania wynosiła 600Mbps dla częstotliwości pracy 81MHz, zajętości zasobów pamięci block RAM na poziomie 35 i wykorzystaniu 14% zasobów logicznych XCV2000E.

Osobną grupę rozwiązań stanowią implementacje klasyfikatorów z wykorzystaniem wyszukiwania wzorców bazujące na niedeterministycznych automatach stanu, dla których podstawą prowadzonych badań była praca V. K. Prasanna i R. Sidhu „Fast Regular

Expression Matching using FPGA” [70]. Autorzy prezentują pionierską metodę

wyszukiwania wzorców implementowaną w układach FPGA bazującą na NFA i służącą do przeszukiwania zadanych tekstów wejściowych. Podstawą rozwiązania jest algorytm tłumaczący wyrażenie regularne na proste struktury (pojedynczego symbolu, alternatywy, konkatenacji oraz Kleene-star – r , r1∣r2, r1r2, r1∗) generowane jako moduły NFA, które implementowane są z elementów bibliotecznych dostępnych w blokach CLB układów FPGA Xilinx Virtex. Z tak otrzymanych struktur logicznych scalane jest następnie pełne początkowe wyrażenie regularne implementowane jako jeden blok funkcjonalny NFA. Ponieważ przedstawiona metoda pozwala na implementację w układzie FPGA tylko pojedynczego wyrażenia regularnego, autorzy opracowali mechanizm samo-rekonfiguracji SRGA (ang. A Self-reconfigurable Gate Array Architecture), umożliwiający odczytanie z wejścia zadanego wyrażenia, przetłumaczenie go na zaproponowaną postać NFA i przekonfigurowanie układu FPGA bez udziału modułów zewnętrznych. W pracy autorzy prezentują wyniki zajętości zasobów FPGA uzyskane dla implementacji wyrażenia postaci (a∣b)∗a(a∣b)k, k∈{8..28} w układzie Xlinx XCV100, gdzie przykładowo dla k=8 zajętość układu wynosiła 10×7 bloków CLB. Autorzy nie podają uzyskanych częstotliwości z jakimi proponowane rozwiązanie może pracować. W pracy można jednak znaleźć wyniki czasu potrzebnego na przeanalizowanie pojedynczego znaku wejściowego gdzie dla k=8 czas przetwarzania wyrażenia regularnego wynosi 10,7ns.

Clark et al. opracowali sprzętowy co-procesor implementowany w układzie XVC1000 wykorzystujący ideę NFA na potrzeby wsparcia programowych systemów NIDS [71]. Fundamentem przedstawionego rozwiązania jest autorski generator logiki reprogramowalnej tłumaczący reguły sygnatur zagrożeń Internetowych do automatów NFA, których

funkcjonalność została rozszerzona o możliwość wyszukiwania ciągu o długości nie mniejszej niż n jednakowych symboli

(

∗⩾n

)

, oraz o możliwość wyszukiwania ciągu o długości nie większej niż k jednakowych symboli

(

∗⩽k

)

. Autorzy zoptymalizowali wykorzystanie zasobów bloków CLB poprzez zastąpienie wielokrotnych wystąpień komparatorów symboli przez dekodery 8-na-256. Podejście taki pozwoliło dodatkowo na efektywniejsze wykorzystanie zasobów połączeniowych. W pracy zaprezentowano wyniki implementacji reguł sygnatur zagrożeń Internetowych bazy SNORT2 dla zestawu sygnatur

default o pojemności 17537 znaków (bez symboli metadanych) w układzie Xilinx

Virtex-1000, dla której uzyskano częstotliwość pracy 100MHz, co przy 8 bitowej magistrali danych pozwala, według autorów, na przetwarzanie z szybkością 800Mbps.

Hutchings et al. opracowali modułu generatora wyrażeń regularnych, implementowanych w układzie FPGA jako niedeterministyczne automaty stanów dla potrzeb sprzętowego wspomagania systemu NIDS, analizującego ruch sieciowy pod kątem sygnatur zagrożeń Internetowych bazy SNORT [72]. Przedstawione przez autorów rozwiązanie stanowi kompleksowy system umożliwiający wygenerowanie z reguł sygnatur bazy SNORT wyrażeń regularnych o postaci NFA zaproponowanych w pracy Prasanna V. K. et al., syntezę oraz generację danych EDIF (ang. Electronic Design Interchange Format) dla narzędzi do implementacji. Dodatkowo w projekcie rozszerzono funkcjonalność wyrażeń regularnych o trzy dodatkowe operatory: operator [ ] umożliwiający wyszukiwanie zakresu symboli, operator . umożliwiający wyszukanie pojedynczego wystąpienia dowolnego symbolu oraz operator ? umożliwiający wyszukiwanie 0 lub 1 wystąpienia wyrażenia poprzedzającego operator (r1r2? dopasuje r1 lub r1r2). Sprzętowa implementacja zaproponowanego przez

autorów rozwiązania dodatkowo ukierunkowana została na zwiększenie ogólnej wydajności systemu NIDS poprzez wymuszanie mapowania najczęściej występujących operatorów wyrażeń regularnych (konkatenacji) pod kątem zredukowania zajmowanych zasobów układu FPGA. Analogicznie, zastosowanie potoków w propagacji sygnałów symboli wejściowych, reorganizacja wyrażeń regularnych pod kątem wydajności bibliotecznych elementów bramek OR bloków CLB oraz współdzielenie najczęściej występujących sub-wyrażeń regularnych w implementacji NFA skutkowało dodatkową redukcja zajętości zasobów układu FPGA. W pracy przedstawiono wyniki implementacji opracowanego przez autorów systemu dla wyrażeń regularnych generowanych z bazy sygnatur zagrożeń Internetowych SNORT realizowanych w układach Xilinx XCV1000 oraz Xilinx XCV2000E. Dla realizacji bazy SNORT o pojemności 8003 znaków (bez symboli metadanych) w układzie Xilinx Virtex-1000

autorzy uzyskali maksymalną częstotliwość pracy systemu równą 30,9MHz przy 83% zajętości zasobów bloków SLICE. Realizacja bazy SNORT o pojemności 16028 znaków (bez symboli metadanych) w układzie Xilinx XCV2000E pozwalała na pracę zaproponowanej implementacji z maksymalną częstotliwością 49,5MHz przy 79% zajętości zasobów bloków SLICE.

Ostatnią z omawianych implementacji wyszukiwania wzorców wykorzystujących NFA przedstawił Peter Stutton w pracy dla sprzętowego wsparcia systemu NIDS korzystającego z bazy SNORT2 zawierającej sygnatury zagrożeń Internetowych [73]. Podstawą rozwiązania jest implementacja NFA zaproponowana przez Prasanna V. K. et al., którą autor rozbudował o równoległe przetwarzanie danych wejściowych, poprzez równoległe zwielokrotnienie jednostek dekodujących wyrażenie regularne na wejściu NFA. Dodatkowo, korzystając z wyników pracy Clark et al., w pracy zaproponowano wykorzystanie częściowo współdzielonych modułów dekodujących symbole wejściowe w implementowanym wyrażeniu regularnym poprzez jednoczesne dekodowanie grupy bitów symbolu wejściowego jednocześnie. Podejście takie pozwoliło autorowi zmniejszyć zapotrzebowanie na zasoby połączeniowe układu FPGA. W pracy przedstawiono wyniki implementacji zaproponowanego rozwiązania dla układów Xilinx Virtex II-6000 oraz Xilinx Virtex-E 2000, dla których wygenerowano NFA dla kilku zestawów reguł sygnatur zagrożeń Internetowych bazy SNORT2. Dla zestawu sygnatur default o liczbie reguł 1554 i pojemności 23401 znaków (bez symboli metadanych) implementowanego w układzie Xilinx Virtex II-6000 przy 3 bajtowym wejściu danych, 4 współdzielonych dekoderach symboli uzyskano teoretyczną

W dokumencie Index of /rozprawy2/11545 (Stron 64-74)

Powiązane dokumenty