TLS (Transport Layer Security)

ITpedia

Jedną z metod zabezpieczania wymiany danych między serwerami webowymi i przeglądarkami, a także innymi aplikacjami w Internecie, są protokoły w rodzaju TLS, które wprowadzają nową warstwę do czterowarstwowego modelu odniesienia Internetu.

Nowa warstwa została umieszczona między warstwami transportową i aplikacyjną. W dowolnym połączeniu warstwa ta tworzy zabezpieczony kanał przez użycie algorytmów szyfrowania z kluczem zarówno publicznym, jak i prywatnym, ale nie zmienia interfejsu między warstwą transportu a warstwą aplikacji. Dowolna aplikacja może więc używać tego zabezpieczonego kanału poprzez interfejs warstwy aplikacyjnej, jak gdyby to było zwykłe, nie zabezpieczone połączenie. Taki model zabezpieczania transferu danych przez dodanie nowej warstwy ma kilka zalet. Jedna z najważniejszych wynika z faktu, że warstwa bezpieczeństwa jest niewidzialna dla aplikacji, przez co nie wymaga wprowadzania zmian do niej, ani w protokole aplikacyjnym, lecz jedynie w stosie protokołów dla wsparcia dodatkowej warstwy. Teoretycznie wszystkie połączenia zorientowane na protokoły aplikacyjne mogą używać tej warstwy, bo nie jest ona zastrzeżona do jednej, szczególnej aplikacji.

Głównym celem protokołu TLS jest zapewnienie komunikującym się stronom tajności oraz integralności ich danych. Protokół ma dwa poziomy: TLS rekordu i TLS dialogu. Na niższym poziomie, nad proto­­kołem transportu niezawodnego (np. TCP), znajduje się protokół rekordu. Zapewnia on bezpieczeństwo połączeń, które charakteryzują się dwiema własnościami:

  • Połączenie jest niejawne. Do szyfrowania danych stosuje się kryptografię symetryczną (DES, RC4 oraz inne). Klucze do szyfrowania są generowane niezależnie dla każdego połączenia, opierając się na kodzie tajnym otrzymywanym za pomocą innego protokołu, takiego jak TLS dialogu. Protokół rekordu może być wykorzystywany bez szyfrowania.
  • Połączenie jest rzetelne. Sprawdzenie integralności opiera się na wpisywaniu MAC (Message Authentication Code). Do wyliczenia MAC stosuje się funkcje haszujące (MD5, SHA, inne). Protokół TLS rekordu może funkcjonować bez MAC, ale tylko wtedy, kiedy inny protokół korzysta z protokołu rekordu w charakterze transportowego z określonymi parametrami bezpieczeństwa.

Protokół TLS rekordu jest stosowany do kapsułkowania różnych protokołów warstwy wyższej. Jednym z takich kapsułkowanych obiektów jest też protokół TLS dialogu. Umożliwia on klientowi i serwerowi uwierzytelniać jeden drugiego i uzgodnić algorytm szyfrowania i klucze kryptograficzne używane od chwili, kiedy strona wysyła lub przyjmuje pierwszy bajt informacji.

Protokół TLS dialogu zapewnia bezpieczne połączenie, które ma 3 podstawowe cechy:

  1. Uwierzytelnianie stron może być przeprowadzane metodami kryptografii symetrycznej (RSA, DSS, inne). Może być ono opcjonalne, ale tylko dla jednej ze stron.
  2. Ujawnienie ogólnego kodu tajnego nie jest niebezpieczne. Poznanie tego kodu przez osoby niepowołane nie wystarczy do podszycia się pod którąś z komunikujących się stron.
  3. Rzetelny dialog. Włamywacze nie mogą modyfikować połączenia, gdyż zostaną wykryci przez strony uczestniczące w wymianie.

Jedną z zalet TLS jest niezależność od protokołów, z którymi współpracuje. Protokoły warstwy wyższej mogą być rozmieszczane niejako na wierzchu TLS według uznania. Ale TLS nie określa, jak za jego pośrednictwem zwiększać bezpieczeństwo. Decyzję o sposobie inicjowania dialogu typu TLS oraz interpretowania certyfikatów uwierzytelniania pozostawia twórcom oprogramowania i protokołów, które funkcjonują nad warstwą TLS.

Cele TLS, w kolejności wynikającej z ważności, zostały określone następująco:

  • Kryptograficzne bezpieczeństwo. Do ustalania bezpiecznego połączenia między dwiema stronami powinien być stosowany protokół TLS.
  • Uniwersalność. Niezależni programiści powinni mieć możliwość tworzenia programów, korzystających z TLS, które będą w stanie skutecznie wymieniać parametry kryptograficzne bez konieczności wzajemnego poznawania swoich kodów.
  • Rozszerzalność. TLS określa sposób, jak w razie potrzeby dołączyć do swojego systemu nowe klucze i metody szyfrowania. Są tu dwa poboczne cele: wykluczyć możliwość stworzenia nowego protokołu, który mógłby wprowadzić nowe słabe punkty, i uniemożliwić wdrażanie nowej biblioteki, obsługującej bezpieczeństwo.
  • 'Względna efektywność. Procedury kryptograficzne, zwłaszcza operacje z kluczami jawnymi, wymagają relatywnie dużych mocy przetwarzania. Dlatego TLS ma opcjonalny schemat buforowania podręcznego sesji (caching), co zmniejsza liczbę połączeń, ustanawianych przy udziale nowych buforów czasowych.

