Protokol Transport Layer Security (TLS) je kryptografický protokol poskytující možnost zabezpečené komunikace přes nedůvěryhodnou síť (datová linka, internet). Je využíván pro služby WWW, elektronickou poštu a další datové přenosy. Protokol TLS poskytuje zabezpečení, soukromí (důvěrnost), integritu a autenticitu dvou komunikujících stran pomocí kryptografie, kde využívá digitální certifikáty. TLS byl poprvé publikován IETF (Internet Engineering Task Force) v roce 1999, aktuální verze je TLS 1.3 ze srpna 2018. TLS nahrazuje všechny dnes již zastaralé protokoly SSL (Secure Sockets Layer z let 1994, 1995, 1996), které původně vyvinula společnost Netscape Communications a začlenila tak nový protokol HTTPS do svého webového prohlížeče Netscape Navigator.

Někdy je označení „TLS“ používáno i pro SSL. V březnu 2011 byla v RFC 6176 ukončena zpětná kompatibilita TLS se SSL. Za zastaralé byly verze TLS 1.0 a 1.1 označeny firmami Google, Apple, Microsoft a Mozilla v březnu 2020,[1] formálně pak o rok později v RFC 8996. Verze 1.2 ani 1.3 nemají zatím stanoven datum zastarání.

Popis

Protokol(y) TLS umožňují aplikacím komunikovat po síti způsobem, který zabraňuje odposlouchávání či falšování zpráv. Pomocí kryptografie poskytuje TLS svým koncovým bodům autentizaci a soukromí při komunikaci Internetem. Typicky je autentizován pouze server (tedy jeho totožnost je zaručena), zatímco klient zůstává neautentizován. To znamená, že koncový uživatel (ať člověk či aplikace, jako třeba webový prohlížeč) si může být jist, s kým komunikuje. Další úroveň zabezpečení – při níž oba konce „konverzace“ mají jistotu, s kým komunikují – je označována jako vzájemná autentizace. Vzájemná autentizace vyžaduje nasazení infrastruktury veřejných klíčů (PKI) pro klienty.

TLS zahrnuje tři základní fáze:

  1. dohodu účastníků na podporovaných algoritmech
  2. výměnu klíčů založenou na šifrování s veřejným klíčem a autentizaci vycházející z certifikátů
  3. šifrování provozu symetrickou šifrou

Během první fáze se klient a server dohodnou na používaných kryptografických algoritmech. Současné implementace podporují následující možnosti:

Jak pracuje

Protokol TLS je založen na výměně záznamů. Každý záznam může být volitelně komprimován, může k němu být připojen autentizační kód (message authentication code, MAC) a může být zašifrován. Každému záznamu je přiřazen typ obsahu, který určuje protokol vyšší úrovně.

Při zahájení spojení vrstva záznamů obaluje jiný protokol – iniciační protokol (handshake protocol), jehož typ obsahu má hodnotu 22.

Typická inicializace probíhá následovně:

Dát si dohromady výše popsaný proces spojování TLS/SSL s typickým použitím prohlížeče může být poněkud obtížné. Pomozme si v lepším pochopení typického TLS/SSL spojení tím, co bývá obvykle označováno za šestikrokový SSL proces. SSL naváže stavové spojení dohodnuté výše popsanou iniciační procedurou mezi klientem a serverem. Během inicializace si oba vymění specifikace pro šifrování, které budou při komunikaci používat.

Prohlížeč může kontaktovat důvěryhodnou CA a ověřit pravost certifikátu, než bude pokračovat. Následně prohlížeč nabídne seznam šifrovacích algoritmů a hashovacích funkcí.

K vygenerování klíčů seance použitých pro zabezpečení spojení použije prohlížeč veřejný klíč serveru z certifikátu. Zašifruje jím náhodná data a zašle je serveru.

Tím končí handshake a začíná zabezpečené spojení, které je šifrováno a dešifrováno klíči seance po zbytek svého trvání.

Pokud je libovolný z těchto kroků neúspěšný, selže TLS/SSL handshake a nedojde k vytvoření spojení.

Protokol SSL v3 a TLS záznamů

+ bity 0–7 8–15 16–23 24–31
0 Protocol Version (MSB) Version (LSB) Length (MSB)
32 Length (LSB) Zprávy protokolu
... Zprávy protokolu (pokračování)
... MAC (volitelně)
Protocol
Tato položka identifikuje typ protokolu vrstvy záznamů obsažený v tomto záznamu.
Dostupné typy protokolů jsou: 
20 ChangeCipherSpec
21 Alert
22 Handshake
23 Application
Version
Identifikuje hlavní a dílčí verzi SSL pro obsaženou zprávu. Pro zprávu ClientHello se nemusí jednat o nejvyšší verzi podporovanou klientem.
Verze jsou:
3 | 0 SSLv3
3 | 1 TLS 1.0
3 | 2 TLS 1.1
3 | 3 TLS 1.2
3 | 4 TLS 1.3
Length
Délka zpráv protokolu. Nesmí překročit 214 bajtů.
Zprávy protokolu
Jedna nebo více zpráv identifikovaných položkou Protocol. Tato položka může být zašifrována v závislosti na stavu spojení.
MAC
Kód ověřující autentičnost zprávy vypočítaný ze Zpráv protokolu doplněné o klíče. Položka může být zašifrována nebo může chybět, opět v závislosti na stavu spojení.

