TLS a SSL: Jak fungují protokoly pro zabezpečení internetové komunikace
TLS a SSL vysvětleny: jak šifrování chrání internetovou komunikaci, e‑mail, VoIP a web. Praktické tipy a rozdíly pro bezpečné připojení.
Protokol TLS (Transport Layer Security) a jeho předchůdce SSL (Secure Sockets Layer) jsou kryptografické protokoly, které zajišťují bezpečnost a integritu dat pro komunikaci v sítích TCP/IP, jako je Internet. Několik verzí těchto protokolů se běžně používá v aplikacích, jako je prohlížení webu, elektronická pošta, faxování přes internet, instant messaging a přenos hlasu přes IP (VoIP).
Krátká historie a rozdíl mezi SSL a TLS
SSL byl vyvinut firmou Netscape v 90. letech. Po několika verzích byl SSL vyvíjen do podoby bezpečnějšího a standardizovaného protokolu, který dnes známe jako TLS. Prakticky dnes platí, že pojem "SSL" se často používá historicky nebo jako zkratka v běžné řeči, zatímco moderní implementace by měly používat TLS (aktuálně TLS 1.2 a TLS 1.3).
Jak TLS/SSL fungují — základní principy
TLS kombinuje asymetrické šifrování (pro navázání spojení a výměnu klíčů) a symetrické šifrování (pro vlastní výměnu dat) spolu s kontrolou integrity pomocí MAC/AEAD algoritmů. Zjednodušený průběh (handshake):
- ClientHello: klient navrhne verzi protokolu, seznam podporovaných šifrovacích sad a pošle náhodná data.
- ServerHello: server vybere parametry, pošle svůj certifikát a veřejný klíč (případně ServerKeyExchange).
- Ověření certifikátu: klient zkontroluje platnost certifikátu (řetězec důvěry, podpis, shoda domény).
- Výměna klíče: klient a server bezpečně dohodnou sdílený symetrický klíč (v starších verzích často pomocí RSA; moderně preferováno ECDHE pro forward secrecy).
- ChangeCipherSpec a Finished: obě strany přepnou na šifrovaný režim a potvrdí, že handshake byl úspěšný.
U TLS 1.3 je handshake zjednodušen a rychlejší — většina kroků je sloučena, což snižuje latenci a některá rizika spojená s dřívějšími verzemi.
Certifikáty a PKI
Identita serveru (a případně klienta) se ověřuje pomocí digitálních certifikátů vydaných certifikačními autoritami (CA). Základní prvky, na které je potřeba dávat pozor:
- Řetězec důvěry: certifikát musí být podepsán důvěryhodnou CA nebo řetězcem podepsaným až k důvěryhodnému kořenovému certifikátu.
- Platnost: kontrola data vydání a vypršení platnosti certifikátu.
- Shoda jména: certifikát musí odpovídat doméně (Common Name / SAN).
- Revokace: ověřování přes CRL nebo OCSP pro zjištění, zda certifikát nebyl odvolán.
Verze TLS, zranitelnosti a doporučení
- Deprecated: SSL 2.0/3.0 a TLS 1.0/1.1 jsou považovány za zastaralé a zranitelné — měly by být zakázány.
- Současné doporučení: povolit TLS 1.2 a TLS 1.3. TLS 1.3 má lepší bezpečnostní vlastnosti, méně komplexní handshake a odstraněné slabé algoritmy.
- Šifry: preferovat AEAD ciphers (např. AES-GCM, ChaCha20-Poly1305) a preferovat ECDHE pro zajištění forward secrecy.
- Útoky, na které je třeba dávat pozor: POODLE (SSLv3), BEAST (starší TLS implementace), Heartbleed (chyba v OpenSSL - únik paměti), CRIME/BREACH (útoky na kompresi/HTTP), downgrade útoky a zneužití kompromitovaných CA.
Bezpečnostní opatření a dobré praktiky pro správce
- Deaktivovat staré protokoly a slabé šifry (SSLv3, TLS 1.0/1.1, RC4, DES, 3DES).
- Nastavit pořadí preferovaných cipher-suitů tak, aby klienti preferovali ECDHE + AEAD.
- Používat silné veřejné klíče (např. RSA 2048/3072 nebo ECDSA s doporučenými křivkami).
- Zapnout HSTS (HTTP Strict Transport Security) u webových serverů, kde má smysl.
- Implementovat OCSP stapling pro rychlou a bezpečnou kontrolu revokace certifikátu.
- Pravidelně aktualizovat TLS knihovny (OpenSSL, BoringSSL, NSS apod.) kvůli opravám zranitelností.
- Zvažovat použití Certificate Transparency a pinning tam, kde je to vhodné.
Běžné nasazení a protokoly využívající TLS
- HTTPS (HTTP přes TLS) — nejběžnější použití pro zabezpečení webu.
- SMTPS, IMAPS, POP3S nebo STARTTLS pro zabezpečení e-mailů.
- FTPS (FTP přes TLS) a bezpečné tunelování protokolů přes TLS.
- VoIP a instant messaging často používají TLS pro zabezpečení signálové a/nebo mediální vrstvy.
Uživatelská zkušenost a indikátory zabezpečení
V moderních prohlížečích vidíte indikátory jako zámek u adresního řádku — značí platné TLS spojení a ověřený certifikát. Nicméně zámek neznamená absolutní bezpečí; je důležité sledovat, zda je certifikát platný a zda byla dodržena doporučení (aktuální verze TLS, silné šifry).
Závěr
TLS je základní stavební kámen bezpečné komunikace na internetu. Správným nastavením, aktualizacemi a pochopením toho, jak protokol funguje, lze minimalizovat riziko odposlechu, manipulace s daty a dalších útoků. Doporučení pro současnost: zakázat staré verze, povolit TLS 1.2/1.3, preferovat ECDHE a AEAD ciphers a důsledně spravovat certifikáty a revokace.
Popis
Protokol TLS umožňuje aplikacím komunikovat v síti způsobem, který má zabránit odposlechu, manipulaci a padělání zpráv. Protokol TLS zajišťuje ověřování koncových bodů a důvěrnost komunikace přes internet pomocí kryptografie. Většinou je ověřován pouze server (tj. je zajištěna jeho identita), zatímco klient zůstává neověřen; to znamená, že koncový uživatel (ať už jednotlivec nebo aplikace, např. webový prohlížeč) si může být jistý, s kým komunikuje. Další úroveň zabezpečení se nazývá vzájemné ověřování. Vzájemné ověřování vyžaduje nasazení infrastruktury veřejných klíčů (PKI) u klientů, pokud se nepoužije protokol TLS-PSK nebo protokol SRP (Secure Remote Password), které poskytují silné vzájemné ověřování bez nutnosti nasazení PKI.
Použití
Protokoly SSL a TLS se široce používají v několika projektech softwaru s otevřeným zdrojovým kódem. Programátoři mohou pro funkce SSL/TLS používat knihovny OpenSSL, NSS nebo GnuTLS. Systém Microsoft Windows zahrnuje použití protokolů SSL a TLS jako součást balíčku Secure Channel. Programátoři v Delphi mohou použít knihovnu Indy.
Normy
Aktuální schválená verze je 1.2, která je uvedena v:
- RFC 5246: "Protokol TLS (Transport Layer Security) verze 1.2".
Současná norma tyto předchozí verze ruší:
- RFC 2246: "Protokol TLS verze 1.0".
- RFC 4346: "Protokol TLS (Transport Layer Security) verze 1.1".
Další RFC následně rozšířila protokol TLS, včetně:
- RFC 2595: "Použití protokolu TLS s protokoly IMAP, POP3 a ACAP". Specifikuje rozšíření služeb IMAP, POP3 a ACAP, které umožňuje serveru a klientovi používat zabezpečení na transportní vrstvě k zajištění soukromé, ověřené komunikace přes internet.
- RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)". 40bitové šifrové sady definované v této poznámce se objevují pouze za účelem dokumentace skutečnosti, že tyto kódy šifrových sad již byly přiděleny.
- RFC 2817: "Upgrade na TLS v rámci protokolu HTTP/1.1" vysvětluje, jak použít mechanismus upgradu v protokolu HTTP/1.1 k zahájení protokolu TLS (Transport Layer Security) přes existující připojení TCP. To umožňuje, aby nezabezpečený a zabezpečený provoz HTTP sdílel stejný známý port (v tomto případě http: na 80 místo https: na 443).
- RFC 2818: "HTTP Over TLS" rozlišuje zabezpečený provoz od nezabezpečeného provozu použitím jiného "portu serveru".
- RFC 3207: "SMTP Service Extension for Secure SMTP over Transport Layer Security". Specifikuje rozšíření služby SMTP, které umožňuje serveru SMTP a klientovi používat zabezpečení transportní vrstvy k zajištění soukromé, ověřené komunikace přes internet.
- RFC 3268: "AES Ciphersuites for TLS". Přidává šifry AES (Advanced Encryption Standard) k již existujícím symetrickým šifrám.
- RFC 3546: "Transport Layer Security (TLS) Extensions" přidává mechanismus pro vyjednávání rozšíření protokolu během inicializace relace a definuje některá rozšíření. Zastaralé podle RFC 4366.
- RFC 3749: "Transport Layer Security Protocol Compression Methods", specifikuje rámec pro kompresní metody a kompresní metodu DEFLATE.
- RFC 3943: "(TLS) pomocí Lempel-Ziv-Stac (LZS)".
- RFC 4132: "Addition of Camellia Cipher Suites to Transport Layer Security (TLS)".
- RFC 4162: "Addition of SEED Cipher Suites to Transport Layer Security (TLS)".
- RFC 4217: "Zabezpečení FTP pomocí TLS".
- RFC 4279: "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", přidává tři sady nových šifer pro protokol TLS, které podporují ověřování založené na předsdílených klíčích.
- RFC 4347: "Datagram Transport Layer Security" specifikuje variantu protokolu TLS, která funguje nad datagramovými protokoly (například UDP).
- RFC 4366: "Transport Layer Security (TLS) Extensions" popisuje jak sadu specifických rozšíření, tak obecný mechanismus rozšíření.
- RFC 4492: "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)".
- RFC 4507: "Transport Layer Security (TLS) Session Resumption without Server-Side State".
- RFC 4680: "TLS Handshake Message for Supplemental Data".
- RFC 4681: "Rozšíření mapování uživatelů TLS".
- RFC 4785: "Šifry s předem sdíleným klíčem (PSK) s šifrováním NULL pro zabezpečení transportní vrstvy (TLS)".
Související stránky
- Certifikační autorita
- Certifikát veřejného klíče
- Rozšířený ověřovací certifikát
- Zrychlení SSL
- Zabezpečení transportní vrstvy datagramu
- Multiplexované zabezpečení transportní vrstvy
- X.509
- Virtuální privátní síť
- SEED
- Kryptografie se serverovou bránou
Software
- OpenSSL: svobodná (a velmi populární) implementace (licence BSD s některými vtipnými rozšířeními).
- GnuTLS: svobodná implementace pod licencí LGPL
- JSSE: implementace jazyka Java, která je součástí prostředí Java Runtime Environment.
- Služby zabezpečení sítě (NSS): Otevřená knihovna s validací FIPS 140
Vyhledávání