U prošlosti su certifikati često istekli jer su se morali ručno obnavljati. Ljudi su to jednostavno zaboravili da urade. S pojavom Let's Encrypt i automatske procedure ažuriranja, čini se da bi problem trebao biti riješen. Ali nedavno
U slučaju da ste propustili priču, u ponoć 4. maja 2019. godine, skoro sve Firefox ekstenzije su iznenada prestale da rade.
Kako se ispostavilo, do masovnog kvara došlo je zbog činjenice da je Mozilla
Mozilla je brzo objavila zakrpu za Firefox 66.0.4, koja rješava problem sa nevažećim certifikatom, a sve ekstenzije se vraćaju u normalu. Programeri preporučuju da ga instalirate i
Međutim, 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 programeri protokola nosili sa ovim zadatkom
DNSCrypt
DNSCrypt je DNS protokol za šifriranje prometa. Štiti DNS komunikaciju od presretanja i MiTM, a također vam omogućava da zaobiđete blokiranje na nivou DNS upita.
Protokol obavija DNS saobraćaj između klijenta i servera u kriptografsku konstrukciju, koja radi preko UDP i TCP transportnih protokola. Da bi ga koristili, i klijent i DNS rezolver moraju podržavati DNSCrypt. Na primjer, od marta 2016. godine omogućen je na njegovim DNS serverima i u Yandex pretraživaču. Nekoliko drugih provajdera je također najavilo podršku, uključujući Google i Cloudflare. Nažalost, nema ih mnogo (152 javna DNS servera su navedena na zvaničnom sajtu). Ali program
Kako funkcioniše DNSCrypt? Ukratko, klijent uzima javni ključ odabranog provajdera i koristi ga za provjeru svojih certifikata. Kratkoročni javni ključevi za sesiju i identifikator paketa šifri su već tamo. Klijenti se podstiču da generišu novi ključ za svaki zahtev, a serveri se podstiču da promene ključeve svaka 24 sata. Prilikom razmjene ključeva koristi se algoritam X25519, za potpisivanje - EdDSA, za blok šifriranje - XSalsa20-Poly1305 ili XChaCha20-Poly1305.
Jedan od programera protokola Frank Denis
Prvo, izuzetno je korisno za sigurnost: ako je server kompromitovan ili ključ procuri, jučerašnji promet se ne može dešifrirati. Ključ je već promijenjen. Ovo će vjerovatno predstavljati problem za implementaciju zakona Yarovaya, koji prisiljava provajdere da pohranjuju sav promet, uključujući 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 prisiljavaju servere da postave automatizaciju od prvog dana. Ako se server poveže 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, a ljudi mogu zaboraviti na istek certifikata. Ako ključeve mijenjate svakodnevno, to će se odmah otkriti.
Istovremeno, ako je automatizacija normalno konfigurirana, onda nije važno koliko često se ključevi mijenjaju: svake godine, svake četvrtine ili tri puta dnevno. Ako sve radi duže od 24 sata, radit će zauvijek, piše Frank Denis. Prema njegovim riječima, preporuka dnevne rotacije ključeva u drugoj verziji protokola, zajedno sa gotovim Docker imidžom koji to implementira, efektivno je smanjio broj servera sa isteklim certifikatima, a istovremeno poboljšao sigurnost.
Međutim, neki provajderi su ipak odlučili, iz nekih tehničkih razloga, postaviti period važenja certifikata na više od 24 sata. Ovaj problem je u velikoj mjeri riješen s nekoliko linija koda u dnscrypt-proxy: korisnici primaju informativno upozorenje 30 dana prije isteka certifikata, drugu poruku s višim nivoom ozbiljnosti 7 dana prije isteka i kritičnu poruku ako certifikat ima preostalog rok važenja manje od 24 sata. Ovo se odnosi samo na sertifikate koji u početku imaju dug period važenja.
Ove poruke daju korisnicima mogućnost da obaveste DNS operatere o predstojećem isteku sertifikata pre nego što bude prekasno.
Možda kada bi svi korisnici Firefoxa dobili takvu poruku, onda bi neko vjerovatno obavijestio programere i oni ne bi dozvolili da certifikat istekne. “Ne sjećam se niti jednog DNSCrypt servera na listi javnih DNS servera kojem je istekao certifikat u posljednje dvije ili tri godine”, piše Frank Denis. U svakom slučaju, vjerojatno je bolje prvo upozoriti korisnike nego onemogućiti ekstenzije bez upozorenja.
izvor: www.habr.com