Transport Layer Security
A Transport Layer Security (TLS) és elődje a Secure Sockets Layer (SSL), titkosítási protokollok, melyek az Internet-en 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 RFC5246-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, web-böngészés, azonnali üzenetküldés, vagy esetleg VoIP (Voice over IP) kommunikáció területén.
Tartalomjegyzék
Leírás[szerkesztés | forrásszöveg szerkesztése]
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-el, 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-el 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 tanusí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 | forrásszöveg szerkesztése]
Kezdet[szerkesztés | forrásszöveg szerkesztése]
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 | forrásszöveg szerkesztése]
| 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árban | RFC2246 |
| TLS 1.1 (SSL 3.2) | 2006 áprilisa | RFC4346 |
| TLS 1.2 (SSL 3.3) | 2008 augusztusa | RFC5246 |
Felhasználási területei[szerkesztés | forrásszöveg szerkesztése]
Általánosságban[szerkesztés | forrásszöveg szerkesztése]
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 | forrásszöveg szerkesztése]
Vegyünk néhány webböngészőt:
- Mozilla Firefox 2-es és későbbi változatai támogatják a TLS-t. Azonban 2011 szeptemberétől az 1.1 és 1.2 változatokat már nem támogatja.
- A Google Chrome a Firefox-hoz hasonlóan a TLS 1.1 és 1.2 verzióját nem támogatja.
- 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.
- Apple Safari szintén támogatja a TLS szabványt, azonban nincs konkrétum arra vonatkozóan, hogy mely verziót használja. Ez leginkább az alatta futó operációs rendszertől függ.
Biztonság[szerkesztés | forrásszöveg szerkesztése]
TLS handshake részletesebben[szerkesztés | forrásszöveg szerkesztése]
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 tartalomtipusa a 22-es számmal van ellátva.
Egy egyszerűbb handshake folyamat[szerkesztés | forrásszöveg szerkesztése]
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 tipussal van ellátva.
- Végül, a kliens küld egy Finished üzenetet, ami egy hash-t és egy MAC-en 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 pontot a "handshake" véget ér, az alkalmazási protokoll engedélyezve van.
TLS rekord felépítése[szerkesztés | forrásszöveg szerkesztése]
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 tipusa | |||||||||||||||||||||||||||||||
| 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 tipusát.
-
Tartalom tipusok 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ó tipusa 3 0 SSL 3.0 3 1 TLS 1.0 3 2 TLS 1.1 3 3 TLS 1.2
- 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 | forrásszöveg szerkesztése]
A legújabb a TLS 1.2, amely 2008 augusztusában jelent meg.

