Mi az SSL/TLS kézfogás?
Az SSL/TLS kézfogás a hálózaton két fél – például egy böngésző és egy webkiszolgáló – közötti tárgyalás a kapcsolatuk részleteinek megállapítása érdekében. Meghatározza, hogy az SSL/TLS melyik verzióját használják a munkamenetben, melyik titkosítási csomag fogja titkosítani a kommunikációt, ellenőrzi a kiszolgálót (és néha az ügyfelet is), és az adatátvitel előtt megállapítja, hogy biztonságos kapcsolat áll fenn.
Ez mind a háttérben történik, szerencsére – minden alkalommal, amikor a böngészőt egy biztonságos webhelyre irányítja, egy összetett interakció zajlik, amely biztosítja, hogy az adatai biztonságban legyenek.
Ez az egyszerű verzió. Észreveheti, hogy bármelyik tucatnyi leírás többé-kevésbé ehhez a formátumhoz igazodik, miközben a részletekben tucatnyi különböző módon különbözik – néha zavarba ejtően. Dobjunk fel egy ábrát, amely a TLS kézfogás működésének egy általános modelljét mutatja be, rendben?
RENDELJ MOST
Kötelező SSL/TLS kézfogás grafikon
Minden SSL/TLS-hez kapcsolódó webhelynek megvan a saját verziója a kézfogás diagramjáról – itt a miénk! (Kattintson a nagyításhoz.)
Hadd tisztázzunk néhány zavart, ha lehet
Az SSL/TLS kézfogások működésével kapcsolatos zavart az okozza, hogy a kézfogás csak az előjátéka magának a tényleges, biztonságos munkamenetnek. Próbáljunk meg foglalkozni néhány általános ponttal:
Aszimmetrikus vs. szimmetrikus titkosítás
A kézfogás maga aszimmetrikus titkosítást használ – két külön kulcsot használnak, egy nyilvános és egy privát kulcsot. Mivel az aszimmetrikus titkosítási rendszereknek sokkal nagyobb a rezsiköltsége, nem használhatóak teljes körű, valós biztonság nyújtására. Így a nyilvános kulcsot csak a kézfogás során használják a titkosításra, a magánkulcsot pedig a visszafejtésre, ami lehetővé teszi, hogy a két fél bizalmasan létrehozzon és kicseréljen egy újonnan létrehozott “közös kulcsot”. Maga a munkamenet ezt az egyetlen megosztott kulcsot használja a szimmetrikus titkosításhoz, és ez az, ami a tényleges gyakorlatban megvalósíthatóvá teszi a biztonságos kapcsolatot (a rezsiköltség jóval kisebb). Tehát a teljes és helyes válasz az “SSL/TLS titkosítás aszimmetrikus vagy szimmetrikus?” kérdésre: “Először az egyik, aztán a másik.”
Mi az a “titkosítási csomag”?
A kézfogás maga több szakaszból áll, amelyek mindegyikét különböző szabályok szerint kezelik. A részletek itt találhatók, de a lényege az, hogy a felek ahelyett, hogy külön-külön oda-vissza tárgyalások sorát folytatnák (arról, hogy milyen kulcsokat használjanak, hogyan titkosítják magát a kézfogást, hogyan hitelesítsék a kézfogást és így tovább), megállapodhatnak egy “rejtjelcsomag” használatában – egy előre egyeztetett összetevőkből álló válogatás vagy készlet. (Ne feledjük, hogy az aszimmetrikus titkosítás idő- és erőforrásigényes – a titkosítási csomag rövidítésként való használata felgyorsítja magát a kézfogást.) A TLS-specifikációk elég sok rejtjelkészletet tesznek lehetővé, és az ügyfél és a kiszolgáló szinte mindig hozzáfér egy olyanhoz, amelyet mindketten alkalmazhatnak.
Bázis vs. kölcsönösen hitelesített kézfogás
Egy másik zavaró pont, hogy a fent leírt alapmodell lehetővé teszi, hogy az ügyfél ellenőrizze a kiszolgálót, és a TLS által biztosított munkamenetek túlnyomó többsége csak ezt igényli. Néhány rejtjelkészlet azonban megköveteli, hogy az ügyfél tanúsítványt és nyilvános kulcsot is küldjön a két fél kölcsönös hitelesítéséhez. Ez a kétirányú hitelesítés természetesen többletköltséget jelent a kézfogásnál – azonban bizonyos esetekben (például amikor két bank biztonságos kapcsolatról tárgyal pénzátutalásokhoz) a titkosítócsomag ragaszkodik ehhez, és a többletbiztonságot érdemesnek tartják.
A különböző munkamenetek különböző biztonsági paraméterekkel rendelkeznek
Minden új kézfogás új munkamenetet hoz létre, és az egyikben használt beállítások drasztikusan eltérhetnek a másiktól a választott titkosítócsomagtól függően. Többek között ez az oka annak, hogy ennyi különböző iterációja létezik annak az átkozott handshake-táblázatnak, és hogy miért adunk itt egy meglehetősen nagy áttekintést. Azt is tudnia kell, hogy a munkamenetek olyan paramétereket is beállíthatnak, amelyek nem feltétlenül olyanok, mint amilyenekre számít. A titkosítási csomagtól függően egyes lépések hozzáadódhatnak (például a kétirányú hitelesítés követelménye) vagy hiányozhatnak. Sőt, vannak olyan titkosító készletek, amelyek a munkamenetet úgy tárgyalják, hogy egyáltalán nem használnak titkosítást. (Igen, tudjuk, egy HTTPS-kapcsolatnak a 443-as porton keresztül, amely úgy dönt, hogy az adatokat tisztán küldi, számunkra sincs értelme. Az SSL.com erősen ajánlja, hogy ne tegye ezt – csak legyen tisztában azzal, hogy ez a lehetőségek birodalmában van.)