ATransport Layer Security (TLS) és elődje, aSecure Sockets Layer (SSL), titkosítási protokollok, melyek azInterneten keresztüli kommunikációhoz biztosítanak védelmet. A TLS és SSL protokollok titkosítják a hálózati kapcsolatok szegmenseit aszállítási réteg felett.
A TLS egyIETF szabványt követő protokoll, amely a korai,Netscape Communications által meghatározott SSL specifikációkon alapul. Utolsó verzióját azIEEERFC8446-os referenciájában definiálták.
Különböző változatait rengeteg alkalmazásban felhasználják, mint például levelezés, webböngészés, azonnali üzenetküldés, vagy esetlegVoIP (Voice over IP) kommunikáció területén.
A TLS protokoll kliens/szerver alapú alkalmazások számára lehetővé teszi a biztonságos kommunikációt, elhárítva a lehallgathatóságot és az esetleges hamisítást. Amióta a legtöbb protokoll használható TLS-sel vagy anélkül, fontos, hogy a szerver felé jelezze a kliens, hogy használ-e TLS-t. Ezt kétféleképpen érhetjük el: Egyik lehetséges mód, hogy a TLS kapcsolatoknál külön portot használunk (példáulHTTPS-hez 443-as portot). A másik lehetőség, hogy a szokásos, szabványos portot vesszük igénybe, és a kliens kéri a szervert, hogy a meglévő kapcsolatnál használja fel a TLS-t is valamilyen protokoll-specifikus mechanizmus segítségével.
Amint eldőlt, hogy a szerver és a kliens TLS-t használnak, kapcsolódnak egy handshake procedúrán keresztül végigmenve. Ezalatt a kliens és a szerver bizonyos paraméterek összehangolásával biztonságos kapcsolatot létesít egymás közt.
- A kézfogás azzal indul, hogy a kliens egy TLS-sel ellátott szerverhez kérelmet küldve próbál biztonságos kapcsolatot létesíteni, és egy listát biztosít a szerver számára a felhasználható titkosítási módszerekkel és hash függvényekkel.
- Ebből a listából a szerver a legerősebbeket kiválasztja.
- A szerver elküldi a digitális aláírását, ami a szerver nevéből, egy tanúsítványból és a szerver nyilvános kulcsából áll.
- A kliens ezután csatlakozhat, és elkészít munkafolyamat-azonosító kulcsot (session key). Egy ilyen kulcs előállításához a kliens vesz egy véletlen számot, amit titkosít a szerver nyilvános kulcsával együtt és ennek eredményét visszaküldi a szerver számára, amit kizárólag a szerver képes dekódolni a titkos kulcsa segítségével.
Ha a fenti folyamat során valamely lépés nem sikeres, a kézfogás sikertelen lesz és a kapcsolat nem jön létre.
Aszállítási réteg biztosítására tett korai kezdeményezések egyik eredménye volt az SNP (Secure Network Programming) API, amelyet 1993-ban dolgoztak ki.
| Verzió | Kiadás ideje | Szabvány definíciója |
|---|
| SSL 1.0 | Sosem tették közzé | - |
| SSL 2.0 | 1995. február | - |
| SSL 3.0 | 1996 | - |
| TLS 1.0 (SSL 3.1) | 1999. január | RFC2246 |
| TLS 1.1 (SSL 3.2) | 2006. április | RFC4346 |
| TLS 1.2 (SSL 3.3) | 2008. augusztus | RFC5246 |
| TLS 1.3 | 2018. március | RFC-TLS13-28 |
A TLS egyik legfontosabb alkalmazási területe a világhálón való böngészés biztosítása (http és https protokollokon keresztül), azon belül aze-kereskedelem, banki szolgáltatások és azelektronikus levelezés. A levélküldésnél használt protokoll, azSMTP (Simple Mail Transfer Protocoll) is a TLS-t alkalmazza.
Vegyünk néhány webböngészőt:
- Mozilla Firefox legfrissebb verziói már támogatják a TLS 1.2 és 1.3 verzióit is. Ezek mellett a TLS 1.0 és 1.1 támogatást már elkezdték kivezetni.
- AGoogle Chrome a Firefox-hoz hasonlóan a TLS 1.1 és 1.2 verzióját is támogatja.[1]
- A Google Chrome 2017-ben egy rövid időre alapértelmezetté tette aTLS 1.3 verzióját, majd az alapértelmezett státuszt később visszavonta számos dologgal szembeni inkompatibilitás miatt.
- MicrosoftInternet Explorer mindig az alatta futó Windows operációs rendszerre implementált TLS-t használja egy SChannel Security Service Provider nevű szolgáltatáson keresztül. Az Internet Explorer 8Windows 7 és Windows Server 2008 R2 alatt már támogatja a TLS 1.2-t.[2]
- Apple Safari szintén támogatja a TLS szabványt, a konkrét támogatott verzió az alatta futó operációs rendszertől függ.[3]
A TLS protokoll egységbezárt adatok, úgynevezettrekordok segítségével kommunikál. Minden egyes rekord tömöríthető, kiegészíthető ún. üzenet azonosító kóddal (MAC -Message Authentication Code), vagy akár titkosítható is, mindez a kapcsolat aktuális állapotától függ. Minden rekord tartalmaz egytartalom típus, hossz és TLS verzió mezőket. Amikor a kapcsolódás megtörténik, a rekord egységbezár egy másik protokollt (a handshake üzenetküldési protokollt), aminek a tartalomtípusa a 22-es számmal van ellátva.
1. Tárgyalási fázis
- A kliens egyClientHello üzenetet küld a szerver számára, néhány plusz kéréssel együtt, amit a szervertől vár válaszként: a legnagyobb támogatott TLS verziót, egy véletlen számot, egy titkosítási módszert, és egy ajánlott tömörítési eljárást.
- A szerver egyServerHello üzenettel válaszol a kliensnek és továbbítja az előbbiekben felsorolt kéréseket. A választott protokoll a kliens és a szerver által egyaránt támogatott legújabb verziójú protokoll. Például: Ha a kliens a TLS 1.1-et támogatja, a szerver a TLS 1.2-t is, akkor az 1.1-es verzió lesz kiválasztva. SSL 3.0 nem választható.
- A szerver ezután egyCertificate üzenetet küld(a titkosítási módszertől függően ezt a szerver kihagyhatja).
- A szerver következik ismét:ServerHelloDone üzenet formájában jelzi a kliens fele, hogy a handshake tárgyalási folyamatát lezárja.
- A kliensClientKeyExchange üzenettel válaszol, ami tartalmazhat egyPreMasterSecret-et, vagy egy nyilvános kulcsot, vagy semmit se. Ez aPreMasterSecret titkosítva van a szerver nyilvános kulcsa által.
- A kliens és a szerver a véletlenszámok és aPreMasterSecret segítségével előállítja a privát kulcsokat.
2. A kliens egyChangeCipherSpec rekordot küld a szervernek, jelezve fele, hogy "minden amit innentől mondok, titkosítva lesz". Ez a rekord a 20-as tartalom típussal van ellátva.
- Végül, a kliens küld egyFinished üzenetet, ami egy hash-t és egy MAC-et tartalmaz az előző üzenetekből.
3. A szerver is küld a kliens részére egyChangeCipherSpec üzenetet.
4. Alkalmazási fázis: ezen a ponton a "handshake" véget ér, az alkalmazási protokoll engedélyezve van.
Az alábbi táblázat segítségével szemléltethető a TLS rekordok szerkezete.
| + | Byte +0 | Byte +1 | Byte +2 | Byte +3 |
|---|
Byte 0 | Tartalom típusa | |
|---|
Byte-ok 1..4 | Verzió | Hossz |
|---|
| (Major) | (Minor) | (bit-ek 15..8) | (bit-ek 7..0) |
Byte-ok 5..(m-1) | Protokoll üzenet(ek) |
|---|
Byte-ok m..(p-1) | MAC (opcionális) |
|---|
Byte-ok p..(q-1) | Kitöltés |
|---|
- Tartalom típus
- Ez a mező határozza meg a rekordban szereplő tartalom típusát.
Tartalom típusok| Hex | Dec | Type |
|---|
| 0x14 | 20 | ChangeCipherSpec |
| 0x15 | 21 | Figyelmeztetés |
| 0x16 | 22 | Handshake |
| 0x17 | 23 | Alkalmazás |
- Verzió
- Ez a mező határozza meg az üzenethez használandó TLS protokoll elsődleges(major) és másodlagos(minor) verzióját.
VerziókMajor Verzió | Minor Verzió | Verzió típusa |
|---|
| 3 | 0 | SSL 3.0 |
| 3 | 1 | TLS 1.0 |
| 3 | 2 | TLS 1.1 |
| 3 | 3 | TLS 1.2 |
| | TLS 1.3 |
- Hossz
- Az üzenet hosszát definiálja, amely nem lépheti túl a 214 byte-ot (16 KiB).
A legújabb a TLS 1.3, amely 2018 márciusában jelent meg.