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:
- ClientHello – klient wysyła listę obsługiwanych wersji protokołu, zestawów szyfrów oraz losowy ciąg (random).
- ServerHello – serwer wybiera wersję protokołu i zestaw szyfrów, a także generuje własny losowy ciąg.
- Certyfikat serwera – serwer przesyła certyfikat X.509, który pozwala klientowi zweryfikować jego tożsamość.
- 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.
- 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