Bezpieczenstwo systemow informatycznych

Transkrypt

Bezpieczenstwo systemow informatycznych
Bezpieczeństwo – Protokoły
Bezpieczne protokoły
Główne zagadnienia wykładu
Protokół Secure IP
IPSec jest standardem stworzonym przez IETF (Internet Engineering Task Force). Jest
protokołem warstwy trzeciej (poziom protokołu IP) według modelu OSI zapewniającym:
• poufność przesyłanych informacji (poprzez szyfrowanie),
• integralność (poprzez generowanie i sprawdzanie sum kontrolnych),
• uwierzytelnienie (poprzez podpisywanie) użytkownika lub komputera,
• przezroczystość dla aplikacji.
Zabezpieczenie polega na wprowadzeniu dwóch formatów nagłówków, dodawanych do
standardowych nagłówków IP: Authentication Header (AH) i Encapsulation Security Payload
(ESP). Nagłówki te są umieszczane po nagłówkach IP, a przed nagłówkami protokołów warstwy
czwartej.
IP Authentication Header zapewnia integralność i uwierzytelnienie datagramu IP.
Jego działaniem jest objęty cały pakiet, zarówno dane jak i nagłówek IP. Dane uwierzytelniające
są obliczone za pomocą funkcji skrótu zastosowanej do niezmiennej części datagramu (m.in.
adres źródła i adres docelowy). Podpisu cyfrowego używa się rzadko ze względu na powolność
tej technologii. Nie jest zapewniona poufność..
IP Encapsulation Security Payload zapewnia przede wszystkim poufność datagramów. Może być również wykorzystywany do zapewnienia integralności i uwierzytelnienia
poprzez zastosowanie podpisu. Szyfrowanie i podpisywanie dotyczy tylko danych. Nie dotyczy
nagłówka IP.
Tryby pracy protokołu IPSec
Tryb transportowy: W pakiecie szyfrowane są tylko dane. Oryginalny nagłówek IP pozostaje niezmieniony, ale może być podpisany. Pozostawienie nieszyfrowanego nagłówka
umożliwia obcym prowadzenie analizy ruchu pomiędzy węzłami. Przesyłane dane są jednak
szyfrowane.
Tryb tunelowy:
Oryginalny datagram IP jest w całości szyfrowany stając się zawartością w nowym pakiecie IP. Funkcje szyfrowania, deszyfrowania, sprawdzania integralności i
uwierzytelnienia realizują bramy (gateway) rozpoznające protokół IPSec. Systemy docelowe nie
muszą być modyfikowane aby korzystać z IPSec. Ten tryb uniemożliwia analizę ruchu. Z zewnątrz możliwe jest więc określenie jedynie końców tunelu.
Security Association
Określenie mechanizmów IPSec użytych w konkretnym połączenie realizuje się poprzez
zdefiniowanie tzw. Security Association (SA). Określa ono sposób przekazywania danych w
jednym kierunku. SA zawiera:
• informacje definiujące algorytm szyfrowania,
• informacje definiujące algorytmu uwierzytelniania i sprawdzania integralności,
• klucze szyfrujące i kodujące wykorzystywane w AH i ESP,
• okres ważności kluczy,
• czas ważności asocjacji.
SA są jednoznacznie identyfikowane poprzez docelowy adres IP oraz SPI (Security Parameter
Index). Każdy pakiet IPSec zawiera w nagłówku numer SPI, pozwalający na określenie infor-
Opracował: Zbigniew Suski
1/6
Bezpieczeństwo – Protokoły
macji potrzebnych do odszyfrowania treści pakietu, sprawdzenia jego integralności lub potwierdzenia tożsamości nadawcy.
Zarządzanie kluczami
Proces budowania bezpiecznego połączenia, dostarczania odpowiednich kluczy i wzajemnego
uwierzytelnienia stron jest realizowany przy pomocy odrębnego protokołu ISAKMP (Internet Security Associattion and Key Management Protocol). Występuje on często pod nazwą IKE (Internet Key Exchange).
Implementacje
Implementacje IPSec pojawiają się w coraz większej ilości systemów operacyjnych. Dodawane
są do wielu rozwiązań typu firewall (Checkpoint, PIX, Bordeware). Są również dostępne darmowe rozwiązania dla Linuxa (FreeS/WAN), FreeBSD (KAME). Budowanie takich połączeń jest
również możliwe w Windows 2000.
Protokół SSL
SSL (Secure Socket Layer) realizuje uwierzytelnienie, szyfrowanie oraz zapewnia integralność
wiadomości. Posiada wbudowany mechanizm uwierzytelniania serwera i opcjonalnie klienta.
Współpracuje z zaporami sieciowymi i połączeniami tunelowanymi. Bazuje na protokole zapewniającym niezawodną komunikację (np. TCP). Jest niezależny od aplikacji warstw wyższych.
Dzięki temu może być wykorzystywany do zabezpieczania takich protokołów jak TELNET, FTP,
HTTP.
Mechanizm potwierdzania tożsamości serwerów korzysta z algorytmu RSA oraz certyfikatów nadawanych przez organizacje niezależne.
Składa się z dwóch protokołów:
•
SSL Record Protocol - używany do bezpiecznego przesyłania wiadomości.
•
SSL Handshake Protocol - używany do negocjowania parametrów bezpiecznego
połączenia.
SSL Record Protocol - określa strukturę ramki zawierającej przesyłane dane. Znajdują się
w niej trzy pola:
➣ skrót wiadomości (MAC-DATA), nazywany kodem uwierzytelnienia MAC (message
authentication code).
➣ dane do przesłania (ACTUAL-DATA),
➣ dane wypełniające (PADDING-DATA).
Przy przesyłaniu rekordu tekstem jawnym, pola MAC-DATA i PADDING-DATA nie występują.
MAC-DATA= HASH(SECRET, ACTUAL-DATA, PADDING-DATA,
SEQUENCE-NUMBER)
Zawartość pola SECRET jest określana przez nadawcę i jest związana z metodą szyfrowania. SEQUENCE-NUMBER jest zawartością licznika aktualizowanego przez nadawcę. Każdy
nadawca ma swój licznik.
SSL Handshake Protocol
Protokół ten realizowany jest w dwóch głównych etapach. Etap pierwszy umożliwia ustanowienie poufnego połączenia. Etap drugi jest wykorzystywany do autentykacji klienta.
Opracował: Zbigniew Suski
2/6
Bezpieczeństwo – Protokoły
Negocjowanie parametrów przebiega w sześciu etapach:
1. Faza powitania (Hello phase) – służy do ustalenia zbioru algorytmów zapewniających poufność i uwierzytelnienie. Dodatkowo wykrywane są identyfikatory pozostawione z poprzednich sesji. Wysyłany jest również klucz publiczny klienta.
2. Faza wymiany klucza (key exchange phase) – służy do wymiany kluczy pomiędzy klientem
i serwerem. W wyniku obie strony wchodzą w posiadanie współdzielonego klucza głównego (master key).
3. Faza tworzenia klucza sesji (session key production) jest wykorzystywana do wymiany
aktualnego klucza sesyjnego.
4. Faza weryfikacji serwera (server veryfication key) występuje tylko wtedy gdy do dystrybucji
kluczy wykorzystywany jest algorytm RSA. Po otrzymaniu od klienta klucza głównego i klucza sesji, serwer je deszyfruje przy pomocy swojego klucza prywatnego i wysyła potwierdzenie.
5. Faza uwierzytelniania klienta (client authentication phase) polega wysłaniu przez serwer
komunikaty zawierającego żądanie certyfikatu klienta. Klient odpowiada komunikatem zawierającym certyfikat.
6. Faza zakończenia (finished phase) polega na wymianie komunikatów końcowych.
Firma Netscape udostępnia postać źródłową biblioteki SSLRef zawierającej procedury
napisane w języku C. Można je stosować w programach wykorzystujących protokół SSL.
Protokół S-HTTP
Zapewnia usługi zabezpieczające dla transakcji HTTP. Dla zapewnienia bezpieczeństwa
komunikatów S-HTTP wykorzystuje podpis cyfrowy, szyfrowanie, sprawdzanie i uwiarygodnienie komunikatów. Usługi bezpieczeństwa są negocjowane za pomocą nagłówków i atrybutów
związanych ze stroną WWW. Usługi S-HTTP są dostępne tylko dla połączeń HTTP i aplikacja
HTTP musi być świadoma tych usług – nie są dla niej przezroczyste.
W zwykłej transakcji HTTP serwer kończy połączenie po wysłaniu danych do klienta. W
przypadku S-HTTP serwer nie zakończy połączenia dopóki nie nakaże tego klient. Ma to na
celu zachowanie ważności ustalonego klucza szyfrowania i pominięcie fazy negocjacji przed
przesłaniem następnej porcji danych. Zapobiega to uzgadnianiu przed przesłaniem każdego
komunikatu.
S-HTTP wprowadza nową metodę (security) i nagłówki komunikatów SHTTP przesyłanych w
czasie negocjacji:
SHTTP-Privacy-Domain – określa standard zapisu zabezpieczanej wiadomości.
SHTTP-Certificate-Type – określa akceptowane formaty certyfikatów.
SHTTP-Key-Exchange-Algorithm – określa algorytm używamy do wymiany kluczy.
SHTTP-Signature-Algorithms – określa algorytm podpisu cyfrowego.
SHTTP-Message-Digest-Algorithms – określa algorytm zapewnienia integralności danych –
funkcja skrótu.
SHTTP-Symmetric-Content-Algorithms – określa algorytm symetrycznego szyfru blokowego,
który zostanie wykorzystany do szyfrowania danych.
SHTTP-Symmetric-Header-Algorithms – określa symetryczny algorytm szyfrowania, który
zostanie wykorzystany do szyfrowania nagłówków.
SHTTP-Privacy-Enhancements – określa zabezpieczenia związane z wiadomością.
Opracował: Zbigniew Suski
3/6
Bezpieczeństwo – Protokoły
System Secure RPC
Jest to system bezpiecznego zdalnego wywoływnia procedur. Jest wbudowany w NIS+. Jest to
system oparty na szyfrowaniu z kluczem publicznym i tajnym. Implementacja firmy Sun wykorzystuje mechanizm Diffie-Hellmana do dystrybucji kluczy i algorytmu DES do szyfrowania
przesyłanych danych. DES jest wykorzystywany również do szyfrowania tajnego klucza użytkownika. Klucz ten jest przechowywany w centralnym serwerze sieciowym.
Popularność Secure RPC jest dużo mniejsza niż pierwotnego RPC. Wynika to z faktu, że
obowiązują w tej chwili ograniczenia patentowe (na szyfrowanie z kluczem publicznym) i nie ma
w tej chwili dostępnej wersji bezpłatnej.
Weryfikacja autentyczności
Każda jednostka (principal) systemu ma klucz tajny i klucz publiczny. Klucz publiczny jest
przechowywany w postaci niezaszyfrowanej, klucz tajny w postaci zaszyfrowanej z użyciem
hasła jednostki. Jednostka udowadnia swoją tożsamość możliwością odszyfrowania klucza tajnego i przez to uczestniczenia w wymianie kluczy według procedury Diffie-Hellmana. Każda
jednostka łączy swój klucz tajny z kluczem publicznym innych jednostek w celu otrzymania
wspólnego klucza.
Dystrybucja bazy danych zawierającej nazwy użytkowników, klucze publiczne i zaszyfrowane tajne jest organizowana przy pomocy NIS lub NIS+. Klucz tajny jest szyfrowany przy
pomocy hasła użytkownika i algorytmu DES. Oprogramowanie stacji jest wobec tego w stanie
odszyfrować klucz tajny.
Serwer jest przekonany o autentyczności użytkownika gdyż:
• Pakiet przesyłany przez użytkownika jest zakodowany kluczem konwersacyjnym.
• Klucz ten może być znany tylko komuś, kto zna klucz publiczny serwera i klucz tajny użytkownika.
• Poznanie klucza tajnego jest możliwe po jego odszukaniu za pomocą NIS i odszyfrowaniu
przy pomocy hasła użytkownika.
Całe bezpieczeństwo zależy od trudności złamania klucza konwersacyjnego. Odszyfrowane
hasło nie jest przesyłane. Na serwerze plików nie ma tajnych informacji, które należałoby zabezpieczać.
Ponieważ szyfrowanie kluczem publicznym jest długotrwałe, więc jest wykorzystywane
tylko do pierwszego logowania i wymiany kluczy sesyjnych.
Wady Secure RPC:
• Każdy klient musi być indywidualnie modyfikowany do współpracy z Secure RPC.
Lepszym rozwiązaniem byłoby wykorzystanie np. zmiennych środowiskowych.
• Pogorszenie szybkości działania. Kilka procent.
• Brak zapewnienia spójności i poufności danych. Weryfikowana jest tylko autentyczność
użytkownika a nie przesyłane dane.
• Możliwe jest złamanie klucza publicznego.
• Możliwe jest złamanie klucza tajnego. Obecnie 56 bitów.
• Wymaga stosowania NIS lub NIS+. Trudne byłoby jego wykorzystywanie w środowiskach
heterogenicznych.
Opracował: Zbigniew Suski
4/6
Bezpieczeństwo – Protokoły
Protokół SSH
Protokół SSH umożliwia bezpieczne zdalne logowanie oraz bezpieczny dostęp do innych
usług sieciowych poprzez sieć niezabezpieczoną. Obejmuje trzy główne składniki:
• Transport layer protocol [SSH-TRANS] udostępniający uwierzytelnienie serwera,
poufność i integralność. Opcjonalnie możliwa jest również kompresja.
• User authentication protocol [SSH-USERAUTH] służy do uwierzytelniania klienta
wobec serwera.
• Connection protocol [SSH-CONN] multipleksuje szyfrowany tunel w wiele kanałów
logicznych.
Każdy serwer posiada swój klucz. Może ich posiadać więcej dla różnych algorytmów szyfrowania. Kilka hostów może dzielić ten sam klucz.
Klucz serwera jest wykorzystywany podczas wymiany kluczy do weryfikacji, czy klient
nawiązał połączenie z właściwym serwerem. Klient musi wobec tego znać wcześniej klucze publiczne serwerów. Wykorzystywane są dwa modele bezpieczeństwa:
• Klient posiada lokalną bazę danych, w której zapisane są nazwy hostów i ich klucze
publiczne. Taka baza jest dość uciążliwa w administrowaniu.
• Związek nazwa hosta-klucz jest certyfikowany przez urząd certyfikacyjny. Klient zna
jedynie klucz CA (certification authority).i może w ten sposób uzyskać klucz dowolnego hosta znajdującego się w obszarze odpowiedzialności CA.
Dostępna jest również opcja nie wymagająca kluczy podczas pierwszego połączenia. Powinna
ona być wykorzystywana tylko raz. Podczas pierwszego połączenia klient powinien otrzymać
klucz serwera i zapamiętać go w swojej bazie.
Jeżeli połączenie nie jest realizowane po raz pierwszy, to otrzymany klucz serwera jest porównywany z kluczem zapamiętanym wcześniej. Jeżeli klucz jest inny, to prawdopodobnie nastąpiło
połączenie z innym serwerem. Zgodność kluczy niczego nie dowodzi, gdyż publiczny klucz
serwera może być powszechnie dostępny.
W drugim etapie autoryzacji klient generuje liczbę losową, która będzie używana do szyfrowania całej dalszej transmisji. Wygenerowana liczba zostaje zaszyfrowana kluczem prywatnym klienta i kluczem publicznym serwera i wysłana do serwera. Aby odszyfrować przesyłkę
serwer musi dysponować swoim kluczem prywatnym i kluczem publicznym klienta. Poprawne
odszyfrowanie przesłanej liczby pozwala stwierdzić, że oba systemy biorące udział wymianie
informacji są rzeczywiście tymi, za które się podają. Przesłane dane stają się kluczem sesyjnym
gdyż cała dalsza wymiana informacji opiera się na metodach szyfrowania symetrycznego. W
następnej kolejności odbywa się autoryzacja użytkownika.
Protokół umożliwia negocjację metod szyfrowania, uwierzytelnienia, zapewnienia integralności, wymiany kluczy, kompresji. Dla każdego kierunku wymiany informacji mogą być wykorzystywane inne metody.
Opracował: Zbigniew Suski
5/6
Bezpieczeństwo – Protokoły
Literatura:
1) V. Ahuja. Network & Internet Security. Academic Press, Inc, 1996. (tłum.)
2) D. Atkins. Internet Security. Professional Reference. New Riders Publishing, 1997. (tłum.
LT&P).
3) R. Atkinson. Security Architecture for Internet Protocol, RFC 1825, Aug 1995.
4) R. Atkinson. IP Authentication Header. RFC 1826, Aug 1995.
5) R. Atkinson. IP Encapsulation Security Payload (ESP), RFC 1827, Aug 1995.
6) S. Garfinkel, G. Spafford. Practical Unix and Internet Security, O’Reilly&Associates Inc.
1996. (tłum.)
7) K.E.B. Hickman, T.Elgamal. The SSL Protocol. Internet Draft, 1995.
8) P.Karn, P.Metzger, W.Simpson. The ESP DES-CBC Transform, RFC 1829, Aug. 1995.
9) L. Klander. Hacker Proof. Jamsa Press, 1997. (tłum.)
10) P. Metzger, W. Simpson. IP Authentication using Keyed MD5, RFC 1828, Aug. 1995.
11) E.Rescola, A.Schiffman. The Secure HyperText Transfer Protocol, Internet Draft, Jul 1995.
12) P. Wayner. Digital Cash: Commerce on the Net. AP Professional, 1996
13) T. Ylonen, i inni. SSH Protocol Architecture. Network Working Group, Internet Draft, Feb.
1999.
14) T. Ylonen, i inni SSH Transport Layer Protocol, Internet Draft, Feb. 1999.
15) T. Ylonen, i inni. SSH Authentication Protocol, Internet Draft, Feb. 1999.
16) T. Ylonen, i inni. SSH Connection Protocol, Internet Draft, Feb. 1999.
Dodatkowe źródła:
1. Z. Kozak, Wirtualne sieci prywatne, Software 2.0, nr 11/2000.
2. M. Szymański, IPSec i Linux, Linux Plus, nr 9/2000.
3. P. Wojakowski, R. Kuliga, Rozwiązania IPSec i VPN. Software 2.0, nr 09/2000.
Adresy WWW:
1.
2.
3.
4.
5.
6.
7.
www.openbsd.org/faq/faq13.html
www.cis.ohio-stae.edu/htbin/rfc/rfc2401.html
www.cis.ohio-stae.edu/htbin/rfc/rfc2409.html
www.cis.ohio-stae.edu/htbin/rfc/rfc2522.html
www.cis.ohio-stae.edu/htbin/rfc/rfc2709.html
www.cis.ohio-stae.edu/htbin/rfc/rfc2402.html
www.codetalker.com/greenbox/docs/vpn-24-minifaq.html - FAQ: OpenBSD 2.4 IPSEC VPN
Configuration
8. www.secureops.com/vpn
9. hem.passagen.se/hojg/isakmpd/index.html
Opracował: Zbigniew Suski
6/6

Podobne dokumenty