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 protokołem transportu niezawodnego (np. TCP), znajduje się protokół rekordu. Zapewnia on bezpieczeństwo połączeń, które charakteryzują się dwiema własnościami:
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:
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:
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:
HTTPS i SSL/TLS wspierają użycie cyfrowych certyfikatów X.509v3 do uwierzytelnienia obydwu komunikujących się stron.