Wstęp teoretyczny:
Tunelowanie jest to rodzaj połączenia pomiędzy dwoma odległymi od siebie komputerami, symulujący połączenie bezpośrednie.
Dzięki korzystaniu z tunelowania uzyskujemy:
Wygodę użytkowania
Możliwość połącznia ukrytego pomiędzy 2 komputerami
Bezpieczeństwo połącznia
Szybką transmisje danych
Tunelowani polega zazwyczaj na przesyłani danych poprzez tunel z wykorzystaniem jednego protokołu, takiego jak np. POP3, MMTP lub HTTP.
Wirtualna sieć prywatna VPN umożliwia bezpieczny transfer protokołów.
Podczas transmisji danych kompresji można poddać całość transmisji lub ładunek użyteczny pakietów IP. Z kolei szyfrowanie umożliwia zabezpieczanie transmisji przed ingerencją osób niepożądanych. Szyfrowanie dzielimy na dwa typy symetryczne i asymetryczne.
Proces tunelowania składa się z etapów:
Kapsułkowanie (enkapsulacja): zamykanie oryginalnych danych w kapsułkę, zawierającą niezbędne informacje do wysłania.
Przesyłanie danych (tranzyt)
Dekapsułkowanie (dekapsulacja): otwarcie kapsułki i uwolnienie oryginalnego pakietu
Kombinacje obu technik stosuje standard SSH. Standardy i protokoły tunelowani to np. (SSL/TLS, SSH1/2, Open VPN IPsec)
Generalnie można stwierdzić, iż tunelowanie umożliwia przesyłanie pewnych usług sieciowych za pośrednictwem innych, często odmiennych, usług sieci pracujących dodatkowo w różnych standardach. Tunelowani służy również do zabezpieczania danych przez utworzenie wokół nich osłony przydatnej podczas przesyłania ich przez domeny pozbawione mechanizmów zapewniania bezpieczeństwa. Protokołem tunelowania zaprojektowanym specjalnie w celu realizacji tej funkcji jest protoków PPTP (point to point tuneling protocol).
Sprzęt i oprogramowanie:
Stacja skanująca:
Komputer PC w sali 402 budynek B5(AGH)
Procesor Intel Core2 Quad Q8200
Architektura x86_64(64b)
RAM 4GB
SO OpenSuSE 11.1 x86_64
Użytkownik root
Hasło 1
Do skanowania wykorzystalismy dwa komputery PC o identycznych parametrach, w celu przyspieszenia testów.
Oprogramowanie:
OpenSSH(Open Secure Shell)-zestaw programów komputerowych zapewniających komunikację w sieci komputerowej dzięki protokołowi SSH. OpenSSH opiera się o kod ostatniej wolnej wersji tego programu i od tego czasu rozwija sie niezależnie. Może pracować w wielu systemach uniksopodobnych, m.in. AIX, BSD, HP-UX, Linux, Mac OS X, Solaris. Aktualna wersja: 6.6.
Funkcjonalność:
->obsługa protokołów SSH w wersji 1.3, 1.5, 2.0
->różne algorytmy szyfrowania komunikacji(3DES, Blowfish, AES, Arcfour)
->przekierowanie portów oraz ruchu X Window System
->metody uwierzytelniania: interaktywna(nazwa użytkownika i hasło), klucz publiczny, hasło jednorazowe, Kerberos.
Schemat ćwiczenia:
Zalogowanie jako root na konsole graficzną lub tekstową.
Na pierwszym PC(StudentA) uruchamiamy serwer.
Dodatkowo uruchamiamy ksysguard(monitor wydajności) oraz terminal z poleceniem „top” na obu komputerach PC.
Pobranie 4 razy pliku z kopmutera PC(studentA) na komputer PC(studentB).
Na PC(studentB) zestawić połączenie z PC(studentA) według jednej z opcji:
Połączenie metodą szyfrowania 3DES bez kompersji oraz z kompersjami 1 i 9.
3DES –to algorytm szyfrowania symetrycznego polegający na trzykrotnym przetworzeniu wiadomości algorytmen DES(Data Encryption Standard):
1. Szyfrujemy pierwszym kluczem
2. Deszyfrujemy drugim kluczem
3. Szyfrujemy trzecim kluczem
3DES używa takich samych rozmiarów bloków oraz trybów jak zwykły DES. Siła 3DES-a wynosi 2112
Połączenie metodą szyfrowania Arcfour bez kompresji oraz z kompresjami 1 i 9.
Arcfour(zwany również RC4 lub ARC4) -jest popularnym szyfrem strumieniowym. Używany jest w protokołach takich jak SSL oraz WEP. Arcfour nie jest zalecany do używania w nowych systemach, poniweż uznawany jest za niezbyt bezpieczny kryptosystem. Arcfour generuje pseudolosowy strumień bitów(strumień szyfrujący). W celu zaszyfrowania wykonywana jest operacja XOR na tekście orginalnym i strumieniu szyfrującym. Analogicznie w celu odszyfrowania.
Połączenie metodą szyfrowania Cast bez kompresji oraz z kompresjami 1 i 9.
Cast(inaczej Cast5) –to algorytm szyfrowania symetrycznego stosowany w szczególności w niektórych wersjach GPG oraz PGP.
Rozmiar kluczy to od 40 do 128 bitów. Rozmiar bloku 64bity.
Wyniki:
W celu przeprowadzenia testów użyliśmy pliku binarnego o rozmiarze 293MB.
Dodatkowe informacje:
-IP studentA(serwer): 10.0.2.131
-nazwa przesyłanego pliku: damian
Plik przesyłamy ze studentA na studentB aby się nie powtarzać.
Obciążenie procesora liczymy poprzez rozłożenie go na wszystkie 4 rdzenie.
Np. jeśli obciążenie jednego rdzenia wyniosło 100% to obciązenie procesora wynosi 25%.
1.)Przesłanie(bezpośrednie) pliku.
Użyta komenda na StudentB:
wget http://10.0.2.131/damian -O - >/dev/null
Zrzut ekranu ze studentB obrazujący przesyłanie:
Niestety związku z tym iż czas przesyłu był bardzo szybki ok 2,6s nie udało nam się uchwycić odpowiedniego zrzutu z drugiego PC(studentA), a zamieszczanie nic nie wnoszącego zrzutu mija się z celem.
Z powyższego zrzutu wynika iż obciążenie jednego rdzenia procesora na studentB wyniosło ok 4%, więc jest to bardzo niskie obciążenie, praktycznie nic nie znaczące jeśli rozważymy pozostałe 3 rdzenie procesora które w ogóle nie były obciążone.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
2,6s | 112MB/s | „brak danych” | 1%(4%) |
2.)Przesłanie pliku, metoda szyfrująca 3DES bez kompresji.
Zrzut ekranu studentB:
Zrzut ekranu studentA.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c 3des –o „Compression no”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
22,5s | 12,5MB/s | 25%(100%) | 24,75%(99%) |
3.)Przesłanie pliku, metoda szyfrująca 3DES z kompresją X=1.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c 3des –C -o „Compressionlevel 1”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Zrzut ekranu studentB
Zrzut ekranu studentA
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
40 | 7,62MB/s | 25%(100%) | 16%(64%) |
4.)Przesłanie pliku, metoda szyfrująca 3DES z kompresją X=9.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c 3des –C -o „Compressionlevel 9”--ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
39s | 7,61MB/s | 24,75%(99%) | 14,75%(59%) |
Zrzut ekranu studentB
Zrzut ekranu studentA
Statystyczne podsumowanie przesyłania pliku z użyciem metody szyfrowania 3DES:
Metoda szyfrowania + kompresja | Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|---|
3DES kompresja: - | 22,5s | 12,5MB/s | 25%(100%) | 24,75%(99%) |
3DES kompresja: 1 | 40 | 7,62MB/s | 25%(100%) | 16%(64%) |
3DES kompresja: 9 | 39s | 7,61MB/s | 24,75%(99%) | 14,75%(59%) |
5.)Przesłanie pliku, metoda szyfrująca Arcfour bez kompresji.
Zrzut ekranu studentA
Zrzut ekranu studentB
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c arcfour -o „Compression no”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
3s | 98,55MB/s | 10,25%(41%) | „brak danych” |
6.)Przesłanie pliku, metoda szyfrująca arcfour z kompresją X=1.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c arcfour –C –o „Compressionlevel 1”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Zrzut ekranu studentA
Zrzut ekranu studentB
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
20s | 14,8MB/s | 25%(100%) | 4,75%(19%) |
7.)Przesłanie pliku, metoda szyfrująca arcfour z kompresją X=9.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c arcfour –C –o „Compressionlevel 9”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
20,5s | 14,5MB/s | 25%(100%) | 4,25%(17%) |
Zrzut ekranu studentA
Zrzut ekranu studentA
Statystyczne podsumowanie przesyłania pliku z użyciem metody szyfrowania arcfour:
Metoda szyfrowania + kompresja | Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|---|
arcfour kompresja: - | 3s | 98,55MB/s | 10,25%(41%) | „brak danych” |
arcfour kompresja: 1 | 20s | 14,8MB/s | 25%(100%) | 4,75%(19%) |
arcfour kompresja: 9 | 20,5s | 14,5MB/s | 25%(100%) | 4,25%(17%) |
8.)Przesłanie pliku, metoda szyfrująca cast bez kompresji.
Zrzut ekranu studentA
Zrzut ekranu studentB
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c cast128-cbc -o „Compression no”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
7,05s | 42,1MB/s | 24,75%(99%) | 23,25%(93%) |
9.)Przesłanie pliku, metoda szyfrująca cast z kompresją X=1.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c cast128-cbc –C –o „Compressionlevel 1”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Zrzut ekrau studentA
Zrzut ekranu studentB
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
24,5s | 11,69MB/s | 25%(100%) | 8,5%(34%) |
10.)Przesłanie pliku, metoda szyfrująca cast z kompresją X=9.
Użyte komendy na studentB:
ssh 10.0.2.131 –L 8888:localhost:80 –c cast128 -cbc –C –o „Compressionlevel 9”-ustawienie połączenia z PC(studentA).
wget http://localhost:8888/damian -O - >/dev/null -komenda rozpoczęcia przesyłania pliku.
Podsumowanie:
Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|
25s | 12,35MB/s | 25%(100%) | 8,25%(33%) |
Zrzut ekranu studentA
Zrzut ekranu studentB
Statystyczne podsumowanie przesyłania pliku z użyciem metody szyfrowania cast:
Metoda szyfrowania + kompresja | Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|---|
Cast kompresja: - | 7,05s | 42,1MB/s | 24,75%(99%) | 23,25%(93%) |
Cast kompresja: 1 | 24,5s | 11,69MB/s | 25%(100%) | 8,5%(34%) |
Cast kompresja: 9 | 25s | 12,35MB/s | 25%(100%) | 8,25%(33%) |
Podsumowanie wszystkich testów:
Metoda szyfrowania + kompresja | Średni czas przesyłu pliku | Prędkość przesyłu | Obciążenie procesora(studentA) | Obciążenie procesora(studentB) |
---|---|---|---|---|
„brak” | 2,6s | 112MB/s | „brak danych” szacujemy <5% |
1%(4%) |
3DES kompresja: - | 22,5s | 12,5MB/s | 25%(100%) | 24,75%(99%) |
3DES kompresja: 1 | 40 | 7,62MB/s | 25%(100%) | 16%(64%) |
3DES kompresja: 9 | 39s | 7,61MB/s | 24,75%(99%) | 14,75%(59%) |
arcfour kompresja: - | 3s | 98,55MB/s | 10,25%(41%) | „brak danych” szacujemy <5% |
arcfour kompresja: 1 | 20s | 14,8MB/s | 25%(100%) | 4,75%(19%) |
arcfour kompresja: 9 | 20,5s | 14,5MB/s | 25%(100%) | 4,25%(17%) |
Cast kompresja: - | 7,05s | 42,1MB/s | 24,75%(99%) | 23,25%(93%) |
Cast kompresja: 1 | 24,5s | 11,69MB/s | 25%(100%) | 8,5%(34%) |
Cast kompresja: 9 | 25s | 12,35MB/s | 25%(100%) | 8,25%(33%) |
Wnioski końcowe:
Wnioski do tego ćwiczenia nasuwają się same po przeczytaniu tabeli z opisem transmisji. Różnice pomiędzy użytymi protokołami kryptograficznymi, zarówno w czasie transmisji jak i w obciążeniu procesora są znaczące. Podczas przesyłu „czystego” uzyskujemy bardzo szybki transfer danych (w granicach 112 mb/s) oraz minimalne obciążenie procesora (kilka procent). Jest to najlepsza opcja do przesyłania plików gdy zależy nam na czasie, a ewentualny wyciek treści nie stanowi żadnego problemu.
Do końcowego porównania zostają nam teraz 3 protokoły kryptograficzne 3DES, arcfour i Cast. Spośród nich najlepsze wyniki uzyskał arcfour. Gwarantuje on bardzo dużą szybkość transmisji (około 100mb/s), i marginalne zużycie procesora gdy wysyłamy plik bez kompresji. Przy wysyłaniu pliku z kompresją szybkość transmisji spada do około 14 mb/s, a obciążenie procesora wzrasta do 20%. Jest to również najlepszy osiągnięty rezultat dla przesyłania plików z kompresją. Jak widać arcfour wypada zdecydowanie najlepiej w tym zestawieniu. Pozostałe dwa protokoły również spełniają swoje zadanie ale szybkość w jakim to robią (Cast dwukrotnie wolniej bez kompresji, 3DES dziewięciokrotnie) i obciążenie procesora (3DES 60-99%, Cast około 30%) sprawiają, że pozostają daleko w tyle za, najlepszym naszym zdaniem protokołem, którym jest arcfour.