|
Ékrész Néhány nappal ezelőtt megjelent pletyka: "Veszélyezteti a nyilvános WiFi-vel rendelkező internet-hozzáférés a bankszámlák biztonságát? A cikk néhány helyzetet mutat be az HTTPS hálózati titkosított átvitel alkalmazásában, és a válasz alapján még mindig vannak viták. Ahogy az internet egyre népszerűbbé válik, az alkalmazás egyre elterjedtebb, és néhány hálózati biztonsági kérdés egyre nagyobb figyelmet kelt a netek körében is, itt a TLS/SSL-ről beszélünk, amit gyakran HTTPS-nek hívunk, az elvtől az alkalmazásig, hogy lássuk, mi az, és milyen problémákra kell figyelni a HTTPS és kapcsolódó biztonsági technikák használatakor. A kiberbiztonság egy holisztikus esemény, amely magában foglalja a személyi számítógépek, protokollok, adatátviteli és szoftverfejlesztő cégek és weboldalak biztonságát. Remélem, hogy a jövőben a biztonsággal kapcsolatos problémák apránkénti magyarázatával egyre többen értik meg a hálózati biztonságot, így biztonságosabban tudják használni a hálózatot. A cikk hosszú lesz, és egyelőre három részre osztják meg: Az első rész főként az HTTPS elvét írja le; A második rész főként az SSL tanúsítvány ellenőrzésének folyamatát és néhány óvintézkedést írja le a használatra. A harmadik rész néhány HTTPS támadási esetet mutat be. 1. Mi az a HTTPS?Mielőtt az HTTPS-ről beszélnénk, beszéljünk arról, mi az a HTTP, ami egy olyan protokoll, amit általában használunk a webes böngészéskor. Az HTTP protokoll által továbbított adatok titkosítatlanok, azaz tiszta szövegűek, így nagyon veszélyes privát információkat továbbítani a HTTP protokollon. Annak érdekében, hogy ezek a privát adatok titkosíthatók és továbbíthatók legyenek, a Netscape megtervezte az SSL (Secure Sockets Layer) protokollt, amely titkosítja az HTTP protokoll által továbbított adatokat, így született meg az HTTPS világa. Az SSL jelenlegi verziója 3.0, amelyet az IETF (Internet Engineering Task Force) az RFC 6101-ben definiál, majd az IETF frissítette az SSL 3.0-t, így létrejött a TLS (Transport Layer Security) 1.0, amelyet az RFC 2246 definiál. Valójában a jelenlegi HTTPS-nk a TLS protokoll, de mivel az SSL viszonylag korán megjelent, és a jelenlegi böngészők is támogatják, az SSL továbbra is szinonimája az HTTPS-nek, de hogy TLS-ről vagy SSL-ről van szó, az az elmúlt évszázad története, az az SSL utolsó verziója 3.0, és a TLS a jövőben is továbbra is titkosítási szolgáltatásokat fog nyújtani számunkra. A TLS jelenlegi verziója 1.2, amelyet az RFC 5246 definiál, és még nem széles körben használják. Akik érdeklődnek a történelem iránt, akkor a http://en.wikipedia.org/wiki/Transport_Layer_Security-re hivatkozhatnak, amely részletes leírást tartalmaz a TLS/SSL-ről.
2. Biztonságos a HTTPS?A válasz: igen, biztonságos. A következő hetekben a Google engedélyezi az HTTPS-t a világ minden helyi domainjén, a felhasználóknak csak a Google fiókjukkal kell bejelentkezniük a keresés előtt, és minden keresési műveletet a TLS protokoll segítségével titkosítva fognak látni, lásd a következőket: http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Hogyan működik a HTTPSAz HTTPS kézfogást igényel az ügyfél (böngésző) és a szerver (weboldal) között az adatátvitel előtt, és mindkét fél jelszóadatai a kézfogás során megjelennek a folyamat során. A TLS/SSL protokoll nemcsak titkosított átviteli protokollok halmaza, hanem művészek által gondosan megtervezett műalkotás, aszimmetrikus titkosítást, szimmetrikus titkosítást és HASH algoritmusokat alkalmazva. A kézfogás folyamatának egyszerű leírása a következő:
- A böngésző egy általa támogatott titkosítási szabályrendszert küld a weboldalnak.
- A weboldal kiválaszt belőlük titkosítási és HASH algoritmusokat, majd azonosító adatait tanúsítvány formájában visszaküldi a böngészőnek. A tanúsítvány tartalmaz olyan információkat, mint a weboldal címe, a titkosítás nyilvános kulcsa és a tanúsítvány kibocsátója.
- Miután megszerezte a weboldal tanúsítványt, a böngésző a következőket teszi:
- Ellenőrizd a tanúsítvány legitimitását (hogy a tanúsítványt kiadó hatóság hiteles-e, hogy a tanúsítványban található weboldal címe megegyezik-e a meglátogatott címmel stb.), ha a tanúsítvány megbízható, a böngészősávban egy kis zár jelenik meg, különben egy figyelmeztetés érkezik, hogy a tanúsítvány nem megbízható.
- Ha a tanúsítvány megbízható, vagy ha a felhasználó elfogad egy nem megbízható tanúsítványt, a böngésző véletlenszerű számú jelszót generál, és titkosítja azokat a tanúsítványban megadott nyilvános kulmin.
- A kézfogás üzenetét a megegyezett HASH-rel számolják ki, az üzenetet titkosítják a generált véletlenszámmal, végül pedig az összes korábban generált információt elküldik a weboldalra.
4. Az adatok megérkezése után a weboldal a következőket teszi: - Használd a saját privát kulcsodat a jelszó visszafejtéséhez, a jelszóval dekódold a böngésző által küldött kézfogás üzenetet, és ellenőrizd, hogy a HASH ugyanaz, mint amit a böngésző küldött.
- A kézfogás üzenetét jelszóval titkosítják, és elküldik a böngészőnek.
5. A böngésző dekódolja és kiszámítja a kézfogás üzenet HASH-jét, ha az összhangban van a szerver által küldött HASH-tel, a kézfogási folyamat véget ér, és az összes kommunikációs adatot az előző böngésző által generált véletlenszerű jelszóval titkosítva a szimmetrikus titkosítási algoritmus alkalmazásával.
Itt a böngésző és a weboldal titkosított kézfogási üzenetet küld egymásnak és ellenőrzik őket, hogy mindkét fél megszerezze ugyanazt a jelszót, és képes legyen titkosítani és dekódolni az adatokat, valamint tesztet végezzen a valódi adatok későbbi továbbítására. Ezen felül a HTTPS által leggyakrabban használt titkosítási és HASH algoritmusok a következők: - Aszimmetrikus titkosítási algoritmusok: RSA, DSA/DSS
- Szimmetrikus titkosítási algoritmusok: AES, RC4, 3DES
- HASH algoritmus: MD5, SHA1, SHA256
Ezek közül az aszimmetrikus titkosítási algoritmus a generált jelszó titkosítására a kézfogás során, a szimmetrikus titkosítási algoritmus a valós továbbított adatok titkosításához, míg a HASH algoritmus az adatok integritásának ellenőrzésére. Mivel a böngésző által generált jelszó a teljes adat titkosításának kulcsa, az adatátvitel során aszimmetrikus titkosítási algoritmussal titkosítják. Az aszimmetrikus titkosítási algoritmus nyilvános és privát kulcsokat generál, a nyilvános kulcsokat csak az adatok titkosítására használhatják, így azok bármikor továbbíthatók, a weboldal privát kulcsait pedig az adatok visszafejtésére használják, így a weboldal nagyon óvatosan tartja a privát kulcsot a szivárgás elkerülése érdekében. Bármilyen hiba a TLS kézfogás során megtörheti a titkosított kapcsolatot, megakadályozva a privát információk továbbítását. Éppen azért, mert az HTTPS nagyon biztonságos, a támadók nem találnak kiindulópontot, ezért hamis tanúsítványokat használnak, hogy megtévesszék az ügyfeleket a tiszta szöveges információk megszerzésére, de ezek a módszerek azonosíthatók, amiről egy későbbi cikkben fogok beszélni. Azonban 2010-ben a biztonsági szakértők egy sebezhetőséget fedeztek fel a TLS 1.0 protokoll kezelésében: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/ valójában ezt a BEAST nevű támadási módszert már 2002-ben fedezték fel a biztonsági szakértők, de nem hozták nyilvánosságra. A Microsoft és a Google már javította ezt a sebezhetőséget. Lásd: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 Az HTTPS egyszerűsített változata szimmetrikus titkosítás és aszimmetrikus titkosítás esetén is működik. |