Ako DNSCrypt vyriešil problém s expirovanými certifikátmi zavedením 24-hodinovej doby platnosti

Ako DNSCrypt vyriešil problém s expirovanými certifikátmi zavedením 24-hodinovej doby platnosti

V minulosti certifikáty často končili, pretože sa museli obnovovať manuálne. Ľudia na to jednoducho zabudli. S príchodom Let's Encrypt a procedúrou automatickej aktualizácie sa zdá, že problém by mal byť vyriešený. Ale nedávno Príbeh Firefoxu ukazuje, že je v skutočnosti stále aktuálna. Bohužiaľ, platnosť certifikátov naďalej končí.

Ak vám príbeh unikol, o polnoci 4. mája 2019 zrazu prestali fungovať takmer všetky rozšírenia Firefoxu.

Ako sa ukázalo, k masívnemu zlyhaniu došlo v dôsledku skutočnosti, že Mozilla platnosť certifikátu vypršala, ktorý sa používal na podpisovanie rozšírení. Preto boli označené ako „neplatné“ a neboli overené (technické detaily). Na fórach sa ako riešenie odporúčalo vypnúť overovanie podpisu rozšírenia v about: config alebo zmena systémových hodín.

Mozilla rýchlo vydala opravu Firefoxu 66.0.4, ktorá rieši problém s neplatným certifikátom a všetky rozšírenia sa vrátia do normálu. Vývojári odporúčajú inštaláciu a nepoužívať žiadne riešenia na obídenie overenia podpisu, pretože môžu byť v konflikte s opravou.

Tento príbeh však opäť ukazuje, že uplynutie platnosti certifikátu zostáva dnes naliehavým problémom.

V tomto smere je zaujímavé pozrieť sa na pomerne originálny spôsob, ako sa s touto úlohou popasovali vývojári protokolu DNSCrypt. Ich riešenie možno rozdeliť na dve časti. Po prvé, ide o krátkodobé certifikáty. Po druhé, varovanie používateľov pred uplynutím platnosti dlhodobých.

DNSCrypt

Ako DNSCrypt vyriešil problém s expirovanými certifikátmi zavedením 24-hodinovej doby platnostiDNSCrypt je protokol na šifrovanie prevádzky DNS. Chráni komunikáciu DNS pred odpočúvaním a MiTM a tiež umožňuje obísť blokovanie na úrovni dotazu DNS.

Protokol zabaľuje prenos DNS medzi klientom a serverom do kryptografickej konštrukcie fungujúcej cez transportné protokoly UDP a TCP. Ak ho chcete použiť, klient aj DNS resolver musia podporovať DNSCrypt. Napríklad od marca 2016 je povolený na jeho serveroch DNS a v prehliadači Yandex. Niekoľko ďalších poskytovateľov tiež oznámilo podporu, vrátane Google a Cloudflare. Bohužiaľ ich nie je veľa (152 verejných serverov DNS je uvedených na oficiálnej webovej stránke). Ale program dnscrypt-proxy je možné nainštalovať manuálne na klientoch Linux, Windows a MacOS. Existujú tiež implementácie serverov.

Ako DNSCrypt vyriešil problém s expirovanými certifikátmi zavedením 24-hodinovej doby platnosti

Ako funguje DNSCrypt? V skratke, klient si vezme verejný kľúč vybraného poskytovateľa a pomocou neho overí svoje certifikáty. Krátkodobé verejné kľúče pre reláciu a identifikátor šifrovacej sady už existujú. Klientom sa odporúča vygenerovať nový kľúč pre každú požiadavku a serverom sa odporúča, aby kľúče zmenili každé 24 hodiny. Pri výmene kľúčov sa používa algoritmus X25519, na podpisovanie - EdDSA, na blokové šifrovanie - XSalsa20-Poly1305 alebo XChaCha20-Poly1305.

Jeden z vývojárov protokolu Frank Denis píšeže automatická výmena každých 24 hodín vyriešila problém s expirovanými certifikátmi. Referenčný klient dnscrypt-proxy v zásade akceptuje certifikáty s akoukoľvek dobou platnosti, ale vydá varovanie „Obdobie kľúča dnscrypt-proxy pre tento server je príliš dlhé“, ak je platné dlhšie ako 24 hodín. Zároveň bol vydaný obraz Dockera, v ktorom bola implementovaná rýchla zmena kľúčov (a certifikátov).

Po prvé, je to mimoriadne užitočné pre bezpečnosť: ak je server ohrozený alebo unikne kľúč, včerajšiu komunikáciu nemožno dešifrovať. Kľúč sa už zmenil. To bude pravdepodobne predstavovať problém pre implementáciu zákona Yarovaya, ktorý núti poskytovateľov ukladať všetku komunikáciu vrátane šifrovanej prevádzky. Z toho vyplýva, že ho možno neskôr v prípade potreby dešifrovať vyžiadaním kľúča z lokality. Ale v tomto prípade to stránka jednoducho nemôže poskytnúť, pretože používa krátkodobé kľúče, ktoré vymazávajú staré.

Ale čo je najdôležitejšie, píše Denis, krátkodobé kľúče nútia servery nastaviť automatizáciu od prvého dňa. Ak sa server pripojí k sieti a skripty zmeny kľúča nie sú nakonfigurované alebo nefungujú, okamžite sa to zistí.

Keď automatizácia mení kľúče každých pár rokov, nedá sa na to spoľahnúť a ľudia môžu zabudnúť na expiráciu certifikátu. Ak meníte kľúče denne, okamžite sa to zistí.

Zároveň, ak je automatizácia nakonfigurovaná normálne, nezáleží na tom, ako často sa kľúče menia: každý rok, každý štvrťrok alebo trikrát denne. Ak všetko funguje viac ako 24 hodín, bude fungovať navždy, píše Frank Denis. Odporúčanie dennej rotácie kľúčov v druhej verzii protokolu podľa neho spolu s hotovým obrazom Docker, ktorý ho implementuje, efektívne znížilo počet serverov s expirovanými certifikátmi a zároveň zlepšilo bezpečnosť.

Niektorí poskytovatelia sa však z technických príčin aj tak rozhodli nastaviť dobu platnosti certifikátu na viac ako 24 hodín. Tento problém bol do značnej miery vyriešený niekoľkými riadkami kódu v dnscrypt-proxy: používatelia dostanú informačné varovanie 30 dní pred vypršaním platnosti certifikátu, ďalšiu správu s vyššou úrovňou závažnosti 7 dní pred vypršaním platnosti a kritickú správu, ak v certifikáte ešte nejaké zostávajú. platnosť.menej ako 24 hodín. Týka sa to len certifikátov, ktoré majú spočiatku dlhú dobu platnosti.

Tieto správy dávajú používateľom príležitosť upozorniť operátorov DNS na blížiace sa vypršanie platnosti certifikátu skôr, než bude príliš neskoro.

Možno keby takúto správu dostali všetci používatelia Firefoxu, tak by o tom zrejme niekto informoval vývojárov a nedovolili by vypršanie platnosti certifikátu. „Nepamätám si jediný server DNSCrypt na zozname verejných serverov DNS, ktorému za posledné dva alebo tri roky vypršala platnosť certifikátu,“ píše Frank Denis. V každom prípade je pravdepodobne lepšie najskôr varovať používateľov, ako zakázať rozšírenia bez varovania.

Ako DNSCrypt vyriešil problém s expirovanými certifikátmi zavedením 24-hodinovej doby platnosti


Zdroj: hab.com

Pridať komentár