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: Wprowadzenie do protokołu SSL 3.0

Poufność komunikacji

Jak SSL zapewnia ochronę transmisji?

Jak SSL zabezpiecza transakcje potwierdzenia przez adresata?

Szyfrowanie RSA w SSL

Bezpieczne połączenia w SSL

 Zbiór linków:

Informacje prasowe firmy Microsoft: http://www.microsoft.com/corpinfo/press/1997/Jun97/firfly2.htm

Phaos Technologies: http://www.phaos.com/solutions.com

Inteligence Research Group: http://irg.org

SSL Plus: http://www.consensus.com/SSLPlus/SSLplus_toc.html

Secure Web Toolkit: http://www.terisa.com:80/products/toolkits.html

Oprogramowanie szyfrujące: http://wwwus.netscape.com/usdl-bin/download/index.html


 

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.

 

Poufność komunikacji

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 :

potwierdzanie tożsamości serwerów za pomocą certyfikatów cyfrowych (utrudnia to podszycie się pod autoryzowanych użytkowników);

ochrona przesyłanych danych za pomocą szyfrowania (uniemożliwia przechwytywanie informacji);

zapewnienie integralności danych podczas ich przesyłania (utrudnia wandalizm).

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.        

Szyfrowanie RSA w 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.

Bezpieczne połączenia w SSL

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).

Z POWROTEM DO GÓRY STRONY