Po 30. dubnu musí být všechny platné certifikáty vystaveny v databázích Certificate Transparency a prohlížeč o tom musí dostat potvrzení. V opačném případě nebude certifikát považován za důvěryhodný. Je to ochrana před chybami certifikačních autorit, které doposud mohly vystavovat cokoliv komukoliv. Nyní bude jejich činnost pod kontrolou.
Změna se týká zatím jen prohlížeče Chrome, což je ovšem s více než 57% podílem jednoznačně nejpoužívanější webový prohlížeč. Pravděpodobně se ale časem přidají další tvůrci prohlížečů, Mozilla už oznámila, že to má rozhodně v plánu, i když zatím neuvedla žádný konkrétní termín.
Zároveň se týká nově vystavovaných certifikátů, tedy těch s platností začínající po 30. dubnu a později. Pokud provozujete certifikát staršího data, nemusíte zatím dělat vůbec nic, tyto certifikáty postupně doběhnou standardním způsobem.
Původně měla být tato povinnost zavedena už v říjnu 2017, ale na základě zpětné vazby autorit byl termín o půl roku odložen.
Certificate Transparency
Certificate Transparency je popsán v RFC 6962 a jedná se o veřejné logy, do kterých může kdokoliv přidávat certifikáty vydané uznávanými autoritami. Jednotlivé záznamy jsou ukládány v Merklově hashovém stromu, takže není možné je nepozorovaně měnit či odstraňovat.
Logy dnes provozuje desítka organizací a další přibývají. Je možné v nich vyhledávat pomocí různých nástrojů, například na webu crt.sh. Princip spočívá v tom, že sledovat obsah logů může kdokoliv, v první řadě by to ale měli dělat majitelé domén, kteří chtějí ohlídat, že žádná autorita nevystavila neoprávněně certifikát na jejich doménová jména.
Neexistuje totiž úplně pevná vazba mezi doménou a autoritou, tudíž teoreticky může na jakoukoliv doménu vystavit platný certifikát libovolná autorita. Zažili jsme to již mnohokrát: zkušenosti: WoSign, Comodo, DigiNotar, Symantec a mnohé další.
Podrobně se principům věnoval Ondrej Mikle v článku Certificate Transparency: vydávání certifikátů pod kontrolou. Podrobně se o problematice nedávno rozepsali také na blogu společnosti CloudFlare.
Důkazní břemeno je na provozovateli
Pokud provozujete weby s HTTPS, měli byste zbystřit. Vy jste zodpovědní za to, že prohlížeč dostane kromě samotného certifikátu i důkaz o jeho zařazení do některých logů. Tento důkaz se nazývá SCT (Signed Certificate Timestamp) a jde o digitálně podepsané potvrzení o zařazení do logu, které je svázané s konkrétním certifikátem. Log tím potvrzuje: tento certifikát známe a máme ho v databázi.
Teprve pokud prohlížeč obdrží tento důkaz, může považovat certifikát za důvěryhodný. Od roku 2015 toto opatření platí u všech EV certifikátů, nyní se rozšiřuje i na OV a DV. Navíc například Symantec je kvůli bezpečnostním lapsům povinen všechny své certifikáty zveřejňovat už od června 2016. Vlastně tedy nejde o žádnou novinku a určitě jste se s certifikátem doplněným o SCT setkali.
Důkaz o vložení do logu je možné uživateli doručit jedním ze tří způsobů:
- jako součást OCSP odpovědi
- jako rozšíření TLS protokolu v TLS handshake
- jako X.509v3 rozšíření certifikátu
Nejpoužívanější bude právě třetí varianta, kdy (pre)certifikát do logu vloží sama autorita a poté důkaz do certifikátu přidá. Prohlížeč tedy dostane rovnou certifikát i důkaz o jeho vložení do CT. Pokud by se ale některá autorita o zařazení do Transparency nezajímala, má uživatel certifikátu stále možnost zařídit vše vlastními silami a vložit SCT do konfigurace serveru, který jej uživateli předá během navazování TLS komunikace.
Jeden log nestačí
Aby nebylo možné snadno podvádět, vynucuje nastavená politika zveřejnění ve více lozích různých provozovatelů. Počet závisí na tom, kterou z metod jsou uživateli doručovány SCT důkazy a v případě vložení přímo do certifikátu pak ještě záleží na době platnosti. Minimální počet se tak pohybuje od dvou do pěti.
Každý z logů navíc musí být auditován, musí být provozován jiným subjektem na jiné infrastruktuře a nesmí mít výpadky (dostupnost 99 %). Google před zařazením každý log pečlivě sleduje, hlídá jeho konzistentnost a rychlost zařazování nových certifikátů.
Zároveň se doporučuje mít certifikát ve více různých CT lozích také z toho důvodu, aby se nestal nedůvěryhodným v případě, že bude některý z logů z prohlížeče vyřazen. Poté by mohl počet validních SCT klesnout pod stanovenou hranici a certifikát by přestal fungovat. To je důležité zejména u certifikátů s dlouhou platností, kde je takové riziko vyšší.
Můžete začít hlídat
Jelikož je nyní zajištěno, že všechny nově vydané certifikáty budou veřejné, můžete začít hlídat své domény. Buďto můžete stahovat obsahy logů (řádově desítky gigabajtů na log) a lokálně v nich vyhledávat nebo použít některou z online služeb: crt.sh, Cert Spotter, CT monitoring nebo obdobný nástroj od Facebooku.
Informace o SCT najdete také přímo v prohlížeči. Chrome je zobrazuje v konzoli (F12) pod kartou Security. Pokud ji máte otevřenou, stačí stránku znovu načíst a poté zvolit v levé části položku Main origin a uvidíte jak samotné SCT záznamy, tak i způsob jejich doručení.