Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00083 003968 12916417 na godz. na dobę w sumie
Sieci komputerowe. Ujęcie całościowe. Wydanie V - książka
Sieci komputerowe. Ujęcie całościowe. Wydanie V - książka
Autor: , Liczba stron: 968
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-2632-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> sieci komputerowe >> inne
Porównaj ceny (książka, ebook, audiobook).

Zdobądź najlepszą aktualną wiedzę na temat sieci komputerowych

Istnieje wiele książek na temat sieci komputerowych, jednak podręcznik, który trzymasz w rękach, wyraźnie wyróżnia się na ich tle. Dzieje się tak z powodu niebanalnej konstrukcji tej publikacji, opierającej się na metodzie omawiania zagadnień 'od góry do dołu', od ogółu do szczegółu, a więc prezentowania jako pierwszej warstwy aplikacji, a następnie kolejnych, niższych warstw - aż do warstwy fizycznej. W ten sposób zwraca się szczególną uwagę na tę warstwę, która rozwija się najszybciej i jest najbardziej interesującym elementem sieci.

Z książki 'Sieci komputerowe. Ujęcie całościowe. Wydanie V' dowiesz się wszystkiego na temat programowania aplikacji, protokołów wyższych warstw oraz aktualnych zabezpieczeń sieciowych. Oprócz rzetelnie przedstawionej podstawowej wiedzy znajdziesz tu znacznie bardziej szczegółowe informacje o sieciach P2P opartych na protokole BitTorrent, dodatkowe materiały na temat sieci DHT, zaktualizowane omówienie sieci dostępowych (między innymi kablowych, FTTH i DSL), a także informacje dotyczące historii sieci komputerowych i Internetu. Korzystając z tego podręcznika, z łatwością zaprojektujesz własną, świetnie funkcjonującą aplikację sieciową.