Protokol ChangeCipherSpec

+ bity 0–7 8–15 16–23 24–31
0 20 Version (MSB) Version (LSB) 0
32 1 1 (CCS protocol type)

Protokol Alert

+ bity 0–7 8–15 16–23 24–31
0 21 Version (MSB) Version (LSB) 0
32 2 Level Description
Level
Položka identifikující úroveň výstrahy.
Úrovně jsou: 
1 Varování – spojení nebo bezpečnost mohou být nestabilní
2 Fatální – spojení nebo bezpečnost mohou být kompromitovány nebo došlo k nenapravitelné chybě
Description
Identifikuje typ zasílané výstrahy.
Dostupné popisy jsou: 
0 Close notify
10 Unexpected message (fatal)
20 Bad record MAC (fatal)
21 Decryption failed (fatal, TLS only)
22 Record overflow (fatal, TLS only)
30 Decompression failure (fatal)
40 Handshake failure (fatal)
41 No certificate (SSL v3 only)
42 Bad certificate 
43 Unsupported certificate 
44 Certificate revoked
45 Certificate expired
46 Certificate unknown
47 Illegal parameter (fatal)
48 Unknown CA (fatal, TLS only)
49 Access denied (fatal, TLS only)
50 Decode error (fatal, TLS only)
51 Decrypt error (TLS only)
60 Export restriction (fatal, TLS only)
70 Protocol version (fatal, TLS only)
71 Insufficient security (fatal, TLS only)
80 Internal error (fatal, TLS only)
90 User cancelled (fatal, TLS only)
100 No renegotiation (warning, TLS only)

Protokol Handshake

+ bity 0–7 8–15 16–23 24–31
0 22 Version (MSB) Version (LSB) Length (MSB)
32 Length (LSB) Message type Message length
64 Message length (cont.) Handshake message
... Handshake message Message type Message length
... Message length Handhshake message
Message type
Identifikuje typ zprávy.
Dostupné typy jsou: 
 0 HelloRequest
 1 ClientHello 
 2 ServerHello
11 Certificate
12 ServerKeyExchange
13 CertificateRequest
14 ServerHelloDone
15 CertificateVerify
16 ClientKeyExchange
20 Finished
Message length
Jedná se o tříbajtovou položku obsahující délku handshake dat, hlavička se nepočítá.

Bezpečnost

TLS zahrnuje řadu bezpečnostních opatření:

Aplikace

TLS běží ve vrstvě pod aplikačními protokoly, jako jsou HTTP, FTP, SMTP, NNTP či XMPP, a nad spolehlivým transportním protokolem, např. TCP. Dokáže přidat zabezpečení libovolnému protokolu používajícímu spolehlivá spojení (např. pomocí TCP), nicméně nejčastěji se používá pro HTTP k vytvoření HTTPS. Jeho prostřednictvím jsou zabezpečeny webové aplikace, jako je elektronická komerce či správa aktiv. Míra využití TLS v SMTP také roste (je definována v RFC 3207). Tyto aplikace využívají k ověření identity koncových bodů certifikáty s veřejnými klíči.

Počet serverů a klientů nativně podporujících TLS stále roste, nicméně v řadě z nich podpora stále chybí. Jako alternativu mohou uživatelé použít samostatné TLS produkty, jako je Stunnel. Obalové mechanismy jako Stunnel stavějí na schopnosti získat TLS spojení přímo jednoduchým připojením na samostatný port vyhrazený pro tento účel. Například implicitní TCP port pro HTTPS je 443, aby se odlišil od portu 80 pro obyčejné HTTP. Nicméně v roce 1997 Internet Engineering Task Force doporučilo, aby aplikační protokoly vždy zahajovaly činnost bez zabezpečení a místo samostatných portů nabídly způsob pro přechod na TLS. S tím se jednoduché balení aplikačních dat do TLS, jaké používá Stunnel, nedokáže vypořádat.

TLS lze také použít pro tunelování všech síťových protokolů a vytvoření VPN, jak to dělá OpenVPN. Řada výrobců v současnosti spojuje šifrovací a autentizační mechanismy TLS s autorizací. Koncem 90. let bylo vynaloženo značné úsilí na vývoj klientských technologií mimo prohlížeč, které by podporovaly aplikace typu klient/server. V porovnání s tradičními VPN technologiemi na bázi IPsec má TLS některé principiální výhody při procházení firewally a NAT, které usnadňují správu při větším počtu vzdálených uživatelů.

TLS se také ve stále větší míře používá jako standardní metoda ochrany SIP signalizace v aplikacích. TLS dokáže poskytnout autentizaci a šifrování pro SIP signalizaci spojenou s VoIP a dalšími aplikacemi.

Související články

Externí odkazy

Reference

  1. BRIGHT, Peter. Apple, Google, Microsoft, and Mozilla come together to end TLS 1.0 [online]. 17 October 2018 [cit. 2018-10-17]. Dostupné online. 
  2. https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1 - Why Google is Hurrying the Web to Kill SHA-1