
Korábban a tanúsítványok gyakran lejártak, mert azokat kézzel kellett frissíteni. Az emberek egyszerűen elfelejtették ezt megtenni. A Let’s Encrypt megjelenésével és az automatikus frissítési eljárásokkal a probléma megoldódni látszott. De a közelmúltban megmutatja, hogy valójában ez még mindig aktuális. Sajnos a tanúsítványok továbbra is lejárnak.
Ha valaki lemaradt erről a történetről, 2019. május 4-én éjfélkor hirtelen szinte az összes Firefox kiegészítő leállt.
Ahogy kiderült, a tömeges hiba azért következett be, mert a Mozilla , amelyet a kiegészítők aláírásához használtak. Ezért érvénytelennek lettek nyilvántartva, és nem mentek át az ellenőrzésen (). A fórumokon alternatívaként ajánlották a kiegészítők aláírásainak ellenőrzésének letiltását a about:config vagy a rendszerórák átállításával.
A Mozilla időben kiadta a Firefox 66.0.4-es javítását, amely megoldja az érvénytelen tanúsítvány problémáját, és minden kiegészítő visszatér a normális állapotába. A fejlesztők azt javasolják, hogy telepítsék ezt, és semilyen alternatív megoldást az aláírások ellenőrzésének megkerülésére, mivel ezek ütközhetnek a javítással.
Mindazonáltal ez a történet még egyszer megmutatja, hogy a tanúsítványok lejárata továbbra is aktuális probléma manapság.
Ebből a szempontból érdekes megnézni egy meglehetősen eredeti megoldást, amellyel a protokoll fejlesztői megoldották ezt a feladatot. A megoldásuk két részre osztható. Először is, rövid távú tanúsítványok. Másodszor, figyelmeztetés a felhasználóknak a hosszú távú tanúsítványok lejáratáról.
DNSCrypt
A DNSCrypt a DNS-forgalom titkosítását szolgáló protokoll. Védi a DNS kommunikációt az elfogással és MiTM támadásoktól, és lehetővé teszi a DNS-kérések szintjén lévő blokkok megkerülését.
A protokoll titkosított konstrukcióba csomagolja a DNS-forgalmat a kliens és a szerver között, UDP és TCP szállítási protokollok alapján működik. Az alkalmazásához mind a kliensnek, mind a DNS-rozolválónak támogatnia kell a DNSCryptet. Például 2016 márciusától a "Yandex" DNS szerverein és böngészőjében is bevezette. Továbbá néhány más szolgáltató, köztük a Google és a Cloudflare is bejelentette támogatását. Sajnos nem túl sokan vannak (a hivatalos weboldalon 152 nyilvános DNS-szolgáltatót soroltak fel). De a program Manuálisan telepíthető Linux, Windows és MacOS kliensgépeken. Vannak .

Hogyan működik a DNSCrypt? Röviden, a kliens a kiválasztott szolgáltató nyilvános kulcsát használja, és az alapján ellenőrzi a tanúsítványait. Ott találhatóak a rövid távú nyilvános kulcsok a munkamenetekhez és a titkosítási készlet azonosítói. A kliensek számára ajánlott, hogy minden kéréshez új kulcsot generáljanak, a szervereknek pedig rendszeresen cserélniük kell a kulcsokat. minden 24 órában. A kulcsok cseréjénél az X25519 algoritmus használatos, az aláíráshoz EdDSA, a blokknál pedig XSalsa20-Poly1305 vagy XChaCha20-Poly1305.
A protokoll egyik fejlesztője, Frank Denis , hogy a 24 óránkénti automatikus csere megoldotta az elavult tanúsítványok problémáját. Alapvetően a referencia-kliens, a dnscrypt-proxy bármilyen érvényességi idejű tanúsítványt elfogad, de figyelmeztetést ad ki, hogy „A dnscrypt-proxy kulcsok időtartama ennél a szervernél túl nagy”, ha az érvényes több mint 24 órán át. Ugyanakkor megjelent egy Docker kép, amely lehetővé tette a kulcsok (és tanúsítványok) gyors cseréjét.
Először is, ez rendkívül hasznos a biztonság szempontjából: ha a szerver kompromittálódik, vagy a kulcs kiszivárog, akkor a tegnapi forgalom nem dekódolható. A kulcs már megváltozott. Valószínűleg problémát jelent majd a „Jarov törvény” végrehajtása, amely arra kötelezi a szolgáltatókat, hogy tárolják az egész forgalmat, beleértve a titkosítottat is. Feltételezhető, hogy azt később dekódolni lehet a webhelytől kérve a kulcsot. De ebben az esetben a webhely egyszerűen nem tudja megadni, mert rövid távú kulcsokat használ, amelyekkel törlik a régieket.
De a legfontosabb, írja Denis, hogy a rövid távú kulcsok arra késztetik a szervereket, hogy már az első naptól állítsanak be automatizálást. Ha a szerver csatlakozik a hálózathoz, és a kulcscserére vonatkozó szkriptek nincsenek beállítva vagy nem működnek, azt azonnal észlelik.
Amikor az automatizálás több éven keresztül cseréli a kulcsokat, arra nem lehet támaszkodni, és az emberek elfelejthetik a tanúsítványok lejáratát. A napi kulcscsere esetén ezt azonnal észlelik.
Ugyanakkor, ha az automatizálás megfelelően van beállítva, nem számít, milyen gyakran történik a kulcsok cseréje: évente, negyedévente vagy naponta háromszor. Ha 24 órán keresztül működik, akkor örökre működni fog – írja Frank Denis. Szavai szerint a második verzió protokolljának javaslata, hogy napi kulcscserét végezzenek egy Docker kép révén, hatékonyan csökkentette az elévült tanúsítványokkal rendelkező szerverek számát, miközben javította a biztonságot.
Néhány szolgáltató azonban technikai okok miatt úgy döntött, hogy a tanúsítványok érvényességi ideje meghaladja a 24 órát. E problémát több sor kóddal a dnscrypt-proxyban oldották meg: a felhasználók értesítést kapnak a tanúsítvány lejárta előtt 30 nappal, egy másik, komolyabb figyelmeztetést 7 nappal az érvényességi idő vége előtt, és kritikus üzenetet, ha a tanúsítvány érvényességéhez kevesebb mint 24 óra maradt. Ez kizárólag a kezdetben hosszú érvényességi idejű tanúsítványokkal vonatkozik.
Ezek az üzenetek lehetőséget adnak a felhasználóknak, hogy tájékoztassák a DNS-üzemeltetőket a közelgő tanúsítvány-lejáratról, mielőtt túl késő lenne.
Talán, ha a Firefox minden felhasználója kapott volna egy ilyen üzenetet, akkor biztosan valaki tájékoztatta volna a fejlesztőket, és ők nem hagyták volna, hogy a tanúsítvány lejárjon. "Nem emlékszem egyetlen DNSCrypt szerverre sem a nyilvános DNS-szerverek listájából, amelynek tanúsítványa a múlt két vagy három évben lejárt" – írja Frank Denis. Mindenesetre talán jobb lenne először figyelmeztetni a felhasználókat, mint anélkül letiltani a bővítményeket.
Forrás: habr.com
