
Anterior, certificatul expira adesea din cauza necesității de a fi actualizat manual. Oamenii pur și simplu uitau să facă acest lucru. Odată cu apariția Let’s Encrypt și a procedurii automate de actualizare, problema părea să fie rezolvată. Însă o recentă arată că, de fapt, aceasta este încă relevantă. Din păcate, certificatele continuă să expire.
Dacă cineva a ratat această poveste, la miezul nopții pe 4 mai 2019, aproape toate extensiile Firefox au încetat brusc să funcționeze.
Așa cum s-a descoperit, o defecțiune masivă a avut loc din cauza faptului că Mozilla , care era folosit pentru semnarea extensiilor. Prin urmare, acestea erau marcate ca „nevalide” și nu treceau verificarea (). Pe forumuri, ca o soluție temporară, a fost recomandat să se dezactiveze verificarea semnăturilor extensiilor în about:config sau prin modificarea orelor de sistem.
Mozilla a lansat rapid un patch pentru Firefox 66.0.4, care rezolvă problema cu certificatul nevalid, iar toate extensiile revin la normal. Dezvoltatorii recomandă să fie instalat și nicio soluție temporară pentru a ocoli verificarea semnăturilor, deoarece acestea pot conflictua cu patch-ul.
Cu toate acestea, această poveste arată din nou că expirarea certificatelor rămâne o problemă relevantă și astăzi.
În acest context, este interesant să ne uităm la un mod destul de original prin care dezvoltatorii protocolului . Soluția lor poate fi împărțită în două părți. În primul rând, certificate pe termen scurt. În al doilea rând, notificarea utilizatorilor cu privire la expirarea celor pe termen lung.
DNSCrypt
DNSCrypt este un protocol de criptare a traficului DNS. Acesta protejează comunicațiile DNS de interceptări și atacuri MiTM, precum și permite ocolirea blocajelor la nivelul cererilor DNS.
Protocolul învârte traficul DNS între client și server într-o structură criptografică, funcționând pe protocoalele de transport UDP și TCP. Pentru a-l utiliza, atât clientul, cât și rezolutorul DNS trebuie să suporte DNSCrypt. De exemplu, în martie 2016, acesta a fost activat pe serverele DNS și în browserul „Yandex”. De asemenea, câțiva alți furnizori, inclusiv Google și Cloudflare, au anunțat suportul. Din păcate, nu sunt foarte mulți (pe site-ul oficial sunt listate 152 de servere DNS publice). Dar programul poate fi instalat manual pe clienți sub Linux, Windows și MacOS. Există și .

Cum funcționează DNSCrypt? Într-un rezumat, clientul ia cheia publică a furnizorului ales și o folosește pentru a verifica certificatele acestuia. Acolo sunt disponibile cheile publice pe termen scurt pentru sesiune și identificatorul setului de algoritmi de criptare. Se recomandă clienților să genereze o cheie nouă pentru fiecare cerere, iar serverelor să schimbe cheile la fiecare 24 de ore. În schimbul cheilor se folosește algoritmul X25519, pentru semnătură — EdDSA, iar pentru criptarea blocurilor — XSalsa20-Poly1305 sau XChaCha20-Poly1305.
Unul dintre dezvoltatorii protocolului, Frank Denis , a afirmat că schimbarea automată la fiecare 24 de ore a rezolvat problema certificatelor expirate. În principiu, clientul de referință dnscrypt-proxy acceptă certificate cu orice termen de valabilitate, dar emite un avertisment „Perioada cheilor dnscrypt-proxy pentru acest server este prea mare”, dacă este validă mai mult de 24 de ore. De asemenea, a fost lansată o imagine Docker, în care a fost implementată schimbarea rapidă a cheilor (și a certificatelor).
În primul rând, este extrem de util pentru securitate: dacă serverul este compromis sau cheia a fost expusă, traficul de ieri nu poate fi decriptat. Cheia a fost deja schimbată. Probabil, aceasta va constitui o problemă pentru aplicarea „legii Iarovaya”, care obligă furnizorii să păstreze tot traficul, inclusiv cel criptat. Se subînțelege că mai târziu poate fi decriptat la nevoie, solicitând cheia de la site. Dar în acest caz, site-ul pur și simplu nu va putea să o ofere, deoarece folosește chei de scurtă durată, ștergându-le pe cele vechi.
Dar cel mai important, spune Denis, cheile pe termen scurt îi obligă pe servere să configureze automatizarea din prima zi. Dacă serverul se conectează la rețea, iar scripturile de schimbare a cheilor nu sunt configurate sau nu funcționează, acest lucru va fi imediat detectat.
Când automatizarea schimbă cheile la câțiva ani, nu poți conta pe ea, iar oamenii pot uita de expirarea certificatului. La schimbarea zilnică a cheilor, acest lucru va fi descoperit imediat.
În același timp, dacă automatizarea este configurată corect, nu contează cât de des se schimbă cheile: anual, trimestrial sau de trei ori pe zi. Dacă totul funcționează mai mult de 24 de ore, va funcționa întotdeauna, scrie Frank Denis. Potrivit acestuia, recomandarea de schimbare zilnică a cheilor în a doua versiune a protocolului împreună cu o imagine Docker care o implementează a redus eficient numărul serverelor cu certificate expirate, îmbunătățind în același timp securitatea.
Cu toate acestea, unii furnizori au decis din diverse motive tehnice să stabilească un termen mai mare pentru expirarea certificatului de peste 24 de ore. Această problemă a fost în mare parte rezolvată prin câteva linii de cod în dnscrypt-proxy: utilizatorii primesc un avertisment informativ cu 30 de zile înainte de expirarea certificatului, un alt mesaj de o severitate mai mare cu 7 zile înainte de expirare și un mesaj critic, dacă certificatul mai are sub 24 de ore. Aceasta se aplică numai certificatelor care au avut inițial un termen lung de valabilitate.
Aceste mesaje oferă utilizatorilor ocazia de a informa operatorii DNS cu privire la expirarea iminentă a certificatului, înainte să fie prea târziu.
Poate că, dacă toți utilizatorii Firefox ar fi primit un astfel de mesaj, atunci cu siguranță cineva ar fi informat dezvoltatorii și aceștia nu ar fi permis expirarea certificatului. „Nu îmi amintesc de niciun server DNSCrypt din lista serverelor DNS publice care să fi avut certificatul expirat în ultimii doi sau trei ani”, scrie Frank Denis. În orice caz, probabil mai bine să avertizăm utilizatorii în primul rând, decât să dezactivăm extensiile fără avertisment.
Sursa: habr.com
