Jak DNSCrypt vyřešil problém s expirovanými certifikáty zavedením 24hodinové doby platnosti

Jak DNSCrypt vyřešil problém s expirovanými certifikáty zavedením 24hodinové doby platnosti

V minulosti certifikáty často končily, protože se musely obnovovat ručně. Lidé to prostě zapomněli udělat. S příchodem Let's Encrypt a postupu automatické aktualizace se zdá, že by měl být problém vyřešen. Ale nedávno Příběh Firefoxu ukazuje, že je ve skutečnosti stále aktuální. Bohužel platnost certifikátů nadále vyprší.

Pokud jste příběh zmeškali, o půlnoci 4. května 2019 náhle přestala fungovat téměř všechna rozšíření Firefoxu.

Jak se ukázalo, k masivnímu selhání došlo kvůli tomu, že Mozilla platnost certifikátu vypršela, který sloužil k podepisování rozšíření. Proto byly označeny jako „neplatné“ a nebyly ověřeny (technické údaje). Na fórech bylo jako řešení doporučeno zakázat ověřování podpisu rozšíření v about: config nebo změna systémových hodin.

Mozilla rychle vydala opravu Firefoxu 66.0.4, která řeší problém s neplatným certifikátem a všechna rozšíření se vracejí do normálu. Vývojáři jej doporučují nainstalovat a nepoužívejte žádná řešení, jak obejít ověření podpisu, protože mohou být v konfliktu s opravou.

Tento příběh však znovu ukazuje, že vypršení platnosti certifikátu zůstává dnes naléhavým problémem.

V tomto ohledu je zajímavé podívat se na poměrně originální způsob, jak se vývojáři protokolu s tímto úkolem vypořádali DNSCrypt. Jejich řešení lze rozdělit na dvě části. Za prvé se jedná o krátkodobé certifikáty. Za druhé, upozornění uživatelů na vypršení platnosti těch dlouhodobých.

DNSCrypt

Jak DNSCrypt vyřešil problém s expirovanými certifikáty zavedením 24hodinové doby platnostiDNSCrypt je protokol pro šifrování provozu DNS. Chrání komunikaci DNS před odposlechy a MiTM a také umožňuje obejít blokování na úrovni dotazu DNS.

Protokol zabaluje provoz DNS mezi klientem a serverem do kryptografické konstrukce, která funguje přes transportní protokoly UDP a TCP. Chcete-li jej použít, musí klient i DNS resolver podporovat DNSCrypt. Například od března 2016 je povolena na jejích serverech DNS a v prohlížeči Yandex. Několik dalších poskytovatelů také oznámilo podporu, včetně Google a Cloudflare. Bohužel jich není mnoho (na oficiálních stránkách je uvedeno 152 veřejných DNS serverů). Ale program dnscrypt-proxy lze nainstalovat ručně na klienty Linux, Windows a MacOS. Jsou tu také serverové implementace.

Jak DNSCrypt vyřešil problém s expirovanými certifikáty zavedením 24hodinové doby platnosti

Jak DNSCrypt funguje? Zkrátka klient vezme veřejný klíč vybraného poskytovatele a použije jej k ověření jeho certifikátů. Krátkodobé veřejné klíče pro relaci a identifikátor šifrovací sady již existují. Klientům se doporučuje, aby pro každý požadavek vygenerovali nový klíč, a serverům se doporučuje, aby klíče změnily každé 24 hodiny. Při výměně klíčů se používá algoritmus X25519, pro podepisování - EdDSA, pro blokové šifrování - XSalsa20-Poly1305 nebo XChaCha20-Poly1305.

Jeden z vývojářů protokolu Frank Denis píšeže automatická výměna každých 24 hodin vyřešila problém s prošlými certifikáty. Referenční klient dnscrypt-proxy v zásadě přijímá certifikáty s libovolnou dobou platnosti, ale pokud je platný déle než 24 hodin, vydá varování „Období klíče dnscrypt-proxy pro tento server je příliš dlouhé“. Zároveň byl vydán obraz Dockeru, ve kterém byla implementována rychlá změna klíčů (a certifikátů).

Zaprvé je to extrémně užitečné pro bezpečnost: pokud je server kompromitován nebo je prozrazen klíč, pak včerejší provoz nelze dešifrovat. Klíč se již změnil. To bude pravděpodobně představovat problém pro implementaci zákona Yarovaya, který nutí poskytovatele ukládat veškerý provoz, včetně šifrovaného. Z toho vyplývá, že jej lze později v případě potřeby dešifrovat vyžádáním klíče z webu. Ale v tomto případě to web prostě nemůže poskytnout, protože používá krátkodobé klíče a maže staré.

Ale co je nejdůležitější, píše Denis, krátkodobé klíče nutí servery k nastavení automatizace od prvního dne. Pokud se server připojí k síti a skripty změny klíče nejsou nakonfigurovány nebo nefungují, bude to okamžitě zjištěno.

Když automatizace mění klíče každých pár let, nelze se na to spolehnout a lidé mohou zapomenout na vypršení platnosti certifikátu. Pokud měníte klíče denně, bude to okamžitě detekováno.

Současně, pokud je automatizace nakonfigurována normálně, pak nezáleží na tom, jak často se klíče mění: každý rok, každé čtvrtletí nebo třikrát denně. Pokud vše funguje déle než 24 hodin, bude fungovat navždy, píše Frank Denis. Podle něj doporučení denního střídání klíčů ve druhé verzi protokolu spolu s hotovým obrazem Docker, který jej implementuje, efektivně snížilo počet serverů s prošlými certifikáty a zároveň zlepšilo zabezpečení.

Někteří poskytovatelé se však přesto z technických důvodů rozhodli nastavit dobu platnosti certifikátu na více než 24 hodin. Tento problém byl z velké části vyřešen pomocí několika řádků kódu v dnscrypt-proxy: uživatelé obdrží informativní varování 30 dní před vypršením platnosti certifikátu, další zprávu s vyšší úrovní závažnosti 7 dní před vypršením platnosti a kritickou zprávu, pokud certifikát zbývá. platnost.méně než 24 hodin. To platí pouze pro certifikáty, které mají zpočátku dlouhou dobu platnosti.

Tyto zprávy dávají uživatelům příležitost upozornit operátory DNS na blížící se vypršení platnosti certifikátu dříve, než bude příliš pozdě.

Možná, že kdyby takovou zprávu dostali všichni uživatelé Firefoxu, tak by to pravděpodobně někdo informoval vývojáře a ti by nedovolili vypršení platnosti certifikátu. „Nepamatuji si jediný server DNSCrypt na seznamu veřejných serverů DNS, kterému za poslední dva nebo tři roky vypršela platnost certifikátu,“ píše Frank Denis. V každém případě je pravděpodobně lepší uživatele nejprve varovat, než zakázat rozšíření bez varování.

Jak DNSCrypt vyřešil problém s expirovanými certifikáty zavedením 24hodinové doby platnosti


Zdroj: www.habr.com

Přidat komentář