Sieci komputerowe Wykład 7. Bezpieczeństwo w sieci Paweł Niewiadomski Katedra Informatyki Stosowanej Wydział Matematyki UŁ niewiap@math.uni.lodz.pl
Zagadnienia związane z bezpieczeństwem Poufność (secrecy) informacja może zostać odczytana tylko przez uprawnionych użytkowników Uwierzytelnianie (authentication) upewnienie się, że dany użytkownik jest tym, za kogo się podaje?
Zagadnienia związane z bezpieczeństwem Niezaprzeczalność (nonrepudiation) upewnienie się, że dany użytkownik nie może wyprzeć się pewnych swoich czynności Nienaruszalność (integrity) upewnienie się, że informacja nie została zmodyfikowana w drodze od nadawcy do odbiorcy
Co może stać się z niezabezpieczoną informacją? Przykładowy e-mail: Zamawiam 1 bilet lotniczy do Londynu Proszę obciążyć moją kartę kredytową nr. xyz Jan Kowalski, ul. Akacjowa 5 m. 36 Łódź Przykładowe problemy: Ktoś może przechwycić numer karty kredytowej Kowalskiego gdy e-mail będzie w drodze (poufność). Kowalski może wysłać swoją wiadomość do kogoś, kto jedynie podaje się za biuro podróży i ujawnić mu swoje dane osobowe i numer karty kredytowej (uwierzytelnianie). Kowalski może twierdzić, że wcale nie wysłał takiego zamówienia (niezaprzeczalność). Ktoś po drodze może zmienić 1 na 20, Londynu na Honolulu (nienaruszalność)
Kryptografia Jak to działa? Nadawca szyfruje wiadomość Wiadomość jest przesyłana w formie zaszyfrowanej przez sieć Odbiorca odszyfrowuje wiadomość Sposoby szyfrowania: kody zamiana słów np. rozmowa w obcym języku szyfry zamiana znaków bądź innych arbitralnie wybranych kwantów informacji
Kryptografia Szyfrowanie podstawowe pojęcia: niezaszyfrowana wiadomość tekst jawny plaintext (P) zaszyfrowana wiadomośc szyfrogram cipher (C) Po stronie nadawcy ma miejsce transformacja E K1 (P) C C transportowany jest przez sieć Po stronie odbiorcy ma miejsce transformacja D K2 (C) P E i D są ogólnie znanymi funkcjami dwóch zmiennych: pierwsza zmienna dane (C lub P) druga zmienna klucz znany tylko odbiorcy i/lub nadawcy (K1, K2)
Kryptografia Proste szyfry: zamiana znaków łamigłówki z gazet przykład: ABCDEFGHI QWERTYUIOP... BABCIA WQWEOQ klucze ciąg złożony z zaszyfrowanych kolejnych liter alfabetu zamiana kolejności znaków przykład wypisujemy tekst po pięć liter w linijce, a potem spisujemy kolumny alamakotaatomekmapsa alama kotaa aktmlooaatmpmaesaaka tomek mapsa klucz ilość kolumn bardzo łatwo odkryć klucz mając do dyspozycji zaszyfrowany tekst
Kryptografia Prosta bezwarunkowo bezpieczna metoda szyfrowania one-time pad połączona z algorytmem XOR klucz generowany losowo, jednorazowy oraz długości co najmniej takiej, jak długość wiadomości algorytm szyfrowania (E): P xor K C algorytm odszyfrowania (D): C xor K P wady wynikają z powyższych cech klucza
Kryptografia Inne metody pośrednie mniejsza odporność na złamanie szyfru, niż one-time pad większa wygoda użytkowania Zabezpieczenie przed aktywnymi atakami: nadmiarowość informacji (redundancy) nie każdy szyfrogram po odszyfrowaniu da prawidłowy tekst jawny tekst jawny powinien zawierać jakiś rodzaj sumy kontrolnej zabezpiecza przed przesyłaniem losowych informacji przez intruza znaczniki czasu (timestamp) informacja staje się nieaktualna po pewnym czasie zabezpiecza przed ponownym przesyłaniem tej samej zaszyfrowanej wiadomości (np. zamówienia)
Kryptografia - klucze E K1 (P) C C = E (P,K 1 ) D K2 (C) P P = D (C,K 2 ) E, D funkcje dwóch zmiennych K 1, K 2 klucze (druga zmienna) tylko znając klucz możemy zaszyfrować/odszyfrować wiadomość algorytm nie powinien dawać możliwości znalezienia klucza nawet, gdy mamy do dyspozycji P i odpowiadający mu C klucz jest często sumą kontrolną wygenerowaną na podstawie jakiegoś hasła im większa długość klucza, tym trudniej go odgadnąć
Kryptografia - klucze Szyfry symetryczne (metody klucza tajnego) K 1 =K 2 DES, 3DES, IDEA, AES, RC5 Szyfry asymetryczne (metody klucza jawnego) K 1 K 2 jeden klucz ogólnodostępny, drugi dostępny tylko konkretnej osobie wiadomości zaszyfrowane przy pomocy K 1 można odczytać tylko znając K 2 i odwrotnie RSA, DH, DSA
Kerberos System korzystający tylko z kluczy prywatnych Wykorzystany m.in. w Win 2000/2003 Server Oparty na założeniu, że jest tylko jeden bezpieczny serwer systemie tzw. biletów Obsługa: uwierzytelniania poufności nienaruszalności
Kerberos - uwierzytelnianie Problem: dwa hosty w sieci: klient serwer Skąd serwer wie, że klient jest tym, za kogo się podaje? Skąd klient wie, że serwer jest tym, za kogo się podaje? Rozwiązanie zarówno klient jak i serwer muszą dysponować hasłem, które po wymieszaniu (hash) daje klucz odpowiednio serwera (KS) i klienta (KK) Oba te hasła zna dodatkowo bezpieczny serwer uwierzytelniający (SU)
Kerberos - uwierzytelnianie Gracze: klient (K) serwer (S) serwer uwierzytelniający (SU) serwer przyznający bilety (SPB)
Kerberos - uwierzytelnianie Sytuacja 1 - klient K loguje się do systemu K SU: proszę o przyznanie biletu do SPB SU K: B SPB, E KK (K K/SPB, Czasy, ) B SPB = E KSPB (K K/SPB, Czasy, ) K podaje hasło generowany jest na jego podstawie klucz KK K odszyfrowuje wiadomość i uzyskuje K K/SPB Teraz klient posiada B SPB oraz K K/SPB
Kerberos - uwierzytelnianie Sytuacja 2 - klient K chce uzyskać dostęp do usługi na serwerze S K SPB: B SPB, E KK/SPB (ID, TS, ) B SPB = E KSPB (K K/SPB, Czasy, ) SPB odszyfrowuje B SPB i uzyskuje K K/SPB SPB odszyfrowuje wiadomość i ustala tożsamość K na podstawie ID SPB K: B S, E KK/SPB (K K/S, Czasy, ) B S = E KS (K K/S, Czasy, )
Kerberos - uwierzytelnianie Sytuacja 3 klient K chce skorzystać z usługi na serwerze S K S: B S, K KK/S (ID, TS, ) B S = E KS (K K/S, Czasy, ) S odszyfrowuje bilet i uzyskuje K K/S S odszyfrowuje wiadomość przy użyciu K K/S i uzyskuje tożsamość użytkownika S sprawdza w swojej bazie danych, czy użytkownik ma prawo dostępu do usługi dodatkowo, w celu uwierzytelnienia serwera może mieć miejsce: S K: K KK/S (ID S, TS, )
Kerberos poufność i nienaruszalność Nienaruszalność K i S mogą wyliczać sumy kontrolne z przesyłanych danych i szyfrować je przy pomocy K K/S jeśli dane zostaną zmienione, suma kontrolna nie będzie się zgadzać, bo nikt oprócz S i K nie jest w stanie jej poprawnie zaszyfrować Poufność K i S mogą szyfrować wszystkie przesyłane dane przy pomocy K K/S zapewnia również nienaruszalność
Pretty Good Privacy Ochrona poczty elektronicznej: poufność uwierzytelnianie niezaprzeczalność nienaruszalność Wykorzystane technologie kryptograficzne: szyfrowanie asymetryczne szyfrowanie symetryczne tworzenie skrótów cyfrowych (hash)
PGP podstawy Gracze: nadawca N odbiorca O wiadomość jawna P, wiadomość zaszyfrowana C Klucze: K NPr, K NPu klucze prywatny i publiczny nadawcy K OPr, K OPu klucze prywatny i publiczny odbiorcy K S jednorazowo generowany klucz sesji
PGP poufność i nienaruszalność Najprościej byłoby zaszyfrować całą wiadomość algorytmem RSA z kluczem publicznym odbiorcy, ale: RSA b. wolny (100 x wolniejszy niż DES/IDEA) Wiadomość generujemy następująco: IDEA KS (P), RSA KPuO (K s ) Odbiorca odszyfrowuje K S przy pomocy K PrO, a następnie odszyfrowuje P przy pomocy K S
PGP Uwierzytelnianie i niezaprzeczalność Podpis cyfrowy (digital signature) - DS Najprościej byłoby zaszyfrować całą wiadomość kluczem prywatnym nadawcy, ale: odszyfrowywanie powolne (algorytm RSA) N tworzy z wiadomości skrót cyfrowy (message digest) przy pomocy algorytmu haszującego (np. MD5) i ten skrót szyfruje przy pomocy K NPr : RSA KNPr (MD5(P)) DS N dołącza DS do wiadomości O odszyfrowuje MD5(P) przy pomocy K NPu, a następnie sam generuje skrót MD5 z otrzymanej wiadomości Jeżeli te dwa skróty są zgodne to: N podpisał tą wiadomość N podpisał tą wiadomość
PGP klucze Klucze prywatne przechowywane są w odpowiedniej bazie w postaci zaszyfrowanej: IDEA MD5(hasło) (K Pr ) Klucze jawne innych użytkowników również przechowywane są w odpowiedniej bazie
PGP certyfikaty Problem ktoś może podszyć się pod inną osobę i przesłać nam w jej imieniu swój klucz publiczny. Certyfikat cyfrowy sposób upewnienia się, że dany klucz publiczny rzeczywiście pochodzi od tej, a nie innej osoby Rodzaj dowodu osobistego. Zawiera: wersję PGP klucz publiczny użytkownika jego dane osobowe okres ważności typ algorytmu asymetrycznego (RSA, DH, DHA) preferowany algorytm symetryczny (IDEA, 3DES, CAST) podpis cyfrowy właściciela klucza jeden lub więcej podpisów cyfrowych osób trzecich
Certyfikaty X.509 Również wykorzystywane w PGP Główne zastosowanie strony WWW Zawierają: wersję X.509 klucz publiczny użytkownika numer seryjny unikatowy identyfikator użytkownika okres ważności unikatowy identyfikator instytucji certyfikującej podpis cyfrowy instytucji certyfikującej algorytm używany do podpisu
Secure Sockets Layer Zabezpiecza komunikację w sieci WWW: wzajemne uwierzytelnianie klienta i serwera poufna komunikacja nienaruszalność danych Dodatkowa warstwa między warstwą aplikacji (najczęściej HTTP) a warstwą transportu (TCP) Wykorzystane technologie kryptograficzne: szyfrowanie asymetryczne szyfrowanie symetryczne tworzenie skrótów cyfrowych (hash)
SSL etapy Etap I nawiązanie połączenia K S: wersja SSL, preferencje, L A L A informacja jednorazowa (nonce) S K: Wersja SSL, wybór, L B S K: Łańcuch certyfikatów X.509 przeglądarki rozpoznają ok. 100 najważniejszych instytucji certyfikujących K S: E KSPu (PS) PS premaster secret wstępna tajna informacja K i S znają L A, L B oraz PS generują na ich podstawie klucz sesji (K SES ) dalej używany do szyfrowania danych uwierzytelnianie K następuje już po nawiązaniu bezpiecznego połączenia w ramach drugiego etapu (standardowe formularze HTTP)
SSL etapy Etap II wymiana danych podział danych na segmenty kompresja segmentów dodanie MAC (message authentication code) MAC = Hash (segment, K SES ) (algorytmy MD5, SHA-1) szyfrowanie przy użyciu K SES (algorytmy symetryczne RC4, 3DES) dodanie nagłówka