Wszystko, co chciałbyś wiedzieć o aplikacjach sieciowych, protokołach i Internecie

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Sieci komputerowe. Ujêcie ca³oœciowe. Wydanie V Autorzy: James F. Kurose, Keith W. Ross T³umaczenie: Tomasz Walczak ISBN: 978-83-246-2632-8 Tytu³ orygina³u: Computer Networking: A Top-Down Approach (5th Edition) Format: 172245, stron: 968 Zdob¹dŸ najlepsz¹ aktualn¹ wiedzê na temat sieci komputerowych • Jak dzia³aj¹ aplikacje sieciowe i protoko³y? • Na czym polega warstwowoœæ architektury sieciowej? • W jaki sposób zbudowaæ doskonale funkcjonuj¹c¹ i bezpieczn¹ aplikacjê? Istnieje wiele ksi¹¿ek na temat sieci komputerowych, jednak podrêcznik, który trzymasz w rêkach, wyraŸnie wyró¿nia siê na ich tle. Dzieje siê tak z powodu niebanalnej konstrukcji tej publikacji, opieraj¹cej siê na metodzie omawiania zagadnieñ „od góry do do³u”, od ogó³u do szczegó³u, a wiêc prezentowania jako pierwszej warstwy aplikacji, a nastêpnie kolejnych, ni¿szych warstw – a¿ do warstwy fizycznej. W ten sposób zwraca siê szczególn¹ uwagê na tê warstwê, która rozwija siê najszybciej i jest najbardziej interesuj¹cym elementem sieci. Z ksi¹¿ki „Sieci komputerowe. Ujêcie ca³oœciowe. Wydanie V” dowiesz siê wszystkiego na temat programowania aplikacji, protoko³ów wy¿szych warstw oraz aktualnych zabezpieczeñ sieciowych. Oprócz rzetelnie przedstawionej podstawowej wiedzy znajdziesz tu znacznie bardziej szczegó³owe informacje o sieciach P2P opartych na protokole BitTorrent, dodatkowe materia³y na temat sieci DHT, zaktualizowane omówienie sieci dostêpowych (miêdzy innymi kablowych, FTTH i DSL), a tak¿e informacje dotycz¹ce historii sieci komputerowych i Internetu. Korzystaj¹c z tego podrêcznika, z ³atwoœci¹ zaprojektujesz w³asn¹, œwietnie funkcjonuj¹c¹ aplikacjê sieciow¹. • Sieci dostêpowe i noœniki fizyczne • Architektura aplikacji sieciowych • Warstwy: aplikacji, transportowa, sieci, ³¹cza danych i fizyczna • Przepustowoœæ w sieciach komputerowych • Programy klienta i serwera • Technologia WWW i protokó³ http • Sieci bezprzewodowe i mobilne • Multimedia • Aplikacje z obszaru P2P • Bezpieczeñstwo w sieciach komputerowych • Zarz¹dzanie sieciami Wszystko, co chcia³byœ wiedzieæ o aplikacjach sieciowych, protoko³ach i Internecie Spis treści 5 Spis treści O autorach Przedmowa Rozdział 1. Sieci komputerowe i internet 1.1. Czym jest internet? 1.1.1. Opis podstawowych komponentów 1.1.2. Omówienie usług 1.1.3. Czym jest protokół? 1.2. Obrzeże sieci 1.2.1. Programy klienta i serwera 1.2.2. Sieci dostępowe 1.2.3. Fizyczny nośnik 1.3. Rdzeń sieci 1.3.1. Przełączanie obwodów i pakietów 1.3.2. W jaki sposób poruszają się pakiety w sieciach z przełączaniem pakietów? 1.3.3. Dostawcy ISP i sieci szkieletowe internetu 1.4. Opóźnienie i utrata pakietów w sieciach z przełączaniem pakietów 1.4.1. Omówienie opóźnień w sieciach z przełączaniem pakietów 1.4.2. Opóźnienie kolejkowania i utrata pakietów 1.4.3. Opóźnienie międzywęzłowe 1.4.4. Przepustowość w sieciach komputerowych 1.5. Warstwy protokołów i modele ich usług 1.5.1. Architektura warstwowa 1.5.2. Komunikaty, segmenty, datagramy i ramki 1.6. Sieci pod atakiem 1.7. Historia sieci komputerowych i internetu 1.7.1. Rozwój technologii przełączania pakietów: 1961 – 1972 1.7.2. Sieci zastrzeżone i łączenie sieci: 1972 – 1980 1.7.3. Popularyzacja sieci: 1980 – 1990 1.7.4. Eksplozja internetu: lata 90. 1.7.5. Ostatnie dokonania 1.8. Podsumowanie Struktura książki 15 17 27 28 28 32 33 36 38 39 49 53 54 61 63 65 66 70 73 75 78 79 85 87 93 93 94 96 98 99 100 101 5 6 Spis treści Problemy do rozwiązania i pytania Problemy Dodatkowe pytania Ćwiczenie realizowane za pomocą narzędzia Wireshark WYWIAD Z…: Leonard Kleinrock Rozdział 2. Warstwa aplikacji 2.1. Podstawy dotyczące aplikacji sieciowych 2.1.1. Architektury aplikacji sieciowych 2.1.2. Komunikacja procesów 2.1.3. Usługi transportowe dostępne aplikacjom 2.1.4. Usługi transportowe dostępne w internecie 2.1.5. Protokoły warstwy aplikacji 2.1.6. Aplikacje sieciowe uwzględnione w książce 2.2. Technologia WWW i protokół HTTP 2.2.1. Omówienie protokołu HTTP 2.2.2. Połączenia nietrwałe i trwałe 2.2.3. Format komunikatu HTTP 2.2.4. Interakcja między użytkownikiem i serwerem — pliki cookies 2.2.5. Buforowanie stron internetowych 2.2.6. Warunkowe żądanie GET 2.3. Transfer plików przy użyciu protokołu FTP 2.3.1. Polecenia i odpowiedzi protokołu FTP 2.4. Internetowa poczta elektroniczna 2.4.1. Protokół SMTP 2.4.2. Porównanie protokołów SMTP i HTTP 2.4.3. Formaty wiadomości pocztowych 2.4.4. Protokoły dostępu do skrzynki pocztowej 2.5. System DNS, czyli internetowa usługa katalogowa 2.5.1. Usługi oferowane przez system DNS 2.5.2. Przegląd zasad działania systemu DNS 2.5.3. Rekordy i komunikaty systemu DNS 2.6. Aplikacje z obszaru P2P 2.6.1. Dystrybucja plików w sieciach P2P 2.6.2. Sieci DHT 2.6.3. Studium przypadku — Skype, czyli telefonia internetowa oparta na sieci P2P 2.7. Programowanie gniazd protokołu TCP 2.7.1. Programowanie gniazd protokołu TCP 2.7.2. Przykład aplikacji klient-serwer napisanej w języku Java 102 105 114 115 117 121 122 123 126 129 131 136 137 138 138 141 144 149 151 155 158 159 160 163 167 167 168 173 174 176 183 189 190 196 201 203 205 207 2.8. Programowanie gniazd protokołu UDP 2.9. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatkowe pytania Zadania związane z programowaniem gniazd Zadanie 1: Wielowątkowy serwer WWW Zadanie 2: Klient pocztowy Zadanie 3: Aplikacja Ping używająca protokołu UDP Zadanie 4: Serwer pośredniczący WWW Ćwiczenia wykorzystujące narzędzie Wireshark Ćwiczenie 1: Protokół HTTP Ćwiczenie 2: Protokół DNS WYWIAD Z…: Bram Cohen Rozdział 3. Warstwa transportowa 3.1. Podstawowe informacje na temat usług warstwy transportowej 3.1.1. Związek występujący między warstwami transportową i sieci 3.1.2. Przegląd zastosowania warstwy transportowej Spis treści 7 214 221 222 225 234 235 235 235 236 236 237 237 237 238 241 242 244 3.4. Podstawy dotyczące niezawodnego transferu danych 3.2. Multipleksowanie i demultipleksowanie 3.3. Bezpołączeniowy protokół transportowy UDP w internecie 3.3.1. Struktura segmentu UDP 3.3.2. Suma kontrolna segmentu UDP 246 248 255 260 260 262 3.4.1. Tworzenie protokołu niezawodnego transferu danych 264 3.4.2. Potokowane protokoły niezawodnego transferu danych 274 278 3.4.3. Go-Back-N 3.4.4. Powtarzanie selektywne 283 290 290 294 299 303 311 314 321 322 329 3.5.1. Połączenie TCP 3.5.2. Struktura segmentu TCP 3.5.3. Wyznaczanie czasu RTT i czas oczekiwania 3.5.4. Niezawodny transfer danych 3.5.5. Kontrola przepływu 3.5.6. Zarządzanie połączeniem TCP 3.6.1. Przyczyny przeciążenia i jego konsekwencje 3.6.2. Metody kontroli przeciążenia 3.5. Protokół transportowy TCP zorientowany na połączenie 3.6. Podstawy dotyczące kontroli przeciążenia 8 Spis treści 3.6.3. Przykład kontroli przeciążenia wspieranej przez warstwę sieci — kontrola przeciążenia protokołu ABR architektury ATM 3.7. Kontrola przeciążenia w przypadku protokołu TCP 3.7.1. Sprawiedliwy przydział przepustowości 3.8. Podsumowanie Problemy do rozwiązania i pytania Problemy Pytania dodatkowe Zadania związane z programowaniem Zastosowanie niezawodnego protokołu transportowego Ćwiczenie wykorzystujące narzędzie Wireshark — poznawanie protokołu TCP Ćwiczenie wykorzystujące narzędzie Wireshark — poznawanie protokołu UDP WYWIAD Z…: Sally Floyd Rozdział 4. Warstwa sieci 4.1. Wprowadzenie 330 333 343 347 350 353 366 367 367 367 368 369 435 437 440 445 455 4.3. Co znajduje się wewnątrz routera? 4.2. Sieci datagramowe i wirtualnych obwodów 4.1.1. Przekazywanie i routing 4.1.2. Modele usług sieciowych 373 374 376 379 381 382 4.2.1. Sieci wirtualnych obwodów 4.2.2. Sieci datagramowe 386 4.2.3. Początki sieci datagramowych i wirtualnych obwodów 388 389 391 394 396 397 400 402 409 424 428 4.4.1. Format datagramu 4.4.2. Funkcja adresowania protokołu IPv4 4.4.3. Protokół ICMP 4.4.4. Protokół IPv6 4.4.5. Krótki przegląd zagadnień związanych 4.3.1. Porty wejściowe 4.3.2. Struktura przełączająca 4.3.3. Porty wyjściowe 4.3.4. Gdzie ma miejsce kolejkowanie? z bezpieczeństwem w protokole IP 4.4. Protokół IP — przekazywanie i adresowanie w internecie 4.5. Algorytmy routingu 4.5.1. Algorytm routingu stanu łącza 4.5.2. Algorytm wektora odległości 4.5.3. Routing hierarchiczny 4.6. Routing w internecie 4.6.1. Wewnętrzny protokół routingu systemu autonomicznego — protokół RIP 4.6.2. Wewnętrzny protokół routingu systemu autonomicznego — protokół OSPF 4.6.3. Zewnętrzny protokół routingu systemu autonomicznego — protokół BGP 4.7. Routing rozgłaszania i rozsyłania grupowego 4.7.1. Algorytmy routingu rozgłaszania 4.7.2. Rozsyłanie grupowe 4.8. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatkowe pytania Zadania programistyczne WYWIAD Z…: Vinton G. Cerf Rozdział 5. Warstwa łącza danych i sieci lokalne 5.1. Warstwa łącza danych — wprowadzenie i usługi 5.1.1. Usługi świadczone przez warstwę łącza danych 5.1.2. Gdzie zaimplementowana jest warstwa łącza danych? Spis treści 9 460 461 465 468 477 477 484 492 493 496 509 509 511 513 515 515 518 520 522 524 525 528 530 532 540 542 543 543 545 550 552 556 560 562 563 565 566 567 570 5.2. Metody wykrywania i usuwania błędów 5.2.1. Kontrola parzystości 5.2.2. Suma kontrolna 5.2.3. Kontrola nadmiarowości cyklicznej 5.3. Protokoły wielodostępu 5.3.1. Protokoły dzielące kanał 5.3.2. Protokoły dostępu losowego 5.3.3. Protokoły cykliczne 5.3.4. Sieci lokalne 5.4. Adresowanie na poziomie warstwy łącza danych 5.4.1. Adresy MAC 5.4.2. Protokół ARP 5.5. Ethernet 5.5.1. Struktura ramki technologii Ethernet 5.5.2. CSMA/CD — ethernetowy protokół wielodostępu 5.5.3. Odmiany technologii Ethernet 5.6. Przełączniki warstwy łącza danych 5.6.1. Funkcje przekazywania i filtrowania 5.6.2. Automatyczne uczenie 5.6.3. Cechy przełączania w warstwie łącza danych 5.6.4. Porównanie przełączników i routerów 5.6.5. Wirtualne sieci lokalne (VLAN) 10 Spis treści 5.7. Protokół PPP 5.7.1. Ramka danych protokołu PPP 5.8. Wirtualizacja łącza — sieć jako warstwa łącza danych 5.9. Dzień z życia żądania strony internetowej 5.10. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatkowe pytania WYWIAD Z…: Simon S. Lam Rozdział 6. Sieci bezprzewodowe i mobilne 6.1. Wprowadzenie 6.2. Cechy łączy i sieci bezprzewodowych 6.2.1. CDMA 6.3. Wi-Fi: bezprzewodowe sieci lokalne 802.11 6.3.1. Architektura sieci 802.11 6.3.2. Protokół kontroli dostępu do nośnika 802.11 6.3.3. Ramka IEEE 802.11 6.3.4. Mobilność w tej samej podsieci IP 6.3.5. Zaawansowane funkcje protokołu 802.11 6.3.6. Poza standard 802.11 — Bluetooth i WiMAX 6.4. Komórkowy dostęp do internetu 6.4.1. Omówienie architektury komórkowej 6.5. Zasady zarządzania mobilnością 6.5.1. Adresowanie 6.5.2. Routing do węzła mobilnego 6.6. Mobile IP 6.7. Zarządzanie mobilnością w sieciach komórkowych 6.7.1. Routing rozmów z użytkownikiem mobilnym 6.7.2. Transfery w GSM 6.8. Wpływ bezprzewodowości i mobilności na protokoły wyższych warstw 6.9. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji WYWIAD Z…: Charlie Perkins Rozdział 7. Multimedia 7.1. Multimedialne aplikacje sieciowe 7.1.1. Przykłady aplikacji multimedialnych 7.1.2. Problemy z multimediami w dzisiejszym internecie 574 576 578 583 589 591 592 601 602 605 606 611 614 618 619 623 629 632 633 635 639 640 645 648 650 655 659 661 662 666 668 669 670 674 675 679 680 680 684 Spis treści 11 7.1.3. Co należy zmienić, aby lepiej przystosować internet do potrzeb aplikacji multimedialnych? 7.1.4. Kompresja obrazu i dźwięku 7.2. Strumieniowa transmisja zapisanego obrazu i dźwięku 7.2.1. Dostęp do obrazu i dźwięku za pośrednictwem serwera WWW 7.2.2. Wysyłanie multimediów z serwera strumieniowego do aplikacji pomocniczej 7.2.3. Real-Time Streaming Protocol (RTSP) 7.3. Optymalne wykorzystanie usługi best-effort: przykład telefonu internetowego 7.3.1. Ograniczenia usługi best-effort 7.3.2. Usuwanie fluktuacji po stronie odbiorcy 7.3.3. Eliminowanie skutków utraty pakietów 7.3.4. Rozpowszechnianie multimediów we współczesnym internecie: sieci dystrybucji treści 7.3.5. Wymiarowanie sieci best-effort w celu zapewniania jakości usług 7.4. Protokoły używane przez interaktywne aplikacje czasu rzeczywistego 7.4.1. RTP 7.4.2. RTP Control Protocol (RTCP) 7.4.3. SIP 7.4.4. H.323 7.5. Udostępnianie usług wielu klas 7.5.1. Przykładowe scenariusze 7.5.2. Mechanizmy szeregowania i regulacji 7.5.3. Usługi zróżnicowane (Diffserv) 7.6. Zapewnianie gwarancji jakości usług 7.6.1. Ilustrujący przykład 7.6.2. Rezerwowanie zasobów, zatwierdzanie połączeń i zestawianie połączeń 7.6.3. Usługi o gwarantowanej jakości w internecie — Intserv i RSVP 7.7. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji WYWIAD Z…: Henning Schulzrinne 685 687 691 691 693 695 699 700 702 706 709 713 714 715 719 723 729 730 732 736 743 748 748 750 752 755 756 758 765 766 12 Spis treści Rozdział 8. Bezpieczeństwo w sieciach komputerowych 8.1. Czym jest bezpieczeństwo sieci? 8.2. Zasady kryptografii 8.2.1. Kryptografia z kluczem symetrycznym 8.2.2. Szyfrowanie z kluczem publicznym 8.3. Integralność komunikatów i uwierzytelnianie punktów końcowych 8.3.1. Kryptograficzne funkcje skrótu 8.3.2. Kod MAC 8.3.3. Podpisy cyfrowe 8.3.4. Uwierzytelnianie punktów końcowych 8.4. Zabezpieczanie poczty elektronicznej 8.4.1. Bezpieczna poczta elektroniczna 8.4.2. PGP 8.5. Zabezpieczanie połączeń TCP — protokół SSL 8.5.1. Ogólny obraz 8.5.2. Bardziej kompletny obraz 8.6. Zabezpieczenia w warstwie sieci — IPsec i sieci VPN 8.6.1. IPsec i sieci VPN 8.6.2. Protokoły AH i ESP 8.6.3. Skojarzenia bezpieczeństwa 8.6.4. Datagram IPsec 8.6.5. IKE — zarządzanie kluczami w protokole IPsec 8.7. Zabezpieczanie bezprzewodowych sieci lokalnych 8.7.1. Wired Equivalent Privacy (WEP) 8.7.2. IEEE 802.11i 8.8. Bezpieczeństwo operacyjne — zapory i systemy wykrywania włamań 8.8.1. Zapory sieciowe 8.8.2. Systemy wykrywania włamań 8.9. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji Ćwiczenie realizowane za pomocą narzędzia Wireshark Ćwiczenie z wykorzystaniem protokołu IPsec WYWIAD Z…: Steven M. Bellovin Rozdział 9. Zarządzanie sieciami 9.1. Co to jest zarządzanie siecią? 9.2. Infrastruktura zarządzania siecią 9.3. Internetowy model zarządzania siecią 769 770 773 774 781 787 788 789 791 798 802 804 808 809 811 814 816 817 818 819 820 824 825 826 828 830 831 839 842 844 846 853 853 854 855 857 857 862 864 9.3.1. Struktura informacji administracyjnych: SMI 9.3.2. Baza informacji administracyjnych: MIB 9.3.3. Działanie protokołu SNMP i sposób przesyłania komunikatów 9.3.4. Bezpieczeństwo i administracja 9.4. ASN.1 9.5. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji WYWIAD Z…: Jeff Case Źródła Skorowidz Spis treści 13 868 871 873 877 880 884 885 886 887 888 891 923 ROZDZIAŁ 8 Bezpieczeństwo w sieciach komputerowych Wiele stron temu, w podrozdziale 1.6, opisaliśmy niektóre z najczęstszych i naj- bardziej szkodliwych ataków internetowych, między innymi ataki za pomocą szkodliwego oprogramowania, przez odmowę usług (DoS), przechwytywanie danych, podszywanie się pod nadawcę i modyfikowanie oraz usuwanie komu- nikatów. Choć od tego czasu Czytelnicy nauczyli się wielu rzeczy o sieciach komputerowych, nadal nie dowiedzieli się, jak zabezpieczać je przed atakami wymienionymi w podrozdziale 1.6. Uzbrojeni w nowo nabytą wiedzę ekspercką na temat sieci i protokołów internetowych Czytelnicy mogą teraz przystąpić do szczegółowej analizy bezpiecznej komunikacji, a przede wszystkim tego, jak zabezpieczać sieci komputerowe przed napastnikami. Poznajmy Alicję i Bartka, dwie osoby, które zamierzają się porozumieć i chcą, aby ich komunikacja była „bezpieczna”. Ponieważ jest to książka poświęcona sieciom, nadmieńmy, że Alicją i Bartkiem mogą być dwa routery, które muszą wymienić tablice routingu, klient i serwer, które muszą nawiązać bezpieczne połączenie transportowe, albo dwie aplikacje e-mail, które muszą bezpiecznie wymienić pocztę — są to konkretne przypadki, które zbadamy w dalszej części rozdziału. Alicja i Bartek to osoby cieszące się dużą popularnością wśród eks- pertów od bezpieczeństwa, być może dlatego, że przyjemniej jest posługiwać się imionami niż ogólnikowymi oznaczeniami w rodzaju „A” lub „B”. Zwykło się mawiać, że bezpieczna komunikacja jest potrzebna w romansach pozamałżeń- skich, podczas wojny i w transakcjach handlowych. Ponieważ wolimy ten pierw- szy scenariusz od pozostałych dwóch, będziemy wyobrażać sobie Alicję i Bartka jako parę zakochanych. 769 770 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Stwierdziliśmy, że Alicja i Bartek chcą komunikować się „bezpiecznie”, ale co to właściwie znaczy? Jak się niebawem przekonamy, bezpieczeństwo (jak miłość) ma wiele aspektów. Bez wątpienia Alicja i Bartek chcieliby, aby ich komunikacja pozostała ukryta przed innymi osobami (na przykład zazdrosnym małżonkiem). Prawdopodobnie chcieliby też mieć pewność, że rzeczywiście porozumiewają się ze sobą, a jeśli ktoś zmodyfikuje ich wiadomości, to będzie można wykryć tę modyfikację. W pierwszej części rozdziału omówimy techniki, które zapewniają szyfrowanie i deszyfrowanie komunikacji, uwierzytelnianie porozumiewających się stron oraz integralność wiadomości. W drugiej części rozdziału zbadamy, jak wykorzystać podstawowe zasady kryptograficzne do tworzenia bezpiecznych protokołów sieciowych. Ponownie zastosujemy podejście góra-dół i przyjrzymy się bezpiecznym protokołom w każdej z czterech górnych warstw (zaczniemy od warstwy aplikacji). Poka- żemy, jak zabezpieczać pocztę elektroniczną i połączenia TCP, jak zapewnić pełne bezpieczeństwo w warstwie sieci oraz jak chronić bezprzewodowe sieci lokalne. W trzeciej części rozdziału rozważymy bezpieczeństwo operacyjne, związane z ochroną sieci firmowych przed atakami. Przede wszystkim dokład- nie przyjrzymy się, w jaki sposób zwiększyć bezpieczeństwo takich sieci za pomocą zapór i systemów wykrywania włamań. . 8.1 Czym jest bezpieczeństwo sieci? Na początek wróćmy do naszych kochanków, Alicji i Bartka, którzy chcą poro- zumiewać się „bezpiecznie”. Co to oznacza? Alicja chce, aby jej wiadomość mógł zrozumieć tylko Bartek, mimo że komunikują się przez niezabezpieczone medium, w którym intruz (Inga) może przechwycić, odczytać i przeprowadzić obliczenia na danych przesyłanych od Alicji do Bartka. Ponadto Bartek chce być pewien, że odebrana wiadomość rzeczywiście została wysłana przez Alicję, a Alicja — że rzeczywiście porozumiewa się z Bartkiem. Alicja i Bartek chcą również mieć pewność, że treść ich wiadomości nie została po drodze zmody- fikowana. Chcą wreszcie gwarancji, że w ogóle będą mogli się porozumieć, tzn. że nikt nie odmówi im dostępu do zasobów niezbędnych do komunikacji. Wziąwszy pod uwagę te kwestie, możemy zidentyfikować pożądane właściwości bezpiecznej komunikacji: x Poufność. Tylko nadawca i odbiorca powinni móc zrozumieć treść przesła- nej wiadomości. Ponieważ wiadomość może zostać przechwycona, trzeba ją zaszyfrować (ukryć dane) w taki sposób, aby ewentualny podsłuchiwacz nie mógł jej zrozumieć. Ów aspekt poufności jest prawdopodobnie tym, z czym większości osób kojarzy się termin bezpieczna komunikacja. Kryp- tograficzne techniki szyfrowania i deszyfrowania danych omówimy w pod- rozdziale 8.2. 8.1. x CZYM JEST BEZPIECZEŃSTWO SIECI? 771 x Uwierzytelnianie punktów końcowych. Zarówno nadawca, jak i odbiorca powinni dysponować środkami potwierdzania tożsamości partnera — upew- niania się, że jest on rzeczywiście tym, za kogo się podaje. Podczas rozmowy w cztery oczy można łatwo rozwiązać ten problem za pomocą identyfikacji wzrokowej. Kiedy porozumiewający się partnerzy używają nośnika, który nie pozwala obejrzeć drugiej osoby, uwierzytelnianie staje się bardziej skom- plikowane. Dlaczego mielibyśmy na przykład wierzyć, że wiadomość e-mail z informacją, iż przesłał ją nasz przyjaciel, rzeczywiście pochodzi od tego przyjaciela? Integralność wiadomości. Jeśli nawet nadawca i odbiorca zdołają uwierzy- telnić się nawzajem, będą również chcieli mieć gwarancję, że treść ich komu- nikacji nie zostanie zmodyfikowana podczas transmisji (przypadkowo lub celowo). Integralność wiadomości mogą zagwarantować techniki obliczania sum kontrolnych, z którymi spotkaliśmy się już w niezawodnych protoko- łach transportowych i łącza danych. Techniki uwierzytelniania punktów końcowych i zapewniania integralności wiadomości zbadamy w podroz- dziale 8.3. x x Bezpieczeństwo operacyjne. Prawie wszystkie organizacje (firmy, uniwer- sytety itd.) mają obecnie sieci podłączone do publicznego internetu. Te sieci potencjalnie mogą zostać zaatakowane poprzez publiczny internet. Napast- nicy mogą spróbować umieścić robaki na hostach sieciowych, odkryć sekrety korporacji, odwzorować konfigurację wewnętrznej sieci lub przeprowadzić atak DoS. W podrozdziale 8.8 pokażemy, że urządzenia zapewniające bez- pieczeństwo operacyjne, na przykład zapory i systemy wykrywania wła- mań, służą do przeciwdziałania atakom na sieci firmowe. Zapora działa między siecią organizacji i siecią publiczną oraz kontroluje przekazywanie pakietów do sieci i poza nią. System wykrywania włamań przeprowadza „dogłębną inspekcję pakietów” i alarmuje administratorów sieci o podej- rzanych działaniach. Skoro ustaliliśmy już, co będziemy rozumieć przez bezpieczeństwo sieci, rozważmy teraz, do jakich informacji ma dostęp intruz i jakie może podjąć działania. Scenariusz ataku przedstawiono na rysunku 8.1. Alicja (nadawca) chce wysłać dane do Bartka (odbiorcy). Aby bezpiecznie przenieść dane, speł- niając kryteria poufności, uwierzytelniania i integralności, Alicja i Bartek będą wymieniać komunikaty kontrolne i komunikaty danych (podobnie jak nadawcy i odbiorcy TCP wymieniają segmenty kontrolne i segmenty danych). Niektóre lub wszystkie te komunikaty będą zaszyfrowane. Jak opisaliśmy w podroz- dziale 1.6, intruz ma następujące możliwości działania: x podsłuchiwanie — przeglądanie i rejestrowanie zawartości komunikatów kontrolnych oraz komunikatów danych przesyłanych kanałem; x modyfikowanie, wstawianie lub usuwanie komunikatów albo ich zawartości. 772 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Rysunek 8.1. Nadawca, odbiorca i intruz (Alicja, Bartek i Inga) Jak się okaże, bez odpowiednich środków zaradczych możliwości te pozwolą intruzowi na przypuszczenie wielu różnych ataków: podsłuchiwanie komuni- kacji (i wykradania haseł lub danych), przybieranie tożsamości innej osoby, przejmowanie bieżącej sesji, blokowanie dostępu do usług poprzez przeciąże- nie zasobów systemu itd. Podsumowanie zgłoszonych ataków można znaleźć w CERT Coordination Center [CERT 2009]. Warto też zajrzeć do [Cisco Secu- rity 2009; Voydock 1983; Bhimani 1996; Skoudis 2006]. Skoro ustaliliśmy już, że w internecie czyhają bardzo realne zagrożenia, zasta- nówmy się, jakie są internetowe odpowiedniki Alicji i Bartka, naszych przyja- ciół, którzy chcą się bezpiecznie porozumiewać? Oczywiście, Bartek i Alicja mogą być użytkownikami dwóch systemów końcowych — prawdziwą Alicją i prawdziwym Bartkiem, którzy chcą bezpiecznie wymienić pocztę. Mogą również być uczestnikami elektronicznej transakcji handlowej. Bartek może być osobą, która chce przesłać do serwera numer swojej karty kredytowej, aby kupić coś w sklepie internetowym. Podobnie Alicja może być osobą, która chce połączyć się ze swoim bankiem. Strony komunikacji mogą również być elemen- tami infrastruktury sieciowej. Wiemy już, że bezpiecznej komunikacji wyma- gają serwery nazw domenowych (DNS, podrozdział 2.5) i procesy routingu (podrozdział 4.6). To samo dotyczy aplikacji do zarządzania siecią, które zbadamy w rozdziale 9. Intruz, który potrafiłby aktywnie zakłócać lub kontrolować wyszu- kiwania DNS (zagadnienie to omawiamy w podrozdziale 2.5), obliczenia routingu [Murphy 2003] albo mechanizmy zarządzania siecią [RFC 2574], mógłby naro- bić ogromnego zamieszania w internecie. Wyjaśniliśmy ogólne zasady bezpiecznej komunikacji, poznaliśmy kilka najważniejszych definicji i zbadaliśmy sens zabezpieczania sieci, więc teraz możemy przejść do kryptografii. Jak się wkrótce Czytelnicy przekonają, kryp- tografia zapewnia nie tylko poufność, ale również uwierzytelnianie i integral- ność, a zatem jest kamieniem węgielnym bezpieczeństwa sieci. 8.2. x ZASADY KRYPTOGRAFII 773 . 8.2 Zasady kryptografii Choć kryptografia ma historię sięgającą czasów Juliusza Cezara, współczesne techniki kryptograficzne — również te używane w internecie — opierają się na badaniach prowadzonych w ciągu ostatnich 30 lat. Książki The Codebreakers [Kahn 1967] oraz The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography [Singh 1999] oferują fascynujące spojrzenie na długą historię kryptografii. Kompletne studium kryptografii zajęłoby całą książkę [Kaufman 1995, Schneier 1995], więc tutaj zajmiemy się tylko jej najważniejszymi aspektami, szczególnie tymi, które mają związek z internetem. Nadmieńmy też, że choć w tym podrozdziale skupimy się na poufności, to techniki kryptogra- ficzne są również nierozerwalnie splątane z uwierzytelnianiem, integralnością, niezaprzeczalnością i innymi aspektami bezpieczeństwa. Techniki kryptograficzne pozwalają nadawcy przekształcić dane tak, aby intruz nie mógł uzyskać żadnych informacji z przechwyconej wiadomości. Oczy- wiście, odbiorca musi mieć możliwość odtworzenia oryginalnych danych. Kilka najważniejszych terminów zilustrowano na rysunku 8.2. Rysunek 8.2. Komponenty kryptograficzne Przypuśćmy, że Alicja chce przesłać wiadomość do Bartka. Wiadomość Ali- cji w pierwotnej postaci (na przykład „Bartku, kocham ciÚ. Alicja”) określa się mianem tekstu jawnego lub zwykłego tekstu. Alicja szyfruje tekst jawny za pomocą algorytmu szyfrowania, uzyskując szyfrogram nieczytelny dla osób postronnych. Co ciekawe, w wielu współczesnych systemach krypto- graficznych, również tych używanych w internecie, sama technika szyfrowania jest znana — opublikowana, ustandaryzowana i dostępna dla wszystkich (na przykład [RFC 1321; RFC 2437; RFC 2420; NIST 2001]), również dla potencjal- nego intruza! Oczywiście jeśli każdy zna metodę szyfrowania danych, to musi istnieć jakaś tajna informacja, która zapobiegnie odczytaniu danych przez intruza. Tą informacją są klucze. 774 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Na rysunku 8.2 Alicja dostarcza klucz KA — łańcuch liczb lub znaków — na wejście algorytmu szyfrowania. Algorytm przyjmuje klucz oraz tekst jawny m i na ich podstawie tworzy szyfrogram. Notacja KA(m) oznacza szyfrogram tekstu jawnego m uzyskany za pomocą klucza KA. Z kontekstu wiadomo, jaki algo- rytm korzysta z tego klucza. Podobnie Bartek przekazuje klucz KB algorytmowi deszyfrowania, który przyjmuje ten klucz oraz szyfrogram i na ich podstawie odtwarza tekst jawny; tzn. jeśli Bartek odbierze zaszyfrowaną wiadomość KA(m), odszyfrowuje ją poprzez obliczenie KB(KA(m)) = m. W systemach z kluczem symetrycznym klucze Alicji i Bartka są jednakowe i zachowywane w tajemnicy. W systemach z kluczem publicznym używa się pary kluczy. Jeden z kluczy jest znany zarówno Bartkowi, jak i Alicji (w rzeczywistości całemu światu). Drugi klucz jest znany albo Bartkowi, albo Alicji (ale nie obojgu jednocześnie). W następnych dwóch punktach zbadamy dokładniej systemy z kluczem syme- trycznym i kluczem publicznym. 8.2.1. Kryptografia z kluczem symetrycznym Wszystkie algorytmy kryptograficzne polegają na zastępowaniu jednej rzeczy drugą, na przykład pobieraniu fragmentu tekstu jawnego oraz obliczaniu i pod- stawianiu odpowiedniego szyfrogramu w celu utworzenia wiadomości zaszy- frowanej. Zanim przestudiujemy współczesny system kryptograficzny oparty na kluczach, zbadajmy bardzo stary, bardzo prosty algorytm szyfrowania przypi- sywany Juliuszowi Cezarowi i zwany szyfrem Cezara (szyfr to metoda szyfro- wania danych). Szyfr Cezara działa w następujący sposób: bierzemy każdą literę tekstu jaw- nego i zastępujemy ją literą znajdującą się o k liter dalej w alfabecie (alfabet jest „zawinięty”, tzn. po literze „ż” następuje litera „a”). Jeśli na przykład k = 3, litera „a” w tekście jawnym staje się literą „c” w szyfrogramie; litera „ą” w tekście jawnym staje się literą „ć” w szyfrogramie itd. Wartość k pełni tu funkcję klucza. Na przykład tekst jawny „bartku, kocham ciÚ. alicja” jest przekształ- cany w szyfrogram „dctymz, mrekco elh. cnleïc”. Choć szyfrogram rzeczywiście wygląda bezsensownie, złamanie kodu byłoby bardzo łatwe, ponie- waż istnieje tylko 31 możliwych wartości klucza. Ulepszeniem szyfru Cezara jest szyfr monoalfabetyczny, który również polega na zamianie liter. Nie używa się jednak regularnego wzorca (na przy- kład przesunięcia o k liter), ale dowolnych podstawień, z tym zastrzeżeniem, że każda litera musi mieć unikatowy zamiennik. Na rysunku 8.3 pokazano jedną z możliwych metod kodowania tekstu jawnego. Rysunek 8.3. Szyfr monoalfabetyczny 8.2. x ZASADY KRYPTOGRAFII 775 W tym przypadku tekst jawny „bartku, kocham ciÚ. alicja” jest przekształcany w szyfrogram „cwÊytl, tiĝěwp ĝhb. wñhĝÚa”. Podobnie jak w przypadku szyfru Cezara szyfrogram wygląda bezsensownie. Wydawa- łoby się też, że szyfr monoalfabetyczny jest znacznie lepszy od szyfru Cezara, ponieważ pozwala połączyć litery w pary na 32! sposobów (liczba rzędu 1035), a nie na skromne 31. Próba złamania kodu i odszyfrowania wiadomości przez wypróbowanie wszystkich 1035 kombinacji zajęłaby tyle czasu, że jest z góry skazana na niepowodzenie. Jednakże analiza statystyczna języka, w którym napisano tekst jawny — na przykład ustalenie, że w typowym polskim tekście najczęściej występują litery „a” oraz „i” (obie z częstością powyżej 7 ) i że nie- które dwu- i trzyliterowe sekwencje liter pojawiają się znacznie częściej niż inne (na przykład „ch”, „ci”, „nie” itp.) — pozwala dość łatwo złamać ten kod. Jeśli intruz dysponuje jakąś wiedzą o treści wiadomości, ma jeszcze łatwiejsze zada- nie. Przykładowo, jeśli Inga jest żoną Bartka i podejrzewa, że romansuje on z Alicją, to może przypuszczać, że w tekście znajdują się słowa „bartek” lub „alicja”. Gdyby Inga wiedziała na pewno, że te dwa imiona występują w szyfro- gramie, mogłaby natychmiast ustalić 10 spośród 32 par liter, zmniejszając o 1014 liczbę możliwości do wypróbowania. Gdyby zresztą Inga podejrzewała Bartka o romans, mogłaby oczekiwać, że znajdzie w wiadomości inne specyficzne słowa. Kiedy zastanawiamy się, jak łatwo byłoby Indze złamać szyfr używany przez Bartka i Alicję, możemy wyróżnić trzy scenariusze, w zależności od informacji, do jakich intruz ma dostęp: x Atak ze znanym szyfrogramem. W niektórych przypadkach intruz ma dostęp wyłącznie do szyfrogramu i nie wie nic o zawartości tekstu jawnego. Wyja- śniliśmy już, że w ataku ze znanym szyfrogramem może pomóc analiza statystyczna. x Atak ze znanym tekstem jawnym. Jak już stwierdziliśmy, gdyby Inga wie- działa, że w szyfrogramie występują słowa „bartek” i „alicja”, mogłaby ustalić pary (tekst jawny, szyfrogram) dla liter b, a, r, t, e, k, l, i, c oraz j. Mogłaby również zarejestrować wszystkie przesyłane szyfrogramy, a później odnaleźć odszyfrowaną wersję któregoś z nich zapisaną przez Bartka na kartce papieru. Kiedy intruz zna niektóre pary (tekst jawny, szyfrogram), mówimy o ataku ze znanym tekstem jawnym. x Atak z wybranym tekstem jawnym. W ataku z wybranym tekstem jawnym intruz może wybrać dowolny tekst jawny i uzyskać jego szyfrogram. W przy- padku prostych algorytmów, które omawialiśmy do tej pory, Inga mogłaby nakłonić Alicję do wysłania wiadomości „PchnÈÊ w tÚ ïódě jeĝa lub oĂm skrzyñ fig” i całkowicie złamać szyfr. Niebawem pokażemy, że w bardziej zaawansowanych technikach szyfrowania atak z wybranym tek- stem jawnym nie zawsze pozwala złamać szyfr. 776 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Pięćset lat temu wymyślono techniki szyfrowania polialfabetycznego. Pole- gają one na użyciu wielu szyfrów monoalfabetycznych, przy czym określony szyfr monoalfabetyczny służy do kodowania litery o określonym położeniu w tekście jawnym. Zatem ta sama litera może być kodowana na różne sposoby, w zależności od pozycji, jaką zajmuje w tekście jawnym. Przykład szyfru polial- fabetycznego pokazano na rysunku 8.4. Składa się on z dwóch szyfrów Cezara (o parametrach k = 5 i k = 19). Moglibyśmy zdecydować, że będziemy używać tych dwóch szyfrów w powtarzającej się sekwencji C1, C2, C2, C1, C2. Pierwsza litera tekstu jawnego byłaby kodowana za pomocą szyfru C1, druga i trzecia — za pomocą szyfru C2, czwarta — za pomocą szyfru C1, a piąta — za pomocą szyfru C2. Następnie wzór powtarzałby się — szósta litera byłaby kodowana za pomocą szyfru C1, siódma — za pomocą szyfru C2 itd. Tekst jawny „bartku, kocham ciÚ. alicja” zostałby zatem zaszyfrowany do postaci „Úogěak, aefzdc rmu. dÈěfnd”. Zauważmy, że pierwsza litera „a” tekstu jawnego jest zakodowana za pomocą szyfru C1, a druga litera „a” — za pomocą C2. W tym przykładzie „kluczem” szyfrowania i deszyfrowania jest znajomość dwóch kluczy Cezara (k = 5, k = 19) oraz wzoru C1, C2, C2, C1, C2. Rysunek 8.4. Szyfr polialfabetyczny złożony z dwóch szyfrów Cezara Szyfry blokowe Przejdźmy teraz do współczesności i zbadajmy, jak obecnie wygląda szyfro- wanie z kluczem symetrycznym. Istnieją dwie ogólne klasy technik szyfrowa- nia z kluczem symetrycznym — szyfry strumieniowe i szyfry blokowe. Szyfry strumieniowe opisujemy pokrótce w podrozdziale 8.7, gdzie badamy zabezpie- czenia bezprzewodowych sieci lokalnych. W tym miejscu skoncentrujemy się na szyfrach blokowych, które są stosowane w wielu bezpiecznych protokołach internetowych, w tym w PGP (do zabezpieczenia poczty elektronicznej), SSL (do zabezpieczania połączeń TCP) i IPsec (do zabezpieczania transportu w war- stwie sieci). W szyfrach blokowych szyfrowany komunikat jest przetwarzany w blokach po k bitów. Na przykład jeśli k = 64, komunikat jest dzielony na 64-bitowe bloki, a każdy z nich jest szyfrowany niezależnie. Aby zakodować blok, algorytm szyfrujący stosuje odwzorowanie jeden do jednego i przekształca k-bitowy blok tekstu jawnego na k-bitowe bloki szyfrogramu. Przyjrzyjmy się przykładowi. Załóżmy, że k = 3, więc szyfr blokowy odwzorowuje 3-bitowe dane wejściowe (tekst jawny) na 3-bitowe dane wyjściowe (szyfrogram). Jedno z możliwych odwzorowań przedstawia tabela 8.1. Warto zauważyć, że jest to odwzorowanie jeden do jednego. Oznacza to, że dla każdych danych wejściowych tworzone 8.2. x ZASADY KRYPTOGRAFII 777 Wejście Wyjście Wejście Wyjście 000 001 010 011 110 111 101 100 100 101 110 111 Tabela 8.1. Określony 3-bitowy szyfr blokowy 011 010 000 001 są inne dane wyjściowe. Ten szyfr blokowy dzieli komunikat na 3-bitowe bloki i szyfruje każdy z nich na podstawie powyższego odwzorowania. Czytelnik powi- nien sprawdzić, że komunikat 010110001111 zostanie zaszyfrowany do postaci 101000111001. Kontynuujmy przykład z 3-bitowymi blokami. Zauważmy, że odwzorowanie z tabeli 8.1 to tylko jedno z wielu możliwych rozwiązań. Ile różnych odwzo- rowań istnieje? Aby odpowiedzieć na to pytanie, warto zauważyć, że odwzo- rowanie jest niczym więcej jak permutacją wszystkich możliwych danych wej- ściowych. Tych danych jest 23, czyli 8 (są one wymienione w kolumnie danych wejściowych). Dla tych ośmiu możliwości istnieje 8! = 40 320 różnych permutacji. Ponieważ każda z nich określa odwzorowanie, tych ostatnich też jest 40 320. Każde odwzorowanie można traktować jako klucz. Jeśli Alicja i Bartek znają odwzorowanie (klucz), mogą szyfrować i odszyfrowywać przesyłane komunikaty. Atak typu brute force na ten szyfr polega na próbie odszyfrowania szyfro- gramu za pomocą każdego odwzorowania. Przy tylko 40 320 odwzorowaniach (dla k = 3) można to szybko zrobić na komputerze PC. Aby zapobiec atakom brute force, w szyfrach blokowych zwykle stosuje się dużo większe bloki — z k = 64 lub nawet więcej. Zauważmy, że liczba możliwych odwzorowań dla ogólnego szyfru o bloku o wielkości k wynosi 2k!, co daje bardzo dużą wartość nawet dla umiarkowanych wartości k (na przykład k = 64). Choć szyfry blokowe z kompletną tabelą, takie jak opisany wcześniej, już przy niewielkich wartościach k pozwalają opracować solidne systemy szyfrowania z kluczem symetrycznym, są niestety trudne w stosowaniu. Dla k = 64 i okre- ślonego odwzorowania Alicja i Bartek muszą przechowywać tabelę o 264 war- tościach wejściowych. Jest to niewykonalne zadanie. Ponadto gdyby Alicja i Bartek mieli wymieniać klucze, musieliby odtwarzać tę tabelę. Dlatego szyfry blokowe z kompletną tabelą, określające wstępnie ustalone odwzorowanie mię- dzy wszystkimi wartościami wejściowymi i wyjściowymi (jak we wcześniejszym przykładzie), są nieakceptowalne. Zamiast tego w szyfrach blokowych zwykle wykorzystywane są funkcje symulujące tabele utworzone w wyniku losowej permutacji. Przykład (zaadap- towany z [Kaufman 1995]) takiej funkcji dla k = 64 bity przedstawia rysunek 8.5. 778 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Rysunek 8.5. Przykładowy szyfr blokowy Ta funkcja najpierw dzieli 64-bitowy blok na osiem 8-bitowych fragmentów. Każdy z tych fragmentów jest przetwarzany za pomocą możliwej do obsłużenia tabeli o wielkości osiem na osiem bitów. Na przykład do przetwarzania pierw- szego fragmentu służy tabela T1. Następnie osiem wyjściowych fragmentów jest łączonych w 64-bitowy blok. System zamienia wtedy pozycje 64 bitów w tym bloku, aby wygenerować 64-bitowe dane wyjściowe. Są one ponownie stosowane jako 64-bitowe dane wejściowe, co zaczyna następny cykl. Po n takich cyklach funkcja zwraca 64-bitowy blok szyfrogramu. Celem stosowania rund jest spra- wienie, aby każdy bit wejściowy oddziaływał na większość (jeśli nie wszystkie) z ostatecznie uzyskanych bitów wyjściowych. Gdyby uruchomiono tylko jedną rundę, bit wejściowy wpływałby na tylko osiem z 64 bitów wyjściowych. Klu- czem w takim algorytmie szyfrowania blokowego jest osiem tabel permutacji (zakładamy, że funkcja mieszająca bity jest powszechnie znana). Obecnie istnieje wiele popularnych szyfrów blokowych, w tym DES (ang. Data Encryption Standard), 3DES i AES (ang. Advanced Encryption Standard). Każdy z tych standardów wykorzystuje funkcje zamiast wstępnie przygotowa- nych tabel, jak przedstawia to rysunek 8.5 (choć poszczególne szyfry są bardziej skomplikowane). Każdy z algorytmów używa też łańcucha bitów jako klucza. Na przykład DES wykorzystuje 64-bitowe bloki z 56-bitowym kluczem. AES używa 128-bitowych bloków i może działać z kluczami o długości 128, 192 i 256 bitów. Klucz algorytmu określa konkretne odwzorowania i permutacje w postaci „minitabeli”. Atak brute force na każdy z tych szyfrów polega na cyklicznym sprawdzaniu wszystkich kluczy i stosowaniu ich w algorytmie deszy- frującym. Zauważmy, że przy kluczu o długości n istnieje 2n możliwych kluczy. W instytucie NIST [NIST 2001] oszacowano, że maszynie, która potrafi złamać 8.2. x ZASADY KRYPTOGRAFII 779 56-bitowy szyfr DES w jedną sekundę (czyli zdoła wypróbować w tym czasie każdy z 256 kluczy), złamanie 128-bitowego klucza AES zajęłoby około 149 try- lionów lat. Wiązanie bloków W aplikacjach sieciowych zwykle trzeba szyfrować długie komunikaty (lub długie strumienie danych). Jeśli zastosujemy szyfr blokowy przez prosty podział wia- domości na k-bitowe bloki i niezależne zaszyfrowanie każdego z nich, wystąpi subtelny, ale istotny problem. Aby go dostrzec, należy zauważyć, że bloki z tek- stem jawnym mogą być identyczne. Na przykład tekst jawny w kilku blokach może brzmieć „HTTP/1.1”. Dla takich identycznych bloków szyfr blokowy utworzy oczywiście takie same szyfrogramy. Napastnik może odgadnąć tekst jawny, jeśli zauważy identyczne bloki w szyfrogramie. Może nawet zdołać odszy- frować całą wiadomość przez zidentyfikowanie takich samych bloków i wyko- rzystanie wiedzy na temat struktury zastosowanego protokołu [Kaufman 1995]. Aby rozwiązać ten problem, należy wprowadzić w proces losowość, aby identyczne bloki tekstu jawnego prowadziły do utworzenia odmiennych szy- frogramów. W celu wyjaśnienia tego pomysłu przyjmijmy, że m(i) oznacza i-ty blok tekstu jawnego, c(i) to i-ty blok szyfrogramu, a a † b oznacza operację XOR na dwóch łańcuchach bitów (a i b). Przypomnijmy, że 0 † 0 = 1 † 1 = 0 i 0 † 1 = 1 † 0 = 1, a suma XOR dwóch łańcuchów bitów jest obliczana bit po bicie, na przykład 10101010 † 11110000 = 01011010. Ponadto oznaczmy algo- rytm szyfru blokowego z kluczem S jako KS. Podstawowa reguła wygląda tak — nadawca tworzy losową k-bitową liczbę r(i) dla i-tego bloku i oblicza c(i) = KS(m(i) † r(i)). Zauważmy, że dla każdego bloku wybierana jest nowa k-bitowa liczba. Następnie nadawca wysyła wartości c(1), r(1), c(2), r(2), c(3), r(3) itd. Ponieważ odbiorca otrzymuje c(i) i r(i), może odtworzyć każdy blok tekstu jawnego przez obliczenia m(i) = KS(m(i)) † r(i). Należy zauważyć, że choć wartość r(i) jest przesyłana jako tekst jawny i może zostać zarejestrowana przez Ingę, nie zdoła ona uzyskać tekstu jawnego m(i), ponieważ nie zna klucza KS. Ponadto nawet jeśli dwa bloki tekstu jawnego m(i) i m(j) są identyczne, odpo- wiadające im bloki szyfrogramu c(i) i c(j) różnią się od siebie (o ile liczby losowe r(i) i r(j) są inne, co jest wysoce prawdopodobne). Rozważmy na przykład 3-bitowy szyfr blokowy z tabeli 8.1. Załóżmy, że tekst jawny to 010010010. Jeśli Alicja zaszyfruje go bezpośrednio (bez wprowadzania losowości), wynikowy szyfrogram będzie miał wartość 101101101. Jeżeli Inga zarejestruje ten szyfrogram, to ze względu na to, że trzy bloki szyfrogramu są identyczne, będzie mogła słusznie przyjąć, że każdy z trzech bloków tekstu jaw- nego jest taki sam. Teraz załóżmy, że Alicja wygeneruje losowe bloki r(1) = 001, r(2) = 111 i r(3) = 100 oraz zastosuje opisaną wcześniej technikę do utwo- rzenia szyfrogramu c(1) = 100, c(2) = 010 i c(3) = 000. Zauważmy, że trzy bloki 780 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH szyfrogramu różnią się od siebie, choć bloki tekstu jawnego są takie same. Alicja wyśle wtedy dane c(1), r(1), c(2) i r(2). Czytelnik powinien sprawdzić, że Bartek zdoła uzyskać pierwotny tekst jawny za pomocą wspólnego klucza KS. Uważni Czytelnicy zauważą, że wprowadzenie losowości rozwiązuje jeden problem, ale wprowadza inny. Alicja musi teraz przesyłać dwa razy więcej bi- tów. Dla każdego bitu szyfrogramu musi wysłać także bit losowy, co podwaja potrzebną przepustowość. Aby można było „zjeść ciastko i mieć ciastko”, w szyfrach blokowych zwykle stosuje się technikę wiązania bloków (ang. Cipher Block Chaining — CBC). Podstawowa zasada jej działania polega na wysyłaniu tylko jednej losowej wartości z pierwszym komunikatem, po czym nadawca i odbiorca mogą wykorzystać obliczone zakodowane bloki zamiast kolejnych liczb losowych. Opiszmy dokładniej funkcjonowanie techniki wiązania bloków: 1. Przed zaszyfrowaniem komunikatu (lub strumienia danych) nadawca generuje losowy k-bitowy łańcuch nazywany wektorem inicjującym (ang. Initialization Vector — IV). Oznaczmy ten wektor przez c(0). Nadawca wysyła do odbiorcy wektor IV jako tekst jawny. 2. Dla pierwszego bloku nadawca oblicza wartość m(1) † c(0), czyli sumę XOR pierwszego bloku tekstu jawnego i wektora IV. Następnie przekazuje wynik do algorytmu szyfru blokowego, aby uzyskać odpowiedni blok szyfrogramu (c(1) = KS(m(1)† c(0)). Nadawca wysyła zaszyfrowany blok c(1) do odbiorcy. 3. Dla i-tego bloku nadawca generuje i-ty blok szyfrogramu c(i) = KS(m(i) † c(i – 1)). Zbadajmy teraz skutki zastosowania tego podejścia. Po pierwsze, odbiorca nadal może odtworzyć pierwotną wiadomość. Kiedy otrzyma szyfrogram c(i), odszyfruje go za pomocą klucza KS, aby uzyskać s(i) = m(i) † c(i – 1). Ponieważ odbiorca zna również wartość c(i – 1), może otrzymać blok tekstu jawnego na podstawie obliczeń m(i) = s(i) † c(i – 1). Po drugie, nawet jeśli dwa bloki tekstu jawnego są identyczne, odpowiadające im szyfrogramy prawie zawsze będą różne. Po trzecie, choć nadawca wysyła wektor IV jako tekst jawny, intruz nie będzie mógł odszyfrować bloków szyfrogramu, ponieważ nie zna tajnego klucza S. Wreszcie nadawca wysyła tylko jeden dodatkowy blok (wektor IV), dlatego dla długich komunikatów, składających się z setek bloków, wzrost potrzebnej przepustowości jest pomijalny. W ramach przykładu obliczmy na podstawie 3-bitowego szyfru blokowego z tabeli 8.1 szyfrogram dla tekstu jawnego 010010001 i wektora IV = c(0) = 001. Nadawca najpierw używa wektora IV do obliczenia c(1) = KS(m(1)† c(0)) = 100, a następnie oblicza c(2) = KS(m(2) † c(1)) = KS(010 † 100) = 000 i c(3) = KS(m(3) † c(2)) = KS(010 † 000) = 101. Czytelnik powinien sprawdzić, że odbiorca — znając wartość wektora IV i klucz KS — zdoła odtworzyć pierwotny tekst jawny. 8.2. x ZASADY KRYPTOGRAFII 781 Wiązanie bloków ma poważny wpływ na projektowanie bezpiecznych pro- tokołów sieciowych. Trzeba w nich udostępnić mechanizm do przekazywania wektora IV od nadawcy do odbiorcy. W dalszej części rozdziału pokażemy, jak odbywa się to w kilku protokołach. 8.2.2. Szyfrowanie z kluczem publicznym Przez ponad 2000 lat (od wynalezienia szyfru Cezara do lat 70. XX wieku) zaszy- frowana komunikacja wymagała, aby obie jej strony znały wspólny sekret — symetryczny klucz używany do szyfrowania i deszyfrowania. Problem w tym, że obie strony muszą jakoś uzgodnić wspólny klucz, co jednak wymaga (za- pewne bezpiecznej) komunikacji! Strony mogłyby najpierw spotkać się osobi- ście i uzgodnić klucz (na przykład dwóch centurionów Cezara mogłoby spotkać się w rzymskiej łaźni), a potem porozumiewać się przy użyciu szyfru. Jednak w połączonym siecią świecie często zdarza się, że strony nigdy się nie spoty- kają i porozumiewają się wyłącznie przez sieć. Czy strony mogą się bezpiecznie komunikować bez tajnego, uprzednio uzgodnionego klucza? W 1976 roku Diffie i Hellman [Diffie 1976] zademonstrowali algorytm (obecnie znany jako wymiana kluczy Diffiego-Hellmana) opracowany właśnie w tym celu — rady- kalnie odmienną i niezwykle elegancką metodę bezpiecznej komunikacji, która doprowadziła do powstania współczesnych systemów kryptograficznych z klu- czem publicznym. Systemy kryptograficzne z kluczem publicznym mają kilka innych zdumiewających cech, które sprawiają, że nadają się one nie tylko do szyfrowania, ale także do uwierzytelniania i podpisów cyfrowych. Co ciekawe, niedawno wyszło na jaw, że idee podobne do opisanych w [Diffie 1976] i [RSA 1978] zostały również przedstawione w serii tajnych raportów badaczy z Com- munications-Electronics Security Group w Wielkiej Brytanii [Ellis 1987]. Jak to często bywa, doskonałe pomysły pojawiają się niezależnie w wielu miejscach; na szczęście postępy w tej dziedzinie nie pozostały w ukryciu, lecz stały się własnością publiczną. Koncepcja szyfrowania z kluczem publicznym jest bardzo prosta. Przypu- śćmy, że Alicja chce porozumieć się z Bartkiem. Jak pokazano na rysunku 8.6, nie współdzielą oni jednego tajnego klucza (jak w systemach z kluczem symetrycz- nym). Bartek (odbiorca wiadomości Alicji) ma dwa klucze — klucz publiczny dostępny dla każdego (łącznie z Ingą, intruzem) oraz klucz prywatny znany tylko Bartkowi. Publiczny i prywatny klucz Bartka będziemy oznaczać symbo- BK . Aby porozumieć się z Bartkiem, Alicja naj- lami (odpowiednio) pierw zdobywa jego klucz publiczny, po czym szyfruje swoją wiadomość m przy użyciu tego klucza oraz znanego (na przykład ustandaryzowanego) al- . Bartek odbiera gorytmu szyfrowania; oznacza to, że Alicja oblicza wiadomość Alicji i używa znanego (na przykład ustandaryzowanego) algoryt- mu deszyfrowania, aby odtworzyć oryginalną wiadomość. Oznacza to, że (mK B  BK i   ) 782 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Rysunek 8.6. Kryptografia z kluczem publicznym   B  B  B   )  B )) m  B )) )) m .  B (  B (  B (  B (  B ( mKK ( ( )) , tzn. zastosowanie publicznego klucza Bartka Bartek oblicza . Istnieją jednak takie algorytmy szyfrowania- -deszyfrowania oraz metody wyboru klucza prywatnego i publicznego, że BK do wia- mKK domości m (w celu uzyskania ), a następnie zastosowanie prywatnego )) ) klucza Bartka daje z powrotem m. Jest to godne uwagi osiągnięcie! W ten sposób Alicja może użyć publicznie dostępnego klucza Bartka, aby wysłać do niego tajną wiado- mość, a żadne z nich nie musi przekazywać drugiemu tajnego klucza! Nieba- wem przekonamy się, że możemy zamienić klucz prywatny z publicznym i osią- gnąć ten sam zdumiewający wynik, tzn. BK do zaszyfrowanej wersji m (tzn. obliczenie mKK ( mKK mKK ( ( (mK B Zasady kryptografii z kluczem publicznym są więc nieskomplikowane. Od razu przychodzą jednak na myśl dwa problemy. Po pierwsze, intruz, który prze- chwyci wiadomość Alicji, znajdzie w niej tylko „śmieci”, ale zna zarówno klucz (publiczny klucz Bartka, dostępny dla każdego), jak i algorytm używany przez Alicję. Intruz może więc przeprowadzić atak z wybranym tekstem jawnym, korzystając ze standardowego algorytmu szyfrowania i publicznego klucza Bartka w celu zaszyfrowania dowolnej wiadomości! Intruz może na przykład szyfrować wiadomości (albo fragmenty) wiadomości, które — jak podejrzewa — Alicja mogłaby przesyłać Bartkowi. Jak widać, jeśli kryptografia z kluczem publicz- nym ma działać, dobór kluczy oraz szyfrowanie i deszyfrowanie muszą odbywać się w taki sposób, aby ustalenie prywatnego klucza Bartka albo odszyfrowanie wiadomości Alicji było niemożliwe (albo tak trudne, że praktycznie niemoż- liwe). Po drugie, ponieważ klucz Bartka jest publiczny, każdy może wysłać do niego wiadomość, podając się za Alicję. W algorytmach z pojedynczym wspól- nym kluczem fakt, że nadawca zna tajny klucz, jednoznacznie identyfikuje go przed odbiorcą. W przypadku kryptografii z kluczem publicznym jest inaczej, ponieważ każdy może wysłać wiadomość do Bartka, korzystając z jego publicz- nie dostępnego klucza. Aby powiązać nadawcę z wiadomością, potrzebny jest podpis cyfrowy; zagadnieniem tym zajmiemy się w podrozdziale 8.3. 8.2. x ZASADY KRYPTOGRAFII 783 RSA Choć można opracować wiele algorytmów i kluczy, które rozwiązywałyby te problemy, synonimem kryptografii z kluczem publicznym stał się algorytm RSA (skrót pochodzi od nazwisk jego twórców, Rona Rivesta, Adiego Shamira i Leonarda Adlemana). Zobaczmy najpierw, jak działa RSA, a następnie zasta- nówmy się, dlaczego działa. Algorytm RSA wykonuje wiele operacji arytmetycznych z wykorzystaniem arytmetyki modulo-n. Opiszmy pokrótce arytmetykę modularną. Przypomnijmy, że x mod n oznacza po prostu resztę z dzielenia x przez n. Na przykład 19 mod 5 = 4. W arytmetyce modularnej wykonywane są normalne działania doda- wania, mnożenia i potęgowania. Jednak wynik każdej operacji jest zastępowany przez całkowitoliczbową resztę z dzielenie go przez n. Dodawanie i mnożenie w arytmetyce modularnej ułatwiają poniższe wygodne zależności: [(a mod n)+(b mod n)] mod n = (a+b) mod n [(a mod n)–(b mod n)] mod n = (a–b) mod n [(a mod n)·(b mod n)] mod n = (a·b) mod n Z trzeciej zależności wynika, że (a mod n)d mod n = ad mod n. Ta tożsamość wkrótce okaże się bardzo przydatna. Przypuśćmy, że Alicja chce wysłać do Bartka komunikat zaszyfrowany algo- rytmem RSA, co ilustruje rysunek 8.6. Przy analizie tego algorytmu zawsze warto pamiętać o tym, że wiadomość to nic więcej jak wzorzec bitów, a każdy wzorzec ma niepowtarzalną reprezentację w postaci liczby całkowitej (i długości wzorca). Załóżmy na przykład, że komunikat to wzorzec bitów 1001. Można go przed- stawić jako dziesiętną liczbę całkowitą 9. Dlatego szyfrowanie wiadomości za pomocą algorytmu RSA odpowiada szyfrowaniu niepowtarzalnych liczb całko- witych reprezentujących komunikat. RSA ma dwa powiązane ze sobą aspekty: x wybór klucza publicznego i klucza prywatnego; x algorytm szyfrowania i deszyfrowania. Aby wybrać klucz publiczny i prywatny, Bartek musi wykonać następujące czynności: 1. Wybrać dwie duże liczby pierwsze p i q. Jak duże powinny być te liczby? Im są większe, tym trudniej złamać RSA, ale tym dłużej trwa kodowanie i dekodowanie. Firma RSA Laboratories zaleca, aby iloczyn p i q miał długość rzędu 1024 bitów. Sposoby znajdowania dużych liczb pierwszych można znaleźć w [Caldwell 2007]. 2. Obliczyć n = pq oraz z = (p–1)(q–1). 784 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH 3. Wybrać liczbę e mniejszą niż n, która nie ma wspólnych dzielników (poza jedynką) z liczbą z (w takim przypadku mówi się, że liczby e i z są względnie pierwsze). Użyto litery e, ponieważ wartość ta będzie służyć do szyfrowania (ang. encryption). 4. Znaleźć liczbę d taką, że ed–1 dzieli się bez reszty przez z. Użyto litery d, ponieważ wartość ta będzie służyć do deszyfrowania. Innymi słowy, dysponując wartością e, wybieramy liczbę d taką, aby: ed mod z = 1 5. Klucz publiczny  BK , który Bartek udostępnia całemu światu, jest parą liczb (n, e); klucz prywatny BK jest parą liczb (n, d).  Alicja szyfruje, a Bartek odszyfrowuje wiadomość w następujący sposób: x Przypuśćmy, że Alicja chce wysłać Bartkowi wzorzec bitowy reprezentowany przez liczbę całkowitą m taką, że m n. Aby ją zakodować, Alicja oblicza me, a następnie oblicza resztę z dzielenia me przez n. Zatem zaszyfrowana war- tość c tekstu jawnego m wysyłana przez Alicję to: c = me mod n Wzorzec bitowy odpowiadający szyfrogramowi (c) jest wysyłany do Bartka. x Aby odszyfrować odebrany szyfrogram c, Bartek oblicza: m = cd mod n co wymaga użycia jego klucza prywatnego (n, d). Rozważmy prosty przykład użycia RSA. Przypuśćmy, że Bartek wybiera p = 5 i q = 7 (oczywiście liczby te są zbyt małe, aby były bezpieczne). W takim przypadku n = 35, a z = 24. Bartek wybiera e = 5, ponieważ 5 i 24 nie mają wspólnych dzielników. Wreszcie Bartek wybiera d = 29, ponieważ 5·29–1 (tzn. ed–1) dzieli się bez reszty przez 24. Bartek upublicznia te dwie wartości (n = 35 i e = 5), ale nie ujawnia wartości d = 29. Znając dwie publiczne wartości, Alicja chce wysłać do Bartka litery „l”, „o”, „v” i „e”. Interpretując każdą z nich jako wartość z zakresu 1 – 26 („a” to 1, „z” to 26), Alicja i Bartek szyfrują i deszy- frują wiadomość w sposób przedstawiony w tabelach 8.2 i 8.3. Zauważmy, że w tym przykładzie każda z czterech liter jest traktowana jak odrębny komunikat. Bardziej realistyczne rozwiązanie wymaga przekształcenia liter na ich 8-bitowe reprezentacje w formacie ASCII i zaszyfrowanie liczby całkowitej odpowiadającej uzyskanemu 32-bitowemu wzorcowi. Jednak taki realistyczny przykład prowa- dzi do uzyskania liczb, które są zdecydowanie zbyt długie, aby można umieścić je w podręczniku! 8.2. x ZASADY KRYPTOGRAFII 785 Litera tekstu jawnego m: reprezentacja liczbowa me szyfrogram c = me mod n l o v e 12 15 22 5 238832 759375 5153632 3125 17 15 22 10 Tabela 8.2. Szyfrowanie RSA Alicji, e = 5, n = 35 Szyfrogram c c cd m = cd mod n Litera tekstu jawnego 17 15 22 10 481968572106750915091411825223071697 12783403948858939111232757568359375 851643319086537701956194499721106030592 100000000000000000000000000000 12 15 22 5 l o v e Tabela 8.3. Deszyfrowanie RSA Bartka, d = 29, n = 35 Zważywszy, że już „dziecinny” przykład z tabel 8.2 i 8.3 doprowadził do powstania bardzo dużych liczb, a wcześniej dowiedzieliśmy się, że wartości p i q powinny liczyć kilkaset bitów, trzeba zastanowić się nad praktycznymi aspektami RSA. Jak wybiera się duże liczby pierwsze? Jak następnie wybiera się e i d? Jak wykonuje się potęgowanie, kiedy wykładnikami są duże liczby? Omó- wienie tych ważnych kwestii wykracza poza ramy niniejszej książki; szczegóły można znaleźć w [Kaufman 1995] oraz wymienionych tam źródłach. Klucze sesji Warto wiedzieć, że potęgowanie wymagane przez RSA jest dość czasochłonne. Algorytm DES jest przynajmniej 100 razy szybszy w implementacji progra- mowej i od 1000 do 10 000 razy szybszy w implementacji sprzętowej [RSA Fast 2007]. W rezultacie algorytmu RSA często używa się w połączeniu szyframi z kluczem symetrycznym. Jeśli na przykład Alicja chce szybko przesłać Bart- kowi dużą ilość zaszyfrowanych danych, robi to w następujący sposób: najpierw wybiera klucz, który posłuży do szyfrowania danych; czasem określa się go mianem klucza sesji, KS. Alicja musi przekazać Bartkowi klucz sesji, ponieważ jest to wspólny klucz symetryczny używany przez szyfr z takim kluczem (na przykład DES lub AES). Zatem Alicja szyfruje klucz sesji publicznym kluczem RSA Bartka, tzn. oblicza c = (KS)e mod n. Bartek otrzymuje zaszyfrowany za pomocą RSA klucz sesji c i odszyfrowuje go, aby uzyskać klucz sesji KS. Teraz Bartek zna klucz sesji, którego Alicja będzie używać do transferu danych zaszy- frowanych za pomocą DES. 786 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH Dlaczego RSA działa? Szyfrowanie i deszyfrowanie RSA wydaje się niemal magiczne. Dlaczego zasto- sowanie opisanych wyżej algorytmów pozwala odtworzyć oryginalną wiado- mość? Aby zrozumieć, jak działa RSA, przyjmiemy n = pq, gdzie p i q są dużymi liczbami pierwszymi używanymi w algorytmie RSA. Przypomnijmy, że w szyfrowaniu RSA wiadomość m (reprezentowana przez liczbę całkowitą) jest najpierw podnoszona do potęgi e z wykorzystaniem aryt- metyki modulo n: c = me mod n Deszyfrowanie polega na podniesieniu tej wartości do potęgi d, znów z wyko- rzystaniem arytmetyki modulo n. Wynik szyfrowania, po którym następuje operacja deszyfrowania, można zatem zapisać jako (me mod n)d mod n. Zobaczmy, co możemy powiedzieć o tej wartości. Jak wcześniej wspomnieliśmy, jedną z ważnych cech arytmetyki modularnej jest, że (a mod n)d mod n = ad mod n dla dowolnych wartości a, n i d. Dlatego, wykorzystując zależność a = me z tej właściwości, otrzymujemy: (me mod n)d mod n = med mod n Pozostaje więc wykazać, że med mod n = m. Choć próbujemy wyeliminować magię z algorytmu RSA, będziemy musieli teraz posłużyć się dość magicznym twierdzeniem z teorii liczb. Mówiąc ściślej, udowodniono, że jeśli p i q są licz- bami pierwszymi, a n = pq i z = (p – 1)(q – 1), to xy mod n jest równe x(y mod z) mod n [Kaufman 1995]. Stosując to twierdzenie dla x = m i y = ed: med mod n = m(ed mod z) mod n Jak jednak wiemy, wybraliśmy takie wartości e i d, że ed mod z = 1. Otrzymu- jemy więc: med mod n = m1 mod n = m Właśnie takiego wyniku oczekiwaliśmy! Najpierw podnosząc wartość do potęgi e (tzn. szyfrując), a następnie podnosząc ją do potęgi d (tzn. deszyfrując), otrzy- maliśmy pierwotną wartość m. Jeszcze bardziej zdumiewające jest to, że naj- pierw podnosząc wartość do potęgi d, a później do potęgi e — tzn. odwracając kolejność szyfrowania i deszyfrowania — również uzyskujemy pierwotną war- tość m! Te wspaniałe zależności wynikają bezpośrednio z arytmetyki modularnej: (md mod n)e mod n = mde mod n = med mod n = (me mod n)d mod n Bezpieczeństwo RSA wynika z tego, że nie są znane żadne szybkie algo- rytmy dzielenia liczby — w tym przypadku publicznej wartości n — na czynniki 8.3. x INTEGRALNOŚĆ KOMUNIKATÓW I UWIERZYTELNIANIE PUNKTÓW KOŃCOWYCH 787 pierwsze p i q. Gdybyśmy potrafili ustalić wartości p i q, to znając publiczną wartość e, moglibyśmy łatwo obliczyć tajny klucz d. Z drugiej strony, nie wia- domo, czy nie istnieje jakiś szybki algorytm dzielenia liczb na czynniki pierwsze, więc w tym sensie bezpieczeństwo RSA nie jest gwarantowane. Innym popularnym algorytmem szyfrowania z kluczem publicznym jest algorytm Diffiego-Hellmana, który pokrótce zbadamy w jednym z problemów w końcowej części rozdziału. Algorytm ten nie jest równie wszechstronny jak RSA, ponieważ nie można go stosować do szyfrowania wiadomości o dowolnej długości. Można go jednak wykorzystać do utworzenia symetrycznego klucza sesji, który z kolei posłuży do szyfrowania komunikatów. 8.3 Integralność komunikatów . i uwierzytelnianie punktów końcowych W poprzednim podrozdziale Czytelnicy zobaczyli, jak zastosować szyfrowanie do zapewniania poufności komunikacji między dwoma jednostkami. W tym miejscu skoncentrujemy się na równie ważnym aspekcie kryptografii — gwa- rantowaniu integralności komunikatów (jest to tak zwane uwierzytelnianie wiadomości). Obok integralności komunikatów w tym podrozdziale omówimy dwa powiązane zagadnienia — podpisy cyfrowe i uwierzytelnianie punktów końcowych. Do zdefiniowania problemu zachowania integralności komunikatów ponow- nie posłużmy się postaciami Alicji i Bartka. Załóżmy, że Bartek otrzymał wia- domość (zaszyfrowaną lub w formie tekstu jawnego) i wierzy, iż jej nadawcą jest Alicja. Aby uwierzytelnić komunikat, Bartek musi zweryfikować, że: x wiadomość rzeczywiście została wysłana przez Alicję; x wiadomość nie została zmodyfikowana po drodze do Bartka. W podrozdziałach od 8.4 do 8.7 pokażemy, że problem integralności komuni- katów jest kluczowy w niemal wszystkich bezpiecznych protokołach sieciowych. Jako konkretny przykład rozważmy sieć komputerową, w której algorytm routingu stanu łącza (na przykład OSPF) określa trasy między wszystkimi parami routerów w sieci (zobacz rozdział 4.). W algorytmach stanu łącza każdy router musi rozsyłać komunikaty o stanie łącza do wszystkich pozostałych routerów w sieci. Taki komunikat obejmuje listę wszystkich bezpośrednich sąsiadów routera i kosztów bezpośredniej komunikacji z nimi. Kiedy router otrzyma komunikaty o stanie łącza od wszystkich pozostałych routerów, może utworzyć kompletną mapę sieci, uruchomić algorytm routingu określający ścieżkę o najmniej- szym koszcie i skonfigurować tabelę przekazywania. Inga może przeprowa- dzić stosunkowo łatwy atak na algorytm routingu przez dystrybucję fałszywych 788 ROZDZIAŁ 8. x BEZPIECZEŃSTWO W SIECIACH KOMPUTEROWYCH komunikatów z nieprawidłowymi informacjami o stanie łącza. Stąd wynika konieczność zachowania integralności komunikatów. Kiedy router B otrzyma komunikat o stanie łącza od routera A, będzie mógł zweryfikować, że to router A przygotował tę wiadomość i nikt nie zmodyfikował jej po drodze. W tym podrozdziale opisujemy popularną technikę zapewniania integral- ności komunikatów stosowaną w wielu bezpiecznych protokołach sieciowych. Jednak zanim do tego przejdziemy, musimy omówić następne ważne zagadnie- nie w kryptografii — kryptograficzne
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Sieci komputerowe. Ujęcie całościowe. Wydanie V
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: