Visszafejtettem egy 90-es évekbeli tanúsítvány kulcsait – tanulságok a web biztonság vadnyugatáról
A kriptográfiai örökség: amikor a Netscape 4.51 tanúsítványait feltörték
Negyvenhét bites encryption, 512 bites RSA — avagy miért öregednek rosszul a kriptográfiai szabványok
A biztonsági közösségben van egy csendes forradalom, amit sokan észre sem vesznek. Néhány évente egyszerűen nyugdíjaznak egy kulcsméretet, ami egykor teljesen normálisnak számított. A 128 bites titkosítás a '90-es években? Ma már életveszélyes. Az egykor monumentálisnak tűnő RSA kulcsok? Gyakorlatilag percek alatt feltörhetők otthoni hardveren.
Pontosan ez történt nemrég, amikor egy kutató közzétette, hogy sikerült faktorizálnia 512 bites RSA kulcsokat. Ezek a kulcsok régi gyökér CA-tanúsítványokból származtak — vagyis azokból a megbízható alapokból, amelyekre a böngészők a weboldalak azonosítását építik. A tanúsítványokat még a Netscape 4.51-hez mellékelte 1999 márciusában a kanadai E-Certify CA, és egészen 2003-ig megbízhatónak számítottak az SSL-kapcsolatoknál. Pedig a szakmai közösség már akkor tudta: az 512 bit sosem volt elég.
Miért volt mindig rossz ötlet az 512 bit?
Az RSA-512, ahogy a neve is mutatja, 512 bites moduluszt használ — ez két nagy prímszám szorzata. A '90-es években ennek faktorizálása elméletileg lehetséges volt, de a gyakorlatban nehézkes. Csakhogy a matematika nem változott, a számítási kapacitás annál inkább. Egy mai Ryzen 9-es processzor nagyjából 30 óra alatt faktorizál egy 512 bites RSA kulcsot CADO-NFS nevű nyílt forráskódú eszközzel. 1999-ben ugyanehhez szuperszámítógép kellett volna, vagy egy hatalmas elosztott számítási projekt.
A legszebb az egészben, hogy 1999-ben már épp csaknem sikerült ezt megvalósítani. Az RSA-155-öt (ami egy 512 bites, 155 jegyű szám) 1999 augusztusában faktorizálták — mindössze hónapokkal azután, hogy az E-Certify tanúsítványok piacra kerültek. A kutató megjegyezte: ezeket a kulcsokat valószínűleg sosem kellett volna kiadni.
A Web PKI történelmi háttere
A Web PKI — vagyis az a rendszer, amely a HTTPS-t működtető tanúsítványhatóságokat foglalja magában — bizalmi feltevésekre épült, amelyek ma már megmosolyogtatók. A '90-es években a böngészőgyártók tucatnyi gyökértanúsítvánnyal szállítottak a világ minden tájáról, minimális szabványosítással a kulcsméretek vagy működési gyakorlatok terén.
A Netscape, amely gyakorlatilag feltalálta a webes kereskedelmet az SSL-lel 1994-ben, különösen engedékeny volt. Az Internet Explorer sokkal konzervatívabban járt el — soha nem szállítottak 512 bites RSA gyökértanúsítványokat SSL-hez. A Netscape megközelítése azonban történelmi emléket hagyott maga után: 512 bites CA-tanúsítványok, amelyek megbízhatók maradtak bármely régi Netscape-verzión, feltéve ha az óra rosszul volt beállítva.
Mit jelent ez a modern biztonság szempontjából?
A tanulság nem egyszerűen az, hogy "soha ne használj 512 bites RSA-t". Ez evidens. A fontosabb üzenet az, hogy a biztonsági szabványok élő dokumentumok. Egy 2048 bites RSA kulcs, amit a jelenlegi legjobb gyakorlat előír, egyszer szintén kicsinek számít majd. A NIST Poszt-Kvantum Kriptográfiai szabványosítási projektje már most zajlik, mert a kutatók számítanak arra, hogy a kvantumszámítógépek egyszer teljesen feltörik az RSA-t.
Fejlesztőknek és szervezeteknek ez a történelmi lecke néhány alapelvet megerősít:
- Tervezz az algoritmusváltásra: Az infrastruktúrádat frissíteni kell, ahogy a kriptográfiai szabványok fejlődnek. Kerüld a konkrét algoritmusok beégetését a kódba.
- Figyeld a kivonási ütemterveket: A tanúsítványkiadók és böngészők rendszeresen bejelentik a régebbi kulcsméretek és hash-függvények nyugdíjazási dátumait.
- Automatizáld a tanúsítvány-megújítást: A manuális folyamatok elfelejtett tanúsítványokhoz és elavult konfigurációkhoz vezetnek.
- Használj tanúsítvány-transzparenciát: A modern CA-knak nyilvánosan naplózniuk kell a tanúsítványokat, ami megnehezíti a rosszindulatú szereplők dolgát.
A szórakoztató rész
A biztonsági vonatkozásokon túl van valami megkerülhetetlenül izgalmas abban, hogy régi tanúsítványkiadó kulcsait feltörik. A kutató közzétette az E-Certify privát kulcsait, sőt még egy teszt HTTPS szervert is beállított, amely a Netscape Navigator 4.51-gyel működik. Ez egy időkapszula: bizonyítja, hogy ezek a régi tanúsítványok még mindig képesek hitelesíteni a kapcsolatokat — legalábbis azokhoz a böngészőkhöz, amelyek szoftvere sok mai fejlesztőnél is idősebb.
Ha érdekel a régi tanúsítványarchívumok felfedezése, a kutató eszközöket és útmutatókat tett közzé a történelmi gyökértanúsítványok kinyeréséhez és elemzéséhez. Lehet, hogy más elfeledett CA-kat is találsz hasonlóan gyenge kulcsokkal. Ez emlékeztet arra, hogy az internet történelme nyomokat hagy, és nem mindegyik volt biztonságos kezdettől fogva.
Következő alkalommal, amikor TLS-t konfigurálsz egy alkalmazáshoz, szánj egy pillanatot arra, hogy értékelend, mennyit léptünk előre — és hogyan kezeli automatikusan a tárhelyszolgáltatód a tanúsítvány-megújítást, kulcsméreteket és cipher suite kiválasztást. A 512 bites CA-k vadnyugati korszaka mögöttünk van, de a kriptográfiai higiénia tanulságai ma éppoly aktuálisak, mint valaha.