SSL (Secure Socket Layer)

Transkrypt

SSL (Secure Socket Layer)
SSL (Secure Socket Layer)
SSL --- Secure Socket Layer --- protokół bezpiecznej komunikacji między
klientem a serwerem, stworzony przez Netscape. SSL w założeniu
jest podkładką pod istniejące protokoły, takie jak HTTP, FTP, SMTP,
NNTP i Telnet. Powszechnie jest używane głównie HTTPS (HTTP na
SSL).
W tej chwili istnieją dwie specyfikacje SSL:

SSL 2.0

SSL 3.0. Wersja 3.0 ma poprawione wiele słabości SSL 2.0 oraz
umożliwia kompresję danych. SSL 3.0 jest wstecznie kompatybilne z
2.0.
SSL (Secure Socket Layer)
SSL może zapewniać cztery rzeczy:

prywatność --- połączenie jest szyfrowane i deszyfrowanie,
uzgadniane są algorytmy kodowania (używane jest kodowanie
symetryczne np. DES lub RC4)

autoryzację --- klient i serwer określa swoją tożsamość poprzez
systemy certyfikatów oraz mechanzimy kodowania z kluczem
publicznym (zwykle RSA)

integralność przesyłanych danych --- przez sumy kontrolne, MAC
(Message Authentication Code)

niezaprzeczalność – poprzez certyfikaty, podpisy elektroniczne
SSL (Secure Socket Layer)
Miejsce SSL w modelu ISO OSI:
SSL (Secure Socket Layer)
SSL można umieścić pomiędzy warstwą transportową i warstwą
aplikacyjną.
Ponadto jest to protokół dwupoziomowy.
Wyższy poziom działający bezpośrednio nad stabilnym protokołem
warstwy transportowej (np. TCP) jest to tzw. SSL Record Protocol
używany dla enkapsulacji protokołów wyższych warstw oraz
SSL Handshake Protocol (drugi poziom) wykorzystywany do
wzajemnej autentyfikacji klienta i serwera, uzgodnienia algorytmów
kodowania oraz wymiany kluczy kryptograficznych zanim nastąpi
przesyłanie danych.
SSL (Secure Socket Layer)
SSL

pobiera komunikat od aplikacji,

fragmentuje go na zarządzalne bloki (w tzw. SSLPlainText rekordy o
rozmiarze 2^14 bajtów lub mniejsze, może to być pojedynczy lub wiele
komunikatów aplikacji),

opcjonalnie kompresuje dane (używając uzgodnionej metody kompresji),

dodaje MAC (wyliczony uzgodnioną metodą funkcji skrótu),

koduje (używając ustalonego algorytmu kodowania sysmetrycznego)

i transmituje otrzymane dane.
Otrzymywane dane są dekodowane, weryfikowane, dekompresowane,
odbudowywane i przekazywane do protokołu aplikacyjnego.
SSL (Secure Socket Layer)
SSL (Secure Socket Layer)
Wszystko to odbywa się w ramach ustalonej pomiędzy komunikujacymi
się obiektami sesji. Ustanowienie tej sesji jest zadaniem SSL Handshake
Protocol, który nawiązuje sesję i wymienia inforamacje parametryzujące
sesję, takie jak:

identyfikator sesji

certyfikaty potwierdzające tożsamość komunikujących się obiektów –
zgodne z X.509

metodę kompresji

algorytm kodowania danych (null, DES itp.)

metodę funkcji skrótu (MD5, SHA)

sekretne hasło związane z kodowaniem symetrycznym
SSL (Secure Socket Layer)
Ustanowienie sesji odbywa się według następującego schematu:
SSL (Secure Socket Layer)
1. Klient inicjuje sesję:
SSL (Secure Socket Layer)
2. Serwer odpowiada na żądanie klienta:
SSL (Secure Socket Layer)
Po wysłaniu komunikatu Hello przez serwer, serwer wysyła swój certyfikat
do klienta jeżeli potrzebuje się autentyfikować. Dodatkowo może być
wygenerowany komunikat wymiany klucza np. gdy serwer nie posiada
certyfikatu. Ponadto serwer może zażądać certyfikatu od klienta.
Na koniec tej fazy serwer wysyła powtórnie komunikat Hello.
SSL (Secure Socket Layer)
3. Klient opracowuje odpowiedź serwera
SSL (Secure Socket Layer)
3.1 Klient weryfikuje certyfikat serwera:
SSL (Secure Socket Layer)
3.2 Następnie klient generuje i przesyła do serwera tajny klucz, który będzie
uzywany do kodowania danych. Klucz ten jest zakodowany używając metody
kodowania z kluczem publicznym.
3.3 Klient wysyła swój certyfikat jeżeli serwer tego żądał
3.4 Klient wysyła komunikat weryfikujący certyfikat serwera.
SSL (Secure Socket Layer)
4. Serwer odpowiada klientowi: