dc.contributor.author | Nordhaug, Kristian | |
dc.date.accessioned | 2012-10-29T08:14:59Z | |
dc.date.available | 2012-10-29T08:14:59Z | |
dc.date.issued | 2012 | |
dc.identifier.uri | http://hdl.handle.net/11250/143990 | |
dc.description.abstract | ENGELSK: Network Intrusion Detection System (NIDS) analyzes network traffic for malicious activities and
report’s findings from events that intend to compromise the security of the computers and other
equipment. NIDS looks into both headers and payloads of the network packets to identify possible
intrusions.
NIDS models that only use Central Processing Units (CPU) such as the IDS Snort, have in
the last decade struggled with the CPU as the bottleneck of the system. Network traffic has been
increasing more rapidly than the clock-speed of CPUs. The CPUs have gained more cores, but
lack implementation for utilizing multi-core CPUs and are unable to cope with the bandwidth
throughput we are starting to see in high-tech network infrastructure that they are set to protect.
The massive flows of data packets overload the NIDS and lead to packet loss which makes them
pass by unchecked for malware and intrusion attempts, increasing the false-negative rate. The
main cause of this is the network packet inspection module in the detection engine of the NIDS.
The detection engine consists of numerous functions and ultimately contains an algorithm for
string searching. This thesis will focus on accelerating the NIDS by parallelizing this algorithm.
In the recent years modern GPUs have evolved from being a tool that only displays highend
graphics for games, to be used for general-purpose scientific and engineering computing
across a range of platforms [35]. GPU computing is the short term used when ordering the
GPU to take over and accelerate the computationally-intensive calculations normally done by
the CPU, and instead let the CPU take care of the more sequential parts of the application.
They then work together solving tasks in a heterogeneous co-processing computing model. Using
Graphics Processing Units (GPU) for general-purpose scientific and engineering computing has
grown exponentially the last few years. This has happened mostly from the work Nvidia has
put into their CUDA platform and programming model. Some of the most common areas for
use of GPU is fluid dynamics, seismic processing, molecular dynamics, computational chemistry,
finance and supercomputing. Programs need to be specifically designed to run optimized on a
GPU, and special programming APIs have been designed explicitly for GPU computing. The most
well known ones are CUDA and OpenCL. In the recent year’s modern GPUs have evolved from
being the tool that displays high-end graphics for games, to be the tool used in general-purpose
scientific and engineering computing across a range of platforms.
The goal of this project was to harness the power within GPUs and use it to accelerate NIDS
such as Snort, by using CUDA technology. Several papers have been published on the topic of GPU
acceleration, however only a handful of them targeted NIDS with varying results. We believe this
can be improved dramatically by further research in how different hardware components interact
and how to exploit the components and their APIs in new ways for creating high-performance
algorithm solutions.
We present our implementations of known string search algorithms programmed in C++ and
CUDA, with analysis of these algorithms and conclude with contributions from our experiments and theoretical analysis. | no_NO |
dc.description.abstract | NORSK: NIDS analyserer nettverkstrafikk for ondsinnede aktiviteter og rapporterer funn fra hendelser
som har til hensikt å kompromittere sikkerheten til datamaskiner og annet utstyr. En NIDS ser
inn både header og payload av nettverkspakker og identifiserer mulige inntrengere i systemer.
NIDS modeller som kun benytter hovedprosessoren (CPU) som produktet Snort, har i det
siste tiåret kjempet med CPU som flaskehalsen i systemet. Nettverks trafikken har økt raskere
enn klokke-hastigheten til CPU. Selv om CPU har fått flere kjerner, mangler det implementering
for å utnytte multi-core prosessorer i NIDS De klarer ikke lenger å takle mengden av trafikk
gjennomstrømming vi ser i high-tech nettverksinfrastruktur der de er satt for å beskytte. De
massive strømmene av datapakker overbelaster NIDS, som gjør at de krysser forbi uten å bli
sjekket for malware og innbruddsforsøk. Den viktigste årsaken til dette er modulen for inspeksjon
av nettverk pakker i deteksjon motoren på NIDS. Deteksjons motoren består av mange funksjoner
og inneholder en algoritme for streng søk. Denne oppgaven vil fokusere på å aksellerere NIDS
ved å parallelisere denne algoritmen.
GPU databehandling er slang uttrykket for å bruke GPU til å overta og aksellerere intensive
beregninger, normalt gjort av CPU. CPU vil istedet få frihet til å ta seg av den mer sekvensielle
delen av søknaden. De arbeider deretter sammen for å løse oppgavene i en heterogen coprosessor
databehandlings modell. Bruken av Graphical Processing Units (GPU) for generell
vitenskapelig og teknisk databehandling har vokst eksponentielt de siste årene. Dette har skjedd
hovedsakelig på grunn av arbeidet Nvidia har lagt inn i sin CUDA plattform og programmerings
modell. Noen av de vanligste områdene for bruk av GPU er veskedynamikk, seismisk prosessering,
molekylær dynamikk, beregningsorientert kjemi, økonomi og supercomputing. Programmer
må være spesielt designet for å kjøre optimalisert på en GPU, og spesielle programmerings APIer
har blitt designet eksplisitt for GPU databehandling. De mest kjente er CUDA og OpenCL. I de
siste årene har moderne GPUer utviklet seg fra å være verktøyet som viser high-end grafikk for
spill, til å være et verktøy som brukes i generell vitenskapelig og teknisk databehandling på en
rekke plattformer.
Målet med dette prosjektet er å utnytte kraften i GPU og bruke den til å akselerere NIDS som
Snort, ved hjelp av CUDA-teknologi. Flere artikler er publisert om temaet GPU-akselerasjon, men
bare en håndfull målrettet mot NIDS, med varierende resultater. Vi tror dette kan forbedres
dramatisk ved videre forskning på hvordan ulike maskinvarekomponenter samhandler, og
hvordan man best utnytter komponentene og deres APIer på nye måter for å skape nye høyder
for ytelse i algoritmiske løsninger.
Vi presenterer våre implementasjoner av kjente streng søk algoritmer, programmert i C++
og CUDA, samt analyse av disse algoritmene og konluderer med bidrag fra våre eksperimenter
og teroretiske analyse. | no_NO |
dc.language.iso | eng | no_NO |
dc.subject | Network Intrusion Detection System | no_NO |
dc.subject | Graphics Processing Units | no_NO |
dc.subject | CUDA technology | no_NO |
dc.title | GPU Accelerated NIDS Search | no_NO |
dc.type | Master thesis | no_NO |
dc.subject.nsi | VDP::Mathematics and natural science: 400::Information and communication science: 420::Security and vulnerability: 424 | no_NO |
dc.source.pagenumber | XIII, 98 | no_NO |