Middle
Hogyan történik az üzenetek titkosítása a böngésző és a szerver között?
sobes.tech MI
Válasz az MI-től
A böngésző és a szerver közötti titkosítás a HTTPS protokoll használatával történik, amely az HTTP felett egy kiegészítő réteg, SSL/TLS protokollokat (Secure Sockets Layer / Transport Layer Security) alkalmazva.
A biztonságos kapcsolat felépítésének folyamata (Handshake):
- Client Hello: A böngésző egy üzenetet küld a szervernek, amely tartalmazza az általa támogatott SSL/TLS verziókat, a cipher suite-okat, a tömörítési algoritmusokat és egy véletlenszerű számot (a kliensből).
- Server Hello: A szerver kiválasztja a legjobb protokollverziót, a cipher suite-ot és a tömörítési algoritmust a javasoltak közül, valamint generál egy saját véletlenszerű számot (a szerverből), és ezeket az SSL/TLS tanúsítvánnyal együtt küldi a böngészőnek.
- Hitelesítés: A böngésző ellenőrzi a szerver tanúsítványát:
- A gyökér CA (Root CA) megbízhatósága.
- A tanúsítvány érvényességi ideje.
- A tanúsítványban szereplő domain név megfelelősége a weboldal címével.
- A visszavont tanúsítványok hiánya a listán (CRL vagy OCSP).
- Premaster Secret: A böngésző generál egy véletlenszerű számot (premaster secret), azt a szerver nyilvános kulcsával (a tanúsítványból) titkosítja, és elküldi a szervernek.
- A munkamenet kulcsának generálása: Mind a böngésző, mind a szerver a kliens (Client Random), a szerver (Server Random) és a premaster secret felhasználásával generál egy szimmetrikus munkamenet kulcsot.
- Change Cipher Spec: A böngésző egy üzenetet küld a szervernek, amelyben jelzi, hogy a generált munkamenet kulcs használatára vált.
- Finished: A böngésző elküldi a szervernek az összes korábbi kézfogási üzenet hash-ét, titkosítva a munkamenet kulccsal. Ez az üzenet ellenőrzi a kézfogás helyességét.
- Change Cipher Spec: A szerver egy üzenetet küld a böngészőnek, amelyben jelzi a titkosított kapcsolatba való átállást.
- Finished: A szerver elküldi a böngészőnek az összes korábbi kézfogási üzenet hash-ét, titkosítva a munkamenet kulccsal.
A sikeres kézfogás után az összes adatátvitel a böngésző és a szerver között a generált munkamenet kulcson alapuló szimmetrikus titkosítással történik. A szimmetrikus titkosítás sokkal hatékonyabb, mint az aszimmetrikus, így alkalmas nagy adatmennyiség titkosítására.
Használt algoritmusok (példák):
- Aszimmetrikus titkosítás (a munkamenet kulcsának cseréjéhez): RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH).
- Szimmetrikus titkosítás (az adatok titkosításához): AES, 3DES, ChaCha20.
- Hash-elés (az üzenetek integritásának ellenőrzéséhez): SHA-256, SHA-384.