TLS handshake odhalený: Proč je tvůj bezpečnostní základ klíčový víc, než si myslíš
TLS Handshake rozluštěný: Proč je bezpečí základu důležitější, než si myslíte
Když zadáte adresu do prohlížeče, spustí se v pozadí tichý rituál. Než se pošle první bit dat, váš prohlížeč a server si vymění kryptografické signály. Trvá to zlomek sekundy, ale rozhodne o bezpečnosti celé komunikace. Jde o TLS handshake – klíčový prvek, který většina lidí bere jako samozřejmost.
V NameOcean jsme přesvědčeni, že vývojáři a správci infrastruktury by měli tyto základy znát. Nejen pro lepší práci. Špatné nastavení TLS ohrozí uživatele a přitáhne pokuty za neshoda s předpisy.
Co se v handshake opravdu děje?
Představte si to jednoduše. Klient pošle serveru: "Chci bezpečné spojení. Podporuji tyhle protokoly a šifrovací sady." Server odpoví: "Dobře, vezmeme TLS 1.3 s touto sadou. Tady je můj certifikát na důkaz."
TLS 1.3 to zvládne za jednu cestu tam a zpět. U staršího TLS 1.2 jich bylo dvě. Rozdíl je malý, ale v éře, kde každá milisekunda počítá, je to výhoda.
Handshake navíc vytvoří dočasné klíče pro tu session. Po skončení se zničí. To je forward secrecy. I kdyby útočník ukradl privátní klíč serveru, staré konverzace neprozradí.
Problém s verzemi: TLS 1.2 nestačí, 1.3 ještě není všude
Mnoho serverů pořád běží na TLS 1.0 nebo 1.1. Tyto staré verze jsou zranitelné vůči útokům jako BEAST nebo POODLE. Prohlížeče je odmítly, předpisy jako PCI DSS nebo HIPAA je zakazují.
Legacy systémy se neaktualizují. Pokud je ještě podporujete, riskujete útok i audity.
Doporučení: Minimum je TLS 1.2 se silnými sadami. Ideál je TLS 1.3. Ta odstranila slabiny a minimalizuje chyby v nastavení.
Cipher suites: Jak vybrat pevnou šifru
Po výběru verze přijde řada na šifrovací sadu. Tady se často klouže.
TLS 1.3 má sady pevně dané – všechny jsou top.
U TLS 1.2 si vybírejte:
- Key Exchange: ECDHE pro forward secrecy. RSA ne.
- Šifrování: AES-GCM nebo ChaCha20. Žádný CBC, RC4, DES nebo 3DES.
- Hash: SHA-256 nebo SHA-384.
V Nginx to může vypadat takto:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
V Apache upravíte SSLProtocol a SSLCipherSuite. Klíč je v jasném výběru moderních algoritmů.
Certifikátové řetězce: Častá past
Stává se to často: stránka jede v Chrome, ale v staré appce selže. Důvod? Neúplný cert chain.
Certifikát není jen list. Je to řetězec až k root CA. Server musí poslat všechny intermediate certy. Prohlížeče si je dořeší, starší klienti ne.
Stačí stáhnout intermediates od CA a nastavit je ve configu. Pro produkci to musí být.
Jak splnit předpisy a získat důvěru díky TLS
Předpisy nejsou nepřítel. Jsou minimem. TLS 1.0 vás dostane do problémů s PCI DSS nebo HIPAA – pokuty a ztráta důvěry.
Forward secrecy, silné sady, aktuální verze – to jsou základy.
Jak často kontrolovat TLS nastavení?
Po každé změně a jednou měsíčně. Update serveru nebo renew certu může nastavení rozbít. Automatizujte, aby jste zachytili posun.
Mnoho týmů to kontroluje jen na začátku. Neopakujte jejich chybu.
Více než TLS: Celkový pohled
Silné TLS je základ, ale nestačí. Přidejte HSTS, CSP nebo X-Frame-Options. Bezpečnost zahrnuje autentizaci, API a hardening.
Pro web nebo API dělejte pravidelné audity celého stacku.
Závěr
TLS handshake běží tiše a elegantně – jako dobrá infrastruktura. Chápete-li ho, udržíte ho aktuálního a kontrolujete, budou uživatelé v bezpečí a auditoři klidní.
V NameOcean máme nástroje na kontrolu a monitoring TLS. Bezpečnost nemusí být hádanka.