Kako je DNSCrypt rešil problem potečenih certifikatov z uvedbo 24-urne veljavnosti

Kako je DNSCrypt rešil problem potečenih certifikatov z uvedbo 24-urne veljavnosti

V preteklosti so potrdila pogosto potekla, ker jih je bilo treba ročno obnavljati. Ljudje so preprosto pozabili to storiti. S prihodom Let's Encrypt in postopkom samodejnega posodabljanja se zdi, da bi morala biti težava rešena. Ampak nedavno Zgodba o Firefoxu kaže, da je dejansko še vedno aktualen. Na žalost certifikati še naprej potečejo.

Če ste zamudili zgodbo, opolnoči 4. maja 2019 so skoraj vse razširitve za Firefox nenadoma prenehale delovati.

Kot se je izkazalo, je do množične okvare prišlo zaradi dejstva, da je Mozilla potrdilo je poteklo, ki je služil za podpisovanje podaljškov. Zato so bili označeni kot "neveljavni" in niso bili preverjeni (tehnične podrobnosti). Na forumih je bilo kot rešitev priporočljivo onemogočiti preverjanje podpisa razširitve v about: config ali spreminjanje sistemske ure.

Mozilla je hitro izdala popravek za Firefox 66.0.4, ki reši težavo z neveljavnim certifikatom, vse razširitve pa se vrnejo v normalno stanje. Razvijalci priporočajo, da ga namestite in Ne uporabljajte ni rešitev za obhod preverjanja podpisa, ker so lahko v nasprotju s popravkom.

Vendar pa ta zgodba še enkrat kaže, da potek veljavnosti certifikatov še danes ostaja pereč problem.

V zvezi s tem je zanimivo pogledati precej izviren način, kako so se razvijalci protokola lotili te naloge DNSCrypt. Njihovo rešitev lahko razdelimo na dva dela. Prvič, to so kratkoročna potrdila. Drugič, opozarjanje uporabnikov na potek dolgoročnih.

DNSCrypt

Kako je DNSCrypt rešil problem potečenih certifikatov z uvedbo 24-urne veljavnostiDNSCrypt je protokol za šifriranje prometa DNS. Ščiti komunikacijo DNS pred prestrezanjem in MiTM ter vam omogoča tudi, da obidete blokiranje na ravni poizvedbe DNS.

Protokol ovije promet DNS med odjemalcem in strežnikom v kriptografski konstrukt, ki deluje prek transportnih protokolov UDP in TCP. Za uporabo morata tako odjemalec kot razreševalec DNS podpirati DNSCrypt. Na primer, od marca 2016 je omogočen na svojih strežnikih DNS in v brskalniku Yandex. Več drugih ponudnikov je prav tako napovedalo podporo, vključno z Google in Cloudflare. Na žalost jih ni veliko (na uradni spletni strani je navedenih 152 javnih DNS strežnikov). Toda program dnscrypt-proxy lahko ročno namestite v odjemalce Linux, Windows in MacOS. Tukaj so tudi strežniške implementacije.

Kako je DNSCrypt rešil problem potečenih certifikatov z uvedbo 24-urne veljavnosti

Kako deluje DNSCrypt? Skratka, naročnik prevzame javni ključ izbranega ponudnika in z njim preveri njegove certifikate. Kratkoročni javni ključi za sejo in identifikator šifrirne zbirke so že tam. Odjemalci se spodbujajo, da ustvarijo nov ključ za vsako zahtevo, strežniki pa se spodbujajo, da spremenijo ključe vsakih 24 ur. Pri izmenjavi ključev se uporablja algoritem X25519, za podpisovanje - EdDSA, za blokovno šifriranje - XSalsa20-Poly1305 ali XChaCha20-Poly1305.

Eden od razvijalcev protokola Frank Denis pišeda je avtomatska zamenjava vsakih 24 ur rešila problem potečenih certifikatov. Načeloma referenčni odjemalec dnscrypt-proxy sprejme potrdila s poljubnim obdobjem veljavnosti, vendar izda opozorilo "Obdobje ključa dnscrypt-proxy za ta strežnik je predolgo", če je veljavno več kot 24 ur. Hkrati je bila izdana slika Dockerja, v kateri je implementirana hitra menjava ključev (in certifikatov).

Prvič, izjemno je koristen za varnost: če je strežnik ogrožen ali je ključ ušel, včerajšnjega prometa ni mogoče dešifrirati. Ključ je že spremenjen. To bo verjetno predstavljalo težavo pri izvajanju zakona Yarovaya, ki od ponudnikov zahteva shranjevanje celotnega prometa, vključno s šifriranim prometom. Posledica tega je, da ga je mogoče kasneje dešifrirati, če je potrebno, tako da zahtevate ključ s spletnega mesta. Toda v tem primeru ga spletno mesto preprosto ne more zagotoviti, ker uporablja kratkoročne ključe in izbriše stare.

Najpomembneje pa je, piše Denis, da kratkoročni ključi prisilijo strežnike, da vzpostavijo avtomatizacijo od prvega dne. Če se strežnik poveže z omrežjem in skripti za spremembo ključa niso konfigurirani ali ne delujejo, bo to takoj zaznano.

Ko avtomatizacija menja ključe vsakih nekaj let, se nanjo ni mogoče zanesti in ljudje lahko pozabijo na potek potrdila. Če ključe menjate dnevno, bo to takoj zaznano.

Hkrati, če je avtomatizacija normalno konfigurirana, potem ni pomembno, kako pogosto se ključi spreminjajo: vsako leto, vsako četrtletje ali trikrat na dan. Če vse deluje več kot 24 ur, bo delovalo večno, piše Frank Denis. Po njegovih besedah ​​je priporočilo dnevne rotacije ključev v drugi različici protokola skupaj z že pripravljeno sliko Dockerja, ki to implementira, učinkovito zmanjšalo število strežnikov s potečenimi certifikati, hkrati pa izboljšalo varnost.

Nekateri ponudniki pa so se kljub temu iz tehničnih razlogov odločili, da bodo veljavnost potrdila nastavili na več kot 24 ur. Ta problem je bil v veliki meri rešen z nekaj vrsticami kode v dnscrypt-proxy: uporabniki prejmejo informativno opozorilo 30 dni pred potekom potrdila, drugo sporočilo z višjo stopnjo resnosti 7 dni pred potekom in kritično sporočilo, če ima potrdilo še kaj preostalega veljavnost manj kot 24 ur. To velja samo za potrdila, ki imajo na začetku dolgo obdobje veljavnosti.

Ta sporočila dajejo uporabnikom možnost, da obvestijo operaterje DNS o bližajočem se izteku potrdila, preden bo prepozno.

Morda, če bi vsi uporabniki Firefoxa prejeli takšno sporočilo, bi verjetno nekdo obvestil razvijalce in ti ne bi dovolili, da certifikat poteče. »Ne spomnim se niti enega strežnika DNSCrypt na seznamu javnih strežnikov DNS, ki bi mu potrdilo poteklo v zadnjih dveh ali treh letih,« piše Frank Denis. V vsakem primeru je verjetno bolje uporabnike najprej opozoriti, kot pa onemogočiti razširitve brez opozorila.

Kako je DNSCrypt rešil problem potečenih certifikatov z uvedbo 24-urne veljavnosti


Vir: www.habr.com

Dodaj komentar