TLS (Transport Layer Security) on krüp­tee­ri­mis­pro­to­koll, mis tagab turvalise and­meedas­tuse in­ter­ne­tis. See on vananenud SSL-i jä­rel­tu­lija ja seda ka­su­ta­takse praegu peaaegu eran­di­tult ver­sioo­nis TLS 1.3.

Mis on TLS?

Interneti al­gus­ae­ga­del ei olnud andmete tur­va­li­sus nii oluline kui tä­na­päe­val. Kogu side toimus avalikult ja krüp­tee­ri­mata ühelt arvutilt teisele. Võite seda võrrelda post­kaar­diga: iga postiljon võis seda lugeda.

TLS-protokoll – tuntud ka kui SSL/TLS – võttis ka­su­tusele edas­ta­tava sisu krüp­tee­ri­mise. Selle analoogia jät­ka­miseks võib öelda, et see krüp­tee­ri­mine on nagu pit­see­ri­tud ümbrik, mille saab avada ainult õige adressaat.

Lühend TLS tähendab Transport Layer Security. See mõiste viitab TCP/IP-mudeli trans­por­di­ki­hile. TLS on meetod, mis krüp­tee­rib in­ter­ne­ti­and­me­vooge, või­mal­da­des neid lugeda ainult volitatud ad­res­saa­ti­del.

Note

Krüp­tee­ri­mis­pro­to­kolli endine nimetus oli SSL (Secure Socket Layer). Kuna see lühend on endiselt tuntum kui TLS, ni­me­ta­takse TLS-i sageli ka­he­osa­li­selt „SSL/TLS“.

Kuidas TLS toimib?

TLS krüp­tee­rib interneti kaudu saa­de­ta­vaid andmeid ja ra­ken­da­takse ta­va­li­selt TCP peal, kasutades süm­meet­ri­list krüp­tograa­fiat.

See, mis teo­ree­ti­li­selt lihtsana tundub, on te­ge­lik­ku­ses palju kee­ru­li­sem. Põ­hi­prob­leem seisneb selles, et server peab edastama võtme kliendileenne, kui side on TLS-iga turvatud. Igaüks, kes on saatnud krüp­tee­ri­tud e-kirja manuseid, teab seda probleemi: krüp­tee­rid faili ja pead jagama salajast parooli ad­res­saa­diga, näiteks telefoni teel.

TLS-protokoll, mille kehtiv standard on alates 2018. aastast versioon 1.3, kasutab selle probleemi la­hen­da­miseks järgmist menetlust:

  1. Client­Hello: Klient (nt vee­bib­rau­ser) saadab serverile esialgse sõnumi, mis sisaldab teavet toe­ta­ta­vate krüp­tee­ri­mis­vii­side kohta. See hõlmab krüp­tee­ri­mis­komp­lekte, pro­to­kol­li­ver­sioone, ju­hus­likku väärtust ja oma el­lip­ti­lise kõvera Diffie-Hellmani võt­me­va­he­tuse väärtust (ECDHE-väärtus). Va­li­ku­li­selt võib juba saata esimese krüp­tee­ri­tud and­me­ploki.
  2. Ser­ver­Hello: Server valib sobivad pa­ra­meet­rid ja saadab oma vastuse, seal­hul­gas oma ECDHE-väärtuse ja di­gi­taalse ser­ti­fi­kaadi. See SSL-ser­ti­fi­kaat tõendab, et server on autentne ega esine kellegi teise nime all. Samal ajal algab sean­si­võtme ar­vu­ta­mine.
  3. Võtme ar­vu­ta­mine: Mõlemad pooled arvutavad nüüd ise­seis­valt sama sean­si­võtme ühiselt kok­ku­le­pi­tud võtme alusel.
  4. Server lõpetab käe­pi­gis­tuse ja alustab krüp­tee­ri­tud suhtlust. Klient teeb sama; ühendus on nüüd täie­li­kult turvatud.
Note

Võrreldes vara­se­mate ver­sioo­ni­dega on TLS 1.3-s kasutatav TLS-käe­pi­gis­tus mär­ki­mis­väär­selt lihtsam ja tur­va­li­sem. Kogu siin kir­jel­da­tud protsess nõuab nüüd vaid ühte edasi-tagasi-ringi (1 RTT), mis kiirendab ühenduse loomist mär­ga­ta­valt.

Põhjus, miks Diffie-Hellmani algoritmi kasutavat asüm­meet­ri­list krüp­tee­ri­mist ra­ken­da­takse ainult sean­si­võtme edas­ta­miseks (aga mitte and­me­voo­gude endi krüp­tee­ri­miseks), on kiiruse eelis; asüm­meet­ri­line krüp­tee­ri­mine on suh­te­li­selt aeglane ja aeg­lus­taks and­me­si­det.

TLS-i plussid ja miinused

TLS on elegantne lahendus vee­bi­liik­luse tur­va­li­se­maks muut­miseks. See ei nõua, et osapooled krüp­tee­rik­sid sisu, näiteks vor­mi­and­med, ise. Piisab hoopis sellest, et liiklus suu­na­takse läbi TLS-pro­to­kolli, sõltumata osapoolte ope­rat­sioo­ni­süs­teemi­dest ja tark­va­ra­ra­ken­dus­test. Kõik andmevood krüp­tee­ri­takse seejärel edas­ta­mise ajal au­to­maat­selt.

