Mi az az OCSP és a CRL?
Az SSL tanúsítványok
Az SSL tanúsítványok használata ma már nélkülözhetetlen a biztonságos, titkosított internetes kommunikációhoz. A tanúsítványokat a Certificate Authority-k (Röviden CA-k) állítják ki, és az érvényességük ellenőrzésére jött létre a CRL és az OCSP.
Mi az a Certificate Revocation List (CRL)?
A Certificate Revocation List (Röviden CRL) segít ellenőrizni a tanúsítványok érvényességét. A CRL-eket a tanúsítványok kiadója, azaz a CA-k állítják össze és teszik közzé, így a böngészők és más alkalmazások ellenőrizni tudják, hogy egy tanúsítvány érvényes-e. A CRL-eket általában periodikusan frissítik, és a felhasználók általában a saját számítógépükön tárolják. Persze erről sokan nem is tudnak mivel automatikusan történik a háttérben.
A CRL először a 80-as évek elején jelent meg és az x.509 tanúsítványformátummal vezették be.
Mi az az Online Certificate Status Protocol (OCSP)?
Az Online Certificate Status Protocol (OCSP) egy újabb a 90-es évek végén bevezetett alternatívája a CRL-nek. Az OCSP lehetővé teszi a tanúsítványok érvényességének ellenőrzését anélkül, hogy szükség lenne a CRL-re. Mivel csak egy adott tanúsítványt kell ellenőrizni egy adott pontban az OCSP gyorsabb és biztonságosabb, mint a CRL.
Miért jobb és biztonságosabb az OCSP?
Megpróbálok egy lehetséges SSL támadást leírni, amivel talán tudom szemléltetni az OCSP fontosságát.
Tegyük fel, hogy van egy weboldalunk és vagyunk akkora szerencsétlenek, hogy a privát kulcsot a gyökérkönyvtárban tároljuk, így mindenki számára elérhető. Van egy támadó, aki megszerzi a privát kulcsunkat és Man In The Middle támadással a felhasználóink és a mi szerverünk közé áll. Mivel megvan neki a privát kulcs ugyanúgy bekonfigurálhatja a támadó webszervert mint a saját webszerverünket ezáltal probléma nélkül valódi SSL tanúsítvánnyal tudja kiszolgálni és visszafejteni a felhasználóink és a szerverünk közötti forgalmat.
Na most mi ezt valamilyen úton-módon észrevettük és visszavontuk a tanúsítványt, majd generáltunk egy újat, amit már nem a gyökérkönyvtárban tároltunk el, tehát mégis van valamennyi eszünk, de nem sok.
Na de, mint fentebb írtam: A CRL periodikusan frissül, tehát ameddig nem frissül a kliensek oldalán a CRL addig a visszavont tanúsítvány is érvényes marad. Ez lehet pár óra, de akár több nap is.
Ez annyit jelent, hogy a visszavont tanúsítvány a támadó által akár még napokig használható marad mielőtt érvénytelenedik a kliens oldalon és a böngésző szól, hogy valami nem okkés.
OCSP-vel ez egy kicsit máshogy működik:
Az OCSP-vel a böngésző ellenőrzi, hogy tartozik-e a tanúsítványhoz OCSP-URL, ha igen, küld egy kérést az URL-ben található kiszolgálónak, amiben megkérdezi, hogy érvényes-e a tanúsítvány.
Amennyiben a kiszolgáló egy visszaigazolást küld arról, hogy érvényes a tanúsítvány, probléma nélkül betölt az oldal és megy minden, ha elutasítással válaszol, a böngésző azonnal megszakítja a kapcsolatot és hiba üzenettel jelez, hogy a tanúsítvány már nem érvényes.
Tehát OCSP-vel elértük azt, hogy amint visszavonjuk a tanúsítványt a felhasználók számára is érvénytelenedik.
Ezáltal a támadó csak addig tudja használni a tanúsítványunkat ameddig vissza nem vonjuk azt, nincs CRL frissítési időszak, nincs várakozás.
OCSP-Stapling
Az OCSP Must-Staple egy biztonsági bővítmény, amely lehetővé teszi a tanúsítványok érvényességének ellenőrzését anélkül, hogy a klienseknek külön-külön kellene ellenőrizniük az OCSP állapotot, ezért ez a módszer gyorsabb.
Ilyen esetben a webszerver ellenőrzi az OCSP állapotot így csak akkor szolgálja ki a webszerver a tanúsítványt, ha az valíd, különben OCSP_basic_verify() failed
hibát ad vissza. (nginx esetén)
Eddig egész jól hangzik, viszont ez nem ilyen egyszerű. FONTOS, hogy amennyiben szerver oldalon szeretnénk ellenőrizni az OCSP-t, a tanúsítványt Must-Staple beállítással kell generálni.
Amennyiben ezt nem tesszük meg ugyanúgy ellenőrizni fogja a webszerver, csak az a probléma vele, hogy amennyiben az ellenőrzés sikertelen és a tanúsítvány nem Must-Staple-el lett generálva továbbra is kiszolgálja a már egyébként érvénytelen tanúsítványt. Ilyen esetben a böngésző sem tesz semmit, hiszen azt hiszi, hogy a webszerveren már megtörtént a validálás.
Végszó
Nahát, fontos ám azaz OCSP. Ennek ellenére ezen az oldalon sincs. Igazából statikus weblapokon és kissebb blogokon mint ez, nincs értelme, mivel kliens adatok nem utaznak. De például egy bank weboldalán már nem lenne jó, ha egy visszavont tanúsítvány még napokig valíd marad a kliensek számára. Igazából, ha a valóságot nézzük ezzel sincs akkora probléma ameddig a privát kulcsok nem kerülnek ki. De mondjuk egy nagyobb Data Breach esetén már problémás :)
Köszönöm szépen, hogy elolvastad ezt a cikkem, remélem tetszett és sikerült megérteni mi az az OCSP és CRL, ha nem, szeretettel várunk a discord szerverünkön!