Hlavní navigace

Delegated Credentials: oddělení TLS terminace od koncového certifikátu

Petr Krčmář

Mozilla spouští experiment, ve kterém chce ověřit funkčnost konceptu Delegated Credentials. Ten umožňuje oddělit to, co doposud zůstává neoddělitelné: provozovatele TLS terminace a vlastníka certifikátu.

Doba čtení: 4 minuty

Sdílet

Koncept certifikačních autorit a řetězce důvěry (PKI) je všeobecně rozšířený a dnes na něm prakticky stojí celosvětový web. Přesto má svá známá úskalí a slabiny a členové CA/Browser fóra se postupně snaží přidávat různé další ochrany, které zvýší bezpečnost celého řešení.

Takto se například postupně zkracuje platnost koncových certifikátů a chybám certifikačních autorit předchází veřejné databáze Certificate Transparency. Prostor na zlepšení tu ale stále je a s další novinkou přichází Mozilla.

Problém

Za vystavování koncových certifikátů jsou zodpovědné certifikační autority, které stanovují pravidla a případně omezení. Certifikát mívá obvykle velmi dlouhou dobu platnosti, která je sice dnes omezena na 825 dnů (a někteří by ji chtěli dále zkracovat), ale i to je poměrně dlouhá doba.

Zvlášť s nástupem nejrůznějších CDN se provozovatelé služeb dostávají do situace, kdy předávají veškerou důvěru právě těmto společnostem. U nich se totiž zakončuje TLS spojení, takže právě provozovatelé CDN musejí mít přístup k certifikátu a zejména pak k jeho privátnímu klíči. Vystupují tedy zástupně v roli provozovatele služby.

Takový externí poskytovatel je zároveň mimo jakoukoliv kontrolu skutečného provozovatele webu, takže například v případě úniku citlivých dat v podobě privátního klíče, nemusí dojít ke včasnému zásahu. Za předpokladu, že vůbec provozovatel zjistí, že v CDN k incidentu došlo.

V současné době platí, že pokud chceme ukončovat TLS spojení s uživatelem mimo svou infrastrukturu, musíme se kompletně vzdát kontroly nad privátním klíčem náležícím k našemu certifikátu, tedy potažmo k naší doméně.

Řešení

S řešením přichází organizace Mozilla, která se jej také snaží standardizovat v rámci IETF. Návrh nese název Delegated Credentials for TLS a vytváří mechanismus, díky kterému může provozovatel služby dočasně delegovat svou identitu na někoho jiného.

Navíc bez účasti původní certifikační autority, která tak nemusí být zatížena dalšími žádostmi nového typu. Mozilla si správně uvědomuje, že dalším zvýšením závislosti na původních certifikačních autoritách by vznikl jednak problém s výkonem, ale v případně dostupnosti autority by došlo k výpadku celé služby, která by nedokázala včas získat nový krátkodobý certifikát.

Návrh standardu zavádí nový typ zprávy delegated credential (DC), který obsahuje jen dvě položky: dobu platnosti a nový veřejný klíč doplněný o typ použitého algoritmu. Tato zpráva je podepsána privátním klíčem náležícím k původnímu veřejnému certifikátu vydanému autoritou.

Držitel původního certifikátu tak může vystupovat v roli jakési miniaturní autority, která může předelegovat důvěru na libovolné množství dalších veřejných klíčů. Platnost této delegace je omezena maximální dobou sedmi dnů a samozřejmě je možné takto DC zprávy vytvářet jen pro doménová jména uvedená v původním certifikátu.

Zprávy jsou pak přenášeny v rozšíření protokolu TLS, kdy server signalizuje podporu tohoto mechanismu a kromě původního certifikátu do komunikace přidává také DC. Klient pak provede ověření celého řetězce včetně doplňujícího DC a pokud je vše v pořádku, použije nově předložený klíč během TLS handshake místo klíče uvedeného v certifikátu.

Výhodou je, že není potřeba zavádět žádné změny na straně PKI a autority tedy o existenci DC nepotřebují vůbec vědět. Pokud na přijetí DC není připraven klient, může mezilehlý poskytovatel použít mechanismus LURK a část hanshake nechat na původním držiteli privátního klíče. To funguje jako záložní mechanismus, který ale trpí latencemi a spoléhá se na dostupnost všech stran komunikace. Dodejme, že důležitou podmínkou pro použití mechanismu je podpora protokolu TLS 1.3 či novějšího.

Experiment

Mozilla se nyní rozhodla, že je čas na první experiment ve skutečném provozu. Dohodla se se společností CloudFlare, se kterou dlouhodobě spolupracuje. Experiment bude dostupný jen ve vývojářské verzi prohlížeče Firefox Nightly s rozšířením TLS Delegated Credentials Experiment.

Podpora DC je ve výchozím stavu vypnutá, ale rozšíření si ji dočasně zapne, pošle požadavek na server CloudFlare a podporu opět vypne. Cílem je zjistit pomocí telemetrie řadu užitečných údajů, jako je například efektivita a stabilita rozšíření v reálném provozu či případné zpoždění upraveného handshake nebo procento odmítnutí spojení.

Uživatelé mají k výsledku experimentu ve svém vlastním prohlížeči přístup na stránce about:telemetry, kde je možné vyhledáním slova delegated dojít až ke konkrétním výstupům.

Zvídavější uživatelé mají možnost si podporu zapnout ručně a experimentovat po vlastní ose. Na stránce about:config je potřeba vyhledat položku security.tls.enable_delega­ted_credentials a přepnout ji na true. Experimentální stránka u CloudFlare se pak nachází na dc.crypto.mozilla.org. Rozhraní prohlížeče zatím nijak použité DC nesignalizuje, to bude podle Mozilly případně doplněno během dalšího vývoje.