Röviden: a TLS (Transport Layer Security) az SSL (Secure Sockets Layer) utódja. Mindkettő ugyanarra való: titkosítja a kapcsolatot a böngésző (vagy egy levelezőprogram) és a szerver között, és igazolja, hogy a látogató valóban a kívánt szerverhez kapcsolódik. Az SSL minden változata elavult és sebezhető, ma a weboldalak, a levelezés és szinte minden titkosított internetes kapcsolat TLS-t használ. Az „SSL” név ennek ellenére megmaradt a köznyelvben, és a tanúsítványokat is így hívják.
Hogyan lett az SSL-ből TLS?
Az SSL-t a Netscape fejlesztette ki a 90-es évek közepén, a saját böngészőjéhez. Az 1.0-s változat sosem jelent meg, az SSL 2.0 1995-ben, a javított SSL 3.0 1996-ban. Ezután a protokoll gondozását a szabványokat kidolgozó IETF vette át, és a következő változatot már új néven adta ki: a TLS 1.0 1999-ben jelent meg. Ez lényegében az SSL 3.0 továbbfejlesztése volt; a protokollon belül a verziószáma is 3.1, a név csak a gazdát váltott szabvány miatt változott.
| Változat | Megjelenés | Állapota ma |
|---|---|---|
| SSL 2.0 | 1995 | 2011 óta tiltott (RFC 6176) |
| SSL 3.0 | 1996 | 2015 óta tiltott (RFC 7568), a POODLE támadás után |
| TLS 1.0 | 1999 | 2021 óta elavult (RFC 8996), a böngészők 2020-ban kikapcsolták |
| TLS 1.1 | 2006 | 2021 óta elavult (RFC 8996), a böngészők 2020-ban kikapcsolták |
| TLS 1.2 | 2008 | biztonságos, ha a szerver csak erős titkosítást enged |
| TLS 1.3 | 2018 | a jelenlegi változat |
Mi a különbség a gyakorlatban?
Az SSL-t és a régi TLS-változatokat nem a nevük, hanem az elavult algoritmusaik miatt kellett kivezetni. Minden új változat a korábbi gyengeségeket javította:
- TLS 1.0 az SSL 3.0-hoz képest erősebb üzenethitelesítést (HMAC) és kulcsszármaztatást vezetett be, de a régi, CBC módú titkosításra épült, amelyet később több támadás (például a BEAST) kihasznált.
- TLS 1.1 ezek egy részét javította, de nagyobb áttörést nem hozott, ezért kevés helyen terjedt el.
- TLS 1.2 bevezette a modern, hitelesített titkosítást (például az AES-GCM-et) és az SHA-256 alapú kulcsszármaztatást. Ma is széles körben használják, és biztonságos, ha a szerver a régi, gyenge titkosítási módokat (RC4, 3DES, CBC, statikus RSA-kulcscsere) nem engedi.
- TLS 1.3 nagyot egyszerűsített: a régi algoritmusokat teljesen kivették belőle, így rosszul beállítani is nehezebb. Minden kapcsolat forward secrecy védelmet kap, vagyis ha a szerver privát kulcsa később kiszivárog, a korábban rögzített forgalom akkor sem fejthető vissza. A kapcsolat felépítése (a kézfogás) egy oda-vissza üzenetváltással rövidebb, ami főleg mobilhálózaton gyorsítja az oldalbetöltést, és a szerver tanúsítványa is titkosítva utazik.
A kézfogás és a titkosítás működését lépésről lépésre a Mi a TLS (Transport Layer Security)? cikk mutatja be.
Miért hívjuk akkor SSL tanúsítványnak?
Megszokásból. A tanúsítvány (X.509 tanúsítvány) nem tartozik egyik protokollverzióhoz sem: ugyanaz a tanúsítvány működik TLS 1.2-vel és TLS 1.3-mal is, és régen ugyanígy működött volna SSL 3.0-val. A tanúsítvány csak azt igazolja, hogy a nyilvános kulcs a domainhez tartozik; hogy a kapcsolat melyik protokollverzióval és milyen titkosítással épül fel, azt a szerver és a böngésző beállításai döntik el.
Ezért nincs külön „TLS tanúsítvány”: ha egy szolgáltató SSL, TLS vagy SSL/TLS tanúsítványt árul, ugyanarról a termékről van szó. A tanúsítványok közti valódi különbség a validálás szintje (DV, OV, EV) és az, hogy hány domainre szólnak; ezekről az SSL tanúsítványainkat bemutató oldalon és a Mi az az SSL tanúsítvány, és miért van rá szükségem? cikkben olvashat. Hogy miért kötelező ma minden weboldalnak, azt a blogbejegyzésünk foglalja össze.
SSL/TLS és STARTTLS a levelezőprogramokban
A levelezőprogramok beállításaiban az „SSL/TLS” és a „STARTTLS” nem a protokollverziót jelöli, hanem azt, hogyan indul a titkosítás:
- SSL/TLS (implicit TLS): a kapcsolat az első pillanattól titkosított. Ezt használja az IMAP a 993-as, a POP3 a 995-ös és a kimenő SMTP a 465-ös porton.
- STARTTLS: a kapcsolat titkosítatlanul indul, majd a program az első lépésben átkapcsol titkosítottra. Ezt használja a kimenő SMTP az 587-es porton.
Mindkét esetben ugyanúgy TLS titkosítja a forgalmat, egyik sem a régi SSL-t jelenti. A „Nincs” vagy „Nincs titkosítás” beállítást viszont ne válassza, mert akkor a jelszava is olvasható formában utazik. A levelezés biztonságáról bővebben: Biztonságos az e-mail?
Melyik verziót érdemes engedélyezni?
Egy weboldalon ma a TLS 1.2-t és a TLS 1.3-at érdemes engedélyezni, a régebbieket nem. A TLS 1.2 kikapcsolására még nincs szükség: néhány régebbi rendszer és program csak ezt ismeri a kettő közül. A TLS 1.0 és 1.1 kikapcsolásával viszont gyakorlatilag senkit nem zár ki: a mai böngészők nem is használják, és csak a 2010-es évek elejénél régebbi rendszerek (például a Windows XP) nem tudnak TLS 1.2-vel kapcsolódni. A bankkártyás fizetést fogadó webáruházakra vonatkozó PCI DSS szabvány 2018 óta nem is engedi az SSL és a TLS 1.0 használatát.
Ha saját szervert üzemeltet, a beállítást Önnek kell elvégeznie; Apache webszerveren ezt az SSL beállításáról szóló útmutató mutatja be.
Hogyan nézheti meg, melyik verziót használja egy oldal?
Firefoxban: kattintson a címsorban a lakat ikonra, majd a Kapcsolat biztonságos és a További információk pontra. A megnyíló ablak Technikai részletek sora mutatja a protokollverziót (például „TLS 1.3”) és a titkosítást.
Parancssorból (Linuxon és macOS-en) a curl kiírja, milyen kapcsolat épült fel:
curl -sv -o /dev/null https://pelda.hu 2>&1 | grep -i "SSL connection"
A válasz például SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384.
Ezek a módszerek csak azt mutatják meg, melyik változattal épült fel az Ön kapcsolata. Hogy a szerver a régi változatokat is elfogadja-e, azt saját gépről nehéz kipróbálni, mert a mai böngészők és az OpenSSL újabb verziói a TLS 1.0-t és 1.1-et a saját oldalukon is letiltják. Erre a Qualys ingyenes SSL Server Test oldala való: a Configuration részben felsorolja, mely protokollverziókat engedi a szerver.