
Dříve certifikáty často vypršely, protože je bylo třeba aktualizovat ručně. Lidé na to jednoduše zapomínali. S příchodem Let’s Encrypt a automatizovaných aktualizačních postupů by se problém měl zdát vyřešený. Avšak nedávná ukazuje, že situace je stále aktuální. Bohužel certifikáty stále vyprší.
Pokud někdo tuto historku zmeškal, v půlnoci 4. května 2019 náhle přestala fungovat téměř všechna rozšíření Firefoxu.
Jak se ukázalo, masivní výpadek byl způsoben tím, že Mozille , který byl použit k podepisování rozšíření. Proto byla označena jako „neplatné“ a neprošla ověřením (). Na fórech byla jako obvykle doporučena metoda, jak obejít ověřování podpisů rozšíření v about:config nebo úpravou systémového času.
Mozilla rychle vydala patch Firefox 66.0.4, který problém s neplatným certifikátem vyřešil, a všechna rozšíření se vrátila k normálnímu stavu. Vývojáři doporučují jeho instalaci a žádné obchvaty pro obcházení ověřování podpisů, protože by mohly kolidovat s patchem.
Přesto tato historie znovu ukazuje, že vypršení platnosti certifikátů zůstává aktuálním problémem i dnes.
V této souvislosti stojí za to podívat se na poměrně originální způsob, jak s touto situací naložili vývojáři protokolu . Jejich řešení lze rozdělit na dvě části. Za prvé, krátkodobé certifikáty. Za druhé varování uživatelů o blížícím se vypršení dlouhodobých certifikátů.
DNSCrypt
DNSCrypt je protokol pro šifrování DNS provozu. Chrání DNS komunikaci před odposlechem a MiTM a také umožňuje obejít blokace na úrovni DNS dotazů.
Protokol obklopuje DNS provoz mezi klientem a serverem do kryptografické konstrukce a pracuje na transportních protokolech UDP a TCP. K jeho použití musí jak klient, tak DNS resolver podporovat DNSCrypt. Například od března 2016 jej zařadila na své DNS servery a do prohlížeče „Yandex“. O podpoře oznámily i některé další poskytovatele, včetně Googlu a Cloudflare. Bohužel jich není tolik (na oficiální stránce je uvedeno 152 veřejných DNS serverů). Ale program může být ručně nainstalován na klientech pod Linuxem, Windows a MacOS. Existují také .

Jak funguje DNSCrypt? Ve zkratce, klient získává veřejný klíč vybraného poskytovatele a pomocí něj ověřuje jeho certifikáty. Již tam jsou krátkodobé veřejné klíče pro relaci a identifikátor sad šifrování. Klientům se doporučuje generovat nový klíč pro každý požadavek, zatímco servery by měly měnit klíče každých 24 hodin. 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 , že automatická výměna každých 24 hodin vyřešila problém s prošlými certifikáty. V zásadě referenční klient dnscrypt-proxy přijímá certifikáty s jakoukoli dobou platnosti, ale vydává varování 'Doba platnosti klíčů dnscrypt-proxy pro tento server je příliš dlouhá', pokud je platný déle než 24 hodin. Současně byl vydán obraz Docker, ve kterém byla realizována rychlá výměna klíčů (a certifikátů).
Za prvé, je to mimořádně užitečné pro bezpečnost: pokud je server kompromitován nebo klíč unikl, včerejší traffic nemůže být dešifrován. Klíč se už změnil. Pravděpodobně to bude problém pro provádění 'Zákona Jarovoj', který nutí poskytovatele uchovávat veškerý traffic, včetně šifrovaného. Předpokládá se, že později by ho bylo možné dešifrovat v případě potřeby, požádáním o klíč od webové stránky. Ale v tomto případě webová stránka prostě nebude schopna to poskytnout, protože používá krátkodobé klíče, přičemž staré odstraňuje.
Ale hlavní věc, píše Denis, je, že krátkodobé klíče nutí servery od prvního dne nastavit automatizaci. Pokud se server připojuje k síti a skripty pro výměnu klíčů nejsou nastavena nebo nefungují, bude to okamžitě zjištěno.
Když automatizace mění klíče jednou za několik let, nelze na ni spoléhat, lidé mohou zapomenout na vypršení platnosti certifikátu. Při každodenní výměně klíčů to bude okamžitě zjištěno.
Pokud je však automatizace nastavena správně, pak nezáleží na tom, jak často se klíče mění: každý rok, každé čtvrtletí nebo třikrát denně. Pokud systém funguje déle než 24 hodin, měl by fungovat navždy, uvádí Frank Denis. Podle něj doporučení denní výměny klíčů v druhé verzi protokolu spolu s obrazem Docker, který toto realizuje, efektivně snížilo počet serverů s vypršenými certifikáty a zároveň zlepšilo bezpečnost.
Nicméně někteří poskytovatelé se rozhodli z nějakých technických důvodů nastavit lhůtu platnosti certifikátu na více než 24 hodin. Tento problém byl většinou vyřešen pomocí několika řádků kódu v dnscrypt-proxy: uživatelé dostávají informační upozornění 30 dní před vypršením certifikátu, další zprávu s vyššími důsledky 7 dní před vypršením a kritické upozornění, pokud zbývá méně než 24 hodin. To se týká pouze certifikátů, které mají od začátku dlouhou platnost.
Taková upozornění dávají uživatelům možnost informovat operátory DNS o blížícím se vypršení platnosti certifikátu, dokud není příliš pozdě.
Kdyby všichni uživatelé Firefoxu dostali takové upozornění, určitě by někdo informoval vývojáře a ti by nedopustili vypršení platnosti certifikátu. „Nepamatuji si žádný DNSCrypt server ze seznamu veřejných DNS serverů, jehož certifikát by vypršel v posledních dvou nebo třech letech,“ píše Frank Denis. V každém případě je lepší nejprve varovat uživatele a ne vypínat rozšíření bez upozornění.
Zdroj: habr.com
