Network_attack_propagation/network_attack_propagation.ipynb

396 KiB

Propagacja ataku sieci z wykorzystaniem spacerów losowych

  • Marcin Kostrzewski
  • Mateusz Tylka
  • Krystian Wasilewski

Problem

W jakich topologiach sieci komputerowych potencjalny atak wirusa rozprzestrzeniałby się najszybciej, a w których najwolniej? Aby rozwiązać ten problem zaprojektowaliśmy symulację ataków wirusa na różne rodzaje topologii sieci.

Graf

Grafem nazywamy kolekcję dwóch zbiorów: zbioru wierzchołków V oraz zbioru krawędzi E. Zbiór wierzchołków jest dowolnej postaci. Elementami zbioru krawędzi są e∈E, które są podzbiorami postaci v1,v2 dla pewnych dwóch wierzchołków v1,v2∈V (jeśli graf jest nieskierowany) lub parą uporządkowaną (v1,v2) jeśli graf jest skierowany.

Spacer losowy na grafie

Inaczej błądzenie losowe. Obiekt przemieszczający się na grafie losowo wybiera jeden z sąsiednich do obecnego wezłów, żeby się do nich przemieścić. Ruch ten nie zależy od historii ruchów - tylko ostatnie przemieszczenie jest brane pod uwagę przy podejmowaniu decyzji.

Model

Model sieci reprezentowany jest jako graf nieskierowany. Każdy węzeł reprezentuje w nim urządzenie a krawędzie połączenia między nimi. Węzły zaznaczone na czerwono reprezentują urządzenie zainfekowane przez wirusa, który przemieszcza się do nowych urządzeń spacerem losowym - w każdym kroku wirus wybiera jeden z sąsiadujących węzłów z jednakowym prawdopodobieństwem i próbuje go zainfekować.

Implementacja

W naszym przypadku dana topologia sieci będzie przedstawiona za pomocą grafu nieskierowanego, a wirus będzie infekować sieć przemieszczając się po jego krawędziach za pomocą spaceru losowego.

Kod

Eksperymenty

Magistrala

from network_attack_propagation import bus_experiment 
bus_experiment()

Pierścień

from network_attack_propagation import ring_experiment 
ring_experiment()

Gwiazda

from network_attack_propagation import star_experiment 
star_experiment()

Gwiazda (z odpornością wierzchołków o najwyższych stopniach)

from network_attack_propagation import weighted_star_experiment 
weighted_star_experiment()
MovieWriter ffmpeg unavailable; using Pillow instead.
MovieWriter ffmpeg unavailable; using Pillow instead.
13 NODE STAR
average degree = 1.85
propagation speed = 0.77
star0 rounds survived = 11
MovieWriter ffmpeg unavailable; using Pillow instead.
31 NODE STAR
average degree = 1.94
propagation speed = 0.84
star2 rounds survived = 27
57 NODE STAR
average degree = 1.96
propagation speed = 1.11
star4 rounds survived = 64
MovieWriter ffmpeg unavailable; using Pillow instead.
91 NODE STAR
average degree = 1.98
propagation speed = 1.1
star6 rounds survived = 101

Wnioski

Najszybciej wirus rozprzestrzenia się w pierścieniu, a najwolniej w magistrali.