Protokół przystający do wspomnianego modelu bezpieczeństwa został opracowany przez Netscape oraz IETF. Nosi on nazwę SSL (Secure Socket Layer), a podobny protokół Microsoftu – PCT (Private Communication Transport). SSL został szeroko zaakceptowany i jest często implementowany. Z czasem stał się jak gdyby standardem dla zabezpieczonych transakcji Web, chociaż sam protokół nie jest ograniczony jedynie do ochrony sesji HTTP. Takie połączenie oznacza się przez HTTPS w URL (Unified Resource Locator) strony internetowej i normalnie używa TCP Port 443 zamiast dobrze znanego HTTP TCP Port 80. HTTPS nie jest związany z SHTTP – bezpieczniejszą wersją HTTP.

W celu ujednolicenia metod zabezpieczania wspomnianych połączeń IETF wprowadza w miejsce SSL protokół TLS (Transport Layer Security), opisany w RFC 4346. Różnice między SSL i TLS są niewielkie, ale wystarczające, ażeby protokoły TSL 1.0 i SSL 3.0. nie były zamienne. Protokół TSL został wyposażony w mechanizm, dzięki któremu komunikujące się strony mogą utrzymywać SSL 3.0. Z kolei nowsza wersji protokołu Netscape – SSL 3.1 – jest kompatybilna z TLS 1.1.

TSL funkcjonuje z wieloma algorytmami szyfrowania, a jego bezpieczeństwo zależy od wybranego algorytmu. Nie jest to wadą, lecz zaletą: może on współpracować w przyszłości z bardziej wydajnymi algorytmami szyfrującymi, w miarę, jak będą się one pojawiały, bez jakiejkolwiek zmiany w protokole. Tak na przykład dobrze znany algorytm szyfrowania kluczem publicznym RSA jest często używany przy ustanawianiu połączenia. Gdy tylko bezpieczne połączenie zostaje ustanowione, komputery uzgadniają algorytm symetryczny, taki jak RC2, RC4, IDEA, DES lub 3DES, i w razie potrzeby inne parametry (np. użyty algorytm kompresji). Ta procedura łączy korzyści obydwu metod szyfrowania. Algorytmu z kluczem publicznym używa się tu jedynie do ustawiania (setup) i wymiany klucza, natomiast algorytm z kluczem tajnym stosuje się do szyfrowania danych; algorytm asymetryczny jest bardzo dobry do ochrony połączeń w nie zabezpieczonej sieci, ale jest powolny, natomiast symetryczny jest szybszy, ale obydwaj klienci muszą znać klucz szyfrujący-deszyfrujący.

Warstwa dialogu jest odpowiedzialna za ustanawianie połączenia przy użyciu szyfrowania kluczem publicznym, negocjowanie klucza sekretnego i algorytmu kompresji. Niższa warstwa, nazywana też warstwą protokołu, łączy się bezpośrednio ze standardowa warstwą transportową. Warstwa ta jest odpowiedzialna za dzielenie strumienia danych, pochodzącego z aplikacji, na bloki o tej samej długości (maksymalnie 214) i szyfrowanie tych bloków według algorytmu z kluczem symetrycznym, którym obydwa komputery dysponują po fazie uzgadniania. Podstawowy blok danych ma długość 1 bajta. Wielobajtowe ciągi informacji są tworzone od lewej do prawej strony i z góry w dół.

TLS rekordu musi dokonać sprawdzenia integralności przez aplikowanie algorytmu haszującego, aby uwierzytelnić bloki danych, o czym już wspomniano. Algorytm ten tworzy MAC (Message Authentication Code), rodzaj cyfrowego odcisku palca, który identyfikuje blok danych, ale nie udzieli żadnej informacji na temat zawartości bloku. Przykładem algorytmu haszującego użytego w TLS jest algorytm skrótu wiadomości MD5 (Message Digest Number 5), który daje jeden (unikatowy) skrót wiadomości w postaci ciągu zawsze o długości 128 bitów. Skrót jest następnie dołączany do wiadomości, podwyższając jej bezpieczeństwo. TLS stosuje w istocie kod uwierzytelnienia HMAC (Hashed MAC) podczas dialogu z innymi algorytmami. Wspomniane tu MD5 i SHA-1 są nazywane HMAC_MD5 i HMAC_SHA.

TLS ustanawia połączenie w następujący sposób:

  • Klient i serwer uzgadniają używane algorytmy szyfrowania.
  • Klient uwierzytelnia serwer.
  • Opcjonalnie: serwer uwierzytelnia klienta.
  • Serwer i klient wymieniają wygenerowane symetryczne klucze sesji.
  • Po tych procedurach można zainicjować szyfrowanie i transport danych.

HTTPS i SSL/TLS wspierają użycie cyfrowych certyfikatów X.509v3 do uwierzytelnienia obydwu komunikujących się stron.

-
-