Kā DNSCrypt atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš, ieviešot 24 stundu derīguma periodu

Kā DNSCrypt atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš, ieviešot 24 stundu derīguma periodu

Agrāk sertifikātu derīguma termiņš bieži beidzās, jo tie bija jāatjauno manuāli. Cilvēki vienkārši aizmirsa to izdarīt. Līdz ar Let's Encrypt parādīšanos un automātiskās atjaunināšanas procedūru, šķiet, ka problēma būtu jāatrisina. Bet nesen Firefox stāsts liecina, ka patiesībā tas joprojām ir aktuāls. Diemžēl sertifikātu derīguma termiņš joprojām beidzas.

Ja palaidāt garām stāstu, 4. gada 2019. maija pusnaktī gandrīz visi Firefox paplašinājumi pēkšņi pārstāja darboties.

Kā izrādījās, masveida kļūme notika tāpēc, ka Mozilla sertifikātam ir beidzies derīguma termiņš, kas tika izmantots paplašinājumu parakstīšanai. Tāpēc tie tika atzīmēti kā “nederīgi” un netika pārbaudīti (tehniskas detaļas). Forumos kā risinājums tika ieteikts atspējot paplašinājuma paraksta verifikāciju about: config vai mainīt sistēmas pulksteni.

Mozilla ātri izlaida Firefox 66.0.4 ielāpu, kas atrisina problēmu ar nederīgu sertifikātu, un visi paplašinājumi atgriežas normālā stāvoklī. Izstrādātāji iesaka to instalēt un Nelietojiet nav nekādu risinājumu, lai apietu paraksta verifikāciju, jo tie var būt pretrunā ar ielāpu.

Tomēr šis stāsts vēlreiz parāda, ka sertifikātu derīguma termiņš joprojām ir aktuāls jautājums.

Šajā sakarā ir interesanti aplūkot diezgan oriģinālu veidu, kā protokola izstrādātāji tika galā ar šo uzdevumu DNSCrypt. To risinājumu var iedalīt divās daļās. Pirmkārt, tie ir īstermiņa sertifikāti. Otrkārt, lietotāju brīdināšana par ilgtermiņa derīguma termiņa beigām.

DNSCrypt

Kā DNSCrypt atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš, ieviešot 24 stundu derīguma perioduDNSCrypt ir DNS trafika šifrēšanas protokols. Tas aizsargā DNS sakarus no pārtveršanas un MiTM, kā arī ļauj apiet bloķēšanu DNS vaicājuma līmenī.

Protokols ietver DNS trafiku starp klientu un serveri kriptogrāfiskā konstrukcijā, kas darbojas, izmantojot UDP un TCP transporta protokolus. Lai to izmantotu, gan klientam, gan DNS atrisinātājam ir jāatbalsta DNSCrypt. Piemēram, kopš 2016. gada marta tas ir iespējots tā DNS serveros un Yandex pārlūkprogrammā. Atbalstu ir paziņojuši arī vairāki citi pakalpojumu sniedzēji, tostarp Google un Cloudflare. Diemžēl to nav daudz (oficiālajā vietnē ir norādīti 152 publiskie DNS serveri). Bet programma dnscrypt-starpniekserveris var manuāli instalēt Linux, Windows un MacOS klientiem. Tur ir arī serveru implementācijas.

Kā DNSCrypt atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš, ieviešot 24 stundu derīguma periodu

Kā darbojas DNSCrypt? Īsāk sakot, klients paņem izvēlētā pakalpojumu sniedzēja publisko atslēgu un izmanto to, lai pārbaudītu savus sertifikātus. Sesijas īstermiņa publiskās atslēgas un šifrēšanas komplekta identifikators jau ir tur. Klienti tiek mudināti katram pieprasījumam ģenerēt jaunu atslēgu, un serveri tiek mudināti mainīt atslēgas ik pēc 24 stundām. Apmainoties ar atslēgām, tiek izmantots algoritms X25519, parakstīšanai - EdDSA, bloku šifrēšanai - XSalsa20-Poly1305 vai XChaCha20-Poly1305.

