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.

Logo Google

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.

chrome certificate transparency

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í:

  1. The Trouble with Certificate Transparency. Kritika nedostatků Certificate transparency a výhrady.
  2. Certificate Transparency. Oficiální web Googlu k Certificate transparency.
  3. A Comparison of HTTPS Reforms. Zamyšlení nad "vylepšením" SSL/TLS protokolu a srovnání těchto nových funkcí.

Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz