TLS (Transport Layer Security) on sa­lauspro­to­kol­la, joka varmistaa tietojen tur­val­li­sen siirron in­ter­ne­tis­sä. Se on van­hen­tu­neen SSL-pro­to­kol­lan seuraaja, ja nykyään sitä käytetään lähes yk­si­no­maan versiossa TLS 1.3.

Mikä on TLS?

In­ter­ne­tin al­kuai­koi­na tie­to­tur­va ei ollut yhtä tärkeää kuin nykyään. Kaikki viestit lä­he­tet­tiin avoimesti ja sa­laa­mat­to­mi­na tie­to­ko­neel­ta toiselle. Voidaan ajatella sitä kuin pos­ti­kort­tia: jokainen pos­tin­kan­ta­ja saattoi lukea sen.

TLS-pro­to­kol­la – joka tunnetaan myös nimellä SSL/TLS – toi mukanaan lä­he­tet­tä­vän sisällön salauksen. Ver­tauk­sen jat­kaak­se­ni tämä salaus on kuin sinetöity kir­je­kuo­ri, jonka vain oikea vas­taa­not­ta­ja voi avata.

Lyhenne TLS tar­koit­taa Transport Layer Security. Termi viittaa TCP/IP-mallin siir­to­ker­rok­seen. TLS on menetelmä, joka salaa in­ter­ne­tin da­ta­vir­rat, jolloin vain val­tuu­te­tut vas­taa­not­ta­jat voivat lukea niitä.

Huomio

Sa­lauspro­to­kol­lan aiempi nimi oli SSL (Secure Socket Layer). Koska tämä lyhenne on edelleen tun­ne­tum­pi kuin TLS, TLS:ää kutsutaan usein kak­sois­ni­me­nä ”SSL/TLS”.

Miten TLS toimii?

TLS salaa in­ter­ne­tin kautta lähetetyt tiedot, ja se to­teu­te­taan yleensä TCP-pro­to­kol­lan päälle sym­met­ri­sen salauksen avulla.

Se, mikä kuulostaa yk­sin­ker­tai­sel­ta teoriassa, on käy­tän­nös­sä mo­ni­mut­kai­sem­paa. Pe­rus­on­gel­ma­na on se, että pal­ve­li­men on vä­li­tet­tä­vä avain asiak­kaal­le –ennen kuin yhteys on suojattu TLS:llä. Jokainen, joka lähettää salattuja säh­kö­pos­ti­liit­tei­tä, tuntee tämän ongelman: salaat tiedoston ja joudut kertomaan salaisen salasanan vas­taa­not­ta­jal­le, esi­mer­kik­si pu­he­li­mit­se.

TLS-pro­to­kol­la, jonka nykyinen standardi on ollut versio 1.3 vuodesta 2018 lähtien, ratkaisee tämän ongelman seu­raa­val­la me­net­te­lyl­lä:

  1. Client­Hel­lo: Asiakas (esim. selain) lähettää pal­ve­li­mel­le aloi­tus­vies­tin, joka sisältää tietoja tuetuista sa­laus­me­ne­tel­mis­tä. Tähän si­säl­ty­vät sa­laus­me­ne­tel­mä­jou­kot, pro­to­kol­la­ver­siot, sa­tun­nais­lu­ku sekä asiakkaan oma el­lip­ti­sen käyrän Diffie-Hellman-avai­men­vaih­taar­vo (ECDHE-arvo). Va­lin­nai­ses­ti voidaan jo lähettää en­sim­mäi­nen salattu datalohko.
  2. Ser­ver­Hel­lo: Palvelin valitsee sopivat pa­ra­met­rit ja lähettää vas­tauk­sen­sa, joka sisältää sen ECDHE-arvon ja di­gi­taa­li­sen var­men­teen. Tämä SSL-varmenne todistaa, että palvelin on aito eikä esiinny jonkun muun nimissä. Samalla istunnon avaimen las­ke­mi­nen alkaa.
  3. Avaimen las­ke­mi­nen: Molemmat osapuolet laskevat nyt it­se­näi­ses­ti saman is­tun­toa­vai­men yh­tei­ses­ti sovitun avaimen pe­rus­teel­la.
  4. Palvelin vii­meis­te­lee kä­den­pu­ris­tuk­sen ja aloittaa salatun vies­tin­nän. Asiakas tekee samoin; yhteys on nyt täysin suojattu.
