Wielowarstwowość transmisji w sieciach komputerowych 1. Protokoły TCP/IP Sieci komputerowe funkcjonują w oparciu na wielowarstwowych modelach komunikacji. Jednym z ważniejszych jest czterowarstwowy system (stos protokołów) TCP/IP. W systemie tym wyróżnia się warstwy: dostępu do sieci 1 (ang. link layer), międzysieciową (ang. internetwork layer), transportową (ang. transport layer), zastosowań (ang. application layer). W każdej warstwie komunikacja między węzłami sieci odbywa się w oparciu na specyficznych dla danej warstwy protokołach komunikacyjnych (tab. 1) i z użyciem odrębnego sposobu adresowania węzłów (tab. 2). Warstwa Zastosowań Transportowa Międzysieciowa Tab. 1. Warstwy TCP/IP i wybrane protokoły komunikacyjne Wybrane protokoły komunikacyjne DHCP, BOOTP, DNS, SNMP, NTP, Telnet, SSH, SMTP, POP, IMAP, HTTP, FTP, NNTP, SIP, IAX, MGCP, RTP, RTCP TCP, UDP (SSL/TLS) IP, ICMP, IPSec, ARP, RARP Dostępu do sieci Ethernet, ATM, IEEE 802.11, IEEE 802.16 Tab. 2. Warstwy TCP/IP i sposoby adresowania Warstwa Zastosowań Transportowa Międzysieciowa Dostępu do sieci Sposób adresowania węzłów Nazwy domenowe DNS, identyfikatory zasobów URI Numery portów Adresy logiczne IP Adresy fizyczne (sprzętowe) MAC Za wykonywanie zadań poszczególnych warstw odpowiedzialne są różne elementy i moduły sieciowe o charakterze sprzętowym i programowym (tab. 3). Tab. 3. Elementy sieci odpowiedzialne za zadania poszczególnych warstw TCP/IP Warstwa Zastosowań Transportowa Element sieci realizujący zadania danej warstwy Aplikacja związana z określonym protokołem (np. przeglądarka WWW, agent poczty elektronicznej) System operacyjny lub karta sieciowa typu TOE (TCP/IP Offload Engine) Międzysieciowa System operacyjny, ruter lub karta sieciowa typu TOE 2 Dostępu do sieci Karta sieciowa, przełącznik, punkt dostępowy sieci bezprzewodowej 1 Warstwa ta nazywana jest także warstwą łącza danych. 2 W kartach sieciowych typu TOE mikroprocesor sterujący pełni, oprócz zwykłych, funkcje dodatkowe. Przejmuje od procesora centralnego i systemu operacyjnego część funkcji wyższych warstw. W szczególności są to funkcje związane z protokołami TCP i IP, w tym wyznaczanie wartości sum kontrolnych, wysyłanie potwierdzeń. Dzięki temu obciążenie procesora centralnego jest mniejsze, a przepustowość interfejsu sieciowego większa. Funkcje związane z obsługą kart sieciowych wspomagających realizację protokołów TCP i IP są dostępne, między innymi, w systemie operacyjnym MS Windows Vista. 1
1.2. Jednostki transmisyjne Specyfikacje protokołów komunikacyjnych w poszczególnych warstwach określają budowę komunikatów (bloków/jednostek transmisyjnych). Typowa jednostka transmisyjna PDU (Protocol Data Unit) składa się z nagłówka i pola danych (tab. 4). Tab. 4. Warstwy TCP/IP i jednostki transmisyjne Warstwa Zastosowań Transportowa Międzysieciowa Dostępu do sieci Jednostka transmisyjna Komunikat (żądanie, odpowiedź) Segment, datagram Pakiet Ramka W systemie wielowarstwowym jednostka transmisyjna danej warstwy jest umieszczona (zagnieżdżona) w polu danych jednostki transmisyjnej warstwy niższej (rys. 1). Należy zwrócić uwagę, iż wielkości jednostek transmisyjnych w różnych warstwach zwykle nie są do siebie dopasowane i do transmisji jednego komunikatu warstwy wyższej może być potrzebnych kilka jednostek warstwy niższej mówimy w takim wypadku o fragmentacji. Na przykład pojedynczy komunikat HTTP zwykle jest przesyłany przy użyciu wielu segmentów TCP. Możliwa jest też sytuacja odwrotna. Na przykład w protokole warstwy zastosowań RTCP przewiduje się grupowanie wielu komunikatów i wysyłanie takiej grupy za pomocą pojedynczego segmentu warstwy transportowej ma to na celu zmniejszenie obciążenia sieci. Nagłówek Ethernetu Nagłówek IP Nagłówek TCP Nagłówek HTTP Plik w j. HTML Komunikat HTTP Segment TCP Pakiet IP Ramka Ethernet Suma kontrolna Rys. 1. Przykładowe zagnieżdżenie komunikatu HTTP w blokach danych protokołów niższych warstw TCP/IP Maksymalna wielkość pojedynczego bloku danych MTU (Maximum Transmision Unit), jaki może być przesłany w danej sieci jest istotnym parametrem wpływającym na wydajność transmisji. Informację o tym, jaka jest wartość MTU dla danej sieci komputery tej sieci otrzymują od serwera DHCP w procesie konfigurowania. Po stronie nadawczej poszczególne jednostki są generowane i przetwarzane począwszy od warstwy najwyższej skończywszy na warstwie najniższej. Po stronie odbiorczej przetwarzanie odbywa się w kolejności odwrotnej. 1.3. Identyfikacja protokołów warstwy zastosowań Jednostka transmisji danej warstwy ma w nagłówku informację o tym, jaki konkretny protokół jest stosowany w warstwie wyższej. W nagłówku ramki Ethernet znajduje się 16-bitowe pole zawierające identyfikator protokołu warstwy międzysieciowej 3. Przykładowo wartość 0800 16 tego pola oznacza 3 Lista takich identyfikatorów jest dostępna pod adresem http://standards.ieee.org/regauth/ethertype/eth.txt. 2
protokół IP w wersji 4, a 86DD 16 IPv6. Z kolei w nagłówku pakietu IP znajduje się 8-bitowe pole identyfikujące protokół warstwy transportowej 4. Przykładowo wartość 6 tego pola oznacza, że w warstwie transportowej używany jest protokół TCP, a 17 UDP. W nagłówkach protokołów komunikacyjnych warstwy transportowej (TCP i UDP) przesyłane są numery portów źródłowego i docelowego. Porty identyfikują aplikacje (protokoły warstwy zastosowań), które są nadawcami i odbiorcami segmentów TCP lub UDP. Numer portu jest 16-bitową liczbą z przedziału od 0 do 65 535. Podczas wykonywania konkretnej usługi sieciowej w najprostszym przypadku używa się jednego portu w każdym z węzłów biorących udział w transmisji. W niektórych usługach korzysta się z większej liczby portów. Wiąże się to z jednoczesnym użyciem kilku protokołów warstwy zastosowań lub rozdzieleniem strumieni danych od strumieni sterujących. Przykładowo, usługa zdalnego dostępu (telnet) jest realizowana z użyciem jednego portu, transmisja plików zgodnie z FTP dwóch portów, a telefonia IP do kilku portów. W protokole transmisji plików tworzy się oddzielne połączenia dla strumienia danych i strumienia sterującego. W niektórych systemach telefonii IP korzysta się z wielu protokołów wykonujących odrębne zadania, w tym: sygnalizacja (np. protokół SIP), transmisja w czasie rzeczywistym (protokół RTP), nadzorowanie transmisji w czasie rzeczywistym (protokół RTCP) 5. Wśród portów komunikacyjnych warstwy transportowej wyróżnia się 3 podstawowe kategorie: porty zdefiniowane, tzw. dobrze znane (ang. well known), o numerach 0 1023, porty zarejestrowane, o numerach 1024 49151, porty prywatne, o numerach 49152 65535. W większości przypadków numer portu, używanego do realizacji danej usługi jest przydzielany w sposób statyczny (tab. 1.5). Numer portu używanego przez dany protokół może być także ustalany w sposób dynamiczny, w procesie nawiązywania połączenia. W systemach telefonii IP numery portów używanych przez protokoły RTP i RTCP do transmisji mowy w czasie rzeczywistym nie są z góry znane. Są one ustalane dopiero w trakcie nawiązywania połączenia, za pomocą protokołów sygnalizacyjnych takich jak SIP. Ponadto istnieją aplikacje, w których port jest przydzielany metodą pseudolosową. Przykładem jest system zarządzania urządzeniami sieciowymi firmy Cisco. Należy zwrócić uwagę, że numery portów, przypisane do protokołów warstwy zastosowań są używane także przez stanowiące zagrożenie konie trojańskie 6. Fakt ten utrudnia konfigurowanie filtrów pakietów w zaporach sieciowych (ang. firewall). Ponadto zawartość nagłówków pakietów może być fałszowana i nie zawsze odzwierciedla rzeczywiste źródło pochodzenia pakietu. Oprócz swojej podstawowej funkcji, jaką jest identyfikacja aplikacji (protokołu warstwy zastosowań) numery portów pełnią także funkcje związane z translacją adresów NAT (Network Address Translation). Dokonywanie translacji adresów jest utrudnione przy realizacji takich usług sieciowych, w których numery portów nie są z góry znane. Jest tak na przykład w protokołach RTP i RTCP używanych w systemach telefonii IP. 4 Identyfikatorami tymi zarządza IANA http://www.iana.org. 5 Wyjątkiem jest protokół IAX, służący jednocześnie do sygnalizacji i transmisji mowy. 6 http://www.simovits.com/nyheter9902.html 3
Tab. 5. Wybrane numery portów zdefiniowanych i zarejestrowanych, używanych przez protokoły komunikacyjne warstwy zastosowań 7 Numer portu Protokół warstwy zastosowań 20 FTP (kanał danych) 21 FTP (kanał sterujący) 22 SSH 23 Telnet 25 SMTP 53 DNS 67 DHCP (port docelowy) 68 DHCP (port źródłowy) 69 TFTP 80 HTTP 110 POP 119 NNTP 123 NTP 143 IMAP 161 SNMP 443 HTTPS 546 DHCPv6 547 DHCPv6 2944 Megaco (komunikaty w formie tekstowej) 2945 Megaco (komunikaty w formie binarnej) 4569 IAX 5060 SIP 5061 SIPS 7 http://www.iana.org/assignments/port-numbers 4
2. Ogólna charakterystyka protokołów warstwy zastosowań 2.1. Klasyfikacja Wśród protokołów warstwy zastosowań można wyodrębnić dwie podstawowe grupy: protokoły związane z konfigurowaniem i zarządzaniem, protokoły związane z usługami użytkowymi. Do pierwszej grupy należą, między innymi, protokoły: BOOTP, DHCP, NTP, SNMP, DNS. Do powszechnie używanych protokołów drugiej grupy można zaliczyć: FTP, SMTP, POP, IMAP, HTTP, SIP, MGCP, IAX, RTP, RTCP (tab. 6). Tab. 6. Wybrane protokoły warstwy zastosowań i ich zastosowania Protokół komunikacyjny BOOTP DHCP DNS FTP HTTP IAX IMAP Megaco MGCP NTP POP RTCP RTP SIP SMTP SNTP SNMP Telnet TFTP Zastosowania Konfiguracja komputera w sieci Konfiguracja komputera w sieci System nazw domenowych Transmisja plików, operacje na katalogach Transmisja w systemie WWW Sygnalizacja i transmisja w czasie rzeczywistym Odbiór listów elektronicznych Sterowanie bramką w telefonii IP Sterowanie bramką w telefonii IP Synchronizacja zegarów Odbiór listów elektronicznych Sterowanie transmisją w czasie rzeczywistym Transmisja w czasie rzeczywistym Sygnalizacja w telefonii IP Wysyłanie listów elektronicznych Uproszczona wersja NTP Zarządzanie sieciami Zdalny dostęp do zasobów Uproszczona wersja FTP Wymienione wyżej protokoły mają pewne cechy wspólne. Są one oparte na prostym modelu komunikacji dwóch węzłów typu klient/serwer. Proces transmisji odbywa się z użyciem jednego lub wielu portów komunikacyjnych warstwy transportowej. Przesyłany komunikat ma postać tekstową (np. SMTP, HTTP, FTP, NNTP, SIP, MGCP) lub binarną (np. DHCP, NTP, DNS, H.323, IAX). Komunikat tekstowy składa się z dwóch podstawowych części: nagłówka i opcjonalnego pola danych. Nagłówek komunikatu zbudowany jest z pewnej liczby wierszy tekstu w kodzie ASCII, z których każdy zawiera nazwę i wartość parametru. O tym, jakie parametry i z jakimi wartościami mogą pojawić się w nagłówku decyduje specyfikacja odpowiedniego protokołu komunikacyjnego. W komunikatach o postaci binarnej wartości parametrów podawane są jako ciągi bitów. Komunikaty binarne mają wielokrotnie mniejszą długość od komunikatów tekstowych o podobnych funkcjach. Przykładowo, komunikat binarny new służący do nawiązywania połączenia w protokole 5
IAX zawiera kilkadziesiąt bajtów, a odpowiadający mu komunikat tekstowy INVITE w protokole SIP zawiera kilkaset bajtów. Istnieją także protokoły, w których postać komunikatu jest opcjonalnie wybierana. Na przykład w protokole Megaco komunikat może mieć postać tekstową lub binarną. Do komunikacji zarezerwowane są dwa porty, jeden dla komunikatów tekstowych, drugi binarnych. Protokoły warstwy zastosowań są stosowane zarówno w skali globalnej (Internet), jak i w skali pojedynczej instytucji czy przedsiębiorstwa (intranet). 2.2. Standaryzacja Tworzeniem protokołów transmisji danych w tym protokołów warstwy zastosowań zajmuje się wiele instytucji i organizacji standaryzacyjnych. Do ważniejszych należy IETF (Internet Engineering Task Force). Jednym z zadań IETF jest publikowanie raportów technicznych nazywanych RFC (Request For Comments) 8. IETF współpracuje z innymi organizacjami standaryzacyjnymi, między innymi z Międzynarodową Unią Telekomunikacyjną ITU (International Telecommunication Union). Przykładem takiej współpracy jest protokół telefonii IP Megaco/H.248, który został opracowany wspólnie przez IETF i ITU-T. Większość stosowanych protokołów ma specyfikacje opracowane przez organizacje standaryzacyjne. Niemniej należy zwrócić uwagę, iż brak formalnych standardów nie zawsze stanowi ograniczenie. Niekiedy funkcjonalność danego protokołu oraz dostępność implementacji i kodów źródłowych powodują, że protokół jest powszechnie stosowany mimo braku oficjalnego standardu. Przykładem jest protokół telefonii IP o nazwie IAX. 2.3. Bezpieczeństwo transmisji Jednym z ważniejszych aspektów funkcjonowania sieci komputerowych jest bezpieczeństwo transmisji. Podstawowe protokoły komunikacyjne, w tym TCP i IP, były projektowane wiele lat temu. Zakładano wtedy, że z sieci będą korzystali wyłącznie użytkownicy mający do siebie zaufanie i niestanowiący dla sieci i jej zasobów zagrożenia. W związku z tym znaczna część protokołów tworzących obecnie fundament Internetu nie jest przystosowana do ochrony danych (tab. 7). Wszystkie usługi sieciowe są wykonywane z użyciem protokołów IP i TCP lub UDP. Standardowy protokół warstwy międzysieciowej IPv4 nie gwarantuje bezpieczeństwa transmisji. Pakiet IP może zaginąć w czasie transmisji i nie ma pewności, że zostanie on dostarczony do adresata. Jeżeli w czasie transmisji dojdzie do przypadkowego lub celowego naruszenia integralności pakietu i adresat otrzyma pakiet sfałszowany lub z błędami, to nie ma on możliwości wykrycia, a tym bardziej skorygowania tych błędów pole sumy kontrolnej w pakiecie IP służy wyłącznie do sprawdzenia poprawności transmisji nagłówka pakietu. Jeżeli nadawca sfałszuje adres źródłowy w nagłówku pakietu, to odbiorca nie ma możliwości wykrycia takiego fałszerstwa. Fałszowanie adresów źródłowych jest często używaną metodą ukrywania tożsamości osób przeprowadzających ataki na systemy informatyczne. Podobnie ograniczone są możliwości zagwarantowania bezpieczeństwa w protokołach warstwy transportowej TCP i UDP. Rozwiązaniem problemów bezpieczeństwa w warstwie międzysieciowej i transportowej są swego rodzaju rozszerzenia, nakładki implementujące mechanizmy bezpieczeństwa. Dla warstwy międzysieciowej takim rozszerzeniem IPv4 jest IPSec. Dla warstwy transportowej opracowany został protokół SSL (Secure Socket Layer). Oba rozszerzenia spełniają podobne funkcje, należą do nich: uwierzytelnianie podmiotów biorących udział w transmisji, szyfrowanie transmitowanych danych oraz kontrolowanie integralności transmisji. W praktyce częściej używany jest protokół SSL. Bezpieczeństwo transmitowanych danych osiąga się za pomocą technik kryptograficznych: szyfrowania symetrycznego i asymetrycznego, jednokierunkowych funkcji skrótu, certyfikatów oraz podpisów cyfrowych. Szyfrowanie może się odbywać w różnych warstwach systemu, a więc szyfrowaniu mogą podlegać różne jednostki transmisji: pakiety IP, segmenty TCP, komunikaty 8 Raporty te są dostępne w Internecie na wielu serwerach, między innymi http:\\www.ietf.org\rfc 6
warstwy zastosowań. Implementacje algorytmów kryptograficznych mogą być zintegrowane z ruterami, zaporami sieciowymi, systemami operacyjnymi oraz aplikacjami. IPSec Poziom bezpieczeństwa w warstwie międzysieciowej można podnieść używając rozszerzenia protokołu IPv4 znanego jako IPSec. Rozszerzenie to zostało opracowane przez IETF i opiera się na podstawowych technikach kryptograficznych takich jak szyfrowanie, uwierzytelnianie i podpisy cyfrowe. Do szyfrowania użyć można opcjonalnie jednego z kilku standardowych algorytmów, na przykład: DES, 3DES, AES, Blowfish. Podobnie podpis cyfrowy może być generowany z użyciem takich funkcji skrótu jak MD5 czy SHA-1. Zabezpieczenia te chronią przed podsłuchem transmisji pakietów IP, oraz umożliwiają wykrywanie sfałszowanych pakietów, w tym sfałszowanych adresów źródłowych. Dane mogą być transmitowane w dwóch podstawowych trybach: transportowym i tunelowym. W pierwszym przypadku szyfrowane są tylko dane, w drugim szyfrowany jest cały pakiet IP i umieszczany w polu danych użytkowych innego pakietu. SSL Podobne funkcje jak IPSec w warstwie transportowej pełni SSL. W przypadku użycia protokołu SSL pewnej zmianie ulega proces nawiązywania połączenia między dwoma węzłami sieci. Oprócz charakterystycznych dla TCP informacji przesyłane są parametry niezbędne do utworzenia bezpiecznego, szyfrowanego połączenia: numer stosowanej wersji protokołu, liczba pseudolosowa, numer identyfikacyjny sesji, lista zaimplementowanych algorytmów kryptograficznych, lista zaimplementowanych algorytmów kompresji. Dochodzi także do ustalenia kluczy kryptograficznych. Opcjonalnie mogą być przesyłane certyfikaty uwierzytelniające. W oparciu na protokole SSL w wersji 3.0 utworzony został standard TLS. Do głównych modyfikacji należą: zastosowanie funkcji skrótu HMAC, w której korzysta się z algorytmów MD5 i SHA-1 oraz innego zbioru algorytmów szyfrujących. Ponieważ SSL jest protokołem działającym poniżej warstwy zastosowań, za jego pomocą można zagwarantować bezpieczeństwo różnych usług sieciowych. Ochrona w warstwie zastosowań Niezależnie od możliwości, jakie daje SSL protokoły warstwy zastosowań również mogą być rozszerzane o funkcje bezpieczeństwa. Istnieją tutaj dwa kierunki rozwoju. Pierwszy polega na opracowywaniu nowych wersji poszczególnych protokołów. W tych nowych wersjach są integrowane mechanizmy bezpieczeństwa. Przykładem jest SNMP, jego pierwsza wersja elementów bezpieczeństwa nie zawierała, wersje druga i trzecia już takie zabezpieczenia mają. Drugi kierunek rozwoju polega na tworzeniu nakładek uzupełniających funkcje protokołów. Przykładem jest SMTP. Protokół ten nie gwarantuje ochrony. Bezpieczeństwo poczty elektronicznej osiąga się stosując takie techniki uzupełniające funkcjonalność SMTP jak PGP (Pretty Good Privacy) lub SMIME (Secure Multipurpose Internet Mail Extensions) (tab. 7). Należy zwrócić uwagę, iż samo istnienie bezpiecznych rozszerzeń protokołów warstwy zastosowań nie oznacza, iż są one dostępne we wszystkich implementacjach. 7
Usługa sieciowa Poczta elektroniczna Tab. 7. Funkcje bezpieczeństwa w wybranych usługach sieciowych Protokoły bez zabezpieczeń SMTP Protokoły z funkcjami bezpieczeństwa SMTP+SMIME SMTP+PGP Zdalny dostęp Telnet SSH Transmisja plików FTP SFTP, EFTP Zarządzanie sieciami SNMP v1 SNMPv2, SNMPv3 WWW HTTP v1.0 SHTTP, HTTPS Odwzorowywanie nazw domenowych na adresy IP Transmisja w czasie rzeczywistym DNS RTP, RTCP DNSSEC SRTP, SRTCP 8