encyklopedia.space

Transport Layer Security (TLS)

Transport Layer Security (TLS) to kryptograficzny protokół sieciowy zapewniający poufność i integralność danych przesyłanych pomiędzy aplikacjami komunikującymi się w sieci. TLS jest następcą protokołu SSL (Secure Sockets Layer) i odgrywa kluczową rolę w zabezpieczaniu połączeń internetowych, w tym HTTPS, IMAP, POP3, SMTP oraz wielu innych protokołów aplikacyjnych.

Historia

Pierwsza wersja SSL, SSL 3.0, została opracowana przez firmę Netscape w 1996 roku. W 1999 r. IETF (Internet Engineering Task Force) przyjęło TLS 1.0 jako zaktualizowaną i otwartą wersję SSL 3.0. Od tego czasu powstały kolejne wersje: TLS 1.1 (2006), TLS 1.2 (2008) oraz TLS 1.3 (2018), które wprowadzają usprawnienia w zakresie bezpieczeństwa i wydajności.

Podstawowe funkcje

  • Uwierzytelnianie – zazwyczaj opiera się na certyfikatach X.509 wydawanych przez PKI (Public Key Infrastructure). Umożliwia to weryfikację tożsamości serwera, a w niektórych przypadkach także klienta.
  • Szyfrowanie – zapewnia poufność danych przy użyciu suite szyfrów (algorytmy symetryczne, asymetryczne, funkcje skrótu).
  • Integralność – chroni przed modyfikacją wiadomości dzięki kodom uwierzytelniania wiadomości (MAC) lub algorytmom AEAD.

Mechanizm działania

Handshake TLS

Procedura ustanawiania połączenia TLS, zwana handshake, składa się z kilku etapów:

  1. ClientHello – klient wysyła listę obsługiwanych wersji protokołu, zestawów szyfrów oraz losowy ciąg (random).
  2. ServerHello – serwer wybiera wersję protokołu i zestaw szyfrów, a także generuje własny losowy ciąg.
  3. Certyfikat serwera – serwer przesyła certyfikat X.509, który pozwala klientowi zweryfikować jego tożsamość.
  4. Ustalanie klucza – w zależności od wybranego zestawu szyfrów może być używany algorytm Diffie‑Hellmana (DH), ECDHE lub RSA do wymiany klucza sesji.
  5. Finished – obie strony wymieniają wiadomości potwierdzające, że handshake przebiegł pomyślnie i że wszystkie wygenerowane klucze są spójne.

Transmisja danych

Po zakończeniu handshake wszystkie dalsze dane są szyfrowane przy użyciu ustalonego klucza sesji. W TLS 1.3 większość operacji kryptograficznych odbywa się już w fazie handshake, co znacznie skraca czas ustanawiania połączenia.

Wersje protokołu

Wersja Rok Główne zmiany
TLS 1.0 1999 Poprawki w stosunku do SSL 3.0, wprowadzenie HMAC‑SHA1
TLS 1.1 2006 Wsparcie dla nieustannego szyfrowania (CBC) i lepsza ochrona przed atakami typu padding oracle
TLS 1.2 2008 Wprowadzenie SHA‑256, AEAD (GCM), możliwość wyboru algorytmów podpisu
TLS 1.3 2018 Redukcja liczby rund handshake do jednego, usunięcie przestarzałych szyfrów, wprowadzenie 0‑RTT

Zagrożenia i podatności

Mimo że TLS jest jednym z najbezpieczniejszych protokołów komunikacyjnych, w przeszłości ujawniono kilka poważnych podatności:

  • POODLE (2004) – atak wykorzystujący słabość trybu CBC w starszych wersjach SSL/TLS.
  • Heartbleed (2014) – luki w implementacji OpenSSL pozwalające na wyciek pamięci serwera.
  • Man‑in‑the‑Middle – atak, w którym przeciwnik podszywa się pod jedną ze stron, najczęściej poprzez fałszywe certyfikaty.
  • BEAST, CRIME, BREACH – seria ataków na szyfrowanie CBC i kompresję HTTP.

W odpowiedzi na te zagrożenia społeczność rozwija i aktualizuje TLS, wycofując przestarzałe wersje (np. TLS 1.0 i TLS 1.1) oraz zalecając użycie najnowszych implementacji.

Zastosowania

Protokół TLS jest wykorzystywany w praktycznie każdym bezpiecznym połączeniu internetowym. Przykłady:

  • HTTPS – zabezpieczanie stron WWW.
  • FTPS – szyfrowany transfer plików.
  • SMTP z STARTTLS – zabezpieczanie poczty elektronicznej.
  • VPN oparte na TLS (np. OpenVPN).
  • Komunikacja w aplikacjach mobilnych i IoT.

Implementacje

Najpopularniejsze biblioteki obsługujące TLS:

  • OpenSSL – otwartoźródłowa implementacja powszechnie używana w systemach Unix/Linux.
  • GnuTLS – alternatywa dla OpenSSL, szczególnie w środowiskach GNU.
  • NSS (Network Security Services) – wykorzystywana m.in. w przeglądarce Firefox.
  • SChannel – implementacja Microsoftu w systemach Windows.
  • BoringSSL – specyficzna wersja oparta na OpenSSL, używana w projektach Google.

Patrz także

SSL, HTTPS, X.509, PKI, suite szyfrów, kryptografia, atak typu man-in-the-middle, TLS 1.3