TLS 1.3
29. 8. 2018
TLS 1.3

​10. srpna 2018 byla zveřejněna dlouho očekávaná finální verze protokolu TLS 1.3 jako RFC s číslem 8446. Hlavním heslem, které spojuje mnoho změn, je jednoduchost. Nový standard slibuje rychlejší a bezpečnější internet, přičemž na vývoji standardu se pracovalo několik let a celkem bylo vytvořeno a zveřejněno 28 draftů. V celé historii vývoje SSL/TLS byly nyní navrženy největší změny, pojďme se proto podívat, jaká je aktuální podpora a jaké jsou hlavní rozdíly oproti předchozí verzi TLS 1.2 z roku 2008.

Vývoj v internetovém světě je velmi rychlý a velmi rychle se také mění nároky. Stále více informací získáváme a sdílíme přes internet a stále více komunikace putuje z našich mobilních telefonů. Není tedy divu, že bylo snahou komunikaci lépe zabezpečit, ale také zrychlit. Na předchozí verze TLS či SSL, jejich implementace a použité šifry bylo zveřejněno mnoho útoků, z nichž většina se může chlubit pěknými názvy, jako jsou například HeartBleed, POODLE, SWEET32, WeakDH a další. Z těch všech se komunita snažila poučit při návrhu nového protokolu.

Nová verze TLS přináší z hlediska bezpečnosti samé výhody, a proto doporučujeme ji začít podporovat co nejdříve. Pochopitelně bude ještě dlouhou dobu potřeba podporovat i starší verze TLS, doporučujeme během změn konfigurace rovnou prověřit nastavení i starších verzí. U mnoha produktů si na podporu TLS 1.3 pravděpodobně ještě nějakou dobu počkáme, neboť vývojáři čekali na finální verzi standardu a s implementací a testováním jsou teprve na začátku. Sledujte proto změny v používaném software a updatujte.

Podpora

Vývoj probíhal mnoho let a drafty byly průběžně zveřejňovány, takže ačkoli je finální verze TLS 1.3 na světě teprve v řádu dní, již existují produkty, které ji podporují. Z pohledu běžného uživatele je nejzásadnější otázka, do jaké míry je TLS 1.3 podporováno v prohlížečích. V době psaní tohoto článku byla podpora v prohlížečích Mozilla Firefox, Google Chrome (PC i mobilní verzi) a Samsung Internet. Rychlý aktuální přehled pak lze získat na stránce https://caniuse.com/#feat=tls1-3. Naopak prohlížeče Internet Explorer, Edge nebo Safari novinku zatím nepodporují. Nezbývá než doufat, že se do implementace (či zveřejnění) vrhnou nyní s vydáním finální verze. Zmiňme ještě, že například Google Chrome nové TLS sice podporuje, nicméně tato podpora není ve výchozí konfiguraci zapnutá a je třeba ji povolit manuálně.

Podíváme-li se na podporu z druhé strany, je dobrou zprávou, že TLS 1.3 je podporováno ve velmi rozšířené knihovně OpenSSL a kromě toho také knihovnou GnuTLS či wolfSSL. Průběžně aktualizovaný seznam implementací je dostupný na githubu: https://github.com/tlswg/tls13-spec/wiki/Implementations.

Problémy

Během vývoje a testů nastalo mnoho problémů především se síťovými zařízeními, které filtrují, kontrolují či manipulují komunikací, jako jsou například firewally, IPS, IDS nebo load balancery. Tyto problémy se řešily již v draftu 22 a bylo provedeno mnoho úprav tak, aby použití nové verze nepůsobilo teoreticky žádné problémy. Nicméně je dobré mít na paměti, že zrovna ve vaší síti se může vyskytnout prvek, který bude nekompatibilní s novou verzí a bude zahazovat pro něj neznámou komunikaci.

Kromě čistě technických problémů bude potřeba řešit také problémy vyplývající ze samotného bezpečnějšího návrhu nového protokolu. S cílem snížit množství dat, které jsou posílány v čitelné podobě, se nyní předává certifikát serveru šifrovaně. Není tedy možné ho nadále kontrolovat při pouhém pasivním sledování komunikace. Ovšem blokování webových stránek na základě kontroly certifikátu a porovnání se seznamem povolených či zakázaných URL je ve velkých společnostech běžná praxe. Pro kontrolu certifikát bude nyní třeba aktivně vstoupit do komunikace. Přičemž jakmile do ní zařízení vstoupí, není již možnost vrátit se do pozice pasivního pozorovatele. Může to znamenat, že bude v budoucnu potřeba aktivně dešifrovat a sledovat každé spojení po celou jeho dobu.

