Published on

HTTPS weboldalak

Authors
  • avatar
    Name
    Bartók Dániel
    Twitter

Az előző bejegyzésben megnéztük milyen lépésekkel lehet megállapítani egy weboldalról, hogy az biztonságos-e. Ma Kedves Olvasó, arról tájékozódhatsz, hogy egy ilyen weblap felkeresése során milyen folyamatok zajlanak le a szerver és a kliens (böngésző) között.

Az SSL/TLS kézfogás

Amikor felkeresünk egy olyan weboldalt, aminek a címe előtt a https:// szerepel, az SSL/TLS kézfogás (handshake) folyamata zajlik le. Mielőtt részletezném a lépéseket, essen néhány szó az ezt megvalósító protokollról.

Az SSL (Secure Sockets Layer) egy biztonsági protokoll, melyet kifejezetten a HTTP-hez találtak ki. Használatával elérhető, hogy az internetes forgalom titkosított, ezáltal biztonságos legyen. Az idők során három verziót adtak ki belőle (1.0, 2.0, 3.0).

Később megjelent ennek a "továbbfejlesztése", amit TLS-nek (Transport Layer Security) hívnak. Ebből egyelőre 4 verzió jelent meg (1.0, 1.1, 1.2, 1.3). Miért van szükség újabb verziókra, tehetnéd fel a kérdést Kedves Olvasó. Az egyes verziók idővel elavulttá válnak, ezáltal már nem tudják garantálni az adatforgalmunk titkosítását és biztonságosságát. Olyan titkosítási algoritmusokat használnak, amelyek ma már könnyen feltörhetőek. Esetleg később nyilvánosságra kerültek hibák, amelyek biztonsági kockázatot jelentettek. Szerencsére nem kell fejben tartanunk, hogy most épp melyik verzió támogatott és biztonságos, a modern böngészők megteszik ezt helyettünk, cserébe csak arra kell ügyelnünk, hogy az éppen általunk preferált program legfrissebb verzióját használjuk. 1

A kis kitérő után, most nézzük milyen fontosabb lépésekből is áll a már említett kézfogás. Esetünkben a kliens egy böngésző lesz, a szerver pedig egy weboldal. Mivel a legtöbb idegen kifejezésnek nincs pontos magyar megfelelője, ezért zárójelben látható az angol kifejezés is.

tls-ssl-handshake

  1. Client Hello üzenet küldése: A kliens fogja kezdeményezni a kézfogást, egy "üdvözlő" üzenet küldésével a szerver irányába. Továbbításra kerülnek a kliens által támogatott TLS verziók, a kriptográfiai algoritmusok (Cipher suites) és egy véletlen számsorozat. (Client random).
  2. Server Hello üzenet küldése: A szerver erre válaszul elküldi a saját "üdvözlő" üzenetét. Ez tartalmazni fogja a tanúsítványt (SSL certificate), a szerver által választott TLS verziót, kriptográfiai algoritmust (Cipher suite) és egy a szerver által létrehozott véletlen számsorozatot (Server random).
  3. Hitelesítés: A kliens ellenőrzi a szerver SSL tanúsítványát, hogy azt egy hiteles tanúsítvány kiadó bocsátotta-e ki. Ezzel ellenőrizhető, a szerver kiléte.
  4. ClientKeyExchange: A kliens újra készít egy véletlenszerű számsorozatot (Pre-master secret), amit titkosít a szerver publikus kulcsával.2 Amennyiben a szerver valóban az, akinek állítja magát, akkor nála meg kell, hogy legyen a titokban tartott privát kulcs, amivel vissza tudja fejteni ezt a számsorozatot.
  5. Privát kulcs használata: A szerver visszafejti a küldött számsorozatot.
  6. Munkamenet kulcsok (Session key) elkészítése: Ennél a pontnál a szerver és a kliens legyárt egy kulcsot a három darab véletlenszerű számsorozatból (Client Random, Server Random, Pre-master Secret) a megegyezett kriptográfiai algoritmus (Cipher suite) használatával. Mindkettőjüknek ugyanarra az eredményre kell jutniuk.
  7. A kliens készen áll üzenet: A kliens küld egy végeztem titkosított üzenetet, a munkamenet kulcs (Session key) használatával.
  8. A szerver készen áll üzenet: A szerver is küld egy hasonlóan titkosított üzenetet az általa készített munkamenet kulccsal,
  9. Biztonságos kommunikáció: Ha a kulcsok stimmelnek, akkor a TLS kézfogás sikeresen befejeződött és innentől kezdve a munkamenet kulcsok használatával folytatják a titkosított és biztonságos kommunikációt.

Tehát nagyvonalakban a fenti lépésekből áll a kézfogás folyamata, amely a másodperc töredéke alatt szokott megtörténni. Ez után már biztonságosan tud kommunikálni egymással a böngésző és a weboldal. Ilyenkor, ha esetlegesen valaki bele is látna az internetes forgalmunkba, például, ha egy oldalon a kártyánkkal fizetünk, akkor sem tudná megszerezni az adatainkat, hiszen csak értelmezhetetlen "szöveget" látna, amelyet nem tudna visszafejteni.

Footnotes

  1. Az alábbi Wikipédia oldalon elérhető egy lista, hogy mely böngésző, melyik verziója melyik SSL/TLS verziót támogatja.

  2. A publikus kulcs az SSL tanúsítvány része, amit a kliens megkap a server hello során.

Támogass egy kávéval