TLS-protokolla (Transport Layer Security) ja sen edeltäjä SSL (Secure Sockets Layer) ovat salausprotokollia, jotka tarjoavat tietoturvaa ja tietojen eheyttä TCP/IP-verkoissa, kuten Internetissä, tapahtuvassa viestinnässä. Protokollien eri versiot ovat yleisiä sovelluksissa, kuten web-selailussa, sähköpostissa, Internet-faksissa, pikaviestinnässä ja Voice-over-IP:ssä (VoIP).

 

Mitä TLS/SSL tekee ja miten se toimii

TLS/SSL tarjoaa kolme keskeistä suojausominaisuutta: salauksen (confidentiality), todennuksen (authentication) ja eheyden (integrity). Protokolla yhdistää epäsymmetristä kryptografiaa (sertifikaatit ja avaintenvaihto), symmetristä salausta (datayhteyden nopea salaus) sekä MAC-/tag-pohjaista eheystarkistusta. Yleinen toimintamalli (handshake) sisältää ainakin seuraavat vaiheet:

  • ClientHello: asiakas ehdottaa protokollaversiota ja salausalgoritmeja.
  • ServerHello: palvelin valitsee yhteensopivan version ja algoritmit.
  • Palvelimen sertifikaatti lähetetään (todentaa palvelimen identiteetin), ja tapahtuu avaintenvaihto (esim. ECDHE), jonka perusteella luodaan symmetrinen istunta-avain.
  • Session-lukitus eli "Finished"-viestit vahvistavat, että kädenpuristus onnistui.
  • Sen jälkeen liikenne salataan symmetrisellä avaimella.

Erot TLS:n ja SSL:n välillä

SSL (erityisesti versiot SSLv2 ja SSLv3) on vanha ja tunnetusti haavoittuva; ne on käytännössä poistettu käytöstä moderneissa järjestelmissä. TLS on SSL:n jälkeläinen, ja sen versiot (TLS 1.0, 1.1, 1.2, 1.3) ovat parantaneet turvallisuutta ja suorituskykyä. Nykyinen suositus on käyttää vähintään TLS 1.2-versiota, ja mahdollisuuksien mukaan TLS 1.3:aa, joka lyhentää kädenpuristusta, poistaa vanhoja heikkoja algoritmeja ja parantaa yksityisyyttä.

Sertifikaatit ja julkisen avaimen infrastruktuuri (PKI)

TLS perustuu yleisesti x.509-sertifikaatteihin, jotka kertovat palvelimen (tai asiakkaan) identiteetin ja sisältävät julkisen avaimen. Sertifikaatit myöntävät luotetut varmenneviranomaiset (CA). Sertifikaatteja on eri tyyppisiä: itse allekirjoitetut (self-signed), CA-allekirjoitetut ja välitodentavat.

  • Huomioi sertifikaatin voimassaoloaika ja ympäristökohtaiset tiedot (Common Name, SAN-kentät).
  • Automaattiset järjestelmät kuten Let's Encrypt helpottavat ilmaisia ja automaattisia uusintaprosesseja.
  • Sertifikaattien peruutus hoidetaan CRL:llä tai OCSP:llä; OCSP-stapling parantaa suorituskykyä ja yksityisyyttä.

Salausalgoritmit ja avaintenvaihto

Tärkeimpiä valintoja ovat avaintenvaihdon menetelmä (RSA, DHE, ECDHE), symmetrinen algoritmi (AES-GCM, ChaCha20-Poly1305) ja hajautusalgo (SHA-1, SHA-256). Nykykäytännössä suositellaan:

  • ECDHE (ephemeral elliptic-curve Diffie–Hellman) avaintenvaihtoon, koska se tarjoaa perfect forward secrecy (PFS).
  • AES-GCM tai ChaCha20-Poly1305 AEAD-algoritmeiksi tiedon salaamiseen ja eheyden varmistamiseen.
  • Vältä vanhoja ja haavoittuvia algoritmeja kuten RC4, DES, 3DES ja SHA-1 sekä "export"-luokan ciphertut.

Tunnettuja haavoittuvuuksia ja historian ongelmia

  • POODLE: hyökkäys SSLv3:een — johtanut SSLv3:n käytöstä poistamiseen.
  • BEAST, CRIME ja BREACH: eri hyödyntöjä protokollan tai HTTP-kompression vuodoille.
  • Heartbleed: OpenSSL:n muistivuoto joka paljasti palvelimien muistin sisältöä.
  • DROWN, Logjam, FREAK ja muut heikotnes hyökkäykset, jotka hyödyntävät vanhoja protokollaversioita tai heikkoja ciphertut.

Parhaat käytännöt palvelimelle ja sovelluskehittäjälle

  • Ota käyttöön ja pakota TLS 1.2 tai mieluummin TLS 1.3; poista käytöstä SSLv2, SSLv3 ja vanhat TLS 1.0/1.1-versiot.
  • Priorisoi ECDHE-avaintenvaihto ja AEAD-cipherit (AES-GCM, ChaCha20-Poly1305).
  • Käytä riittävän pitkiä avaimia: esimerkiksi vähintään 2048-bittinen RSA tai ECDSA:n tapauksessa sopiva käyrä (P-256/ P-384).
  • Ota käyttöön HSTS (HTTP Strict Transport Security) suojaamaan aloituspysäyksiä HTTP→HTTPS siirtymissä.
  • Ota käyttöön OCSP stapling, sertifikaattien automaattinen uusinta ja valvo uusimpia OpenSSL/LibreSSL/BoringSSL -päivityksiä.
  • Vältä sertifikaattien kovakoodattua "pinnausta" ilman huolellista hallintaa; se voi aiheuttaa pysyviä palvelukatkoja virheellisten uusintojen yhteydessä.

Tarkistus- ja testityökalut

Palvelimen TLS-kokoonpanon testaamiseen ja luokitteluun käytetään mm.:

  • Qualys SSL Labs — tarjoaa yksityiskohtaisen raportin ja arvosanan.
  • openssl s_client — komentorivityökalu yhteyden muodostamiseen ja sertifikaattitietojen tarkasteluun.
  • sslyze, testssl.sh ja Nmapin ssl-skriptit — automaattiseen skannaukseen ja haavoittuvuuksien etsintään.

TLS:n käyttökohteet ja rajoitukset

TLS suojaa tiedonsiirron sisällön, mutta ei välttämättä piilota kaikkea metatietoa. Esimerkiksi TCP-osoitteet sekä aiemmat TLS-versiot (ja SNI–Server Name Indication) voivat altistaa tiedon siitä, mihin palvelimeen yhteys muodostetaan. TLS 1.3 ja kehittyvät laajennukset pyrkivät parantamaan yksityisyyttä (esim. ECH - Encrypted Client Hello).

Yhteenveto käytännön neuvoina

  • Hyväksy vain TLS 1.2/1.3, poista legacy-protokollat.
  • Käytä ECDHE-pohjaista avaintenvaihtoa ja AEAD-salausta (AES-GCM tai ChaCha20-Poly1305).
  • Huolehdi sertifikaattien hallinnasta, OCSP-staplingista ja automaattisesta uusinnasta.
  • Seuraa ohjelmistopäivityksiä ja testaa kokoonpano säännöllisesti (esim. SSL Labs).

TLS/SSL on keskeinen osa turvallista verkkoviestintää. Oikein konfiguroituna se estää tiedon sieppauksen, manipuloinnin ja auttaa varmentamaan palvelinten identiteettiä — mutta sen turvallisuus riippuu sekä protokollaversion että valittujen algoritmien ja järjestelmäkäytäntöjen ajantasaisuudesta.