SSL

 

SSL (ang. Secure Sockets Layer) to protokół używany do nawiązywania bezpiecznych połączeń sieciowych i bezpiecznej wymiany informacji. Został opracowany przez firmę Netscape Communications. SSL ma dwa zadania:

Z założenia ma uzupełniać protokoły już istniejące, działające poniżej warstwy aplikacji (HTTP, FTP, SMTP, POP3, Telnet), a powyżej warstwy sieci i transportu.

SSL jest protokołem otwartym i rozszerzalnym, nie wymagającym konkretnego algorytmu szyfrującego. Protokół daje każdej stronie połączenia możliwość zaproponowania obsługiwanych przez siebie algorytmów szyfrujących i wybór jednego jako obowiązującego dla obu stron. 

Certyfikaty SSL

Certyfikaty cyfrowe są mechanizmem pozwalającym na identyfikację czegoś (osoby bądź serwera sieciowego). Certyfikat cyfrowy zawiera informację, która weryfikuje tożsamość użytkownika, gwarantując, że posiadacz takiego certyfikatu jest rzeczywiście tym, za kogo się podaje. Certyfikaty są przyznawane przez CA (Certificate Authorities) - niezależne źródła, upoważnione przez odpowiednie instytucje (jak np. banki, rządy, itp.). Poza informacją identyfikacyjną certyfikat cyfrowy zawiera także klucz publiczny jego posiadacza.

W pierwszej fazie nawiązywania połączenia serwer i przeglądarka wymieniają certyfikaty. Certyfikat zawiera następujące składniki:

 Typy certyfikatów związanych z SSL:

Handshake

Uścisk dłoni przebiega według następującego schematu:

  1. Klient wysyła serwerowi numer swojej wersji SSL, ustawienia algorytmu kodującego, jakieś losowe dane i inne informacje, które serwer potrzebuje do komunikacji z klientem przez SSL.
  2. Serwer przesyła klientowi numer swojej wersji SSL, ustawienia algorytmu szyfrującego, i inne informacje jakie klient potrzebuje do komunikacji z serwerem przez SSL. Serwer przesyła również swój certyfikat i - jeśli klient żąda zasobu, który wymaga uwierzytelnienia odbiorcy - również zapytanie o certyfikat klienta.
  3. Klient używa informacji przesłanej przez serwer do uwierzytelnienia serwera. Jeśli serwer nie może zostać uwierzytelniony, komunikacja zostaje zerwana, jeśli może, to klient kontynuuje (punkt 4).
  4. Klient szyfruje za pomocą klucza publicznego serwera pewne wstępne dane (premaster secret) i przesyła je do serwera.
    Jeśli serwer żądał uwierzytelnienia klienta, klient wysyła swój certyfikat razem z podpisem elektronicznym (czyli z losowymi danymi unikatowymi dla tej sesji, znanymi obu stronom komunikacji, zaszyfrowanymi kluczem prywatnym klienta).
  5. Jeśli serwer żądał uwierzytelnienia klienta, sprawdza przysłane przez klienta dane, jeśli klient nie może zostać uwierzytelniony, komunikacja zostaje zerwana. Jeśli sesja trwa dalej, serwer używa swojego klucza prywatnego do rozkodowania danych przesłanych przez klienta (premaster secret), a następnie wykonuje szereg kroków w celu wygenerowania tzw. master secret. Te same kroki wykonuje równocześnie klient.
  6. Master secret jest używany przez serwer i klienta do wygenerowania kluczy sesji - symetrycznych kluczy do szyfrowania i rozszyfrowywania danych i do zapewnienia ich integralności (wykrywania cudzej ingerencji w treść przesyłanych komunikatów).
  7. Klient przesyła serwerowi komunikat o gotowości swojego klucza i oddzielny, zaszyfrowany komunikat, że etap "uścisku dłoni" po stronie klienta zakończył się.
  8. Serwer przesyła klientowi komunikat o gotowości swojego klucza i oddzielny, zaszyfrowany komunikat, że etap "uścisku dłoni" po stronie serwera zakończył się.
  9. Etap "uścisku dłoni" zakończył się, teraz klient i serwer używają wygenerowanego klucza do przesyłania informacji między sobą.

 

Algorytmy stosowane w SSL

Protokół SSL wspiera użycie wielu różnych algorytmów kryptograficznych lub szyfrów, dla takich operacji jak autoryzacja serwera i klienta, transmisja certyfikatów i ustanowienie kluczy sesyjnych.

Algorytmy używane w SSL:

 




dalej