Huomio

Ai­kai­sem­piin ver­sioi­hin ver­rat­tu­na TLS 1.3:n TLS-kättely on huo­mat­ta­vas­ti kevyempi ja tur­val­li­sem­pi. Tässä kuvattu koko prosessi vaatii nyt vain yhden edes­ta­kai­sen vies­tin­vaih­don (1 RTT), mikä nopeuttaa yhteyden muo­dos­ta­mis­ta huo­mat­ta­vas­ti.

Syy siihen, miksi Diffie-Hellman-me­ne­tel­mään pe­rus­tu­vaa epä­sym­met­ris­tä salausta käytetään vain istunnon avaimen siir­tä­mi­seen (eikä itse da­ta­vir­to­jen sa­laa­mi­seen), on nopeusetu; epä­sym­met­ri­nen salaus on suh­teel­li­sen hidasta ja hi­das­tai­si tie­don­siir­toa.

TLS:n edut ja haitat

TLS on tyylikäs ratkaisu verk­ko­lii­ken­teen tur­val­li­suu­den pa­ran­ta­mi­seen. Sen avulla os­a­puol­ten ei tarvitse itse salata sisältöä, kuten lo­ma­ke­tie­to­ja. Sen sijaan riittää, että liikenne rei­ti­te­tään TLS-pro­to­kol­lan kautta, riip­pu­mat­ta os­a­puol­ten käyt­tö­jär­jes­tel­mis­tä ja oh­jel­mis­to­so­vel­luk­sis­ta. Tällöin kaikki da­ta­vir­rat salataan au­to­maat­ti­ses­ti siirron aikana.

Tur­val­li­suu­den hinta on hieman hitaampi yhteyden muodostus, koska edellä mainitut vaiheet – varmenne, sa­tun­nais­lu­ku ja avainten vaihto – vaativat paljon las­ken­ta­te­hoa.

TLS:n käyt­tö­tar­koi­tuk­set

Kuten mai­nit­tiin, TLS:ää voidaan käyttää yleisesti, koska se on so­vel­luk­sis­ta ja käyt­tö­jär­jes­tel­mis­tä riip­pu­ma­ton. Näin ollen useille so­vel­luspro­to­kol­lil­le on olemassa TLS-suojattu versio. Ni­meä­mis­käy­tän­tö on useim­mis­sa ta­pauk­sis­sa varsin yk­sin­ker­tai­nen: pro­to­kol­lan nimeen lisätään kirjain ”S”, kun pro­to­kol­la käyttää TLS:ää tie­don­siir­ros­sa.

TLS:n tärkein käyt­tö­alue on Internet, tarkemmin sanottuna HTTP-pro­to­kol­la. Sen salattu versio tunnetaan nimellä HTTPS.

Näiden lisäksi on syytä mainita seuraavat yleiset käyt­tö­ta­pauk­set:

  • POP3S: Hae säh­kö­pos­tit pal­ve­li­mel­ta POP3-pro­to­kol­lan avulla
  • IMAPS: Synkronoi pos­ti­laa­tik­ko pal­ve­li­men kanssa IMAP-pro­to­kol­lan avulla
  • SMTPS: Lähetä säh­kö­pos­ti­vies­te­jä
  • FTPS: Tie­dos­to­jen siirto FTP-pro­to­kol­lan kautta
  • SIPS: Voice-over-IP-pu­he­lin­lii­ken­ne SIP-pro­to­kol­lan kautta
  • IRCS: Salatut chat-kes­kus­te­lut
  • QUIC: Googlen siir­topro­to­kol­la, joka integroi suoraan TLS 1.3:n; vaih­toeh­to TCP:lle nopeampia ja tur­val­li­sem­pia verk­ko­yh­teyk­siä varten (esim. HTTP/3:n kanssa)

