|
SSL - protokół bezpiecznych transmisji internetowych Przeglądarki i serwery internetowe komunikują się ze sobą za pomocą protokołu HTTP (Hypertext Transport Protocol). Największa wadą tego protokołu jest brak ochrony przesyłanych danych.Większość stron WWW i serwerów w Internecie stosuje bezpieczny protokół — SSL (Secure Socket Layer) — który został zaprojektowany przez firmę Netscape. Na tej stronie umieściłem szczegółowe informacje o nim:
Zbiór linków:
Wprowadzenie do protokołu SSL 3.0 W odpowiedzi na problemy związane z zapewnieniem bezpieczeństwa podczas przesyłania danych w Internecie firma Netscape opracowała protokół zabezpieczający informacje. Działa on wraz z protokołami warstwy aplikacji (takimi jak HTTP, Telnet, NNTP i FTP), a także z protokołem TCP/IP. Protokół SSL 3.0 umożliwia szyfrowanie danych, potwierdzanie tożsamości serwera, zapewnianie integralności przesyłanych komunikatów, a także opcjonalne potwierdzanie tożsamości komputera typu klient w połączeniach realizowanych za pomocą protokołu TCP/IP. Na rysunku 1 przedstawiłem stos protokołów:
Rys.1. Warstwa SSL znajduje się pomiędzy warstwami innych protokołów TCP/IP SSL jest protokołem otwartym, nie należącym do żadnej instytucji. Oznacza to, że firma Netscape zezwoliła przedsiębiorstwom i pojedynczym osobom na korzystanie z niego w aplikacjach internetowych. Ponadto rozwiązanie to zostało zaprezentowane komisji ds. bezpieczeństwa należącej do organizacji W3C (W3 Consortium). Stwierdzi ona, czy protokół SSL można zalecić jako standardowe zabezpieczenie stosowane na stronach WWW i w serwerach internetowych. Firma Netscape współpracuje z organizacją W3C przy rozwijaniu i standaryzowaniu niezawodnych mechanizmów i protokołów dla Internetu. Protokół SSL umożliwia użytkownikom i serwerom szyfrowanie i ochronę danych przesyłanych w sieci WWW i w Internecie. Serwer i przeglądarka, które przesyłają między sobą informacje, muszą współpracować z protokołem SSL. Wszystkie popularne przeglądarki, w tym Navigator® firmy Netscape i Internet Explorer firmy Microsoft, mogą obsługiwać połączenia za pomocą tego rozwiązania. Zabezpieczenie wymienianych danych nie rozwiązuje wszystkich problemów użytkowników Internetu. Na przykład w trakcie realizowania niektórych transakcji trzeba czasem przekazać administratorowi systemu numer swojej karty kredytowej. Protokół SSL i inne technologie chroniące przesyłane dane zabezpieczają tylko sam proces komunikowania się za pomocą Internetu. Nie uchronią one jednak przed nierzetelnymi lub nieostrożnymi ludźmi, z którymi często prowadzi się interesy. Administratorzy serwerów muszą przedsięwziąć dodatkowe kroki w celu ochrony informacji znajdujących się w systemie. Muszą oni zapewnić fizyczne bezpieczeństwo komputerów, a także chronić dostęp do oprogramowania za pomocą haseł i prywatnych kluczy. Korzystanie z bezpiecznej strony WWW przypomina przekazanie numeru swojej karty kredytowej podczas rozmowy telefonicznej. Można być pewnym, że nikt może podsłuchać prowadzonej rozmowy, a rozmówca rzeczywiście pracuje dla firmy sprzedającej dany towar. Aby wierzyć, że przekazane dane pozostaną poufne, a firma jest tą, za którą się podaje, należy jednak mieć zaufanie do tej osoby. Jak SSL zapewnia ochronę transmisji? Twórcy Internetu nie pomyśleli o konieczności zabezpieczania danych przesyłanych za pomocą protokołów tej sieci. Ani protokół TCP/IP, ani HTTP nie umożliwiają szyfrowania czy ochrony indywidualnych połączeń. Od niedawna przedsiębiorstwa pracują nad usunięciem tej wady protokołów internetowych. Jednym z najpopularniejszych protokołów jest S-HTTP, zaprojektowany przez firmę Enterprise Integration Technologies. Innym rozwiązaniem jest protokół SSL opracowany przez firmę Netscape. Dzięki protokołowi SSL użytkownicy i serwery mogą chronić dane przekazywane w łnternecie za pomocą trzech usług : Nie zabezpieczone dane przesyłane w Internecie mogą zostać sfałszowane lub wykorzystane przez innych użytkowników tej sieci. W normalnych warunkach informacje są przesyłane między komputerem a serwerem w procesie zwanym skokiem IP, który może obejmować wiele systemów komputerowych. Każdy z tych systemów stanowi potencjalne zagrożenie dla bezpieczeństwa transmitowanych danych, ponieważ może uzyskać do nich dostęp. Aby uniemożliwić hakerom i komputerom pośredniczącym w transmisji przechwytywanie poufnych danych lub zakłócanie transmisji, należy korzystać z zabezpieczeń. Na stosie protokołów TCP/IP warstwa SSL znajduje się między warstwą aplikacji, zawierającą protokoły HTTP, SMTP, Telnet, FTP, Gopher i NNTP, a warstwą transportową (obejmującą moduł TCP — Transport Control Protocol) i warstwą sieciową, która zawiera moduł IP (Internet Protocol). Dzięki umieszczeniu warstwy SSL pod warstwą aplikacji, a nad warstwami protokołu TCP/IP, może ona skorzystać z istniejących internetowych standardów komunikacyjnych nie stając się równocześnie protokołem aplikacji. Dane przesyłane w Internecie między przeglądarką i serwerem współpracującymi z protokołem SSL są zaszyfrowane. Gwarantuje to, że wysłane informacje dotrą do adresata nie zmodyfikowane i nie odczytane przez nikogo po drodze. Cyfrowe certyfikaty SSL do weryfikowania serwerów Mechanizm potwierdzania tożsamości serwerów protokołu SSL korzysta z algorytmu szyfrowania z kluczem publicznym, zwanego RSA, oraz z certyfikatów nadawanych serwerom przez niezależną organizację (taką jak Thawte lub Verisign). Po uzyskaniu połączenia z bezpiecznym serwerem można obejrzeć jego certyfikat potwierdzający tożsamość serwera. Jak SSL zabezpiecza transakcje potwierdzania przez adresata? Po ustanowieniu bezpiecznego połączenia między przeglądarką i serwerem serwer wysyła klucz sesji, stosowany następnie do szyfrowania wymienianych danych. Mimo że nadawca i odbiorca muszą uzgodnić klucz sesji, bezpieczeństwo przesyłanych informacji nie jest zagrożone. Szyfrowanie z kluczem publicznym jest najpewniejszą dostępną metodą szyfrowania danych. Podczas inicjowania transmisji (rozpoczynania przesyłania danych) protokół SSL chroni klucz sesji za pomocą tej metody. Przeglądarka nawiązując połączenie z bezpiecznym serwerem wysyła do niego komunikat Client.Hello, Działa on tak, jak żądanie połączenia HTTP. Oprócz tego przeglądarka wysyła do serwera kilka informacji o sobie oraz unikatowy klucz publiczny, wygenerowany w momencie instalowania jej w komputerze. Na rysunku 2 przedstawiłem komunikat Client.Hello.
Rys. 2. Komunikat Client.Hello Po otrzymaniu komunikatu Client.Hello serwer analizuje dane w nim zawarte. Jeśli przeglądarka i serwer stosują ten sam rodzaj mechanizmu szyfrowania i takie same protokoły SSL, to serwer wysyła odpowiedź (komunikat Server.Hello) zaszyfrowaną za pomocą klucza publicznego komputera-klienta. Odpowiedź zawiera klucz publiczny serwera i informacje o połączeniu ustanowionym przez serwer. Na rysunku 2 przedstawiono odpowiedź serwera Server.Hello. Po otrzymaniu odpowiedzi Server.Hello komputer-klient wysyła kolejne żądanie do serwera zaszyfrowane za pomocą klucza publicznego serwera. Komunikat ten zawiera dodatkowe informacje o parametrach połączenia oraz żądanie przesłania klucza sesji. Będzie on używany przez obydwie strony podczas wymiany informacji. W odpowiedzi serwer wysyła klucz sesji zaszyfrowany kluczem publicznym komputera-klienta. Na rysunku 3 przedstawiłem odpowiedź serwera na żądanie komputera-klienta.
Rys. 3. Odpowiedź Server.Hello
Rys. 4. Serwer wysyła komputerowi-klientowi zaszyfrowany klucz sesji Po otrzymaniu od serwera klucza sesji komputer-klient wysyła kolejne żądania. Jeśli na przykład serwer korzysta z protokołu SSL i HTTP, to komputer-klient będzie szyfrował wysyłane żądania HTTP kluczem sesji wygenerowanym za pomocą protokołu SSL. Protokół SSL stosuje technologię potwierdzania tożsamości serwerów i szyfrowania danych opracowaną przez firmę RSA Data Security, Inc., która jest właścicielem algorytmu RSA. Protokół SSL szyfruje przesyłane komunikaty, tak aby zapewnić im wysoki poziom bezpieczeństwa podczas ich przesyłania między serwerem i przeglądarką. Ponadto stosowanie innego klucza sesji dla każdej transmisji uniemożliwia hakerowi użycie danych zdobytych podczas jednej transmisji do ataku na kolejną. Liczba operacji wymagana do rozszyfrowania danych jest na tyle wysoka, że odstrasza potencjalnych włamywaczy. Rozszyfrowanie komunikatu zaszyfrowanego za pomocą 128 bitów (tylu bitów używają eksportowe wersje serwerów i przeglądarek z protokołem SSL) wymaga 225 MIPSo-lat. Oznacza to, że odszyfrowanie komunikatu wymaga komputera o wydajności 225 MIPS pracującego nad tym zadaniem przez rok. Stosowany w USA mechanizm szyfrowania korzystający z 512 bitów zapewnia jeszcze wyższy poziom bezpieczeństwa. Poziom ten rośnie wykładniczo wraz ze zwiększaniem liczby bitów. Zestaw protokołów TCP/IP obsługuje dwa rodzaje połączeń: połączenia z potwierdzaniem przez adresata oraz połączenia z potwierdzaniem pośrednim. Usługa z potwierdzaniem pośrednim wykonuje różnorodne operacje (na przykład weryfikowanie pakietów) na każdym etapie przesyłania danych. Natomiast usługa z potwierdzaniem przez adresata ignoruje pośrednie etapy (i usługi) między nadawcą i odbiorcą. Protokół SSL zapewnia wysoki poziom bezpieczeństwa korzystając z połączeń z potwierdzaniem przez adresata. Proces obsługujący połączenie HTTP składające się z czterech etapów przerywa to połączenie wtedy, gdy serwer wyśle odpowiedź. W wypadku stosowania protokołu SSL połączenie jest utrzymywane do momentu, gdy przeglądarka lub serwer jawnie przerwą transmisję (na przykład gdy przeglądarka połączy się z serwerem o innym adresie URL).
|