Kako je DNSCrypt riješio problem isteklih certifikata uvođenjem roka valjanosti od 24 sata

Kako je DNSCrypt riješio problem isteklih certifikata uvođenjem roka valjanosti od 24 sata

U prošlosti su certifikati često isticali jer su se morali ručno obnavljati. Ljudi su to jednostavno zaboravili učiniti. Dolaskom Let’s Encrypta i postupka automatskog ažuriranja, čini se da bi problem trebao biti riješen. Ali nedavno Firefox priča pokazuje da je, zapravo, još uvijek relevantan. Nažalost, certifikati i dalje ističu.

Ako ste propustili priču, u ponoć 4. svibnja 2019. gotovo sve ekstenzije za Firefox odjednom su prestale raditi.

Kako se ispostavilo, masovni kvar dogodio se zbog činjenice da je Mozilla certifikat je istekao, koji je služio za potpisivanje nastavaka. Stoga su označeni kao "nevažeći" i nisu verificirani (tehnički detalji). Na forumima je kao zaobilazno rješenje preporučeno onemogućiti provjeru potpisa proširenja u about: config ili mijenjanje sata sustava.

Mozilla je promptno objavila zakrpu za Firefox 66.0.4 koja rješava problem s nevažećim certifikatom, a sve ekstenzije se vraćaju u normalu. Programeri preporučuju da ga instalirate i nemojte koristiti nema rješenja za zaobilaženje provjere potpisa jer mogu biti u sukobu sa zakrpom.

No, ova priča još jednom pokazuje da je istek certifikata i danas gorući problem.

U tom smislu, zanimljivo je pogledati prilično originalan način na koji su se razvijači protokola nosili s ovim zadatkom DNSCrypt. Njihovo rješenje može se podijeliti u dva dijela. Prvo, to su kratkoročni certifikati. Drugo, upozoravanje korisnika na istek dugoročnih.

DNSCrypt

Kako je DNSCrypt riješio problem isteklih certifikata uvođenjem roka valjanosti od 24 sataDNSCrypt je protokol za šifriranje DNS prometa. Štiti DNS komunikaciju od presretanja i MiTM-a, a također vam omogućuje zaobilaženje blokiranja na razini DNS upita.

Protokol omotava DNS promet između klijenta i poslužitelja u kriptografsku konstrukciju, radeći preko UDP i TCP transportnih protokola. Da biste ga koristili, i klijent i DNS rezolver moraju podržavati DNSCrypt. Na primjer, od ožujka 2016. omogućen je na svojim DNS poslužiteljima i u pregledniku Yandex. Nekoliko drugih pružatelja također je najavilo podršku, uključujući Google i Cloudflare. Nažalost, nema ih puno (na službenoj stranici navedena su 152 javna DNS poslužitelja). Ali program dnscrypt-proxy može se ručno instalirati na Linux, Windows i MacOS klijentima. Postoje također poslužiteljske implementacije.

Kako je DNSCrypt riješio problem isteklih certifikata uvođenjem roka valjanosti od 24 sata

Kako radi DNSCrypt? Ukratko, klijent preuzima javni ključ odabranog pružatelja usluga i njime provjerava svoje certifikate. Kratkoročni javni ključevi za sesiju i identifikator skupa šifri već su tu. Klijenti se potiču da generiraju novi ključ za svaki zahtjev, a poslužitelji se potiču da mijenjaju ključeve svaka 24 sata. Prilikom razmjene ključeva koristi se algoritam X25519, za potpisivanje - EdDSA, za blok enkripciju - XSalsa20-Poly1305 ili XChaCha20-Poly1305.

Jedan od programera protokola Frank Denis piše:ta automatska zamjena svaka 24 sata riješila je problem isteklih certifikata. U načelu, dnscrypt-proxy referentni klijent prihvaća certifikate s bilo kojim razdobljem valjanosti, ali izdaje upozorenje "Razdoblje dnscrypt-proxy ključa za ovaj poslužitelj je predugo" ako vrijedi više od 24 sata. Istovremeno je objavljena Docker slika u kojoj je implementirana brza promjena ključeva (i certifikata).

Prvo, iznimno je koristan za sigurnost: ako je poslužitelj ugrožen ili je ključ procurio, jučerašnji promet ne može se dešifrirati. Ključ je već promijenjen. To će vjerojatno predstavljati problem za provedbu zakona Yarovaya, koji tjera pružatelje da pohranjuju sav promet, uključujući šifrirani promet. Implikacija je da se kasnije može dešifrirati ako je potrebno traženjem ključa sa stranice. Ali u ovom slučaju, stranica to jednostavno ne može pružiti, jer koristi kratkoročne ključeve, brišući stare.

Ali što je najvažnije, piše Denis, kratkoročni ključevi tjeraju poslužitelje da postave automatizaciju od prvog dana. Ako se poslužitelj spoji na mrežu, a skripte za promjenu ključa nisu konfigurirane ili ne rade, to će se odmah otkriti.

Kada automatizacija mijenja ključeve svakih nekoliko godina, na nju se ne može pouzdati i ljudi mogu zaboraviti na istek certifikata. Ako svakodnevno mijenjate ključeve, to će se odmah otkriti.

U isto vrijeme, ako je automatizacija konfigurirana normalno, tada nije važno koliko se često ključevi mijenjaju: svake godine, svakog kvartala ili tri puta dnevno. Ako sve radi više od 24 sata, radit će zauvijek, piše Frank Denis. Prema njegovim riječima, preporuka svakodnevne rotacije ključeva u drugoj verziji protokola, zajedno s već gotovim Docker imageom koji to implementira, učinkovito je smanjila broj poslužitelja s isteklim certifikatima, a istovremeno poboljšala sigurnost.

Međutim, neki su pružatelji ipak odlučili, iz tehničkih razloga, postaviti rok valjanosti certifikata na više od 24 sata. Ovaj je problem uvelike riješen s nekoliko redaka koda u dnscrypt-proxyju: korisnici dobivaju informativno upozorenje 30 dana prije isteka certifikata, drugu poruku s višom razinom ozbiljnosti 7 dana prije isteka i kritičnu poruku ako ima još certifikata valjanost.manje od 24 sata. Ovo se odnosi samo na certifikate koji inicijalno imaju dugo razdoblje valjanosti.

Ove poruke korisnicima daju priliku da obavijeste DNS operatere o skorom isteku certifikata prije nego što bude prekasno.

Možda kad bi svi korisnici Firefoxa primili takvu poruku, onda bi netko vjerojatno obavijestio programere i oni ne bi dopustili da certifikat istekne. "Ne sjećam se niti jednog DNSCrypt poslužitelja na popisu javnih DNS poslužitelja kojemu je certifikat istekao u posljednje dvije ili tri godine", piše Frank Denis. U svakom slučaju, vjerojatno je bolje prvo upozoriti korisnike nego onemogućiti proširenja bez upozorenja.

Kako je DNSCrypt riješio problem isteklih certifikata uvođenjem roka valjanosti od 24 sata


Izvor: www.habr.com

Dodajte komentar