Všechny tyto problémy jsou výzvou především pro výrobce síťových prvků monitorujících komunikaci a jejich zákazníkům nezbývá, než čekat, jak se s novou situací vypořádají.

Zásadní změny

V následujících odstavcích si trochu detailněji a techničtěji popíšeme nejzásadnější změny v nové verzi TLS.

Bezpečnější handshake

Při využívání TLS jsou využívány oba druhy kryptografie, jak asymetrická, tak symetrická. Symetrické šifry jsou pro svou rychlost využívány pro šifrování samotných dat, asymetrické šifry jsou pak využity pro výměnu klíčů pro symetrické šifry.

Pro výměnu klíčů již není možné využít algoritmus RSA, ale pouze Diffie-Hellmanův (DH) algoritmus s možností vybrat si pouze z několika pevně daných parametrů, které jsou aktuálně považovány za bezpečné. RSA bylo vyřazeno z důvodu zajištění forward secrecy, česky takzvané „dopředné bezpečnosti“, díky čemuž je zajištěno, že prozrazení asymetrického soukromého klíče použitého při jednom spojení neumožní dešifrovat starší komunikaci. Co se týče DH algoritmu, do teď bylo možné během domluvy vybrat libovolné parametry. Ovšem jak to (nejen) v kryptografii bývá, příliš mnoho volnosti vede často ke špatným volbám, proto jsou parametry nyní pevně dané a nebylo ponecháno příliš prostoru pro výběr. Tato opatření byla inspirována útoky Logjam a WeakDH.

Prevence downgrade útoků

Některé útoky na předchozí verze TLS využívaly faktu, že úvodní komunikace, během které se klient se serverem domlouvají na šifrách, které budou používat, nebyly nijak šifrované, ani podepsané a mohly proto být modifikovány útočníkem v pozici Man in the Middle. Ten typicky nechal klienta se serverem použít slabé šifry se známými zranitelnostmi, díky čemuž mohl následnou komunikaci dešifrovat. Tomu je nyní zabráněno tím, že během inicializace server podepisuje celý handshake, včetně domluvy šifer. Příkladem útoku využívající downgrade byl například POODLE ("Padding Oracle On Downgraded Legacy Encryption").

Zkrácení handshaku

Tím, že se značně snížily možnosti algoritmů a parametrů pro asymetrickou výměnu klíče, je možné již v prvním požadavku, společně s "Client Hello" poslat zvolené parametry a klientskou část pro domluvu na sdíleném tajemství. Díky tomu bylo možné vynechat jednu výměnu zpráv v úvodním handshaku a snížit tak počet zpráv nutných pro domluvení sdíleného klíče a tím pádem i potřebný čas.

TLS 1.3 Obrázek 1: Schematické znázornění rozdílu mezi handshaky v TLS verzi 1.2 a 1.3 (plná velikost)

Omezení symetrických šifer

Jak už bylo zmiňováno, někdy méně je více a v duchu tohoto hesla byly vybírány také šifry, které budou podporované pro symetrické šifrování. Mnoho nedostatků SSL vrstvy jednotlivých webů spočívalo v tom, že byly v nastavení povolené parametry, které již nejsou považovány v dnešní době za bezpečné. Vyřazeny tak byly blokové šifry v CBC módu, bloková šifra DES, hashovací funkce SHA1, proudová šifra RC4 a další. Z nepřeberného množství možností (jejichž výčet můžete najít například zde) pak zůstalo pouhých pět:

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_CCM_SHA256
  • TLS_AES_128_CCM_8_SHA256



Další zdroje

V tomto článku jsme se snažili stručně shrnout nejzásadnější změny a aktuální situaci. Není možné a ani nebylo cílem obsáhnout všechny změny. Více podrobnějších informací je možné získat například na těchto stránkách:

Zda se vám zobrazí stránka přes TLS 1.3, si pak můžete vyzkoušet například na https://tls13.crypto.mozilla.org/.    
 

Adéla Haníková

Adéla Haníková
Security Specialist

AEC a.s.
Security Assessment Division