V zgodnjem obdobju interneta vidiki, kot je varnost podatkov, še zdaleč niso bili tako pomembni kot danes. Takrat je večina komunikacije med strežniki potovala nešifrirana. Tako kot pri dopisnicah je lahko vsebino prebral vsak poštar.
Protokol TLS – imenovan tudi SSL/TLS – je uvedel šifriranje prenesene vsebine. Če nadaljujemo zgornji primer, je to podobno zaprti ovojnici, ki jo lahko odpre in prebere le naslovnik.
Kaj je TLS?
Kratica TLS pomeni Transport Layer Security (varnost transportne plasti). Prvotno je bil namenjen izvajanju nad transportnimi protokoli, podobnimi modelom TCP/IP. Protokol TLS v bistvu šifrira prenos podatkov po spletu ali med napravami, da zagotovi, da do njih dostopajo le pooblaščeni naslovniki. Predhodnik protokola je bil dobro znani SSL (Secure Socket Layer), zato TLS, da bi se izognili nesporazumom, pogosto imenujejo SSL/TLS.
Kako deluje TLS?
TLS šifrira podatke, poslane po internetu, in je običajno izveden nad TCP s simetrično kriptografijo.
Kar v teoriji zveni preprosto, je v resnici precej zapleteno. Kot del postopka varnega prenosa mora strežnik ključ za dostop deliti z odjemalcem – preden je katera koli komunikacija zavarovana prek TLS. Težavo morda dobro poznaš, če redno pošiljaš šifrirane e-poštne priloge: s šifriranjem priloge moraš geslo deliti z naslovnikom, na primer po telefonu.
Protokol TLS to težavo reši z naslednjimi ukrepi:
- Ko odjemalec, na primer spletni brskalnik, vzpostavi stik s spletnim strežnikom, dobi potrdilo. To potrdilo SSL potrjuje, da je pošiljatelj verodostojen in se ne skriva na primer za lažno identiteto.
- Odjemalec preveri potrdilo in strežniku pošlje naključno število, šifrirano z javnim ključem strežnika.
- Strežnik iz tega javnega ključa izpelje ključ seje za šifriranje komunikacije. Ker javni ključ izvira od odjemalca, je strežnik lahko prepričan, da ključ seje izvira od pravega pošiljatelja.
- Strežnik nato šifrirani ključ seje pošlje odjemalcu. Šifriranje temelji na metodi izmenjave ključev Diffie Hellman.
- Zdaj lahko obe strani šifrirata svoje podatke s pomočjo ključa seje.
Razlog, zakaj se asimetrično šifriranje uporablja le za ključ seje (ne pa za šifriranje samih podatkovnih tokov), je hitrost: asimetrično šifriranje je razmeroma počasno in bi upočasnilo podatkovno komunikacijo.
Prednosti in slabosti TLS
TLS je razmeroma elegantna rešitev za varen prenos podatkov po internetu, saj od strani ne zahteva, da izmenjano vsebino šifrirajo same. Namesto tega zadošča, da prenos poteka prek protokola TLS, ne glede na operacijski sistem ali programske aplikacije, ki jih uporabljajo udeleženci. Nato se vsi podatkovni tokovi med prenosom samodejno šifrirajo.
Dodana varnostna plast pa gre na račun hitrosti, saj so postopki, kot so preverjanje ter ustvarjanje javnih ključev in ključev seje, računsko zahtevni.
Področja uporabe TLS
TLS je splošno uporaben, ker se ne zanaša na določene operacijske sisteme ali aplikacije. Temu primerno je za različne uporabniške protokole na voljo veliko različic, zavarovanih s TLS. Shema poimenovanja je preprosta: ime protokola se konča s črko “s”, če protokol komunicira prek TLS.
Najpomembnejše področje uporabe TLS je svetovni splet, natančneje protokol HTTP. Šifrirana različica se imenuje HTTPS.
Druga pogosta področja uporabe so:
- POP3S: prevzem e-pošte s strežnika s protokolom POP3
- IMAPS: sinhronizira poštni predal s strežnikom s pomočjo protokola IMAP.
- SMTPS: pošiljanje e-pošte
- FTPS: prenos datotek prek protokola FTP
- SIPS: klici Voice-over-IP prek protokola SIP
- IRCS: šifrirani klepeti
TLS v praksi
Najpomembnejše izvedbe TLS v aplikacijah so:
- OpenSSL – najbolj razširjena izvedba, ki jo uporablja večina spletnih strani HTTPS.
- GnuTLS (Free Software Foundation)
- LibreSSL (OpenBSD)
- NSS (omrežne varnostne storitve)
- BoringSSL (Google)
- Cryptlib (Peter Gutmann)
- Botan (licenca BSD, Jack Lloyd)
- JSSE (Java Secure Socket Extension, Oracle)
- S2n (Amazon)
Seznam ni popoln. Za več informacij o izvedbah TLS je Wikipedia odličen vir.
Znani napadi na TLS
TLS pa ni imun na napade in uhajanje podatkov. Nekaj dobro znanih točk napada in šibkih točk:
- Programske napake: Heartbleed Bug je zaslovel kot huda programska napaka nekaterih starejših različic OpenSSL. Odpravili so jo leta 2014.
- Šibko šifriranje: v ZDA so zaradi izvoznih omejitev za kriptografijo razvili izvozne različice. Te pa je bilo lažje razbiti kot prejšnje različice.
- Napadi s stiskanjem: če se namesto stiskanja TLS uporablja stiskanje HTTP, lahko hekerji s posebnimi tehnikami uganejo vsebino, šifrirano s TLS.
- Napad BEAST je zadeval različico TLS 1.0 in je bil razkrit leta 2014. Trenutne različice TLS so varne.
- Napad Padding Oracle so odkrili leta 2002 in je predstavljal grožnjo do različice SSL 3.0. Trenutne različice TLS 1.3 ne zadeva.
Obenem so bili poskusi, da bi se izognili popolnoma varnemu šifriranju TLS, da bi oblasti lahko dostopale do šifrirane komunikacije, na primer za sledenje goljufijam pri finančnih transakcijah. Evropski inštitut za telekomunikacijske standarde je bil ena od organizacij, ki so prednjačile pri oblikovanju določenih prelomnih točk protokola.