Kas yra TLS (Transport Layer Security)? Protokolo aprašymas
TLS (Transport Layer Security) – tai šifravimo protokolas, užtikrinantis saugų duomenų perdavimą internete. Jis pakeitė pasenusį SSL protokolą ir šiuo metu beveik visur naudojamas TLS 1.3 versijos pavidalu.
Kas yra TLS?
Interneto pradžioje duomenų saugumas nebuvo toks svarbus, kaip šiandien. Visi duomenys buvo siunčiami atvirai ir nesuskaitmeninti iš vieno kompiuterio į kitą. Tai galima palyginti su atviruku: jį galėjo perskaityti bet kuris paštininkas.
TLS protokolas, dar žinomas kaip SSL/TLS, įvedė perduodamo turinio šifravimą. Tęsiant šią analogiją, šis šifravimas yra tarsi užantspauduotas vokas, kurį atidaryti gali tik teisėtas gavėjas.
Santrumpa TLS reiškia „Transport Layer Security“ (transporto sluoksnio saugumas). Šis terminas susijęs su TCP/IP modelio transporto sluoksniu. TLS – tai metodas, kuriuo šifruojami interneto duomenų srautai, leidžiantis juos skaityti tik įgaliotiems gavėjams.
Anksčiau šis šifravimo protokolas buvo vadinamas SSL (Secure Socket Layer). Kadangi ši santrumpa vis dar yra geriau žinoma nei TLS, TLS dažnai vadinamas dvigubu pavadinimu „SSL/TLS“.
Kaip veikia TLS?
TLS šifruoja internetu siunčiamus duomenis ir paprastai įgyvendinamas TCP protokolu, naudojant simetrinę kriptografiją.
Tai, kas atrodo paprasta teoriškai, praktikoje yra sudėtingiau. Pagrindinė problema yra ta, kad serveris turi perduoti raktą klientui darprieš užtikrinant ryšio saugumą naudojant TLS. Kiekvienas, kas siunčia šifruotus elektroninio pašto priedus, žino šią problemą: užšifravus failą tenka pasidalinti slaptu slaptažodžiu su gavėju, pvz., telefonu.
TLS protokolas, kurio dabartinis standartas nuo 2018 m. yra 1.3 versija, šią problemą sprendžia taip:
- ClientHello: Klientas (pvz., naršyklė) siunčia serveriui pradinį pranešimą su informacija apie palaikomus šifravimo metodus. Tai apima šifravimo rinkinius, protokolo versijas, atsitiktinę reikšmę ir savo elipsinės kreivės Diffie-Hellman raktų mainų reikšmę (ECDHE reikšmę). Pasirinkus, jau gali būti išsiųstas pirmasis užšifruotas duomenų blokas.
- ServerHello: serveris pasirenka tinkamus parametrus ir siunčia savo atsakymą, įskaitant savo ECDHE vertę ir savo skaitmeninį sertifikatą. Šis SSL sertifikatas įrodo, kad serveris yra autentiškas ir neapsimeta kitu. Tuo pačiu metu prasideda sesijos rakto skaičiavimas.
- Raktų skaičiavimas: Abi pusės dabar nepriklausomai viena nuo kitos apskaičiuoja tą patį sesijos raktą, remdamosi bendrai sutartu raktu.
- Serveris užbaigia rankos paspaudimą ir pradeda šifruotą ryšį. Klientas daro tą patį; dabar ryšys yra visiškai apsaugotas.
Palyginti su ankstesnėmis versijomis, TLS 1.3 protokolo ryšio užmezgimas yra žymiai paprastesnis ir saugesnis. Čia aprašytas visas procesas dabar trunka tik vieną duomenų perdavimo ciklą (1 RTT), todėl ryšys pastebimai pagreitėja.
Priežastis, kodėl asimetrinis šifravimas naudojant Diffie-Hellman algoritmą taikomas tik sesijos raktui perduoti (o ne pačių duomenų srautų šifravimui), yra greičio pranašumas; asimetrinis šifravimas yra palyginti lėtas ir sulėtintų duomenų perdavimą.
TLS privalumai ir trūkumai
TLS – tai elegantiškas sprendimas, padedantis užtikrinti saugesnį interneto duomenų srautą. Jis nereikalauja, kad abi šalys pačios šifruotų turinį, pavyzdžiui, formų duomenis. Pakanka, kad duomenų srautas būtų nukreiptas per TLS protokolą, nepriklausomai nuo dalyvių naudojamų operacinių sistemų ir programinės įrangos. Tuomet visi duomenų srautai perdavimo metu yra automatiškai šifruojami.
Saugumo užtikrinimo kaina – šiek tiek lėtesnis ryšio užmezgimas, nes minėti proceso etapai – sertifikatas, atsitiktinis skaičius, raktų mainai – reikalauja didelių skaičiavimo išteklių.
TLS naudojimo sritys
Kaip jau minėta, TLS gali būti naudojamas visuotinai, nes jis nepriklauso nuo programų ir operacinių sistemų. Todėl įvairiems programų protokolams yra sukurta TLS apsaugota versija. Daugeliu atvejų pavadinimų sudarymo schema yra gana paprasta: jei protokolas naudoja TLS ryšį, prie jo pavadinimo pridedama raidė „S“.
Svarbiausia TLS taikymo sritis yra pasaulinis tinklas (World Wide Web), o konkrečiai – HTTP protokolas. Jo šifruota versija vadinama HTTPS.
Be to, reikėtų paminėti šiuos dažniausius naudojimo atvejus:
- POP3S: Atsisiųsti laiškus iš serverio naudojant POP3 protokolą
- IMAPS: Sinchronizuoti pašto dėžutę su serveriu naudojant IMAP protokolą
- SMTPS: siųsti el. laiškus
- FTPS: Failų perdavimas naudojant FTP protokolą
- SIPS: IP telefonija naudojant SIP protokolą
- IRCS: Šifruoti pokalbiai
- QUIC: „Google“ perdavimo protokolas, tiesiogiai integruojantis TLS 1.3; alternatyva TCP, skirta greitesniems ir saugesniems interneto ryšiams (pvz., su HTTP/3)
„OpenVPN“ – nemokama programinė įranga, skirta virtualaus privačiojo tinklo (VPN) sukūrimui, taip pat naudoja TLS protokolą.
Pagrindiniai TLS įgyvendinimai
Tarp dažniausiai naudojamų TLS įgyvendinimų yra:
- OpenSSL – neabejotinai populiariausias sprendimas, kurį naudoja dauguma HTTPS svetainių
- GnuTLS (Laisvos programinės įrangos fondas)
- LibreSSL (OpenBSD)
- NSS (Tinklo saugumo paslaugos)
- BoringSSL (Google)
- Rustls (Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas ir atvirojo kodo bendruomenė)
- Botan (BSD licencija, Jack Lloyd)
- JSSE (Java Secure Socket Extension, Oracle)
- S2n (Amazon)
Šis sąrašas nėra išsamus. Išsamią informaciją apie TLS įgyvendinimus galima rasti Vikipedijoje.
Žinomos TLS atakos
Nors TLS yra sukurta saugiam ryšiui užtikrinti, ji vis dėlto turi žinomų trūkumų. Tarp jų yra:
- Programavimo klaidos: „Heartbleed“ klaida tapo žinoma kaip kritinė programavimo klaida ankstesnėse „OpenSSL“ versijose. Ji buvo ištaisyta 2014 m.
- Silpnas šifravimas: Dėl JAV kriptografijos eksporto apribojimų buvo sukurtos „eksportui skirtos“ versijos, kurias buvo lengviau įsilaužti nei originalias.
- Suspaudimo atakos: kai vietoj TLS suspaudimo naudojamas HTTP suspaudimas, hakeriai tam tikrais būdais gali atspėti TLS šifruotą turinį.
- „BEAST“ ataka paveikė TLS 1.0 versiją ir buvo aprašyta dar 2014 m. Dabartinės TLS versijos yra apsaugotos nuo jos.
- „Padding Oracle“ ataka buvo atrasta 2002 m. ir buvo įmanoma iki SSL 3.0 versijos. Dabartinė TLS 1.3 versija nėra pažeidžiama.
- 2021 m. „ALPACA“ ataka parodo, kaip netinkamai sukonfigūruotuose serveriuose esančius TLS sertifikatus galima išnaudoti, kad nukreiptų vartotojus į kitas paslaugas, perimant ar manipuliuojant duomenimis.
Taip pat buvo imtasi priemonių, siekiant užkirsti kelią visiškai saugiam TLS šifravimui, kad valdžios institucijos galėtų susipažinti su šifruotais pranešimais – pavyzdžiui, finansinių operacijų ar nusikalstamos veiklos atvejais. Viena iš organizacijų, pasisakiusių už tokį „tyčinį TLS pažeidžiamumą“, buvo ETSI (Europos telekomunikacijų standartų institutas).