Viens no protokola izstrādātājiem Frenks Deniss rakstaka automātiska nomaiņa ik pēc 24 stundām atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš. Principā dnscrypt-proxy atsauces klients pieņem sertifikātus ar jebkuru derīguma termiņu, bet izdod brīdinājumu "Dnscrypt-proxy atslēgas periods šim serverim ir pārāk garš", ja tas ir derīgs ilgāk par 24 stundām. Tajā pašā laikā tika izlaists Docker attēls, kurā tika ieviesta ātra atslēgu (un sertifikātu) maiņa.

Pirmkārt, tas ir ārkārtīgi noderīgs drošībai: ja serveris ir apdraudēts vai atslēga ir noplūdusi, vakardienas trafiku nevar atšifrēt. Atslēga jau ir mainīta. Tas, iespējams, radīs problēmas Yarovaya likuma īstenošanā, kas liek pakalpojumu sniedzējiem saglabāt visu trafiku, tostarp šifrēto trafiku. Tas nozīmē, ka to vēlāk var atšifrēt, ja nepieciešams, pieprasot atslēgu no vietnes. Bet šajā gadījumā vietne to vienkārši nevar nodrošināt, jo izmanto īstermiņa atslēgas, dzēšot vecās.

Bet pats galvenais, raksta Deniss, īstermiņa atslēgas liek serveriem iestatīt automatizāciju jau no pirmās dienas. Ja serveris izveido savienojumu ar tīklu un atslēgas maiņas skripti nav konfigurēti vai nedarbojas, tas tiks konstatēts nekavējoties.

Kad automatizācija ik pēc dažiem gadiem maina atslēgas, uz to nevar paļauties, un cilvēki var aizmirst par sertifikāta derīguma termiņu. Ja katru dienu maināt atslēgas, tas tiks konstatēts uzreiz.

Tajā pašā laikā, ja automatizācija ir konfigurēta normāli, tad nav svarīgi, cik bieži tiek mainīti atslēgas: katru gadu, katru ceturksni vai trīs reizes dienā. Ja viss darbosies ilgāk par 24 stundām, tas darbosies mūžīgi, raksta Frenks Deniss. Pēc viņa teiktā, ieteikums par ikdienas atslēgu rotāciju protokola otrajā versijā kopā ar gatavu Docker attēlu, kas to realizē, efektīvi samazināja serveru skaitu ar beidzies sertifikātiem, vienlaikus uzlabojot drošību.

Tomēr daži pakalpojumu sniedzēji tehnisku iemeslu dēļ joprojām nolēma noteikt sertifikāta derīguma termiņu, kas pārsniedz 24 stundas. Šī problēma lielā mērā tika atrisināta, izmantojot dažas koda rindiņas programmā dnscrypt-proxy: lietotāji saņem informatīvu brīdinājumu 30 dienas pirms sertifikāta derīguma termiņa beigām, citu ziņojumu ar augstāku nopietnības pakāpi 7 dienas pirms derīguma termiņa beigām un kritisku ziņojumu, ja sertifikātā ir atlikuši. derīguma termiņš. mazāk nekā 24 stundas. Tas attiecas tikai uz sertifikātiem, kuriem sākotnēji ir ilgs derīguma termiņš.

Šie ziņojumi sniedz lietotājiem iespēju informēt DNS operatorus par gaidāmo sertifikāta derīguma termiņu, pirms ir par vēlu.

Iespējams, ja visi Firefox lietotāji saņemtu šādu ziņojumu, tad kāds droši vien informētu izstrādātājus un tie neļautu sertifikātam beigties. "Es neatceros nevienu DNSCrypt serveri publisko DNS serveru sarakstā, kuram pēdējo divu vai trīs gadu laikā būtu beidzies sertifikāta derīguma termiņš," raksta Frenks Deniss. Jebkurā gadījumā, iespējams, ir labāk vispirms brīdināt lietotājus, nevis atspējot paplašinājumus bez brīdinājuma.

Kā DNSCrypt atrisināja problēmu ar sertifikātiem, kuriem beidzies derīguma termiņš, ieviešot 24 stundu derīguma periodu


Avots: www.habr.com

Pievieno komentāru