Certificate transparency - ochrana proti podvrženému certifikátu
5.2.2015 | Jindřich Zechmeister
Certificate transparency je funkce zvyšující důvěryhodnost certifikátů, o které jsme psali již v listopadu. Teorii najdete v článku Certificate Transparency a Public Key Pinning. Dnes se podíváme na CT blíže, a zejména na praktickou stránku a chování v prohlížeči Google Chrome.
Co je to Certificate transparency a proč vzniklo?
V podstatě lze Certificate transparency charakterizovat jako logování vydaných certifikátů Googlem, který je kromě evidence i monitoruje a audituje. Certificate transparency funguje pouze v Chrome, jiné prohlížeče CT nepodporují.
Nová funkce CT vznikla z důvodu zvýšení ochrany před podvržením certifikátu, který se odborně nazývá MITM (Man in the middle) útok. V důsledku toho má být uživatel více ochráněn před snahou o použití podvrženého certifikátu (takové riziko je však ve skutečnosti minimální).
Certificate transparency je zatím doménou EV certifikátů s rozšířeným ověřením, ale cílem Googlu je rozšířit službu i na ostatní typy certifikátů.
Důležité je, že od února 2015 nebude Chrome zobrazovat zelený řádek u EV certifikátu vystaveném po 1. 1. 2015, pokud nebude certifikát v CT logu! Existující EV certifikáty Symantec, GeoTrust a Thawte byly do logu přidány v prosinci 2014 a nové budou přidávány automaticky. Naši zákazníci se tak nemusí znepokojovat.
Chrome kontroluje veřejné záznamy z certifikátu
Google Chrome začal zobrazovat podivné a nesrozumitelné hlášky ohledně zveřejnění údajů. Následuje přehled čtyř možných variant (překlad čerpám z české verze Chrome, u některých variant zatím oficiální překlad neznám).
Identita této webové stránky (organizace XY) byla ověřena [nazev vaší CA], ...
- a je veřejně auditovatelná (The identity of this website has been verified by ISSUER and is publicly auditable.) - vše je v pořádku a CT funguje (validní timestamp).
- ale neexistují žádné veřejné záznamy této organizace - zřejmě absence CT záznamu, viz níže
- ale neexistují žádné veřejné záznamy stránky (The identity of this website has been verified by ISSUER but does not have public audit records) - CT nefunguje (v cert. neexistuje podepsaná časová známka).
- tvrdí, že má veřejné audit. záznamy, ale nedají se ověřit (vlastní překlad) - timestamp je podepsán, ale není ve známém logu a nedá se ověřit.
- ale veřejné auditní záznamy selhaly při ověření (vlastní překlad) - timestamp je ve známém logu uveden, ale nejde ověřit.
Chyba Certificate transparency v Google Chrome. Hláška o bezp. nastavení už nepatří CT.
V první chvíli mě též vůbec nenapadlo, že tato hláška souvisí s Certificate transparency, ale je to tak. Výhrady k veřejným záznamům (audit records) se tedy týkají Certificate transparency. Divím se však tomu, že u hlášky není žádné další vysvětlení. Odkaz na CT záznam se objeví pouze u kladně ověřeného záznamu, u chyby není nic.
Co dělat z pohledu provozovatele webu?
Důležité je vybrat si zodpovědnou certifikační autoritu, která se stará o zveřejňování vydaných EV certifikátu v CT logu. Například Symantec, Thawte nebo GeoTrust. Zbytek už se potom "udělá" sám a výsledek bude kladný.
Výhodou pro majitele webu je možnost kontroly a přehledu nad vydanými certifikáty z pohledu vlastníka domény. Dozvíte se, pokud nějaká větší certifikační autorita vydala certifikát pro vaši doménu; pokud to bylo bez vašeho vědomí, můžete zneužití včas zabránit.
Co se stane, když Certificate transparency nefunguje?
V případě nefunkčnosti CT by Chrome neměl zobrazit zelený pruh EV certifikátu. U Googlu však těžko předvídat, jak nakonec do Chromu upozornění vloží. Spíše očekávám, že prohlížeč zobrazí varování o nedůvěryhodnosti. V současnosti zřejmě CT ovlivňuje zobrazení HTTPS symbolu i u nižších typů certifikátů. Google tak v Chrome a upozorňování vytváří naprostý zmatek.
Není vše dokonalé, co je od Google
Certificate transparency bylo vytvořeno s bohulibým záměrem posílení ochrany uživatelů před podvrženými certifikáty. Má to však několik nedostatků, které musím zmínit.
Prvním je podpora pouze v Chrome; jiné prohlížeče zatím CT nepoužívají. Druhým je samotný Google, který je v otázkách bezpečnosti velice agresivní, a v nasazování nových funkcí do Chrome až příliš spěchá (stačí si vzpomenout na SHA-1). Chrome je teď ve stavu, kdy u certifikátů mnohdy ukazuje nesmyslná varování, a to ještě jinak v rámci platforem (na linuxu tak vidíte varování které na Windows nevidíte, což může být způsobeno jiným tempem práce programátorů u linuxové verze Chromu).
Samotný princip Certificate transparency není dokonalý, ale nebudu zde rozebírat všechny výhrady, a odkáži čtenáře na 1. zdroj na konci článku. Autor článku hlavně vyčítá fakt, že CT neslouží ani tak k zabránění MITM útoku, jako spíš k jeho dodatečnému zjištění.
Provozovatel hlavního logu, tedy Google, se v podstatě tváří, jako by se ho CT netýkalo. Kontrolu nechává na veřejnosti, a každý majitel domény by si měl kontrolovat logy sám (!), a hledat, zdali pro jeho doménu nebyl vystaven podvodný certifikát (!). Logy mohou též kontrolovat "monitoři" logů, avšak je nejasné, co mají v případě podezření dělat. Stejně tak je nejasné, co mají s pozitivním nálezem v CT logu dělat prohlížeče (nakonec to dopadne tak, že každý bdue hlásit něco jiného).
CT v současné podobě neřeší situaci, kdyby podvržené certifikáty pocházely přímo od CA (což se stává při hacku CA, ke kterým naštěstí prakticky nedochází, nebo při kolaboraci CA s tajnými službami). Autorita by samozřejmě při vydání certifikátu publikovala i jeho záznam do CT.
Dalším nedostatkem je fakt, že CT funguje automaticky, a není žádný způsob tzv. opt-out, tedy možnosti zrušit publikování certifikátů. Majitel certifikátu nedokáže ovlivnit nic, a pokud se mu CT nelíbí, nemá na výběr.
Další zdroje informací:
- The Trouble with Certificate Transparency. Kritika nedostatků Certificate transparency a výhrady.
- Certificate Transparency. Oficiální web Googlu k Certificate transparency.
- A Comparison of HTTPS Reforms. Zamyšlení nad "vylepšením" SSL/TLS protokolu a srovnání těchto nových funkcí.
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz