Secure Socket Layer (SSL)

Protokół SSL zaprojektowany został przez firmę Netscape w 1994 roku, lecz już rok później pojawiła się jego trzecia wersja, jako szkic przyszłego standardu (internet draft). Gdy osiągnięto zgodę co do opracowania standardu, w ramach IETF zawiązała się w tym celu grupa robocza TLS, która w 1999 roku opublikowała standard o nazwie TLS 1.0, kompatybilny z SSLv3 i z tego względu często określany nazwą SSL 3.1.
W tej sekcji zajmiemy się wyłącznie protokołem SSLv3, w następnej dokonamy natomiast jego porównania z protokołem TLS.

Architektura SSL

SSL zaprojektowano w celu zapewnienia niezawodności połączeń TCP. SSL nie ma struktury jednolitej, lecz składa się z dwóch podwarstw, jak to przedstawiono na rysunku u dołu .


Podprotokół powitalny SSL Podprotoków zmiany szyfru SSL Podprotokół alarmowy SSL HTTP
Podprotokół rekordu SSL
TCP
IP

Rysunek. Stos protokołów TCP /IP wzbogacony o protokół SSL.

W podwarstwie niższej rezyduje podprotokół rekordu (SSL Record Protocol), zapewniający podstawowe usługi dla podprotokołów rezydujących w wyższej podwarstwie. Jednym z tych podprotokołów jest HTTP (Hypetext Transfer Protocol) zapewniający usługę transferu danych między klientem a serwerem w ramach aplikacji webowej. Trzy pozostałe podprotokoły - podprotokół powitalny (Handshake Protocol), podprotokół zmiany szyfru (Change Cip her Spec Protocol) i podprotokół alarmowy (Alert Protocol) - są już integralną częścią SSL.
Dwie istotne koncepcje definiowane w specyfikacji protokołu SSL to połączenie SSL i sesja SSL:
  • Połączenie to komunikacja między warstwami transportowymi (w kategoriach modelu odniesienia OSI) zapewniająca odpowiedni typ usługi; w protokole SSL połączenie ma charakter peer-to-peer. Połączenie SSL ma charakter tymczasowy i zawsze odbywa się w ramach konkretnej sesji.
  • Sesja to skojarzenie między klientem i serwerem. Sesje tworzone są przez podprotokół powitalny i definiują zestaw parametrów używanych dla nawiązywanych połączeń. Pozwalają one unikać czasochłonnego negocjowania parametrów dla każdego nawiązywanego połączenia z osobna.
  • Między parą węzłów (na przykład między klientem i serwerem w komunikacji HTTP) może w danej chwili istnieć wiele bezpiecznych połączeń. Teoretycznie może między nimi istnieć także wiele otwartych sesji, lecz możliwość ta nie jest wykorzystywana w praktyce.
    Każda sesja może w danej chwili znajdować się w różnych stanach. Gdy zostanie ustanowiona, znajduje się w stanie ustalonym dla odczytu i zapisu (czyli odbierania i wysyłania danych); ponadto w czasie tworzenia sesji przez podprotokół powitalny tworzony jest stan przejściowy (pending state), który po zakończeniu działania tego protokołu staje się stanem ustalonym.
    Stan sesji SSL określony jest przez następujące parametry:
    • identyfikator sesji - dowolny ciąg bajtów wybrany przez serwer do identyfikowania stanu sesji;
    • certyfikat partnera - zgodny ze standardem X509.v3, parametr ten może pozostać pusty;
    • metodę kompresji - algorytm wykorzystywany do kompresowania danych przed ich szyfrowaniem;
    • specyfikację szyfru - określenie algorytmu kompresji (opcjonalne, na przykład AES), algorytmu haszowania wykorzystywanego do obliczenia kodu MAC (np. MDS lub SHA- 1 ) oraz atrybutów kryptograficznych, m.in. hash_size;
    • tajny kod główny - ciąg 48 bajtów współdzielony przez klienta i serwer i nieznany nikomu innemu;
    • znacznik wznawiania- określający, czy w ramach sesji mogą być tworzone nowe połączenia.
    Poniższe parametry składają się natomiast na stan połączenia:
    • unikalny ciąg losowy - wybierany przez klienta i serwer niezależnie dla każdego połączenia;
    • tajny parametr MAC dla serwera - wartość parametru MAC_write_secret używana w operacjach MAC dla danych wysyłanych przez serwer;
    • tajny parametr MAC dla klienta - wartość parametru MAC_write_secret używana w operacjach MAC dla danych wysyłanych przez klienta;
    • klucz serwerowy - klucz szyfrowania symetrycznego, za pomocą którego serwer szyfruje wysyłane dane, a klient odszyfrowuje je po otrzymaniu;
    • klucz kliencki - klucz szyfrowania symetrycznego, za pomocą którego klient szyfruje wysyłane dane, a serwer odszyfrowuje je po otrzymaniu;
    • wektory inicjacyjne - gdy wykorzystywany jest tryb operacyjny CBC szyfru blokowego, dla każdego klucza utrzymywana jest wartość wektora inicjacyjnego (IV) - wartość ta inicjowana jest przez podprotokół powitalny, po czym ostatni blok szyfrogramu dla każdego rekordu zapamiętywany jest jako wartość IV dla szyfrowania rekordu następnego;
    • numery sekwencyjne - każdy z partnerów komunikacji utrzymuje oddzielną pulę numerów sekwencyjnych dla wysyłanych i otrzymywanych komunikatów. Gdy któryś z partnerów wysyła lub otrzymuje komunikat zmiany szyfru, powinien zresetować do zera aktualną wartość numeru sekwencyjnego. Numery sekwencyjne są 64-bitowymi liczbami całkowitymi, maksymalna wartość numeru wynosi więc 2⁶⁴ - 1.
    Podprotokół rekordu oferuje dwie następujące usługi dla podprotokołów w wyższej podwarstwie:
    • Poufność - podprotokół powitalny definiuje współdzielony tajny klucz używany do konwencjonalnego szyfrowania treści przesyłanych w ramach protokołu SSL.
    • Ochronę integralności - podprotokół powitalny definiuje także współdzielony tajny klucz wykorzystywany do obliczania kodów MAC dla przesyłanych komunikatów.
    Poszczególne etapy funkcjonowania podprotokołu rekordu przedstawiono na rysunku u dołu . Otrzymany od aplikacji komunikat przeznaczony do wysłania jest najpierw fragmentowany, czyli dzielony na mniejsze bloki łatwiejsze w zarządzaniu. Potem dla każdej jednostki danych wykonywane są: kompresja (która jednak jest opcjonalna), uwierzytelnienie za pomocą kodu MAC, zaszyfrowanie, opatrzenie nagłówkiem i wysłanie. Odebrany pakiet jest poddawany procesowi odwrotnemu: deszyfracji, zweryfikowaniu kodu MAC i dekompresji i ostatecznie poszczególne jednostki składane są na powrót w kompletny komunikat (który dostarczony zostaje aplikacji docelowej).

    Dane aplikacji
    Fragmentacja
    Kompresja
    Dołączenie kodu MAC
    Szyfrowanie
    Dołączenie nagłówka SSL


    Rysunek. Operacje podprotokołu rekordu SSL.


    Źródła i Literatura:
    William Stallings - "Kryptografia i Bezpieczeństwo sieci komputerowych" - Koncepcje i metody bezpiecznej komunikacji. Wydanie V, Wydawnictwo Helion 2012, ISBN: 978-83-246-2987-9.
    Polish language edition published by HELION S.A. Copyright© 2012.
    Copyright© 2012 Wydawnictwo HELION S.A
    WWW: http:pl/helion.pl (księgarnia internetowa, katalog książek)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *