Kaip DNSCrypt išsprendė pasibaigusių sertifikatų problemą įvesdama 24 valandų galiojimo laikotarpį

Kaip DNSCrypt išsprendė pasibaigusių sertifikatų problemą įvesdama 24 valandų galiojimo laikotarpį

Anksčiau sertifikatų galiojimas dažnai pasibaigdavo, nes juos tekdavo atnaujinti rankiniu būdu. Žmonės tiesiog pamiršo tai padaryti. Atsiradus Let’s Encrypt ir automatinio atnaujinimo procedūrai, atrodo, kad problema turėtų būti išspręsta. Bet neseniai Firefox istorija rodo, kad ji iš tikrųjų vis dar aktuali. Deja, sertifikatai ir toliau baigiasi.

Jei praleidote istoriją, 4 m. gegužės 2019 d. vidurnaktį beveik visi „Firefox“ plėtiniai staiga nustojo veikti.

Kaip paaiškėjo, didžiulė gedimas įvyko dėl to, kad „Mozilla“. sertifikato galiojimas pasibaigęs, kuris buvo naudojamas pasirašant plėtinius. Todėl jie buvo pažymėti kaip „negaliojantys“ ir nebuvo patikrinti (techninės detalės). Forumuose kaip išeitis buvo rekomenduojama išjungti plėtinio parašo tikrinimą about: config arba pakeisti sistemos laikrodį.

„Mozilla“ nedelsdama išleido „Firefox 66.0.4“ pataisą, kuri išsprendžia problemą dėl netinkamo sertifikato ir visi plėtiniai grįžta į normalią būseną. Kūrėjai rekomenduoja jį įdiegti ir Nenaudokite nėra jokių būdų, kaip apeiti parašo patikrinimą, nes jie gali prieštarauti pataisai.

Tačiau ši istorija dar kartą parodo, kad sertifikato galiojimo laikas ir šiandien išlieka aktuali problema.

Šiuo atžvilgiu įdomu gana originaliai pažvelgti į tai, kaip protokolo kūrėjai susidorojo su šia užduotimi DNSCrypt. Jų sprendimą galima suskirstyti į dvi dalis. Pirma, tai yra trumpalaikiai sertifikatai. Antra, vartotojų įspėjimas apie ilgalaikių galiojimo pabaigą.

DNSCrypt

Kaip DNSCrypt išsprendė pasibaigusių sertifikatų problemą įvesdama 24 valandų galiojimo laikotarpįDNSCrypt yra DNS srauto šifravimo protokolas. Jis apsaugo DNS ryšius nuo perėmimų ir MiTM, taip pat leidžia apeiti blokavimą DNS užklausos lygiu.

Protokolas sujungia DNS srautą tarp kliento ir serverio į kriptografinę konstrukciją, veikiančią per UDP ir TCP perdavimo protokolus. Norėdami jį naudoti, ir klientas, ir DNS sprendėjas turi palaikyti DNSCrypt. Pavyzdžiui, nuo 2016 m. kovo mėn. ji buvo įjungta jos DNS serveriuose ir „Yandex“ naršyklėje. Keletas kitų paslaugų teikėjų taip pat paskelbė apie palaikymą, įskaitant „Google“ ir „Cloudflare“. Deja, jų nėra daug (oficialioje svetainėje išvardyti 152 viešieji DNS serveriai). Bet programa dnscrypt-proxy gali būti įdiegtas rankiniu būdu Linux, Windows ir MacOS klientams. Taip pat yra serverio diegimas.

Kaip DNSCrypt išsprendė pasibaigusių sertifikatų problemą įvesdama 24 valandų galiojimo laikotarpį

Kaip veikia DNSCrypt? Trumpai tariant, klientas paima pasirinkto teikėjo viešąjį raktą ir naudoja jį savo sertifikatams patikrinti. Jau yra trumpalaikiai viešieji seanso raktai ir šifravimo rinkinio identifikatorius. Klientai raginami generuoti naują raktą kiekvienai užklausai, o serveriai – keisti raktus kas 24 valandas. Keičiant raktus naudojamas X25519 algoritmas, pasirašymui - EdDSA, bloko šifravimui - XSalsa20-Poly1305 arba XChaCha20-Poly1305.

Vienas iš protokolo kūrėjų Frankas Denisas rašokad automatinis keitimas kas 24 valandas išsprendė pasibaigusio galiojimo sertifikatų problemą. Iš esmės dnscrypt-proxy nuorodos klientas priima sertifikatus su bet kokiu galiojimo laikotarpiu, tačiau pateikia įspėjimą "Šio serverio dnscrypt-proxy rakto laikotarpis yra per ilgas", jei jis galioja ilgiau nei 24 valandas. Tuo pačiu metu buvo išleistas Docker vaizdas, kuriame buvo įdiegtas greitas raktų (ir sertifikatų) keitimas.

Pirma, tai itin naudinga saugumui: jei serveris pažeistas arba nutekėjo raktas, vakarykštis srautas negali būti iššifruotas. Raktas jau pakeistas. Tai greičiausiai sukels problemų įgyvendinant Yarovaya įstatymą, kuris verčia paslaugų teikėjus saugoti visą srautą, įskaitant šifruotą srautą. Tai reiškia, kad vėliau, jei reikia, jį galima iššifruoti, paprašius rakto iš svetainės. Tačiau šiuo atveju svetainė tiesiog negali to pateikti, nes naudoja trumpalaikius raktus, ištrina senus.

Tačiau svarbiausia, rašo Denisas, kad trumpalaikiai raktai priverčia serverius nuo pat pirmos dienos nustatyti automatizavimą. Jei serveris prisijungia prie tinklo ir rakto keitimo scenarijai nesukonfigūruoti arba neveikia, tai bus nedelsiant aptikta.

Kai automatika pakeičia raktus kas kelerius metus, ja negalima pasikliauti ir žmonės gali pamiršti apie sertifikato galiojimo pabaigą. Jei raktus keisite kasdien, tai bus aptikta akimirksniu.

Tuo pačiu metu, jei automatika sukonfigūruota įprastai, tada nesvarbu, kaip dažnai keičiami raktai: kas metus, kas ketvirtį ar tris kartus per dieną. Jei viskas veiks ilgiau nei 24 valandas, tai veiks amžinai, rašo Frank Denis. Anot jo, antroje protokolo versijoje esanti kasdienio raktų sukimo rekomendacija kartu su paruoštu jį įgyvendinančiu „Docker“ atvaizdu efektyviai sumažino serverių, kurių sertifikatai pasibaigę, skaičių, o kartu pagerino saugumą.

Tačiau kai kurie paslaugų teikėjai dėl techninių priežasčių vis tiek nusprendė nustatyti sertifikato galiojimo laikotarpį, ilgesnį nei 24 valandos. Ši problema iš esmės buvo išspręsta naudojant kelias dnscrypt-proxy kodo eilutes: vartotojai gauna informacinį įspėjimą likus 30 dienų iki sertifikato galiojimo pabaigos, kitą aukštesnio sunkumo pranešimą likus 7 dienoms iki galiojimo pabaigos ir kritinį pranešimą, jei sertifikate yra likučių. galiojimo laikas mažiau nei 24 valandos. Tai taikoma tik tiems sertifikatams, kurie iš pradžių galioja ilgą laiką.

Šie pranešimai suteikia vartotojams galimybę pranešti DNS operatoriams apie artėjantį sertifikato galiojimo laiką, kol dar nevėlu.

Galbūt jei visi Firefox vartotojai gautų tokį pranešimą, tai tikriausiai kas nors informuotų kūrėjus ir jie neleistų baigti sertifikato. „Neprisimenu nė vieno DNSCrypt serverio viešųjų DNS serverių sąraše, kurio sertifikatas pasibaigė per pastaruosius dvejus ar trejus metus“, – rašo Frankas Denisas. Bet kokiu atveju tikriausiai geriau pirmiausia įspėti vartotojus, o ne išjungti plėtinius be įspėjimo.

Kaip DNSCrypt išsprendė pasibaigusių sertifikatų problemą įvesdama 24 valandų galiojimo laikotarpį


Šaltinis: www.habr.com

Добавить комментарий