728 x 90

Rozpoznanie użytkownika po jego zachowaniu.

Rozpoznanie użytkownika po jego zachowaniu.

Jak można sprawdzić czy użytkownik komputera jest tym za kogo się podaje, wykorzystując sieci neuronowe? Na przykład biorąc pod uwagę jego zachowanie (poprzednio wpisywane polecenia w konsoli). Przedstawię jeden z pomysłów na realizację tego zadania.

SIEĆ NEURONOWA

Koncepcja sztucznych sieci neuronowych powstała z obserwacji, jakie przeprowadzano w ramach badania mózgu człowieka. Model perceptronu (odpowiednik neuronu wykorzystywany w sztucznych sieciach) bazuje w pewnym stopniu na budowie neuronów obecnych w mózgu. Neuron odbiera impulsy elektryczne poprzez synapsy (na poniższym rysunku z lewej strony), które kumulowane są w jądrze (na rysunku żółty znak po lewej stronie).

/images/neuron-29147.png

Źródło obrazu: https://openclipart.org/detail/2181/singleneuron

W miarę nagromadzenia się impulsów, po osiągnięciu pewnego progu, neuron przekazuje sygnał poprzez akson (niebieska linia na rysunku) do innych połączonych z nim neuronów. Siecią neuronową nazywa się połączone ze sobą neurony. W perceptronie mamy wejście (zmienne) oraz ich wagi, funkcję aktywacji oraz wyjście. Analogicznie do neuronu, w perceptronie na wejście przekazywane są wartości, które po przemnożeniu przez wagi i zsumowaniu trafiają do funkcji aktywacji. Określa ona, jaką perceptron powinien zwrócić wartość. Sztuką jest odpowiednie dobranie wag, aby perceptron działał tak, jak tego chcemy.  Zainteresowanym polecam zajrzeć do [1] oraz [2].

BUDOWA SIECI ANALIZUJĄCEJ ZACHOWANIE

Pomysł bazuje na pracy Intrusion Detection with Neural Networks autorstwa J. Ryan, M.J. Lin, R. Miikkulainen. Głównym założeniem w ich pracy jest fakt, że nie zawsze chcemy przewidywać kolejność wpisywanych poleceń. Ważne za to jest, jakich poleceń w ciągu dnia używamy często, a jakich rzadko. Efektywnym podejściem, według autorów, byłoby zebranie statystyk na temat wpisywanych przez użytkownika poleceń w pewnym przedziale czasowym i sprawdzenie, czy ich rozkład jest podobny do tego generowanego przez prawowitego użytkownika.

Autorzy wybrali 100 poleceń najczęściej pojawiających się w logach użytkowników. Wśród nich znalazły się takie polecenia jak: as, awk, bc, cat, chmod, cp, cpp, cut, cvs, df… Z zebranych danych został utworzony wektor, w którym każdy z elementów był liczbą oznaczającą częstotliwość wystąpień danego polecenia. Mając 100 poleceń, tworzony był wektor 100‑elementowy. Na przykład pierwszy element w wektorze oznaczał częstotliwość występowania polecenia as, drugi element – awk, trzeci – bc itd. Liczby wykorzystywane w wektorze (od 0.0 do 1.0) podzielono na 11 przedziałów oznaczających odpowiednią częstotliwość występowania danego polecenia. Przedziały te nie były rozłożone równomiernie. Pierwszy przedział oznaczał, że polecenie nie wystąpiło w ogóle, drugi przedział – polecenie wystąpiło raz albo dwa razy, ostatni przedział – polecenie wystąpiło więcej niż 500 razy. Tak zbudowany wektor trafiał do sieci neuronowej.

Sieć neuronowa była złożona z trzech warstw, a do jej nauczenia wykorzystano algorytm wstecznej propagacji błędu. Miało to zapewnić ponowną łatwą wykonywalność zaprezentowanej techniki. Autorzy nie wykluczają, że inna architektura dawałaby lepsze wyniki. Warstwa wejściowa zawiera 100 perceptronów reprezentujących wektor wejściowy, w warstwie ukrytej jest 30 perceptronów, a w warstwie trzeciej (wyjściowej) jest 10 perceptronów – ich ilość odpowiadała ilości użytkowników.

W testach przeprowadzonych przez autorów tak zbudowana sieć radziła sobie całkiem dobrze. Anomalie w zachowaniu sieć wykrywała na poziomie 96%. Wykrytych prawidłowych zachowań danego użytkownika sieć zanotowała 93% dając przy tym fałszywy alarm tylko w 7% przypadków. Co ciekawe wszystkie fałszywe alarmy dotyczyły tego samego użytkownika. Wynikało to z faktu braku odpowiedniej ilości danych na temat jego zachowania.

DOBRE LINKI

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

Inne artykuły