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.