Transport Layer Security

A Wikipédiából, a szabad enciklopédiából

A Transport Layer Security (TLS) és elődje, a Secure Sockets Layer (SSL), titkosítási protokollok, melyek az Interneten keresztüli kommunikációhoz biztosítanak védelmet. A TLS és SSL protokollok titkosítják a hálózati kapcsolatok szegmenseit a szállítási réteg felett.

A TLS egy IETF szabványt követő protokoll, amely a korai, Netscape Communications által meghatározott SSL specifikációkon alapul. Utolsó verzióját az IEEE RFC8446-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 esetleg VoIP (Voice over IP) kommunikáció területén.

Leírás[szerkesztés]

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ául HTTPS-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.

Fontosabb verziói[szerkesztés]

Kezdet[szerkesztés]

A szá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.

További változatok[szerkesztés]

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

Felhasználási területei[szerkesztés]

Általánosságban[szerkesztés]

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 az e-kereskedelem, banki szolgáltatások és az elektronikus levelezés. A levélküldésnél használt protokoll, az SMTP (Simple Mail Transfer Protocoll) is a TLS-t alkalmazza.

Néhány példa[szerkesztés]

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.
  • A Google 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 a TLS 1.3 verzióját, majd az alapértelmezett státuszt később visszavonta számos dologgal szembeni inkompatibilitás miatt.
  • Microsoft Internet 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 8 Windows 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]

Biztonság[szerkesztés]

TLS handshake részletesebben[szerkesztés]

A TLS protokoll egységbezárt adatok, úgynevezett rekordok 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 egy tartalom 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.

Egy egyszerűbb handshake folyamat[szerkesztés]

1. Tárgyalási fázis

  • A kliens egy ClientHello ü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 egy ServerHello ü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 egy Certificate ü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 kliens ClientKeyExchange üzenettel válaszol, ami tartalmazhat egy PreMasterSecret-et, vagy egy nyilvános kulcsot, vagy semmit se. Ez a PreMasterSecret titkosítva van a szerver nyilvános kulcsa által.
  • A kliens és a szerver a véletlenszámok és a PreMasterSecret segítségével előállítja a privát kulcsokat.

2. A kliens egy ChangeCipherSpec 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 egy Finished ü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 egy ChangeCipherSpec üzenetet.

4. Alkalmazási fázis: ezen a ponton a "handshake" véget ér, az alkalmazási protokoll engedélyezve van.

TLS rekord felépítése[szerkesztés]

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ók
Major
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).

Kapcsolódó szabványok[szerkesztés]

A legújabb a TLS 1.3, amely 2018 márciusában jelent meg.

Jegyzetek[szerkesztés]

Külső hivatkozások[szerkesztés]