Tur­va­li­suse hind on veidi aeglasem ühenduse loomine, kuna eespool mainitud prot­ses­sieta­pid – ser­ti­fi­kaat, juhuslik number, võt­me­va­he­tus – on ar­vu­tus­li­kult res­sur­si­ma­hu­kad.

TLS-i ka­su­tus­vald­kon­nad

Nagu mainitud, on TLS-i võimalik kasutada uni­ver­saal­selt, kuna see on sõltumatu ra­ken­dus­test ja ope­rat­sioo­ni­süs­teemi­dest. Seetõttu on mit­me­su­guste ra­ken­dus­pro­to­kol­lide jaoks olemas TLS-iga kaitstud versioon. Ni­me­ta­mis­skeem on enamasti üsna lihtne: kui protokoll suhtleb TLS-i kaudu, lisatakse pro­to­kolli nimele täht „S“.

TLS-i peamine ra­ken­dus­vald­kond on veeb, täpsemalt HTTP-protokoll. Selle krüp­tee­ri­tud versiooni ni­me­ta­takse HTTPS-iks.

Lisaks neile tuleks mainida järgmisi levinud ka­su­tus­juh­tu­meid:

  • POP3S: Lae e-kirjad serverist alla POP3-pro­to­kolli abil
  • IMAPS: sünk­ro­ni­see­rib postkasti serveriga IMAP-pro­to­kolli abil
  • SMTPS: Saada e-kirju
  • FTPS: failide edas­ta­mine FTP-pro­to­kolli abil
  • SIPS: IP-telefonia SIP-pro­to­kolli kaudu
  • IRCS: krüp­tee­ri­tud vestlused
  • QUIC: Google’i trans­por­di­pro­to­koll, mis in­teg­ree­rib otse TLS 1.3; al­ter­na­tiiv TCP-le kiiremate ja tur­va­li­se­mate vee­bi­ühen­duste jaoks (nt HTTP/3-ga)

OpenVPN, tasuta tarkvara vir­tuaalse eravõrgu (VPN) loomiseks, kasutab samuti TLS-pro­to­kolli.

Peamised TLS-ra­ken­dused

TLS-i kõige le­vi­nu­mate ra­ken­duste hulka kuuluvad:

  • OpenSSL – kaugelt kõige levinum rakendus, mida kasutavad enamik HTTPS-vee­bi­saite
  • GnuTLS (Vaba Tarkvara Sihtasu­tus)
  • LibreSSL (OpenBSD)
  • NSS (võr­gu­tur­va­tee­nu­sed)
  • BoringSSL (Google)
  • Rustls (Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas ja avatud läh­te­koo­diga kogukond)
  • Botan (BSD-litsents, Jack Lloyd)
  • JSSE (Java Secure Socket Extension, Oracle)
  • S2n (Amazon)

See loetelu ei ole ammendav. Täpsemat teavet TLS-i ra­ken­duste kohta leiate Vi­ki­pee­diast.

Tuntud TLS-rünnakud

Kuigi TLS on loodud turvalise suhtluse ta­ga­miseks, on sellel siiski tea­daole­vaid nõrkusi. Nende hulka kuuluvad:

  • Prog­ram­mee­ri­mis­vead: He­artbleed-viga sai tuntuks kui krii­ti­line prog­ram­mee­ri­mis­viga OpenSSL-i vara­se­ma­tes ver­sioo­ni­des. See parandati 2014. aastal.
  • Nõrgad krüp­tee­rin­gud: USA krüp­tograa­fia eks­por­di­piiran­gute tu­le­mu­sena arendati välja „eks­port­klassi” ver­sioo­nid, mida oli ori­gi­naa­li­dest lihtsam murda.
  • Komp­res­sioo­ni­rün­na­kud: Kui TLS-komp­res­siooni asemel ka­su­ta­takse HTTP-komp­res­siooni, on häk­ke­ri­tel võimalik teatud meetodite abil ära arvata TLS-krüp­tee­ri­tud sisu.
  • BEAST-rünnak mõjutas TLS-i versiooni 1.0 ja kir­jel­dati juba 2014. aastal. Praegused TLS-i ver­sioo­nid on selle vastu tur­va­li­sed.
  • Padding Oracle rünnak avastati 2002. aastal ja oli võimalik kuni SSL ver­sioo­nini 3.0. Praegune TLS versioon 1.3 ei ole sellest mõjutatud.
    1. aasta ALPACA-rünnak näitab, kuidas valesti kon­fi­gu­ree­ri­tud serverite TLS-ser­ti­fi­kaate saab ära kasutada, et suunata ka­su­ta­jaid teistesse tee­nus­tesse, püüdes kinni või ma­ni­pu­lee­ri­des andmeid.

Samuti on tehtud katseid takistada täie­li­kult turvalise TLS-krüp­tee­ringu ka­su­ta­mist, et või­mal­dada ame­ti­asu­tus­tel pääseda juurde krüp­tee­ri­tud si­deand­me­tele – näiteks seoses fi­nants­te­hin­gute ja ku­ri­te­ge­vu­sega. Üks or­ga­ni­sat­sioone, mis toetas sellist „tahtlikku haa­va­ta­vust” TLS-is, oli ETSI (Euroopa Te­le­kom­mu­ni­kat­sioo­n­i­stan­dar­dite Instituut).

Go to Main Menu