OpenVPN, ilmainen oh­jel­mis­to vir­tu­aa­li­sen yk­si­tyis­ver­kon (VPN) muo­dos­ta­mi­seen, käyttää myös TLS-pro­to­kol­laa.

Tär­keim­mät TLS-to­teu­tuk­set

TLS:n ylei­sim­piä to­teu­tuk­sia ovat muun muassa:

  • OpenSSL – yli­voi­mai­ses­ti yleisin toteutus, jota suurin osa HTTPS-verk­ko­si­vus­tois­ta käyttää
  • GnuTLS (Free Software Foun­da­tion)
  • LibreSSL (OpenBSD)
  • NSS (Network Security Services)
  • BoringSSL (Google)
  • Rustls (Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas ja avoimen läh­de­koo­din yhteisö)
  • Botan (BSD-lisenssi, Jack Lloyd)
  • JSSE (Java Secure Socket Extension, Oracle)
  • S2n (Amazon)

Tämä luettelo ei ole tyh­jen­tä­vä. Yk­si­tyis­koh­tais­ta tietoa TLS-to­teu­tuk­sis­ta löytyy Wi­ki­pe­dias­ta.

Tun­net­tu­ja TLS-hyök­käyk­siä

Vaikka TLS on suun­ni­tel­tu tur­val­lis­ta vies­tin­tää varten, siinä on silti tun­net­tu­ja heik­kouk­sia. Näitä ovat muun muassa:

  • Oh­jel­moin­ti­vir­heet: Heartbleed-bugista tuli tunnettu vakava oh­jel­moin­ti­vir­he OpenSSL:n ai­kai­sem­mis­sa ver­siois­sa. Se kor­jat­tiin vuonna 2014.
  • Heikot salaukset: Yh­dys­val­to­jen sa­laus­tek­nii­kan vien­ti­ra­joi­tus­ten seu­rauk­se­na ke­hi­tet­tiin ”vien­ti­luo­kan” versioita, jotka olivat helpompia murtaa kuin al­ku­pe­räi­set.
  • Pa­ke­toin­ti­hyök­käyk­set: Kun TLS-pa­ke­toin­tia käytetään HTTP-pa­ke­toin­tia sijaan, hakkerit voivat arvata TLS-salatun sisällön tietyillä me­ne­tel­mil­lä.
  • BEAST-hyökkäys koski TLS-versiota 1.0, ja siitä ker­rot­tiin jo vuonna 2014. Nykyiset TLS-versiot ovat suo­jat­tu­ja sitä vastaan.
  • Padding Oracle -hyökkäys löy­det­tiin vuonna 2002, ja se oli mah­dol­li­nen SSL-versioon 3.0 asti. Nykyinen TLS-versio 1.3 ei ole alttiina sille.
  • Vuoden 2021 ALPACA-hyökkäys osoittaa, kuinka väärin kon­fi­gu­roi­tu­jen pal­ve­li­mien TLS-var­men­tei­ta voidaan hyödyntää käyt­tä­jien oh­jaa­mi­sek­si muihin pal­ve­lui­hin sekä tietojen siep­paa­mi­sek­si tai ma­ni­pu­loi­mi­sek­si.

On myös pyritty estämään täysin tur­val­li­nen TLS-salaus, jotta vi­ran­omai­set voisivat päästä käsiksi salattuun vies­tin­tään – esi­mer­kik­si ra­hoi­tus­ta­pah­tu­mien ja ri­kol­li­sen toiminnan yh­tey­des­sä. Yksi or­ga­ni­saa­tiois­ta, joka kannatti tällaista TLS:n ”tar­koi­tuk­sel­lis­ta haa­voit­tu­vuut­ta”, oli ETSI (Euroopan te­le­vies­tin­täs­tan­dar­doin­ti­lai­tos).

Siirry pää­va­lik­koon